Iteration means that we clearly acknowledge the incompleteness and incompleteness of information and knowledge, and the success of the project requires a certain degree of completeness.
The contradiction between the limitations of cognition and the conditions for success has contributed to a general method for solving such problems: Progressive trial and error methods.
Error Method reference 1: http://en.wikipedia.org/wiki/Trial_and_error.
For more information about the trial and error methods, refer to problem solving and knowledge acquisition. That is, you can use a system or random method based on existing experience to try out various possible answers. When the problem is relatively simple or the scope is relatively limited, the method of trial and error has a certain effect. When trying a trial or error, you can select a possible answer to apply it to the problem to be solved. If it is not effective, select another possible answer and try again. The entire process ends when an appropriate possibility arises.
For more information about trial and error methods, see "false positive. This means that people should boldly propose hypotheses and guesses, and then look for examples that do not match this hypothesis. Correct the hypothesis based on examples, repeat the process, and even deny the original hypothesis. There is no end to the revision and improvement of the trial and error method. The result of the trial and error method can only be a good hypothesis, but it is not the best one. The best hypothesis is synonymous with the ultimate truth, contrary to the scientific spirit
Trial and error methods are widely used in natural science.Iterative development is the application of trial and error methods in the software development process.
Incomplete Information and knowledge include at least the following:
Customers' real intentions
Real customer business rules
Constraints on customer projects
Rationality of the adopted solution
Rationality of the adopted Technical Architecture
Technical defects
Unpredictable changes, including changes in business rules and external environments
We can only give a preliminary solution to the current understanding of the above issues, and then everyone, including customers and developers, will criticize the solution based on the running situation of the solution, propose constraints or requirements that cannot be met, and revise the solution later. this repeats until an acceptable error level. (For the last one above, iteration uses a short cycle to reduce the waste caused by changes .)
The core of iteration is now here.
Other problems are caused by some additional properties specified by current iteration practices, such as "fixed iteration cycles". The problems are as follows: will the time box iterative deletion task fail to meet the original development plan?
This question is excerpted from the FAQ Of The Taiji agile school. The explanation of this question does not touch the essence of the following iteration:
In iterative development, the "original Development Plan" is not unchanged. with the gradual completion of information and knowledge, we will adjust the "original Development Plan" accordingly ". (Taiji's interpretation mentions the uncertainty of the plan: "the plan, and the actual implementation of the Plan, are two different concepts. Determination is different from reality. Therefore, we say that tracking and ensuring the execution of the plan is more important than developing a perfect plan. "The subsequent ideas are still ensuring the implementation of the original plan, there is no adjustment to the original plan for the test rate)
Just like the result of the trial and error method, the final result of iteration does not need to meet the "original Development Plan", as long as the customer can criticize it, agile development has other means to ensure this as much as possible. For example, the development priority is arranged according to the rules recognized by the customer, even if all the features are not completed at the end, however, for customers, features with higher priority have long been running, leaving some low-priority features that can even be discarded. taiji agility is not even mentioned, reflecting its isolated understanding of agile/iterative development.
Other statements:
The trial and error are intended to get feedback. In the iteration process, you do not need to do something. One of the reasons is that you do not need feedback from that aspect.
Iteration also provides a natural opportunity for "review". The information obtained during the trial Miss process needs to be summarized and summarized, abstract, learned and learned, and updated accordingly.
Of course, the above discussion is based on the trial and error method. if this theory is not suitable for software development, the above discussion is meaningless. then we will use the trial and error method to check whether it is suitable for software development:
Assuming that it is suitable, the reason is that it can help solve the problems mentioned above, such as gradually figuring out "the real intention of the customer, the real rules of the customer's business, and the constraints faced by the customer's project, the rationality of the adopted solution, the rationality of the adopted technical architecture, and the defects of the adopted technology are as follows, if possible, provide a better solution.