blob: 481ca1dabb6e199992d31d521ca9b4f37f928fcd [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 - Software product line engineering";
$pageKeywords = "Software product line, MTTL, feature model, template model, model weaving";
$pageAuthor = "Marcos Didonet Del Fabro, Orlando Avila-Garcia";
# 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 - Software product line engineering<br/>
<font size="-1">Mapping feature models to model templates</font></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="#acknowledgement"><b>Acknowledgements</b></a></li> -->
<li><a href="#reference"><b>References</b></a></li>
</ul>
</blockquote>
<hr class="clearer" />
<table>
<COLGROUP>
<COL width="2%">
<COL width="98%">
<tr>
<td>
</td>
Mapping features to models is a necessary step when developing software product lines of
models. In such product lines, we need to relate objects from feature models (i.e. features) to
objects from model templates. In this use case we show an extension to the AMW platform to
specify those relations through weaving models.
<p/>
This use case was developed by <a href="http://www.opencanarias.com">OpenCanarias</a> company.
<p/>
<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>
One of the possible synergies between software product lines and model driven engineering is the use of
software product lines of models [1, 2]. In these product lines, family members are models, which are
characterized using features from a feature model.
The superimposed variants approach [1] is a technique to implement such product lines. It is based on the
creation of a model template containing the family members in a superimposed way. The specialization of
the template gives rises to the different members. This specialization is done by purging model template
objects following the selection of features from a feature model (feature configuration). This technique
requires mechanisms to relate features from the feature model to model template objects.
One approach consists in annotating model template objects with presence conditions and meta-expressions referring to
features.
<p/>
However, this raises several problems, such as the pollution of the model template
with annotations [2]. An alternative approach is to use a domain-specific language to describe mappings
between features and model template objects; that is the case of MTTL (Model Template Transformation
Language) [2], a domain specific transformation language that specifies the specialization of model
templates following feature configurations.
<br/>
In this use case we present WMM_MTTL, an extension to a <a href="http://wiki.eclipse.org/index.php/AMW#Core_weaving_metamodel">core weaving metamodel</a>
that implements MTTL using the AMW plug-in. The general approach is shown in the figure below.
<p align="center">
<img src="../resources/wmm_mttl_approach.png"/>
<br /><br />
<b>WMM_MTTL approach</b>
</p>
Let's call Request Management Systems (RMS) those systems which, within the public
administration domain, manage citizen's requests. In our experience, those systems share many
commonalities; therefore, we can improve productivity by reusing software artifacts in their
development. In this case study we propose to take advantage of our knowledge about
commonalities and variabilities between UML use case models in the RMS domain. In this document
we show a first step towards the development of a software product line for the maintenance of a
family of use case models that covers any variant of RMS.
<h3>Domain engineering</h3>
The infrastructure of a software product line is created during the domain engineering (or software
product line engineering). The first step is a domain analysis, performed by the
domain engineer through a commonality and variability analysis in order to set the scope of the
product line. The result is a feature model.
The second step is the domain design and implementation, where the domain engineer designs and
implements reusable assets that will help in the development of every member of the model family.
Following a superimposed variants approach, the domain engineer creates a model template
containing all use case model variants in a superimposed form.
At the same time, the domain
engineer especifies how to transform or to specialize such a template as to obtain every family
member. We use <b>WMM_MTTL</b>, our implementation of MTTL [2], as a metamodel extension
of AMW. Following a MDA (Model-Driven Architecture) approach, the domain engineer
transforms instances of WMM_MTTL into any general-purpose transformation language (GPTL), such as ATC [4] or ATL [5].
<h3>Implementation</h3>
We address an intentionally reduced scope for our software
product line. In particular, only eight use case model variants will be taken into account during the
domain analysis. We characterize them using a feature model with six mandatory, optional and
alternative features. The feature model conforms to the Cardinality-Based Feature Model from [3].
Cardinality [0..1] identifies optional features and cardinality [1..1]
mandatory ones. There is only one feature group, with cardinality <1-1>, i.e. made of two alternative
features where one and only one of them must be selected. By selecting alternative and optional
features from this feature model we obtain eight different feature configurations, each of them
corresponding to a member of the use case model family.
<p align="center">
<img src="../resources/RMS_Template_cbfm.jpg"/>
<br /><br />
<b>Feature model (CBFM)</b>
</p>
Taking a superimposed variants approach to model template creation, we include within the same
use case model the eight use case model variants in a superimposed form. In other words, we
include in the model template all objects belonging to any of the members of the model family. The
use case model depicted below represents such a model template, whose specialization gives
rise to the different family members.
<p align="center">
<img src="../resources/RMS_Template.jpg"/>
<br /><br />
<b>Use case model template (UML2)</b>
</p>
The screenshot below depicts a WMM_MTTL weaving model with six mappings between the feature model
(left) and the model template (right). For example, the first mapping (highlighted) specifies the purge of the
relation between objects <i>Staff Member</i> and <i>Validate Request</i> from the
model template when the feature <i>Request Validation</i> is not found in a
feature configuration.
<p align="center">
<img src="../resources/mttl_amw_screen_shot.png"/>
<br /><br />
<b>WMM_MTTL model edited in AMW</b>
</p>
<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="mmw_mttl_english.pdf"><h3>Technical report</h3></a>
</td>
<td>
This technical report explains this use case in more details, with the feature models and use case template models.
<p/>
</td>
</tr>
<td align="center">
<a href="../../examples/wmm_mttl/wmm_mttl.zip"><h3>Example</h3></a>
</td>
<td>
This is a complete example with a WMM_MTTL transformation developed in the AMW plug-in.
<p/>
</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="reference"></a>References
</h4>
[1] K. Czarnecki and M. Antkiewicz: Mapping Features to Models: A Template Approach Based on
Superimposed Variants. In GPCE'05: Proceedings of the Fourth International Conference on Generative
Programming and Component Engineering. Springer-Verlag, LNCS 3676, pages 422-437. September 2005.<p/>
[2] O. Avila-García, A. Estévez García, E.V. Sánchez Rebull and J.L. Roda García: Using Software Product
Lines to Manage Model Families in Model-Driven Engineering. In ACM SAC 2007: Proceedings of The 22nd
Annual ACM Symposium on Applied Computing - Model Transformation Track. ACM Press, pages 1006-
1011. March 2007.
<p/>
[3] K. Czarnecki, S. Helsen, and U. Eisenecker. Staged Configuration Through Specialization and Multi-Level
Configuration of Feature Models. Software Process Improvement and Practice, special issue on "Software
Variability: Process and Management”, 10(2), 2005, pp. 143 – 169.
<p/>
[4] A. Estévez García, J. Padrón, E.V. Sánchez Rebull and J.L. Roda García: ATC: A Low-level model
transformation language. In MDEIS 2006: Proceedings of the 2nd International Workshop on
Model Driven Enterprise Information Systems. May 2006.
<p/>
[5] F. Jouault and I. Kurtev: On the Architectural Alignment of ATL and QVT. In ACM SAC 2006:
Proceedings of The 21st Annual ACM Symposium on Applied Computing. ACM Press. April 2006.
<p/>
</div><p/>
<div id="rightcolumn">
<div class="sideitem">
<h6>General Information</h6>
<ul>
<li style="list-style:none">April 2007</li>
<li style="list-style:none">By <a href="mailto://orlando@opencanarias.com">Orlando Avila-Garcia</a> (OpenCanarias)</li>
</ul>
</div>
</div>
EOHTML;
# Generate the web page
$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>