blob: 53eb0d56f6c336a904e54d9f3faca790187683dc [file] [log] [blame]
<?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);
?>