Waterfall Model In Software Engineering
When the software development model is introduced to develop the software, the very first model is the Waterfall model. As per the paper published in 1970, the Waterfall model was introduced by Dr. Winston W. Royce.
In our last post, we have discussed the software development life cycle (SDLC), which is a continuation of the software testing tutorial series of posts. In this post, we will discuss the Waterfall model.
which is very simple to understand and easy to use. But there is a restriction on this model; each phase must be completed before starting the next stage.
This model was prevalent earlier, but nowadays, when organizations are started following agile, the popularity of the Waterfall model is going down.
Because nowadays, this model is not used. But this model is essential because all the software development models are based on the Classic waterfall.
In the Waterfall model, the complete software development process is divided into different phases. In this model, you can start a new page only if the current phase has completed because the output of one page will be the input for the next stage.
That’s why the development process in the waterfall model in a sequential manner, and also, the phases are not overlapping with each other. The different stages are available in the waterfall model, and that are:
- Feasibility study
- Requirement analysis
- Coding and unit testing
- Integration and system testing
Let us now learn each of these phases in details:
The prime objective of this place is to determine whether it is financially and technically feasible to develop the software. It also involves understanding the problems and learning the various strategies or scenarios to solve the issues.
These solutions are analyzed based on the benefits and drawbacks, and out of those, the best solution is chosen, and all other phases are carried out as per this is solution strategy.
In this phase, business analysts (BA) are meeting with the stakeholders to understand the exact requirements of the customer and also prepared a document as per the requirement. This page is consist of two activities:
Requirement gathering and analysis: In this phase, two critical things happen; one is gathering all the requirements regarding the software from the customer and analyze the requirements properly.
Because sometimes the requirements maybe not clear or the requirement is not complete. If we found such a type of requirement, then the business analyst again needs to contact the stakeholder and get a clear understanding of the complete requirements regarding the software.
Requirement specification: after analyzing the complete requirements, doors requirements should be documented in a software requirement specification (SRS) document. This SRS document is the like and contract between the development team and the stakeholders.
If in the future, if there is any dispute arises between the development team and customer, then that can be resolved by verifying the SRS document.
The last phase, we get the SRS document, and based on that, the architecture is transforming the requirements into a structure. which is a suitable implementation in some programming language
Coding and Unit Testing
In this is the stage the prepared software design translated into source code by using any suitable programming language like C++, Java, Python, etc. In this stage, all the design models are converted into source code by the software developers. After that, they are doing unit testing to verify whether each model are working as expected or not.
Integration and system testing
After each model are source code add and verified by the software developers, the next thing is to integrate all the different models by following the number of steps.
During the integration phase, a new model is integrated with the partially integrated system. After that, the systems is tested.
In this way, all the modules are integrated one by one, and finally, we will get a full working system. After getting the complete working system, another testing is carried out, which is called system testing. in the system testing the three kind of activities which will be carried out and that are:
- Alpha testing: this testing is carried out by the development team only.
- Beta testing: In this testing, the organization calls some of the friendly customers to do system testing.
- Acceptance testing: in this activity, the software is delivered to the customer who will perform the acceptance testing to determine whether to accept the delivery software.
After delivering the software product to the Client or end customer, they may have found some unidentified bugs on their environment. So to fix those issues or bugs, the developer team needs to provide some patches.
In some cases, after using the developed product for some time, the customer may want to enhance the product’s feature. In that case, maintenance is done to deliver the changes to the customer.
In this, you can say that all these phases are in cascaded format to each other, where the progress is seen as steadily downwards (like a waterfall). The next stage is only started after the current phase goals are achieved, and it is signed off. That’s why the name of this model is called the Waterfall model.
Note: this model can be followed when the requirements are precise.
Advantages of the waterfall model
This model is straightforward, so it is easy to understand, and also it is considered the basis of software development life cycle models. In this model, we can set deadlines for each stage of development show that the product can go through all the processes one by one.
In this Waterfall model, all the phases have to be carried out in a strict order: requirement, design, coding, testing, deployment, and maintenance. And here there are some of the significant advantages of the waterfall model:
- Simple and easy to understand and also easy to use.
- Each phase has deliverables and review process.
- At a time, only one phase is processed, and after complete of a phase, then only in a new stage will be started.
- This model works well for a smaller project, and also, the requirements are precise.
- The process and results are well documented.
Disadvantages of waterfall model
What are the main disadvantage of the waterfall model is it is not allowing revisions. Suppose you are in a testing stage, and you want to change something which is not well documented during the requirement gathering stage. The waterfall model is not allowing such type of activity.
We can’t use this model on a real project, but we can use software development life cycle models based on the waterfall model. Below are some of the Other disadvantages of this model:
- No working software is produced until the end of the software development life cycle.
- There is a high amount of risk and uncertainty.
- This model is not suitable for the Complex project.
- You cannot use this model for a long and ongoing project.
- You cannot use this model where the requirements is not precise, and there may be a chance of change in the specifications.
- In this Waterfall model, the testing process is starting quite late, which affects software quality.
Benefits & Constraints Of Water Fall Model
|Each phase has to complete before the next phase of development.||The error can only be fixed during the phase.|
|The project scope stays relatively static. It is good for smaller projects where requirements are well defined.||It is not recommended for complex/ big projects where requirement changes frequently.|
|Quality Assurance test ( verification and validation) is performed before completing each stage.||The testing period comes late during the development process.|
|Elaborate documentation is done at every phase of the SDLC ( software development life cycle)||Documentation consumes a lot of time for the project development team.|
|The project is completely in the hands of the project team with minimal client intervention.||Valuable feedback from the client can’t be added in the ongoing development phases.|
|Any changes in software are made during the process of development||Small changes or errors that arise in the completed project may cause problems.|
In the Waterfall model, you have to take the sign off the deliverables of each phase, but if you look, most of the current days project their movie into agile. But still, the Waterfall model has right for a smaller project where the requirements are precise, straight forward and testable, and you can get some best results from the Waterfall model.
I hope you get in a good idea about the waterfall model and methodologies. If you are interested to learn more about software testing tutorial, software testing interview questions, then you can follow the links.
If in your organization, for the development of software If you are using the Waterfall model or methodologies. Let us know in the comment section how you guys are implementing the Water fall model and how many phases are there.