<?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:epf="http://www.eclipse.org/epf" epf:version="1.5.0" xmi:id="_4wqaMMPaEdmbOvqy4O0adg"
    name="transforming_design_into_implementation,_0Y0dsMlgEdmt3adZL5Dmdw" guid="_4wqaMMPaEdmbOvqy4O0adg"
    authors="Jim Ruehlin" changeDate="2007-07-20T08:43:58.859-0700" version="1.0">
  <mainDescription>&lt;p>&#xD;
    &lt;b>Transforming&lt;/b> the design into code implements the system structure in the chosen source language. It also&#xD;
    implements the system behavior defined in the functional requirements. &lt;b>Implementing&lt;/b> the system behavior means&#xD;
    writing the code that allows different parts of the application (classes or components) to collaborate in realizing the&#xD;
    behavior of the system.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    There are various techniques for automatically transforming design to implementation. Here are some examples:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        Standard patterns can be applied to generate design and code elements from related design and implementation. For&#xD;
        example, a standard transformation pattern can be applied to a data table to create Java&amp;trade; classes to access the&#xD;
        data table. Another example is using an &lt;a href=&quot;http://www.eclipse.org/emf/&quot; target=&quot;_blank&quot;>Eclipse Modeling&#xD;
        Framework&lt;/a> to generate code for storing data that matches the model and to generate a user interface&#xD;
        implementation for populating data. A pattern or transformation engine can be used to create the implementation, or&#xD;
        the implementation can be done by hand. Pattern engines are easier and more reliable, but handwritten code&#xD;
        implementing a defined pattern will have fewer errors than handwritten code implementing a novel or unique design.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Models can be detailed and used to generate an implementation. Both structure (class and package diagrams) and&#xD;
        behavior diagrams (such as collaboration, state, and activity diagrams) can be used to generate executable code.&#xD;
        These initial versions can be further refined as needed.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        The design may be platform-independent to varying degrees. Platform-specific design models or even code can be&#xD;
        generated by transformations that apply various rules to map high-level abstractions of platform-specific elements.&#xD;
        This is the focus of the Object Management Group (OMG) Model-Driven Architecture (MDA) &lt;a&#xD;
        href=&quot;http://www.omg.org/&quot; target=&quot;_blank&quot;>(http://www.omg.org&lt;/a>) initiative.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Platform-specific visual models can be used to generate an initial code framework. This framework can be further&#xD;
        elaborated with additional code not specified in the design.&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    In all cases, however, some design abstraction (classes, components, and so on) is detailed to become the&#xD;
    implementation.&#xD;
&lt;/p></mainDescription>
</org.eclipse.epf.uma:ContentDescription>
