The most commonly used software development model was waterfall model. However, in most of the cases, new functionalities get added, and also earlier requirements may change. The Waterfall model is not structured to accommodate such continuous changes in requirements. Further, the user will not have clarity on the functionality of the product till the product becomes available in its entirety.
In the iterative incremental model, the development starts with a limited number of finalized and prioritized requirements. The deliverable is a working increment of the product. A set of activities ranging from requirements to code development is called an iteration. This is repeated till the product accomplishes the required functionalities.
The user is usually not involved in the development work and it may cause communication gaps resulting in incorrect functionalities. The involvement is positive for the development team, but is demanding on the time of the team and can add delays. Further, any informal requirement changes during an iteration may lead to confusion and may also create scope creeps. With this premise, Agile development came into existence.