1. Waterfall ModelIt was a software development model first proposed by W. W. Royce in 1970. waterfall development is an old method of computer software development.
Waterfall Model is the most typical method of foresight. It strictly follows the steps of pre-planned demand analysis, design, coding, integration, testing, and maintenance.
Step results are used to measure the progress, such as requirement specifications, design documents, test plans, and code reviews.
The main problem with waterfall deployment is that its strict classification reduces the degree of freedom, and the early project commitment makes it difficult to adjust the later demand changes,
High cost. The deployment method is basically unavailable when the demand is unknown and may change during the project.
2. iterative developmentAlso knownIterative incremental developmentOrIterative and evolutionary developmentIs a software development process opposite to traditional waterfall development. It makes up for some weaknesses in traditional development methods and has a higher success rate and productivity.
What is iterative development?
Each time, only part of this product is designed and implemented,
The step-by-step method is called iterative development,
Each design and implementation stage is called an iteration.
In the iterative development method, the entire development work is organized into a series of short,
Small projects with a fixed length (such as 3 weeks) are called a series of iterations.
Each iteration includes requirement analysis, design, implementation, and testing.
With this method, the development work can be started before the requirements are fully determined,
And completes the development of some functions or business logic of the system in an iteration.
Then, the customer's feedback is used to refine the demand and start a new round of iteration.
Advantages of iterative development:
1. Reduce Risks
2. Get Feedback from early users
3. Continuous testing and integration
4. change of use
5. Improve reusability
Spiral developmentIn 1988, Barry Boehm officially published the "spiral model" for Software System Development. It combines the waterfall model with the rapid prototyping model, it emphasizes the risk analysis neglected by other models and is particularly suitable for large and complex systems.
At the beginning, the "Spiral Model" was very small. when the project was defined better and more stable, it gradually began to expand.
The core of the "Spiral Model" is that you do not need to clearly define everything at the beginning. You can easily get started, define the most important function, implement it, listen to the customer's opinions, and then enter the next stage. This process repeats repeatedly until you are satisfied with the final product.
(1) Develop a plan: Determine the software objectives, select the implementation scheme, and clarify the constraints of project development;
(2) Risk analysis: analyzes and evaluates the selected scheme and considers how to identify and eliminate risks;
(3) Implementation Project: implement software development and verification;
(4) customer evaluation: evaluates the development work, proposes amendments, and develops the next plan.
The spiral model is a risk-driven method system to a large extent, because risk assessment must be carried out before each stage and before frequent loops.
Agile Software DevelopmentAlso knownAgile DevelopmentIt is a new software development method that has aroused widespread attention since the 1990 s. It is a software development capability that responds to rapidly changing needs. Their specific names, concepts, processes, and terms are different, compared with "non-agile ", more emphasis is placed on close collaboration and face-to-face communication between the programmer team and business experts (more effective than written documents) frequent delivery of new software versions, compact and self-organized teams, code compilation and team organization methods that can well adapt to changing requirements, and focus more on the role of human in software development.
- Human and InteractionFocuses on processes and tools.
- Software that can workFocuses on comprehensive and complete documents.
- Customer collaborationOver contract negotiation.
- Respond to changes at any timeMore than regular.
Although the content on the right also has its value, the content on the left is the most important.
People trust each other, but they can communicate with each other face to face.
Agile development of projects:
The agile development team can work in the following ways: as a whole; according to short iteration cycle; deliver some results each iteration;
Focus on business priority; check and adjust.
The most important factor is probably the scale of the project. As the scale grows, face-to-face communication becomes increasingly difficult,
Therefore, agile methods are more suitable for small teams, with 40, 30, 20, 10, or fewer people.
Large-scale agile software development is still under active research.
Comparison between the four:
TraditionalWaterfall DevelopmentThat is, the process from requirement to design, from design to coding, from coding to testing, from testing to submission should be the best in every development stage.
Especially in the early stage, the more perfect the design, the less cost loss after submission.
Iterative developmentThe task at each stage is not required to do the most perfect job, but to clearly know that there are still many shortcomings, but not to improve it, but to set up the main functions first, in the shortest time,
The minimum loss is to complete an "imperfect outcome" until it is submitted. Then, through feedback from customers or users, we will gradually improve this "imperfect outcome.
Spiral developmentTo a large extent, it is a risk-driven method system, because risk assessment must be carried out before each stage and before frequent loops.
Agile development,Compared with iterative development, both emphasize submitting software in a shorter development cycle, but agile development may have a shorter cycle, and emphasize high collaboration among teams.
Agile Methods are sometimes mistaken for unplanned and disciplined methods. In fact, more specifically, Agile Methods emphasize adaptability rather than foresight.
Adaptive methods focus on quickly adapting to actual changes. When the requirements of the project change, the team should quickly adapt. It may be difficult for this team to describe exactly what will happen in the future.
Comparison of software development modes (waterfall, iteration, spiral, and agile)