blob: 3901dbbbfe2eeb35f07b837d59cd803e25c6477d [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 = "Measuring UML models";
$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 compute and generate quality measures on UML models.
</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>,
Measures
</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 compute and generate quality measures on UML models. <a href="http://www.papyrusuml.org/">Papyrus</a> is a
dedicated tool for UML2 graphical modelling developed mainly 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">
The figure below presents an example of UML Class Diagram made with Papyrus. Measures will be generated and computed on this working example:
</p>
<p align="center">
<img src="img/UMLClassDiagram.PNG" />
<br /><br />
<b>Sample of UML 2 Class Diagram</b>
</p>
<p align="justify">
The generation of measures on a UML model allows to perform several investigations. For example measuring the various models may bring interesting insight into the
consideration of these models. Furthermore comparing similar measures applied to models of various origins may bring interesting observations.
</p>
<p align="justify">
From a UML Class Diagram, the following measures are available and will be computed when the ATL service <i>"Generate Measures"</i> will be executed:
<ul>
<li><b>Total Number of Packages:</b> TNP is the total number of packages in the model.<br /><br /></li>
<li><b>Total Number of Classes:</b> TNC is the total number of classes in a package or the model.<br /><br /></li>
<li><b>Total Number of Attributes:</b> TNA is the total number of attributes in a class, package or the model.<br /><br /></li>
<li><b>Depth Inheritance Tree:</b> In cases involving multiple inheritances, the DIT will be the maximum length from the node to the root of the tree.<br /><br /></li>
<li><b>Number of Children:</b> NOC is the number of immediate subclasses subordinated to a class in the class hierarchy.<br /><br /></li>
<li><b>Number of Attributes:</b> NA is defined as the total number of attributes in a class.<br /><br /></li>
<li><b>Number of Attributes Inherited:</b> NAI is defined as the total number of attributes inherited by a subclass.<br /><br /></li>
<li>
<b>Attribute Inheritance Factor:</b> The Attribute Inheritance Factor (AIF) is defined as a quotient between the sum of inherited attributes in all classes of the
system under consideration and the total number of available attributes (locally defined plus inherited) for all classes.
</li>
</ul>
</p>
<p align="justify">
Others and more complex measures could be easily added and implemented by modifying the corresponding ATL transformation.
To see how to configure and run the "Measuring UML models" ATL service, please take a look to the <a href="userGuide.php">User Guide</a>.
</p>
<p align="justify">
The computed metrics will be displayed in 3 different representations: <b>Tabular HTML</b>, <b>SVG Bar Chart</b>, and <b>SVG Pie Chart</b>. The figures below present the
sample results generated from our working example:
<ul>
<li>
<b>Tabular HTML</b><br />
<div align="center"><img src="img/tabularHTML.PNG" /></div>
<br /><br />
</li>
<li>
<b>SVG Bar Chart</b><br />
<div align="center"><img src="img/barChart.PNG" /></div>
<br /><br />
</li>
<li>
<b>SVG Pie Chart</b><br />
<div align="center"><a href="img/pieChart.PNG"><img src="img/pieChart_small.PNG" /></a></div>
<br /><br />
</li>
</ul>
</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="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://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>
</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);
?>