<?xml version="1.0" encoding="UTF-8"?>
<org.eclipse.epf.uma:PracticeDescription 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" xmlns:rmc="http://www.ibm.com/rmc" rmc:version="7.5.1" xmi:id="-TleqHW_wvIYc0qLQgZUchA" name="new_practice,_uVnpQB4qEd2bS8fFOQ7WWA" guid="-TleqHW_wvIYc0qLQgZUchA" changeDate="2008-10-15T06:27:20.000-0700" version="7.5.0">
  <mainDescription>&lt;h3>&#xD;
    The essence of evolutionary architecture&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    In the Evolutionary Architecture practice, you analyze the major technical concerns that affect the solution and&#xD;
    document architectural decisions to ensure that you have assessed and communicated those decisions.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    The key principles of the Evolutionary Architecture practice are:&#xD;
&lt;/h3>&#xD;
&lt;ul type=&quot;disc&quot;>&#xD;
    &lt;li class=&quot;MsoNormal c3&quot;>&#xD;
        &lt;strong>&lt;span class=&quot;c1&quot;>Perform architecture work &quot;just in time&quot; for all other work.&lt;/span>&lt;/strong> &lt;span&#xD;
        class=&quot;c1&quot;>When planning your project, identify and discuss architectural issues with your team, and then&#xD;
        prioritize architectural work with any other work.&lt;/span> Base your priorities on mitigating technical risk rather&#xD;
        than creating value. Deferring architectural issues to handle them &quot;just in time&quot; enables the architecture to&#xD;
        &lt;em>&lt;span class=&quot;c2&quot;>evolve over time&lt;/span>&lt;/em>.&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;ul type=&quot;disc&quot;>&#xD;
    &lt;li class=&quot;MsoNormal c3&quot;>&#xD;
        &lt;strong>&lt;span class=&quot;c1&quot;>Document key architectural decisions and outstanding issues&lt;/span>&lt;/strong>&lt;span&#xD;
        class=&quot;c1&quot;>. The &lt;a class=&quot;elementLink&quot;&#xD;
        href=&quot;./../../../practice.tech.evolutionary_arch.base/workproducts/architecture_notebook_9BB92433.html&quot;&#xD;
        guid=&quot;_0XAf0MlgEdmt3adZL5Dmdw&quot;>Architecture Notebook&lt;/a> a list of the architectural issues to make it easy to&#xD;
        understand which architectural decisions you've made and which you've not yet addressed.&lt;/span>&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;ul type=&quot;disc&quot;>&#xD;
    &lt;li class=&quot;MsoNormal c3&quot;>&#xD;
        &lt;strong>&lt;span class=&quot;c1&quot;>Implement and test key capabilities as a way to address architectural&#xD;
        issues&lt;/span>&lt;/strong>&lt;span class=&quot;c1&quot;>. Resolving architectural issues typically requires not only architectural&#xD;
        brainstorming, but also associated prototyping. In other words: implement enough code to validate the assumptions&#xD;
        behind the architecture. The code becomes production code, except for anything thrown away because it proves the&#xD;
        architecture invalid.&lt;/span>&#xD;
    &lt;/li>&#xD;
&lt;/ul></mainDescription>
  <additionalInfo>&lt;h3>&#xD;
    Additional resources&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    See these sources for more information on the evolutionary architecture approach:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        &lt;a href=&quot;http://www.agilemodeling.com/essays/agileArchitecture.htm&quot; target=&quot;_blank&quot;>Agile Architecture: Strategies&#xD;
        for Scaling Agile Development&lt;/a>&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;a href=&quot;http://www.agilemodeling.com/essays/initialArchitectureModeling.htm&quot; target=&quot;_blank&quot;>Architectural&#xD;
        Envisioning&lt;/a>&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;a href=&quot;http://www.agiledata.org/essays/enterpriseArchitecture.html&quot; target=&quot;_blank&quot;>Agile Enterprise&#xD;
        Architecture&lt;/a>&#xD;
    &lt;/li>&#xD;
&lt;/ul>&lt;br /></additionalInfo>
  <problem>&lt;p>&#xD;
    &lt;span class=&quot;c1&quot;>The Evolutionary Architecture practice describes how to incrementally build and improve the software&#xD;
    architecture while uncovering and addressing architectural issues during software development. This reduces technical&#xD;
    risk without requiring significant up-front architectural effort.&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;span class=&quot;c1&quot;>This practice:&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        Improves quality and productivity by reducing the need to make time-consuming, error-prone fixes to late-detected&#xD;
        problems that result from architectural flaws. This is possible because the architecture is validated early, and&#xD;
        key architectural problems are corrected before the majority of development is done.&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        Reduces time to market by focusing on reuse. It improves the consistency and maintainability of the system by&#xD;
        incorporating lessons learned from development back into the architecture and applying those lessons to the rest of&#xD;
        development.&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        &lt;div class=&quot;MsoNormal c2&quot;>&#xD;
            &lt;span class=&quot;c1&quot;>Improves predictability by identifying and implementing the highest-risk technical areas&#xD;
            first.&lt;/span> It improves the team's responsiveness to change by shortening the architectural cycle and&#xD;
            minimizing time wasted in architectural scrap and rework when changes arise.&#xD;
        &lt;/div>&#xD;
    &lt;/li>&#xD;
&lt;/ul></problem>
  <application>&lt;p>&#xD;
    The best way to read this practice is to first familiarize yourself with its overall structure: what is in it and how&#xD;
    it is organized.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Next, review the key concepts for the practice. An especially important concept is &lt;a class=&quot;elementLinkWithType&quot;&#xD;
    href=&quot;./../../../core.tech.common.extend_supp/guidances/concepts/software_architecture_59A08DE0.html&quot;&#xD;
    guid=&quot;__O7tAMVvEduLYZUGfgZrkQ&quot;>Concept: Software Architecture&lt;/a>. After you understand what architecture is, turn your&#xD;
    attention to the Architecture Notebook. Then review the tasks, accessing guidelines and tool mentors associated with&#xD;
    each task as needed. You can also access the guidance provided by the practice directly through the Guidance folder.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Be sure to take a look at the list of enablement materials for additional sources of information. See the Additional&#xD;
    Resources section of this page.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    For step-by-step instructions on how to adopt this practice, see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
    href=&quot;./../../../practice.tech.evolutionary_arch.base/guidances/roadmaps/how_to_adopt_evolutionary_arch_practice_FEFA2CCF.html&quot;&#xD;
     guid=&quot;_Odpz8NciEdy1nJEYZGzN4A&quot;>Roadmap: How to adopt the Evolutionary Architecture practice&lt;/a>.&#xD;
&lt;/p></application>
</org.eclipse.epf.uma:PracticeDescription>
