If you like these articles, click here to subscribe to this blog
Overview
The waterfall model is not new. It appeared around 1970, but most developers only have a vague concept about the waterfall model. In essence, it is a software development architecture, and the development process is carried out in a series of stages in sequence. From System Requirement Analysis to product release and maintenance, loop feedback is generated at each stage, therefore, if any information is not covered or an error is found, it is best to "return" the previous stage and make appropriate modifications. The development process is "Flowing" from one stage to the next stage, this is also the origin of the waterfall development name.
This model has many variants, each of which is slightly different in the stage name. However, in general, the waterfall development model can be dividedSix different stages, Which is defined as follows:
1. Requirement Analysis:Although this is the first step, this step is crucial because it contains information about the customer's needs and definitions and the clearest description of the problems to be resolved. The analysis includes understanding the customer's business environment and constraints, the features required by the product, the performance level required by the product, and the external systems that must be compatible.
Technologies used at this stage include interviewing customers, use cases, and software-specific "shopping lists ". The results of the analysis phase are usually a formal requirement statement, which is the initial information for the next stage.
2. Design:This step includes defining hardware and software architectures, components, modules, interfaces, and data to meet specified needs (Wikipedia )." It includes the definition of hardware and software architecture, the determination of performance and security parameters, the design of data storage containers and restrictions, the selection of integrated development environment (IDE) and programming language, and specify policies for exception handling, resource management, and interface connectivity.
This stage also emphasizes the design of user interfaces, including issues related to browsing and availability. The output of this stage is one or more design manuals, these instructions will be used in the next phase.
3. Implementation:This step includes building a product based on the design specification. Generally, this stage is implemented by the development team. The development team includes programmers, interface designers, and other experts, tools they use include compiling software, debugging software, interpreting software, and media editing software.
At this stage, one or more product components will be generated based on each encoding standard and have been debugged, tested, and integrated to meet the needs of the system architecture. For large development teams, we recommend that you use a version control tool to track the changes in the Code tree, so that you can restore the previous version when a problem occurs.
4. test:At this stage, both independent components and integrated components will be systematically verified to ensure that there are no errors and that they fully meet the requirements set in phase 1. An independent quality assurance team will define "test instances" to assess whether the product fully meets the requirements or only partially meets the requirements.
Three testing methods are available: unit testing for independent code modules, system testing for integrated products, and acceptance testing by customers. If any defect is found, the problem will be recorded and reported to the development team for correction. At this stage, product documents will be prepared, evaluated, and released, such as user manuals.
5. installation:After the product passes the test and is identified as meeting the requirements, it will enter the installation phase, which includes the installation and use of the system or product at the customer site, this can be done through the Internet or physical media. Generally, the products delivered with the official version number will facilitate future product upgrades.
6. Maintenance:This phase occurs after installation, including modifying the entire system or a component to change attributes or improve performance, these modifications may be due to changes in customer requirements or defects not covered in system usage. Generally, modifications to the product during the maintenance phase will be recorded and New Release versions (called "maintenance versions" with updated versions) will be generated to ensure that customers can benefit from the upgrade.
Advantages
The waterfall model above provides many advantages for software developers. First, the software development model of this stage sets out the following rules: each stage has a specified start point and end point, the process can finally be identified by customers and developers (by using milestones). The requirements and design are fully emphasized before the first line of code is written, which avoids the waste of time and the risk of ticket jumping, at the same time, the customer's expected needs can be ensured as much as possible.
Extracting requirements and designs improves product quality, because it is much easier to capture and correct possible vulnerabilities in the design phase than in the test phase, after all, it is much more complicated to track specific errors after component integration. Finally, the waterfall model can help achieve effective knowledge transfer when the team members are scattered in different locations because the standard statement is generated in the first two phases.
Disadvantages
In addition to the obvious advantages, the waterfall model has also been criticized recently. The most prominent point is to analyze the needs. Generally, customers do not know what they need at the beginning, the waterfall model focuses on capturing requirements and design, but in this case, the recurrence of the real world shows that the waterfall model is somewhat impractical.
In addition, even given customer needs, it is very difficult to estimate the time and cost within a certain range of accuracy (recommended by the waterfall model) based on these needs. Therefore, it is recommended that you use the Waterfall Model in projects with clear initial requirements and relatively stable requirements.
In addition, the criticism points out that the waterfall model also assumes that the design can be converted to a real product, which often causes developers to get into trouble at work. Generally, A reasonable and feasible design scheme is often expensive or difficult in reality, so it needs to be re-designed, thus undermining the clear Stage Boundaries in the traditional waterfall model.
Some critics also pointed out that the waterfall model implies a clear division of labor, which divides developers into "designers", "programmers", and "Testers", but in reality, such a division of labor is neither realistic nor efficient for software companies.
Customer requirements
Although the waterfall model has aroused a lot of criticism, it is still effective for many types of projects. If it is used correctly, it can save a lot of time and money. For your project, whether or not to use this model depends on whether you can understand the customer's needs and the extent to which these requirements change in the project process. For frequently-changing projects, the waterfall model has no value. In this case, you can consider other architectures for project management, such as the spiral model method. Of course, this is another thing, we may discuss these methods later.