<?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.6/uma.ecore" xmlns:epf="http://www.eclipse.org/epf" epf:version="1.5.1" xmi:id="-aMD1wQVJLzzlMARfHBdOBQ" name="core_principle_evolve,_GXiogMvoEdqukPpotm3DYg" guid="-aMD1wQVJLzzlMARfHBdOBQ" changeDate="2007-05-22T20:39:54.111+0330" changeDescription="removed OpenUP from page name." version="0.02">
  <mainDescription>&lt;h1>&#xD;
    Introduction&#xD;
&lt;/h1>&#xD;
&lt;p>&#xD;
    It is usually not possible to know all stakeholders' needs, be aware of all project risks, comprehend all project&#xD;
    technologies, or know how to work with your colleagues. Even if it were possible to know all of these things, they are&#xD;
    likely to change over the life of the project. Promote practices that allow the team to demonstrate&#xD;
    incremental value, and to get early and continuous feedback from stakeholders.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    The intention behind this principle is to continuously get feedback, and to improve both the product and the process of&#xD;
    the project team. When you provide structure and create a mindset for continuous feedback and improvement, changes are&#xD;
    accommodated more easily. In addition, feedback is captured early and often, and high-priority risks are confronted early in the&#xD;
    project. By constantly identifying and attacking risks, there is more confidence in project progress and quality.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Not only does the product evolve, but the team also finds better ways to work together and get involved with&#xD;
    stakeholders. The process followed by the team can be adjusted accordingly to leverage lessons learned and adjust&#xD;
    project pace and needs.&#xD;
&lt;/p>&#xD;
&lt;h1>&#xD;
    Practices&#xD;
&lt;/h1>&#xD;
&lt;h2>&#xD;
    Develop your project in iterations&#xD;
&lt;/h2>&#xD;
&lt;p>&#xD;
    Developing a system in a single, linear pass is difficult, because it makes it expensive to incorporate changes and new&#xD;
    knowledge. Worse, it can delay the discovery and mitigation of risks, because development efforts are scheduled later&#xD;
    in the lifecycle.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Divide your project into a series of time-boxed &lt;a class=&quot;elementLinkWithUserText&quot; href=&quot;./../../../openup/guidances/concepts/iteration_C20B1904.html&quot; guid=&quot;_lam4ADkBEduxovfWMDsntw&quot;>iterations&lt;/a>, and&#xD;
    plan your project iteratively. This iterative strategy enables you to incrementally deliver capabilities (such as an&#xD;
    executable, usable subset of implemented and tested requirements) that can be assessed by stakeholders at the end of&#xD;
    each iteration. This provides rapid and timely feedback loops, so that issues can be addressed and improvements made at&#xD;
    a lower cost. Also, this is accomplished while you still have sufficient budget and time left to do so, and you have&#xD;
    not gone so far ahead that major rework is required.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Iterative development enables teams to continuously improve software throughout the development &lt;a href=&quot;./../../../openup/deliveryprocesses/openup_lifecycle_2CB8A7DA.html&quot; guid=&quot;_0uyGoMlgEdmt3adZL5Dmdw&quot;>lifecycle&lt;/a>.&#xD;
&lt;/p>&#xD;
&lt;h2>&#xD;
    Focus iterations on meeting the next management milestone&#xD;
&lt;/h2>&#xD;
&lt;p>&#xD;
    A project can appear to make progress while risks and unresolved issues pile up. Focus on bringing closure to&#xD;
    important project issues (such as stakeholder concurrence regarding scope, and proving the proposed architecture).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Divide the project into phases (such as &lt;a class=&quot;elementLinkWithUserText&quot; href=&quot;./../../../openup/guidances/concepts/inception_phase_C4456871.html&quot; guid=&quot;_0hmKgBOMEduCNqgZdt_OaA&quot;>Inception&lt;/a>, &lt;a class=&quot;elementLinkWithUserText&quot; href=&quot;./../../../openup/guidances/concepts/elaboration_phase_BE880435.html&quot; guid=&quot;_2plxwBOMEduCNqgZdt_OaA&quot;>Elaboration&lt;/a>, &lt;a class=&quot;elementLinkWithUserText&quot; href=&quot;./../../../openup/guidances/concepts/construction_phase_873B6559.html&quot; guid=&quot;_48EKsBOMEduCNqgZdt_OaA&quot;>Construction&lt;/a> and &lt;a class=&quot;elementLinkWithUserText&quot; href=&quot;./../../../openup/guidances/concepts/transition_phase_DD5986E5.html&quot; guid=&quot;__ca5UBOMEduCNqgZdt_OaA&quot;>Transition&lt;/a>),&#xD;
    with each phase having a clearly visible management &lt;a class=&quot;elementLinkWithUserText&quot; href=&quot;./../../../openup/guidances/concepts/phase_milestones_5678231E.html&quot; guid=&quot;_HNxbwMBJEdqSgKaj2SZBmg&quot;>milestone&lt;/a>. The&#xD;
    focus of each iteration within a phase is on achieving that milestone.&#xD;
