blob: 8917deeb4b3f74872001005bb7ccb424b7ec24d3 [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 - Bridge between Domain Specific Languages (DSLs) and UML profiles";
$pageKeywords = "DSL, model weaving, model transformation, UML, profiles";
$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> $pageTitle </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="#acknowledgement"><b>Acknowledgement</b></a></li>
</ul>
</blockquote>
<hr class="clearer" />
<div id="container>
<table>
<COLGROUP>
<COL width="2%">
<COL width="98%">
<tr>
<td></td>
<td>
This use case presents a bridge between Domain Specific Languages (DSLs) and UML profiles. Domain Specific Languages (DSLs) and UML
profiles are two different views of Model Driven Engineering (MDE). DSLs aims at using small, well-focused languages dedicated to a particular domain. Each DSL can be associated to different metamodel.
It provides appropriate abstractions and notations to describe a particular domain. UML profiles provide some extension mechanisms to customize UML models to a specific domain. UML
profiles are used to model those aspects of systems or applications that are not directly describable by native UML elements.
<p/>
Both approaches are currently used by different communities. It is important to provide tools to interoperate between them.
The Object Management Group (<a href="http://www.omg.org">OMG</a>) has specified several UML Profiles (see the <a href="http://www.omg.org/technology/documents/profile_catalog.htm">
UML Profile Catalog</a>) and the mappings to different metamodels (DSLs). However, the mappings are
specified in a table in a text document. They cannot be processed by any tool. The bridges must be implemented manually.
<p/>
We describe below how a bridge between a UML Profile and a DSL can be rapidly developed using AMW and ATL.
We illustrate our approach using the UML Profile for MOF (see the <a href="http://www.omg.org/cgi-bin/doc?formal/2004-02-06">OMG specification</a>).
<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 bridge takes as input an UML model designed with a profile <i>Ma.uml*</i> and a model <i>Ma</i> of a specific application domain.
It transforms the profiled model <i>Ma.uml*</i> into model <i>Ma</i> (conforms to the metamodel <i>MMa</i>), and vice-versa.
The figure below shows the translation between the profiled UML
into the domain specific model <i>Ma</i>. It is also possible to do the opposite transformation:
creating <i>Ma.uml</i> from <i>Ma</i>.
<p align="center">
<img src="../resources/dsl_overview.png"/>
<br /><br />
<b>Bridge between DSLs and UML profiles</b>
</p>
Now we explain the general architecture using weaving models created with AMW and ATL transformations (see figure below).
The weaving model <i>MWeaver</i> conforms to the weaving metamodel extension <i>MMWeaver</i>. This extension is available in the
<a href="../../zoo/#DSLs to UML profiles extension">weaving metamodel Zoo</a>.
The weaving model defines the mappings details between the UML profile and the DSL. The mapping details describe the relationships
between the concepts of the UML profile and the concepts of the DSL metamodel.
<p/>
It is possible to use the UML metamodel to define every profiled UML model. However, this use case creates a specific profile metamodel.
Thus, we have different profile models. This way it is not necessary to handle with different UML versions, neither to load the whole
UML metamodel plus the profiles into AMW.
Hence, the mapping details of the weaving model are created between the DSL metamodel <i>MMa</i> and a profile model <i>ProfileForMMa</i>
(conforms to the profile metamodel <i>ProfileMeta</i>).
<p/>
The same weaving model is used to produce two different ATL transformations: <i>T1atl</i> and <i>T2atl</i>. <i>T1atl</i>
transforms the models conforming to the metamodel <i>MMa</i> to UML models created with the specific profiles.
<i>T2atl</i> transforms UML models to models conforming to <i>MMa</i>.
<p/>
The benefit of using a bridge separated in two levels is that we automatically produce two ATL transformations
from a single weaving model. Consequently, it is possible to execute transformations in both directions. In addition,
the only step that requires human intervention is the creation of the weaving model.
The subsequent steps are all automatic.
<p align="center">
<img src="../resources/dsl_general.png"/>
<br /><br />
<b>General overview</b>
</p>
The figure below shows a screenshot of a weaving model created in the AMW prototype. This weaving model contains
the mapping details between a UML profile for MOF, and the MOF metamodel. This example shows the declarative
definition of the weaving model. This enables to have mapping specifications independent of the transformation language, and
also bi-directional. In this case we produce two ATL transformations to transform the profile for MOF into the MOF metamodel,
and in the opposite direction as well.
<p align="center">
<img src="../resources/dsl_AMW.png"/>
<br /><br />
<b>Weaving a metamodel and a UML profile</b>
</p>
</p>
<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">
<a href="../../examples/UMLProfiles/ExampleUMLProfiles_DSLs.pdf"><h3>Detailed description</h3></a>
</td>
<td>
This document contains a complete and detailed description of this use case. It identifies more precisely the relations between UML profiles and metamodels,
and presents a tool using AMW and ATL that enables to bridge between these two approaches.
</td>
</tr>
<tr>
<td align="center">
<a href="Bridging_UMLProfile_DSL.ppt"><h3>Presentation</h3></a>
</td>
<td>
This presentation is a general overview of the approach. It was created based on the detailed documentation.
</td>
</tr>
<tr>
<td align="center">
<a name="interop" href="http://www.sciences.univ-nantes.fr/lina/atl/bibliography/MDSD05_1"><h3>Publication</h3></a>
</td>
<td>
The publication titled "A Practical Approach to Bridging Domain Specific Languages with UML profiles" presents the motivations of creating
bridges between DSLs and UML profiles. It also shows the main issues that appeared while developing a MDE solution.
<p/>
</td>
</tr>
<tr>
<td align="center">
<a href="../../examples/UMLProfiles/UMLProfiles_DSLs.zip"><h3>Example</h3></a>
</td>
<td>
This example implements a bridge between MOF and a UML profile for MOF.
</td>
</tr>
<tr>
<td align="center">
<a href="../../examples/UMLProfiles/UserGuideUMLProfiles_DSLs.pdf"><h3>User guide</h3></a>
</td>
<td>
This user guide presents the main steps on how to configure AMW an ATL to run the example.
</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>
<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="../compare/"><h3>Metamodel comparison</h3></a>
</td>
<td>
This use case demonstrates how weaving models are used to compare different
metamodels and to produce executable model transformations (we use two metamodels used to define embedded
software in the avionics industry).
</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>
<tr>
<td align="center">
<a href="../RDBMSXML/"><h3>Relational DB to XML</h3></a>
</td>
<td>
This use case shows how weaving models can be used to perform the data mapping between relational DBs and XML.
</td>
</tr>
<tr>
<td align="center">
<a href="../mergeSVG/"><h3>Merge of geographical information (GML) and statistical data</h3></a>
</td>
<td>
This use case presents a weaving model used to define a merge operation between a metamodel with geographical information
(an extension of GML) and a metamodel with statistical data into a graphical representation (SVG).
</td>
</tr>
<tr>
<td align="center">
<a href="../sys_of_sys/"><h3>System Architecture (SA) management</h3></a>
</td>
<td>
This use case shows how to map the overlapping concepts of different views of a complex system. It uses a System Architecture (SA)
framework called DoDAF (Department of Defense Architecture Framework).
</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>
This work is supported by the <a href="http://openembedd.inria.fr/home_html-en?set_language=en&cl=en">OpenEmbeDD project</a>.
</td>
</tr>
</table>
<p/>
</div>
</div><p/>
EOHTML;
# Generate the web page
$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>