<?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 - Matching";
	$pageKeywords	= "";
	$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><font color='#280882'>AMW</font> Use Case - Matching</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="#additional"><b>HowTo - additional information</b></a></li>
				<li><a href="#related"><b>Related use cases</b></a></li>
			</ul>
		</blockquote>
    		    	
		<hr class="clearer" />

		<div id="container>
		<table>
			<COLGROUP>
				<COL width="2%">
				<COL width="98%">
		<tr>
			<td></td>
			<td>
		
		The establishment of links between model or metamodel elements is present in numerous use cases of model weaving, such as 
		<i>metamodel comparison, model alignment, interoperability, and others</i>.
		
		Consequently, it is of major importance to provide mechanisms to easily create these links. 
		The creation of weaving models is typically a semi-automatic process, called <b>Matching</b>. 
		The links can be created manually or with the help of different matching transformations. <i>Matching transformations</i>
		implement different heuristics  to create weaving models. <p/>
		
		This use case gives a general overview of the matching process, and how it is handled by AMW and ATL.		
		The AMW user interface provides a graphical user interface to help in the matching process. It is integrated with the ATL  
		engine to support the execution of different matching heuristics.
		
		<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">
	    
	    Consider it is necessary to establish links between two metamodels, <i>MMa</i> and <i>MMb</i>. 	    
	    The general process is the following:
	    the two metamodels are the input of a matching transformation (see below). 
	    This first transformation creates a weaving model between these metamodels. <p/>This weaving model is in turn
	     the input for different matching transformations that are sequentially executed. 
	     Every matching transformation
	   	refines the input weaving model by creating more accurate links according to specific similarity criteria.
	    At any time after the execution of a matching transformation, the weaving model can be 
	    verified and refined manually with AMW.    	  	    	
    	</p>
	  	<p align="center">
	  		<img src="../resources/matching.png"/>
	  		<br /><br />
			<b>"Matching" Use Case's Overview</b>
		</p>
		<p align="justify">
			There are three different types of matching transformations:
		<ul class="midlist">
			<li><b>Link generation</b>:
			these transformations create a large set of links between the model elements, without 
			applying any heuritic method. They prepare the
			weaving model to the application of specific heuristics.
			</li>
			<li><b>Similarity assignment</b>: these transformations execute heuristics that calculate a similarity 
			measure for every weaving link (i.e., between the <i>WLinkEnd</i> elements connected by a <i>WLink</i>). 
			There are several methods to calculate the similarity between model elements. 
			For instance, using the similarity between names, using a dictionary of synonyms, or taking into
			account the structure of model elements. These methods are well adapted to calculate direct links between elements (see Figure below).
			</li>
			<li><b>Link selection and rewriting</b>: these transformations select the links with the best similarity values based on
			specific criteria (e.g., a threshold). The links are reorganized according to the metamodel extensions and the application scenario. 
			For instance, links can be rewritten in	nested structures that follow the containment relations between Classes and Attributes.
			</li>
			</ul><p/>
			However, even after the execution of a set of heuristics, it is posible that some links are not created correclty,
			or some links are simply not created. This is particularly the case of complex kinds of links (see Figure below). Complex kinds
			of links have more complex semantics, and usually have multiple cardinality. 
			The AMW user interface is designed to adapt to different weaving metamodels.
			This way it is possible to have a standard user interface to help on the creation of complex links as well.
			<p/>
			The matching transformation are typically executed in a pre-defined order. First, the link generation 
			transformations prepare the weaving model. Second, the similarity assignment transformations 
			calculate the similarity measures between the model elements. Finally, the link selection and rewriting
			transformations filter and reorganize the weaving models keeping the most similar links.
	  	</p>
	  	  	<p align="center">
	  		<img src="../resources/matching_transfos.png"/>
	  		<br /><br />
			<b>Examples of links</b>
		</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="../../download/"><h3>Download</h3></a>
		</td>
		<td>
			The AMW plug-in has an integrated environment to execute a set of matching transformations. They are available when clicking 
			in the context menu of the weaving panel (the middle panel), in the "Match" submenu. Go to the <a href="../../download/">download page</a> to get the plug-in.
			<p/>
		</td>				
		</tr>

		<tr>

		<td align="center">
			<a href="../../examples/#Semi-automatic generation of weaving models"><h3>Examples</h3></a>
		</td>
		<td>
			These examples are complete application scenarios that combine different matching transformations
			to produce weaving models for different purposes. 
			They are available in the <a href="../../examples/#Semi-automatic generation of weaving models">AMW Examples</a> page.
			<p/>
		</td>				
		</tr>
		
		<tr>
		
		<td align="center">
			<a href="http://www.sciences.univ-nantes.fr/lina/atl/bibliography/SAC07"><h3>Publication</h3></a>
		</td>
		<td>
			This publication titled "Semi-automatic Model Integration using Matching Transformations and Weaving Models" presents the use of matching transformations and weaving models for a model integration
			process. It contains a general overview of the matching process, explaining the different types of matching
			transformations, and how they are used to create weaving models.
		</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="additional">HowTo - additional information</a></h4>
		
		<table>
			<COLGROUP>
				<COL width="25%">
				<COL width="68%">
		<tr>
				
		<tr>
		
		<td align="center">
			<a href="matching_exec.php"><h3>Executing the transformations</h3></a>
		</td>
		<td>
			This document contains additional information about how to execute the existing matching transformations, 
			what do they do, and how they are organized.
		</td>		
		
		</tr>		
		
		<td align="center">
			<a href="matching_develop.php"><h3>Developing new transformations</h3></a>
		</td>
		<td>
			This document explains how to develop new heuristics and how to integrate them with the AMW plug-in. 
			The integration of new heuristics is easily done through an extension point defined in AMW.
		</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="../interoperability/"><h3>Tool interoperability</h3></a>
		</td>
		<td>
			This use case shows how weaving models are used to capture the semantic heterogeneities between different tools' 
			metamodels. We use two well known bug tracking tools, Mantis and Bugzilla.
		</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 
			softwer in the avionics industry).
		</td>		
		</tr>	
		<tr>		
		<td align="center">
			<a href="../AOM/"><h3>Aspect oriented modeling</h3></a>
		</td>
		<td>
			This use case demonstrates how AMW is used as an aspect oriented modeling solution to weave a generic communication 
			protocol with specific communication types.
		</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>						
		
		
		</table>
		</div>
	</div><p/>

	
EOHTML;


	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>