EC555 – Software Engineering
EC697 – Special Topics in SE
Dr. Nuredin Ahmed
Professor
Computer Engineering Department
University of Tripoli
Chapter 2 – Software Processes
These slides are based on the slides by the authors Ian Sommerville.
The slides doesn’t include all the material covered in the lecture.
The slides will be explained, modified, and sometime corrected in the
lecture.
Topics covered
Software process models
Process activities
Coping with change
Process improvement
09/10/2025 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 – 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.
09/10/2025 Chapter 2 Software Processes 3
Software process descriptions
When we describe and discuss processes, we usually
talk about the activities in these processes such as
specifying a data model, designing a user interface,
etc. and the ordering of these activities.
Process descriptions may also include:
Products, which are the outcomes of a process activity;
Roles, which reflect the responsibilities of the people involved in
the process;
Pre- and post-conditions, which are statements that are true
before and after a process activity has been enacted or a
product produced.
09/10/2025 Chapter 2 Software Processes 4
Plan-driven and agile processes
Plan-driven processes are processes where all of the
process activities are planned in advance and progress
is measured against this plan.
In agile processes, planning is incremental and it is
easier to change the process to reflect changing
customer requirements.
In practice, most practical processes include elements
of both plan-driven and agile approaches.
There are no right or wrong software processes.
09/10/2025 Chapter 2 Software Processes 5
Software process models
09/10/2025 Chapter 2 Software Processes 6
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.
09/10/2025 Chapter 2 Software Processes 7
The waterfall model
09/10/2025 Chapter 2 Software Processes 8
Waterfall model phases
There are separate identified phases in the waterfall
model:
Requirements analysis and definition
System and software design
Implementation and unit testing
Integration and system testing
Operation and maintenance
The main drawback of the waterfall model is the difficulty
of accommodating change after the process is
underway. In principle, a phase has to be complete
before moving onto the next phase.
09/10/2025 Chapter 2 Software Processes 9
Waterfall model problems
Inflexible partitioning of the project into distinct stages
makes it difficult to respond to changing customer
requirements.
Therefore, this model is only appropriate when the requirements
are well-understood and changes will be fairly limited during the
design process.
Few business systems have stable requirements.
The waterfall model is mostly used for large systems
engineering projects where a system is developed at
several sites.
In those circumstances, the plan-driven nature of the waterfall
model helps coordinate the work.
09/10/2025 Chapter 2 Software Processes 10
Incremental development
Involves defining requirements for that
increment.
implements features or
changes.
verifies correctness
and quality.
09/10/2025 Chapter 2 Software Processes 11
Incremental development benefits
The cost of accommodating changing customer
requirements is reduced.
The amount of analysis and documentation that has to be
redone is much less than is required with the waterfall model.
It is easier to get customer feedback on the development
work that has been done.
Customers can comment on demonstrations of the software and
see how much has been implemented.
More rapid delivery and deployment of useful software to
the customer is possible.
Customers are able to use and gain value from the software
earlier than is possible with a waterfall process.
09/10/2025 Chapter 2 Software Processes 12
Incremental development problems
The process is not visible.
Managers need regular deliverables to measure progress. If
systems are developed quickly, it is not cost-effective to produce
documents that reflect every version of the system.
System structure tends to degrade as new increments
are added.
Unless time and money is spent on refactoring to improve the
software, regular change tends to corrupt its structure.
Incorporating further software changes becomes increasingly
difficult and costly.
09/10/2025 Chapter 2 Software Processes 13
Integration and configuration
Based on software reuse where systems are integrated from
existing components or application systems (sometimes called
COTS -Commercial-off-the-shelf) systems).
Systems are constructed by integrating pre-existing software
elements, reducing the need to develop everything from scratch.
These reused components can be configured to meet the specific
needs and requirements of users, allowing for customization without
full redevelopment.
Software reuse has become the standard practice for developing
most business systems, providing efficiency and consistency.
Reuse covered in more depth in Chapter 15.
09/10/2025 Chapter 2 Software Processes 14
Types of reusable software
Stand-alone application systems (sometimes called
COTS) that are configured for use in a particular
environment.
Collections of objects that are developed as a package
to be integrated with a component framework such as
.NET or J2EE, facilitating modular development.
Web services that are developed according to service
standards and which are available for remote invocation.
09/10/2025 Chapter 2 Software Processes 15
Reuse-oriented software engineering
This flowchart provides description of reuse-oriented software
engineering, emphasizing the process of building software
systems by reusing existing components or systems whenever
possible.
09/10/2025 Chapter 2 Software Processes 16
Key process stages
Requirements specification - Initial requirements are gathered and
documented.
Software discovery and evaluation - Existing software systems or
components are searched for and assessed to determine if they meet
the requirements.
Requirements refinement - Requirements may be adjusted based on
what reusable software or components are available, creating alignment
between user needs and reusable options.
Application system configuration –
If a suitable application system is found, it is configured for use.
If reusable components are available, they are adapted as required.
If necessary, components are not available, new components are developed.
Component adaptation and integration - All configured, adapted, or
newly developed elements are integrated into the final system.
09/10/2025 Chapter 2 Software Processes 17
Advantages and disadvantages
Reduced costs and risks: Less software needs to be developed from
scratch, lowering expenses and potential development challenges.
Faster delivery and deployment: The system can be delivered to
users more quickly because existing elements are used.
Requirements compromises: The reused software components may
not perfectly fit user needs, making compromises in functionality or
requirements likely.
Loss of control: There may be limited control over the evolution and
updates of reused system elements, especially when relying on third-
party or commercial components.
09/10/2025 Chapter 2 Software Processes 18
Process activities
09/10/2025 Chapter 2 Software Processes 19
Process activities
Real software processes are inter-leaved sequences of
technical, collaborative and managerial activities with the
overall goal of specifying, designing, implementing and
testing a software system.
The four basic process activities of specification,
development, validation and evolution are organized
differently in different development processes.
For example, in the waterfall model, they are organized
in sequence, whereas in incremental development they
are interleaved.
09/10/2025 Chapter 2 Software Processes 20
The requirements engineering process
09/10/2025 Chapter 2 Software Processes 21
Software specification
The process of establishing what services are required
and the constraints on the system’s operation and
development.
Requirements engineering process
Requirements elicitation and analysis
• What do the system stakeholders require or expect from the system?
Requirements specification
• Defining the requirements in detail
Requirements validation
• Checking the validity of the requirements
09/10/2025 Chapter 2 Software Processes 22
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.
09/10/2025 Chapter 2 Software Processes 23
A general model of the design process
09/10/2025 Chapter 2 Software Processes 24
Design activities
Architectural design, where you identify the overall
structure of the system, the principal components
(subsystems or modules), their relationships and how
they are distributed.
Database design, where you design the system data
structures and how these are to be represented in a
database.
Interface design, where you define the interfaces
between system components.
Component selection and design, where you search
for reusable components. If unavailable, you design how
it will operate.
09/10/2025 Chapter 2 Software Processes 25
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.
09/10/2025 Chapter 2 Software Processes 26
Software validation
Verification and validation (V & V) 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.
Testing is the most commonly used V & V activity.
09/10/2025 Chapter 2 Software Processes 27
Stages of testing
09/10/2025 Chapter 2 Software Processes 28
Testing stages
Component testing
Individual components are tested independently;
Components may be functions or objects or coherent groupings
of these entities.
System testing
Testing of the system as a whole. Testing of emergent properties
is particularly important.
Customer testing
Testing with customer data to check that the system meets the
customer’s needs.
09/10/2025 Chapter 2 Software Processes 29
Testing phases in a plan-driven software process (V-
model)
09/10/2025 Chapter 2 Software Processes 30
Software evolution
Flexibility: Software is designed to change and adapt, making it
inherently flexible.
Adapting to Change: As business needs and circumstances
evolve, the supporting software must also change to remain relevant
and functional.
Blurring of Development and Maintenance: The traditional
distinction between initial development and ongoing maintenance is
becoming less relevant, as most software systems now continuously
evolve rather than being completely replaced or rebuilt.
This highlights the ongoing, iterative nature of software engineering in
response to dynamic business environments and user requirements.
09/10/2025 Chapter 2 Software Processes 31
System evolution
The figure outlines the process of system evolution, which
involves updating or changing software systems to meet new
requirements or challenges.
09/10/2025 Chapter 2 Software Processes 32
Coping with change
09/10/2025 Chapter 2 Software Processes 33
Coping with change
Change is inevitable in all large software projects.
Business changes lead to new and changed system
requirements
New technologies open up new possibilities for improving
implementations
Changing platforms require application changes
Change leads to rework so the costs of change include
both rework (e.g. re-analysing requirements) as well as
the costs of implementing new functionality
09/10/2025 Chapter 2 Software Processes 34
Reducing the costs of rework
Change Anticipation: This involves adding activities to
the software process that predict possible changes
before major rework is needed. For instance, developing
a prototype can help stakeholders see and refine
requirements early, reducing unexpected modifications
later.
Change Tolerance: The process is structured so
changes can be made at low cost. This is often achieved
using incremental development, allowing proposed
changes to be applied only to system parts that haven't
been built yet, or to a localized increment rather than the
whole system.
09/10/2025 Chapter 2 Software Processes 35
Coping with changing requirements
System Prototyping: Quickly developing a version or
part of the system to help customers review
requirements and assess design feasibility. This method
enables early feedback and facilitates change
anticipation, reducing the risk and expense of later
modifications.
Incremental Delivery: Delivering system increments to
customers for ongoing feedback and experimentation.
This process helps avoid large-scale changes and
supports low-cost adaptation, promoting both change
avoidance and change tolerance.
09/10/2025 Chapter 2 Software Processes 36
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: Helps with elicitation and
validation of requirements by showing stakeholders tangible
features early.
Design: Supports exploration of options and UI design, allowing
teams and users to visualize and test design ideas.
Testing: Enables back-to-back test runs to compare outcomes
or refine system behavior before final release.
09/10/2025 Chapter 2 Software Processes 37
Benefits of prototyping
Improved system usability.
A closer match to users’ real needs.
Improved design quality.
Improved maintainability.
Reduced development effort.
09/10/2025 Chapter 2 Software Processes 38
The process of prototype development
•Establish prototype objectives: Identify the main goals for creating the prototype and
document them as a prototyping plan.
•Define prototype functionality: Specify which features and functions the prototype will
include, resulting in an outline definition.
•Develop prototype: Build an executable version of the prototype based on the outlined
functionality.
•Evaluate prototype: Test and assess the prototype, gathering feedback and findings in an
evaluation report.
09/10/2025 Chapter 2 Software Processes 39
Prototype development
May be based on rapid prototyping languages or tools
May involve leaving out functionality
Prototype should focus on areas of the product that are not well-
understood;
Error checking and recovery may not be included in the
prototype;
Focus on functional rather than non-functional requirements
such as reliability and security
Functional requirements specify what a software system should do—the functions,
features, or behaviors it must provide to fulfill user and business needs.
Non-functional requirements describe how the system performs those functions and set
quality standards like performance, reliability, security, and usability, rather than
specifying behaviors or features.
09/10/2025 Chapter 2 Software Processes 40
Throw-away prototypes
Why Throw-Away Prototypes Are Discarded
Prototypes lack the ability to be tuned for non-functional requirements
such as performance, reliability, or security.
They are usually undocumented, making future maintenance and
understanding difficult.
Rapid changes during prototyping often degrade the structure and
quality of the code.
Prototypes typically do not meet normal organizational quality
standards, so they are not suitable for release as production systems.
Throw-away prototypes are used for exploration, learning, and
requirement clarification, but must not be confused with or reused as final
[Link]-away prototypes should be discarded after development
because they are not suitable as a foundation for production systems.
09/10/2025 Chapter 2 Software Processes 41
Incremental delivery
Rather than deliver the system as a single delivery, the
development and delivery is broken down into
increments with each increment delivering part of the
required functionality.
User requirements are prioritised and the highest priority
requirements are included in early increments.
Once the development of an increment is started, the
requirements are frozen though requirements for later
increments can continue to evolve.
09/10/2025 Chapter 2 Software Processes 42
Incremental development and delivery
Incremental development
The system is developed in increments, with each increment evaluated
before the next is started, allowing gradual improvement and adjustment.
This approach is commonly used in agile methods, which emphasize
adaptability and regular user feedback.
Users or customer proxies evaluate each increment, ensuring that
development is aligned with real needs and expectations.
Incremental delivery
Each increment is deployed for end-users, who can use and provide
feedback on practical aspects of the software.
This enables realistic evaluation and rapid adaptation of software to actual
user requirements.
Incremental delivery may be challenging for replacement systems if
available increments have less functionality than the existing solution,
requiring careful planning during migration..
09/10/2025 Chapter 2 Software Processes 43
Incremental delivery
09/10/2025 Chapter 2 Software Processes 44
Incremental delivery advantages
Customer value is delivered sooner: Functionality is available
earlier as system increments are deployed, allowing users to benefit
quickly from new features.
Early increments act as prototypes: Initial releases help clarify
and elicit further requirements for subsequent increments, improving
the system design and user satisfaction.
Lower risk of project failure: Delivering the system incrementally
helps detect and address problems early, reducing the likelihood of
overall project collapse.
Priority services get most testing: The most critical system
functions are typically tested first and most thoroughly, improving
reliability where it matters most.
09/10/2025 Chapter 2 Software Processes 45
Incremental delivery problems
Basic Facilities Coordination: Most systems need shared
baseline features (like authentication or logging) used by many parts
of the system. Because requirements for each increment are defined
only as needed, it's challenging to plan for and implement shared
facilities required by all increments.
Specification and Iteration Conflict: Incremental and
iterative development means the specification grows along with the
software. This approach can conflict with traditional procurement
models that require a complete system specification as part of the
initial development contract—making it harder for many
organizations to adapt to iterative methods.
These issues highlight the organizational and technical challenges of adopting
incremental delivery in complex systems development.
09/10/2025 Chapter 2 Software Processes 46
Process improvement
09/10/2025 Chapter 2 Software Processes 47
Process improvement
Many software companies have turned to software
process improvement as a way of enhancing the quality
of their software, reducing costs or accelerating their
development processes.
Process improvement means understanding existing
processes and changing these processes to increase
product quality and/or reduce costs and development
time.
09/10/2025 Chapter 2 Software Processes 48
Approaches to improvement
The process maturity approach, which focuses on
improving process and project management and
introducing good software engineering practice.
The level of process maturity reflects the extent to which good
technical and management practice has been adopted in
organizational software development processes.
The agile approach, which focuses on iterative
development and the reduction of overheads in the
software process.
The primary characteristics of agile methods are rapid delivery of
functionality and responsiveness to changing customer
requirements.
09/10/2025 Chapter 2 Software Processes 49
The process improvement cycle
09/10/2025 Chapter 2 Software Processes 50
Process improvement activities
Process measurement
You measure one or more attributes of the software process or
product. These measurements forms a baseline that helps you
decide if process improvements have been effective.
Process analysis
The current process is assessed, and process weaknesses and
bottlenecks are identified. Process models (sometimes called
process maps) that describe the process may be developed.
Process change
Process changes are proposed to address some of the identified
process weaknesses. These are introduced and the cycle
resumes to collect data about the effectiveness of the changes.
09/10/2025 Chapter 2 Software Processes 51
Process measurement
Wherever possible, quantitative process data
should be collected
However, where organisations do not have clearly defined
process standards this is very difficult as you don’t know what to
measure. A process may have to be defined before any
measurement is possible.
Process measurements should be used to
assess process improvements
But this does not mean that measurements should drive the
improvements. The improvement driver should be the
organizational objectives.
09/10/2025 Chapter 2 Software Processes 52
Process metrics
Time taken for process activities to be
completed
E.g. Calendar time or effort to complete an activity or process.
Resources required for processes or activities
E.g. Total effort in person-days.
Number of occurrences of a particular event
E.g. Number of defects discovered.
09/10/2025 Chapter 2 Software Processes 53
Capability maturity levels
Level 4: Quantitatively Managed – Processes are
measured and controlled using quantitative data
and analysis.
Level 3: Defined – Processes are Level 5: Optimizing – Focus is
well characterized, standardized, on continuous improvement,
and integrated into an organization- with processes systematically
wide standard. refined and innovated over
time.
Level 2: Managed – Processes are planned and executed
according to policy, with basic project management and
visibility.
Level 1: Initial – Processes are unpredictable, poorly
controlled, and reactive.
09/10/2025 Chapter 2 Software Processes 54
The SEI capability maturity model
Initial: Processes are essentially uncontrolled and may be
unpredictable, relying mostly on individual or ad hoc efforts.
Repeatable: Product management procedures are established and
consistently used, enabling the repetition of success across projects.
Defined: Process management procedures and strategies are
documented, standardized, and used across the organization.
Managed: Quality management strategies are defined, used, and
monitored, focusing on controlling and improving the quality of
products and processes.
Optimising: The organization employs process improvement
strategies, continuously refining procedures for efficiency and
effectiveness.
09/10/2025 Chapter 2 Software Processes 55
Key points
Software processes are the activities involved in
producing a software system. Software process models
are abstract representations of these processes.
General process models describe the organization of
software processes.
Examples of these general models include the ‘waterfall’ model,
incremental development, and reuse-oriented development.
Requirements engineering is the process of developing a
software specification.
09/10/2025 Chapter 2 Software Processes 56
Key points
Design and implementation processes are concerned
with transforming a requirements specification into an
executable software system.
Software validation is the process of checking that the
system conforms to its specification and that it meets the
real needs of the users of the system.
Software evolution takes place when you change
existing software systems to meet new requirements.
The software must evolve to remain useful.
Processes should include activities such as prototyping
and incremental delivery to cope with change.
09/10/2025 Chapter 2 Software Processes 57
Key points
Processes may be structured for iterative development
and delivery so that changes may be made without
disrupting the system as a whole.
The principal approaches to process improvement are
agile approaches, geared to reducing process
overheads, and maturity-based approaches based on
better process management and the use of good
software engineering practice.
The SEI process maturity framework identifies maturity
levels that essentially correspond to the use of good
software engineering practice.
09/10/2025 Chapter 2 Software Processes 58