<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Epsilon Weblog</title>
	<atom:link href="http://epsilonblog.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://epsilonblog.wordpress.com</link>
	<description>... discussion on the Epsilon Eclipse GMT component</description>
	<pubDate>Thu, 17 Jul 2008 22:34:08 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
	<language>en</language>
			<item>
		<title>Inspecting EMF models with Exeed</title>
		<link>http://epsilonblog.wordpress.com/2008/07/17/inspecting-emf-models-with-exeed/</link>
		<comments>http://epsilonblog.wordpress.com/2008/07/17/inspecting-emf-models-with-exeed/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 22:34:08 +0000</pubDate>
		<dc:creator>Dimitrios Kolovos</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://epsilonblog.wordpress.com/2008/07/17/inspecting-emf-models-with-exeed/</guid>
		<description><![CDATA[Exeed is an extended version of the built-in EMF reflective editor that enables customisation of labels and icons by adding annotations to ECore metamodels. Another feature it provides is the ability to display structural information about the elements of an EMF model. To see the types of all elements in the editor tree as well [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Exeed is an extended version of the built-in EMF reflective editor that enables <a href="http://www.eclipse.org/gmt/epsilon/doc/Exeed.pdf">customisation of labels and icons</a> by adding annotations to ECore metamodels. Another feature it provides is the ability to display structural information about the elements of an EMF model. To see the types of all elements in the editor tree as well as the feature in which each element is contained, open your EMF model with Exeed and click Exeed-&gt;Show Structural Info.</p>
<p><a href="http://epsilonblog.files.wordpress.com/2008/07/image.png"><img style="border-width:0;" height="282" alt="image" src="http://epsilonblog.files.wordpress.com/2008/07/image-thumb.png?w=173&h=282" width="173" border="0"></a> </p>
<p>By doing this, the structural information of each element appears next to its label. For example, selecting this option for a GMF .gmfgraph model will make it look like this:</p>
<p><a href="http://epsilonblog.files.wordpress.com/2008/07/image1.png"><img style="border-width:0;" height="405" alt="image" src="http://epsilonblog.files.wordpress.com/2008/07/image-thumb1.png?w=392&h=405" width="392" border="0"></a> </p>
<p>The red-underlined text shows the <strong>type</strong> of the element (FigureGallery), the blue-underlined text shows the <strong>feature</strong> in which it is contained (figures), and the green-underlined text shows <strong>the EClass that owns the containing feature</strong> (Canvas). So next time you need to open an EMF model with a text editor to inspect its structure by reading the underlying XMI, you may want to consider giving Exeed a try instead.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/epsilonblog.wordpress.com/40/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/epsilonblog.wordpress.com/40/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/epsilonblog.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epsilonblog.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/epsilonblog.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/epsilonblog.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/epsilonblog.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/epsilonblog.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/epsilonblog.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/epsilonblog.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/epsilonblog.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/epsilonblog.wordpress.com/40/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&blog=2097844&post=40&subd=epsilonblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://epsilonblog.wordpress.com/2008/07/17/inspecting-emf-models-with-exeed/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dskolovos-128.jpg" medium="image">
			<media:title type="html">Dimitrios Kolovos</media:title>
		</media:content>

		<media:content url="http://epsilonblog.files.wordpress.com/2008/07/image-thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://epsilonblog.files.wordpress.com/2008/07/image-thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>EpsilonLabs</title>
		<link>http://epsilonblog.wordpress.com/2008/07/16/epsilonlabs/</link>
		<comments>http://epsilonblog.wordpress.com/2008/07/16/epsilonlabs/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 16:30:31 +0000</pubDate>
		<dc:creator>Dimitrios Kolovos</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://epsilonblog.wordpress.com/2008/07/16/epsilonlabs/</guid>
		<description><![CDATA[We&#8217;ve launched a satellite project of Epsilon, called EpsilonLabs (http://epsilonlabs.sourceforge.net), where we are hosting experimental contributions built atop Epsilon and contributions that use libraries which conflict with EPL (and as such they cannot be hosted in the Eclipse CVS). The initial contributions to EpsilonLabs include two non-EPL drivers for accessing MDR (MOF 1.4, XMI 1.x) [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>We&#8217;ve launched a satellite project of Epsilon, called EpsilonLabs (<a href="http://epsilonlabs.sourceforge.net">http://epsilonlabs.sourceforge.net</a>), where we are hosting experimental contributions built atop Epsilon and contributions that use libraries which conflict with EPL (and as such they cannot be hosted in the Eclipse CVS). The initial contributions to EpsilonLabs include two non-EPL drivers for accessing MDR (MOF 1.4, XMI 1.x) and Z (LaTeX) models from Epsilon programs, and an experimental integration of (a slightly modified version of) EMF Compare with the Epsilon Comparison Language (ECL).</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/epsilonblog.wordpress.com/35/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/epsilonblog.wordpress.com/35/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/epsilonblog.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epsilonblog.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/epsilonblog.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/epsilonblog.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/epsilonblog.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/epsilonblog.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/epsilonblog.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/epsilonblog.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/epsilonblog.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/epsilonblog.wordpress.com/35/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&blog=2097844&post=35&subd=epsilonblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://epsilonblog.wordpress.com/2008/07/16/epsilonlabs/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dskolovos-128.jpg" medium="image">
			<media:title type="html">Dimitrios Kolovos</media:title>
		</media:content>
	</item>
		<item>
		<title>Migrating to ANTLR 3</title>
		<link>http://epsilonblog.wordpress.com/2008/06/18/migrating-to-antlr-3/</link>
		<comments>http://epsilonblog.wordpress.com/2008/06/18/migrating-to-antlr-3/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 21:58:18 +0000</pubDate>
		<dc:creator>Dimitrios Kolovos</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://epsilonblog.wordpress.com/2008/06/18/migrating-to-antlr-3/</guid>
		<description><![CDATA[For the past couple of weeks we&#8217;ve been working on migrating to ANTLR 3 (to get rid of the dependency to the nasty ANTLR 2.x jar which we are not allowed to store in the CVS). Although ANTLR 3 was made available quite sometime ago, it didn&#8217;t provide any grammar reuse/inheritance mechanisms (which is essential [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>For the past couple of weeks we&#8217;ve been working on migrating to ANTLR 3 (to get rid of the dependency to the nasty ANTLR 2.x jar which we are not allowed to store in the CVS). Although ANTLR 3 was made available quite sometime ago, it didn&#8217;t provide any grammar reuse/inheritance mechanisms (which is essential for <a href="http://www.eclipse.org/gmt/epsilon">Epsilon</a> since all its languages reuse the grammar of the core EOL language, and the merging language (EML) also reuses the grammar of the transformation language (ETL)).</p>
<p>Fortunately, an early version of ANTLR 3.1 which was released a month ago added support for grammar reuse and it is now possible to do the migration. Rewriting the grammars for v3.1 has <a href="http://www.antlr.org:8888/browse/ANTLR-301">not been as smooth</a> as we expected, however, we will have (hopefully) fully migrated to ANTLR 3.1 by early July.</p>
<p><strong>[Update 23/6/2008]</strong> The migration process is now finished. This includes all the languages of the platform as well as the HUTN implementation.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/epsilonblog.wordpress.com/34/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/epsilonblog.wordpress.com/34/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/epsilonblog.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epsilonblog.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/epsilonblog.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/epsilonblog.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/epsilonblog.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/epsilonblog.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/epsilonblog.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/epsilonblog.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/epsilonblog.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/epsilonblog.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&blog=2097844&post=34&subd=epsilonblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://epsilonblog.wordpress.com/2008/06/18/migrating-to-antlr-3/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dskolovos-128.jpg" medium="image">
			<media:title type="html">Dimitrios Kolovos</media:title>
		</media:content>
	</item>
		<item>
		<title>Model Refactoring in EMF editors</title>
		<link>http://epsilonblog.wordpress.com/2008/03/16/model-refactoring-in-emf-editors/</link>
		<comments>http://epsilonblog.wordpress.com/2008/03/16/model-refactoring-in-emf-editors/#comments</comments>
		<pubDate>Sun, 16 Mar 2008 21:53:20 +0000</pubDate>
		<dc:creator>Dimitrios Kolovos</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://epsilonblog.wordpress.com/?p=27</guid>
		<description><![CDATA[In this post we demonstrated how EWL from the Epsilon GMT component can be used to automate model refactoring (in-place model transformation in general) in GMF-based editors. Since version 1.3.2, the same wizards can be executed in EMF tree-based editors as well. The following screenshots demonstrate the application of the CreateAssociationClassCase1 wizard (originally described by [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://epsilonblog.wordpress.com/2008/01/18/model-refactoring-in-gmf-based-editors-with-ewl/" target="_blank">In this post</a> we demonstrated how EWL from the <a href="http://www.eclipse.org/gmt/epsilon" target="_blank">Epsilon GMT component</a> can be used to automate model refactoring (in-place model transformation in general) in GMF-based editors. Since version 1.3.2, the same wizards can be executed in EMF tree-based editors as well. The following screenshots demonstrate the application of the <a href="http://epsilonblog.wordpress.com/2008/01/18/model-refactoring-in-gmf-based-editors-with-ewl/#comment-9" target="_blank">CreateAssociationClassCase1</a> wizard (originally described by Ed Merks <a href="http://ed-merks.blogspot.com/2008/01/modeling-associations-with-ecore.html" target="_blank">here</a>) in the default ECore tree-based editor.</p>
<p>The original ECore metamodel:</p>
<p><a href="http://epsilonblog.files.wordpress.com/2008/03/image3.png"><img style="border-width:0;" height="369" alt="image" src="http://epsilonblog.files.wordpress.com/2008/03/image-thumb3.png?w=401&h=369" width="401" border="0"></a> </p>
<p>Selecting the classes and applying the wizard:</p>
<p><a href="http://epsilonblog.files.wordpress.com/2008/03/image4.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="369" alt="image" src="http://epsilonblog.files.wordpress.com/2008/03/image-thumb4.png?w=401&h=369" width="401" border="0"></a> </p>
<p>The ECore metamodel after the wizard has executed:</p>
<p><a href="http://epsilonblog.files.wordpress.com/2008/03/image5.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="369" alt="image" src="http://epsilonblog.files.wordpress.com/2008/03/image-thumb5.png?w=401&h=369" width="401" border="0"></a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/epsilonblog.wordpress.com/27/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/epsilonblog.wordpress.com/27/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/epsilonblog.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epsilonblog.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/epsilonblog.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/epsilonblog.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/epsilonblog.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/epsilonblog.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/epsilonblog.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/epsilonblog.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/epsilonblog.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/epsilonblog.wordpress.com/27/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&blog=2097844&post=27&subd=epsilonblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://epsilonblog.wordpress.com/2008/03/16/model-refactoring-in-emf-editors/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dskolovos-128.jpg" medium="image">
			<media:title type="html">Dimitrios Kolovos</media:title>
		</media:content>

		<media:content url="http://epsilonblog.files.wordpress.com/2008/03/image-thumb3.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://epsilonblog.files.wordpress.com/2008/03/image-thumb4.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://epsilonblog.files.wordpress.com/2008/03/image-thumb5.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Extended properties in EOL</title>
		<link>http://epsilonblog.wordpress.com/2008/01/30/extended-properties-in-eol/</link>
		<comments>http://epsilonblog.wordpress.com/2008/01/30/extended-properties-in-eol/#comments</comments>
		<pubDate>Wed, 30 Jan 2008 20:59:44 +0000</pubDate>
		<dc:creator>Dimitrios Kolovos</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://epsilonblog.wordpress.com/?p=20</guid>
		<description><![CDATA[Below is a simple metamodel (in Emfatic) for modelling Trees (however interesting this might be)

package SimpleTree;

class Tree {
	attr String name;
	ref Tree#children parent;
	val Tree[*]#parent children;
}
Now, what we want to do is to traverse a model that conforms to this metamodel and calculate and print the depth of each Tree in it. We can do this using [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Below is a simple metamodel (in Emfatic) for modelling Trees (however interesting this might be)</p>
<pre>
package SimpleTree;

class Tree {
	attr String name;
	ref Tree#children parent;
	val Tree[*]#parent children;
}</pre>
<p>Now, what we want to do is to traverse a model that conforms to this metamodel and calculate and print the depth of each Tree in it. We can do this using this simple EOL program:</p>
<pre>
var depths := new Map;

for (n in Tree.allInstances.select(t|not t.parent.isDefined())) {
	n.setDepth(0);
}

for (n in Tree.allInstances) {
	(n.name + ' ' + depths.get(n)).println();
}

operation Tree setDepth(depth : Integer) {
	depths.put(self,depth);
	for (c in self.children) {
		c.setDepth(depth + 1);
	}
}</pre>
<p>Because the Tree EClass doesn&#8217;t have a <code>depth</code> property, we have to use the <code>depths</code> Map to store the calculated depth of each Tree. Another solution would be to add a <code>depth</code> property to the Tree EClass so that its instances can store such information; but applying this tactic will soon pollute our metamodel with information of secondary importance.</p>
<p>We&#8217;ve often come across similar situations where we needed to <i>attach</i> some kind of information (that is not supported by the metamodel) to particular model elements during model management operations (validation, transformation etc.). Until now, we&#8217;ve been using Maps to achieve this (similarly to what we&#8217;ve done above). However, from version 1.3.0, EOL (and all languages built atop it) support <i>non-invasive extended properties</i> which provide a more elegant solution to this recurring problem.</p>
<p>An extended property is a property that starts with the ~ character. It&#8217;s semantics are quite straightforward: the first time a value is assigned to an extended property of an object (e.g. <code>x.~a := b;</code>), the property is created and associated to the object and the value is assigned to it. Similarly, <code>x.~a</code> returns the value of the property or <code>undefined</code> if the property has not been set on the particular object yet. Using extended properties, we can rewrite the above code (without needing to use a Map) as follows:</p>
<pre>
for (n in Tree.allInstances.select(t|not t.parent.isDefined())) {
	n.setDepth(0);
}

for (n in Tree.allInstances) {
	(n.name + ' ' + n.~depth).println();
}

operation Tree setDepth(depth : Integer) {
	self.~depth := depth;
	for (c in self.children) {
		c.setDepth(depth + 1);
	}
}</pre>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/epsilonblog.wordpress.com/20/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/epsilonblog.wordpress.com/20/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/epsilonblog.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epsilonblog.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/epsilonblog.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/epsilonblog.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/epsilonblog.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/epsilonblog.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/epsilonblog.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/epsilonblog.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/epsilonblog.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/epsilonblog.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&blog=2097844&post=20&subd=epsilonblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://epsilonblog.wordpress.com/2008/01/30/extended-properties-in-eol/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dskolovos-128.jpg" medium="image">
			<media:title type="html">Dimitrios Kolovos</media:title>
		</media:content>
	</item>
		<item>
		<title>Model Refactoring in GMF editors</title>
		<link>http://epsilonblog.wordpress.com/2008/01/18/model-refactoring-in-gmf-based-editors-with-ewl/</link>
		<comments>http://epsilonblog.wordpress.com/2008/01/18/model-refactoring-in-gmf-based-editors-with-ewl/#comments</comments>
		<pubDate>Fri, 18 Jan 2008 16:41:58 +0000</pubDate>
		<dc:creator>Dimitrios Kolovos</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://epsilonblog.wordpress.com/2008/01/18/model-refactoring-in-gmf-based-editors-with-ewl/</guid>
		<description><![CDATA[To extract an interface from a UML class using the GMF-based UML2Tools class-diagram editor, one has to manually go through the following steps:

create and name the new interface
move the methods from the concrete class to the interface
create a generalization between the class and the interface
update all association ends that pointed to the class to now [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>To extract an interface from a UML class using the GMF-based UML2Tools class-diagram editor, one has to manually go through the following steps:</p>
<ul>
<li>create and name the new interface</li>
<li>move the methods from the concrete class to the interface</li>
<li>create a generalization between the class and the interface</li>
<li>update all association ends that pointed to the class to now point to the interface</li>
</ul>
<p>Having a <i>wizard </i>that could do all the above with a single click instead would arguably be <i>a good thing</i>. Even more, having a tool that would allow us to easily define custom <i>wizards</i> at a high level of abstraction by hiding the complexity of GMF would be even better.</p>
<p>Motivated by such scenarios, in the <a href="http://www.eclipse.org/gmt/epsilon" title="http://www.eclipse.org/gmt/epsilon">Epsilon GMT component</a> we have implemented a small dedicated language (EWL) and supporting tools that enable users to specify and execute such wizards from within GMF-based editors. Our solution works with existing editors, such as the UML editors provided by the <a href="http://www.eclipse.org/modeling/mdt/?project=uml2tools" title="http://www.eclipse.org/modeling/mdt/?project=uml2tools">UML2Tools project</a>, without needing to customize or re-generate them. Wizards appear in a sub-menu of the right-click menu and their effects can be undone/redone using the standard Ctrl-Z/Ctrl-Y shortcuts. Wizards are also interactive in the sense that they can prompt the user to provide additional information through standard Eclipse dialogs.</p>
<p><a href="http://www.eclipse.org/gmt/epsilon/cinema/GMFWizards2.htm" title="http://www.eclipse.org/gmt/epsilon/cinema/GMFWizards2.htm">This screencast</a> demonstrates defining and executing a wizard that implements the scenario above, as well as undoing/redoing its effects on the model. A detailed discussion on EWL can be found <a href="http://www.jot.fm/issues/issue_2007_10/paper3.pdf" title="http://www.jot.fm/issues/issue_2007_10/paper3.pdf">here</a> and an overview of the GMF/EWL integration can be found <a href="http://www.eclipse.org/gmt/epsilon/doc/ems07gmf-ewl.pdf">here</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/epsilonblog.wordpress.com/18/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/epsilonblog.wordpress.com/18/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/epsilonblog.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epsilonblog.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/epsilonblog.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/epsilonblog.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/epsilonblog.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/epsilonblog.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/epsilonblog.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/epsilonblog.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/epsilonblog.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/epsilonblog.wordpress.com/18/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&blog=2097844&post=18&subd=epsilonblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://epsilonblog.wordpress.com/2008/01/18/model-refactoring-in-gmf-based-editors-with-ewl/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dskolovos-128.jpg" medium="image">
			<media:title type="html">Dimitrios Kolovos</media:title>
		</media:content>
	</item>
		<item>
		<title>Using HUTN for T2M transformation</title>
		<link>http://epsilonblog.wordpress.com/2008/01/16/using-hutn-for-t2m-transformation/</link>
		<comments>http://epsilonblog.wordpress.com/2008/01/16/using-hutn-for-t2m-transformation/#comments</comments>
		<pubDate>Wed, 16 Jan 2008 16:24:24 +0000</pubDate>
		<dc:creator>Louis Rose</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://epsilonblog.wordpress.com/2008/01/16/using-hutn-for-t2m-transformation/</guid>
		<description><![CDATA[Recently, we have been investigating the appropriateness of using the Human-Usable Textual Notation (HUTN) as a means for providing a generic concrete syntax for instances of Ecore metamodels...]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Recently, we have been investigating the appropriateness of using the  Human-Usable Textual Notation (HUTN) as a means for providing a generic  concrete syntax for instances of Ecore metamodels. A number of solutions  (<a href="http://www.openarchitectureware.org/">xText</a>, <a href="http://www.eclipse.org/gmt/tcs/">TCS</a>) exist for performing T2M transformation, but these  solutions require the definition a specific concrete syntax for each  metamodel.</p>
<p>Like <a href="http://planetmde.org/wisme-2005/HUTNAsABridgeBetweenModelWareAndGrammarWareAnExperienceReport.PDF" title="http://planetmde.org/wisme-2005/HUTNAsABridgeBetweenModelWareAndGrammarWareAnExperienceReport.PDF">Pierre-Alain Muller and Michel Hassenforder</a> we have discovered  that this is not always appropriate. For example, when a metamodel is  being defined incrementally and iteratively, any specific concrete  syntax may need to be updated regularly in order to remain compatible.  clearly, this is not the case for a generic concrete syntax.</p>
<p>Thus far, we have constructed tooling that implements many of the core  features of the HUTN specification, and provided integration with the  Eclipse Modelling Framework through development tools for the Eclipse  platform. In order to perform validation upon the input text and the  transformation to the target model, our tooling extensively utilises  model-management languages provided by Epsilon.</p>
<p>Presently, we are concentrating on ensuring our implementation is  well-aligned with the <a href="http://www.omg.org/technology/documents/formal/hutn.htm">HUTN specification</a>, and investigating the  feasibility of using HUTN during the testing of model management activities.</p>
<p><a href="http://www.eclipse.org/gmt/epsilon/cinema/HUTN.htm">This flash screencast</a> demonstrates some of the capabilities of our tooling.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/epsilonblog.wordpress.com/16/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/epsilonblog.wordpress.com/16/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/epsilonblog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epsilonblog.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/epsilonblog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/epsilonblog.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/epsilonblog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/epsilonblog.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/epsilonblog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/epsilonblog.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/epsilonblog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/epsilonblog.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&blog=2097844&post=16&subd=epsilonblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://epsilonblog.wordpress.com/2008/01/16/using-hutn-for-t2m-transformation/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Establishing links between EMF models</title>
		<link>http://epsilonblog.wordpress.com/2007/12/27/establishing-links-between-elements-of-different-emf-models/</link>
		<comments>http://epsilonblog.wordpress.com/2007/12/27/establishing-links-between-elements-of-different-emf-models/#comments</comments>
		<pubDate>Thu, 27 Dec 2007 23:31:38 +0000</pubDate>
		<dc:creator>Dimitrios Kolovos</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://epsilonblog.wordpress.com/2007/12/27/establishing-links-between-elements-of-different-emf-models/</guid>
		<description><![CDATA[This flash screencast demonstrates a technique for establishing strongly-typed links between elements that belong to models of different metamodels (a.k.a weaving) using EMF and ModeLink, a simple 3-panel editor provided by Epsilon. The next part of the screencast demonstrates how to exploit such links programmatically with languages provided by Epsilon.
      [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>This <a href="http://www.eclipse.org/gmt/epsilon/cinema/ModeLink_part1.htm" target="_blank">flash screencast</a> demonstrates a technique for establishing strongly-typed links between elements that belong to models of different metamodels (a.k.a weaving) using EMF and ModeLink, a simple 3-panel editor provided by Epsilon. The <a href="http://www.eclipse.org/gmt/epsilon/cinema/ModeLink_part2.htm" target="_blank">next part of the screencast</a> demonstrates how to exploit such links programmatically with languages provided by Epsilon.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/epsilonblog.wordpress.com/15/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/epsilonblog.wordpress.com/15/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/epsilonblog.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epsilonblog.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/epsilonblog.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/epsilonblog.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/epsilonblog.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/epsilonblog.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/epsilonblog.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/epsilonblog.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/epsilonblog.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/epsilonblog.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&blog=2097844&post=15&subd=epsilonblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://epsilonblog.wordpress.com/2007/12/27/establishing-links-between-elements-of-different-emf-models/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dskolovos-128.jpg" medium="image">
			<media:title type="html">Dimitrios Kolovos</media:title>
		</media:content>
	</item>
		<item>
		<title>Critiquing the Application of Pattern Languages</title>
		<link>http://epsilonblog.wordpress.com/2007/12/22/critiquing-the-application-of-pattern-languages/</link>
		<comments>http://epsilonblog.wordpress.com/2007/12/22/critiquing-the-application-of-pattern-languages/#comments</comments>
		<pubDate>Sat, 22 Dec 2007 15:47:08 +0000</pubDate>
		<dc:creator>Dimitrios Kolovos</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://epsilonblog.wordpress.com/2007/12/22/critiquing-the-application-of-pattern-languages/</guid>
		<description><![CDATA[In this interesting paper, Bahman Zamani and Greg Butler compare the Epsilon Wizard Language (EWL) to ArgoUML and OCLE for detecting and repairing design smells in UML models.
       ]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://www.google.co.uk/url?sa=t&amp;ct=res&amp;cd=2&amp;url=http%3A%2F%2Fwww.ituniv.se%2Fprogram%2Fsem_research%2FPublications%2F2007%2FKSS07%2Fproceedings-B5.pdf&amp;ei=MjBtR7GsB6WG0gS7yYBN&amp;usg=AFQjCNHYip_Q_4N5RpWgiYFxXhsUZiVZ1g&amp;sig2=uPS-XeprbIIbOXGwy_VyFg" target="_blank">In this interesting paper</a>, Bahman Zamani and Greg Butler compare the Epsilon Wizard Language (EWL) to ArgoUML and OCLE for detecting and repairing design smells in UML models.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/epsilonblog.wordpress.com/14/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/epsilonblog.wordpress.com/14/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/epsilonblog.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epsilonblog.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/epsilonblog.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/epsilonblog.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/epsilonblog.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/epsilonblog.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/epsilonblog.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/epsilonblog.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/epsilonblog.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/epsilonblog.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&blog=2097844&post=14&subd=epsilonblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://epsilonblog.wordpress.com/2007/12/22/critiquing-the-application-of-pattern-languages/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dskolovos-128.jpg" medium="image">
			<media:title type="html">Dimitrios Kolovos</media:title>
		</media:content>
	</item>
		<item>
		<title>Using EVL to check inter-model consistency</title>
		<link>http://epsilonblog.wordpress.com/2007/12/22/using-evl-to-check-inter-model-consistency/</link>
		<comments>http://epsilonblog.wordpress.com/2007/12/22/using-evl-to-check-inter-model-consistency/#comments</comments>
		<pubDate>Sat, 22 Dec 2007 15:31:43 +0000</pubDate>
		<dc:creator>Dimitrios Kolovos</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://epsilonblog.wordpress.com/2007/12/22/using-evl-to-check-inter-model-consistency/</guid>
		<description><![CDATA[As EVL builds on EOL, it inherits the capability to access multiple models simultaneously. An interesting application of that is that it can be used to express inter-model constraints. For example, say you have a UML and a DB model and you need to check that for each non-abstract class in the UML model there [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>As EVL builds on EOL, it inherits the capability to access multiple models simultaneously. An interesting application of that is that it can be used to express inter-model constraints. For example, say you have a UML and a DB model and you need to check that for each non-abstract class in the UML model there is a table with the same name in the DB model. This can easily be captured with the following EVL constraint&#8230;</p>
<p><span id="more-13"></span></p>
<pre>
context UML!Class {

	constraint CorrespondingTableExists {

		guard : not self.abstract

		check : DB!Table.allInstances.
			exists(t|t.name = self.name)

		message : 'Table ' + self.name +
			' not found in the DB model'

		fix {

			title : 'Create table ' + self.name

			do {
				var t := new DB!Table;
				t.name := self.name;
			}
		}

	}

}
</pre>
<p>The constraint is expressed in the context of UML!Class which means that it will be evaluated for all instances of Class in the UML model. In its <i>guard </i>part, the constraint defines that it does not apply to abstract classes. The <i>check </i>part iterates through all the instances of Table in the DB model and tries to find one that has the same name with the class the constraint is currently being checked on (<i>self</i>). If the <i>check </i>part is not satisfied for some particular class, the <i>message </i>part of the constraint is evaluated to provide a meaningful message to the user (e.g. for a <i>Customer </i>class the message would read <i>Table Customer not found in the DB model</i>).</p>
<p>Finally, the constraint also defines a <i>fix </i>that attempts to resolve the inconsistency by creating a table with that name in the DB model. The <i>fix </i>part defines 2 sub-parts: the title (which would evaluate to <i>Create table Customer</i>) and the <i>do </i>part that actually resolves the inconsistency by creating a table. Here it is worth mentioning that one can define multiple alternative fixes for a constraint which the user can select (or not) to execute if the constraint fails.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/epsilonblog.wordpress.com/13/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/epsilonblog.wordpress.com/13/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/epsilonblog.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epsilonblog.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/epsilonblog.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/epsilonblog.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/epsilonblog.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/epsilonblog.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/epsilonblog.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/epsilonblog.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/epsilonblog.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/epsilonblog.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=epsilonblog.wordpress.com&blog=2097844&post=13&subd=epsilonblog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://epsilonblog.wordpress.com/2007/12/22/using-evl-to-check-inter-model-consistency/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dskolovos-128.jpg" medium="image">
			<media:title type="html">Dimitrios Kolovos</media:title>
		</media:content>
	</item>
	</channel>
</rss>