What is Waterfall Development? Advantages and disadvantages of waterfall model
During our Agile training lectures, we are often asked the difference between “Waterfall” and “Agile” and what makes either better suited for the other. We often receive questions such as, “What is the difference between Waterfall and Agile, and what makes one better than the other? I would like to explain the advantages and disadvantages of the traditional development method, Waterfall, while comparing the two!
What you will learn in this article
- What is waterfall development? Concept
- Advantages and disadvantages of Waterfall
- Steps in Waterfall Development
- Suitability and Unsuitability of Waterfall
- Is Waterfall outdated?
What is Waterfall Development?
The waterfall model is a system development model in which each development process is completed one by one.
Waterfall is a development method that completes one development process at a time and proceeds to the next process. The development process proceeds as follows: “requirements definition,” “planning,” “analysis,” “execution,” “testing,” and “deployment. For example, if there are five functions, “requirements definition” for all functions from 1 to 5 is done, and once that is completed, the process proceeds to “planning” for all functions.
Waterfall represents water flowing down like a waterfall. Because waterfalls do not flow backwards, waterfall development rarely goes back to the previous process once the previous process is complete and the next process is underway.
Waterfall originally originated in the manufacturing and construction industries. In a highly structured physical environment, it was considered very costly, if not impossible, to make changes after the fact. Therefore, it was necessary to steadily complete each step of the process.
Then, a 1956 paper by Herbert D. Bennington and a 1970 paper by Winston W. Royce described the use of processes for software development. This is often said to be the first waterfall development model for software, but it is unclear who actually defined “waterfall” and when.
Advantages of Waterfall Development
Waterfall usually requires the complete definition of requirements for all functions and services to be worked on in advance. Then, each team proceeds according to a series of processes. In other words, it is suitable for projects where clear goals for deliverables can be defined from the beginning and there are no changes or modifications during the development period.
Advantage 1: Planning can be done from the perspective of the entire project.
Waterfall begins with the creation of requirements definitions for all functions to be developed. Therefore, once the requirements definition is completed, the entire development schedule can be grasped. Since the scope, content, and schedule to be developed are completely determined before proceeding with the project, it is easier to keep track of the overall schedule.
Advantage２：Easier to estimate budget and resources
Since waterfall is based on a detailed schedule, it is possible to predict “when, in which process, how many people with what skills, and how many people are needed. This makes it easier to forecast budgets and resources.
Advantage 3: Progress is easier to manage.
In waterfall, development proceeds with all requirements defined and processes understood. Since specifications and tasks are defined for each process, it is easy to grasp and manage progress.
Advantage 4: Simple structure and easy to understand
Compared to other methods, the processes of waterfall are very clearly defined. The structure is so simple that anyone can easily understand and accept it, even if they are not familiar with waterfall development.
- Requirements gathering and documentation
- System Design
Each phase is described in detail in the “Procedure of waterfall development”.
If there are any obstacles, they are quickly identified because the team must complete the preceding step before it can move on to the next step. The risk of unfinished projects being left behind without completion is low, and the level of completion and sophistication at project completion is high.
Advantage 5: Clear goals and objectives for deliverables
A key feature of waterfall is the commitment to overall project and product goals and deliverables at the initial planning stage. The team will do its best to achieve these early commitments.
Disadvantages of Waterfall Development
What are the disadvantages of waterfall development?
Disadvantages 1: It is not flexible enough to respond to rework such as specification changes and requirement changes.
Because the scope, content, and schedule of work are completely decided before development begins, waterfall development is not suited to sudden specification changes and flexible responses. Because everything is planned in advance, it is not possible to partially redo the current process alone; each process must be reviewed and redone.
Disadvantages 2: Difficult to incorporate customer reviews
Since Waterfall is originally an internal process, the customer’s (client’s) involvement in the project is not as important as it should be.
However, we are now in the VUCA era, where the social environment is changing rapidly and it is difficult to predict the future. Technology is constantly evolving, and competitors are constantly evolving. Under these circumstances, it is now inevitable that customers (clients) will often add their opinions and clarify their requests as the project progresses. In such cases, it becomes necessary to flexibly respond to customer and stakeholder requests.
Disadvantage 3: It takes time to release deliverables.
With waterfall, system development can take years. Also, all functions are released at the very end of the process, after all processes have been completed. Therefore, it takes time to release the product, markets and needs change, and the product goals set at the beginning of the project may not produce the product value.
Disadvantage 4: Timing of testing is at the completion of the project.
In waterfall, testing of all functionality is performed later in the process. If product testing is not performed until late in the project, the risk is higher. Major modifications can result in significant delays, budget overruns, or in the worst case, project cancellation.
Disadvantage 5: A lot of documents (documentation) are produced.
It takes time to create deliverables. In waterfall development, deliverables are required for each process. A large amount of documentation is required. Also, when rework occurs, the created documents need to be reworked.
Procedure of waterfall development
Waterfall development, however, executes the following processes one by one.
Requirements Definition (Requirements Gathering and Documentation)
The first step in the waterfall procedure is to define requirements.
Requirements definition means
Correctly understand what functions the customer desires and wants to see implemented.
After confirming that there are no deviations from the customer’s perceptions, the flow of the project is considered and communicated to the customer.
There are cases where implementation may be considered difficult at the requirements definition stage.
In such cases, it is necessary to inform the customer in advance to avoid problems later on.
The most important phase of the waterfall process is the requirements definition phase, in which the customer’s requirements are properly understood.
Requirements definition is not just about laying out the requirements as the customer says. It’s about figuring out the root cause of the customer’s problem and coming up with requirements to solve that cause!
During the basic design phase of a waterfall project, the main deliverable is to create a basic design document based on the requirements definition. The basic design document is shared with the client to ensure that there are no gaps in understanding between the client and the design.
During the basic design phase, we determine the general outline of the product that the client is looking for and the process by which it will be developed.
It is important to have a thorough interview with the client before starting the detailed design.
The detailed design in waterfall is a design document written for engineers, including how to program based on the basic design document. By detailing the flow of processing, etc., it will affect the efficiency of subsequent development and the return of work.
In the implementation phase of waterfall, engineers create programs based on the design document.
Programs are written and implemented to realize the functions desired by the client, which were confirmed in the requirement definition and basic design phases.
In software development, the testing phase is divided into several types.
The main types of testing are unit testing, coupling testing, comprehensive testing, and acceptance testing.
In this section, we will explain in turn which testing phases are used and for what purpose.
Unit testing confirms that the implemented program works correctly, and if there are any bugs, we will check the detailed design and solve them.
In the coupling test, we combine (link) the programs that have passed the unit test, and test whether they behave correctly.
After repeating the unit test and the coupling test, the overall behavior is finally confirmed in the comprehensive test. If there are any anomalies, we trace them back to the unit test and then to the coupling test to find out the causes and resolve them.
After passing the overall test, we finally move on to acceptance testing. We confirm that the program works correctly in the production environment and that it behaves according to the specifications. Even if the program works correctly in the comprehensive test, there may be cases where errors occur in the production environment. In such cases, we go back to the previous test and repeat the test.
Operation and Maintenance
Product development does not end when the product is released.
Even after a product is released, we continue to maintain it by repeatedly updating it and fixing bugs to make it more stable.
Not only the speed of development, but also the speed of bug fixing is an important skill in development.
Suitability and Unsuitability of Waterfall
You may have heard that “waterfall development will no longer be used in the future” in the age of Vuca (a situation in which the future becomes more difficult to predict). So, what kind of cases are suitable for waterfall development and what kind of cases are not?
Cases in which waterfall development is suitable
Generally speaking, waterfall development is suitable for the following cases
A project with well-defined requirements and a clear goal
The requirements are fixed in advance, and it can be said that waterfall development is suitable for development in which changes and modifications do not occur. In other words, waterfall development is suited for development in which there are no specification changes because, as mentioned above, it is assumed that there will be no rework. In the waterfall model, requirements must be carefully defined so that specification changes do not occur.
Cases where waterfall development is not suitable
Cases in which the target market or needs change rapidly and rapidly, or in which development is carried out while incorporating user feedback. Waterfall is not suited for development where many changes occur during the development period.
Please learn the difference between waterfall and agile development as well as the suitability of waterfall development.
Is Waterfall Development Outdated? Tell us, Joe!
We asked Joe Justice, a leader in the agile industry, a direct question and asked him!
What do you think about Waterfall?
- Is waterfall development outdated?
Maybe “outdated” is not the right word to use. However, I have worked with Amazon and Tesla, and I have never seen waterfall development in the field. I believe this is because development methods have changed with the times. The waterfall concept was born more than 100 years ago. Of course, it was the best method at that time.
However, over the past 100 years, many things have evolved. We cannot always continue to do the same thing in the same way. We have to continue to innovate in order to grow our business. Of course, we do not intend to deny waterfall. We just hope that you will try new things.
Agile was created to address these principles of waterfall. With the rapid adoption of agile in recent years, waterfall development is sometimes viewed as an old development methodology, but waterfall development has its advantages as well.
Generally speaking, waterfall development is suitable for projects that do not change after the start of the project and where flexibility to change is not a priority.
On the other hand, agile development is more suitable when changes are expected during the development process or when you want to proceed with development while obtaining feedback from users.
After understanding the advantages and disadvantages of Waterfall, please consider introducing Agile development.