blob: 0db5b3d91a09ac3e2d75278e8df66baa0b382f24 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Guideline: XP Environment</title>
<meta content="Guideline" name="uma.type">
<meta content="xp_environment" name="uma.name">
<meta content="XP Environment" name="uma.presentationName">
<meta name="element_type" content="other">
<meta content="description" name="filetype">
<meta name="role" content="">
<link type="text/css" href="./../../../css/default.css" rel="StyleSheet">
<script src="./../../../scripts/contentpage.js" type="text/javascript" language="JavaScript">
</script>
<script type="text/javascript" language="JavaScript">
backPath = './../../../';
</script>
</head>
<body>
<table border="0" cellpadding="0" cellspacing="0" width="99%">
<tbody>
<tr>
<td valign="top">
<a id="Top" name="Top" title="Top"></a>
<table border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td class="pageTitle">Guideline: XP Environment</td>
<td align="right" class="expandCollapseLink" width="99%"><a href="../../../index.htm" id="mainIndex" name="mainIndex" title="mainIndex"></a><!-- treebrowser tag --></td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="99%">
<tbody>
<tr>
<td class="pageTitleSeparator"><img height="1" src="../../../images/shim.gif"></td>
</tr>
</tbody>
</table>
<div class="overview">
<table border="0" cellpadding="0" cellspacing="0" width="97%">
<tbody>
<tr>
<td>
<table border="0" cellpadding="0" cellspacing="0" class="overviewTable">
<tbody>
<tr>
<td valign="top">&nbsp;</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
<div class="sectionHeading">
Relationships
</div>
<div class="sectionContent">
<table border="0" cellpadding="0" cellspacing="0" class="sectionTable">
<tbody>
<tr valign="top">
<th class="sectionTableHeading" scope="row">Related Elements</th>
<td class="sectionTableCell">
<ul>
<li><a href="../../tasks/setup_programmer_environment,{D3AA9FEE-AAD9-4884-BF71-425E122110A7}.html">Setup Programmer Environment</a></li>
</ul>
</td>
</tr>
</tbody>
</table>
</div>
<div class="sectionHeading">
Main Description
</div>
<div class="sectionContent">
<table border="0" cellpadding="0" cellspacing="0" class="sectionTable">
<tbody>
<tr valign="top">
<td class="sectionTableCell">
<a id="XE_xp__environment" name="XE_xp__environment" title="XE_xp__environment"></a><a id="XE_environment__in_xp" name="XE_environment__in_xp" title="XE_environment__in_xp"></a>
<p>No process is an island. In other words, you can't expect to just take a process or process elements off a shelf and use them without regard to their context.</p>
<p>XP has certain key requirements of the "environment"; the physical, organizational, and business setting where it will be applied.</p>
<p>Applied changes to this file:</p>
<ol>
<li>Changed a link</li>
<li>added added</li>
<li>removed</li>
<li>bold</li>
<li>italic<br></li>
</ol>
<p>&nbsp;</p>
<h3>Topics</h3>
<ul>
<li>
<a href="#Test">Physical Requirement</a>
<ul>
<li><a href="#OpenWorkspace">Open Workspace</a></li>
<li><a href="#Toolset">Uniform Toolset</a></li>
<li><a href="#BuildMachine">Dedicated Build Machine</a></li>
<li><a href="#VersionControl">Version Control Tool</a></li>
</ul>
</li>
<li><a href="#Org">Organizational Requirements</a></li>
<li><a href="#Business">Business Requirements</a></li>
</ul>
<h3><a id="Physical" name="Physical" title="Physical"></a>Physical Requirements</h3>
<h4><a id="OpenWorkspace" name="OpenWorkspace" title="OpenWorkspace"></a>Open Workspace</h4>
<p>One key aspect of XP is a strong focus on communication added added. To communicate effectively, a team should have as few physical barriers to each other as possible. The ideal XP programming environment is an open workspace filled with tables and room for pairs of people to work together and maintain contact with their peers. For more details, see the <a class="elementLinkWithUserText" href="open_workspace,3.269440809144354E-305.html">open workspace guideline</a>.</p>
<h4><a id="Toolset" name="Toolset" title="Toolset"></a>Uniform Toolset</h4>
<p>XP works best when there are no artificial impediments to getting and giving help. Think about your own experiences. Do you feel hindered working in an unfamiliar IDE? How much does that impede you when someone asks for your help. If, as a team, you adopt a uniform set of tools and keep your development machines homogenous, you are making it far easier for people to give and receive help.</p>
<h4><a id="BuildMachine" name="BuildMachine" title="BuildMachine"></a>Dedicated Build Machine</h4>
<p>In XP, there are many different ways to do builds. However, the <span style="font-weight: bold">primary constraint</span> is that all unit tests are run prior to checking in any production code. In most situations, the easiest way to accomplish this is to have a dedicated build machine. You can check in your code and trigger a build across the network or <span style="font-style: italic">walk</span> to the build machine and run the build. Either way, having a dedicated machine gives you the advantage of having a common, pristine environment for your builds.</p>
<h4><a id="VersionControl" name="VersionControl" title="VersionControl"></a>Version Control Tool</h4>
<p>All software projects need version control tools; however, in XP we place a premium upon their usability. The ability to be able to check out code without locking it is also valued. When a team writes pervasive unit tests and practices collective code ownership, locking code for revision is often too pessimistic. It creates unncessary bottlenecks.</p>
<h3><a id="Org" name="Org" title="Org"></a>Organizational Requirements</h3>
<p>Organizations adopting XP should be able to dedicate someone to act as the customer for each XP team. The customer role in XP is critical. If the person who is acting as the customer has other responsibilities, it is best if those responsibilities are subordinate to being available to the rest of the team.</p>
<p>In addition to having an available customer, organizations practicing XP should allow teams to be self-sufficient. In organizations where many functions are supported by different groups (configuration management group, deployment group, QA), the different functions can impede development if there are not mechanisms to allow each team to do what it takes to finalize its iterations without waiting for other teams.</p>
<h3><a id="Business" name="Business" title="Business"></a>Business Requirements</h3>
<p>XP works best in situations where organizations can take advantage of variable scope. If a business creates a fixed scope contract with a fixed end date, it can be hard to discern how long it really takes for a team to sustainably develop good software.</p>
<p>People in the organizations look at the schedule rather than the velocity data that XP produces. The result is all too predictable. Software may be delivered on time, but it may also be buggy and a poor platform for future development. In XP, we recognize that each team has a particular speed at which they can reliably develop software. That speed varies from team to team. If a team is pushed faster than that speed, the results are often disasterous.</p>
<p><br></p>
</td>
</tr>
</tbody>
</table>
</div>
<table border="0" cellpadding="0" cellspacing="0" class="copyright">
<tbody>
<tr>
<td class="copyright">Copyright (c) 2002, 2006 IBM Corporation and Object Mentor. All rights reserved.<br>
This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at <a href="http://www.eclipse.org/legal/epl-v10.html" target="_blank">http://www.eclipse.org/legal/epl-v10.html</a>.<br>
Contributors: IBM Corporation and Object Mentor - initial implementation<br></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</body>
</html>