<?xml version="1.0"?>
 <rss version="2.0">
  <channel>
    <title>AMW News</title>
    <link>http://eclipse.org/gmt/amw/</link>
    <description>AMW News</description>



 <item>
		<title>New AMW use case - Bridge between SQL and KM3</title>
      	<link>http://www.eclipse.org/gmt/amw/usecases/modelgen/ </link>
		<description>
			This use case shows how weaving models and model transformations are used to translate SQL-DDL (Data Definition Language) into KM3 
			(modeling technical space). The use case presents the complete bridging process: the injection of the SQL file, the weaving model, 
			the transformations, and finally the extraction into a KM3 file.
		</description>
		<pubDate>Mon, 29 Jan 2007 15:30:00 CET</pubDate>
	</item>


 <item>
		<title>New AMW use case - model annotation</title>
      	<link>http://www.eclipse.org/gmt/amw/usecases/annotation/ </link>
		<description>
			 Models are annotated to add extra information that are not defined in the metamodel. 
			 For instance, a model can be annotated with preprocessing informations, comments, etc. <br/>
			 
			 This use case presents a generic annotation framework built using AMW. 
		</description>
		<pubDate>Wed, 24 Jan 2007 11:00:00 CET</pubDate>
	</item>


 <item>
		<title>New AMW use case - tool interoperability</title>
      	<link>http://www.eclipse.org/gmt/amw/usecases/interoperability/ </link>
		<description>
			Nowadays, there are a large number of tools that can be used to solve similar problems. 
			However, the tools have different data format and semantics. To support interoperability between 
			different tools, it is necessary to identify the 
			heterogeneities between them.<p/> 
			
			This use case shows how weaving models are used to capture the heterogeneities
			between different tools' metamodels. It uses two bug tracking tools as example.			
		</description>
		<pubDate>Mon, 22 Jan 2007 18:00:00 CET</pubDate>
	</item>


   <item>
		<title>New AMW use case - model matching</title>
      	<link>http://www.eclipse.org/gmt/amw/usecases/matching/ </link>
		<description>
			Matching is the process of creating weaving models. It is very important to provide methods 
			to easily create weaving models, because this is the starting point for 
			several other use cases. <p/>
			
			This use case presents a general overview of the matching process. It shows how AMW is integrated with 
			ATL to be able to execute different matching transformations. <p/>
			
			This use case also provides a step-by-step 'HowTo' that explains how to execute these transformations, 
			and a guide that explains how to develop user-defined methods. 		
			
		</description>
		<pubDate>Sun, 21 Jan 2007 17:00:00 CET</pubDate>
	</item>


   <item>
		<title>New AMW use case - aspect oriented modeling</title>
      	<link>http://www.eclipse.org/gmt/amw/usecases/AOM/</link>
		<description>
			Aspect oriented modeling aims at weaving business models and cross cutting models in a single model. A weaving can be applied 
			in any model (e.g., weavings in the cross cutting concern AND/OR in the business model), 
			because there is no preferential model. This use case shows how AMW is used on an aspect oriented modeling appplication. 
			The weaving model is interpreted by ATL transformations to weave the models. 
		</description>
		<pubDate>Fri, 19 Jan 2007 15:00:00 CET</pubDate>
	</item>

   <item>
		<title>New AMW use case - traceability</title>
      	<link>http://www.eclipse.org/gmt/amw/usecases/traceability/</link>
		<description>
			A new AMW use case is available: traceability of model transformations.
			This use case considers traceability of model transformations. After executing a model transformation, it is often necessary 
			to know the set of elements of the source model that were used to produce the target elements. 
			A weaving model is used to save this traceability information.
		</description>
		<pubDate>Thu, 18 Jan 2007 14:00:00 CET</pubDate>
	</item>

   <item>
		<title>New AMW use case - metamodel comparison</title>
      	<link>http://www.eclipse.org/gmt/amw/usecases/compare/</link>
		<description>
			A new use case of AMW is available: metamodel comparison.
			The objective of this use case is to demonstrate how weaving models created with the AMW plug-in are 
			used to compare different versions of a metamodel and to produce executable model transformations. <p/>
			We use two different versions of a 
			Scade metamodel (from the <a href="http://www.eclipse.org/gmt/am3/zoos/atlanticZoo/#SCADE">Atlantic zoo</a>). 
			Scade is a standard for development of embedded software for the Avionics Industry. 
		</description>
		<pubDate>Thu, 18 Jan 2007 10:50:00 CET</pubDate>
	</item>

   <item>
		<title>AMW use cases available</title>
      	<link>http://www.eclipse.org/gmt/amw/usecases/</link>
		<description>
			A new page with a set of use cases of AMW was created. 
			It contains simple and documented use cases of weaving models and AMW.
		</description>
		<pubDate>Fri, 08 Dec 2006 18:00:00 CET</pubDate>
	</item>


   <item>
		<title>New release of AMW</title>
      	<link>http://www.eclipse.org/gmt/amw/download/</link>
		<description>
			There is a new release of AMW plugin. This release is compatible with the latest releases of ATL and AM3.
		</description>
		<pubDate>Fri, 08 Dec 2006 18:00:00 CET</pubDate>
	</item>

   <item>
		<title>Improvements on the integration of AMW and matching transformations</title>
      	<link>http://dev.eclipse.org/viewcvs/indextech.cgi/org.eclipse.gmt/AMW</link>
		<description>
			The integration of the AMW plugin with the execution of matching transformations was improved. 
			The plugin uses the new <a href="http://wiki.eclipse.org/index.php/ATL_2006">ATL 2006 compiler</a> . 
			<p/>
			There is a new project "org.eclipse.weaver.transformation". 
			This project is an extension to the weaving core. It contains a set of matching and higher-order transformations 
			that can be called directly from the Weaving panel.
			<p/>
			For the moment these transformations are available in the context menu of the weaving panel (right click). 
			They are executed one-by-one. We plan to gradually add new transformations and also to combine them, 
			as well as to provide documentation.								
		</description>
		<pubDate>Wed, 29 Nov 2006 18:00:00 CET</pubDate>
	</item>


   <item>
		<title>AMW newsgroup migration</title>
      	<link>http://www.eclipse.org/gmt/</link>
		<description>
			As part of the changes related to the new Eclipse Modeling project, the AMW newsgroup has moved.
			Please use the new AMW newsgroup: eclipse.modeling.gmt.amw<br />
			The old one "eclipse.technology.gmt.amw" will be archived.
		</description>
		<pubDate>Fri, 20 Oct 2006 16:00:00 CET</pubDate>
	</item>

	<item>
		<title>Creation of a library of matching transformations</title>
		<link>http://www.eclipse.org/gmt/amw/examples/</link>
		<description>	
			Creation of a new category of examples with a set of matching transformations. 
			The matching transformations are used to automatically create weaving models.
		</description>
		<pubDate>Wed, 18 Oct 2006 17:00:00 CET</pubDate>
	</item>

	<item>
		<title>Creation of the AMW FAQ</title>
		<link>http://wiki.eclipse.org/index.php/AMW_FAQ</link>
		<description>
			Creation of a Wiki FAQ with questions about AMW.
			It will improve gradually. Everybody is welcome to contribute.
		</description>
		<pubDate>Tue, 10 Oct 2006 16:00:00 CET</pubDate>
	</item>

	<item>
		<title>New example - System Architecture (SA) Management</title>
		<link>http://www.eclipse.org/gmt/amw/examples/</link>
		<description>	
				This is a complex scenario of management of "systems of systems". 
				It uses many features of AMMA (ATLAS Model Management Architecture) to interoperate between
				different views of the same system. 
				It uses different types of matching transformations to produce weaving models that capture the 
				overlapping concepts of the different views. 				
		</description>
		<pubDate>Wed, 27 September 2006 11:40:00 CET</pubDate>
	</item>

	<item>
		<title>Creation of the AMW Wiki</title>
		<link>http://wiki.eclipse.org/index.php/AMW</link>
		<description>	
			The AMW Wiki was created. It contains general information about the AMW project, metamodel extensions, 
			information about the examples, wish list, etc.
		</description>
		<pubDate>Tue, 22 August 2006 15:30:00 CET</pubDate>
	</item>

	<item>
		<title>New example: using ATL to semi-automatically create weaving models</title>
		<link>http://www.eclipse.org/gmt/amw/examples/</link>
		<description>	
			This example contains a set of matching transformations (implemented in ATL) that produce a weaving
			model. The ATL transformations are executed sequentially using AM3 Ant tasks.<br/>
			The example is an adapted implementation of the Similarity Flooding algorithm 
			<font size="-1">(the reference to it is available on the example description)</font>. 
		</description>
		<pubDate>Mon, 24 July 2006 17:30:00 CET</pubDate>
	</item>

	<item>
		<title>New relase / commit with several improvements</title>
		<link>http://www.eclipse.org/gmt/amw/download/</link>
		<description>New release/commit with many changes in the Model Weaver. <p/>			
			Most part of changes are related to the metadata file
			 (that is not hidden from the users anymore), and the 
			 possibility to directly load .ecore weaving metamodels.
			<p/>
			The new release is available for download at the 
			<a href="../download/">
						download page.</a>
			More information
			<a href="../download/20060717/">
						here.</a>
				
		</description>
		<pubDate>Thu, 17 July 2006 11:00:00 CET</pubDate>
	</item>


	<item>
		<title>Weaving Mantis and Bugzilla bug trackers</title>
		<link>http://www.eclipse.org/gmt/amw/examples/</link>
		<description>
				This example contains an extension to the core weaving metamodel to support interoperability between different tools.
				A weaving model conforming to this extension captures links between the metamodels of two bug tracking tools 
				(<a href="http://www.mantisbt.org/">Mantis</a>
				and <a href="http://www.bugzilla.org/">Bugzilla</a>). The metamodels are extracted from the <a href ="http://www.eclipse.org/gmt/am3/zoos/">Atlantic Zoo</a>.
		</description>
		<pubDate>Mon, 26 June 2006 15:30:00 CET</pubDate>
	</item>



	<item>
		<title>New example: translating KM3 into SQL using AMW and ATL</title>
		<link>http://www.eclipse.org/gmt/amw/examples/</link>
		<description>
				This example contains a weaving model between a KM3 metamodel and a SQL DDL metamodel.
				The weaving model is used to produce an ATL transformation that translates KM3 models
				into SQL DDL models. It is similar to the example "Translating SQL into KM3", but the bridge
				is executed in the opposite direction. 							
		</description>
		<pubDate>Mon, 26 June 2006 15:30:00 CET</pubDate>
	</item>


	<item>
		<title>New example: translating SQL into KM3 using AMW and ATL</title>
		<link>http://www.eclipse.org/gmt/amw/examples/</link>
		<description>
				This example uses a weaving model between a SQL DDL metamodel and a KM3 metamodel.
				The weaving model is used to produce an ATL transformation that translates SQL DDL models
				into KM3 models. We used an SQL extracted from <a href="http://www.mantisbt.org/">Mantis</a> bug tracker.
		</description>
		<pubDate>Mon, 20 June 2006 11:30:00 CET</pubDate>
	</item>

	<item>
		<title>New example: production of ATL and XSLT from the same weaving model</title>
		<link>http://www.eclipse.org/gmt/amw/examples/</link>
		<description>
				This example generates XSLT and ATL transformations from the same weaving model.
				It contains two ATL HOTs (higher-order transformations). 
		</description>
		<pubDate>Mon, 19 June 2006 16:00:00 CET</pubDate>
	</item>

	<item>
		<title>The AMW Zoo is available</title>
		<link>http://www.eclipse.org/gmt/amw/zoo/</link>
		<description>
				The AMW Zoo is a zoo containing weaving metamodels and extensions of weaving metamodels expressed in KM3. 
		</description>
		<pubDate>Fri, 19 May 2006 15:00:00 CET</pubDate>
	</item>

	<item>
		<title>New ATL-AMW traceability example</title>
		<link>http://www.eclipse.org/gmt/amw/examples/</link>
		<description>
				This example generates an ATL execution trace in a weaving model. 
				An ATL transformation produces a traceability weaving model. 
		</description>
		<pubDate>Fri, 19 May 2006 13:00:00 CET</pubDate>
	</item>
    
	<item>
		<title>New HOT that transforms an AMW model into an ATL model</title>
		<link>http://www.eclipse.org/gmt/amw/examples/</link>
		<description>
			This example is an complement that uses the metamodel extension between 
			foreign keys and nested structures. <br/>
			It provides a HOT (higher-order transformation) that transforms a weaving model into
			an ATL model. 
		</description>
		<pubDate>Fri, 28 Apr 2006 17:00:00 CET</pubDate>
	</item>

	<item>
		<title>New AMW merge example</title>
		<link>http://www.eclipse.org/gmt/amw/examples/</link>
		<description>
			There is a new example of an extension to the weaving core metamodel.<br />
			This extension enables to create a merge weaving model a subset of GML metamodel 
			and an election metamodel into a SVG metamodel.			
		</description>
		<pubDate>Fri, 14 Apr 2006 16:00:00 CET</pubDate>
	</item>


	<item>
		<title>New AMW example</title>
		<link>http://www.eclipse.org/gmt/amw/examples/</link>
		<description>
			There is a new example of an extension to the weaving core metamodel.<br />
			This extension enables to create weavings between a metamodel with foreign key structure
			and a metamodel with nested structures.			
		</description>
		<pubDate>Fri, 14 Apr 2006 11:00:00 CET</pubDate>
	</item>


	<item>
		<title>New logo for AMW (Thank you Xavier and Romain)</title>
		<link>http://www.eclipse.org/gmt/amw/</link>
		<description>
			AMW has now a new logo, more sexy.<br />
			
			ATLAS team wants to thank Xavier Mehaut and Romain Larcher for their pretty work.
		</description>
		<pubDate>Mon, 06 Mar 2006 11:00:00 CET</pubDate>
	</item>

	<item>
		<title>New release available</title>
		<link>http://www.eclipse.org/gmt/amw/download/</link>
		<description>
			A new release of AMW is available. It is compatible with the latest release of ATL.
		</description>
		<pubDate>Thu, 26 Jan 2006 18:00:00 CET</pubDate>
	</item>

	<item>
		<title>Creation of AMW newsgroup</title>
		<link>news://news.eclipse.org/eclipse.tools.gmt.amw</link>
		<description>
			A newsgroup for discussing &lt;a href="news://news.eclipse.org/eclipse.tools.gmt.amw"&gt;AMW&lt;/a&gt; technical issues, bugs,
			suggestions, use cases is now available.
		</description>
		<pubDate>14 Jun 2005</pubDate>
	</item>
	<item>
		<title>AMW binaries are available</title>
		<link>http://www.eclipse.org/gmt/amw/download/</link>
		<description>
			The AMW binaries are now available in the &lt;a href="http://www.eclipse.org/gmt/amw/download/"&gt;download section&lt;/a&gt;.
			The sources are available under CVS.
		</description>
		<pubDate>10 Jun 2005</pubDate>
	</item>
	<item>
		<title>Start of AMW subproject</title>
		<link>http://www.eclipse.org/gmt/amw/</link>
		<description>
			Creation of &lt;a href="http://www.eclipse.org/gmt/amw/"&gt;AMW&lt;/a&gt; subproject. AMW will be available for download soon.
		</description>
		<pubDate>07 Jun 2005</pubDate>
	</item>
  </channel>
</rss>