Software Engineering
For non-profit educational use only
May be reproduced ONLY for student use at the university level when used in
conjunction
with Software Engineering: A Practitioner's Approach, 7/e. Any other
reproduction or use is
prohibited without the express written permission of the author.
These slides are designed to accompany Software Engineering: A
Practitioners Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman.
Some of the slides are taken from Sommerville, I., Software Engineering,
Pearson Education, 7th Ed., 2005. Those are explicitly indicated
What is
Software?
1) instructions (programs) that when
executed provide desired function and
performance
2) data structures that enable the programs
to adequately manipulate information
3) documents that describe the operation
and use of the programs
A logical rather than physical system
element
December 13, 2016
Dual Role of Software
Both a product and a vehicle for
delivering a product
Product
Delivers computing potential
Produces, manages, acquires, modifies, display,
or transmits information
Vehicle
Supports or directly provides system functionality
Controls other programs (e.g., operating systems)
Effects communications (e.g., networking
software)
Helps build other software (e.g., software tools)
December 13, 2016
Software Products
Generic products
Stand-alone systems which are produced by a
development organization and sold on the open
market to any customer
Bespoke (customized) products
Systems which are commissioned by a specific
customer and developed specially by some
Contractor
Most software expenditure is on generic
products but most development effort is on
bespoke systems
December 13, 2016
Software Applications
System software
Compiler, Operating System
Application software
Railway reservation
Engineering/scientific Software
Astronomy, automated manufacturing
Embedded software
Braking system, Mobile phone
December 13, 2016
Software Applications
(contd
Product-line software
Word processor, personal finance application
WebApps (Web applications)
Social networks
AI software
Pattern recognition, neural networks
December 13, 2016
SoftwareNew Categorie
Open world computing - pervasive, distributed Computing
Ubiquitous computing - wireless networks
Netsourcing - the Web as a computing engine
Open source - free source code open to the computing
community (a blessing, but also a potential curse!)
Also
oData mining
oGrid computing
oCognitive machines
oSoftware for nanotechnologies
December 13, 2016
Software Characteristics
Software is developed or engineered....Not
manufactured in the classical sense
Software does NOT wear out
Aging of software is very unlike material objects (hardware)
Industry is moving towards component-based
construction, but most of the software effort is for
the custom-building
December 13, 2016
Failure (Bathtub) Curve for
Hardware
FailureRate
Infant
mortality
Wear
out
Time
December 13, 2016
Software Deterioration
December 13, 2016
10
Evolving the Legacy
Software
(Adaptive) Must be adapted to meet the needs
of new computing environments or more
modern systems, databases, or networks
(Perfective) Must be enhanced to implement
new business requirements , improve
performance etc.
(Corrective) Must be changed because of
errors found in the specification, design, or
implementation
(Note: These are three major reasons for software maintenance, along with
Preventive maintenence)
December 13, 2016
11
Characteristics of WebApps
(1/2
Network intensiveness. A WebApp resides on a network and must serve the
needs of a diverse community of clients.
Concurrency. A large number of users may access the WebApp at one time.
Unpredictable load. The number of users of the WebApp may vary by orders of
magnitude from day to day.
Performance. If a WebApp user must wait too long (for access, for server-side
processing, for client-side formatting and display), he or she may decide to go
elsewhere.
Availability. Although expectation of 100 percent availability is unreasonable,
users of popular WebApps often demand access on a 24/7/365 basis.
Data driven. The primary function of many WebApps is to use hypermedia to
present text, graphics, audio, and video content to the end-user.
December 13, 2016
12
Characteristics of WebApps
(2/2)
Content sensitive. The quality and aesthetic nature of content remains an
important determinant of the quality of a WebApp
Continuous evolution. Unlike conventional application software that evolves
over a series of planned, chronologically-spaced releases, Web applications
evolve continuously
Immediacy. Although immediacythe compelling need to get software to
market quicklyis a characteristic of many application domains, WebApps
often exhibit a time to market that can be a matter of a few days or weeks
Security. Because WebApps are available via network access, it is difficult, if
not impossible, to limit the population of end-users who may access the
application
Aesthetics. An undeniable part of the appeal of a WebApp is its look and feel
December 13, 2016
13
Questions About Software
Haven't Changed Over the
Decades
Why does it take so long to get software
finished?
Why are development costs so high?
Why can't we find all errors before we give the
software to our customers?
Why do we spend so much time and effort
maintaining existing programs?
Why do we continue to have difficulty in
measuring progress as software is being
developed and maintained?
December 13, 2016
14
Extreme Views on Software
Engineers
(No shortage of jokes on software engineers)
December 13, 2016
15
Software Myths Management
"We already have a book that is full of standards and
procedures for building software. Won't that provide
my people with everything they need to know?"
Not used, not up to date, not complete, not focused on
quality, time, and money
"If we get behind, we can add more programmers
and catch up"
Adding people to a late software project makes it later
Training time, increased communication lines
"If I decide to outsource the software project to a
third party, I can just relax and let that firm build it"
Software projects need to be controlled and managed
December 13, 2016
16
Software Myths - Customer
"A general statement of objectives is sufficient
to begin writing programs we can fill in the
details later"
Ambiguous statement of objectives spells disaster
"Project requirements continually change, but
change can be easily accommodated because
software is flexible"
Impact of change depends on where and when it
occurs in the software life cycle (requirements analysis,
design, code, test)
December 13, 2016
17
The Cost of
Change
60-100x
1.5-6x
1x
Definition
December 13, 2016
Development
After release
18
Software Myths Practitioner
"Once we write the program and get it to work, our job is
done"
60% to 80% of all effort expended on software occurs after it is
delivered
"Until I get the program running, I have no way of
assessing its quality
Formal technical reviews of requirements analysis documents,
design documents, and source code (more effective than actual
testing)
"The only deliverable work product for a successful
project is the working program"
Software, documentation, test drivers, test results
"Software engineering will make us create voluminous
and unnecessary documentation and will invariably slow
us down"
Creates quality, not documents; quality reduces rework and
provides software on time and within the budget
December 13, 2016
19
Software Engineering - Definitions
Software engineering is the
establishment and use of sound engineering
principles in order to obtain economically
software that is reliable and works efficiently on
real machines
(1969 Fritz Bauer)
o Some may want to have technical aspects, customer
satisfaction, timeliness, measurements, process
included in the definition
(IEEE)
The application of a systematic, disciplined,
quantifiable approach to the development,
operation, and maintenance of software; that is,
the application of engineering to software
o Some may consider adaptability and agility more
December 13, 2016
important than systematic, disciplined, quantifiable
20
A Layered
Technology
Software Engineering
tools
methods
process model
a quality focus
December 13, 2016
21
Process, Methods, and Tools
Process
Provides the glue that holds the layers together;
enables rational and timely development; provides a
framework for effective delivery of technology; forms
the basis for management; provides the context for
technical methods, work products, milestones, quality
measures, and change management
Methods
Provide the technical "how to" for building software;
rely on a set of basic principles; encompass a broad
array of tasks; include modeling activities
Tools
Provide automated or semi-automated support for the
process and methods (i.e., CASE tools)
December 13, 2016
22
Software Process
A Process
Framework
Process framework
Framework activity 1
Framework activity n
Umbrella Activities
December 13, 2016
Process framework
Framework activities
work tasks
work products
milestones & deliverables
QA checkpoints
Umbrella Activities
23
23
A Process Framework
Process framework
Modeling activity
Software Engineering action: Analysis
Process framework
work tasks: requirements gathering,
Framework activities
work tasks
work products
milestones & deliverables
QA checkpoints
elaboration, negotiation,
specification, validation
work products: analysis model and/or
requirements specification
milestones & deliverables
QA checkpoints
Umbrella Activities
Software Engineering action: Design
work tasks: data design, architectural,
interface design,
component design
work products: design model
and/or design specification
Umbrella Activities
December 13, 2016
24
24
Framework Activities
Communication
Involves communication among the customer and other
stake holders; encompasses requirements gathering
Planning
Establishes a plan for software engineering work; addresses
technical tasks, resources, work products, and work
schedule
Modeling (Analyze, Design)
Encompasses the creation of models to better understand
the requirements and the design
Construction (Code, Test)
Combines code generation and testing to uncover errors
Deployment
Involves delivery of software to the customer for evaluation
and feedback
December 13, 2016
25
Umbrella Activities
Software project tracking and control
Assess progress against the plan
Software quality assurance
Activities required to ensure quality
Software configuration management
Manage effects of change
Technical Reviews
Uncover errors before going to next activity
Formal technical reviews
Assess work products to uncover errors
December 13, 2016
26
Umbrella Activities
(contd)
Risk management
Assess risks that may affect quality
Measurement process, project, product
Reusability management (component reuse)
Work product preparation and production
Models, documents, logs,forms, lists
etc.
December 13, 2016
27
How Process Models Differ?
While all Process Models take same framework and umbrella activities,
they differ with regard to
Overall flow of activities, actions, and tasks and the interdependencies
among them
Degree to which actions and tasks are defined within each framework
activity
Degree to which work products are identified and required
Manner in which quality assurance activities are applied
Manner in which project tracking and control activities are applied
Overall degree of detail and rigor with which the process is described
Degree to which customer and other stakeholders are involved in the
projecct
Level of autonomy given to the software team
Degree to which team organization and roles are prescribed
December 13, 2016
28
Process Patterns
A proven solution to a problem
Describes process-related problem
Environment in which it was encountered
A template to describe solution
Ambler proposed a template for describing a process
pattern
Can be defined at any level of abstraction
Complete process model (e.g. Prototyping)
Frame work activity (e.g. Planning)
An action within framework activity (e.g. Estimation)
December 13, 2016
29
Process Patterns Amblers
Template
Pattern Name
Forces
Describes environment of the problem
Type
Phase (e.g. Prototyping), Stage (e.g. Planning), or Task (e.g.
Estimation)
Initial Context
Problem
Solution
Resulting Context
Related Patterns
Known uses & examples
December 13, 2016
30
Software engineering
(as per author Sommerville)
Software engineering is an engineering discipline
that is concerned with all aspects of software
production from the early stages of system
specification through to maintaining the system
after it has gone into use.
Engineering discipline
Using appropriate theories and methods to solve problems
bearing in mind organizational and financial constraints.
All aspects of software production
Not just technical process of development. Also project
management and the development of tools, methods etc. to
support software production.
December 13, 2016
31
FAQs Answered
by author Sommerville
Question
Answer
What is software?
Computer programs and associated documentation.
Software products may be developed for a particular
customer or may be developed for a general market.
What are the attributes of good software?
Good software should deliver the required functionality
and performance to the user and should be
maintainable, dependable and usable.
What is software engineering?
Software engineering is an engineering discipline that is
concerned with all aspects of software production.
What are the fundamental
engineering activities?
software Software specification, software development, software
validation and software evolution.
What is the difference between software Computer science focuses on theory and fundamentals;
engineering and computer science?
software engineering is concerned with the practicalities
of developing and delivering useful software.
What is the difference between software System engineering is concerned with all aspects of
engineering and system engineering?
computer-based
systems
development
including
hardware, software and process engineering. Software
engineering is part of this more general process.
December 13, 2016
32
Attributes of good
software
by author Sommerville
Product characteristic
Description
Maintainability
Software should be written in such a way so that it can evolve to
meet the changing needs of customers. This is a critical attribute
because software change is an inevitable requirement of a
changing business environment.
Dependability and
security
Software dependability includes a range of characteristics
including reliability, security and safety. Dependable software
should not cause physical or economic damage in the event of
system failure. Malicious users should not be able to access or
damage the system.
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.
Acceptability
Software must be acceptable to the type of users for which it is
designed. This means that it must be understandable, usable and
compatible with other systems that they use.
December 13, 2016
33
The software process
(as per
Somerville)
A structured set of activities required to develop a
software system.
Many different software processes but all involve:
Specification defining what the system should do;
Design and implementation defining the organization of
the system and implementing the system;
Validation checking that it does what the customer wants;
Evolution changing the system in response to changing
customer needs.
A software process model is an abstract
representation of a process. It presents a description
of a process from some particular perspective.
December 13, 2016
34
The Essence of Problem
Solving
(as Per George Polya A Hungarian
Mathematician)
1) Understand the problem
What are the unknowns?
Can the problem be compartmentalized?
Can the problem be represented graphically?
2) Plan a solution
Have you seen similar problems like this before?
Has a similar problem been solved and is the solution
reusable?
Can subproblems be defined and solved?
3) Carry out the plan
Is the solution as per plan?
Is each component of the solution correct?
4) Examine the results for accuracy
Is it possible to test each component of the solution?
December 13, 2016
35
The Essence of Problem
Solving
(in Software Engineering)
1)
Understand the problem (communication and
analysis)
2)
Plan a solution (planning, modeling and software
design)
3)
Have you seen similar problems like this before?
Has a similar problem been solved and is the solution
reusable?
Can subproblems be defined and solved?
Carry out the plan (construction; code generation)
4)
Who has a stake in the solution to the problem?
What are the unknowns (data, function, behavior)?
Can the problem be compartmentalized?
Can the problem be represented graphically?
Is the solution as per plan? Is the source code traceable to the
design?
Is each component of the solution correct? Has the design and
code been reviewed?
Examine the results for accuracy (testing and quality
December 13, 2016
36
Seven Core Principles for Software
Engineering (David Hooker 1996)
1) Remember the reason that the software exists
The software should provide value to its users and satisfy the
requirements
2) Keep it simple, stupid (KISS)
All design and implementation should be as simple as possible
3) Maintain the vision of the project
A clear vision is essential to the projects success
4) Others will consume what you produce
Always specify, design, and implement knowing that someone
else will later have to understand and modify what you did
5) Be open to the future
Never design yourself into a corner; build software that can be
easily changed and adapted
6) Plan ahead for software reuse
Reuse of software reduces the long-term cost and increases
the value of the program and the reusable components
7) Think, then act
Placing clear, complete thought before action will almost
always produce better results
December 13, 2016
37
Summary
Software is a logical entity
Software is engineered; not manufactured
Software deteriorates in different ways than hardware
Software Engineering could be looked upon as layers
of elements
Software Engineering requires framework activities
and umbrella activities
Patterns help gain from established solutions
There are many myths associated with software
engineering
Software Engineering activities can be mapped to
Polyas scientific approach to solve a problem
David Hooker offers seven valuable software
engineering principles
Thank You