blob: 35c5fc7e95f46740dcd58d58dfaef18418ed2674 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<org.eclipse.epf.uma:ContentDescription xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.epf.uma="http://www.eclipse.org/epf/uma/1.0.4/uma.ecore"
xmlns:epf="http://www.eclipse.org/epf" epf:version="1.2.0" xmi:id="-pA6XLJKgRiwDTEp_qMlQ9g"
name="xp_values,1.076140803519123E-306" guid="-pA6XLJKgRiwDTEp_qMlQ9g" changeDate="2005-12-06T05:48:47.737-0500">
<mainDescription>&lt;a id=&quot;XE_xp__core_values&quot; name=&quot;XE_xp__core_values&quot;>&lt;/a> &#xD;
&lt;h2>&#xD;
&lt;a id=&quot;Communication&quot; name=&quot;Communication&quot;>Communication&lt;/a>&#xD;
&lt;/h2>&#xD;
&lt;p>&#xD;
XP emphasizes face-to-face communication over other types of communication, such as documents. XP values documents but&#xD;
values personal communication even more. In order to facilitate communication, XP teams:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
Use a common system metaphor or vocabulary.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Work closely with one another in an open workspace.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Continuously integrate the code.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Work closely with the business people, preferably having them in the same room.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Program in pairs.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Collectively own the code.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Frequently plan and report status to the customer.&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;h2>&#xD;
&lt;a id=&quot;Simplicity&quot; name=&quot;Simplicity&quot;>Simplicity&lt;/a>&#xD;
&lt;/h2>&#xD;
&lt;p>&#xD;
XP presumes that it is better to do the simple thing today and pay a little more tomorrow if more is really needed than&#xD;
to do a more complicated thing today that may never be used. This is a fundamental philosophy that permeates everything&#xD;
in an XP project. If something isn't needed today, we don't do it today.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
For example:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
We will write no document unless there is an immediate and significant need.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
We will adopt no tool unless there is a tangible and verifiable benefit.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
We will avoid writing infrastructure until it is needed by existing code.&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
In order to maintain the simplicity of their software and their team structure, XP teams:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
Ask themselves: What is the simplest thing that can possibly work?&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Continuously simplify and improve the design through refactoring.&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
Some time ago, Kent Beck offered the following rules for simple design. In priority order, the code must:&#xD;
&lt;/p>&#xD;
&lt;ol>&#xD;
&lt;li>&#xD;
Run all the tests.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Contain no duplicate code.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Express all the ideas the author wants to express.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Minimize classes and methods.&#xD;
&lt;/li>&#xD;
&lt;/ol>&#xD;
&lt;h2>&#xD;
&lt;a id=&quot;Feedback&quot; name=&quot;Feedback&quot;>Feedback&lt;/a>&#xD;
&lt;/h2>&#xD;
&lt;p>&#xD;
Feedback works at different scales in XP.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
At the highest level, the customer can see the progress of the team through the working software delivered every two&#xD;
weeks. This continuous feedback allows the customer to steer the project to success. We get concrete feedback on the&#xD;
state of the system in the form of executable pieces of functionality that pass repeatable, automated acceptance tests.&#xD;
These tests prevent the system from backsliding. No new release of the system can fail acceptance tests that used to&#xD;
work.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
At the programming level, programmers write unit tests for all the logic in the system to get immediate and concrete&#xD;
feedback telling them if the code they just wrote is doing what they expected.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
XP teams:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
Develop in small releases.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Develop in smaller iterations.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Break features and requirements into stories that fit in an iteration.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Break stories into even smaller tasks.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Write small unit tests to ensure that tasks work properly.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Write acceptance tests to ensure that stories work properly.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Track progress and communicate it to the customer frequently.&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;h2>&#xD;
&lt;a id=&quot;Courage&quot; name=&quot;Courage&quot;>Courage&lt;/a>&#xD;
&lt;/h2>&#xD;
&lt;p>&#xD;
Perhaps a better name for this value is trust. In order to function, the members of an XP team have to have the courage&#xD;
to trust each other, trust their customer, trust their practices, and trust themselves.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
XP team members trust that they can:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
Stop when they are tired.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Let every business decision be made by the customer.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Ask customers to reduce the scope of a release.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Ask their peers or customers for help.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Design and implement only what is needed for today and add tomorrow what will be needed tomorrow.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Make changes that improve the functions or structure of the code.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Fix the design and retrofit existing code when the design is shown to be inadequate.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Throw away code.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Change code they did not write.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Change the process when it is not working.&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
&lt;br />&#xD;
&lt;br />&#xD;
&lt;/p></mainDescription>
</org.eclipse.epf.uma:ContentDescription>