| <?php require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); $App = new App(); $Nav = new Nav(); $Menu = new Menu(); include($App->getProjectCommon()); # All on the same line to unclutter the user's desktop' |
| |
| #***************************************************************************** |
| # |
| # template.php |
| # |
| # Author: Freddy Allilaire |
| # Date: 2005-12-07 |
| # |
| # Description: Type your page comments here - these are not sent to the browser |
| # |
| # |
| #**************************************************************************** |
| |
| # |
| # Begin: page-specific settings. Change these. |
| $pageTitle = "AMW Use Case - Metamodel Comparison"; |
| $pageKeywords = ""; |
| $pageAuthor = "Marcos Didonet Del Fabro"; |
| |
| # End: page-specific settings |
| # |
| |
| # Paste your HTML content between the EOHTML markers! |
| $html = <<<EOHTML |
| |
| <!-- Main part --> |
| <div id="midcolumn"> |
| <h1><font color='#280882'>AMW</font> Use Case - Metamodel comparison and model migration</h1> |
| |
| <a name="goals"></a> |
| <img align="right" src="../../resources/amwLogoSmall.png" valign="top" style="padding-left: 10px;" alt="AMW Logo" /> |
| <blockquote> |
| <ul> |
| <li><a href="#overview"><b>Overview</b></a></li> |
| <li><a href="#download"><b>Download and examples</b></a></li> |
| <li><a href="#related"><b>Related use cases</b></a></li> |
| <!--<li><a href="#documentation"><b>Documentation</b></a></li>--> |
| </ul> |
| </blockquote> |
| |
| <hr class="clearer" /> |
| |
| <div id="container> |
| <table> |
| <COLGROUP> |
| <COL width="2%"> |
| <COL width="98%"> |
| <tr> |
| <td></td> |
| <td> |
| |
| Metamodels need to be compared for several reasons. Two important reasons are: <br/> |
| 1) to migrate the models conforming to different versions of a metamodel;<br/> |
| 2) to represent the differences between two similar metamodels. |
| <p/>The objective of this use case is to demonstrate |
| how weaving models created with the help of the AMW plugin are used to compare different models. The weaving model is |
| used to produce model transformations between the models conforming to these metamodels. |
| |
| <h4 STYLE="font-size: 10pt; padding: 0; border-bottom: 2px solid #49457C; background-position: top left; background-repeat; repeat-x;"> |
| <a name="overview">Overview</a></h4> |
| |
| <p align="justify"> |
| |
| This use case compares two different versions of the same metamodel, <i>Scade(v1)</i> and <i>Scade(v2)</i>. The different versions |
| have been developed by two different persons, based on a formal specification. <a href="http://www.esterel-technologies.com/products/scade-suite/">Scade</a> is a standard for |
| development of embedded software for the Avionics Industry. |
| |
| The goal is to produce a transformation that transforms the source model conforming to <i>Scade(v1)</i> into the target model conforming |
| to <i>Scade(v2)</i>. |
| To be able to correclty transform the equivalent elements, it is necessary to compare the elements from both metamodels. |
| <p/> |
| The first step is to create a weaving model containing equivalence links between the model elements. This is done by |
| executing matching transformations and by refining the weaving model in the AMW prototype. |
| These transformations assign a similarity value between the elements of both metamodels. For instance, we assign high similarity values |
| for elements that have the same name and type. A high similarity value means |
| the element have a good probability to the equivalent. <p/> |
| This weaving model is a declarative representation of the links between the metamodels. The weaving model is used to produce |
| a model transformation. This model transformation is responsible to translate the source model into the target model. |
| </p> |
| <p align="center"> |
| <img src="../resources/compare_scade.png"/> |
| <br /><br /> |
| <b>"Metamodel comparison" Use Case's Overview</b> |
| </p> |
| <p align="justify"> |
| The comparison weaving model conforms to a weaving metamodel that is an extension of the <a href="http://www.eclipse.org/gmt/amw/zoo/#AMW%20core">core weaving metamodel</a>. |
| The metamodel extension contains an <i>Equivalent</i> link. This link contains a <i>similarity</i> attribute that saves the similarity |
| estimation between a <i>left</i> and a <i>right</i> element. |
| This link is extended by different kinds of links, depending on the type of elements that are being compared, for example <i>AttributeEqual</i> and |
| <i>ReferenceEqual</i>. The relations between <i>ElementEqual</i> and <i>AttributeEqual</i> links are created according to the containment |
| relations between Classes and Attributes. For the elements that have similarity value lower than a given threshold, |
| the <i>Equivalent</i> links are rewritten into <i>NotEquivalent</i> links. |
| </p> |
| <p align="center"> |
| <img src="../resources/comparison_metamodel.png"/> |
| <br /><br /> |
| <b>Metamodel extension for comparison (excerpt)</b> |
| </p> |
| The weaving model is used to produce a transformation from the source model into the target model. |
| A rule from this transformation is shown below. |
| <p align="center"> |
| <img src="../resources/compare_transformation.png"/> |
| <br /><br /> |
| <b>Transformation rule automatically generated</b> |
| <br> |
| |
| <h4 STYLE="font-size: 10pt; padding: 0; border-bottom: 2px solid #49457C; |
| background-position: top left; background-repeat; repeat-x;"> |
| <a name="download">Download and examples</a></h4> |
| |
| <table> |
| <COLGROUP> |
| |
| <COL width="25%"> |
| <COL width="75%"> |
| <tr> |
| |
| <td align="center"> |
| <h3><a href="../../download/">Metamodel<br/>Comparison</a></h3><!--</a>--> |
| </td> |
| <td> |
| The Atlas Model Weaver plugin has an integrated environment that enables to easily compare two models. |
| Go to the <a href="../../download/">download page</a>. AMW also produces a model transformation based on |
| a weaving model. These functionalities are available on the weaving panel context menu. <p/> |
| The accuracy of the weaving model depends on the proximity of the models that are compared. |
| </td> |
| </tr> |
| <td align="center"> |
| <h3><a href="../../examples/Scade/ScadeSimple.zip">Scade simple</a></h3><!--</a>--> |
| </td> |
| <td> |
| This example uses two simplified versions of the Scade metamodels (arround 30 classes) to easily illustrate |
| the metamodel comparison use case. |
| </td> |
| </tr> |
| |
| <td align="center"> |
| <h3><a href="../../examples/Scade/ScadeFull.zip">Scade complete</a></h3><!--</a>--> |
| </td> |
| <td> |
| This example is a full version of the Scade metamodels, with arround 400 elements each. It contains |
| the weaving models and the transformation that was generated. |
| </td> |
| </tr> |
| <td align="center"> |
| <h3><a href="../../examples/Scade/Scade_doc.php">Example HowTo</a></h3><!--</a>--> |
| </td> |
| <td> |
| This document is a step-by-step <b>HowTo</b> that explains how to execute the examples. |
| </td> |
| </tr> |
| </table> |
| <h4 STYLE="font-size: 10pt; padding: 0; border-bottom: 2px solid #49457C; |
| background-position: top left; background-repeat; repeat-x;"> |
| |
| <a name="related">Related use cases</a></h4> |
| |
| <table> |
| <COLGROUP> |
| <COL width="25%"> |
| <COL width="68%"> |
| <tr> |
| |
| <td align="center"> |
| <a href="../matching/"><h3>Matching</h3></a> |
| </td> |
| <td> |
| Matching is the generic process that creates weaving models. |
| This use case gives a general overview of the matching process, and how it is handled by AMW and ATL. |
| </td> |
| </tr> |
| <tr> |
| <td align="center"> |
| <a href="../interoperability/"><h3>Tool interoperability</h3></a> |
| </td> |
| <td> |
| This use case shows how weaving models are used to capture the semantic heterogeneities between different tools' |
| metamodels. We use two well known bug tracking tools, Mantis and Bugzilla. |
| </td> |
| </tr> |
| <tr> |
| <td align="center"> |
| <a href="../modelgen/"><h3>Bridge between SQL and KM3</h3></a> |
| </td> |
| <td> |
| This use case shows how weaving models and model transformations are used to translate SQL-DDL (Data Definition Language) into |
| KM3 (a modeling technical space) and to translate KM3 into SQL. |
| </td> |
| </tr> |
| |
| </table> |
| |
| |
| |
| </table> |
| |
| |
| </div> |
| </div> |
| |
| |
| EOHTML; |
| |
| |
| # Generate the web page |
| $App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html); |
| ?> |