Talking about Extreme Programming (updating)

1. What is Extreme Programming
① The foreign name of Extreme Programming is ExtremePrograming, or XP for short. It was proposed by KentBeck in 1996. It is a software engineering methodology and one of the most fruitful methodologies in agile development. . (PS: Agile development takes the evolution of user needs as the core, and adopts an iterative and gradual approach to software development.) The essence of Extreme Programming and traditional methodology is different in that it emphasizes adaptability and adaptability to difficulties. . Of course, Extreme Programming also has its own shortcomings, not all software development processes can use Extreme Programming. This article mainly talks about the advantages of Extreme Programming.

2. Why does Extreme Programming appear.
In the traditional software engineering process, the amount of method documentation is too "heavy" and cumbersome. Therefore, people must look for relatively lightweight methodologies. However, at that time, the agile methodology had not yet appeared. People's concept of lightweight methodology only existed in the stage of "subjective assumption". They believed that a perfect software necessarily requires absolutely perfect preparatory work. The idea is correct, but the actual development process is not very satisfactory. Based on this, the idea of ​​using extreme programming was born in a project of the Kent team from 1993 to 1999. Subsequently, from February 11th to 13th, 2001, an epoch-making alliance, the Agile Alliance was established. One of the most influential non-profit organizations in the software engineering industry.

3. What is included in Extreme Programming.
① Values
Communication (Communication)
software engineering development process is basically a team work, Extreme Programming emphasizes the use of appropriate methods for face-to-face communication between teams, such as a whiteboard, or other drawing tools that can express ideas.

Simple (Simplicity)
software developers sometimes have "good eyes and low hands" and fail to do well in requirements engineering. They want to set too many functions for the system during the coding process, resulting in a very complicated situation that leads to later software delivery. The disgust of customers, the high maintenance cost, and even the situation of scrapped projects. Therefore, when designing, don't be crazy, just design the functions that meet your needs.

Feedback (FeedBack)
Through continuous feedback, your team can know and fix the problems in the software, and constantly adjust the final product of your team.

Courage (Courage)
The courage mentioned here is that every member of the team will encounter various problems in the process of software development. We should have the courage to solve the problems we face according to our own judgment, for example, we should have Courage to raise the shortcomings of the management, we must have the courage to stop the development that we think is wrong. Not just as a "code farmer", but a judged programmer.

Respect
Team members need to respect and understand each other in order to solve project problems better and more efficiently in the project development process


The core of practice XP is a set of interrelated team building development practices listed below. Each practice can be implemented separately, but in the real development process, it is found that these practices have mutually promoting effects, so it is best Put it together.

Face-to-face (Sit Together)
"Communication" is one of the five values ​​of Extreme Programming, so most people agree that face-to-face communication is one of the best ways to communicate, and communicate without barriers.

Whole Team (Whole Team)
Cross-functional people with the required roles of the product form a team, and everyone plays their own role in a team. Since it is to accomplish the common goal, team awareness is very important.

Informative Workplace (Informative Workplace)
Every step of our team must be transparent to the relevant parties of the team, and set up an information radiation wall to update real-time information.

Energized Word
Energetic work means that you can fully invest in your work. Correspondingly, you should not overwork yourself or let others overwork you to ensure your good health. Physical and mental state, positive and optimistic attitude towards life.


Before pair programming , I still didn’t understand it very much. One job and the other looked at it. It’s not fair to see if such a pairing has the advantages, but in fact, such pair programming can greatly improve work efficiency and greatly reduce the later period. DeBug process.

Test-Driven Development
takes testing as the center of the development process. It requires that before writing any product code, first write tests that define the behavior of the product code, and write product code to make the test pass. . As a major practice of Extreme Programming, test-driven development can effectively allow program developers to develop higher-quality, fully-tested programs.

In Weekly Cycle
Extreme Programming, the team meets on the first day of the week to reflect the progress so far. Customers choose the level they want to deliver in that week, and the team decides how they will handle these processes. By the end of this week, the team's goal is to achieve the testing of the software phase selected by the customer.

Quarterly Cycle (Quarterly Cycle)
The purpose of the quarterly cycle is to maintain the detailed work of the weekly cycle in the context of the entire project. The customer develops an overall plan for the team based on the features needed in a particular quarter, which broadens the team’s horizons and also helps the customer to collaborate with other stakeholders who may need to know when features are available.

Slack
" Slack " means adding some simple, low-level workload to the team's weekly development work, which means that it can "take a breath". If the team’s more important tasks are delayed, then these low-level tasks must be skipped and transferred to important tasks.

Ten-Minute Build
The goal of Ten-Minute Build is to automatically build the entire system and run all tests within ten minutes. The founders of XP proposed a ten-minute time frame. If a team has a longer build than this practice, it is unlikely to be run frequently, thus introducing a longer interval between errors. Through this identification method, implemented throughout the development process, you can save a lot of valuable time for development tasks.

Continuous Integration (Continuous Integration)
Continuous integration means that when the code is changed or added to a larger code base, it is immediately tested. If there is a problem, the problem can be quickly locked into a new code block, making the test task more Efficient, through this continuous integration method, you can find and modify bugs faster and more accurately.

Incremental Design (Incremental Design)
Incremental design is to do a little work before doing a project, in order to get a general understanding of the basic situation of the entire project, and then in-depth understanding of the details of the project when delivering specific functions. It's like we learn a new course, do a good job of previewing before the class, and make a vision of what we need to learn in the next class, then we can learn more directly what we want to learn when we listen to the class, reducing it The possibility of digging into the corner has saved a lot of time.

4. Personal learning experience.

In general, after having studied "Introduction to Software Engineering" last semester, I have a deeper understanding of the concept of software engineering. I used to think that software engineering is that someone has an idea, and then this person develops his own software. It now seems that my thoughts at the time were also very naive. By writing this blog, I learned the "Extreme Programming" software development method, which increased my understanding of the details of each link in the software process, what are the customer needs, what is the company environment, what are the personal qualities, etc. . I hope to learn more software development process details in the courses of "Software Development and Innovation" and "Software Engineering I" this semester, and improve my software development quality.

Guess you like

Origin blog.csdn.net/xdg15294969271/article/details/114395561