What is Waterfall Model?
It is mostly known as the traditional software development process model, widely used until now, and the most popular SDLC model and the one you should avoid to use. Moreover, it was the first introduced presentation of the software lifecycle.
You can read this Wikipedia page to know the waterfall model history.
The Waterfall Model is a linear sequential flow. In which progress is seen as flowing steadily downwards (like a waterfall) through the phases of software implementation. This means that any phase in the development process begins only if the previous phase is complete. The waterfall approach does not define the process to go back to the previous phase to handle changes in requirement.
In this article, we will discuss the advantages and disadvantages of the waterfall, should we avoid it? when to use it? and the waterfall model pitfall, and why I see it as the father of the SDLC models.
Waterfall Model Phases
Waterfall Model contains the main phases similarly to other process models, you can read this article for more information about phases definitions.
When to use Waterfall Model?
Due to the nature of the waterfall model, it is hard to get back to the previous phase once completed. Although, this is can be very rigid in some software projects which need some flexibility, while, this model can be essential or the most suitable model for other software projects’ contexts.
The usage of the waterfall model can fall under the projects which do not focus on changing the requirements, for example:
- Projects initiated from request for proposals (RFPs), the customer has a very clear documented requirements
- Mission Critical projects, for example, in Space shuttle
- Embedded systems.
We can notice some similarities of these types of projects that they cannot be delivered in iterative, incremental, or agile manner, for example, in embedded systems for the elevator, you cannot deliver an elevator who can go up only without going down, or handling only users requests from inside and ignore outside calls for the elevator.
You can review the selection criteria for the SDLC models from this article, while this is the list of things to consider when using the waterfall:
- The requirements are clear and frozen.
- Technology is understood and used by the team in different projects.
- The project cannot be delivered in an iterative manner.
- Documentation is essential.
- Professional Project management skills.
- The project cost is defined.
Waterfall Model Advantages
- It is very easy to explain to the business users and explain the output of each phase.
- Structures approach.
- Stages and activities are well defined.
- It is easier for project managers to plan, schedule the project, utilize the resources, and define the milestones easily.
- Validation and verification at each phase ensure early detection of errors/misunderstanding at the same phase.
- Each phase has specific deliverables.
Waterfall Model Disadvantages
- It takes the full lifecycle to deliver a workable solution to the customer.
- It is very difficult to go back to any phase after it finished.
- It assumes that the requirements of a system can be frozen without any changes or enhancements.
- A little flexibility and adjusting scope is difficult and expensive.
- It requires more time for the detailed plan upfront of the project, as the requirements are clear and frozen and it should be visible to have the detailed plan delivered to the customer.
- It delays the testing phase which can discover a lot of issues in requirements, design, and implementation as well.
A Different Perspective
I would like to call the waterfall model as the father of the SDLC models, not because it was first introduced, but because all other models are engineered and designed based on the waterfall model with enhancing its capabilities and eliminate its shortfalls for ensuring better delivery.
For example, when you explore any of the models, it contains a waterfall inside, even the agile, you can have sprint of two or three weeks, but each sprint it consists of a small waterfall with more agility to listen to customer feedback, but you go through the waterfall phases from analysis to release a workable solution or features.
I notice that most of the software engineers and startup companies are against and avoiding the waterfall model while I see that It is based on the project context to select the suitable model according to the criteria the project stakeholders define at the project initiation. This is another article about the best process models, please read to help you understand the project context based on some cases.
I see the major pitfall for the waterfall model that it is project implementation focused not a customer focused which cannot realize a quick business value to the customer. The customer should wait for the full lifecycle to see the outcome and this can be good or a disaster. I think we do not need to reach the dilemma described in the above picture regarding different perspectives during the development lifecycle, that’s why choosing the proper model is very critical to be able to deliver the expected business value as needed.
Help to do more
The content you read is available for free. If you’ve liked any of the articles at this site, please take a second to help us write more and more articles based on real experiences and maintain them for you and others. Your support will make it possible for us.