The Waterfall model is one of the best known applications of the Systems Development Life Cycle model (or SDLC), commonly used in the information systems, software, and systems engineering fields. The model is a sequential design process and gets its name from the visual depiction of progress, following the methodology looking like a waterfall as it steadily progresses downward through its phases. The Waterfall model originated from highly structured physical environments that see a high cost associated with after-the-fact changes being made to the system or product being created. Previously a hardware orientated model, the Waterfall method was adapted for software engineering where it has been used for several decades.
How does the Waterfall Model Work?
The Waterfall model is considered the classic approach to implementing SDLC and has a development process that is both sequential and linear in nature. Each phase of the model consists of unique or distinct goals. Once a waterfall phase is completed, the development process continues to the next phase with no overlap between phases. Although the method is not considered suitable or the perfect match for many project teams found in industry, elements of the model or modified versions continue to be employed.
Waterfall Model Phases
The first formal declaration or description of the Waterfall model occurred in an article that Winston W. Royce wrote in 1970. Royce defined seven phases or steps in his description, which, although slightly renamed based on the academic or person writing about the method, have remained consistent to this day.
Requirements: During the requirements phase, brainstorming and research regarding the project is conducted. Ultimately, the purpose of the system or application to be developed is determined or agreed upon.
Design (Basic): The software system’s (high level) basic design is thought out and described. However, this phase is not yet at the technical detail level. Tools such as UML and even prototype software can be developed based on the processes in place for the project team.
Technical Design (Detailed): Functions of all software components and engineering modules or units are determined. Technical specifications are created in this stage at the level that can be handed off to the implementation team at the phase’s conclusion.
Implementation: Source code is written to implement the detailed design created in the previous phase.
Testing (Verification): The project design is tested to ensure that it accomplishes the goals and tasks laid out for the system. Any errors in the previous phases will arise in this stage of the project.
Integration: The project team deploys or places the system in service once testing is completed. For extremely large projects or systems, the integration phase can prove to be one of the most challenging if the testing phase does not suitably simulate the deployment environment.
Maintenance: The maintenance phase ensures that the software or system works as intended. For modern project teams, this phase can become a project of its own based on the development contract terms with the customer.
The Waterfall model is intended to progress to the next step in the development process without looking backwards. The process can have a number of advantages and disadvantages based on the goals of the development team trying to determine what process to implement.
Advantages of the Waterfall Model
The advantages of using the Waterfall model for development include the ability for greater managerial control and departmentalization. Schedules can be set with discreet deadlines for each stage of the development model, similar to visualizing a car moving through a car wash. In theory, applications developed via the method can be delivered on time in a more consistent fashion. As a result of the structure found in the method, it is popular with larger organizations that require greater feedback to management for development processes.
Disadvantages of the Waterfall Model
The biggest disadvantage of the Waterfall development model is that there is not much room for iterative development or revisions to take place. As a result, once an application reaches the testing stage, it can be very cost prohibitive for project teams to revisit earlier stages of the development process. Even more significant are errors discovered in the concept or early design phases when employing the Waterfall since the process does not allow the phases to overlap. Some popular alternatives to the Waterfall include the Sashimi waterfall (overlapping Waterfall model), Rapid Application Development (RAD), build and fix, iterative development, and the spiral model.