I assume you have a fair understanding of Software Development life cycle or you have visited my previous blog post for the Software Development Life Cycle.
As the name suggests, it acts like a waterfall where the user is not allowed to come back to the previous phase. The forward-moving approach of software development looks like a waterfall that’s why this name came into a highlight. It is one of the first process models of Software Development in the industry and very much popular with name linear sequential. It is quite simple to implement and understand this model, that could be the reason this model becomes so popular and most usable model in an early stage. Winston Royce in 1970 is the person behind this software model, surprisingly waterfall model does not mention by him during his article.
Principle of Waterfall Model
Unless and until you do not complete the existing phase, you cannot move to the next phase of development. Ultimately there is no overlapping of phases allowed in this model. This model is divided into multiple phases and each phase output is considered as input for the next phase.
Phases in Waterfall Development Model
Requirement Gathering and Requirement Analysis: In this phase, we try to collect all requirements from the client and document it for our use. In other words, it is a phase where we communicate with the client and get to know what they want in terms of software.
Designing: Requirement gathered in the previous phase is considered as input for this phase. In this phase, we read the complete requirement and prepared system design. With the help of system design, we determine the required hardware and software. It also helps to develop system architecture.
Coding / Development / Implementation: By considering system design as input from the previous phase we start developing the actual software in this phase. In the early stage of this phase, we start developing small programs called units. Each unit developed in this phase has to undergone through unit testing. Usually, developers are responsible for unit testing, not the testing professionals. Each unit should be functionally stable and working as per expectations.
Integration and Testing: Units developed in the previous phase are integrated with each other and create complete software. After successful completion of the integration of units, testing professionals need to start with testing activity. All the faults and failure need to be recorded in this phase only.
Deployment: After successful execution of functional and non-functional execution we need to start with deployment activity. In deployment phase system needs to make operational in a live environment.
Maintenance: Once the system goes into production, we need to keep track of the performance of the system. Issues popped up in the live environment needs to verify and fixed in patches. If there are major improvement changes are their then release has to be done with all changes. Basically, maintenance is the phase where we deliver the changes in the system but in the customer environment.