Chp1. Introduction SE
Chp1. Introduction SE
Chp1. Introduction SE
Software engineering
Hamid Raza Malik
hmalik786@hotmail.com
03228463026
Software Engineering
4
What is Software Engineering? Definitions
5
What is Software Engineering?
u Manage:
• People
• Processes
• Products
u and use scientific knowledge to
• Design
• Construct
• Validate
• Maintain software products
u that are:
• Reliable
• Economical, and Useful
Problem Solving
COMPUTER
CUSTOMER
SCIENCE
Computer
Theories Functions Problem
SOFTWARE
ENGINEERING
Tools and
Techniques to
Solve Problem
Difference between software engineering and
computer science?
software.
▪ Computer science theories are currently insufficient to
act as a complete underpinning for software engineering
What is Software?
Software is a set of items or objects
that form a “configuration” that
includes
• programs
• documents
• data ...
What is Software?
• software is engineered
• software doesn’t wear out
• software is complex
• software is a ‘differentiator’
• software is like an ‘aging factory’
Software products
Generic products
▪ The specification of what the software should do is owned by the
software developer and decisions on software change are made
by the developer.
11
Product specification
Customized products
▪ The specification of what the software should do is owned by the
customer for the software and they make decisions on software
changes that are required.
12
kinds of software
specialization interaction
• generic • stand-alone
– word-processor – word-processor
– database – payroll
• customized • embedded
– control system
– washing machine
– business process
– guided missile
+ domain specific
• networked
– SAP (customizable)
– ATM, web browser
Software product
▪ Malleable
easily influenced, trained, or controlled
▪ human intensive
• involves only trivial “manufacturing” process
Classification
Attributes of Good Software
Efficiency Software should not make wasteful use of system resources such
as memory and processor cycles. Efficiency therefore includes
responsiveness, processing time, memory utilisation, etc.
16
Correctness
Reliability
Correctness
Robustness
24
Maintainability
• "The ease with which a software system or component
can be modified to correct faults, improve performance
or other attributes, or adapt to a changed environment."
▪ Reparability
• Reparability involves corrective maintenance.
▪ Evaluability
• ability to adapt sw to environment changes and to improve it
in reasonable time
Reusability
• Reusability is the use of existing assets in some form within the
software product development process; these assets are products
and by-products of the software development life cycle and include
code, software components, test suites, designs and documentation.
28
Interoperability
• Programmers:
• Write code
• Does not require much training
• Work in isolation
• Process not reproducible
• Software Engineers:
▪ Design systems
▪ Have sophisticated training
▪ Use formal methods and techniques
▪ Work in teams
▪ Reproducible process
Software Engineering Paradigms
• Software Skills:
• This is nut and bolts of actually writing the software.
Software
Engineering
• Construction of solutions
• Formation of solution to sub-problems
• Synthesis of the complete solution from sub-solutions
Methods / Tools,
Techniques,
e.g. typewriter
e.g. prepare cake
Solution
Paradigm, e.g. a
Procedures e.g. cooking style
recipe
Problem Solving
Procedures:
This is glue that holds the methods and tools together
Paradigm:
A particular approach or philosophy for building software
Software Process Activities
• Requirements Phase
• Specification (Analysis) Phase
• Planning Phase
• Design Phase
• Implementation Phase
• Integration Phase
• Maintenance Phase
• (highest cost among all these phases) Corrective, Perfective, and
Adaptive Maintenance
• Retirement
37
Software costs
Requirement 2%
Specification 4%
Planning 1%
Design 6%
Module Coding 5%
Maintenance Module Testing 7%
67% Integration 8%
Maintenance 76%
Approximate relative costs of
the phases of the software life cycle.
Scope of Software Engineering
Upper-Case
Lower-Case
Complexity:
• Software systems can include a huge number of functions and
components.
Change:
• Requirements are updated when errors are discovered and when
developers get a better understanding of the application.
Heterogeneity
▪ Increasingly, systems are required to operate as distributed
systems across networks that include different types of computer
and mobile devices. (IOS, Android, Symbian).
Business and social change
▪ Business and society are changing incredibly quickly as
emerging economies develop and new technologies become
available. They need to be able to change their existing software
and to rapidly develop new software. (From symbian to Android
and IOS)!.
Security and trust
▪ As software is available in all aspects of our lives, it is essential
that we can trust that software. (remote software systems).
47
Application types
Stand-alone applications
▪ These are application systems that run on a local computer,
such as a PC. They include all necessary functionality and do
not need to be connected to a network.
Interactive transaction-based applications
▪ Applications that execute on a remote computer and are
accessed by users from their own PCs or terminals. These
include web applications. (Online Banking systems, Hotel
reservations).
Embedded control systems
▪ These are software control systems that control and manage
hardware devices. Examples??
48
Application types
▪ When building these systems, you think about how you can assemble them
from pre-existing software components and systems.
51
Web-based software engineering
52
Frequently asked questions (FAQ) about software
engineering
Question Answer
53
Frequently asked questions (FAQ) about software
engineering
Question Answer
What are the key challenges facing Dealing with increasing diversity, demands for reduced
software engineering? delivery times and developing trustworthy software.
54
Key points
55
Key points
56
Thank You