Definition
The classical waterfall model is the basic Software development life cycle model(SDLC). It was introduced by Winston Royce in 1970. This model was popular in the past, but it is no longer used. But it is very important to learn because other Software Development Life Cycle models are based on it.
The Classical Waterfall model and Waterfall model are the same. This model is named the “waterfall model” because its diagrammatic representation resembles a cascade of waterfalls.
The flow of the classical waterfall model is sequential and there is no overlap between phases. Apart from that, we can go forward after completing the previous phase. Once we complete the previous phase we can’t go on that phase Again. We have to go forward.
In simple words, the output of the previous phase is the input of the next phase.
The classical waterfall model divides the life cycle into the following phases. As you can see below

Let’s have look at each phase in brief details
Feasibility study: The purpose of this phase is to determine whether developing the software is financially and technically feasible.
Initially, the project manager or team leader tries to get a rough idea of what needs to be done. After that they study different input and output data which is produced by the system. And they also examine what kind of processing is required on the data. After overall understanding then they determine the various possible strategies to solve the problem. And choose the best strategies from possible strategies.
Requirements analysis and specification: The goal of requirements analysis and specification is to know the exact requirement of the client/Customer.
Basically, This phase consists of two phases.
- Requirements gathering and analysis: The goal of the requirements gathering activity is to gather all relevant information about the product to be developed from the customer. The requirement analysis is started by collecting all relevant data of the project from users and customers through discussion. After all inconsistencies, inconsistencies, and incompleteness have been resolved and all requirements have been thoroughly understood. The requirement specification can now begin.
2. Requirement specification: In the requirement specification the user requirements are systematically organized in a software requirement specification document(SRS). This document’s key components are functional requirements, non-functional requirements, and the implementation goal.
Design: The goal of the design phase is to transform the requirements specified in the SRS document into a structure that is appropriate for implementation in some programming languages.
Coding and Unit testing: The goal of this phase is to convert the software design into source code by using any appropriate programming language. After each design module is coded. We perform unit testing that means we check each and every module is working properly or not.
Integration and System testing: Integration as the name suggests in this phase we integrate different modules which were coded and unit tested. In the process of integration and system testing, the modules are integrated in a planned manner. Finally, after all the modules have been successfully integrated and tested, the full working system is obtained. Then we can perform System testing.
Basically System testing consists of the following type of testing.
- Alpha testing: Alpha testing is testing which is performed by the Development team.
- Beta testing: Beta testing is testing which is performed by a friendly set of customers.
- Acceptance testing: After delivering the Software(product) then the customer performed the acceptance testing to determine whether to accept the delivered software(Product) or to reject it.
Maintenance: Maintenance is the most important phase of a software life cycle. The effort spent on maintenance is 60% of the total effort spent to develop a full software.
There are basically three types of maintenance :
- Corrective Maintenance: Corrective errors that were not discovered during the product development phase.
- Perfective Maintenance: This type of maintenance is carried out to improving the functionalities of the system based on the customer’s request.
- Adaptive Maintenance: Adaptive maintenance is usually required for porting the software to work in a new environment such as work on a new computer platform or with a new operating system.
Advantages of Classical Waterfall Model
- Each phase of development must be completed before moving on to the next.
- This model is simple and is easy to understand.
- The model’s stages/phases are clearly defined.
- It reinforces good habits such as define-before-design and design-before-code.
- Suitable for smaller projects with well-defined requirements.
Disadvantages of Classical Waterfall Model
- No feedback path
- No overlapping of phases
- It is difficult to define all requirements at the beginning of a project
- This model is not suitable for accommodating any change
- It does not scale up well to large projects.
- Real projects are rarely sequential.