Waterfall modelIt is a software development model originally proposed by W. W. Royce in 1970. Waterfall development is an old computer software development method.
Waterfall modeling is the most typical predictive approach, strictly following the pre-planned sequence of requirements analysis, design, coding, integration, testing, and maintenance. Step results are used as a measure of progress, such as requirements specifications, design documents, test plans, code reviews, and so on.
The main problem with the cascade is that it reduces the degree of freedom due to strict grading, and the early commitment of the project makes it difficult and costly to adjust for changes in late demand. Waterfall approach is almost impossible when the requirements are uncertain and the project may change during the process.
Iterative developmentIt’s also calledIterative Incremental DevelopmentorIterative evolutionary development，It is a software development process contrary to the traditional waterfall development. It makes up for some weaknesses in the traditional development method and has higher success rate and productivity.
What is iterative development?
Each time only part of the product is designed and implemented, the step-by-step approach is called iterative development, and each design and implementation phase is called an iteration.
In an iterative development approach, the entire development effort is organized into a series of short, fixed-length (e.g. three-week) small projects, known as a series of iterations. Each iteration includes requirements analysis, design, implementation and testing. In this way, development work can be initiated before the demand is fully determined.In some iterations, some functions of the system or the development of business logic are completed. Then we can refine the demand through customer feedback and start a new round of iteration.
The advantages of iterative development are:
- Reducing risk
- Get early user feedback.
- Continuous testing and integration
- Use changes
- Improve reusability
Spiral development，1988In 1997, Barry Boehm officially published the “spiral model” of software system development, which combines waterfall model with rapid prototyping model, emphasizing the risk analysis ignored by other models, especially for large and complex systems.
“The spiral model is very small at first, and gradually develops when the project is defined better and more stable.
“The core of the spiral model is that you don’t have to define everything in the beginning. You take it easy, define the most important functionality, implement it, listen to your customers, and then move on to the next stage. So constantly repeat, until you get satisfied with the final product.
- Make plans: determine software objectives, select implementation plans, and identify the constraints of project development.
- Risk analysis: analyze and evaluate the options and consider how to identify and eliminate risks.
- Implementation of projects: implementation of software development and validation;
- Customer assessment: evaluate development work, put forward amendments and make the next plan.
The spiral model is largely a risk-driven methodological system, because risk assessment must be done before each phase and before recurring cycles occur.
Agile software developmentalso calledagile development， It is a kind of new software development method which has attracted more and more attention since 1990’s. It is a kind of software development capability to cope with rapidly changing requirements. They have different names, concepts, processes, and terminologies, and place more emphasis on programmer teams and business experts than on “non-agile”Close collaboration, face-to-face communication (believed to be more effective than written documentation), frequent delivery of new software versions, compact and self-organizing teams, code writing and team organization methods that are well adapted to changing requirements, and greater emphasis on the role of people in software development.
- People and interactions are more important than processes and tools.
- Software that can work is more important than a complete and complete document.
- Customer collaboration is more important than contract negotiation.
- Coping with change at any time is more important than following rules.
The content on the right is also valuable, but the content on the left is the most important. People trust each other, but few people can communicate face-to-face.
The main work styles of agile development teams can be summarized as follows:
- Work as a whole;
- Work according to the short iteration period.
- Deliver some results at each iteration.
- Focus on business priorities; check and adjust.
The most important factor is the scale of the project. As scale increases, face-to-face communication becomes more difficult, so agile methods are more suitable for smaller teams, 40, 30, 20, 10 or less. Large scale agile software development is still in active research field.
Comparison between the four:
- Traditional waterfall development, that is, from requirement to design, from design to coding, from coding to testing, from testing to submission, requires that each development stage should be the best. Especially in the early stage, the more perfect the design, the less the cost loss after the submission.
- Iterative development does not require that every stage of the task is the most perfect, but knows clearly that there are many shortcomings, but rather do not improve it, but to build up the main functions for the purpose of the shortest time, the least loss of a “imperfect results” until submission. ThenAnd then through the feedback of customers or users, gradually improve on this “imperfect results”.
- Spiral development, to a large extent, is a risk-driven methodological system, because risk assessment must be done before each phase and before recurring cycles occur.
- Agile development, which emphasizes submitting software in a shorter development cycle than iterative development, may have a shorter development cycle and a greater emphasis on collaboration within the team. Agile methodologies are sometimes mistaken for unplanned and disciplined methods, and in fact, agile methodologies emphasizeAdaptive rather than predictive.
Adaptive methods focus on rapid adaptation to realistic changes. When the needs of the project change, the team should adapt quickly. It may be difficult for the team to describe exactly how the future will change.