| <?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.5/uma.ecore" |
| xmlns:rmc="http://www.ibm.com/rmc" rmc:version="7.5.0" xmlns:epf="http://www.eclipse.org/epf" |
| epf:version="1.5.0" xmi:id="-6c0bIr5yRMTjbRKw9kIHrA" |
| name="evolutionary_design,_aSVhIB4qEd2bS8fFOQ7WWA" guid="-6c0bIr5yRMTjbRKw9kIHrA" |
| changeDate="2008-08-12T18:29:30.357-0700" version="7.5.0"> |
| <mainDescription><h4>
 |
| The Essence of Evolutionary Design
 |
| </h4>
 |
| <p>
 |
| During each pass of design, you will add, refine and refactor your solution. The following steps summarize the
 |
| evolutionary design practice:
 |
| </p>
 |
| <ul>
 |
| <li>
 |
| Understand new requirement details
 |
| </li>
 |
| <li>
 |
| Identify design elements
 |
| </li>
 |
| <li>
 |
| Determine how elements collaborate to realize the scenario
 |
| </li>
 |
| <li>
 |
| Refine design decisions
 |
| </li>
 |
| <li>
 |
| Design internals
 |
| </li>
 |
| <li>
 |
| Communicate the design
 |
| </li>
 |
| <li>
 |
| Understand the architecture
 |
| </li>
 |
| <li>
 |
| Evaluate the design<br />
 |
| </li>
 |
| </ul></mainDescription> |
| <additionalInfo><p>
 |
| Meyer, B., <em>Object-Oriented Software Construction</em>, Prentice Hall, 1997
 |
| </p>
 |
| <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
 |
| <p>
 |
| A primer on OO basics.
 |
| </p>
 |
| </blockquote>
 |
| <p>
 |
| Gamma, E., Helm, R., Johnson, R., Vlissides, J., <em>Design Patterns: Elements of Reusable Object-Oriented
 |
| Software</em>, Addison-Wesley Professional; 1995
 |
| </p>
 |
| <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
 |
| <p>
 |
| The "bible" on learning what patterns are and how to describe them.
 |
| </p>
 |
| </blockquote>
 |
| <p>
 |
| Shalloway, J., Trott, J. <em>Design Patterns Explained</em> A New Perspective on Object-Oriented Design, Second
 |
| Edition, Addison Wesley, 2005
 |
| </p>
 |
| <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
 |
| <p>
 |
| This book describes how to evolve a design via design patterns.
 |
| </p>
 |
| </blockquote>
 |
| <p dir="ltr">
 |
| Richard E. Fairley, Mary Jane Willshire, "<a href="http://doi.ieeecomputersociety.org/10.1109/MC.2005.303"
 |
| target="_blank">Iterative Rework: The Good, the Bad, and the Ugly</a>," Computer, vol. 38, no. 9, pp. 34-41, Sept.,
 |
| 2005.<br />
 |
| <br />
 |
| Martin Fowler, <a href="http://martinfowler.com/articles/designDead.html" target="_blank">“Is Design Dead?”</a>
 |
| Retrieved 8 August 2008<br />
 |
| <br />
 |
| Craig Larman, Victor R. Basili, "<a href="http://doi.ieeecomputersociety.org/10.1109/MC.2003.1204375"
 |
| target="_blank">Iterative and Incremental Development: A Brief History</a>" Computer, vol. 36, no. 6, pp. 47-56, Jun.,
 |
| 2003.
 |
| </p>
 |
| <p dir="ltr">
 |
| <br />
 |
| &nbsp;
 |
| </p></additionalInfo> |
| <problem><p>
 |
| The Evolutionary Design practice reduces time-to-market for agile teams by incrementally formulating the design while
 |
| implementing the software. It improves productivity, innovation, and time-to-market by leveraging refactoring and
 |
| patterns to improve quality and maximizing reuse opportunities.
 |
| </p></problem> |
| <background>The application of evolutionary, iterative and incremental development methods for software dates back to the 1950s.
 |
| Evolutionary development is an alternative to a waterfall process. In the waterfall process, each past step or phase in the
 |
| process was considered complete before moving on to the next. The waterfall implies it is not possible to re-enter previous
 |
| phases to perform rework on any part of the project. The evolutionary design process realizes a solution by enhancing and
 |
| changing its structure and capabilities incrementally. This practice fits well within the framework of an incremental,
 |
| iterative or spiral development process, but can be used in any methodology.</background> |
| <application><h4>
 |
| How to Read This Practice
 |
| </h4>
 |
| <p>
 |
| Become familiar with its overall structure. Be sure you understand what it is in it and how it is organized.<br />
 |
| <br />
 |
| Review all the key concepts to understand the terminology used in this practice, including:
 |
| </p>
 |
| <ul>
 |
| <li>
 |
| <a class="elementLink"
 |
| href="./../../../practice.tech.evolutionary_design.base/guidances/concepts/design_E36137FA.html"
 |
| guid="_bFjlAPTYEduDKIuqTXQ8SA">Design</a>
 |
| </li>
 |
| <li>
 |
| <a class="elementLink" href="./../../../core.tech.common.base/guidances/concepts/design_mechanism_CE197B4E.html"
 |
| guid="_w2ACwA4LEduibvKwrGxWxA">Design Mechanism</a>
 |
| </li>
 |
| <li>
 |
| <a class="elementLink"
 |
| href="./../../../core.tech.common.base/guidances/concepts/implementation_mechanism_C92E670B.html"
 |
| guid="_0LcUkA4LEduibvKwrGxWxA">Implementation Mechanism</a>
 |
| </li>
 |
| <li>
 |
| <a class="elementLink"
 |
| href="./../../../practice.tech.evolutionary_design.base/guidances/concepts/requirements_realization_55C64ACB.html"
 |
| guid="_T9FbYFRFEd2o7OqLaYh8nA">Requirements Realization</a>
 |
| </li>
 |
| </ul>
 |
| <p>
 |
| Read the&nbsp;<a class="elementLinkWithType"
 |
| href="./../../../practice.tech.evolutionary_design.base/tasks/design_solution_A97CE9EA.html"
 |
| guid="_0fshwMlgEdmt3adZL5Dmdw">Task: Design the Solution</a>&nbsp;to understand what needs to be done. Finally, review
 |
| the associated guidelines for more information on the overall workflow.
 |
| </p>
 |
| <p>
 |
| See <a class="elementLink"
 |
| href="./../../../practice.tech.evolutionary_design.base/guidances/examples/using_ed_in_context_485AA45E.html"
 |
| guid="_4pR7MERaEd2eKeXZgLpnkQ">Using Evolultionary Design in Context</a>&nbsp;for more information.
 |
| </p></application> |
| </org.eclipse.epf.uma:PracticeDescription> |