Each software lifecycle is designed for a particular type of development. There is no one lifecycle that fits everything. The Waterfall life cycle has advantages and disadvantages and so does the Agile approach. In this case you cannot say who is right and who is wrong.
Although there are disadvantages, the Waterfall lifecycle is still a popular development approach in the industry and is still being taught in most universities. It is simple, easy to understand, and still being used in many types of project, especially large project. For students who do not have a lot of experience, this model is very good to learn how software development works. Once the students understand the Waterfall model well, they can learn about other models such as Spiral, Incremental, and Agile etc.
The Waterfall lifecycle organized development activities into distinct phases so manager can set schedule for the tasks to be completed within a specified time period. Only after the tasks in a particular phase are done then the next phase can start. There is no overlapping of phases in this lifecycle. From the project managers’ view, this lifecycle is easy to manage since the progress is happening in a sequential linear manner. At the end of each phase, there are specific documents and products to be done so managers can track progress of project activities. This lifecycle is based on a perfect situation where requirements are clearly defined and there is minimum change during development.
Of course in reality, requirements are not clearly defined and changes happen quite often so developers must go back and change their works (re-works). This problem often causes the project to slip schedule, needs more efforts and causes higher costs and lower quality. It may create badly structured system which is difficult to maintain. Sometime due to strict schedule, not all problems are solved so released software still has defects. When customers’ requirements are added later in the development, they disrupt the works and not all requirements are done correctly. These things create low quality products and make customer not very happy.
Agile is a good development approach for smaller project but it has some disadvantages too.
- Agile assumes that users will actively involve and collaborate with developers. In reality, users are often busy and may not have the time or skills to participate in the project. Without users involve, Agile may not work.
- The best thing in Agile is it welcomes changes but it can also be a negative thing too. As more changes are being added and the scope keeps changing, the project may never finish accordingly (Scope creep). Agile is an evolving process and constantly being adjusted to meet customers’ changes, therefore it is difficult to plan how much it will costs for the project budget.
- Agile requires a highly skilled and experienced developers that can assume many roles, from interact with customers, set priority, write code and continuously testing. Most companies do not have enough of these workers and inexperienced workers often fail in Agile, especially if they do not have enough proper training and good Agile coaches to help them.
There is NO “Perfect method” or “Perfect way” to develop software. Anyone who says Agile is better than waterfall or waterfall is better than Agile than that person knows nothing. It is better to say that we MUST select the best approach depending on certain circumstances, certain environment, and certain project to deliver quality software that meet customers’ expectations, be it waterfall or agile or anything else.