Waterfall Model in Software Engineering

  • 10 min read

The Waterfall model documented by Dr. Winston W. Royee in 1970 and later refined by Barry W. Boehm in 1976 is the most popular and the first introduced software development life cycle (SDLC) model which is widely used in the software industry.
The Waterfall project management model is the first software development methodology that was used for software development. Earlier this model was very popular but its popularity has waned over recent years in favor of more agile methodologies. But still, its importance remains because all other SDLC models are based on the classical waterfall model. The waterfall model vs agile model, both have their own advantages and disadvantages but play a vital role in the successful completion of a software development project.

The Waterfall Model Definition:

The Waterfall methodology which is also known as the Waterfall Systems Development Life Cycle (SDLC) model is a sequential or linear development process that flows like a waterfall through all phases of a project where each phase must be completed before the next phase can begin. In short, overlapping cannot happen in the waterfall model. Just like a waterfall filling lower-level pools, phases from the Waterfall model flow from one phase to another, and also like the pools filling completely before water spills into the next pool, the Waterfall model completes one phase before another phase can begin.

The different phases of the Waterfall software development model are shown in the figure below that demonstrate the entire waterfall model process:

The activities involved in different waterfall model phases are as follows:

1. Feasibility Analysis Phase:-

Feasibility analysis or feasibility study is the foundation upon which the project resides. A feasibility study is simply an assessment of the practicality of the project. It is conducted in order to uncover the strengths and weaknesses of the project or the business. It tells whether the project is worth the investment or not. For example, in some cases, projects may not be doable or may cost more than an organization would earn back by taking on a project that isn’t profitable.
In short, the goal of this phase is to determine whether it would be financially and technically feasible to develop the project.

2. Requirement Analysis and Specification Phase:-

The aim of this phase is to understand the exact requirements of the customer and to document them properly. It is one of the biggest advantages of the waterfall model. The Waterfall model works on the belief that all project requirements can be gathered, analyzed, and understood upfront. The Requirement analysis and specification phase consists of two different activities:-

  • Requirement Gathering and Analysis: The software’s services, constraints, and goals are established by consultation with the customer. All the requirements of the software to be developed in addition to deadlines and guidelines are discussed with the customer and finalized during this phase. The gathered requirements are then analyzed to remove any incompleteness and inconsistency.
  • Requirement Specification: All analyzed requirements are documented in a Software Requirement Specification (SRS) document. The document describes WHAT the application should do, but not HOW it should do it. This SRS document also serves as a contract between the development company and customer and also helps to settle any future dispute between the company and the customer by examining the document.

3. Design Phase:-

The aim of this phase is to transform the SRS document into a Software Design Document (SDD). SDD is created to outline technical design requirements such as architecture, programming language, data source, hardware, network infrastructure, etc. It defines the overall software architecture together with high-level and detailed design. This is the phase where it is determined HOW the project will be developed.

4. Implementation and Unit Testing Phase:-

The aim of this phase is to translate the models, logic, and requirements defined in the SDD into source code using the designated programming language. Each designed module is coded in small programs called units and each unit is tested for its functionality, which is referred to as Unit Testing.
If the SSD is complete, the implementation phase proceeds smoothly because all the information needed by software developers is contained in the SDD and this might be the shortest phase of the Waterfall model because detailed research and design have already been done.

5. Integration and System Testing Phase:-

All the units developed in the implementation phase are integrated and this integration of various modules in an incremental way follows various steps. During each integration step, the module is added to the integrated system and the resultant system is then tested. After all the units have been successfully integrated, the entire system is tested for any faults and failures.
This phase is highly critical as the quality of the project relies on the effectiveness of the testing performed. The better output will lead to satisfied customers and lower maintenance costs.

The system testing consists of three different testing activities:-

  • Alpha Testing: Alpha testing is the testing of a system that is performed by the development team to identify bugs before releasing the project to the customer. It involves end-to-end testing to ensure that the project meets the business requirements and functions correctly.
  • Beta Testing: Beta testing is a type of user acceptance testing where the product is released to a limited number of real users of the software to validate it for functionality, usability, reliability, and compatibility in the real environment.
  • Acceptance Testing: Acceptance testing or User Acceptance Testing (UAT) is a level of software testing where the end-user or the customer verifies/accepts the software for delivery. The main purpose of UAT is to validate the system’s compliance with the business requirements.

6. Maintenance Phase:-

During the Maintenance phase, the customer regularly uses the product to discover bugs, defects, inadequate features, and other errors in the delivered product and makes sure it runs smoothly. If the customer comes across issues during use, fixing them is the purpose of this phase. To fix the issues, patches are released or to enhance the product some better versions are also released. This is an ongoing post-launch phase that extends for as long as the contract dictates.

Advantages and Disadvantages of Waterfall Model

Waterfall Model Advantages:-

  • This model is simple and easy to understand and follow as it progresses through easily understandable and explainable phases.
  • Phases in this model are processed and completed one at a time and they do not overlap.
  • Milestones and deadlines for each phase in the model are clearly defined.
  • Each phase of the model is well documented and well scripted.
  • Reinforces good habits to define before design and design before code.
  • It works well for smaller projects where the requirements are well understood and clearly defined.
  • The rigidity of the model makes it easy to manage as each phase has specific deliverables, schedules, and a review process.
  • The requirements of the project are explicitly declared in the SRS document so they remain unchanged during the entire project development and the customers are not allowed to add new requirements during development.

Waterfall Model Disadvantages:-

  • Once the SRS is signed by the customer early in the cycle, there is no room for feedback or changes in the requirements during the development.
  • It can be difficult for customers to state their requirements at the beginning of the project as in the real world the customers’ requirements keep on changing.
  • This model reduces efficiency by not allowing phases to overlap.
  • It is not a good model for complex, high-risk, long, ongoing, or object-oriented projects.
  • Extensive documentation during each phase occupies a lot of developers’ and testers’ time.
  • Testing starts quite late in the cycle after the completion of the development phase and if bugs and design issues are detected, it is very difficult to go back and change something that was not well thought out in the early phases.
  • No working product or prototype is demonstrated intermediately to the customer.

To sum up, the waterfall model helps identify the requirements of the project in an efficient manner and ensures seamless development of all the phases. From understanding the functional and non-functional requirements to incorporating scalability of the project, the waterfall model ensures enhanced workflow and completion of the project.

About Author

Relevant Blogs

PK

26-F Gulberg 2,
Main Market,
Lahore
 

UAE

Office 404, Al Saaha
Offices – B, Souk Al Bahar,
Burj Khalifa District,
P.O. Box 487177, Dubai

US

6001 W Parmer
Lane Ste 370 #734,
Austin, TX 78727