Difference between Waterfall Model, Incremental Model and Spiral Model

Waterfall 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.

Incremental Model:

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.

Spiral Model:

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:

ParameterWaterfall ModelIncremental ModelSpiral Model
1. Handle Large ProjectNot AppropriateNot AppropriateAppropriate
2. Detailed DocumentationNecessaryYes, but not muchYes
3. CostLowLowExpensive
4. RiskHighLowMedium
5. Time-frameVery longLongLong
6. TestingAfter completion of coding phaseAfter every iterationAt the end of the engineering phase
7. FrameworkLinearLinear+IterativeLinear+Iterative