You might have heard about Software Development Life Cycle (SDLC). It is a process consisting of planned activities to design, develop and test highly performing software. The primary aim of SDLC is to produce high-quality software that meets customer expectations and requirements. However, here we are not going to talk about SDLC. For that, you can refer to our ‘Mastering the Software Development LifeCycle Methodologies’ blog. Today, we will start with the Waterfall methodology, the first Software Development Life Cycle model out there. It is one of the approaches to complete the life cycle of software.
In this article, we will discuss:
- What is the Waterfall model?
- Where does this concept come from?
- The sequential phases in the Waterfall model
- When to use the Waterfall model?
- Ways in which the Waterfall model can be advantageous.
- The limitations to this approach
Waterfall Model: An Overview
The waterfall model is sequential and widely used in the software industry that divides software development processes into pre-defined phases. It is an understandable and easily applicable approach. The basic concept behind this model is that all the stages should process one by one in a pre-defined sequence. However, it would be best if you kept in mind that the next phase should not begin before completing the previous one, and there should be no overlapping of the phases. That’s why this SDLC waterfall approach is also known as a linear-sequential life cycle model.
History of Waterfall Model: When does it all start?
- On 29 June 1956, Herbert D. Benington delivered the first presentation describing the use of such phases in software engineering. In 1983, the paper was re-published with Benington’s foreword mentioning that he organised the stages in the model on purpose based on the specialisation of tasks. However, he didn’t use the term “waterfall” in his paper.
- In 1970, Winston W. Royce gave the first formal, detailed diagram of the process cited in his article that later came to be known as the Waterfall model. He introduced five sequential steps that he felt were essential to eliminate most of the development risks associated with the unchanged waterfall approach.
- Although he felt that his model has some flaws, it became the initial point when describing a “waterfall” approach. A paper by Bell and Thayer (1976) believed to be the earliest case of using the term “Waterfall model”.
- In 1985, U.S.S.D. (The United States Department of Defence) used this approach in DOD-STD-2167A (Department of Defense Standard 2167A), United States defence standard. It states that the contractor shall implement an SDLC that includes the following six stages: Software Requirement Analysis, Preliminary Design, Detailed Design, Coding and Unit Testing, Integration, and Final Testing.
The Different Sequential Phases In The Waterfall Model
As already discussed, in the SDLC Waterfall approach, the whole process of software development is split into a sequential series of phases. Typically, the result of one phase acts as the input for the upcoming phase. The following illustration represents different sequential stages of the Waterfall model. Since the diagrammatic representation shows the steps falling from a higher level to a lower level, like a waterfall cascade, this model gets the name ‘Waterfall’.
Activities involved in different stages of Waterfall Model
Requirement and Analysis
- Understanding the exact requirements of the customers and documenting them correctly
- Noting all the functions, performance and connecting requirements with the customer and developer.
- Brainstorming and studying the requirements by going through a step-by-step analysis
- Creating Software requirement Specification (SRS), a detailed document describing what the system will do in the common language
- This phase talks about the “what” of the system and now “how.”
- Transforming the requirements collected in the SRS into a suitable form which allows further coding in a programming language.
- Describing the overall software structure with detailed design.
- Documenting the design, also known as Software Design Document (SDD).
- Implementing the design as per SDD by developing small programs called ‘units’.
- Testing the functionality of the codes through Unit testing.
- Integrating the codes in the next phase.
Integration and System Testing
- Integrating the unit tested codes into a complete system
- Functional and Non-functional testing to ensure that the system meets the requirements.
- Determining the quality of the end product through comprehensive system testing.
- Reporting the issues if found any anomalies.
- Tracking the testing progress through tools like ALM, traceability matrix, etc.
- Deploying the final tested product into the respective customer environment or in the market.
- Performing a sanity check in the environment after software deployment to check whether it functions well or not.
- Ensuring that the software is performing well in the respective environment.
- Providing maintenance and operational support to the customers after the deployment and installation of the software.
- Noting and fixing the issues encountered by the customers, if any.
- Updating the system with the latest features.
When Can You Use The Waterfall Model?
Although the Waterfall model is one of the simplest and straightforward SDLC approaches, you need to consider that you can not use it in certain situations. Below are the cases in which you can use the Waterfall methodology to get the best results:
- When the requirements are clear and well-documented.
- With conditions that are constant and not changing from time to time.
- When the project is small and straightforward.
- The projects in which the technologies and tools used are consistent.
- When the deployment environment is stable.
- Ample resources with expert assistance are available for the products.
What Are The Advantages of The Waterfall Model?
One of the best things about the Waterfall model is that everything happens in a sequence. It means one stage functions only when the resources in the previous stage complete their task successfully. Due to departmentalisation, every phase has control on their level to ensure that one can efficiently perform the functions on their respective phase. Here are some of the significant advantages of Waterfall Model that can make the software development process easy for you:
- It is one of the simplest models to access and implement.
- You require a very minimal number of resources to use this approach.
- Each phase has its own review process to ensure that everything until the previous stage is all good before moving to the next level.
- It is a suitable approach for smaller projects or where customer requirements are well-defined and unambiguous.
- There is no sense of hurry or carelessness. All the phases process and complete one at a time.
- Since all the phases have different functions and responsibilities to perform, assigning tasks becomes pretty easy.
- You can quickly determine the software release date and the total estimated cost of the final product before completing the development process.
- Along with the final testing of the product, unit testing done in the middle of the development process ensures to examine the individual modules of the complete system.
- Elaborated documentation done at every phase helps understand the issues (if any) and figure out the solutions to resolve them.
- The operational and maintenance phase helps fix the problems faced by the customers, which helps get positive feedback from them.
What Are The Disadvantages of The Waterfall Model
Undoubtedly, the SDLC Waterfall approach can be a beneficial software development model for the product owners, yet there are some limitations of this model too. Below is the list of disadvantages of Waterfall Model you should know about before choosing it as your SDLC approach:
- The waterfall model is not suitable for projects that are large or complex.
- You can not use this approach when the requirements are inconsistent or unclear.
- It becomes challenging to return to a phase and make changes when there is a change in need after completing that specific phase.
- Production of working software is not possible until late during the life cycle. Therefore, there can be a delay in delivering the final product as there is no prototype for demonstration.
- Small changes or errors in one phase can cause a lot of trouble in the entire system.
- Since every part requires documentation, it takes much of the time of the testers and developers.
- Although the testers perform unit testing during integration, the final testing of the product takes place in the last stage. Due to this, identifying the risks in the earlier phases becomes very difficult.
With this article, you probably got an idea of the first Software development LifeCycle model and its different phases. The Waterfall methodology is undoubtedly one of the most straightforward and easily comprehensible approaches to software development. Its features make it a preferable choice when working on small and more uncomplicated projects. However, make sure that the project you are working on has consistent and detailed customer requirements; otherwise, you can face challenges during the software development process.