The classical waterfall model is a theoretical model and is not used practically.
But still it is important to understand this model as all the other models that we will discuss is based on classical waterfall model in one way or the other.
The waterfall model is divided into various phases.
The different phases of this model in sequence are:
Requirement analysis and Specification
Integration and system testing
Phases of waterfall model is explained through the following diagram:
Development phase: All the phases starting from feasibility study to the integration and system testing phase comes under development phase.
The software product is developed during development phase and at the end of this phase product is in deliverable state.
Once the development phase ends the Maintenance phase starts.
Project Management deals with managing the effort and resources required at each stage of the life cycle.
We will study about each of the phases in Waterfall model one by one.
This activity is used to check if it is:
financially feasible to develop the product
technically feasible to develop the product
During this stage, analysis of the problem is done and all the data related to the product to be developed is collected. Data collected can be all entities that would serve as input to the product system, output data that product system produces, any constraints, etc.
These study helps to analyze and decide:
crystal clear and abstract problem definition
identification of possible ways to solve the problem.
Analysis of different ways, and examining their outcome, benefit and drawbacks.
This activity is aimed at transforming the SRS document requirement into a software architecture. This is required to help begin the implementation in some programming language.
We have two different design approach:
Traditional design approach
Object Oriented approach
Coding and unit testing
The coding phase is also known as implementation phase since the design is implemented in this phase with suitable programming language.
In this phase, the design is translated into source code utilizing any suitable programming language.
Every component from the design phase is coded as a module.
Once the coding is complete each module is unit tested to check the correctness and consistency of each individual module independently.
Integration and System testing
Once the coding and unit testing is complete integration of different modules commence. Step by step different modules are integrated and tested until all modules are combined to create the product system.
After every integration process, system testing is carried out to ensure the product in making is in accordance with requirement laid in SRS document.
System testing is of three types:
α-testing → It is performed by development team
ß-testing → It is performed by a friendly set of customers
Acceptance testing → It is performed by customer to confirm whether the product is as per their requirement or not.
Once the product is delivered to the customer the mintanance phase starts. It involves fixing of issues that comes in client environment.
Maintenance is the most time and resource consuming of all the phases.
It is performed as any of the following activity:
Shortcomings of Classical Waterfall Model
Classical waterfall model resembles to the flow of water downwards. In this model, it is considered that before the transition from one phase to next phase happens, the first phase completes all the activities flawlessly. So there is no scope to go to backward phase to rework and correct the error. In practical world, developers makes number of mistakes which needs to get corrected at some point as detected.
In classical waterfall model all the phases are assumed to occur sequentially (as shown in above diagram). But in actual, it doesn't happen in most of the cases. For example, testing phase will not start only after the development phase is complete. Industries to utilize manpower effectively may start testing of the completed modules before the complete system is developed. So two phases may overlap.
Classical waterfall model assumes that all the requirement is explained clearly at the beginning of the project based on which the actual development work starts. But its not at all the case. The requirements may change and we need to ammend those changes going back phase. But in this model going to previous phase is practically not possible so any changes in requirement may not be be possible to get implemented
Due to above shortcomings, classical waterfall model may practically be difficult to use in real life projects.
In real life project several iterations through different phases of waterfall may be required to completely develop the project. So other models are built on top of waterfall model ideology with certain modifications.
But irrespective of the life cycle model which the project follows, the final document is written to reflect a classical waterfall model of development.