<?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.3/uma.ecore" epf:version="1.0.0" xmi:id="-nIpFvBhY9WogqrEQv4NknQ" name="why_xp,1.6390805262958034E-306" guid="-nIpFvBhY9WogqrEQv4NknQ" changeDate="2006-11-08T15:24:24.660-0800" version="1.0.0">
  <mainDescription>&lt;p&gt;
    The goal of a software process is to guide the software development organization to:
&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;
        Get the right software done.
    &lt;/li&gt;
    &lt;li&gt;
        Get the software done right.
    &lt;/li&gt;
    &lt;li&gt;
        Get the software done quickly.
    &lt;/li&gt;
    &lt;li&gt;
        Get the software done frugally.
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
    There are many approaches to this problem. Some software processes are high in ceremony. They guide the developers to
    create many artifacts. They punctuate the project with phases and sign-offs. They release infrequently, sometimes
    solely upon project completion. There is a time and place for such processes.
&lt;/p&gt;
&lt;p&gt;
    On the other hand, the most important and scarce resource in any project is the time of the developers. High ceremony
    processes fill that time with work activities that center around artifacts and reviews instead of around the core
    artifacts of code and tests. For many projects this is an exorbitant expense.
&lt;/p&gt;
&lt;p&gt;
    To manage this expense, many projects need a process that uses a minimum of ceremony and concentrates on the core
    artifacts. They need a feedback-driven process that delivers working software rapidly in quick releases.
&lt;/p&gt;
&lt;p&gt;
    XP is just such a low ceremony process. It is used by those teams and for those projects where ceremony is of little
    value, but rapid feedback is of high value. Such projects tend to be small to medium sized - fewer than one or two
    million lines of code - and involve fewer than one or two dozen developers. They tend to exist in environments of
    intense business and or technical change. They are, of course, exceedingly common.
&lt;/p&gt;
&lt;p&gt;
    A lack of ceremony does not imply a lack of management. XP places a lot of emphasis on techniques for planning,
    estimation, and schedule management. Creating, maintaining, and managing a project plan is a very big part of XP.
&lt;/p&gt;
&lt;p&gt;
    A lack of ceremony also does not imply a lack of discipline. XP espouses discipline for every facet of the project.
    There is discipline for testing, integration, planning, reviewing, and for producing software with a high quality
    internal structure. The goal is to keep the project moving and the software easy to modify, easy to extend, and easy to
    develop.
&lt;/p&gt;
&lt;p&gt;
    In short, XP puts the emphasis on ensuring that the team is working on the minimum set of activities and artifacts that
    will produce the right software, built right, built quickly and built frugally.&lt;br /&gt;
    &lt;br /&gt;
&lt;/p&gt;</mainDescription>
</org.eclipse.epf.uma:ContentDescription>
