<html xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Concept: Extreme Programming</title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta name="element_type" content="concept">
<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 onload="createSectionLinks('div', 'sectionHeading', './../../../images/');">
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td valign="top"><a name="Top"></a>
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="pageTitle">Concept: Extreme Programming</td>
</tr>
</table>
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td class="pageTitleSeparator"><img height="1" alt="" src="./../../../images/shim.gif"></td>
</tr>
</table>
<div class="overview">
<table cellpadding="0" cellspacing="0" border="0" width="97%">
<tr>
<td>
<table cellpadding="0" cellspacing="0" border="0" class="overviewTable">
<tr>
<td valign="top"></td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Main Description</div>
<div class="sectionContent">
<table cellpadding="0" cellspacing="0" border="0" class="sectionTable">
<tr valign="top">
<td class="sectionTableCell"><a id="XE_xp__conceptual_process_roadmap" name="XE_xp__conceptual_process_roadmap"></a><a id="XE_roadmap__for_xp_practices" name="XE_roadmap__for_xp_practices"></a> 
<h3>
    Topics
</h3>
<div align="left">
    <table width="70%" border="1">
        <tbody valign="top">
            <tr>
                <td width="315" height="178">
                    <ul>
                        <li>
                            <a href="#Introduction">Introduction</a>
                        </li>
                        <li style="LIST-STYLE-TYPE: none">
                            <ul>
                                <li>
                                    <a href="#About">About XP</a>
                                </li>
                            </ul>
                        </li>
                    </ul>
                    <p>
                        <br />
                        <br />
                    </p>
                    <ul>
                        <li>
                            <a href="#Characteristics">Characteristics of an XP Project</a>
                        </li>
                        <li>
                            <a href="#GettingStarted">How to Get Started</a>
                        </li>
                        <li>
                            <a href="#Phases">Phases and Iterations</a>
                        </li>
                    </ul>
                </td>
                <td width="315" height="178">
                    <b>Additional Guidance:</b> 
                    <ul>
                        <li>
                            Guidelines 
                            <ul>
                                <li>
                                    <a class="elementLink" href="./../../../xp/guidances/guidelines/refactoring,8.137126904637637E-306.html" guid="8.137126904637637E-306">Refactoring</a>
                                </li>
                                <li>
                                    <a class="elementLinkWithUserText" href="./../../../xp/guidances/guidelines/test_driven_development_tdd,3.9254165491375454E-306.html" guid="3.9254165491375454E-306">Test First Development</a>
                                </li>
                                <li>
                                    <a class="elementLinkWithUserText" href="./../../../xp/guidances/guidelines/pair_programming,3.85153041801319E-307.html" guid="3.85153041801319E-307">Pair Programming</a>
                                </li>
                                <li>
                                    <a class="elementLinkWithUserText" href="./../../../xp/guidances/guidelines/planning_game,6.7335956461328426E-307.html" guid="6.7335956461328426E-307">Planning Game</a>
                                </li>
                                <li style="LIST-STYLE-TYPE: none">
                                    <br />
                                    <br />
                                </li>
                            </ul>
                        </li>
                        <li>
                            <a class="elementLinkWithUserText" href="./../../../xp/guidances/supportingmaterials/bup_xp_plug-in_resource_center,2.315717433735515E-305.html" guid="2.315717433735515E-305">Additional XP Resources</a>
                        </li>
                    </ul>
                    <b>Additional Concepts:</b> 
                    <ul>
                        <li>
                            <a class="elementLink" href="./../../../xp/guidances/concepts/agile_software_development,1.041091673844025E-305.html" guid="1.041091673844025E-305">Agile Software Development</a>
                        </li>
                    </ul>
                </td>
            </tr>
        </tbody>
    </table>
</div>
<br />
<br />
<h1>
    <a id="Introduction" name="Introduction">Introduction</a>
</h1>
<p>
    This roadmap provides information for getting started and applying the practices of eXtreme Programming (XP) to a
    software development project. The roadmap can be used as a guide to the content delivered in the BUP XP Plug-In.
</p>
<h3>
    <a id="About" name="About">About XP</a>&nbsp;
</h3>
<p>
    Extreme Programming is an instance of an <a class="elementLink" href="./../../../xp/guidances/concepts/agile_software_development,1.041091673844025E-305.html" guid="1.041091673844025E-305">Agile Software Development</a> method. XP is a method that is optimized for small to
    medium-sized project teams that fit a certain profile. It promotes rapid feedback and response to continual change. It
    is based upon the four <a class="elementLinkWithUserText" href="./../../../xp/guidances/concepts/xp_values,1.076140803519123E-306.html" guid="1.076140803519123E-306">values</a> of simplicity, communication, feedback, and courage and is consistent with the
    values of agile software development.
