Page 1
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 1
Chapter 4Software Processes
Modified by Randy K. Smith
Additional Material taken from:•Object-Oriented and Classical Software Engineering, Fifth Edition, WCB/McGraw-Hill, 2002, Stephen R. Schach•Software Engineering A Practitioner’s Approach, Fifth Edition, WCB/McGraw-Hill, 2001, Roger S. Pressman
Page 2
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 2
Software Processes Coherent sets of activities for specifying,
designing, implementing and testing software systems
Objectives• To introduce software process models• To describe a number of different process models and when
they may be used• To describe outline process models for requirements
engineering, software development, testing and evolution• To introduce CASE technology to support software process
activities
Page 3
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 3
The software process A structured set of activities required to develop a
software system• Specification• Design• Validation• Evolution
A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective
Page 4
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 4
System/informationengineering
Generic software process model
analysis design code test
Software Engineering A Practitioner’s Approach, Fifth Edition, WCB/McGraw-Hill, 2001, Roger S. Pressman
Page 5
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 5
Generic software process models
The waterfall model• Separate and distinct phases of specification and
development Evolutionary development
• Specification and development are interleaved Formal systems development
• A mathematical system model is formally transformed to an implementation
Reuse-based development• The system is assembled from existing components
Page 6
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 6
Waterfall modelRequirements
definition
System andsoftware design
Implementationand unit testing
Integration andsystem testing
Operation andmaintenance
Page 7
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 7
Waterfall model phases Phases
• Requirements analysis and definition• System and software design• Implementation and unit testing• Integration and system testing• Operation and maintenance• The drawback of the waterfall model is the difficulty of
accommodating change after the process is underway Problems
• Inflexible partitioning of the project into distinct stages• Makes it difficult to respond to changing customer
requirements• Model is appropriate when requirements are well-understood
Page 8
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 8
Waterfall model (Another View)
Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002Stephen R. Schach
Page 9
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 9
Evolutionary Models
Build/Revise mock-upListen to
Customer
Customer test drives
mock-up
Prototyping
•Evolutionary•Build to keep
•Throwaway•Built not to keep
Sommerville
Page 10
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 10
Evolutionary development Exploratory development
• Objective is to work with customers and to evolve a final system from an initial outline specification. Should start with well-understood requirements
Throw-away prototyping• Objective is to understand the
system requirements. Should start with poorly understood requirements
Build/Revise
mock-upListen to Customer
Customer test drives
mock-up
Page 11
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 11
Evolutionary development
ValidationFinal
version
DevelopmentIntermediate
versions
SpecificationInitial
version
Outlinedescription
Concurrentactivities
Page 12
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 12
Evolutionary developmentBuild-and-Fix
Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002, Stephen R. Schach
Page 13
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 13
Evolutionary development
Problems• Lack of process visibility• Systems are often poorly structured• Special skills (e.g. in languages for rapid
prototyping) may be required Applicability
• For small or medium-size interactive systems• For parts of large systems (e.g. the user interface)• For short-lifetime systems
Page 14
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 14
Process iteration
System requirements ALWAYS evolve in the course of a project so process iteration where earlier stages are reworked is always part of the process for large systems
Iteration can be applied to any of the generic process models
Two (related) approaches• Incremental development• Spiral development
Page 15
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 15
Incremental development Do not deliver the system as a single delivery
• development and delivery broken down into increments
• each increment delivering part of the required functionality User requirements are prioritized (highest first) Once an increment is started, requirements are frozen
• requirements for later increments can continue to evolve
Valida teincrement
Develop systemincrement
Design systemarchitecture
Integrateincrement
Valida tesystem
Define outline requirements
Assign requirements to increments
System incomplete
Finalsystem
Page 16
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 16
Incremental development
Object-Oriented and Classical Software Engineering, Fifth Edition, WCB/McGraw-Hill, 2002Stephen R. Schach
Page 17
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 17
The Incremental Model
analysis design code test
System/informationengineering
analysis design code test
analysis design code test
analysis design code test
increment 2
increment 3
increment 4
increment 1
delivery of1st increment
delivery of2nd increment
delivery of3rd increment
delivery of4th increment
calendar time
Page 18
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 18
Incremental development advantages Customer value can be delivered with each
increment so system functionality is available earlier
Early increments act as a prototype to help elicit requirements for later increments
Lower risk of overall project failure The highest priority system services tend to
receive the most testing
Page 19
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 19
Spiral development
Process is represented as a spiral rather than as a sequence of activities with backtracking
Each loop in the spiral represents a phase in the process.
No fixed phases such as specification or design - loops in the spiral are chosen depending on what is required
Risks are explicitly assessed and resolved throughout the process
Page 20
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 20
Spiral model of the software process
Riskanalysis
Riskanalysis
Riskanalysis
Riskanalysis Proto-
type 1
Prototype 2Prototype 3
Opera-tionalprotoype
Concept ofOperation
Simulations, models, benchmarks
S/Wrequirements
Requirementvalidation
DesignV&V
Productdesign Detailed
design
CodeUnit test
IntegrationtestAcceptance
testService Develop, verifynext-level product
Evaluate alternativesidentify, resolve risks
Determine objectivesalternatives and
constraints
Plan next phase
Integrationand test plan
Developmentplan
Requirements planLife-cycle plan
REVIEW
Page 21
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 21
Spiral model sectors Objective setting
• Specific objectives for the phase are identified Risk assessment and reduction
• Risks are assessed and activities put in place to reduce the key risks
Development and validation• A development model for the system is chosen which
can be any of the generic models Planning
• The project is reviewed and the next phase of the spiral is planned
Page 22
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 22
The Rational Unified Process A modern process model derived from the
work on the UML and associated process. Normally described from 3 perspectives
• A dynamic perspective that shows phases over time;
• A static perspective that shows process activities;
• A perspective that suggests good practice.
Page 23
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 23
The (Rational) Unified Process
Page 24
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 24
RUP good practice
Develop software iteratively Manage requirements Use component-based architectures Visually model software Verify software quality Control changes to software
Page 25
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 25
Formal systems development Based on the transformation of a mathematical
specification through different representations to an executable program
Transformations are ‘correctness-preserving’ so it is straightforward to show that the program conforms to its specification
Embodied in the ‘Cleanroom’ approach to software development
Requirementsdefinition
Formalspecification
Formaltransformation
Integration andsystem testing
Page 26
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 26
Formal systems development Problems
• Need for specialised skills and training to apply the technique
• Difficult to formally specify some aspects of the system such as the user interface
Applicability• Critical systems especially those where a safety
or security case must be made before the system is put into operation
Page 27
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 27
Synchronize-and Stabilize Model Microsoft’s life-cycle model Requirements analysis—interview potential customers Draw up specifications Divide project into 3 or 4 builds Each build carried out by small teams in parallel At the end of the day—synchronize (test and debug) At the end of the build—stabilize (freeze build) Components always work together
• Get early insights into operation of product
Object-Oriented and Classical Software Engineering, Fifth Edition, WCB/McGraw-Hill, 2002Stephen R. Schach
Page 28
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 28
Agile Methods Effective (rapid and adaptive) response to change Effective communication among all stakeholders Drawing the customer onto the team Organizing a team so that it is in control of the work
performed
Yielding … Rapid, incremental delivery of software Extreme Programming (XP)
• Test First, Pair Programming
Page 29
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 29
System/informationengineering
Generic software process model
analysis design code test
Software Engineering A Practitioner’s Approach, Fifth Edition, WCB/McGraw-Hill, 2001, Roger S. Pressman
Page 30
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 30
Software specification
The process of establishing what services are required and the constraints on the system’s operation and development
Requirements engineering process• Feasibility study• Requirements elicitation and analysis• Requirements specification• Requirements validation
Page 31
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 31
The requirements engineering process
Feasibilitystudy
Requirementselicitation and
analysisRequirementsspecification
Requirementsvalidation
Feasibilityreport
Systemmodels
User and systemrequirements
Requirementsdocument
Page 32
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 32
System/informationengineering
Generic software process model
analysis design code test
Software Engineering A Practitioner’s Approach, Fifth Edition, WCB/McGraw-Hill, 2001, Roger S. Pressman
Page 33
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 33
Software design and implementation
The process of converting the system specification into an executable system
Software design• Design a software structure that realises the
specification Implementation
• Translate this structure into an executable program The activities of design and implementation are
closely related and may be inter-leaved
Page 34
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 34
Design process activities
Architectural design Abstract specification Interface design Component design Data structure design Algorithm design
Page 35
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 35
The software design process
Systematic approaches to developing a software design
The design is usually documented as a set of graphical models
Possible models• Data-flow model• Entity-relation-attribute
model• Structural model• Object models (UML)
Architecturaldesign
Abstractspecification
Interfacedesign
Componentdesign
Datastructuredesign
Algorithmdesign
Systemarchitecture
Softwarespecification
Interfacespecification
Componentspecification
Datastructure
specification
Algorithmspecification
Requirementsspecification
Design activities
Design products
Page 36
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 36
System/informationengineering
Generic software process model
analysis design code test
Software Engineering A Practitioner’s Approach, Fifth Edition, WCB/McGraw-Hill, 2001, Roger S. Pressman
Page 37
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 37
Programming and debugging
Translating a design into a program and removing errors from that program
Programming is a personal activity - there is no generic programming process
Programmers carry out some program testing to discover faults in the program and remove these faults in the debugging process
Locateerror
Designerror repair
Repairerror
Re-testprogram
Page 38
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 38
System/informationengineering
Generic software process model
analysis design code test
Software Engineering A Practitioner’s Approach, Fifth Edition, WCB/McGraw-Hill, 2001, Roger S. Pressman
Page 39
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 39
Software validation
Verification and validation is intended to show that a system conforms to its specification and meets the requirements of the system customer
Involves checking and review processes and system testing
System testing involves executing the system with test cases that are derived from the specification of the real data to be processed by the system
Page 40
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 40
The testing process
Sub-systemtesting
Moduletesting
Unittesting
Systemtesting
Acceptancetesting
Componenttesting
Integration testing Usertesting
Page 41
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 41
Testing stages Unit testing
• Individual components are tested Module testing
• Related collections of dependent components are tested Sub-system testing
• Modules are integrated into sub-systems and tested. The focus here should be on interface testing
System testing• Testing of the system as a whole. Testing of emergent
properties Acceptance testing
• Testing with customer data to check that it is acceptable
Page 42
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 42
Testing phases
Requirementsspecification
Systemspecification
Systemdesign
Detaileddesign
Module andunit codeand tess
Sub-systemintegrationtest plan
Systemintegrationtest plan
Acceptancetest plan
ServiceAcceptance
testSystem
integration testSub-system
integration test
Page 43
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 43
Software evolution Software is inherently flexible and can change. As requirements change (changing business
circumstances), software must evolve and change The demarcation between development and
evolution (maintenance) is increasingly irrelevant as fewer and fewer systems are completely new
Assess existingsystems
Define systemrequirements
Propose systemchanges
Modifysystems
Newsystem
Existingsystems
Page 44
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 44
Automated process support (CASE)
Computer-aided software engineering (CASE) is software to support software development and evolution processes
Activity automation• Graphical editors for system model development• Data dictionary to manage design entities• Graphical UI builder for user interface construction• Debuggers to support program fault finding• Automated translators to generate new versions of a
program
Page 45
Activity-based classification
Reengineering tools
Testing tools
Debugging tools
Program analysis tools
Language-processingtools
Method support tools
Prototyping tools
Configurationmanagement tools
Change management tools
Documentation tools
Editing tools
Planning tools
Specification Design Implementation Verificationand
Validation
Page 46
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 46
Key points
Software processes are the activities involved in producing and evolving a software system. They are represented in a software process model
General activities are specification, design and implementation, validation and evolution
Generic process models describe the organisation of software processes
Iterative process models describe the software process as a cycle of activities
Page 47
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 4 Slide 47
Key points
Requirements engineering is the process of developing a software specification
Design and implementation processes transform the specification to an executable program
Validation involves checking that the system meets to its specification and user needs
Evolution is concerned with modifying the system after it is in use
CASE technology supports software process activities