Modified Waterfall Model

Modified Waterfall Model

A number of problems with the traditional waterfall model was making it seem redundant. To enhance it further, modified waterfall model came into existence.
The waterfall model is the sequential approach implemented in software development. In this software development process, there is a steady flow from one phase into the other. The flow represents a waterfall, hence the name of the model. It is known as the traditional or pure waterfall model. But then what is modified waterfall model? How is it different from the traditional design? Scroll down to get the answers to these questions.

Traditional Waterfall Model

The waterfall model came into software development from the manufacturing and construction industries. Both these industries have structured physical environment and any after-changes are almost impossible. During the start of software development industry, there were no formal software development methodologies, therefore this model from the manufacturing and construction industries was adapted for software development.

In this model, there are different phases the software goes through. The phases are requirement analysis phase, design phase, implementation phase, testing phase, and the maintenance phase. The phases are sequential, which means that only after the completion of the previous stage, does the development move to the next phase. However, once the software has progressed from one phase to the next stage, there is no way the software can go back to the previous stage. There are many advantages and disadvantages. However, since the software cannot go back to the previous stage is the deterrent, due to which this model is not used often, which necessitated the development of modified waterfall model.

What is it?

This model in software engineering came into existence because of the defects in the traditional design. The phases are similar as well:
  • Requirement Analysis Phase
  • Design Phase
  • Implementation Phase
  • Testing Phase
  • Maintenance Phase
The main change is that the phases in this advanced model are permitted to overlap. Because the phases overlap, a lot of flexibility has been introduced. At the same time, a number of tasks can function concurrently, which ensures that the defects in the software are removed in the development stage itself and the overhead cost of making changes to the software before implementation is saved.

At the same time, making changes to the basic design is also possible, as there are a number of phases active at one point of time. In case there are any errors introduced because of the changes made, rectifying them is also easy. This helps to reduce any oversight issues. The diagram of this model does not differ from the traditional waterfall model diagram, as to every phase of the model a verification and validation step has been added.

The other advantage is that it is a more relaxed approach to formal procedures, documents, and reviews. It also reduces the huge bundle of documents. Due to this, the development team has more time to devote to work on the code and does not have to bother about the procedures. This, in turn, helps to finish the product faster.

Like everything has two sides, this model also has a drawback. It indeed does lend flexibility to the software development process, but tracking the progress on all the stages becomes difficult, as a number of phases are underway at the same time. Also, it has not done away with the stages from the traditional model. Therefore, there is some dependency on the previous stage, which continues to exist. This dependency adds to the problem and the project can become a complicated at times. The development team may be tempted to move back and forth between the stages for fine tuning. This results in delay in project completion. However, this drawback can be removed, if certain benchmarks are set up for every phase. Benchmarking helps to ensure the project is on schedule and does not go haywire.

In spite of the drawbacks, this model is extensively used in the software industries. Most of the drawbacks from the traditional design have been taken care of and this has made it easier to work in the advanced stages.