The Spiral Model and Risks

advertisement
“You should use iterative development only on
projects that you want to succeed.”
− Martin Fowler
Barry W. Boehm, “A Spiral Model of Software
Development and Enhancement”. Computer
21(5), pp. 61-72, May 1988
Prof. Software engineering,
Univ. Southern California
Worked at General Dynamics, Rand, TRW
Director of DARPA Information Science
and Technology Office 1989-1992
Fellow of ACM, IEEE
COCOMO cost model, Spiral model, ...
The Basic Force



Code-driven development

“Code-and-fix” approach

No design leads to poor code and frustrated clients
Document-driven development

Waterfall model: each step produces a new document

Requirement for fully developed documents unrealistic
Risk-driven development

Support iterative development

Decide how to proceed by reducing risk of failure
The Spiral Model


Several rounds of development: system
concept, requirements, design
In each round, mitigate risks

Define objectives of part you are doing

Map alternatives for implementation




Recognize constraints on theseWhat
alternatives
you actually
depends
on
Use prototyping, analysis, etc. todo
gain
necessary
the biggest
knowledge and reduce risk
remaining risk
Plan the next step
At the end, perform sequence of coding, testing,
and integration
Using the Spiral

Start with hypothesis that something can be done

Round 1: concept and lifecycle plan

Round 2: top level requirements




Additional rounds: preliminary design, detailed
design
May go back and redo previous round if needed
If the evaluation at some stage shows that it won't
work then stop
At the end you have a workable design that
addresses all risks – go on to coding
Risks

Developing software is fraught with uncertainty

Uncertainty implies risk

This needs to be quantified:
RiskExposure = Probability x Loss

Can be used to chose between alternatives:
select the one where the expected exposure is
smaller
Barry W. Boehm, “Software Risk Management: Principles and Practices”.
IEEE Software 8(1), pp. 32-41, Jan 1991
Risk Management
identification
assessment
what can go wrong
checklists, verify assumptions
analysis
how, implications (cost models)
prioritization
based on exposure
Risk
management
planning
avoid or reduce (spiral)
resolution
control
find appropriate alternatives
prototypes, analysis, simulation
monitoring (top 10)
fixed issues stay fixed
Milestones

In waterfall model there are many milestones
This is too rigid and sequential Make sure we
know what
we want
But there are three really important
ones:
Elaborate
to do,
and thatonit
 Life-cycle objectives
Prepare
forwill
the
how
things
can
be
done
transition
be builtto the
 Life-cycle architecture
client in terms of
 Initial operational capability
site and training


(these foreshadow the unified process)
Barry W. Boehm, “Anchoring the Software Process”.
IEEE Software 13(4), pp. 73-82, Jul 1996
Milestones

Milestones are not (necessarily) documents!


Not a fully specified spec or architecture, but a
framework that will evolve
For example, important interfaces must be specified
precisely, but user interfaces can be a prototype

Articulation of feasibility and rationale are important

Agreement of stakeholders is crucial
Tom Gilb
Principles of Software Engineering Management
Addison Wesley, 1988
Born in the USA
Moved to UK to study
Fell in love, moved to Norway
Worked for IBM for 5 years
Independent consultant with son Kai
www.gilb.com
EVO
• Short for Evolutionary Delivery, chapters 7 and
13 in the book
• “Arguably the best systems engineering project
management method. However, it is also
probably the least known and the least
discussed”
• Core idea:
Deliver value to stakeholders early and often
EVO
• Iterative and incremental
• Deliver in small parts, instead of big bang at the end
(note: not only develop in parts, but actually deliver)
EVO
• Iterative and incremental
• Deliver in small parts, instead of big bang at the end
(note: not only develop in parts, but actually deliver)
• Each iteration is like a waterfall
• Analysis, design, build, test
• Small scope and fast turnaround
• Each iteration must give customer some value
• Prioritize according to maximal value for minimal cost
• Don’t over-plan
EVO
The Norwegian mountain survival principle:
You need never be ashamed of turning back in
time
The juicy bits first principle:
If you deliver the juiciest bits of the project first,
they will forgive cost and budget overruns
The mountain goat principle:
Take one step at a time up the slippery
mountain, and make sure each hoof is on solid
ground first
Prioritization
1. Divide functions into “urgently needed”, “needed
soon”, and “needed later”
2. Divide urgent functions into high/low political value
and high/low economic value
3. Divide high-value functions into low/high
implementation cost
4. Divide low-cost functions into fast implementation or
slower implementation
5. Divide fast implementation into low/high risk of failure
6. Implement low-risk, fast, low-cost, high-value, urgent
function
7. Repeat, monitoring and learning from mistakes
Planning
• Need a general idea of where you want to go
• But not a detailed plan for the whole way
• inflexible
• Wasted effort
• Analogy of road trip from London to Rome
• At each step, plan only that step
Contracts
• Conventionally pay for work
• Millions of dollars paid for work that led to failure
• No incentive to deliver working software
• “No cure no pay”
• Pay for delivered functionality
• Incremental payments match incremental
development
• Incentive to produce working software
Additional Emphases
• Don’t forget non-functional requirements
• Quality attributes such as performance
• Resource attributes such as storage space
• Providing this can be more costly than the basic
functionality
• Everything can and should be quantified
• Break it down into components
• Find the relevant scale for each one
Example: Ease of Access
Perspective
• What projects can benefit from EVO?
Slide from presentation about NSA system leaked by
Edward Snowden, 2013
Download