Chapter 2 – Software Processes
Chapter 2. Software Processes 1
Topics covered
Software process models
Process activities
Coping with change
Process improvement
Chapter 2. Software Processes 2
The software process
A structured set of activities required to develop a
software system.
Many different software processes but all involve:
Specification
Design and implementation
Validation
Evolution.
A software process model
an abstract representation of a process
Chapter 2. Software Processes 3
Some software process models
The waterfall model
Plan-driven model.
Separate and distinct phases of specification and development.
Incremental development
Specification, development and validation are interleaved.
May be plan-driven or agile.
Integration and configuration
The system is assembled from existing configurable components.
May be plan-driven or agile.
In practice, most large systems are developed using a
process that incorporates elements from all of these models.
Chapter 2. Software Processes 4
The waterfall model
In principle, a phase has to be complete before
moving onto the next phase.
Chapter 2. Software Processes 5
Waterfall model usages
The main drawback:
the difficulty of accommodating change after the process is
underway.
Mostly used for large systems engineering projects
a system is developed at several sites.
the plan-driven nature of the waterfall model helps coordinate
the work.
When the requirements are well-understood and
changes will be fairly limited during the design process.
Few business systems have stable requirements.
Chapter 2. Software Processes 6
Incremental development
Chapter 2. Software Processes 7
Incremental development benefits
Reduce the cost of accommodating changing customer
requirements
Easier to get customer feedback on the development
work that has been done.
More rapid delivery and deployment of useful software to
the customer
Chapter 2. Software Processes 8
Incremental development problems
The process is not visible.
Managers need regular deliverables
Not cost-effective to produce documents for every product
version
System structure tends to degrade as new increments
are added.
Need time and money on refactoring to improve the software
Regular change tends to corrupt the structure.
Incorporating further software changes becomes increasingly
difficult and costly.
Chapter 2. Software Processes 9
Agile development
i.e.: waterfall model, incremental
development
Chapter 2. Software Processes 10
SCRUM – THE MOST POPULAR AGILE
DEVELOPMENT APPROACHES
AGILE DEVELOPMENT
PROs CONs
More flexible Hard to predict
Product get to Final product is
market faster not released first
Better Documentation
communication gets left behind
Reuse-oriented software engineering
Based on software reuse where systems are integrated
from existing components or application systems (COTS
-Commercial-off-the-shelf systems).
Stand-alone application systems (COTS)
Package objects / component framework such as .NET or J2EE.
Web services
Reused elements may be configured to adapt their
behaviour and functionality to a user’s requirements
Reuse is now the standard approach for building many
types of business system
Aug 2019 Chapter 2. Software Processes 13
Reuse-oriented software engineering
Chapter 2. Software Processes 14
Advantages and disadvantages
Reduced costs and risks as less software is developed
from scratch
Faster delivery and deployment of system
But requirements compromises are inevitable so system
may not meet real needs of users
Loss of control over evolution of reused system elements
Chapter 2. Software Processes 15
PROCESS ACTIVITIES
The four basic process activities are specification, development,
validation and evolution
Chapter 2. Software Processes 16
Activity 1: Software specification
The process of establishing what services are required
and the constraints on the system’s operation and
development.
Use: Requirements engineering process
Requirements elicitation and analysis
Requirements specification
Requirements validation
Chapter 2. Software Processes 17
The requirements engineering process
Chapter 2. Software Processes 18
Activity 2: Software design and implementation
~ Software development
The process of converting the system specification into
an executable system.
Two (sub) activities:
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.
Chapter 2. Software Processes 19
A general model of the design process
Chapter 2. Software Processes 20
System implementation
The software is implemented either by developing a
program or programs or by configuring an application
system.
Design and implementation are interleaved activities for
most types of software system.
Programming is an individual activity with no standard
process.
Debugging is the activity of finding program faults and
correcting these faults.
Chapter 2. Software Processes 21
Activity 3: Software validation
building the thing right?
Verification and validation (V & V)
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: executing the system with test cases
Testing: the most commonly used V & V activity.
building the right thing?
Chapter 2. Software Processes 22
Stages of testing
• Test individual components
independently
• Testing of the system as a
whole
• Testing with
customer data
Chapter 2. Software Processes 23
Testing phases in a plan-driven software
process
Chapter 2. Software Processes 24
Activity 4: Software evolution
Software is inherently flexible and can change.
Requirements can change
(changing business circumstances) => the software must also
evolve and change.
Chapter 2. Software Processes 25
COPING WITH CHANGE
Chapter 2. Software Processes 26
Coping with change
Change is inevitable in all large software projects.
Business changes
New technologies
Changing platforms
Change leads to rework
costs include rework (re-analysing requirements) and
implementing new functionality
Chapter 2. Software Processes 27
Software prototyping
A prototype is an initial version of a system used to
demonstrate concepts and try out design options.
A prototype can be used in:
requirements engineering process: requirements elicitation and
validation;
design processes: options and develop UI design;
testing process: run back-to-back tests.
Benefits:
• Improved system usability.
• A closer match to users’ real
needs.
• Improved design quality.
• Improved maintainability.
• Reduced development effort.
Chapter 2. Software Processes 28
The process of prototype development
Prototype development:
• May be based on rapid
prototyping languages or tools
• May involve leaving out
functionality
Chapter 2. Software Processes 29
Incremental delivery
The development and delivery is broken down into
increments
each increment delivering part of the required functionality.
user requirements are prioritised and the highest priority
requirements are included in early increments.
Two approaches:
Incremental development: by developer
Incremental delivery: for end-user
Chapter 2. Software Processes 30
Incremental delivery
Advantages:
• system functionality is
available earlier.
• early increments act as a Problems:
prototype • may require a set of basic
• lower risk of overall project facilities
failure. • the specification is
• highest priority system developed in conjunction
services receive most with the software.
testing.
Chapter 2. Software Processes 31
Software Project Documentation
Activity Document
Validation & Verification SVVP - Software Validation & Verification Plan
Quality Assurance SQAP - Software Quality Assurance Plan
Configuration SCMP - Software Configuration Management Plan
Project status SPMP - Software Project Management Plan
Requirements SRS - Software Requirements Specifications
Design SDD - Software Design Document / Software Detail
Design Document
Code Source Code
Testing STD - Software Test Document
Operation User’s Manual
Chapter 2. Software Processes 32
Summary
Software processes
Software process models
waterfall, incremental development, reuse-oriented
development.
Fundamental activities:
Requirements engineering: developing specification.
Design and implementation: transforming a requirements
specification into an executable software system
Software validation: checking that the system conforms to its
specification.
Software evolution: change existing software systems to meet
new requirements
Aug 2019 Chapter 2. Software Processes 33
Summary (cont.)
Coping with change
prototyping
iterative development and delivery
Aug 2019 Chapter 2. Software Processes 34