Agile development does not have much in common with the waterfall model. As
of 2004, the waterfall model is still in common use. The waterfall model is the
most predictive of the methodologies, stepping through requirements capture,
analysis, design, coding, and testing in a strict, pre-planned sequence.
Progress is generally measured in terms of deliverable artifacts�requirement
specifications, design documents, test plans, code reviews and the like.
The main problem of the waterfall model is the inflexible nature of the
division of a project into separate stages, so that commitments are made early
on, and it is difficult to react to changes in requirements. Iterations are
expensive. This means that the waterfall model is likely to be unsuitable if
requirements are not well understood or are likely to change radically in the
course of the project.
Agile methods, in contrast, produce completely developed and tested features
(but a very small subset of the whole) every few weeks or months. The emphasis
is on obtaining the smallest workable piece of functionality to deliver business
value early, and continually improving it/adding further functionality
throughout the life of the project.
Some agile teams use the waterfall model on a small scale, repeating the
entire waterfall cycle in every iteration. Other teams, most notably Extreme
Programming teams, work on activities simultaneously.