Software development “then” refers to the traditional way of developing software; i.e., “The Waterfall Model” and “now” refers to the modern way, “Agile”.
Waterfall as its name suggests that it employs the sequential process. Development flow from the start to the end following several different stages, moving from one stage to another can be done only when you complete the current stage. There is no room for changes or errors, so an initially extensive plan must be set and then follow it carefully.
The advantage of the Waterfall model is that it focuses more on record keeping, having such records provides the ability to improve upon the existing program in the future and also suppose if a new developer joins in, then by going through the documentation s/he will get definite idea of what is done, how it is done and what needs to be done. The size and cost of the product can be estimated accurately as it takes extensive planning at the beginning.
The disadvantage of the Waterfall model is that it is very rigid and inflexible. The developer cannot go back to the previous stage to make changes once it is completed. It depends heavily on initial requirements, however if these requirements are faulty in any manner or an error is found, then it’s not possible to reflect the changes or fix the error, The project has to start all over from the beginning with new coding. The testing takes place at the end. Therefore, the errors that had made way back at one stage, but discovered late, may affect the other parts of the product that is developed later. The client’s participation in the development process is only at the beginning of the process. Suppose if the client realizes in the future that they need some change in requirements, than it is difficult to incorporate into the current product.
Agile came into existence as a solution due to the disadvantages of the Waterfall model. Instead of a sequential design process, the Agile methodology follows an incremental approach. The Agile methodology divides the product into smaller modules and build separately, tested and delivered it to the customer to use. This development is taken place on weekly or monthly sprints, hence after every month, the customer gets a part of the software fully functional to use.
The advantages of Agile methodology are; Requirements ever evolving so change can be catered for very easily, given the shorter planning cycles; Encourages active involvement and interaction from the client which allows the product to be built, based on priority and accuracy. The testing at the end of each sprint ensures that bugs are caught early and taken care of in the development cycle. Risk is reduced, due to the feedback received after every sprint.
Some of the disadvantages of Agile are; It doesn’t have a concrete plan, so time lines and cost estimation will not be accurate. Agile doesn’t have documentation and a concrete plan. So if a developer has left the team during development, then it will be difficult for a new developer to take charge.
So, which is better?
Both the Agile and Waterfall methodologies have their strengths and weaknesses. The key to decide which is right depends on the project if it’s going to be change rapidly. If so, choose Agile. Do you know exactly what you need? If not, Waterfall is the better option.
– Irfanali Pathan