Software Life Cycle Models
The "waterfall model", documented in 1970 by Royce was the first publicly documented life cycle model. The model was developed to help cope with the increasing complexity of aerospace products. The waterfall model followed a documentation driven paradigm. The next revolutionary new look at the development lifecycle was the "spiral model", presented by Boehm in 1985. The spiral model is focused on risk management.
Life cycle models describe the interrelationships between software development phases.
The common life cycle models are:
Because the life cycle steps are described in very general terms, the models are adaptable and their implementation details will vary among different organizations. The spiral model is the most general. Most life cycle models can in fact be derived as special instances of the spiral model. Organizations may mix and match different life cycle models to develop a model more tailored to their products and capabilities.
- spiral model
- waterfall model
- throwaway prototyping model
- evolutionary prototyping model
- incremental/iterative development
- reusable software model
- automated software synthesis
A software life cycle model depicts the significant phases or activities of a software project from conception until the product is retired. It specifies the relationships between project phases, including transition criteria, feedback mechanisms, milestones, baselines, reviews, and deliverables. Typically, a life cycle model addresses the following phases of a software project: requirements phase, design phase, implementation, integration, testing, operations and maintenance. Much of the motivation behind utilizing a life cycle model is to provide structure to avoid the problems of the "undisciplined hacker".
The spiral model is the most generic of the models. Most life cycle models can be derived as special cases of the spiral model. The spiral uses a risk management approach to software development. Some advantages of the spiral model are:
- defers elaboration of low risk software elements
- incorporates prototyping as a risk reduction strategy
- gives an early focus to reusable software
- accommodates life-cycle evolution, growth, and requirement changes
- incorporates software quality objectives into the product
- focus on early error detection and design flaws
- sets completion criteria for each project activity to answer the question: "How much is enough?"
- uses identical approaches for development and maintenance
- can be used for hardware-software system development
The least flexible and most obsolete of the life cycle models. Well suited to projects that has low risk in the areas of user interface and performance requirements, but high risk in budget and schedule predictability and control.
Throwaway Prototyping Model
Useful in "proof of concept" or situations where requirements and user's needs are unclear or poorly specified. The approach is to construct a quick and dirty partial implementation of the system during or before the requirements phase.
Evolutionary Prototyping Model
Use in projects that have low risk in such areas as losing budget, schedule predictability and control, large-system integration problems, or coping with information sclerosis, but high risk in user interface design.
The process for constructing several partial deliverables, each having incrementally more functionality.
Automated Software Synthesis
This process relies on tools to transform requirements into operational code. Formal requirements are created and maintained using specification tools. This is an active research area, and practical tools for this approach are yet to be developed.