blob: 076496db9654f3b06bdc8b8c75413837f32dd469 [file] [log] [blame]
<?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.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="-QmIvs-rs3Fiyg7PVRx2IvQ"
name="new_roadmap,_irQiEOCsEdynptYdmll41Q" guid="-QmIvs-rs3Fiyg7PVRx2IvQ" changeDate="2008-06-20T15:07:48.042-0700"
version="7.2.0">
<mainDescription>&lt;p>&#xD;
&lt;strong>Getting Started&lt;/strong>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Begin by gaining an understanding of design patterns. There are good references in the Additional&amp;nbsp;Information&#xD;
section of the&amp;nbsp;&lt;a class=&quot;elementLink&quot;&#xD;
href=&quot;./../../../practice.tech.evolutionary_design.base/guidances/practices/evolutionary_design_DE27D8D9.html&quot;&#xD;
guid=&quot;_aSVhIB4qEd2bS8fFOQ7WWA&quot;>Evolutionary Design&lt;/a>&amp;nbsp;page. Patterns are essential to creating, managing, and&#xD;
evolving designs. As the name implies, evolutionary design involves returning to the existing design over and over&#xD;
again to refine, change, and improve previous thinking. It can be performed at the beginning of a development cycle&#xD;
(before implementation), during a development cycle (while implementing code), after the cycle (when the developer&#xD;
tests have&amp;nbsp;successfully executed), or any combination of these. The team should determine where in the development&#xD;
cycle the design will be performed.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Understand refactoring and the difference between code refactoring and design refactoring. There's no exact boundary&#xD;
separating the two but there are some clear areas where the developer will wear the &quot;design hat&quot; when reworking the&#xD;
design into a better structure. These areas will usually involve identifying where design patterns can replace or&#xD;
enhance the existing design, or areas of the design where patterns can be identified and harvested for reuse.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
&lt;strong>Common Pitfalls&lt;/strong>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Evolutionary design emerges from refactoring existing design. This improves the design without changing the behavior of&#xD;
the system. Failing to perform developer or unit testing is a high risk activity as you can't guarantee that:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
The original design works correctly&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
The refactored design works correctly&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
So developer testing must be rigorously performed in order to verify the robustness of the design. Otherwise you may&#xD;
waste a lot of time refactoring something that doesn't work, or refactoring the correct behavior out of the system.&#xD;
&lt;/p></mainDescription>
</org.eclipse.epf.uma:ContentDescription>