The spiral model is most famous software processes. It has been proposed by Barry Boehm back in 1986 (originally) in an attempt to reduce the risks associated by waterfall model i.e. evaluation/feedback from the customer. The process aims to produce a prototype (or a tangible work product) after every cycle where a cycle is defined by the line going around all 4 squares: from defining objectives to planning the next iteration. The picture above (from Wikipedia) starts with identifying risks rather than determining objectives - this is rather odd.
Each cycle attempts to address one or more major risks. After all major risks have been addressed, it terminates as a waterfall model with detailed design, implementation and testing. Each cycle consists of 4 phases:
- Determining Objectives
- Identifying and resolving risks
- Development and test
- Planing the next iteration
The process has a number of advantages:
- Manages the risk - there is an entire phase dedicated to ensuing that you are developing the most critical pieces of software first
- Manages change - the process is divided into cycles and therefore it is possible to evaluate and gain feedback from the client
- Estimates are more realistic with time -
- Start working earlier
- Suitable for large and complex projects
In practice, the spiral model displays the following 6 characteristics (or invariants):
- All Work Products (artifacts) concurrently - without defining them concurrently you put your project at risk. This is caused by very limited amount of information.
- All quotients must be addressed - if you skip you are probably making assumptions about the project.
- Risk determines the effort - The amount of time on activity should be based on the amount of risk involved in carrying that activity out - i.e. use risk data to support your decision
- Risk determines the detail - the amount of consideration (e.g. alternative designs) required to produce the artifact
- Each iteration should produce a tangible work product.
- Focus on the system and its life cycle
There are few disadvantages of using the spiral model. Firstly, the number of cycles is uncertain as it largely depends on the risk analysis. The analysis reduces the risk but generally requires a lot of expertise and data i.e. ridiculously expensive. The process also doesn't really tell anything about the speed of evolution: it depends on the risk. Overall, it seems to be a little bit of an overkill for small projects.