Professional Documents
Culture Documents
Ch1. - Introduction To Software Engineering
Ch1. - Introduction To Software Engineering
Software engineering
Hamid Raza Malik
hmalik786@hotmail.com
03228463026
Software engineering
3
What is Software Engineering? Definitions
4
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.
10
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.
11
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
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.
15
Correctness
Reliability
Correctness
Robustness
23
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
27
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 cooking style
e.g. recipe
Problem Solving
Paradigm:
A particular approach or philosophy for building software
Software Process Activities
• Software specification, where customers and engineers define the
software that is to be produced and the constraints on its operation.
• Requirements Phase
• Specification (Analysis) Phase
• Planning Phase
• Design Phase
• Implementation Phase
• Integration Phase
• Maintenance Phase (highest cost among all these phases)
• Retirement
36
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).
46
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??
47
Application types
When building these systems, you think about how you can assemble them
from pre-existing software components and systems.
50
Web-based software engineering
51
Frequently asked questions (FAQ) about software
engineering
Question Answer
52
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.
53
Key points
54
Key points
55
Thank You