0% found this document useful (0 votes)
28 views58 pages

Ch2 SW Processes

The document outlines Chapter 2 of a Software Engineering course, focusing on software processes, models, and activities involved in software development. It discusses various software process models such as the waterfall model, incremental development, and integration and configuration, highlighting their advantages and challenges. Additionally, it emphasizes the importance of coping with change, prototyping, and the iterative nature of software evolution in response to dynamic requirements.

Uploaded by

sabekaelhouni510
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
28 views58 pages

Ch2 SW Processes

The document outlines Chapter 2 of a Software Engineering course, focusing on software processes, models, and activities involved in software development. It discusses various software process models such as the waterfall model, incremental development, and integration and configuration, highlighting their advantages and challenges. Additionally, it emphasizes the importance of coping with change, prototyping, and the iterative nature of software evolution in response to dynamic requirements.

Uploaded by

sabekaelhouni510
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

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

You might also like