&lt;/p>&#xD;
&lt;h2>&#xD;
    Manage risks&#xD;
&lt;/h2>&#xD;
&lt;p>&#xD;
    Deferring difficult and risky issues until later in a project significantly increases the risk of project failure. Such&#xD;
    procrastination may lead to investing in the wrong technologies, a bad design, or a set of requirements that may not&#xD;
    address stakeholder needs.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Attack &lt;a href=&quot;./../../../openup/guidances/concepts/risk_AF5840DA.html&quot; guid=&quot;_0bsLgMlgEdmt3adZL5Dmdw&quot;>risks&lt;/a> early,&#xD;
    or they will attack you. Continuously identify and prioritize risks, and then devise strategies to mitigate them.&#xD;
    Determine the focus of iterations based on risks. For example, architecturally significant risks should be addressed&#xD;
    early in the project, no later than the end of the Elaboration phase, when the architecture has been proven and baselined.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Fore more information, see &lt;a class=&quot;elementLinkWithType&quot; href=&quot;./../../../openup/guidances/guidelines/risk_management_B1256EB4.html&quot; guid=&quot;_VNxL4ACsEdu8m4dIntu6jA&quot;>Guideline: Managing Risks&lt;/a>.&#xD;
&lt;/p>&#xD;
&lt;h2>&#xD;
    Embrace and manage change&#xD;
&lt;/h2>&#xD;
&lt;p>&#xD;
    Change is inevitable, and while change presents opportunities to enhance stakeholder value, unconstrained change will&#xD;
    result in a bloated, deficient system and unmet stakeholder needs. Furthermore, the later in the development cycle a&#xD;
    change is made, the more the change is likely to cost.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Embrace and manage change. Embracing change helps you to build a system that addresses stakeholder needs, and managing&#xD;
    change allows you to reduce costs and improve predictability of those changes. Changes made early in the project can&#xD;
    usually be made with limited cost. As you progress in your project, changes can become increasingly costly.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    To satisfy customer needs, you typically need to introduce changes to the project, but the customer must be made aware&#xD;
    of the impact that those changes have on the project cost and schedule. Understand the impact of a change in the&#xD;
    current phase, and isolate team members from disruptive changes during the current iteration. Change requests are&#xD;
    reviewed and prioritized during the current iteration, but are not acted upon until assigned to a future iteration.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    If necessary, document the changes. For informal projects, a discussion with stakeholders may be enough.&#xD;
&lt;/p>&#xD;
&lt;h2>&#xD;
    Measure progress objectively&#xD;
&lt;/h2>&#xD;
&lt;p>&#xD;
    If you do not objectively know how your project is progressing, you do not really know if it is failing or succeeding.&#xD;
    Uncertainty and change make a software project’s progress difficult to measure objectively, and people are prone to&#xD;
    making objective assessments from subjective information.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Get a clear picture of project status by objectively measuring progress. The best measure of progress is the delivery&#xD;
    of working software, which is something that you do by taking an evolutionary approach. You can also define a set of objective &lt;a href=&quot;./../../../openup/guidances/concepts/metrics_37698708.html&quot; guid=&quot;_0mYYkMlgEdmt3adZL5Dmdw&quot;>metrics&lt;/a> to collect&#xD;
    during an iteration (for example, requirements that were implemented and validated, number of defects issued compared&#xD;
    with number fixed) and review them as part of the &lt;a href=&quot;./../../../openup/tasks/assess_results_EC34D88D.html&quot; guid=&quot;_0l53cMlgEdmt3adZL5Dmdw&quot;>iteration assessment&lt;/a>. &#xD;
&lt;/p>&#xD;
&lt;h2>&#xD;
    Continuously re-evaluate what you do&#xD;
&lt;/h2>&#xD;
&lt;p>&#xD;
    On a regular basis, ask questions and verify assumptions about the project. Regularly meet with the team to track&#xD;
    status and identify risks and issues. This can be done daily when the team gathers to share the status of individual&#xD;
    responsibilities and identify and address issues. At the end of iterations, &lt;a href=&quot;./../../../openup/tasks/assess_results_EC34D88D.html&quot; guid=&quot;_0l53cMlgEdmt3adZL5Dmdw&quot;>assess the status&lt;/a> of what has been done and look for areas of improvement that can&#xD;
    be addressed in the next iteration. Have a retrospective review at the end of the project and capture lessons learned&#xD;
    to run future projects in a more efficient way.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    If we always challenge what we do and seek new, innovative ways to develop software, we improve how we work. This leads&#xD;
    to improved project results.&#xD;
&lt;/p></mainDescription>
</org.eclipse.epf.uma:ContentDescription>
