Necessary Conditions for agile development: "Master teams" and "small projects with predictable cost while software features can drift"
Preface
An extreme is purely predictive development,
The steps are defined in detail in the early stages of the project.
Another extreme is the pure agile process.
No expected steps
Body:
Software Development in the "Network Age" requires continuous implementation of new functions.
The agile software development process focuses on software development in the "Network Age.
Agile Methods use technical and management processes that can continuously adapt
(1) experience changes during development,
(2) Changes to software requirements
(3) Development Environment Changes
Principles:
1. early and continuous delivery of valuable software
2. During the entire development of the project, business personnel and developers must work together every day.
3. Welcome to changes in requirements.
4. software that can work is the main progress measurement standard.
5. The best architecture, requirements, and design come from self-organizing teams.
6. The method for transmitting information is face-to-face communication.
7. Constantly focus on the best technology and good design to enhance agility.
8. Simplicity is fundamental.
9. at regular intervals, the development team will reflect on how to effectively work and adjust their own behaviors accordingly.
Agile development is based on the following assumptions:
Hypothesis 1: the customer must work with the development team to prepare for communication with developers at any time. In addition, face-to-face communication requires developers to be very close to each other.
<1. Lack of support for distributed development environments>
Hypothesis 2: documents and software models do not play an important role in software development.
Hypothesis 3: software requirements and software development environment develop with the development of software development.
Hypothesis 4: dynamically adapts to the development process of constantly changing projects and product features, and is more likely to develop high-quality products.
<2. Lack of support for the subcontract:>
Hypothesis 5: developers have the experience to correctly define and adapt to the process.
Suppose 6: The visible performance of the project is mainly obtained through incremental and some measurement transmission.
Assumption 7: strict assessment of software products (products and processes) is limited to regular informal reviews andCodeTest.
Hypothesis 8: reusability and versatility should not be application-oriented.ProgramThe goal of the software development process.
<3. Lack of support for creating reusable products>
Suppose 9: The cost of a change does not increase significantly over time.
Suppose 10: the software can be incrementally developed.
Suppose 11: no design is required for the change, because any change can be effectively handled by refactoring the Code [9].
<4. Lack of support for large-scale team development:>
<5. Lack of support for software with strict security requirements for development>
<6. Lack of support for developing large and complex software>
Based on so many assumptions, what projects can be used for agile development?
Conclusion:
Due to the characteristics of agile development, it is difficult for a commercial software development team to Adopt agile development.
Appendix: For more information, see <Non-programmers> limitations of 40 agile software processes.