Software Development
Process Model
Software Life Cycle Phases
• Requirements, analysis, and design phase.
• System design phase.
• Program design phase.
• Program implementation phase.
• Unit testing phase.
• Integration testing phase.
• System testing phase.
• System delivery.
• Maintenance.
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
Generic software process models
• The waterfall or linear sequential model
Separate and distinct phases of specification and
development
• Prototype model
Requirements are not clear
• Rapid Application Development (RAD) model
High speed adaptation of linear sequential model
Waterfall model
(Winston Royce [Roy70])
Waterfall model phases
• Requirements Gathering (analysis and
definition)
• Planning (Estimation)
• Modelling (Design)
• Construction (Coding and testing)
Integration and system testing
• Deployment (Operation, maintenance,
feedback)
Waterfall model problems
• Inflexible partitioning of the project into
distinct stages
• This makes it difficult to respond to changing
customer requirements
• Therefore, this model is only appropriate
when the requirements are well-understood
V-model
8
Prototyping Model (Paradigm)
Prototype Model
• Requirements are not clear
• Iteration occurs as the prototype is tuned to
satisfy the needs of the customer
• Prototype serves as a mechanism for
identifying software requirements
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
Evolutionary development
Concurr ent
activities
Initial
Specification
version
Outline Intermediate
Development
description versions
Final
Validation
version
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
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
Incremental development
• 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
Incremental Model
Delivery
Analysis Design Code Test
increment #1
Delivery
Analysis Design Code Test
increment #2
Delivery
Analysis Design Code Test
i #3
Calendar time
Incremental Model
• Deliver the core product first
• Add on / refine features
• Provide a platform for evaluation by user
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
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
Spiral model of the software process (Boehm 88)
Determine objectives
Evaluate alternatives
alternatives and identify, resolve risks
constraints Risk
analysis
Risk
analysis
Risk
analysis Opera-
Prototype 3 tional
Prototype 2 protoype
Risk
REVIEW analy sis Proto-
type 1
Requirements plan Simulations, models, benchmarks
Life-cycle plan Concept of
Operation S/W
requirements Product
design Detailed
Requirement design
Development
plan validation Code
Design Unit test
Integration
and test plan V&V Integr ation
Plan next phase test
Acceptance
Service test Develop, verify
next-level product
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
Component Based Development Model
• Suitable for re-usable object oriented
Identify
classes component
• Apply characteristics of spiral model
Construct Lookup
nth inter components
system in library
Put new Exract
components components
in library if available
Build
components
if unavailable
Unified Process
• Work of Ivar Jacobson, Grady Booch and
James Rumbaugh
• use case driven
• architecture-centric
• iterative and
• incremental
Iterative Development Produces an Executable
24
Initial and evolution cycles & Time
25
Rational Unified Process (RUP)
26
Rational Unified Process (RUP)
27
Risk Profiles
28
Reduce Scrap/Rework: Use an Iterative Process
29