<p>从<a href="http://www.xprogramming.com" title="xp"> xp</a> 网站看到的,有空来翻译下。</p>
<p> </p>
<p><span class="title">What is Extreme Programming?</span> <br><span class="author">Ron Jeffries</span> <br><span class="date">11/08/2001</span> </p>
<div class="precis">
Extreme Programming is a discipline of software development based on values of simplicity, communication, feedback, and courage. It works by bringing the whole team together in the presence of simple practices, with enough feedback to enable the team to see where they are and to tune the practices to their unique situation.
</div>
<p> </p>
<a href="http://www.xprogramming.com/images/circles.jpg"><img alt="" src="https://201907.oss-cn-shanghai.aliyuncs.com/cs/5606289-0f5c6ff63a506047052b4350a25dd309.jpg"></a>
<p>In Extreme Programming, every contributor to the project is an integral part of the "<a href="http://www.xprogramming.com/xpmag/whatisxp.htm#whole">Whole Team</a> ". The team forms around a business representative called "the Customer", who sits with the team and works with them daily.</p>
<ul><li>Core Practices: <a href="http://www.xprogramming.com/xpmag/whatisxp.htm#whole">Whole Team</a> </li></ul>
<p>Extreme Programming teams use a simple form of planning and tracking to decide what should be done next and to predict when the project will be done. Focused on business value, the team produces the software in a series of small fully-integrated releases that pass all the tests the Customer has defined.</p>
<ul><li>Core Practices: <a href="http://www.xprogramming.com/xpmag/whatisxp.htm#planning">Planning Game</a> , <a href="http://www.xprogramming.com/xpmag/whatisxp.htm#small">Small Releases</a> , <a href="http://www.xprogramming.com/xpmag/whatisxp.htm#customer">Customer Tests</a> </li></ul>
<p>Extreme Programmers work together in pairs and as a group, with simple design and obsessively tested code, improving the design continually to keep it always just right for the current needs.</p>
<ul><li>Core Practices: <a href="http://www.xprogramming.com/xpmag/whatisxp.htm#simple">Simple Design</a> , <a href="http://www.xprogramming.com/xpmag/whatisxp.htm#pair">Pair Programming</a> , <a href="http://www.xprogramming.com/xpmag/whatisxp.htm#test">Test-Driven Development</a> , <a href="http://www.xprogramming.com/xpmag/whatisxp.htm#design">Design Improvement</a> </li></ul>
<p>The Extreme Programming team keeps the system integrated and running all the time. The programmers write all production code in pairs, and all work together all the time. They code in a consistent style so that everyone can understand and improve all the code as needed.</p>
<ul><li>Core Practices: <a href="http://www.xprogramming.com/xpmag/whatisxp.htm#continuous">Continuous Integration</a> , <a href="http://www.xprogramming.com/xpmag/whatisxp.htm#collective">Collective Code Ownership</a> , <a href="http://www.xprogramming.com/xpmag/whatisxp.htm#coding">Coding Standard</a> </li></ul>
<p>The Extreme Programming team shares a common and simple picture of what the system looks like. Everyone works at a pace that can be sustained indefinitely. </p>
<ul><li>Core Practices: <a href="http://www.xprogramming.com/xpmag/whatisxp.htm#metaphor">Metaphor</a> , <a href="http://www.xprogramming.com/xpmag/whatisxp.htm#sustainable">Sustainable Pace</a> </li></ul>
<p> <a name="core"></a> <a name="N65675"></a> </p>
<h2>Core Practices</h2>
<p> <a name="whole"> </a></p>
<h3>Whole Team</h3>
<p></p>
<p>All the contributors to an XP project sit together, members of one team. This team must include a business representative -- the "Customer" -- who provides the requirements, sets the priorities, and steers the project. It's best if the Customer or one of her aides is a real end user who knows the domain and what is needed. The team will of course have programmers. The team may include testers, who help the Customer define the customer acceptance tests. Analysts may serve as helpers to the Customer, helping to define the requirements. There is commonly a coach, who helps the team keep on track, and facilitates the process. There may be a manager, providing resources, handling external communication, coordinating activities. None of these roles is necessarily the exclusive property of just one individual: Everyone on an XP team contributes in any way that they can. The best teams have no specialists, only general contributors with special skills.</p>
<p> <a name="planning"> </a></p>
<h3>Planning Game</h3>
<p></p>
<p>XP planning addresses two key questions in software development: predicting what will be accomplished by the due date, and determining what to do next. The emphasis is on steering the project -- which is quite straightforward -- rather than on exact prediction of what will be needed and how long it will take -- which is quite difficult. There are two key planning steps in XP, addressing these two questions:</p>
<p> <em>Release Planning</em> is a practice where the Customer presents the desired features to the programmers, and the programmers estimate their difficulty. With the cost estimates in hand, and with knowledge of the importance of the features, the Customer lays out a plan for the project. Initial release plans are necessarily imprecise: neither the priorities nor the estimates are truly solid, and until the team begins to work, we won't know just how fast they will go. Even the first release plan is accurate enough for decision making, however, and XP teams revise the r |
|