In the traditional waterfall model software development approach, the whole project is divided into a number of stages: gathering user requirements, design and documentation, development, testing and deployment. In this approach, it assumes that each stage is 100% complete before the next stage starts. One of the main weaknesses of this approach is that design errors are often not discovered until deployment time. At this time the project is almost complete and the errors are often expensive to recover from. “Observe that it is perhaps 100 times as costly to make a change to the requirements during system testing as it is to make the change during requirements definition.” (Fairley, R., 1985).
Agile methods try to avoid this weakness of “waterfall” by doing iterative development. Each iteration is meant to be short (1-3 weeks) and includes all of the above steps. This guarantees that design errors are discovered at the early stages of development. Feature Driven Development (FDD) is one of the agile software development methodologies that emerged in the last 10 years as an alternative to traditional “waterfall” development.