Nowadays, this question seems to figure at every technical interview that that I been involved with (at either side of the table). What would you choose – Waterfall model or the Iterative approach?
The correct answer – it depends.
The usual answer – some mumbling about extreme programming (followed barely disguised rant on how one was forced to use it).
Classically, in development we use either the Waterfall or the Iterative approach. While the Iterative approach is more adept at accommodating requirements change, the Waterfall model treats changing requirements as the exception. However, this does not preclude either model or approach from accommodating change.
In the waterfall mode – There is a long requirements definition and approval phase (the elusive sign off), followed by the subsequent life cycle steps (design / development / testing / deployment), and there is one huge grand ship date (the famed / dreaded go-live date). The requirements are considered sacrosanct post the sign-off and any change is expensive.
In the iterative mode – The development cycle is actually a series of sequential and repeated short release cycles. This lends itself to injecting changes to the application without disastrously affecting the bottom line.
While the iterative approach may seem the obvious choice; a panacea for all our problems, the choice isn’t really that easy. See Bill Walton’s take on iterative versus waterfall in Computer World.