Life Cycle Models
Summary
Software Lifecycle
Software lifecycle := a sequence of decisions that determine the history of your software
The process model basically answers the questions, “What should I do next?” and, “How long should I do it for?”
There are many ways you can make these decisions, so its best to understand which models are good for which situations
Traditional Software Phases
- Requirements Engineering
- Design
- Implementation
- Verification and Validation
- Maintenance
Requirements Engineering
The cost of correcting an error is based on the subsequent decisions that are based on it.
Requirements Engineering := the process of establishing the needs of stakeholders that are to be solved by software.
- Elicitation
- Collection of requirements from stakeholders and other sources
- Requirements Analysis
- The study of the collective requirements
- Specification
- Collective requirements are represented, organized, and saved so that they can be shared
- Validation
- Ensure they are complete, consistent, no redundancies
- Management
- Accounts for changes to requirements during lifetime of the project
Design
Software requirements are analyzed in order to produce a description of the internal structure and organization of the system.
Series of “Design Activities”
- Architectural design
- Abstract specification
- Interface design
- Component design
- Data structure
- Algorithm design
Build “Design Products”
- System structure
- Software specification
- Interface specification
- Component specification
- Data structure specification
- Algorithm specification
Implementation
Create actual software based on design specifications.
There are four principles that can affect how software is created
- Reduction of Complexity
- Anticipation of Diversity
- Structuring for Validation
- Conformity to Standards
Verification and Validation
Checks that software meets spec and fulfills its intended purpose
Validation := answering the question, “Did we build the right system?”
Verification := answering the question, “Did we build the system right?”
Maintenance
Deploying system, handling environment changes, updating libraries, RFEs, bug reports
- Corrective maintenance
- Perfective maintenance
- Adaptive maintenance
Regression testing := testing the software after it has been modified to ensure the changes perform as expected
Software Process Model
How do we put the above activities together to make software?
Software Process/Lifecycle models determine the order of activities and determine transition criteria
Waterfall
Sequential ordering of processes
- Software concepts
- Requirements analysis
- Architectural design
- Detailed design
- Coding and debugging
- System testing
At the end of each phase, there is a review to determine if the system is ready to advance to the next phase
The waterfall process performs well for software that has a stable product definition
Pros | Cons |
---|---|
Find errors early | Inflexibility |
Spiral
Created by Barry Boehm
Incremental risk oriented model
Main phases:
- Determine objectives
- Identify and resolve risks
- Dev & Test
- Plan the next iteration
Pros | Cons |
---|---|
Risk reduction | Inflexibility |
Functionality can be added | Risk analysis requires specific expertise |
Software is produced early | Highly dependent on risk analysis |
Complex |
Evolutionary Prototyping
Four main phases
- Initial Concept
- Design and Implement initial prototype
- Refine prototype until acceptable
- Complete and Release prototype
Continual refinement
Start with working on what you understand
Pros | Cons |
---|---|
Immediate feedback | Difficult to plan |
Can be an excuse to use a “code then fix” approach |
Rational Unified Process
Based on UML
Iteration on four phases
- Inception
- Elaboration
- Construction
- Transition
Agile
A group of highly iterative methods, like Test Driven Development (TDD)
TDD has three phases
- Red
- Green
- Refactor