The Waterfall model is the oldest and most widely used model in the field of software development. This model had many advantages like:
Being a linear model, it is very simple to implement
The amount of resources required to implement this model are minimal
Documentation is produced at every stage of the software's development
This makes understanding the product designing procedure, simpler
But ironically it has many disadvantages:
One of the biggest disadvantages being client is not very clear of what he exactly wants from the software. Any changes that he mentions in between, may cause a lot of confusion. If that's the case arises baseline approach is followed, wherein output of one phase is carried forward to next phase.
For example, even if SRS is not well defined and requirements can't be freezed, still design starts. Now if any changes are made in SRS then formal procedure is followed to put those changes in baseline document. Also until the final stage of the development cycle is complete, a working model of the software does not lie in the hands of the client. Thus, he is hardly in a position to inform the developers, if what has been designed is exactly what he had asked for.
Let’s now understand and look in detail where did Waterfall model fail
Waterfall is a Serialized Process. There is strict sequential chain of the project phases. A previous phase has to be completed before starting the next phase.
Planning far in advance - Products no longer match reality by the time they are released
Lack of visibility - Teams don’t realize they are behind schedule until it’s too late Working model can only be seen at end
Project Timeline - Here Timeline is planned at the start.
If one phase is delayed all other phases are also delayed.
Static Requirements - In waterfall approach Requirements cannot be changed or modified in middle. Studies have shown that in larger and complex projects about 60% of the initial requirements are changed throughout the project.
Now as we know problems with Waterfall model, lets how Agile provided solutions for those problems
Serialized Process - Agile has, Iterative approach with tasks broken into small increments.
Planning far in advance - In Agile we Plan for what we know and we have left sufficient allowance in our plans for what we don’t know.
Lack of visibility - Teams don’t realize they are behind schedule until it’s too late. Working model can only be seen at end.
Project Time line - It allows the development effort to get feedback from the customer throughout. Expectations are reset at the beginning of each new iteration based on the previous iteration.
Static Requirements - When we work using Agile methodology, Scope is never closed; Continual reassessment of requirement priorities by the business