<?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="-DG8mYMnTGosWIxjPQFUoTA" name="milestones,_HNxbwMBJEdqSgKaj2SZBmg" guid="-DG8mYMnTGosWIxjPQFUoTA" changeDate="2006-10-31T12:53:11.446-0800">
  <mainDescription>&lt;p&gt;
    Milestones are&amp;nbsp;the point at which an iteration or phase formally ends.
&lt;/p&gt;
&lt;p&gt;
    From a&amp;nbsp;development perspective, each iteration provides an increment of functionality to the product. Thus, the
    end of each iteration corresponds to a checkpoint where the project team demonstrates to stakeholders that the
    objectives for that iteration have been met.
&lt;/p&gt;
&lt;p&gt;
    However, there are four major milestones that provide evaluation criteria at the end of each phase. From a management
    perspective, the software lifecycle&amp;nbsp;is decomposed over time into four sequential phases, each concluded by a major
    milestone [&lt;a class=&quot;elementLinkWithUserText&quot; href=&quot;./../../../openup_basic/guidances/supportingmaterials/references,_9ToeIB83Edqsvps02rpOOg.html&quot; guid=&quot;_9ToeIB83Edqsvps02rpOOg&quot;&gt;BOE95&lt;/a&gt;].
&lt;/p&gt;
&lt;p class=&quot;banner&quot; align=&quot;center&quot;&gt;
    &lt;img height=&quot;156&quot; alt=&quot;Click on text for more information about phases and milestones&quot; src=&quot;./resources/co_phas1.gif&quot;     width=&quot;406&quot; border=&quot;0&quot; /&gt;
&lt;/p&gt;
&lt;p class=&quot;picturetext&quot; align=&quot;center&quot;&gt;
    The phases and milestones of a project
&lt;/p&gt;
&lt;p&gt;
    Each phase is essentially a span of time between two major milestones. At each phase-end an assessment is performed to
    determine whether the objectives of the phase have been met. A satisfactory assessment allows the project to move to
    the next phase.
&lt;/p&gt;
&lt;p&gt;
    At the end of the &lt;strong&gt;Inception&lt;/strong&gt; phase is the first major project milestone or &lt;strong&gt;Lifecycle Objectives
    Milestone&lt;/strong&gt;. At this point, you examine the cost versus benefits of the project, and decide either to proceed
    with the project or to cancel it.
&lt;/p&gt;
&lt;p&gt;
    At the end of the &lt;strong&gt;Elaboration&lt;/strong&gt; phase is the second important project milestone, the &lt;strong&gt;Lifecycle
    Architecture Milestone&lt;/strong&gt;. At this point, a baseline of requirements is agreed to, you examine the detailed
    system objectives and scope, the choice of architecture, and the resolution of the major risks.
&lt;/p&gt;
&lt;p&gt;
    At the end of the &lt;strong&gt;Construction&lt;/strong&gt; phase is the third important project milestone, the &lt;strong&gt;Initial
    Operational Capability Milestone&lt;/strong&gt;. At this point, the product is ready to be handed over to the transition
    team. All functionality has been developed and all alpha testing (if any) has been completed. In addition to the
    software, a user manual has been developed, and there is a description of the current release. The product is ready for
    beta testing.
&lt;/p&gt;
&lt;p&gt;
    At the end of the &lt;strong&gt;Transition&lt;/strong&gt; phase is the fourth important project milestone, the &lt;strong&gt;Product
    Release Milestone&lt;/strong&gt;. At this point, you decide if the objectives were met, and if you should start another
    development cycle. The Product Release Milestone is the result of the customer reviewing and accepting the project
    deliverables.
&lt;/p&gt;</mainDescription>
</org.eclipse.epf.uma:ContentDescription>
