Different organizations follow different approaches for their software development life cycle. It might seem strange but you will always feel a sense of rivalry between proponents of waterfall methodology and agile methodology. Although agile is taking over the industry but one cannot deny a few strengths of waterfall.
As a manager, you might find yourself in a position where you ask yourself ‘Which approach should I go for – waterfall or the agile?’
A choice with a lot of consequences
Overwhelmed by the popularity of agile, you might want to adopt agile and transform your waterfall organization into agile.
There are several steps you can take to transform your development model from waterfall to agile. But since old habits die hard, you can also retain the waterfall approach and simply make agile work in your waterfall organization.
If you don’t want to completely switch to one approach and discard another, you are definitely making a wise choice by keeping the best of both approaches. There are several options to make waterfall and agile get along, so to speak.
These ‘hybrid’ methodologies are designed according to similar principles – combining the strengths of both waterfall and agile into one approach.
In this article, I will discuss the advantages and disadvantages of waterfall and agile methodologies. Finally, we will take a look at the hybrid methodologies available for software development that enable waterfall methodology and agile to work hand in hand.
Why make Waterfall and Agile methodology get along?
The most challenging part of starting a new project for any test manager or test lead in a start-up, small businesses or an enterprise is indeed to plan the project.
Traditionalists believe in waterfall methodology as a well-established practice that depends on rigorous documentation and rigid governance. However, agile has made a lot of in-roads in modern teams as it is more adaptable to the changes which often make deliverables quite unpredictable.
A single methodology cannot be the only hammer to nail all the solutions. The Agile-Waterfall Hybrid is often considered a smart approach for adopting both methodologies without compromising too much, essentially utilizing the best of both worlds.
The main aim of the hybrid methodology is to enable teams to define requirements and adapt to changing requirements through continuous feedback and delivery. The hybrid method retains the clarity and tracking system of waterfall method, while embracing the adaptability and flexibility of agile.
“A single methodology cannot be the only hammer to nail all the solutions.”
Before we get into how a combination of agile and waterfall models work, let’s review how each of them works individually.
Agile methodology uses an iterative process where all the teams and collaborate and client provides feedback throughout the entire process of developing a new software product.
In an agile methodology, a large amount of work is divided into smaller chunks called ‘sprints’. A sprint is developed and tested in a parallel fashion. This means that testing is not a separate phase but an integral part of the development process. The main aim of the testing team is to ensure early identification of bugs, issues and defects.
The main benefit of agile methodology is that the product is delivered to client in a shorter span of time.
Advantages of Agile methodology
- The client is involved throughout the project, and can give feedback to tweak the product and its features as best suitable for the business and the client. At the end of every iteration, product is verified by the client so that there are no gaps between requirement and implementation.
- Testing of each sprint is done while it is underway, so it is considered more efficient. Each feature is fully tested and integrated within the entire system and regression testing is done automatically with each feature added.
- Change requests are easier to implement as the agile methodology follows an adaptive planning method, with plenty of room to accommodate change requests as they come.
- Agile does not spend time on extensive documentation which eventually becomes outdated and a burden on the team, so you get more time to design and execute test cases. This does not mean ‘no documentation needs to be used at all’; rather, agile supports minimal but essential documentation.
- Agile allows frequent monitoring by clients that sometimes lead to requirement changes and would only dramatically increase the out-of-scope features resulting in scope creep.
Disadvantages of Agile methodology
- Agile is all about adaptability to frequent changes, so it requires experience and quick decision-making ability to accept some changes and postpone other changes for the next sprint.
- The agile methodology does not work well if the client or the team does not understand agile methodology and could not keep up with the fast-paced environment. Agile is considered a risk for a team which lacks experience.
Waterfall is a traditional approach which emphasises the sequential movement of a project and consists of finite phases, where the previous phase must be reviewed and verified before moving on to the next one.
An independent quality assurance team defines test cases to evaluate whether the product fully or partially satisfies the requirements outlined. The test team is supposed to execute these test cases and validate the developed product or program.
Advantages of Waterfall methodology
- If the requirements of the project are well-defined, the waterfall methodology would be the best to follow. It provides a rigid model where every phase ends with a quality deliverable, which is then meticulously reviewed.
- Well-documented requirements, functional specification, technical specification and a technical architecture are considered as some of the best practices in waterfall methodology.
- QA team gets ample amount of time to understand the requirements and create detailed test cases. A detailed test cases enables QA to execute the test case correctly without any ambiguity.
- The waterfall model can aid efficient knowledge transfer when team members are dispersed in different locations by investing dedicated time and effort in understanding requirements and documentation.
- If the system is tested after complete development and a major bug is detected, the entire system needs to be rebuilt and the testing team is stalled till the bug is fixed.
Disadvantages of Waterfall methodology
- The testing teams often get a lesser time frame to complete test execution as more time is spent during initial stages for detailed documentation.
- There will be unexpected delays if the requirements are not clear at the beginning of the project which is the case in most of the larger projects. Only an outline of the requirement would be available initially and some requirements can only be developed after a few trial and errors.
- A bug identified at later stage can cost up to 60 percent more to get fixed, as compared to its cost when identified at an earlier stage.
Avoiding unnecessary drama and delays with hybrid models
Weighing the pros and cons of each methodology usually leads one to start considering a solution that combines the advantages of both according to the needs of the project.
Waterfall methodology could adopt the flexibility of agile methodology, while agile would certainly benefit from a systematic approach like in waterfall.
Here are two popular hybrid methodologies that are used in the software industry.
One model that makes waterfall and agile get along is the Water-scrum-fall model.
Business analysis and release management teams follow the traditional waterfall methods, while the development and testing team scrum methods in a limited way.
Water-scrum-fall method employs the traditional waterfall approach for planning, requirements gathering, budgeting and documenting the project’s progress. When there are enough details to begin development, the team switches to a timeboxed, iterative version of Scrum for product development.
This method uses agile principles and scrum communication techniques in day-to-day activities related product development.
Organizations use water-scrum-fall model when they want details in the planning phase so they can make accurate estimations of the budget. If a project initial phase is carried out in a plan-driven way, it is more likely to convince management about the idea and they will feel secure when allocating funds.
Another reason for adopting water-scrum-fall model is the tendency of developers and testers to instinctively turn to agile practices during development. This happens because agile practices empower them and give them opportunities to collaborate as required by the limitations of the project.
Agifall approach was first presented at Vancouver Digital Project Managers Meetup Group. It combines the best of waterfall and agile by injecting the agile into a loose waterfall process.
The aim of Agifall is to increase the speed, decrease the cost and improve the quality. Agifall approaches planning in a user-centric manner and use quick prototype tools. It carries the planning and requirements activities of waterfall in an agile manner by breaking them into user stories and prioritizing them in the sprint.
In the Agifall method, you don’t wait for one phase to complete before starting the next phase; rather you begin the next phase as soon as you can. This means that you can begin independent development of some modules or components while the planning phase is still in progress. The development phase follows the usual agile principles.
Agifall model suggests graphic designing and testing in parallel with the development phase.
Hybrid can go right or wrong
The agile-waterfall hybrid model is far from perfect compromise. The elaborate documentation and completion of each phase required by waterfall methodology would be rather a burden to complete during a single agile sprint.
The evolution of techniques such as backlog management instead of comprehensive documentation is one of the best examples of successful adoption of hybrid model. The hybrid model is best suited for projects which demand the team to deliver constantly changing requirements within a limited time frame.
When a test team manager or lead has to adopt a particular method during the planning phase, the best way to proceed is to select the method that best suits the project needs. Moreover, the team needs to have a clear understanding of the hybrid model and implementation methodology, otherwise there’s a real possibility that it will make a mess of the project, and no benefits would be reaped.
It is sometimes tough to depend exclusively on one approach. The test team manager or lead needs to choose the methodology that best suits the project’s need, which in turn entails knowing about the pros and cons of the different methods that can be implemented.
There are various hybrid models for the software development life cycle, and in this article I described two of them. The water-scrum-fall model, planning, budgeting and production is done following traditional approaches, whereas analysis, design, development and testing follows agile principles. Agifall, on the other hands, approaches waterfall methodology in an agile and user-centric way.
By combining the best practices of both methodologies and incorporating the right hybrid techniques, the entire project can be a success. As long as there is good communication and effective cooperation between team members, then adopting a hybrid approach can often be a very effective approach to execute complex projects with rapidly changing requirements.