Winston Royce proposed the famous "Waterfall Model" in 1970. It was the only widely used software development model until the early 1980s S.
The core idea of the waterfall model is to simplify the problem by process, and separate the Implementation and Design of functions to facilitate the division of labor and collaboration. That is, the logical implementation and physical implementation are separated by structured analysis and design methods. Divides software lifecycles into planning, requirement analysis, software design, Program Writing, software testing, operation and maintenance, and other six basic activities, and set a fixed order of top-down and interconnection, like waterfall flow, falling down step by step. 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.
Waterfall Model is the earliest software development model, which plays an important role in software engineering. It provides the basic framework of software development. The process is to receive the work object of the activity from the previous activity as the input, and use this input to show the work results of the activity for implementation of the activity, and send it as output to the next activity. Review the implementation of the activity at the same time. If confirmed, the next activity will be continued; otherwise, the previous or even more previous activities will be returned. The waterfall model has no value for frequently-changing projects. (Software process using Waterfall Model)
Advantages and disadvantages of Waterfall Model
1. the waterfall model has the following advantages:
1) provides checkpoints by phase for the project.
2) After the current phase is completed, you only need to pay attention to the subsequent stages.
3) the waterfall model can be applied to iterative models.
Incremental iteration is applied to the waterfall model. Iteration 1 solves the biggest problem. Each iteration generates a runable version and adds more features. Each iteration must undergo quality and integration testing.
2. the waterfall model has the following Disadvantages:
1) there is very little feedback between various stages of the project.
2) The results can only be seen later in the project lifecycle.
3) track various project phases with too many mandatory completion dates and milestones.
Customer requirements of the waterfall model
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.
In the waterfall model, various activities of software development are carried out in a linear manner. The current activity accepts the work results of the previous activity and the work required for implementation. The work result of the current activity needs to be verified. If the verification is successful, the result is used as the input for the next activity to continue the next activity. Otherwise, the modification is returned.
The waterfall model emphasizes the role of the document and requires careful verification at each stage. However, the linear process of this model is too idealistic. It is no longer suitable for modern software development models and almost abandoned by the industry. The main problem is:
(1) The division of each stage is completely fixed, and a large number of documents are generated between stages, greatly increasing the workload;
(2) because the development model is linear, the user can see the development results only at the end of the entire process, thus increasing the development risk;
(3) Early errors may not be detected until the test phase at the end of the development stage, resulting in serious consequences.
According to the stages of the waterfall model, software testing can be divided into unit testing, integration testing, and system testing.