The Waterfall Software Development Process is a linear, sequential approach to the Software Development Life Cycle (SDLC). It is often referred to as the traditional approach, as it was the first established approach to software development. Over the years, Agile has surpassed Waterfall in terms of popularity, however, Waterfall is not dead. Let’s look at some common elements of Waterfall, what it looks like, and the specific stages that make up the core process.
Under the Waterfall methodology, the software development process is chunked into phases, which can only be completed in chronological order. The output of each phase must be completed and signed off before the next can start, so progress is seen as a flowing downward stream through the line of handovers, like a waterfall. The only way to return to a previous phase is to start over at the beginning of the SDLC. The completion of each phase marks key milestones in the SDLC, and the lead time to completion of the final product can be predicted based on the estimated time to complete the remaining phases.
The Six Phases of Waterfall
- System Requirements: The first phase in the Waterfall software development process is creating comprehensive documentation of the customer’s requirements and specifications for the software. This is a key aspect of Waterfall and it is assumed that the customer has a robust picture in mind of what they want to achieve with the software and all specifications required. The documentation will include a plan for acceptance testing, so further customer involvement is not needed until the product is complete and all specifications will be met.
- Analysis: The requirements from the customer are analysed and studied to identify the functions and properties that must be offered to meet these. A system design is created, and solution strategies are developed.
- Design: Software architects develop a concrete solution following the system design, and build a detailed construction plan for the software, including test plans for specific requirements.
- Coding: Developers use the information outputs of the previous phases and start coding to create a functioning piece of software. All the models, business logic, and service integrations that were specified in the previous phases are put into action.
- Testing: During the testing phase, software testers work to systematically discover and report issues within the software that need to be addressed. The discovery of bugs may result in a ‘repeat’ of previous coding phases until all bugs have been resolved.
- Operations: Following the completion of the test phase, the completed software is deemed ready to be handed over to the client for ‘go-live’; the software is ready to be deployed into the customer’s live environment. The operations phase includes any subsequent support and maintenance that may be required to keep the software functional and up to date.
Any major issues that cannot be resolved during the testing or operations phase may trigger a return to the start of the process for reevaluation of the product.
The Application of Waterfall in Software Development
Organisations that use Waterfall typically organise their employees into teams based on the stage of the software development process they execute. For example, all the analysts sit together, all the developers (coders) sit together, and all the testers sit together. As the Waterfall approach is linear, and each phase exists largely in isolation, once a phase has been completed, those involved in that phase (i.e. customers, developers, testers, etc.) may cease to play a role in the development of the software. For example, once the customer’s requirements have been collected in the initial phase, there are usually no further interactions with the customer required until the product has been completed.
Waterfall is often used for large projects coupled with infrastructure, or software with rigid specifications that have to be met and are unlikely to change. Examples of projects with rigid specifications include those for the military, government, or NASA. Waterfall is sometimes also preferred for projects with hard deadlines, such as a release date for a video game, since Waterfall has a linear sequence of phases that can be time-bound to ensure on-time completion.