blob: cbcffcaa9ecfc2a9ec337b4d4c22e70c068cf85a [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="-OuWRQbxXBGWox8SgcCr6sQ"
name="xp_environment,3.754748120034442E-307" guid="-OuWRQbxXBGWox8SgcCr6sQ" changeDate="2005-12-06T07:25:25.664-0500">
<mainDescription>&lt;a id=&quot;XE_xp__environment&quot; name=&quot;XE_xp__environment&quot;>&lt;/a>&lt;a id=&quot;XE_environment__in_xp&quot; name=&quot;XE_environment__in_xp&quot;>&lt;/a> &#xD;
&lt;p>&#xD;
No process is an island. In other words, you can't expect to just take a process or process elements off a shelf and&#xD;
use them without regard to their context.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
XP has certain key requirements of the &quot;environment&quot;; the physical, organizational, and business setting where it will&#xD;
be applied.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
Topics&#xD;
&lt;/h3>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
&lt;a href=&quot;#Physical&quot;>Physical Requirements&lt;/a> &#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
&lt;a href=&quot;#OpenWorkspace&quot;>Open Workspace&lt;/a>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;a href=&quot;#Toolset&quot;>Uniform Toolset&lt;/a>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;a href=&quot;#BuildMachine&quot;>Dedicated Build Machine&lt;/a>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;a href=&quot;#VersionControl&quot;>Version Control Tool&lt;/a>&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;a href=&quot;#Org&quot;>Organizational Requirements&lt;/a>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;a href=&quot;#Business&quot;>Business Requirements&lt;/a>&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;h3>&#xD;
&lt;a id=&quot;Physical&quot; name=&quot;Physical&quot;>Physical Requirements&lt;/a>&#xD;
&lt;/h3>&#xD;
&lt;h4>&#xD;
&lt;a id=&quot;OpenWorkspace&quot; name=&quot;OpenWorkspace&quot;>Open Workspace&lt;/a>&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
One key aspect of XP is a strong focus on communication. To communicate effectively, a team should have as few physical&#xD;
barriers to each other as possible. The ideal XP programming environment is an open workspace filled with tables and&#xD;
room for pairs of people to work together and maintain contact with their peers. For more details, see the &lt;a class=&quot;elementLinkWithUserText&quot; href=&quot;./../../../xp/guidances/guidelines/open_workspace.html&quot; guid=&quot;3.269440809144354E-305&quot;>open workspace guideline&lt;/a>.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
&lt;a id=&quot;Toolset&quot; name=&quot;Toolset&quot;>Uniform Toolset&lt;/a>&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
XP works best when there are no artificial impediments to getting and giving help. If you have an open workspace with&#xD;
five computers for production coding and each of them has a wildly different set of tools, some people will gravitate&#xD;
to the machines that have the tools they like and feel uncomfortable moving to the machines that have unfamiliar tools.&#xD;
Think about your own experiences. Do you feel hindered working in an unfamiliar IDE? How much does that impede you when&#xD;
someone asks for your help. If, as a team, you adopt a uniform set of tools and keep your development machines&#xD;
homogenous, you are making it far easier for people to give and receive help.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
&lt;a id=&quot;BuildMachine&quot; name=&quot;BuildMachine&quot;>Dedicated Build Machine&lt;/a>&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
In XP, there are many different ways to do builds. However, the primary constraint is that all unit tests are run prior&#xD;
to checking in any production code. In most situations, the easiest way to accomplish this is to have a dedicated build&#xD;
machine. You can check in your code and trigger a build across the network or walk to the build machine and run the&#xD;
build. Either way, having a dedicated machine gives you the advantage of having a common, pristine environment for your&#xD;
builds.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
&lt;a id=&quot;VersionControl&quot; name=&quot;VersionControl&quot;>Version Control Tool&lt;/a>&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
All software projects need version control tools; however, in XP we place a premium upon their usability. The ability&#xD;
to be able to check out code without locking it is also valued. When a team writes pervasive unit tests and practices&#xD;
collective code ownership, locking code for revision is often too pessimistic. It creates unncessary bottlenecks.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
&lt;a id=&quot;Org&quot; name=&quot;Org&quot;>Organizational Requirements&lt;/a>&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
Organizations adopting XP should be able to dedicate someone to act as the customer for each XP team. The customer role&#xD;
in XP is critical. If the person who is acting as the customer has other responsibilities, it is best if those&#xD;
responsibilities are subordinate to being available to the rest of the team.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
In addition to having an available customer, organizations practicing XP should allow teams to be self-sufficient. In&#xD;
organizations where many functions are supported by different groups (configuration management group, deployment group,&#xD;
QA), the different functions can impede development if there are not mechanisms to allow each team to do what it takes&#xD;
to finalize its iterations without waiting for other teams.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
&lt;a id=&quot;Business&quot; name=&quot;Business&quot;>Business Requirements&lt;/a>&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
XP works best in situations where organizations can take advantage of variable scope. If a business creates a fixed&#xD;
scope contract with a fixed end date, it can be hard to discern how long it really takes for a team to sustainably&#xD;
develop good software.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
People in the organizations look at the schedule rather than the velocity data that XP produces. The result is all too&#xD;
predictable. Software may be delivered on time, but it may also be buggy and a poor platform for future development. In&#xD;
XP, we recognize that each team has a particular speed at which they can reliably develop software. That speed varies&#xD;
from team to team. If a team is pushed faster than that speed, the results are often disasterous.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
&lt;br />&#xD;
&lt;br />&#xD;
&lt;/p></mainDescription>
</org.eclipse.epf.uma:ContentDescription>