</p>
<br />
<p>
    Extreme Programming is an instance of an agile method for developing software. It is based upon the core principle of
    agility and consists of twelve practices that, when applied to an appropriate software development project, can produce
    high-quality software. If you are unfamiliar with the concepts surrounding XP, you should start by reading <a class="elementLink" href="./../../../xp/guidances/concepts/agile_software_development,1.041091673844025E-305.html" guid="1.041091673844025E-305">Agile Software Development</a>.
</p>
<h3>
    <a id="Characteristics" name="Characteristics">Characteristics of an XP Project</a>
</h3>
<p>
    Extreme Programming or XP is a development process that can be used by small to medium-sized teams to develop high
    quality software within a predictable schedule and budget and with a minimum of overhead. Since XP relies heavily on
    direct and frequent communication between the team members, the team should be co-located. An ideal project for using
    XP would be one that has most of the following characteristics:
</p>
<ul>
    <li>
        A small to medium-sized team (fewer than 20 people on the complete team)
    </li>
    <li>
        Co-located, preferably in a single area with a large common space
    </li>
    <li>
        A committed, full-time, on-site customer or customer representative
    </li>
    <li style="LIST-STYLE-TYPE: none">
        <br />
    </li>
</ul>
<h3>
    <a id="Phases" name="Phases">Phases and Iterations</a>
</h3>
<p>
    An XP project is one that is based on rapid feedback through short iterations and frequent releases. BUP and XP share a
    fundamental belief that iterative development is the best way to deliver valuable software to your customers. The
    concept of phases, as usually described in a BUP configuration, is somewhat different. Decisions described in the BUP
    phases that define milestones occur, but they are not called specifically as defining phases. For a discussion of how
    the phases are related to an XP project, see the discussion of <a class="elementLinkWithUserText" href="./../../../xp/deliveryprocesses/bup_phases_and_xp,{63BD15C5-40EF-469A-A22A-3291734B60F4}.html" guid="{63BD15C5-40EF-469A-A22A-3291734B60F4}">Phases</a>.
</p>
<h3>
    <a id="GettingStarted" name="GettingStarted">How to Get Started</a>
</h3>
<p>
    This section provides a recommended way to approach XP for your project. You don't have to follow the steps as
    specified, but if you have little experience with XP, we recommend following them as closely as possible the first
    time.
</p>
<table cellspacing="2" cellpadding="1" width="91%" border="1">
    <tbody>
        <tr>
            <th width="10%">
                Step
            </th>
            <th align="left" width="47%">
                Do this ...
            </th>
            <th align="left" width="43%">
                in order to...
            </th>
        </tr>
        <tr>
            <td align="middle" width="10%">
                1
            </td>
            <td width="47%">
                Familiarize yourself with the&nbsp;<a class="elementLink" href="./../../../xp/guidances/concepts/motivation,1.6390805262958034E-306.html" guid="1.6390805262958034E-306">motivation</a> for using XP, the <a class="elementLinkWithUserText" href="./../../../xp/guidances/concepts/what_is_xp,9.251272550276345E-306.html" guid="9.251272550276345E-306">short description</a> of XP, and the <a class="elementLink" href="./../../../xp/guidances/concepts/xp_practices,2.2937799026801584E-305.html" guid="2.2937799026801584E-305">XP Practices</a> 
            </td>
            <td width="43%">
                understand the fundamental principles of XP and how the practices support each other.
            </td>
        </tr>
        <tr>
            <td align="middle" width="10%">
                2
            </td>
            <td width="47%">
                Read the key concepts of <a class="elementLink" href="./../../../xp/guidances/concepts/agile_software_development,1.041091673844025E-305.html" guid="1.041091673844025E-305">Agile Software Development</a> 
            </td>
            <td width="43%">
                understand the collaborative and social aspects of XP.
            </td>
        </tr>
        <tr>
            <td align="middle" width="10%">
                3
            </td>
            <td width="47%">
                Determine if XP is appropriate for your project by reviewing <a href="#Characteristics">The Characteristics
                of an XP Project</a> 
            </td>
            <td width="43%">
                decide if XP may be appropriate for your project.
            </td>
        </tr>
        <tr>
            <td align="middle" width="10%">
                4
            </td>
            <td width="47%">
                Read about the <a class="elementLinkWithUserText" href="./../../../xp/guidances/guidelines/xp_environment,3.754748120034442E-307.html" guid="3.754748120034442E-307">XP Environment</a>.
            </td>
            <td width="43%">
                prepare the physical and tool environment for your team.
            </td>
        </tr>
        <tr>
            <td align="middle" width="10%">
                5
            </td>
            <td width="47%">
                Read the <a class="elementLink" href="./../../../xp/guidances/supportingmaterials/getting_started_with_xp,1.2284921351651456E-304.html" guid="1.2284921351651456E-304">Getting Started with XP</a> guidelines.
            </td>
            <td width="43%">
                get suggestions on how to start an XP project.
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<br />
<br /></td>
</tr>
</table>
</div>
<table cellpadding="0" cellspacing="0" border="0" class="copyright">
<tr>
<td class="copyright"></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
