SDLC has different models designed which have their advantages and disadvantages. Waterfall model is a traditional SDLC model which will be discussed in this chapter. It is a straightforward and basic structure which can be easily understandable by software developers and testers. It is the first model of SDLC to be introduced for software development.
What is the Waterfall Model?
The classical waterfall model which is also known as the linear-sequential life cycle model is an essential software development model which can be understandable from the structure itself. The model is straightforward yet idealistic. When this model was first introduced, it used to be very popular, but time, the new model has come up with a change in features and requirements and hence it is used decidedly less but still a popular one which everyone must know. All the old software has been developed based on this model's life cycle. It is a sequential model which segregates software development into different phases. Each phase is designed with some unique functionality and use. The model was pioneered in the year 1970 by Winston Royce.
Stages of the Waterfall Model
- Requirement Gathering Stage/Feasibility Study
- Design Stage
- Built Stage
- Integration and Test Stage
- Deployment Stage
- Maintenance Stage
The different chronological phases of the waterfall model are shown below with the interconnection between them:
Requirement Gathering Stage/Feasibility Study
This phase has the purpose to establish whether it would be monetarily as well as technically practicable to expand the development of software. This has the achievability study with the understanding of the problem as well as determines the diverse potential strategies used for solving the problem.
There is a thorough study of the entire requirement specifications from the first phase, and then the system design is equipped. This phase helps developers to specify hardware as well as the system's requirement which ultimately helps in characterizing the system design as a whole.
This phase is also known as the coding phase of software development where the idea is converted into source code and UI plus UX design using programming language and tools. Hence, every designed module needs to be coded.
Integration and Test Stage
Once the coding of application is done, it is then integrated with all other modules with different functionality. During each step of integration, earlier planned modules are incorporated into the parts included the structure of the software and then the entire system is tested.
- α Testing: In this testing, the software is tested by the development team, i.e., the developers.
- β Testing: In this testing, the software is tested by friendly customers and other target users who will use the beta version of your product.
- Acceptance Testing: Once the application has been distributed, the customer carries out the acceptance test for determining if the product should be accepted as delivered or rejects it for further modification.
As all the functional, as well as non-functional tests, are completed, the software is installed in the customer's end or the environment or gets released in the market.
Another important phase of this model is the maintenance model. Updating the product, patching any bugs and errors and developing other essential components as per feedback to make this full software is done in this stage. It is of three types:
- Corrective Maintenance: Corrective maintenance is where the maintenance is done to fix the errors.
- Perfective Maintenance: Perfective maintenance is done where the maintenance is done to increase the efficiency of any system according to customer's requirement.
- Adaptive Maintenance: Adaptive Maintenance is typically necessary for porting your application to a new work environment or porting from one type of OS to another.