Module: B7IS127 - Software Engineering
2023-24
Software Process and
Models
PhD Luciana Nascimento
[email protected]Acknowledgements: All the material in these slides is mainly taken from the Software
Engineering books; most of the books are mentioned in the module descriptor.
Objective
• What we mean by a “process”
• Software development products,
processes, and resources
• Several models of the software
development process
The Meaning of Process
A process: a series of steps involving activities, constraints, resources, tools
and techniques that produce an intended output of some kind
Process
Controls (guide) Policies, Standards, Regulations,
Instructions, Procedures, etc.
PROCESS
Create
Transform
Input Output
Control
Maintain
Resources
(they restrict and are controlled)
Human Materials Budget Schedule
Resources and Tools
Process Characteristics
Prescribes all major process activities
Uses resources, subject to set of constraints (such as schedule)
Produces intermediate and final products
May be composed of subprocesses with hierarchy or links
Each process activity has entry and exit criteria
Activities are organized in sequence, so timing is clear
Each process has guiding principles, including goals of each activity
Constraints may apply to an activity, resource or product
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.
The importance of Process Reasons for Process Modelling
Impose consistency and structure on To form a common understanding
a set of activities To find inconsistencies,
Guide us to understand, control, redundancies, omissions
examine, and improve the activities To find and evaluate appropriate
Enable us to capture our experiences activities for reaching process goals
and pass them along To tailor a general process for a
particular situation in which it will be
used
Software Life Cycle
When a process involves building a software, the process may be referred to as
software life cycle
Requirements analysis and definition
System (architecture) design
Program (detailed/procedural) design
Writing programs (coding/implementation)
Testing: unit, integration, system, …
System delivery (deployment)
Maintenance
Software Process Models
• Waterfall model
• V model
• Prototyping model
• Phased development: increments and iteration
• Spiral model
• Agile methods (Will be covered next class)
The Waterfall Model
Plan-driven model. Separate and
distinct phases of specification and
development.
In principle, a phase has to be
complete before moving onto the
next phase.
The Waterfall Model
The reality:
There is no iteration in waterfall
model
but…
Most software developments
apply a great many iterations
Drawbacks of The Waterfall Model
Provides no guidance how to handle changes to products and activities during
development (assumes requirements can be frozen)
Views software development as manufacturing process rather than as creative
process
There is no iterative activities that lead to creating a final product
Long wait before a final product
Waterfall methodology in IT?
Waterfall Model with Prototype
A prototype is a partially developed product
Prototyping helps developers assess alternative
design strategies (design prototype)
Users understand what the system will be like
(user interface prototype)
Prototyping is useful for verification and
validation
The Waterfall Model
Pros: Suitable for:
Easy to understand and manage Small, straightforward projects with
Well-defined stages and deliverables well-defined requirements
Projects where requirements are unlikely to
change during the development process
Cons:
Not suitable for complex projects or projects with evolving
requirements
Changes can be challenging to implement once a phase is
complete
Can lead to delays if requirements are not clear or change
throughout the project
The V-Model
A variation of the waterfall model
Uses unit testing to verify procedural design
Uses integration testing to verify architectural
(system) design
Uses acceptance testing to validate the
requirements
If problems are found during verification and
validation, the left side of the V can be re-executed
before testing on the right side is re-enacted
The Prototyping Model
Allows repeated investigation of the requirements or design
Reduces risk and uncertainty in the development
The Prototyping Model
Pros: Suitable for:
Provides a basic working version of the software Projects with high levels of user
Helps to clarify and refine requirements involvement
Projects with unclear or vague requirements
Cons: Projects where a working prototype is
necessary to clarify the requirements
Can be time-consuming and expensive
May require additional resources and expertise to
build the prototypes
Can lead to a lack of focus on non-functional
requirements
Sometimes we refer to the prototype as "Throw-away"
prototype
Phased Development: Increments and
Iterations
• Shorter cycle time
• System delivered in pieces
• enables customers to have some functionality while
the rest is being developed
• Allows two systems functioning in parallel
• the production system (release n): currently
being used
• the development system (release n+1): the
next version
Phased Development: Increments and
Iterations
Incremental development: starts with
small functional subsystem and adds
functionality with each new release
Iterative development: starts with full
system, then changes functionality of
each subsystem with each new release
The Incremental and Iterative Models
Pros:
The delivery of working software at the end of each iteration
Provides opportunities for feedback and improvement throughout the development process
The development team can focus on different areas of expertise with different releases
Training can begin early, even though some functions are missing
Cons: Suitable for:
Can be time-consuming Projects with changing requirements
Requires a high level of involvement of the Projects where feedback and improvement
teams throughout the development process are desirable
May require frequent updates to Projects where flexibility is critical
documentation and project plans
Spiral Model
Combines development activities with risk
management to minimize and control risks
The model is presented as a spiral in which
each iteration is represented by a circuit
around four major activities
• Plan
• Determine goals, alternatives and
constraints
• Evaluate alternatives and risks
• Develop and test
The Spiral Model
Pros: Suitable for:
Focuses on risk management and Projects with high levels of risk and uncertainty
evaluation throughout the project
Projects where risk management and evaluation are
Flexible and adaptable to changing critical
requirements
Projects where flexibility and adaptability are
necessary
Cons:
Can be time-consuming and expensive
May not be suitable for small projects and
projects with well-defined requirements
Requires a high level of expertise in risk
management
Others…
Practice: Critical Thinking about Process
Giving reasons for your answer based on the type of system being developed, suggest the
most appropriate generic software process model that might be used as a basis for managing
the development of the following systems:
• A system to control anti-lock braking in a car
• A virtual reality system to support software maintenance
• A university accounting system that replaces an existing system
• An interactive travel planning system that helps users plan journeys with the lowest
environmental impact
- Group of 3, max 4
- Prepare to present the reasoning for your choices