| <?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); |
| ?> |