<?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="-FrUmsKsGW4bnNmb9uaNOkg" name=",__ca5UBOMEduCNqgZdt_OaA" guid="-FrUmsKsGW4bnNmb9uaNOkg" changeDate="2006-09-27T16:29:45.049-0700" version="1.0.0">
  <mainDescription>&lt;p&gt;
    The purpose in this phase is to ensure that the software is ready for delivery to users.
&lt;/p&gt;
&lt;p&gt;
    There are objectives for the Transition phase that help you to&amp;nbsp;fine-tune functionality, performance, and overall
    quality of the beta product from the end of&amp;nbsp;the previous phase &lt;a class=&quot;elementlinkwithusertext&quot; href=&quot;./../../../openup_basic/guidances/supportingmaterials/references,_9ToeIB83Edqsvps02rpOOg.html&quot; guid=&quot;_9ToeIB83Edqsvps02rpOOg&quot;&gt;[KRO03]&lt;/a&gt;:
&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;
        &lt;p&gt;
            &lt;strong&gt;Beta test to validate that user expectations are met.&lt;/strong&gt; This typically requires some fine-tuning
            activities, such as bug-fixing and making enhancements for performance and usability.
        &lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;p&gt;
            &lt;strong&gt;Achieve stakeholder concurrence that deployment is complete.&lt;/strong&gt; This may involve various levels
            of tests for product acceptance, including formal and informal tests and beta tests.
        &lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;p&gt;
            &lt;strong&gt;Improve future project performance through lessons learned.&lt;/strong&gt; Document lessons learned and
            improve the process and tool environment for the project.
        &lt;/p&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
    The following table summarizes the&amp;nbsp;Transition phase objectives and&amp;nbsp;what activities address each objective:
&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;
    &lt;strong&gt;Transition phase objectives and activities&lt;/strong&gt;
&lt;/p&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;648&quot; align=&quot;center&quot; border=&quot;1&quot;&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td class=&quot;Normal&quot; valign=&quot;top&quot; width=&quot;300&quot;&gt;
                &lt;p style=&quot;TEXT-ALIGN: justify&quot;&gt;
                    &lt;b&gt;Phase objectives&lt;/b&gt;
                &lt;/p&gt;
            &lt;/td&gt;
            &lt;td class=&quot;Normal&quot; valign=&quot;top&quot; width=&quot;348&quot;&gt;
                &lt;p style=&quot;TEXT-ALIGN: justify&quot;&gt;
                    &lt;b&gt;Activities that address objectives&lt;/b&gt;
                &lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td class=&quot;Normal&quot; valign=&quot;top&quot; width=&quot;300&quot; height=&quot;62&quot;&gt;
                Beta test to validate that user expectations are met
            &lt;/td&gt;
            &lt;td class=&quot;Normal&quot; valign=&quot;top&quot; width=&quot;348&quot;&gt;
                &lt;a class=&quot;elementLinkWithUserText&quot; href=&quot;./../../../ongoing_tasks,_0qxwYclgEdmt3adZL5Dmdw.html&quot; guid=&quot;_0qxwYclgEdmt3adZL5Dmdw&quot;&gt;Ongoing Tasks&lt;/a&gt;&lt;br /&gt;
                &lt;a class=&quot;elementLinkWithUserText&quot; href=&quot;./../../../develop_requirement_within_context,_0DMlYPinEdmugcVr9AdHjQ.html&quot; guid=&quot;_0DMlYPinEdmugcVr9AdHjQ&quot;&gt;Develop Solution (for requirement)(within context)&lt;/a&gt;&lt;br /&gt;
                &lt;a class=&quot;elementLinkWithUserText&quot; href=&quot;./../../../validate_build,_0qrpwslgEdmt3adZL5Dmdw.html&quot; guid=&quot;_0qrpwslgEdmt3adZL5Dmdw&quot;&gt;Validate Build&lt;/a&gt; 
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td class=&quot;Normal&quot; valign=&quot;top&quot; width=&quot;300&quot;&gt;
                Achieve stakeholder concurrence that deployment is complete
            &lt;/td&gt;
            &lt;td class=&quot;Normal&quot; valign=&quot;top&quot; width=&quot;348&quot;&gt;
                &lt;a class=&quot;elementLinkWithUserText&quot; href=&quot;./../../../manage_iteration,_0rWYIslgEdmt3adZL5Dmdw.html&quot; guid=&quot;_0rWYIslgEdmt3adZL5Dmdw&quot;&gt;Manage Iteration&lt;/a&gt;&lt;br /&gt;
                &lt;a class=&quot;elementLinkWithUserText&quot; href=&quot;./../../../validate_build,_0qrpwslgEdmt3adZL5Dmdw.html&quot; guid=&quot;_0qrpwslgEdmt3adZL5Dmdw&quot;&gt;Validate Build&lt;/a&gt; 
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td class=&quot;Normal&quot; valign=&quot;top&quot; width=&quot;300&quot;&gt;
                Improve future project performance through lessons learned
            &lt;/td&gt;
            &lt;td class=&quot;Normal&quot; valign=&quot;top&quot; width=&quot;348&quot;&gt;
                &lt;a class=&quot;elementLinkWithUserText&quot; href=&quot;./../../../manage_iteration,_0rWYIslgEdmt3adZL5Dmdw.html&quot; guid=&quot;_0rWYIslgEdmt3adZL5Dmdw&quot;&gt;Manage Iteration&lt;/a&gt; 
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;
    &lt;br /&gt;
    Key considerations&lt;br /&gt;
&lt;/h4&gt;
&lt;p&gt;
    The Transition phase can include running old and new systems in parallel, migrating data, training users, and adjusting
    business processes.
&lt;/p&gt;
&lt;p&gt;
    The number of iterations in the Transition phase varies from one iteration for a simple system requiring primarily
    minor bug fixing, to many iterations for a complex system, involving addition of features and performing activities to
    make the business transition from using the old system to using the new system.
&lt;/p&gt;
&lt;p&gt;
    When the Transition phase objectives are met, the project is in position to be closed.&amp;nbsp;For some products, the end
    of the current project lifecycle may coincide with the beginning of the next lifecycle, leading to the next generation
    of the same product.
&lt;/p&gt;</mainDescription>
</org.eclipse.epf.uma:ContentDescription>
