Agile vs Waterfall: Deciding Based on the Pros and Cons

Posted in Agile Agile vs Waterfall: The Pros and Cons

The software development life cycle (SDLC) typically involves the same stages, which include requirements gathering, design of the software, coding, testing, deployment and maintenance, regardless of the software company. The framework in which these processes are undertaken can be vastly different across companies, or even within companies where separate projects are being developed. Businesses may change up the order of the stages, combine stages, or allocate more time to certain stages, whatever they feel needs to be done to get the software ready for use in the most efficient manner.

The two most widely-used methodologies are Waterfall and Agile. Each methodology comes with its own set of pros and cons, so companies need to assess their needs and the feasibility of each model when trying to make a decision.

Waterfall Methodology

Also called the Traditional model, the Waterfall model is a structured set of processes where one stage is completed before "flowing" into the next stage, on and on in a linear fashion until each phase is complete. For example, the testing phase will begin after the programming phase has been completed and the test environment has been pushed to the quality assurance (QA) team. QA does not have to sit idle while waiting for testing to begin, as they can start creating test cases from the requirements or setting up test data. In most cases the QA team is not playing an active role in many of the other phases.

The waterfall methodology is not very responsive to change. If the QA team notices a missing feature that was supposed to be designed and coded, it may be too late into the project to implement that feature due to the expense. Making large-scale changes late in the development life cycle is costly, especially when the entire project would have to be started all over again. This can spell doom for cases where the project has been completed and the customer is unhappy with the end product. Waterfall projects need to be as effective as possible during the requirements-gathering phase so that the customer will be satisfied with the product being built. A large amount of planning goes into a Waterfall project, so the advantages that result from the planning process consist of extensive documentation and more accurate estimations and budgets.

Agile Methodology

The Agile methodology was formed as a response to the inadequacies of Waterfall. The most significant difference is that the Agile model follows an incremental process instead of a sequential process. Development and testing tasks can be performed simultaneously in short time periods called sprints, which often last anywhere from one week to one month. Collaboration between development and testing teams is crucial, with both parties encouraged to have frequent communication and the drive to work together to deliver a functional product.

Sprints allow rapid deployment of many smaller projects instead of one large, all-encompassing project being worked on for many months. During and after work on these features has commenced, customers are able to review earlier and more often, and have their feedback implemented without a large cost. Customers may be unsatisfied with the delivered product and requirements may have to change, but Agile maintains a flexibility that allows development to roll with the punches more easily.

Continuous and frequent delivery is one of the main goals of Agile projects. Working software can be implemented in a fraction of the time it takes to deliver software through the Waterfall methodology. However, planning can be problematic in these kinds of projects, making the delivery date hard to estimate as additional projects and sprints are added. Proper documentation can also take a hit since working software is much more of a priority in Agile enterprises.

Characteristics to Consider

                                                                                                                                                       
CharacteristicWaterfallAgile
Flexible response to changing requirements
Adequate time for thorough software testing
Extensive documentation
Clearer planning
Accurate estimation for deadlines and budget determination
Better collaboration & communication between teams
Earliest delivery of working software
Earliest customer feedback