The software life cycle should align with the company’s QMS and should be maintained and kept up to date as new ways of working are developed.

Over the years, the software life cycle model has evolved.

Initially, it was ad hoc and the initial standard for models evolved into what’s now known as the “waterfall” model.

In essence, each of the ‘nodes’ in the model was a fairly distinct phase that was completed before the next phase started.

A typical waterfall model has the following phases:

  • System Engineering
  • Analysis
  • Design
  • Code
  • Testing
  • Maintenance

There were rational reasons for this model (computing time was expensive, loading programs was not trivial, etc.).

This overall approach didn’t play out all that well since software is open to constant change.

Iterative / Agile Approach

Subsequent models evolved as computing, in general evolved.Today, most development models are some form of an iterative or agile approach.

Define (requirements) a little, design a little, code a little, test a little and then repeat until you have a working system.

Fundamentally, it’s a bunch of little waterfalls.

Let’s now overlay one representation of the life cycle model with some process controls.

The following diagram brings out a few key points that we’ll address with the comparison between agile and waterfall.