The Spiral Model of Software Development

Thirty years after the waterfall model was introduced to the world, Barry Boehm wrote the article A Spiral Model of Software Development and Enhancement. In it, Barry went on to lay the groundwork of what we now know today as the spiral model, a method of software development that combines flexibility and framework in such a way as to greatly increase a project’s productivity.

The Spiral Model

Quite simply, the spiral model takes the controlled transitional phases of the waterfall model and introduces them to a cyclical workflow. This allows a software development project to be incrementally released or updated, rather than needing a whole phase completed before moving onto the next one.

An visual guide to the spiral model.

From the center, the spiral goes through the following phases:

  • Discuss objectives and constraints on the project’s new iteration.
  • Research alternatives and identify/resolve risks.
  • Develop and verify the project for this iteration.
  • Plan next iteration.

Because of these four steps, the spiral model emphasizes risk management, as the cyclical workflow helps to identify major risks, keep them under control, and then continue with the project. Each time around the cycle expands upon what came before, always working toward a greater and more effective outcome.

Spiral Model vs. Waterfall Model

Much of the spiral model is based off the waterfall model. In fact, the spiral model uses essentially the same phases in the same order as the waterfall model, though the spiral model’s are separated by stages of planning, risk assessment, and simulations.

Also, the spiral model only requires documentation to be produced when the content reflects a necessary point in a project’s process. This is very much unlike the waterfall’s emphasis on documentation before the project even begins, which can keep a project from starting for weeks, months, or even years, and spiral model documents are seen as works in progress, much like the project itself.

Benefits

The spiral model allows for project elements to be added when they become available. Rather than waiting for a whole phase to complete before moving on, you can finalize one part of the project, run it through the phases, and then add it to the project when appropriate. This reduces the restrictions placed upon programmers.

For projects in which user involvement is key, such as software development for user interfaces, the spiral model allows for early user involvement without needing much completed.

Large or Unstable Projects

Now, one could easily say that the spiral model appears much more effective than the waterfall model based on the above information. And that’s true – but only to a certain extent.

The spiral model works best for large projects requiring multiple teams and multiple iterations, such as software applications or other such multi-year projects. In fact, the spiral model has been used for a some military projects, like the Future Combat Systems program, which came out with a new prototype with each new spiral, about every two years.

Lastly, the spiral model is ideal for projects in which the goals or objectives are unstable, meaning the project must adapt to stress and sudden spikes in workloads. The cyclical nature allows for team members to be directed toward areas of concern as needed, thus ensuring an unstable project can still be contained within a stable, flexible framework.