Home »
Software Engineering
Waterfall Model in SDLC
In this tutorial, we will learn about the waterfall model in software life cycle model (SDLC).
By Raunak Goswami Last updated : April 05, 2023
What is Waterfall Model in SDLC?
As the name suggests the reason for naming this model as a waterfall model is that the sequence of steps that are followed in this model resemble the flow of a waterfall. As the water falls from top to down, in waterfall model you are allowed to move in the direction as that of a waterfall therefore backtracking is not possible in this type of model.
Waterfall Model - Design
The sequence of steps that are followed in this model are as follows:
- Requirement gathering
- Designing of the model
- Implementation along with unit testing
- Integration and system testing
- Operation and maintenance process
Flowchart representation of the following sequence of steps is given below:
Now we will be discussing each step-in detail,
1) Requirement gathering
The main purpose of this step is to understand the exact requirements of the customer. This task is usually performed with the involvement of the customer. The requirements describe the main functionality of the software and the purpose behind creating such software. This step usually contains huge documentation written in the human understandable language which is often referred to as SRS (software requirement specification).
If the software created does not contain all the functionalities mentioned in the SRS then such software is often considered as a failure in the software industry.
2) Designing of the model
Now, before we begin the coding phase we need to create a design or a definite structure that is suitable for some programming language. We basically define the full system architecture in this step. Just like SRS was used to define software required by the system in this step we create a documentation for the software design which is referred to as SDD (software design description).
3) Implementation before unit testing
The real coding begins at this step, this is basically the core step wherein the developers code the software according to the details mentioned in SDD(software design description) that was created in the previous step. A good SDD will mean that the chances that the software created will be efficient is more.
Now after implementing the SDD we come to the unit testing phase, here the code modification and extension take place if required. The whole module is divided into small submodules which are tested in the isolation. Common problems like calling of modules on their own or calling the modules only when required are solved here by writing some overhead codes.
4) Integration and system testing
Another very important step is the integration and system testing a good testing will create a highly efficient software will least bugs and a better system compatibility. A good testing will also reduce the maintenance phase which is the last step of our waterfall model. However, the cost of testing a software is very high and at times may cost 1/3 or even ½ of the entire cost of creating a software.
We have already discussed that how a large module is divided into small submodules and those modules are then tested independently in the process called unit testing. In system testing the whole system is tested, whereas the software is the part of this system. This type of testing builds up a sense of reliability before handling the software to the user.
5) Operation and maintenance process
Software maintenance is a very broad activity which includes error detection, enhancement of capabilities and much more. This step is often executed after handling the software to the user, despite highly efficient testing every software company has to come across this step of software maintenance. As the technology advances there Is a change in the system of the user which requires some kind of updates and bug fixes. These bug fixes and updates are the part of the operation and maintenance process step of the waterfall model.
The main aim of this step is to preserve the value of the software over time. This step lasts from 5 years to 50 years.
This classical model is very easy to understand, however, there lie certain disadvantages which are mentioned below:
- It is difficult to define all the requirements at the beginning.
- This model is not suitable for introducing any changes in the middle.
- Real-time projects are generally not sequential.