blob: e73b663a41dfa7a894553a7bc226fe9b49e238a6 [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.
$shortTitle = "Using a UML modeler to generate metamodels";
$pageTitle = "ATL Use Case - " . $shortTitle;
$pageKeywords = "";
$pageAuthor = "Freddy Allilaire";
# End: page-specific settings
#
# Paste your HTML content between the EOHTML markers!
$html = <<<EOHTML
<!-- Main part -->
<div id="midcolumn">
<h1>$pageTitle</h1>
<img align="right" src="../../images/atlLogoSmall.png" valign="top" style="padding-left: 10px;" alt="ATL Logo" />
<a href="http://www.papyrusuml.org/"><img align="right" src="../../images/Papyrus_48x48.gif" valign="top" style="padding-left: 10px;" alt="Papyrus" /></a>
<blockquote>
<ul>
<li><a href="#keywords"><b>Keywords</b></a></li>
<li><a href="#overview"><b>Overview</b></a></li>
<li><a href="#relatedUseCases"><b>Related Use Cases</b></a></li>
<li><a href="#download"><b>Download</b></a></li>
<li><a href="#acknowledgement"><b>Acknowledgement</b></a></li>
</ul>
</blockquote>
<hr class="clearer" />
<div id="container>
<p align="justify">
This use case shows how to use and integrate a model transformation service in a UML Modeler to generate metamodels conforming to KM3, MOF 1.4, and Ecore.
</p>
<h4 STYLE="font-size: 10pt; padding: 0; border-bottom: 2px solid #49457C; background-position: top left; background-repeat; repeat-x;"><a name="keywords"></a>Keywords</h4>
<table width="100%">
<COLGROUP>
<COL width="2%" />
<COL width="98%" />
</COLGROUP>
<tr>
<td></td>
<td>
<p align="justify">
UML Modeler,
<a href="http://www.eclipse.org/modeling/mdt/?project=uml2">UML 2</a>,
Metamodels,
Ecore,
MOF 1.4,
<a href="http://wiki.eclipse.org/index.php/KM3">KM3</a>
</p>
</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="overview"></a>Overview</h4>
<table width="100%">
<COLGROUP>
<COL width="2%" />
<COL width="98%" />
</COLGROUP>
<tr>
<td></td>
<td>
<p align="justify">
This use case presents how the Papyrus UML Modeler could be used to generate metamodels. <a href="http://www.papyrusuml.org/">Papyrus</a> is a dedicated tool
for modelling within UML2 developed by <a href="http://www-list.cea.fr/">CEA LIST</a>.
This open source tool is based on the Eclipse environment.
</p>
<p align="justify">
<table border="3" width = "100%" cellspacing="0" cellpadding="20">
<td align="justify" bgcolor="#b0c8f4">
<b>Metamodel definition</b><br /><br />
A metamodel is a model that defines the concepts and relationships that may be created in a model.
A model always conforms to a metamodel. This relation is called conformance. The conformance relation has a different nature than the representation relation
between a model and its system. A metamodel does not represent a model (that could be considered a system), but only the concepts and relationships that may be
created. A metamodel conforms to a metametamodel.
</td>
</table>
</p>
<p align="justify">
The metamodel will be generated from its description done via a UML 2 Class Diagram produced with Papyrus (an open-source graphical modeler tool for UML2 and based on Eclipse).
UML 2 Class Diagrams are the mainstay of object-oriented analysis and design. They show the classes of the system, their interrelationships (including
inheritance, aggregation, and association), and the operations and attributes of the classes. Class diagrams are used for a wide variety of purposes, including both
conceptual/domain modeling and detailed design modeling. The figure below presents an example of UML Class Diagram made with Papyrus.
</p>
<p align="center">
<img src="img/UMLClassDiagram.PNG" />
<br /><br />
<b>Sample of UML 2 Class Diagram</b>
</p>
<p align="justify">
From a UML Class Diagram, there is the possibility to generate a metamodel in the following formats:
<ul>
<li>
<b><a href="http://wiki.eclipse.org/index.php/KM3">KM3</a></b>: KM3 (Kernel Meta Meta Model) is a neutral language to write metamodels and to define Domain Specific
Languages.
</li>
<li>
<b>EMF XMI 2.0, conforming to Ecore</b>: Ecore is the metametamodel used by EMF. The <a href="http://www.eclipse.org/modeling/emf/">EMF</a> project is a modeling
framework and code generation facility for building tools and other applications based on a structured data model.
</li>
<li>
<b>MDR XMI 1.2, conforming to MOF 1.4</b>: <a href="http://www.omg.org/mof/">MOF (Meta Object Facility)</a> is an OMG standard enabling to describe metamodels through common semantics.
</li>
</ul>
</p>
<p align="justify">
To see how to configure and run the "Generate Metamodel" ATL service, please take a look to the <a href="userGuide.php">User Guide</a>.
</p>
<p align="justify">
Each action (e.g. "Generate metamodel in Ecore") will execute a corresponding ATL model transformation (e.g. "UML 2.0 to Ecore"). Both following figures present
samples of generated metamodels in <b>EMF XMI 2.0</b> and <b>KM3</b> formats.
</p>
<div align="center">
<table>
<tr>
<td><img src="img/Ecore.PNG" /></td>
<td><img src="img/KM3File.PNG" /></td>
</tr>
</table>
</div>
</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="relatedUseCases"></a>Related Use Cases
</h4>
<table>
<COLGROUP>
<COL width="2%" />
<COL width="98%" />
</COLGROUP>
<tr>
<td></td>
<td>
<p align="justify">
None at the current time.
</p>
</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="download">Download</a>
</h4>
<table width="100%">
<COLGROUP>
<COL width="25%">
<COL width="75%">
</COLGROUP>
<tr>
<td align="center"><a href="http://www.papyrusuml.org/"><img src="../../images/Papyrus_48x48.gif" /></a></td>
<td><a href="http://www.papyrusuml.org/"><b>Papyrus</b></a>, an open-source graphical modeler tool for UML2 and based on Eclipse</a>.</td>
</tr>
<tr>
<td align="center"><a href="http://wiki.eclipse.org/index.php/KM3"><h3>KM3</h3></a></td>
<td>KM3 is a neutral language to write metamodels and to define DSL.</td>
</tr>
<tr>
<td align="center"><a href="http://www.papyrusuml.org/scripts/home/publigen/content/templates/show.asp?P=131&L=EN&ITEMID=10#4"><h3>ATL Service</h3></a></td>
<td>Papyrus add-in containing the implementation of this use case.</td>
</tr>
<tr>
<td align="center"><h3><a href="userGuide.php">User Guide</a></h3></td>
<td>This user guide explains how to configure and launch the ATL service in Papyrus.</td>
</tr>
<tr>
<td align="center"><h3><a href="http://www.eclipse.org/atl/atlTransformations/UML2KM3/UML2KM3.zip">Source code</a></h3></td>
<td>Source code of the ATL scenario used in this use case.</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="acknowledgement"></a>Acknowledgement
</h4>
<table width="100%">
<COLGROUP>
<COL width="2%">
<COL width="98%">
</COLGROUP>
<tr>
<td></td>
<td>
The present work is being supported by the <a href="http://www.usine-logicielle.org">Usine Logicielle project of the System@tic Paris Region Cluster</a>.
</td>
</tr>
</table>
</div>
</div>
<div id="rightcolumn">
<div class="sideitem">
<h6>General Information</h6>
<ul>
<li style="list-style:none">May 2007</li>
<li style="list-style:none">By <a href="http://www.sciences.univ-nantes.fr/lina/atl/contrib/allilaire">Freddy Allilaire</a> (INRIA), Rémi Schnekenburger (CEA LIST)</li>
<li style="list-style:none"><br />Please, ask your questions on the <a href="news://news.eclipse.org/eclipse.modeling.m2m">M2M newsgroup</a></li>
</ul>
</div>
</div>
EOHTML;
# Generate the web page
$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>