blob: 3f86cd1129caa0889a035fc78047072e3b83b12a [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 = "ATL Use Case - Modeling Web applications";
$pageKeywords = "Metamodel comparison, model weaving, transformations, ATL, AMW, AMMA";
$pageAuthor = "Juan M. Vara Mesa";
# End: page-specific settings
#
# Paste your HTML content between the EOHTML markers!
$html = <<<EOHTML
<!-- Main part -->
<div id="midcolumn">
<h1>$pageTitle</h1>
<a name="goals"></a>
<img align="right" src="../../images/atlLogoSmall.png" valign="top" style="padding-left: 10px;" alt="ATL Logo" />
<blockquote>
<ul>
<li><a href="#overview"><b>Overview</b></a></li>
<li><a href="#howto"><b>Additional Information and Download</b></a></li>
<li><a href="#related"><b>Related use cases</b></a></li>
<li><a href="#acknowledgement"><b>Acknowledgement</b></a></li>
</ul>
</blockquote>
<hr class="clearer" />
<table>
<COLGROUP>
<COL width="2%">
<COL width="98%">
<tr>
<td></td>
<td align="justify">
<p/>
In this Use Case we show how the AMMA tools have been used to implement part of a method for Web Applications development.
More specifically we use KM3 to define a pair of DSLs based on the behavioral modeling elements of UML 2.0
and the ATL language to implement the mappings between them.
The gap between those DSLs makes it very complex to obtain directly an ATL transformation that works for any input
model. More information is needed in order to automatize the mappings. In a real MDE context, this additional input should take the shape
of a model. Here we show how a model weaving can be used to <i>parameterize</i> model transformations by defining an <b>annotation</b> model.
<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">
The aim of this Use Case was to implement a set of mappings previously defined using the ATL language.
Once we started to code the ATL program, we realised that some
information needed to generate the target model was not included in the source model.
For each execution of the transformation some <i>extra</i> data was needed. In some sense, these extra data can be shown as
a way of parameterizing the transformation.
<p/>
In this context, the first option was to extend the source metamodel in order to support the modeling of these extra data.
However this meant polluting the metamodel with concepts not relevant for the domain that it represented.
We needed a diferent way to collect these extra data that was related with the source model but not included in it.
Finally, since this information or <i>parameters</i> had to be available from the ATL program and considering
that we were in a MDE context, the best option was to use another model (and thus to define a new metamodel).
<p/>
However, a metamodel is intended to represent a new domain and we needed not to be able to model a new set of concepts. In fact we just needed
to provide with some extra information about the elements of some existing models. Since there already existed a base metamodel for
modeling relations between model elements (the <a href="http://www.eclipse.org/gmt/amw/zoo/#AMW%20core">core weaving metamodel</a>),
and even better, there was a base metamodel for annotating a model
(the <a href="http://dev.eclipse.org/viewcvs/indextech.cgi/*checkout*/org.eclipse.gmt/AMW/org.eclipse.gmt.amw.zoo/extensions/mmw_annotation.km3">
the Annotation extension</a>), we decided to use them in order to define a new weaving metamodel.
The process followed is summarized in the figure below.
<p align="center">
<img src="images/UseCase.Overview.png"/>
<br />
<b>Use Case Overview</b>
</p>
<p/>
For each execution of the ATL program, i.e., for each source model, we define a weaving model that conforms to an
annotation extension of the core weaving metamodel.
The weaving model contains a set of annotations that represent the information needed to execute the transformation, that is, the <i>parameters</i>
using by some of the rules of the ATL program. So, both, the source and the weaving model are taking as
inputs to generate the output model.
</p>
<h4 STYLE="font-size: 10pt; padding: 0; border-bottom: 2px solid #49457C;
background-position: top left; background-repeat; repeat-x;">
<a name="howto">Additional Information and Download</a></h4>
<table>
<COLGROUP>
<COL width="25%">
<COL width="75%">
<tr>
<td align="center">
<h3><a href="description.php">Using model annotations for<br/>Web applications modeling</a></h3><!--</a>-->
</td>
<td>
This document provides more detail about how model annotations are used in this Use Case.
It contains a complete description of the models considered and the context in which they are defined.
</td>
</tr>
<tr>
<td align="center">
<h3><a href="resources/User.Guide.pdf">Detailed description <br/>and User Guide</a></h3><!--</a>-->
</td>
<td>
A complete description of this Use Case.
It describes the content of the example provided and it details how to execute it.
It also provides with general information about how to
define annotation models and how to use ANT tasks to execute ATL transformations.
</td>
</tr>
<tr>
<td align="center">
<h3><a href="resources/SOD-M.zip">Example</a></h3>
</td>
<td>
An ATL project containing both a simplified scenary and a complete one.
</td>
</tr>
<tr>
<td align="center">
<h3><a href="resources/org.eclipse.gmt.weaver.kybele.EUC.Annotation_1.0.0.zip">AMW Extension</a></h3>
</td>
<td>
This plug-in that extends the AMW plug-in. When the weaver wizard for creating weaving models is launched, it shows
the defined extension of the core weaving metamodel.
This way, it is not needed to load it by hand.
</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="http://www.eclipse.org/gmt/amw/usecases/annotation/"><h3>Model annotations in Java 1.4</h3></a>
</td>
<td>
This use case shows how weaving models are used to annotate Java 1.4 metamodels.
</td>
</tr>
<tr>
<td align="center">
<a href="http://www.eclipse.org/gmt/amw/usecases/oamusecase/"><h3>Metamodel Annotation for Ontology Design</h3></a>
</td>
<td>
This use case presents a Model Driven solution for annotating models in order to obtain ontologies.
</td>
</tr>
</table>
<p/>
<h4 STYLE="font-size: 10pt; padding: 0; border-bottom: 2px solid #49457C; background-position: top left; background-repeat; repeat-x;">
<a name="acknowledgement"></a>Acknowledgement
</h4>
<table width="100%">
<COLGROUP>
<COL width="2%">
<COL width="98%">
</COLGROUP>
<tr>
<td></td>
<td>
The present work is been supported by the GOLD project financed by the Spanish Ministry of Education and Science (TIN2005-00010)
and the FoMDAs project (URJC-CM-2006-CET-0387)
cofinanced by the <a href="www.urjc.es">Rey Juan Carlos university
</a> and the Regional Government of Madrid.
</td>
</tr>
</table>
</table>
<p/>
</div>
<div id="rightcolumn">
<div class="sideitem">
<h6>General Information</h6>
<ul>
<li style="list-style:none">October 2007</li>
<li style="list-style:none">By <a href="http://kybele.escet.urjc.es/members/jmvara/">Juan M. Vara Mesa</a></li>
</ul>
</div>
</div>
EOHTML;
# Generate the web page
$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>