What's the difference between incremental software process model, evolutionary model, and the spiral model?

Ahmed picture Ahmed · Oct 9, 2010 · Viewed 47.6k times · Source

I am studying Software Engineering this year and I am little confused about the question in the title.

Both of my professor and the reference ("Software Engineering A Practitioner Approach") differentiates the three titles as different models. However, I can't see obvious difference as their methodologies look the same to me but using different statements to define them. I feel that practically they all represent the same process model.

Can anybody explain the different models better?

Answer

Pascal Thivent picture Pascal Thivent · Oct 9, 2010

Craig Larman wrote extensively on this topic and I suggest his famous paper Iterative and Incremental Development: A Brief History (PDF) and his book Agile and Iterative Development: A Manager's Guide.

Here is how I would summarize things:

Incremental Development

Incremental Development is a practice where the system functionalities are sliced into increments (small portions). In each increment, a vertical slice of functionality is delivered by going through all the activities of the software development process, from the requirements to the deployment.

Incremental Development (adding) is often used together with Iterative Development (redo) in software development. This is referred to as Iterative and Incremental Development (IID).

Evolutionary method

The terms evolution and evolutionary have been introduced by Tom Gilb in his book Software Metrics published in 1976 where he wrote about EVO, his practice of IID (perhaps the oldest). Evolutionary development focuses on early delivery of high value to stakeholders and on obtaining and utilizing feedback from stakeholders.

In Software Development: Iterative & Evolutionary, Craig Larman puts it like this:

Evolutionary iterative development implies that the requirements, plan, estimates, and solution evolve or are refined over the course of the iterations, rather than fully defined and “frozen” in a major up-front specification effort before the development iterations begin. Evolutionary methods are consistent with the pattern of unpredictable discovery and change in new product development.

And then discusses further evolutionary requirements, evolutionary and adaptive planning, evolutionary delivery. Check the link.

Spiral model

The Spiral Model is another IID approach that has been formalized by Barry Boehm in the mid-1980s as an extension of the Waterfall to better support iterative development and puts a special emphasis on risk management (through iterative risk analysis).

Quoting Iterative and Incremental Development: A Brief History:

A 1985 landmark in IID publications was Barry Boehm’s “A Spiral Model of Software Development and Enhancement” (although the more frequent citation date is 1986). The spiral model was arguably not the first case in which a team prioritized development cycles by risk: Gilb and IBM FSD had previously applied or advocated variations of this idea, for example. However, the spiral model did formalize and make prominent the risk-driven-iterations concept and the need to use a discrete step of risk assessment in each iteration.

What now?

Agile Methods are a subset of IID and evolutionary methods and are preferred nowadays.

References