Difference between Waterfall Model, Incremental Model and Spiral Model
The waterfall model is the oldest paradigm for software engineering. The original waterfall model was proposed by Winston Royce. Among the problem that is sometimes encountered when the waterfall model is applied are:
1. Real projects are rarely following the sequential flow that the model proposed. Although the linear model can accommodate, it does so indirectly. As a result, changes can confuse the project team proceeds.
2. It is often difficult for the customer to state all requirements explicitly. The waterfall model requires this and it has difficulty accommodating the natural uncertainty that exists at the beginning of many projects.
The Incremental Model combines elements of the waterfall model applied iteratively. The incremental Software Process Model releases software as a series of products. The occurrences of the phases are similar to that of the waterfall model but the phases can be repeated in cycles. At the end of each cycle, a deliverable product is obtained. The process will be continued until there is a shortcoming. It is commonly applied as a technique to break a large programming effort into smaller, more manageable components.
The spiral model originally proposed by Boehm. It is an evolutionary software process model that couples the iterative nature of prototyping with the control. It provides the potential for Rapid Development of increasingly more complete versions of the software.
The spiral development model is a risk-driven process model generator that is used to guide multi-stakeholder concurrent engineering of software-intensive systems. A spiral model is divided into a set of framework activities defined by the software engineering team.
Waterfall Model vs Incremental Model vs Spiral Model:
|Parameter||Waterfall Model||Incremental Model||Spiral Model|
|1. Handle Large Project||Not Appropriate||Not Appropriate||Appropriate|
|2. Detailed Documentation||Necessary||Yes, but not much||Yes|
|5. Time-frame||Very long||Long||Long|
|6. Testing||After completion of coding phase||After every iteration||At the end of the engineering phase|