Jan 8, 2009

The Rise and Fall of Waterfall Development

The Waterfall Development model is something we all know and loathe.  Thankfully in recent years we’re seeing the industry slowly turning away from this model and moving back to the iterative development models used in the 1950’s, before the rise of waterfall.   What’s ironic about waterfall development is that it’s creator (Winston Royce) never actually intended it to be a model for software development!

Royce says this in the paper where the model is shown: “I believe in this concept, but the implementation described above is risky and invites failure” and he explicitly mentions that changes can cause anything up to a 100% overrun since it may involve going right back to the drawing board.  He then goes on to evolve that model and introduce safeguards to minimise the risks of change.

So how did this initial model turn into the “One True Way” of software development?

First consider that Royce’s paper was published in an IEEE publication – IEEE is a well respected industry body and anything they publish is going to immediately have substantial respect.  But now consider the background of the author.  To quote again: “I have had various assignments during the past nine years, mostly concerned with the development of software packages for spacecraft mission planning, commanding and post-flight analysis.”  He was working at NASA in the hey-day of the space industry!  The whole world was looking at everything these guys did and reading it as gospel!  After all, these were the people who managed to put man on the moon and bring him back again using nothing more than a tin can, some electronics, a couple of goldfish bowls sewn into to some silver jumpsuits and one freakin’ great big rocket!  Of course people were going to listen to what he said!

Tarmo Toikannen said this about what happened next:

If you look at the scientific articles on software engineering that discuss the waterfall, they all cite Royce’s article. In other words, they’re saying something like “The waterfall is a proven method (Royce, 1970).” So they base their claims on an article that actually says the opposite: that the model does not work.

This is how science (unfortunately) often works - researchers just cite something, because everyone else does so as well, and don’t really read the publications that they refer to. So eventually an often cited claim becomes “fact”.

But why did so many people reference the broken model?  You might laugh at this, but it’s probably because the model shown was the first diagram in the article.  Instead of looking at the other diagrams to see how the broken model is then evolved into the model that Royce finally proposes they just copied the first image they saw and went from there.

mmmOkay.  But that still doesn’t explain everything.  Why did a model that those in the real world knew didn’t work gain so much traction?  Well, you can thank the US Military for that one – in fact you can specifically thank the geniuses who wrote DOD Standard 2167 – a standard which was not only waterfall based but also heavily documentation focussed.  As soon as the military decided all software should be written to that standard, it became the de-facto for all other large scale development.  You can imaging the thinking “If it’s what the military uses to get high quality software then shouldn’t we do the same?”.  The problem was further compounded when other countries followed the Don’t Reinvent The Wheel principle and adopted the existing US standard for themselves.  Now it was a global standard.

Thankfully the US Military amended their standard in 1995 and multiple times thereafter but by then the damage had been done.  Waterfall was the only thing being taught by academia and the industry was too earning much money by doing things poorly to quickly change to something that made sense.

Only now are we seeing a strong resurgence of the working, iterative, incremental development model of the 1950’s – and it’s got a name now: Agile.

 

P.S. If you want to read something a little more in-depth on this subject have a read of Iterative and Incremental Development: A Brief History (2003).

 

References:

http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf

http://tarmo.fi/blog/2005/09/09/dont-draw-diagrams-of-wrong-practices-or-why-people-still-believe-in-the-waterfall-model/

http://www2.umassd.edu/SWPI/xp/articles/r6047.pdf

http://en.wikipedia.org/wiki/Waterfall_model

http://www.product-lifecycle-management.com/download/DOD-STD-2167A.pdf

http://www.stsc.hill.af.mil/crosstalk/1995/04/Changes.asp

2 comments:

  1. Hey interesting stuff!!!

    I like how most of the books on SLC, CMMi, Agile, Software Methodologies and Engineering in general start giving us all the statistics on how bad, late and costly SW projects are.

    Even with all the problems our industry had (have), we have been able to support other industries and grow, so we can still say that the end result is not that bad.

    How would the world be if we've got it right from the beginning? Did we got it right this time?

    We have gone through so many changes, new paradigms and solutions (I wasn't there, but I heard) and still I don't think we're there, but we're getting better.

    ReplyDelete
  2. Good post.

    Just yesterday I have finished a simple cartoon that explains all this stuff: http://www.youtube.com/watch?v=X1c2--sP3o0

    ReplyDelete