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