The Waterfall Model – Introduction
The Waterfall Software / System Development Life Cycle model is a cascading, consecutive approach to systems development. The model follows the principle SDLC phases step by step in a logical manner as they are detailed, beginning with planning and/or a requirements analysis and working sequentially all the way to the deployment and maintenance stages. The waterfall model allows for the absolute completion of each stage in a gradual and consistent manner. In almost all cases when the waterfall model is correctly employed, the deliverables of each stage should act as the basis for the following stage and each phase must be completed before the next phase can begin.
The Waterfall Model – Use Cases
The waterfall model typically suits projects where:
- The system requirements have been outlined clearly and in detail.
- The project has been clearly defined and is unambiguous.
- The project can be completed in a reasonably short period of time.
- For projects where the technology required to develop the system already exists.
Furthermore, the waterfall model is universally one of the easiest models to understand and to apply.
The Waterfall Model – Stages
There are 7 stages involved in any SDLC. Each is discussed in relation to the waterfall model below.
1. Planning Stage
The planning phase is the initial stage of the waterfall SDLC. During this phase, the development team need to formulate a plan of what is needed from the software / system / application. The planning stage will identify the client’s current problem/s by getting input from all of the project stakeholders and conducting a requirements analysis. By doing this, the strengths and weaknesses of any existing systems will be noted and the needs of the new system/s will be discovered. The planning section should be carried out simultaneously with the requirements analysis
2. Requirements Analysis Stage
To carry out a requirements analysis is to define the requirements and expectations of the client and the eventual end users of a system that is to be developed. It can usually involve a variety of tasks that will figure out those user and system requirements. These requirements needs to be tailored to optimise the client’s business processes i.e. to make life easier for the workers. A well-executed requirements analysis stage will focus on gathering, validating and analysing relevant information about a business, the business’ processes, the system and the eventual end users.
3. System Design Phase
The software design phase of the SDLC comes following the planning/requirements analysis stages. During the planning phase, the team should have devised a detailed plan of what is needed from the software. The plans should have outlined the requirements of the system/software along with the cost and resources needed. Specification documents would have been produced that will now be used to design the system.
The primary aim of the software design phase is to deduce how to achieve that which is outlined in the specification documents. This stage will begin by converting those specifications into a design document called the Design Specification. All project stakeholders will be asked to review this plan and to offer feedback and other suggestions. It is important to have a plan for collecting stakeholder input for this document. Failure at the software design phase will most certainly result in cost overruns at best, and the total failure of the project at worst.
4. System Development Phase
The development phase of the waterfall SDLC should only ever come following completion of the planning and design stages. Failure to sequentially follow the preceding steps will almost certainly result in difficulty, if not total failure. When employing the waterfall model, the development step is entirely dependent on the plans, documents, blueprints and models that were produced throughout the earlier phases.
Although it can typically be the longest phase of the life cycle, if the correct steps were taken before the build begins, it can actually be the most straightforward stage of all.
In the build stage, work is to be divided into manageable modules or components and allocated to each of the developers. A suitable programming language or tech stack would’ve been decided upon during the design step. The developers will follow the coding guideline associated with the language/languages. A selection of tools will be utilised by the programmers to generate and manage code and to carry out the build, such as; an integrated development environment (IDE), a compiler, an interpreter, some version control software and an emulator.
5. Testing Phase
Following the build phase of the waterfall model, the process of testing the newly developed system should take place.
Software testing is a process that examines the functionality and accuracy of the system against the specifications that would’ve been outlined in stages 1 and 2. Checks will be made to ensure that all user and system requirements have been met, and that the general functionality is up to standard. Negative test results will allow the development team to refine the build, in order to improve the reliability and quality of the software. Testing tends to be an expensive and prolonged process. That being said, it is also imperative part of the development life cycle.
The aim of the testing stage is to cause the system to fail. A successful testing process is one that identifies bugs and irons them out. It involves a quality assurance team running through the program with the explicit goal of finding errors. Read more about testing here.
6. Deployment Phase
The deployment phase is the second last stage of the software development life cycle. The primary objective of the deployment process is to make the completed system operational. Therefore the deployment stage involves the roll-out of the product / system. Following the success of the testing step, the system should be ready to go live, meaning that the application is prepared to be used by real users in the real environment. The system developers need to be conscious that some training of the end users might be necessary.
7. Maintenance Phase
Finally comes the maintenance stage. This stage is where the IT team of the development company offer support to the users of the system. The goal of maintenance is to make sure that the requirements of the users and the systems are continuously met and that the system consistently behaves accordingly as per the requirements specification. Furthermore, projects rarely turn out perfectly as planned. The maintenance phase also allows for constant and further debugging of any problems that could have been missed in the testing stage, as well as updates to match any advancement in systems reality.