Title: Software Life Cycle Analysis
1Software Life Cycle Analysis
2Why Planning?
- Streamline project
- Improve development speed
- Improve quality
- Improve project tracking and control
- Improve client relations
3Inappropriate or Lack of a Lifecycle Model
- Slow work
- Repeated work
- Unnecessary work
- Frustration
4Lifecycle Models
- Pure Waterfall
- Modified Waterfalls
- Spiral
- Code-and-Fix
- Evolutionary Prototypes
- Staged Delivery
- Design-to Schedule
- Extreme Programming Life Cycle
5Pure Waterfall
- Orderly sequence of steps
- Review at the end of each phase
- Discontinuous phases
6Waterfall
Rapid Development, 1996
7Waterfall Benefits
- Finds errors in early stages
- Minimizes planning overhead since it can be done
up front - Structure minimizes wasted effort, so it works
well for technically weak or inexperienced staff
8Waterfall Disadvantages
- No tangible results until the end
- Inflexible
- Excessive documentation
- Backing up to address mistakes is difficult
9Waterfall Summary
-
- - performs well for products with clearly
understood requirements - - it's weaknesses frequently make it inadvisable
when rapid development is needed. In those cases,
modified models may be more effective.
10Modified Waterfalls
- Waterfall with Subprojects
- Waterfall with Risk Reduction
11Waterfall With Subprojects
Rapid Development, 1996
12Waterfall With Subprojects Benefits
- Logically independent subsystems
- Each subproject can proceed at own pace
13Waterfall With Subprojects Disadvantages
- Unforeseen interdependencies
14Waterfall With Risk Reduction
- Risk-reduction spiral at top
Rapid Development, 1996
15Waterfall With Risk Reduction Benefits
- Reduce risk
- Best of Waterfall and Risk Reduction models
- Not limited to requirements
16Spiral (Cinnamon Roll)
- Risk-oriented
- Miniprojects
- Iterations
- Determine objectives, alternatives, and
constraints - Identify and resolve risks
- Evaluate alternatives
- Develop deliverables
- Plan the next iteration
- Commit to an approach for the next iteration
17Spiral (Cinnamon Roll)
Rapid Development, 1996
18Spiral Benefits
- Management control
- Early indication of fatal risks
- Flexible
19Spiral Disadvantages
- Complicated
- Requires attentive, and knowledgeable management
20Possible Applications
- High risk projects
- Poorly understood requirements
- Poorly understood architecture
- Potential performance problems
- Problems in the underlying technology
- Combine with other lifecycle models
- Terminate with waterfall or other lifecycle
- Incorporate other lifecycle models as iterations
21Spiral Summary
-
-
- - it's beneficial to run a series of
risk-reduction iterations which can be followed
by a waterfall or other non-risk-based lifecycle -
22Code-and-Fix
Rapid Development, 1996
23Code-and-Fix Benefits
- No overhead
- Requires little expertise
24Code-and-Fix Disadvantages
- No means of assessing progress
- No quality management
- No risk management
25Possible Applications
- Small proof-of-concept programs
- Short-lived demos
- Throwaway prototypes
26Evolutionary Prototyping
- Develop system concept as the project progresses
- Begin with the most visible aspects
- Prototype
Rapid Development, 1996
27Evolutionary Prototyping Benefits
- Steady, visible signs of progress
- Less documentation
28Evolutionary Prototyping Disadvantages
- Impossible to schedule release
- Excuse to use code-and-fix development
29Possible Applications
- Rapidly changing requirements
- Customer reluctant to commit to requirements
- Do not understand application area
- Strong demand for development speed
30Evolutionary Delivery
- Similar to Evolutionary Prototyping
- Refine version based upon customer feedback
- Emphasizes core of the system
31Evolutionary Delivery
Rapid Development, 1996
32Evolutionary Delivery Benefits
- Can accommodate customer requests
- Allows a degree of midtime changes
- Provides visible results
33Evolutionary Delivery Disadvantages
- Difficult to schedule release
- May lead to Code-and-Fix development
34Design-to-Schedule
- Prioritize features
- Unsure if final release will be reached
Rapid Development, 1996
35Design-to-Schedule Benefits
- Ensure product release for a particular date
- Most important features completed first
36Design-to-Schedule Disadvantages
- Wasted effort specifying unfinished stages
- Could complete one or more stages if time was not
wasted specifying several unfinished stages
37Possible Applications
- Must have product by a specific date
- Unconfident in scheduling abilities
38Design-to-Tools
- Include functionality only if directly supported
by existing software tools
Rapid Development, 1996
39Design-to-Tools Benefits
- Maximum functionality vs. time
- Can be combined with other lifecycle models
- Initial spiral
- Throwaway prototype
- Staged delivery
- Evolutionary delivery
- Design-to-schedule
40Design-to-Tools Disadvantages
- Less control
- Unable to implement all features
- Unable to implement features as intended
- Dependent on commercial software producers
41Possible Applications
- Exceptionally time-sensitive projects
42Extreme Programming
43User Stories
- written by the customers as things that the
system needs to do for them - in the format of about three sentences of text in
the customers terminology without techno-syntax
44Release Plan
- create iteration plans for each individual
iteration. - estimate each user story in terms of ideal
programming weeks - estimate user stories velocity
45Spike solutions
- is a very simple program to explore potential
solutions - figure out answers to tough technical or design
problems - helps to estimate project velocity
46Iteration
- During an iteration the user stories selected
during the iteration planning meeting will be
translated into acceptance tests.
47Acceptance Tests
- The customer specifies scenarios to test when a
user story has been correctly implemented - No tests passed no progress
- A user story is not considered complete until it
has passed its acceptance tests
48Small Releases
- Small units of functionality can be released into
the customer's environment early in the project -
that gives valuable feedback
49Choosing An Appropriate Lifecycle
- How well are requirements understood
- How well is system architecture understood
- How much reliability is needed
- How likely are future revisions
- How much risk
- Need to make midcourse corrections
50Choosing An Appropriate Lifecycle (cont.)
- Need to provide visible progress to customers
- Need to provide visible progress to management
- How sophisticated is the model
51Strengths Weaknesses
Rapid Development, 1996
52Strengths Weaknesses (cont.)
Rapid Development, 1996
53Questions?