Before development of a project begins, the project manager’s job is to determine which methodology should be used for the project life cycle. The 2 most popular methodologies are
- Waterfall model, relying on a more traditional approach
- Agile methodology, a rapid application development procedure, newer than waterfall and implemented using scrum.
Waterfall model is slowing losing its popularity as software development companies worldwide are adopting Agile methodologies for developing their product. Let’s dive deep into the reason behind Agile’s popularity and how different it is from waterfall.
How Exactly Both of Them Work
Waterfall provides a more sequential approach to software development. It works in the following order.
- Software requirement document is gathered
- The application is designed after requirement is finalized
- Development begins and parallelly unit testing is executed
- Performance testing is carried out to ensure the system performs well under load or stress
User acceptance testing
- Defect fixing where the developer starts working on the bugs detected by the testing team
- The application is deployed in production
Agile however, does not follow any linear path. It follows an iterative approach to development. Instead of creating tasks, the entire duration of the project is divided into phases called sprints. Agile generally focuses on four fundamental values
- Interaction between team members rather than tools.
- A properly working software rather than all-inclusive documentation.
- Collaboration of customer in every sprint.
- Quick response to change instead of following a plan.
Requirement Gathering Phase
If the waterfall model is used for the application development, both the customer and the organization need to have a clear understanding of the requirement specifications beforehand. There is no scope of changing them once the requirement is accepted.
Agile methodology, however, there is no fixed requirement document from the get go. Customer provides user stories in each sprint and the job of the developer is to finish the coding and present a demo. If the customer is not satisfied with the product and requires more add-ons, he requests a change in the application. Agile is thereby, more flexible in requirements than waterfall.
If the customer is clear about the requirements of the software that is going to be developed, Waterfall model is the best approach to follow, since it follows a linear approach and requirements are made clear in the first phase.
If the application you are planning to develop needs to evolve with each phase and frequent overhauls may be expected in the project, Agile methodology is the best approach to keep up with customer requirements and technology landscape.
Product Visibility to The Customer
When the waterfall model is followed, the customer can only see the full product after the project comes to an end and the application is deployed into production.
In Agile, since the duration is split into multiple sprints, a customer gets frequent opportunities to look at the product and thereby, take decisions regarding acceptance criteria and changes to be performed.
Working as a Team
The biggest disadvantage of the Waterfall model is that it does not allow integrated collaboration between developers and testers. Testers begin their work only after the development phase is over and they work individually.
In Agile, testers and developers work together. Each sprint has a testing phase and every time a new function is released, it is immediately followed by regression testing.
Splitting a Big Task into Smaller Ones
In the Waterfall model, software development becomes a bit complex since the entire application is to be completed as one single project. It becomes a hectic job for developers and more hectic for testers when they begin testing a large application.
In Agile, the project gets split up into multiple user stories. Developers and testers work together in each phase to understand the requirements and the customer finally gives a review of whether everything is done correctly. It makes the job easier and quicker.
A CHAOS report presented by the Standish Group in 2010 clearly shows that projects adopting Agile methodology face less number of challenges and are likely to fail less when compared to projects that follow the Waterfall approach.
Pros and Cons of Agile and Waterfall
Although traditional, waterfall model is advantageous in many ways.
- A predictable and static workflow ensures that the team can calculate proper cost estimation and get an idea of the deadline.
- Since the process requires documentation, a paper trail leads the way to each development phase. Following the logic of past projects, the team can set the groundwork for future projects also.
- he process being contemporary, no prior knowledge is required by the team in order to start working on a waterfall model.
However, the cons are there as well
- Since the model is rigid, any major change can prove to be costly for both the customer as well as the team, since the entire project has to be scrapped off and started again.
- The result of multiple phases of requirement gather, development and testing lead to quite a lot of time before the stakeholders actually get to view the live application.
Since it follows an iterative approach, Agile is advantageous in many ways
- Short development phases make the project adaptable and always ready for any major or minor change required by the customer.
- The customer can view the live project during every sprint and regular feedback results in a better-quality product.
- Developers and testers work hand in hand along with the customer. A better teamwork results in the development of an individual as well as the business of the organization.
Whenever there are advantages, it is followed by certain disadvantages
- Agile prefers a working application over documentation. This is a good thing but depending on the complexity of a project, a proper balance between documentation and coding may sometimes be necessary
- The methodology is designed for small teams. Therefore, each team member must be proficient in their roles and self-dependent.
Going Agile in Browser Compatibility Testing
In most development cycles, even those following agile development methodologies, browser compatibility testing is the last priority. It is done when the whole project is built and is just a few steps away from deployment. Sometimes it is even done after deployment. This practice is understandable even. The focus of the development team is to make the application work first then worry about making it compatible. However, in large projects this sometimes backfires. It’s important to make sure that all app pages are browser compatible especially during the development of critical user stories. Making pages cross browser compatible after all development will lead to unnecessary increase in development time.
In The End, Results Matter
People who are in the industry for a long time will suggest that proper planning with requirements clarified beforehand will ensure successful delivery. But, we live in a world where fast delivery results in improved profitability. Therefore, based on the nature of the project it is on up to the team and the stakeholder to figure out which approach will be perfect to use.
Arnab Roy Chowdhury is a UI developer by profession and a blogging enthusiast. He has been writing content for about 5 years and has strong expertise in technical blogs, travelogues, and content in the latest programming languages.
Originally published at LambdaTest
Written by Arnab Roy Chowdhury