Traditional method or model of software development
Also encompasses all the essential development phases:
* Requirements analysis
* Design
* Code
* Test
* Maintenance
Explicitly addresses the issue of quality assurance by performing the development process in a ―step-wise refinement‖ method. Each step produces a ―deliverable‖ which embodies the structure or sequential nature of the process. This process naturally focuses on a high degree of customer or stakeholder involvement during the development process In this diagram, ―Communication‖ refers to the Requirements and analysis process, “Planning‖ corresponds to preliminary design and scheduling, “Modeling” is the detailed design, “Construction” refers to code/debug/integration, and “Deployment” is the delivery to the customer and the feedback process.
Software is developed in a series of evolutionary releases
o During early iterations, the release might be a paper model or prototype
o During later iterations, increasingly more complete versions of the engineered system are produced
o The final iteration produces the complete software product
First circuit around the spiral might result in the development of the product specification; might result in a CoDR review by the customer Next iteration might produce a prototype, containing the GUI, for example; the customer might want to see this, so there could be a PDR and/or CDR at this time Third time around might be used to fill in more detailed functionality, and release a preliminary working model Fourth circuit might result in a complete alpha release, which the customer could ―hammer on‖ for a while to test robustness and provide feedback to the solution provider about the product‘s strengths and weaknesses
Fifth iteration might be a beta test, or it could be the final build for initial release (if the previous circuit was satisfactory enough to warrant this) Problem with the spiral model: may not appear controllable to the customer, particularly if the customer is more accustomed to the waterfall model.