Software Processes2
Software Processes2
System and
software design
Implementa tion
and unit testing
Development System
and integ ration validation
Agile Methodologies
Extreme programming
• An approach to development based on the
development and delivery of very small
increments of functionality.
• Relies on constant code improvement,
user involvement in the development team
and pairwise programming.
• Extreme programming is an approach to
development based on the development and delivery
of very small increments of functionality. It relies on
constant code improvement, user involvement in the
development team and pair wise programming.
• Scrum involves teams working together in
development. Their work in broken down into actions
and can be completed within sprints(iterations).
Rechecking and planning is down daily (daily
scrums). Development in XP is iterative and flexible.
Hence widely used these days.
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
and add new features as proposed by the
customer.
• Throw-away prototyping
– Objective is to understand the system
requirements. Should start with poorly understood
requirements to clarify what is really needed.
Evolutionary development
Concurr ent
acti vities
Initial
Specification version
Outline Intermedia te
Development versions
description
Final
Valida tion 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 delivery;
– Spiral development.
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
Deter mine objecti ves,
Evalua te alterna tives,
alterna tives and
identify, resolv e risks
constr aints Risk
anal ysis
Risk
anal ysis
Risk
Oper a-
anal ysis
Pr ototype 3 tional
Prototype 2 protoype
Risk
REVIEW anal ysis Proto-
type 1
Requir ements plan Simula tions , models , benchmar ks
Life-cy cle plan Concept of
Oper a tion S/W
requir ements Product
design Detailed
Requir ement design
De velopment
plan valida tion Code
Unit test
Integ ra tion Design
V&V Integ ra tion
and test plan
Plan ne xt phase test
Acceptance
Service test De velop , verify
ne xt-le vel pr oduct
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.
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.
Incremental development
Phase iteration