Waterfall and Agile are distinct Software Development Approaches.

The Waterfall model as the name suggests, is a linear approach where the software development process goes in a sequential manner. Development pattern in Waterfall model looks like:

• Analysis, Prototyping and Understanding
• Design and Development
• Application Integration
• Testing and Validation
• Application Maintenance
• Software Product Upgradation

umang_india

On the other side, the Agile approach functions in incremental and iterative manner to software development. In Agile, usually the development is started with just high level understandings of the project, without a concrete plan. There could be change requests accepted at every point of reviews during milestones. This gives the liberty to the Customer to request changes during intermediate milestones, so as to avoid issues and design changes after delivery. Over the time this approach has made substantial popularity in the last couple of years.

Whatever software development methodology you may plan to use, may it be Agile or Waterfall, the important thing you should have is ‘High Level Design Document’ with project scope of work, basic UI and DB designs and main functionality.

agile_software_development_approach

Let us explore more of waterfall model…

In Waterfall model, more stress is given on the detailed project plan and therefore before beginning any kind of design or development there needs to be a clear understanding of the scope of work and plan of execution. Since the scope of work and plan is quite clear, the cost and time estimates are more accurate, which definitely tends to satisfy customers. The customer knows what to expect. They’ll have an idea of the size, cost, and timeline for the project. They’ll have a definite idea of what their program will do in the end.

Waterfall Model is more stable and secure because they are so plan oriented. The initially made plan is referred at every stage in the development, which is also carried out with meticulous documentation at every stage. This is advantageous when a project team member is unavailable, his/ her replacement can easily handle the tasks in the absence.

The Waterfall Model is very rigid and inflexible. It relies heavily on initial requirements. However, if these requirements are faulty in any manner, the project is doomed. Altering the project design at any stage in the project can be a total nightmare and once a stage has been completed, it is nearly impossible to make changes to it. So, if you’re planning to use Waterfall, you will need to gather all of the requirements upfront. In addition, the problem with the Waterfall method is that feedback and testing are deferred until very late into the project. Also, if the end-users and customers request changes during any stage in between, then it can impact the project time and cost substantially. So for this the customer should be educated about the feedback of impact analysis.

In Contrast, Let us understand the Agile Model…

Agile is an extremely flexible model, promoting adaptive planning and evolutionary software development. This model is advantageous in project environments where lots of changes request needs to be handles rapidly and effectively. Customer is involved at every stage for inputs and feedback at regular intervals or milestones as delivery points. The testing and reviews at the end of each milestones ensures that the bugs are caught and taken care of in the development cycle. They won’t be found towards the end of the project.

Agile is also an excellent option for experimental software design and development. Agile can be especially beneficial in situations where the end-goals of projects are not clearly defined. For example, if you are working with a Customer whose needs and goals are a bit hazy, it is probably worthwhile to employ the Agile method. The customer’s requirements will likely gradually clarify as the project progresses, and development can easily be adapted to meet these new, evolving requirements. Because the Agile methodology allows you to make changes, it’s easier to add features that will keep you up to date with the latest developments in your industry.

Agile method also facilitates interaction and communication. Because interaction among different development team and Customer is the key, it is especially conducive to teamwork oriented environments. Different developers work on different modules throughout the development process and then work to integrate all of these modules together into a cohesive piece of software at the end of the project.

Though highly flexible, Agile simply doesn’t have the planning that the Waterfall method has and this does present some limitations. Agile projects tend to be hard to predict, from timelines to budgets. Without a concrete plan, everything remains a bit vague and nebulous.

In addition, as previously discussed, active user involvement and intense collaboration are required throughout the Agile process. This method has very less documentation carried out, as more stress is just on communication. The adaptation to every change request during the milestone could drag the project, harming the customer’s deadlines or budget.

agile-waterfall-success-failure-rates

When should you use waterfall methodology?

1. When there is a clear picture of what the final product should be.

2. When customers won’t have the ability to change the scope of the project once it has begun.

 

When should you use Agile methodology?

1. When rapid production is more important than the quality of the product.

2. When customers will be able to change the scope of the project.

3. When there isn’t a clear picture of what the final product should look like.

 

References:

https://www.udemy.com/blog/agile-vs-waterfall

http://www.base36.com/2012/12/agile-waterfall-methodologies-a-side-by-side-comparison

http://pragmaticprogramme.com/agile-vs-waterfall

https://zenexmachina.wordpress.com/2017/05/30/prince2-processes-vs-agile-development-methodologies/