Waterfall Model in Software Engineering

The waterfall model is probably the oldest and the best-known development models. The role of this model in software engineering is as important as its role in software testing. It forms the basic design, using which, over the years, a number of other software process models have been developed and implemented.

Waterfall Model and Software Engineering

The waterfall model is so named because it employs a ‘top-to-down’ approach similar to the water falling from a height under the influence of gravity. The following is a brief explanation of the different phases in the waterfall model.

Phases
For developing a software for small or large project, the waterfall model suggests that you employ the phases given below, in a step-by-step manner.

First and foremost, you need to completely analyze the problem definition and all the various project requirements. This phase is commonly referred to as ‘Requirement Analysis’. Once you have thoroughly and exhaustively identified and understood all the project requirements, they are to be properly documented, after which you move onto the next phase, which is known as ‘System Design’. This involves analyzing and specifying the project’s hardware and software requirements, and their inter-relation. In this phase, the entire software aspect of the project is broken down into different logical modules or blocks which are identified and systematically documented. ‘System Implementation’ is the next phase which involves writing the software code and actually implementing the programming ideas and algorithms which have been decided upon in the previous phase. Once the coding and implementation phase has been completed, the development process moves on to testing. This is precisely what happens in the next phase which is known as ‘System Testing’. The code that has been written is subjected to a series of tests, to detect and determine whether there are any bugs, errors or software failures. Once all the repair work, i.e. correcting and re-writing every piece of erroneous or flawed code is completed, you then move to the next and last phase which is the ‘System Deployment and Maintenance’. As the name suggests, the last phase is nothing but handing over the completed project to the client or customer, and subsequently performing maintenance activities, if needed, on a periodic basis.

Advantages and Disadvantages
Let us now examine the pros and cons of the waterfall model in software engineering as well as in software testing.

Pros
It is the simplest software development model and also the easiest process to implement.
This model is simple to understand and therefore is implemented at various project management levels, in a number of different fields.
It employs an orthodox, yet systematic and effective method of project development and delivery.
Cons
Since it is not an iterative model, it has its fair share of shortcomings and drawbacks.
Being a strictly sequential model, jumping back and forth between two or more phases is not possible. The next phase can be reached only after the previous one has been completed.
Bugs and errors in the code cannot be discovered until and unless the testing phase is reached. This can lead to a lot of wastage of time and other precious resources.
This process model is not suitable for projects wherein the project requirements are dynamic or constantly changing.