Agile development process

Agile software development advocates the software development method of "individual and collaboration is better than process; working software is better than complete documentation; customer collaboration is better than contract; responding to changes is better than following plans", with people as the core, focusing on communication and collaboration, Emphasis on sustainable software development to achieve frequent delivery of the most important value to customers.
  Agile software includes three parts: agile project management, agile requirements management and agile software methods.

  1. Agile project management

  Agile is an attitude rather than a process, an atmosphere rather than a method. Agile project management emphasizes communication: communication with customers, communication between project members. Based on this idea, agile project management pays more attention to the role of "people", and requires the organizational form of the project to have the following characteristics:

  1. Strong cultural adaptability.

  2. Minimum rules that encourage self-organization, combined with self-discipline to follow which rules.

  3. Good collaboration and communication environment.

  From the above three points, it can be seen that agile project management has very low restrictions on people, which is completely different from the traditional software engineering that manages "people" as a link in the production line! The software industry is technology-intensive In the industry, the final quality of software products depends more on the quality and attitude of software developers, rather than the software development process and development equipment, which is also the biggest gap between the software industry and the traditional industry. The ultimate focus of agile project management is how to improve the quality of software developers and how to stimulate the enthusiasm of software development software, so as to improve the quality of the final software.

  However, from another method, the adoption of agile project management also inevitably requires project members to have higher professional skills and professionalism, in order to prevent the passive slowdown caused by the relaxed environment.

  Second, agile requirements management The ultimate focus of

  software development is how to meet the needs of users. These requirements are often complex, vague, or even indeterminate. Agile requirements management adopts the software development process of incremental delivery. With the help of its characteristics of continuous communication with customers, it constantly calibrates the software development line of defense, approaches the final needs of users, and makes the final software developed to meet customer requirements.

Agile software development process [transfer] - light sky - light sky The software process of

  incremental delivery is shown in Figure 1. The most important point of this process is "incremental delivery", the software is developed in a modular way, usually the development cycle of a module is one to two weeks. After the development of each module is completed, it is released according to the formal release process and delivered to customers for trial. In the process of customer use, understand the customer's opinion on the current completed function. Then communicate with the customer to develop a plan for the next round of development together.

  The biggest advantage of this process is that the customer participates in the whole process of software development, grasps the current development status of the software, and ensures that the functions implemented by the software can meet the needs of users.

  But on the other hand, incremental delivery also puts forward higher requirements for software development technology: modular development methods require more thorough decoupling; changes in requirements require software architecture to have higher flexibility; incremental delivery requirements High automation of the release process and more.

  3. Agile software methods

  Corresponding to people-oriented agile project management and incrementally delivered agile requirements management, agile software development provides many specific methods to guide software development practices, including refactoring, pair programming, test-driven, continuous integration Etc., here's a brief introduction to refactoring and pair programming.

  1. Refactoring.

  Refactoring is improving the design of code without changing the behavior of existing code. The purpose of refactoring is to eliminate the "bad smell" of heavy code, so as to achieve the purpose of placing code rot.

  Common refactoring techniques include "rename", "extract new method", "pack member", "move method in inheritance hierarchy" and so on.

  Refactoring usually targets design patterns and unit tests as a means of ensuring code correctness.

  2. Pair

  programming Pair programming means that two developers use one computer for development, usually one person operates the other person, the other person assists, and after a period of time, the two exchange. This seemingly reduced development efficiency development method has the following advantages:

  First, all decisions are made jointly by two people, and all codes are written with the cooperation of two people, which greatly reduces the probability of bugs, thus shortening the time required for debugging.

  Second, all code is understood by at least two people, which reduces the dependency of the code on the developer and prevents the impact of the departure of the developer on the project.

  Agile software development is tailored for modern business software. After several years of development, both in terms of project development methods and specific practical methods, they have formed their own characteristics and compete with traditional development methods.

  Agile software development is not a specific process, but an umbrella term that summarizes approaches and methods with similar foundations. Typical agile process models are:

  1. XP (Extreme Programming, eXtreme Programming),

  2. FDD (Feature-Driven Development, Feature-Driven Development),

  3. Scrum

  4. ASP (Adaptive Software Development)

  5. DSDM (Dynamic System Development Method, Dynamic System Development Method) and

  6, AUP (Agile Unified Process, Agile Unified Process)

  7, Crystal and so on.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326445011&siteId=291194637