<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3294520508206749272</id><updated>2012-01-27T05:09:31.369-08:00</updated><category term='install'/><category term='sonar'/><category term='helios'/><category term='nasa'/><category term='ecore'/><category term='development'/><category term='EMF'/><category term='junit'/><category term='conference'/><category term='omg'/><category term='adm'/><category term='b3'/><category term='download'/><category term='modisco website'/><category term='squale'/><category term='metamodel'/><category term='SMM'/><category term='nantes'/><category term='browser'/><category term='Obeo Designer'/><category term='EMF Facet'/><category term='uml'/><category term='facet'/><category term='MoDisco'/><category term='jee'/><category term='mdd'/><category term='magic-draw'/><category term='reverse'/><category term='OCL'/><category term='customization'/><category term='mde'/><category term='eclipsecon'/><category term='refactoring'/><category term='jsp'/><category term='migration'/><category term='md day'/><category term='mia-studio'/><category term='Java'/><category term='demo camp'/><category term='mdsd'/><category term='flex'/><category term='indigo'/><category term='mia-insight'/><category term='rcp'/><category term='vb6'/><category term='tests'/><category term='roadshow'/><category term='acceleo'/><category term='eef'/><category term='Eclipse'/><category term='quality'/><category term='modeling'/><category term='kdm'/><category term='extensibility'/><category term='model'/><category term='generation'/><category term='gmf'/><title type='text'>Fred Madiot</title><subtitle type='html'>Eclipse, Model-Driven Engineering, Software Modernization</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>34</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-5336400623218546019</id><published>2011-06-28T14:52:00.000-07:00</published><updated>2011-06-28T14:57:33.558-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='indigo'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='nantes'/><title type='text'>Eclipse Demo Camp in Nantes</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Thursday 30/06 in Nantes, AtlanMod, Obeo and Mia-Software will organize an &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Indigo_2011/Nantes"&gt;Eclipse Demo Camp&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The program is rich with the presentation of seven projects coming with the &lt;span id="goog_533723563"&gt;&lt;/span&gt;&lt;a href="http://www.blogger.com/"&gt;Indigo&lt;span id="goog_533723564"&gt;&lt;/span&gt;&lt;/a&gt; Simultaneous Release.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-1yyMxKZbFEM/TgpMhu766bI/AAAAAAAAAy4/Aksa9D_L2uE/s1600/indigo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="45" src="http://3.bp.blogspot.com/-1yyMxKZbFEM/TgpMhu766bI/AAAAAAAAAy4/Aksa9D_L2uE/s320/indigo.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Four of these projects are developped in Nantes! &lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/MoDisco/"&gt;MoDisco&lt;/a&gt; (Model-Driven Modernization)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/atl/"&gt;ATL&lt;/a&gt; (Model to Model transformation)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/modeling/emft/facet/"&gt;EMF Facet&lt;/a&gt; (Non-intrusive metamodel extensibility)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/modeling/emft/?project=eef"&gt;EEF&lt;/a&gt; (Model extended editors)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The three other projects which will be presented are&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/mat/"&gt;Memory Analyzer&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/tycho/"&gt;Tycho&lt;/a&gt; (Building Eclipseplug-ins with Maven)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/egit/"&gt;EGit&lt;/a&gt; (Eclipse plug-in for Git)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The Demo Camp will start at 6:00 PM at &lt;a href="http://www.mines-nantes.fr/"&gt;Ecole des Mines de Nantes&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-5336400623218546019?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/5336400623218546019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2011/06/eclipse-demo-camp-in-nantes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/5336400623218546019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/5336400623218546019'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2011/06/eclipse-demo-camp-in-nantes.html' title='Eclipse Demo Camp in Nantes'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-1yyMxKZbFEM/TgpMhu766bI/AAAAAAAAAy4/Aksa9D_L2uE/s72-c/indigo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-456808866054094039</id><published>2011-06-20T00:52:00.000-07:00</published><updated>2011-06-20T02:55:45.118-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='demo camp'/><category scheme='http://www.blogger.com/atom/ns#' term='roadshow'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='acceleo'/><category scheme='http://www.blogger.com/atom/ns#' term='eef'/><category scheme='http://www.blogger.com/atom/ns#' term='Obeo Designer'/><title type='text'>Step in Toulouse</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This week, I'll be in Toulouse, the aerospace city.&lt;br /&gt;&lt;br /&gt;Wednesday (June 22), we will start the &lt;a href="http://www.obeodesigner.com/roadshow/"&gt;Obeo Designer Roadshow&lt;/a&gt;, a serie of six steps in six different cities (Toulouse, Brest, Nantes, Paris, Niort and Lille).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-1LR3a4sxtn4/Tf5rheJ37yI/AAAAAAAAAys/8kaPeLlcKcg/s1600/bus_203x104.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-1LR3a4sxtn4/Tf5rheJ37yI/AAAAAAAAAys/8kaPeLlcKcg/s1600/bus_203x104.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Each step of this roadshow will be organized in two parts: the morning will be dedicated to a presentation of the &lt;a href="http://www.obeodesigner.com/technicalcorner/whatisnew"&gt;version 5.0 of Obeo Designer&lt;/a&gt;, presentations of case-studies by users and a panel to discuss about graphical DSLs.&lt;br /&gt;&lt;br /&gt;The afternoon will be more technical with Hands-On sessions: we have asked to each person to come with a case, and we will help them to implement their own graphical designer during the afternoon.&lt;br /&gt;&lt;br /&gt;In Toulouse, the case-studies will be presented by Pascal Roques of PRFC and Tristan Faure of Atos Origin.&lt;br /&gt;&lt;br /&gt;Thursday (June 23), I will attend &lt;a href="http://toulibre.org/eclipseparty"&gt;Eclipse Party&lt;/a&gt; (the Indigo Demo Camp) and give a talk about JavaEE code generation with &lt;a href="http://www.eclipse.org/modeling/emft/?project=eef"&gt;EEF&lt;/a&gt; and &lt;a href="http://www.eclipse.org/acceleo/"&gt;Acceleo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://toulibre.org/pub/2011-06-23-eclipse-party/affiche-100dpi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://toulibre.org/pub/2011-06-23-eclipse-party/affiche-100dpi.png" width="226" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This Demo Camp, will be very intensive with two tracks and a lot of interesting talks (Topcased, Koneki, Closure, Birt, RCP, eGit, SWTBot, e4, etc).&lt;br /&gt;&lt;br /&gt;There will also be a specific session about feedback from EclipseCon 2011 (XText, Orion, CDT, Tycho).&lt;br /&gt;&lt;br /&gt;Finally, it will end with a panel about Eclipse and its ecosystem, animated by Gaël Blondelle of Obeo.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-456808866054094039?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/456808866054094039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2011/06/step-in-toulouse.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/456808866054094039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/456808866054094039'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2011/06/step-in-toulouse.html' title='Step in Toulouse'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-1LR3a4sxtn4/Tf5rheJ37yI/AAAAAAAAAys/8kaPeLlcKcg/s72-c/bus_203x104.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-8927913476152520787</id><published>2011-03-16T01:35:00.000-07:00</published><updated>2011-03-16T03:34:27.139-07:00</updated><title type='text'>How to follow Obeo at EclipseOn 2011?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;EclipseCon 2011 starts in less than one week from now.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.eclipsecon.org/2011/static/image/image2011/web_header_logo_2011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="93" src="http://www.eclipsecon.org/2011/static/image/image2011/web_header_logo_2011.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This year, &lt;a href="http://obeo.fr/"&gt;Obeo&lt;/a&gt; will be well represented with five of us going to Santa-Clara:&lt;br /&gt;- &lt;a href="http://www.mda4eclipse.com/"&gt;Etienne Juliot&lt;/a&gt;, Vice-president and co-founder of Obeo, member of the Eclipse Foundation Board &lt;br /&gt;- &lt;a href="http://model-driven-blogging.blogspot.com/"&gt;Cédric Brun&lt;/a&gt;, CTO of Obeo, member of the Architecture and Planning council, leading several Eclipse/Modeling projects&lt;br /&gt;- &lt;a href="http://mariot-thoughts.blogspot.com/"&gt;Mariot Chauvin&lt;/a&gt;, committer on &lt;a href="http://eclipse.org/acceleo/"&gt;Acceleo&lt;/a&gt;, &lt;a href="http://www.eclipse.org/modeling/gmp/"&gt;GMF&lt;/a&gt; and &lt;a href="http://www.eclipse.org/swtbot/"&gt;SWTBot&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://mdenutshell.blogspot.com/"&gt;Mikaël Barbero&lt;/a&gt;, &lt;a href="http://code.google.com/a/eclipselabs.org/p/emfpath/"&gt;EMFPath&lt;/a&gt; project leader&lt;br /&gt;- and me ;-)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-byDYSQG_-3M/TX-bB6IgcjI/AAAAAAAAAyI/BFLe15gwD3k/s1600/eclipsecon-obeo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="132" src="https://lh3.googleusercontent.com/-byDYSQG_-3M/TX-bB6IgcjI/AAAAAAAAAyI/BFLe15gwD3k/s400/eclipsecon-obeo.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The program will be very intensive for us, with seven talks to give:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt; &lt;a href="http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;amp;id=2144"&gt;What every Eclipse Developer should know about EMF&lt;/a&gt; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;amp;id=2164"&gt;EMFPath: how to use Guava (superset of Google Collections) to efficiently browse EMF models&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;amp;id=2297"&gt;5M lines of code to migrate&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;amp;id=2316"&gt;True story of a successful business model based on Eclipse &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;amp;id=2199"&gt;Mylyn meets Intent : Documentation made fun and useful&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href="http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;amp;id=2093"&gt;Spy On Your Models&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href="http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;amp;id=2001"&gt;Stop the Architecture Erosion of Eclipse And Open Source Projects&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;We are also in competion with five &lt;a href="http://www.eclipse.org/org/press-release/20110301_awardfinalists.php"&gt;Eclipse Community Awards&lt;/a&gt; finalists:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;a href="http://eclipsemde.blogspot.com/"&gt;Laurent Goubet&lt;/a&gt; (Acceleo committer) for Top Committer &lt;/li&gt;&lt;li&gt;Cedric Brun for Top Newcomer Evangelist&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/modeling/amalgam/"&gt;Modeling Amalgamation&lt;/a&gt; (lead by Cédric) for Most Open Project&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/modeling/emft/?project=eef"&gt;EEF&lt;/a&gt; (lead by &lt;a href="http://eef-modeling.blogspot.com/"&gt;Goulwen Le Fur&lt;/a&gt;) for Most Innovative New Feature or Eclipse Project&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.obeodesigner.com/"&gt;ObeoDesigner&lt;/a&gt; for Best Modeling Tool&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;However, we don't forget the most important thing at EclipseCon: sharing ideas (and beers) with other Eclipse fans!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-8927913476152520787?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/8927913476152520787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2011/03/how-to-follow-obeo-at-eclipseon-2011.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/8927913476152520787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/8927913476152520787'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2011/03/how-to-follow-obeo-at-eclipseon-2011.html' title='How to follow Obeo at EclipseOn 2011?'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh3.googleusercontent.com/-byDYSQG_-3M/TX-bB6IgcjI/AAAAAAAAAyI/BFLe15gwD3k/s72-c/eclipsecon-obeo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-7110217722801347609</id><published>2011-03-02T08:46:00.000-08:00</published><updated>2011-03-02T08:46:57.731-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gmf'/><category scheme='http://www.blogger.com/atom/ns#' term='Obeo Designer'/><title type='text'>Using viewpoints to edit complex models</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Based on GMF, &lt;a href="http://www.obeodesigner.com/"&gt;Obeo Designer&lt;/a&gt; adds several viewpoint mechanisms which facilitate the edition of complex models.&lt;br /&gt;&lt;br /&gt;One of the main difficulties with graphical representation of complex models is the number of nodes and edges visible on a same diagram.&lt;br /&gt;&lt;br /&gt;Obeo Designer comes with the concept of layer which allows to select the types of graphical elements to display. Inspired from image manipulation tools, several layers can be defined on a diagram and optionally selected or unselected, depending on what the user wants to see from his model.&lt;br /&gt;&lt;br /&gt;Based on the simple Family scenario (detailed in my &lt;a href="http://fmadiot.blogspot.com/2011/02/creation-of-graphical-designer-in-5.html"&gt;previous post&lt;/a&gt;), this demo shows how to define layers for parental and brotherhood relationships.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.youtube.com/watch?v=Irqmw31xLjU" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="https://lh6.googleusercontent.com/-NllbxvSoph0/TW5x_UpKN5I/AAAAAAAAAyA/MLLtke9jsvk/s320/od-demo2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Another way to reduce the models complexity, is to use tabular representations. With Obeo Designer it is possible to define custom tables representing elements of the model. The lines and the columns are fully customizable depending on the objects and which properties have to be displayed.&lt;br /&gt;&lt;br /&gt;This demo, shows how to define a table representing members of a family. Columns contain the names of the parents and other columns contain the numbers of sons, daughters, brothers and sisters.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.youtube.com/watch?v=VO73Rnv5yNc" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="178" src="https://lh5.googleusercontent.com/-kE6CzJf1nAE/TW5yQUGt_qI/AAAAAAAAAyE/RVodXy-mTfo/s320/od-demo3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-7110217722801347609?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/7110217722801347609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2011/03/using-viewpoints-to-edit-complex-models.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/7110217722801347609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/7110217722801347609'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2011/03/using-viewpoints-to-edit-complex-models.html' title='Using viewpoints to edit complex models'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh6.googleusercontent.com/-NllbxvSoph0/TW5x_UpKN5I/AAAAAAAAAyA/MLLtke9jsvk/s72-c/od-demo2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-9095807478280475663</id><published>2011-02-21T10:41:00.000-08:00</published><updated>2011-02-21T11:58:10.921-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='Obeo Designer'/><title type='text'>Creation of a graphical designer in 5 minutes</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;After one month at Obeo, the serious things have started for me ;-)&lt;br /&gt;&lt;br /&gt;I have spent the last two weeks discovering Obeo Designer 5.0 and working on the videos which will be available on the new website (&lt;a href="http://www.obeodesigner.com/"&gt;www.obeodesigner.com&lt;/a&gt;). This new version is going to be officially released in ten days, so each minute counts!&lt;br /&gt;&lt;br /&gt;Obeo Designer is a tool which allows to create specific modelers in Eclipse. It is based on EMF, GMF and Acceleo.&lt;br /&gt;&lt;br /&gt;I have been very impressed by the ease and rapidity for creating my first designer. Of course I'm familiar with Eclipse and EMF, but I had never developped with GMF before. In one day, starting from scratch, I have been able to create my first designer, with several layers (to optionally show or hide some kinds of relations) and a table (to represent my model with lines).&lt;br /&gt;&lt;br /&gt;For the demos, we have volontarily chosen a very simple example to illustrate the Obeo Designer approach. With this example, the concept of Family (men and women related by parental relationships), each Obeo Designer functionality can be easily described. &lt;br /&gt;&lt;br /&gt;I have posted the&lt;a href="http://www.youtube.com/watch?v=SqVaMxXELnY"&gt; first video&lt;/a&gt; today. It is a first overview which explains, in five minutes, how to create a first modeler with zero code and zero deployment.&lt;br /&gt;&lt;a href="http://www.blogger.com/goog_1436375340"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.youtube.com/watch?v=SqVaMxXELnY" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="246" src="http://1.bp.blogspot.com/-8NX_mlgT0NQ/TWLDdzAtUOI/AAAAAAAAAx8/E29S1Y-VCQA/s400/od-overview-video.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://www.youtube.com/watch?v=SqVaMxXELnY"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;Other videos will come soon to demonstrate the other functionnalities. Stay tuned!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-9095807478280475663?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/9095807478280475663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2011/02/creation-of-graphical-designer-in-5.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/9095807478280475663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/9095807478280475663'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2011/02/creation-of-graphical-designer-in-5.html' title='Creation of a graphical designer in 5 minutes'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-8NX_mlgT0NQ/TWLDdzAtUOI/AAAAAAAAAx8/E29S1Y-VCQA/s72-c/od-overview-video.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-3183118067541827734</id><published>2011-01-16T13:41:00.000-08:00</published><updated>2011-01-16T13:41:33.704-08:00</updated><title type='text'>A new start</title><content type='html'>Friday was my last day at Mia-Software.&lt;br /&gt;&lt;br /&gt;I started working at the Sodifrance group fifteen years ago already. And it has been a very exciting experience!&lt;br /&gt;&lt;br /&gt;In 1995, I was working in Paris and I was looking for a new job. As I was hesitated between two propositions, I decided to call Jean Bezivin, who taught me Object-Oriented technologies three years before at Nantes. He asked me "&lt;i&gt;Why don't you come back to Nantes? Yves Lennon, a good friend of mine, is developping software engineering tools in Smalltalk there. He is looking for developers like you&lt;/i&gt;". I immediately called Yves, we met, and he hired me.&lt;br /&gt;&lt;br /&gt;My first project at Sodifrance was for MMA, an insurance company. This project, called SIGMMA, was a very ambitious re-development of the products and contracts management system in Smalltalk. I worked for three years on this project. I was responsible for designing the database schema and its mapping with the business objects implemented in Smalltalk. As these business objects was defined in Rational Rose with the Booch notation (UML was not existing yet), I developped lots of tools to exploit these models and generate Smalltalk code and Oracle queries.&lt;br /&gt;&lt;br /&gt;When I left the project, I had the idea to develop a template-based code generator which could facilitate the development of specific code generators. I proposed this idea to Yves Lennon who said "&lt;i&gt;Go!&lt;/i&gt;". In the same time, Java was taking off, with tools like VisualAge. I decide to use Java to develop my new tool which I called Scriptor. Thanks to internal projects which experimented the tool and helped me to improve it, Scriptor was selected in 1999 by Transpac, a France Telecom subsidiary, to generate VB code. It was the first one of a long list of other customers (Thales, Banque Populaire, BNP-Paribas, MAAF, Crédit du Nord, SNCF, etc).&lt;br /&gt;&lt;br /&gt;In 2004, we created Mia-Software, as a Sodifrance subsidiary, to structure the R&amp;amp;D and to give a better visibility to the product. I took the CTO position. We renamed Scriptor to Mia-Generation. We added two other modules (Mia-Transformation, for model-to-model transformations and Mia-Documentation for documentation generation) and group these tools in a suite called &lt;a href="http://www.mia-software.com/en/products/mia-studio/"&gt;Mia-Studio&lt;/a&gt;. We created also a new tool suite called &lt;a href="http://www.mia-software.com/en/products/mia-insight/"&gt;Mia-Insight&lt;/a&gt; to package and distribute tools already developped by Sodifrance for application portfolio management and application mining.&lt;br /&gt;&lt;br /&gt;In the same time, Sodifrance, which is the french leader in Software Modernization, has developped a new expertise in &lt;a href="http://fmadiot.blogspot.com/2010/04/architecture-driven-modernization-case.html"&gt;Software Migration&lt;/a&gt; by using Mia-Insight and Mia-Studio. Based on Model-Driven Engineering, the principle is to extract models from existing systems, to transform these models into models of the new system and to regenerate code from these new models. This approach has been used on lots of projects, for example to migrate VB6 code to C#, or Oracle Forms to JEE.&lt;br /&gt;&lt;br /&gt;In 2006, we started a new research project called &lt;a href="http://www.modelplex.org/"&gt;Modelplex&lt;/a&gt;, funded by the European Community. One of the partners was AtlanMod, the research lab leaded by Jean Bezivin. He had just created MoDisco, a new Eclipse project dedicated to the extraction of models from legacy systems. I proposed to Yves Lennon to take the opportunity of the Modelplex project to start developping open-source components and to contribute them to MoDisco. The objective was to develop a reference platform for software modernization projects based on Eclipse and OMG standards. Once again, Yves said "&lt;i&gt;Go!&lt;/i&gt;".&lt;br /&gt;&lt;br /&gt;Last year, &lt;a href="http://fmadiot.blogspot.com/2010/06/how-to-install-modisco-with-helios.html"&gt;MoDisco 0.8 has been released with Helios&lt;/a&gt;. We have presented the project to several Eclipse conferences already, and we know that many users are using its components (such as the &lt;a href="http://fmadiot.blogspot.com/2010/09/spy-on-your-models-part-1.html"&gt;Model Browser&lt;/a&gt; and the &lt;a href="http://fmadiot.blogspot.com/2010/01/how-to-create-emf-model-from-java.html"&gt;Java Discoverer&lt;/a&gt;). The Mia-Software team working on this project (Gabriel Barbier, Nicolas Bros, Grégoire Dupé, Fabien Giquel and Nicolas Guyomar) is very motivated, and Sodifrance has started to provide feedback from real modernization projects (for example to refactor JEE source code).&lt;br /&gt;&lt;br /&gt;But after all these years working at Sodifrance and Mia-Software, I felt that I needed a new challenge.&lt;br /&gt;&lt;br /&gt;That's why I accepted the Obeo proposition to be their Product Manager. I will mainly focus on &lt;a href="http://obeo.fr/pages/obeo-designer"&gt;Obeo-Designer&lt;/a&gt; and &lt;a href="http://obeo.fr/pages/agility"&gt;Obeo-Agility&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It was not an easy decision to take, but it has been well understood at Mia-Software. The transition went very well, and I'm confident that the products (Mia-Studio, Mia-Insight and Mia-Quality) and the Eclipse projects (MoDisco and EMF facet) are in good hands!&lt;br /&gt;&lt;br /&gt;Now, I'm ready to take a new start!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-3183118067541827734?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/3183118067541827734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2011/01/new-start.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/3183118067541827734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/3183118067541827734'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2011/01/new-start.html' title='A new start'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-4547142490324213008</id><published>2010-12-17T00:47:00.000-08:00</published><updated>2010-12-17T00:47:57.873-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reverse'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='MoDisco'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Traceability between an EMF Java model and the corresponding source code</title><content type='html'>&lt;a href="http://www.eclipse.org/MoDisco/"&gt;MoDisco&lt;/a&gt; 0.9M4 has been released this week with Eclipse Indigo M4.&lt;br /&gt;&lt;br /&gt;One of the new interesting features is the traceability between an EMF model created from the&lt;a href="http://fmadiot.blogspot.com/2010/01/how-to-create-emf-model-from-java.html"&gt; reverse-engineering of a Java&lt;/a&gt; application and the corresponding source code.&lt;br /&gt;&lt;br /&gt;It allows to directly navigate from elements of the Java model in the &lt;a href="http://fmadiot.blogspot.com/2010/12/spy-on-your-models-part-4.html"&gt;MoDisco Model Browser&lt;/a&gt; to the corresponding code fragment in a Java editor.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TQJet7eIR5I/AAAAAAAAAhk/YVO7Yh2ukpc/s1600/java2kdm2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="275" src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TQJet7eIR5I/AAAAAAAAAhk/YVO7Yh2ukpc/s400/java2kdm2.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This feature is provided by a new Java discoverer which can be executed with the MoDisco menu &lt;i&gt;"Discover Java and Inventory model from Java source code&lt;/i&gt;" available on a Java project.&lt;br /&gt;&lt;br /&gt;This discoverer automatically creates three EMF models:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;a Java model describing the content of the source code: it is the model created by the basic&lt;a href="http://fmadiot.blogspot.com/2010/01/how-to-create-emf-model-from-java.html"&gt; Java discoverer&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;a &lt;a href="http://wiki.eclipse.org/MoDisco/Components/KDM/Documentation/0.9#KDM_Source_Discoverer"&gt;KDM Inventory model&lt;/a&gt; describing the structure of the Java project (all the files and folders).&lt;/li&gt;&lt;li&gt;a traceability model containing relations between the Java model elements and source code fragments&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;If you need to know more about these models, you can read the&amp;nbsp;&lt;a href="http://wiki.eclipse.org/MoDisco/Components/Java/Composition/Documentation/0.9"&gt;documentation&lt;/a&gt;&amp;nbsp;of the discoverer.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When you launch the discoverer on a java project, the traceability model is automatically opened in the MoDisco model browser.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To activate the synchronization with the Java source code editor, you need to activate the "Synchronize with source code option".&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TQJlyVqCk2I/AAAAAAAAAho/OIta4hHvbG0/s1600/java2kdm3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="265" src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TQJlyVqCk2I/AAAAAAAAAho/OIta4hHvbG0/s400/java2kdm3.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now, when you click on a model element in the model browser, the corresponding source code is automatically highlighted in the Java source code editor (otherwise, the double-click on an element opens the property view).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-4547142490324213008?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/4547142490324213008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/12/traceability-between-emf-java-model-and.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/4547142490324213008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/4547142490324213008'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/12/traceability-between-emf-java-model-and.html' title='Traceability between an EMF Java model and the corresponding source code'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3jpQTZO9cJ8/TQJet7eIR5I/AAAAAAAAAhk/YVO7Yh2ukpc/s72-c/java2kdm2.PNG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-1890317852681177248</id><published>2010-12-15T03:27:00.000-08:00</published><updated>2010-12-15T03:27:41.703-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MoDisco'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><category scheme='http://www.blogger.com/atom/ns#' term='modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Spy On Your Models - Part 4</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TQc1RtmvywI/AAAAAAAAAhw/8C3vvcBp9rU/s1600/radar.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TQc1RtmvywI/AAAAAAAAAhw/8C3vvcBp9rU/s320/radar.PNG" width="244" /&gt;&lt;/a&gt;&lt;/div&gt;In this sequence of posts, I explain how to use the &lt;a href="http://wiki.eclipse.org/MoDisco/Components/ModelBrowser/Documentation/0.8"&gt;Model Browser&lt;/a&gt; provided by &lt;a href="http://www.eclipse.org/MoDisco"&gt;MoDisco&lt;/a&gt; to inspect an EMF model.&lt;br /&gt;&lt;br /&gt;In the first three posts, I have described &lt;a href="http://fmadiot.blogspot.com/2010/09/spy-on-your-models-part-1.html"&gt;how to directly access to instances&lt;/a&gt; of a given type, &lt;a href="http://fmadiot.blogspot.com/2010/10/spy-on-your-models-part-2.html"&gt;how to navigate through the model elements&lt;/a&gt; and &lt;a href="http://fmadiot.blogspot.com/2010/10/spy-on-your-models-part-3.html"&gt;how to customize the browser&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In this last post, I will now describe how to create and execute queries on model elements directly from the browser.&lt;br /&gt;&lt;br /&gt;The features presented in the previous posts, allow you to navigate through the elements of your model by traversing the links. You can also highlight some characteristics of specific elements by defining a customization which dynamically change their rendering (icon, label, font, color, etc).&lt;br /&gt;&lt;br /&gt;But in some situations, you would like to calculate values from model elements. These values could be of basic types (numbers or strings) or could be other model elements.&lt;br /&gt;&lt;br /&gt;MoDisco provides a mechanism to execute queries interactively on model elements selected in the Model Browser. First, I will explain how to execute queries, and we will see later in this post how to declare and implement them.&lt;br /&gt;&lt;br /&gt;There are two possibilities to execute a query.&lt;br /&gt;&lt;br /&gt;The first one consists in selecting model elements in the browser and clicking on the menu "&lt;i&gt;Execute Query ...&lt;/i&gt;". It opens the "&lt;i&gt;Query Execution&lt;/i&gt;" view which contains two main parts:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The elements on which to execute the query. It is filled with the elements you have selected, but you can also remove elements from this list or drag&amp;amp;drop new elements &amp;nbsp;from the browser.&lt;/li&gt;&lt;li&gt;The registered queries which can be executed on the selected elements&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TQdL3_YMX6I/AAAAAAAAAiQ/giAnyRxhMV8/s1600/browser48.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="121" src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TQdL3_YMX6I/AAAAAAAAAiQ/giAnyRxhMV8/s400/browser48.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;When you click on "&lt;i&gt;Execute&lt;/i&gt;" the selected query is executed on each model element and the result is displayed in a table (more possibilities will be provided with future versions).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TQdNX8xAIBI/AAAAAAAAAiU/FAQ0d-Hkcuw/s1600/browser49.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TQdNX8xAIBI/AAAAAAAAAiU/FAQ0d-Hkcuw/s400/browser49.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The table displays each returned value on a line. If the result is a basic type, the table contains only one column. But if the result is a model element, the table contains several columns:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A colum "&lt;i&gt;Label&lt;/i&gt;" which contains the calculated label of the object.&lt;/li&gt;&lt;li&gt;A column "&lt;i&gt;Metaclass&lt;/i&gt;" which contains the type of the object&lt;/li&gt;&lt;li&gt;A column "&lt;i&gt;/eContainer&lt;/i&gt;" which contains the parent of the object&lt;/li&gt;&lt;li&gt;A column "&lt;i&gt;Query Context&lt;/i&gt;" which contains the object for which the query has returned the object&lt;/li&gt;&lt;li&gt;A column for each attribute of the corresponding metaclass&lt;/li&gt;&lt;li&gt;A column for each reference of the corresponding metaclass (for nary references, the tablel displays the number of related objects).&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;On each line, it is possible to re-execute a query or to browse the selected element with the model browser.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To execute a query from the browser, the&amp;nbsp;second possibility consists in&amp;nbsp;adding the query to a model element in the browser by clicking on the menu "&lt;i&gt;Dispaly Queries on Selected Element&lt;/i&gt;":&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TQdrPt3LvyI/AAAAAAAAAiY/n_QkJlgTcSg/s1600/browser410.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="196" src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TQdrPt3LvyI/AAAAAAAAAiY/n_QkJlgTcSg/s400/browser410.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;A dialog is opened with all the applicable queries:&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TQdrwVqKQxI/AAAAAAAAAic/8kYlx1bq_pk/s1600/browser411.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TQdrwVqKQxI/AAAAAAAAAic/8kYlx1bq_pk/s1600/browser411.PNG" style="cursor: move;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;The selected query is added to the model element. When you click on this query, it is executed and the result is displayed under the query:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TQds2rAFCWI/AAAAAAAAAig/MNDBv8kaf7E/s1600/browser412.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TQds2rAFCWI/AAAAAAAAAig/MNDBv8kaf7E/s400/browser412.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Now, to create your own query, the first step consists in creating a QuerySet in a MoDisco project: right-click on the project, select the menu "&lt;i&gt;New&amp;gt;Other&lt;/i&gt;" and select "&lt;i&gt;MoDisco / QuerySet model&lt;/i&gt;":&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TQc80t6vWRI/AAAAAAAAAh0/xJBprSEYvK8/s1600/browser42.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TQc80t6vWRI/AAAAAAAAAh0/xJBprSEYvK8/s320/browser42.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Give a name to your new QuerySet and MoDisco creates it in the project:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TQc92F8zqXI/AAAAAAAAAh8/tUGOSSaTA3s/s1600/browser43.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TQc92F8zqXI/AAAAAAAAAh8/tUGOSSaTA3s/s1600/browser43.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;A QuerySet is a model which contains the declaration of the queries. The new QuerySet is empty. So, to start declaring the queries, just double-click on the QuerySet to open it with the dedicated editor:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TQc_H-UXlGI/AAAAAAAAAiA/JhDOyH0lQ7g/s1600/browser44.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TQc_H-UXlGI/AAAAAAAAAiA/JhDOyH0lQ7g/s1600/browser44.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Now, you need to associate the QuerySet to a metamodel: all the queries will apply on model elements of the corresponding models.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Let's say we want to declare queries for UML model elements. This association is done in two steps:&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Load the ECore definition of the metamodel: right click on the ModelQuerySet instance, select the menu "&lt;i&gt;Load meta-model ressource&lt;/i&gt;" and select the right ECore definition.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TQdCOWN8SJI/AAAAAAAAAiE/k-IizajU-LA/s1600/browser45.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TQdCOWN8SJI/AAAAAAAAAiE/k-IizajU-LA/s1600/browser45.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Associate this metamodel to the QuerySet: double-click on the ModelQuerySet instance to open its property view, click on the button in the "&lt;i&gt;Associated Metamodels&lt;/i&gt;" property field, and select the metamodel.&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TQdDpJuT5PI/AAAAAAAAAiI/NtzQNqLN4d8/s1600/browser46.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TQdDpJuT5PI/AAAAAAAAAiI/NtzQNqLN4d8/s1600/browser46.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now, you can start declaring the queries: right-click on the ModelQuerySet instance and click on the "&lt;i&gt;New Child&lt;/i&gt;" menu. You can declare queries of three kinds: Java, OCL or XPath.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TQdE4Wcsn-I/AAAAAAAAAiM/hxqfdt9YLQM/s1600/browser47.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="117" src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TQdE4Wcsn-I/AAAAAAAAAiM/hxqfdt9YLQM/s400/browser47.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;For each query, you have to declare its name, its scope (on which elements the query is applicable), its return type and its multiplicity (lower and upper bounds). Implementing the body of the query depends on the kind of query:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;OCL: enter an OCL expression in the "Query" property&lt;/li&gt;&lt;li&gt;XPath: enter an XPath expression in the "Query" property&lt;/li&gt;&lt;li&gt;Java: enter the name of a Java class which implements the query&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TQd3xyI1bpI/AAAAAAAAAik/bWxH_u5LOkw/s1600/browser413.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="221" src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TQd3xyI1bpI/AAAAAAAAAik/bWxH_u5LOkw/s400/browser413.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;To know more about how to declare a Query, you can read the&lt;a href="http://wiki.eclipse.org/MoDisco/QueryManager/Documentation/0.8"&gt; reference documentation of the MoDisco QueryManager&lt;/a&gt;.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-1890317852681177248?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/1890317852681177248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/12/spy-on-your-models-part-4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/1890317852681177248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/1890317852681177248'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/12/spy-on-your-models-part-4.html' title='Spy On Your Models - Part 4'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3jpQTZO9cJ8/TQc1RtmvywI/AAAAAAAAAhw/8C3vvcBp9rU/s72-c/radar.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-5328135977191863476</id><published>2010-12-13T06:01:00.000-08:00</published><updated>2010-12-13T06:01:55.772-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='generation'/><category scheme='http://www.blogger.com/atom/ns#' term='mdd'/><category scheme='http://www.blogger.com/atom/ns#' term='jee'/><category scheme='http://www.blogger.com/atom/ns#' term='magic-draw'/><category scheme='http://www.blogger.com/atom/ns#' term='mia-studio'/><title type='text'>MDD Case-Study: RCP Code Generation in an Airline Company</title><content type='html'>I was recently asked to translate into english &amp;nbsp;the case-study presented by &lt;a href="http://www.britair.com/presentation.php" target="_blank"&gt;BritAir&lt;/a&gt; during &lt;a href="http://fmadiot.blogspot.com/2010/12/md-day-2010.html" target="_blank"&gt;MD Day 2010&lt;/a&gt;. So, here is a summary.&lt;br /&gt;&lt;br /&gt;BritAir, a french airline company, is&amp;nbsp;a subsidiary of Air France&amp;nbsp;which transported about 3,5 millions of passengers last year.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.airliners.nl/images2007/020607-AF-BritAir.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://www.airliners.nl/images2007/020607-AF-BritAir.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Another activity of BritAir is the training of pilots, commercial staff and maintenance technicians of other companies.&lt;br /&gt;&lt;br /&gt;Despite BritAir has no developer, the company wanted to keep the control and the quality of its applications:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Normalize the user interface of the applications&lt;/li&gt;&lt;li&gt;Normalize the way the applications are designed&lt;/li&gt;&lt;li&gt;Improve the development productivity&lt;/li&gt;&lt;li&gt;Document the applications&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;To achive these goals, Olivier Corbel, the IS Manager, decided to put in place a new development process based on a Model-Driven approach. This project was conducted with &lt;a href="http://www.mia-software.com/" target="_blank"&gt;Mia-Software&lt;/a&gt; and &lt;a href="http://www.sodifrance.fr/" target="_blank"&gt;Sodifrance&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The principle of the BritAir approach is based on two main ideas:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A model describing the business data (entities, identifiers, attributes, child/parent relationships)&lt;/li&gt;&lt;li&gt;An automatic generation of graphical interfaces (Eclipse RCP) for classic functions (cread, read, update, delete, search and export to Excel)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TQX6V3KM_bI/AAAAAAAAAhs/tOr92-N4K18/s1600/britair1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="198" src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TQX6V3KM_bI/AAAAAAAAAhs/tOr92-N4K18/s400/britair1.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;In addition, the business logic is also described in the model: a concrete syntax has been defined to declare some rules in french. It allows to declare variables, to set values, to test, to loop, etc.&lt;br /&gt;&lt;br /&gt;The model is created with MagicDraw, an UML modeling tool, and translated into code (Eclipse RCP and Hibernate) with &lt;a href="http://www.mia-software.com/produits/mia-studio/" target="_blank"&gt;Mia-Studio&lt;/a&gt;, the model transformation engine developped by Mia-Software.&lt;br /&gt;&lt;br /&gt;The generated applications are complete and don't require any additional code (the business rules are also transleted into Java). They are deployed on servers with Tomcat, Xfire and Oracle.&lt;br /&gt;&lt;br /&gt;It took 300 days (total effort&amp;nbsp;between march 2008 and july 2009) to setup the process, define the target architecture, adapt the tools and train BritAir's staff. The team was composed of three people of Mia-Software (a project manager, a MDA enginer and a JEE architect) and one architect of BritAir (requirements and validation).&lt;br /&gt;&lt;br /&gt;Several applications have been developped in parallel, in order to challenge and test the new process and tools.&lt;br /&gt;&lt;br /&gt;Now, each time a specific development starts, it uses this approach.&amp;nbsp;Until now, six applications have been developped:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;small maintenance of aircrafts&lt;/li&gt;&lt;li&gt;management of aircraft events&lt;/li&gt;&lt;li&gt;cost accounting&lt;/li&gt;&lt;li&gt;financial forecasts&lt;/li&gt;&lt;li&gt;management of passengers&lt;/li&gt;&lt;li&gt;preparation of flights.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Olivier Corbel has identified several benefits of this MDD process:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Industrialization of the development activity: normalization of modeling and coding, and better documentation.&lt;/li&gt;&lt;li&gt;Independance of the models from the target architecture (neither RCP nor Hibernate concepts in the models).&lt;/li&gt;&lt;li&gt;Design is mandatory, in order to generate the application.&lt;/li&gt;&lt;li&gt;Better quality of code, since it has been qualified first and then converted into generation rules&lt;/li&gt;&lt;li&gt;Better productivity: during its talk, Olivier Corbel said that the development managers have evaluated to 10 the productivity ratio on these projects!&lt;/li&gt;&lt;li&gt;User experience: the applications are homogeneous and always provide the same ergonomy to the users&lt;/li&gt;&lt;li&gt;Prototyping: it is easier to provide early versions to users and take their feedback into account to improve the application&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;For BritAir, the next step now is to bring evolutions to the platform:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Support authorization management&lt;/li&gt;&lt;li&gt;Extend the expressiveness of the business rules language&lt;/li&gt;&lt;li&gt;Improve the integration of new applications with existing ones (generated or COTS)&lt;/li&gt;&lt;li&gt;Add a new generation target (web client)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-5328135977191863476?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/5328135977191863476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/12/mdd-case-study-rcp-code-generation-in.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/5328135977191863476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/5328135977191863476'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/12/mdd-case-study-rcp-code-generation-in.html' title='MDD Case-Study: RCP Code Generation in an Airline Company'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3jpQTZO9cJ8/TQX6V3KM_bI/AAAAAAAAAhs/tOr92-N4K18/s72-c/britair1.PNG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-7846284450683343609</id><published>2010-12-01T05:44:00.000-08:00</published><updated>2010-12-01T05:44:29.070-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='generation'/><category scheme='http://www.blogger.com/atom/ns#' term='mdd'/><category scheme='http://www.blogger.com/atom/ns#' term='model'/><category scheme='http://www.blogger.com/atom/ns#' term='mde'/><category scheme='http://www.blogger.com/atom/ns#' term='md day'/><category scheme='http://www.blogger.com/atom/ns#' term='mia-studio'/><title type='text'>MD Day 2010</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;Like every year, the french modeling community has met during the &lt;a href="http://www.mdday.fr/"&gt;MD Day&lt;/a&gt;&amp;nbsp;last week in Paris.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TPTNB-uqpcI/AAAAAAAAAhc/JpjVmA4euNc/s1600/logo_md_day.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TPTNB-uqpcI/AAAAAAAAAhc/JpjVmA4euNc/s1600/logo_md_day.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;It was the fourth edition, with a format which makes the success of this event: each partner (11 this year) must come with one of its customers who presents a real-life project where model-driven engineering has been used. Once again, despite optimistic forecasts, we still ran out of place, and we have been forced to close the registrations three weeks before the event ! Finally there have been 275 attendees (234 last year).&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;This year, the conference started with Steve Cook's keynote "UML: Past, Present and Future".&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div id="__ss_5965728" style="width: 425px;"&gt;&lt;b style="display: block; margin: 12px 0pt 4px;"&gt;&lt;a href="http://www.slideshare.net/MDDAY/stevecook-uml-mdday2010" title="Stevecook uml mdday2010"&gt;Stevecook uml mdday2010&lt;/a&gt;&lt;/b&gt;&lt;object height="355" id="__sse5965728" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=stevecook-umlmdday2010-101129081813-phpapp02&amp;stripped_title=stevecook-uml-mdday2010&amp;userName=MDDAY" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse5965728" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=stevecook-umlmdday2010-101129081813-phpapp02&amp;stripped_title=stevecook-uml-mdday2010&amp;userName=MDDAY" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;I already knew the past: I've worked a while with Booch notation in the 90' (remember these little clouds...) ;-)&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;What I found really interesting was the part about the UML dilemnas:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;What is the real value proposition of UML ? There is often a misandurstanding about why to create UML models.&lt;/li&gt;&lt;li&gt;Should DSLs be based on UML ? UML should be more reusable.&lt;/li&gt;&lt;li&gt;Is UML appropriate to describe non software domains ? It was not the initial intention of this metamodel.&lt;/li&gt;&lt;li&gt;Can UML be a pivot to model semantics ? New versions of OO languages integrate concepts which are not supported by UML.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Regarding the future of UML, Steve presented the main initiatives:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;UML is too complex: it is going to be simplified, in order to facilitate its modularization and isolate the parts which are really used.&lt;/li&gt;&lt;li&gt;MOF is going to disapear: UML will be defined by itself, in order to facilitate the manipulation of metamodels with any UML compliant tool.&lt;/li&gt;&lt;li&gt;UML Diagrams are going to be formally defined: a Diagram Definition initiative has started&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;These problems are real, but as&amp;nbsp;Eclipse Modeling Project already proposes solutions to solve this kind of problems, I hope that UML team is not going to reinvent the wheel.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After the keynote, the conference continued&amp;nbsp;in two tracks,&amp;nbsp;with partners and users talks.&lt;br /&gt;&lt;br /&gt;At Mia-Software we had invited Olivier Corbel, the IS manager of BritAir, an airline company, who presented&amp;nbsp; its model-driven development process.&lt;/div&gt;&lt;br /&gt;&lt;b style="display: inline ! important; margin: 12px 0px 4px;"&gt;&lt;a href="http://www.slideshare.net/MDDAY/britair-mdday2010" title="Britair mdday2010"&gt;Britair mdday2010&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;div id="__ss_5965603" style="width: 425px;"&gt;&lt;object height="355" id="__sse5965603" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=britairmdday2010-101129081252-phpapp02&amp;stripped_title=britair-mdday2010&amp;userName=MDDAY" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse5965603" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=britairmdday2010-101129081252-phpapp02&amp;stripped_title=britair-mdday2010&amp;userName=MDDAY" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;BritAir uses MagicDraw to create very simple UML class diagrams which represent the domain model of each new application (entities and relations).&lt;br /&gt;&lt;br /&gt;This UML model is used to fully generate RCP applications which allow to manipulate the data (CRUD). The generation rules are defined and executed with Mia-Studio.&lt;br /&gt;&lt;br /&gt;When some business logic is required, it is defined with a textual DSL (business rules in french) and then automatically translated into Java.&lt;br /&gt;&lt;br /&gt;This approach and the corresponding tools are now used each time BritAir has to develop a specific application. The code is 100% generated. For now, six applications have been developped (small maintenance of aircrafts, management of aircraft events, cost accounting, financial forecasts, management of passengers, preparation of flights). Olivier Corbel said that the development managers have evaluated&amp;nbsp;to 10&amp;nbsp;the productivity ratio on these projects!&lt;br /&gt;&lt;br /&gt;After this presentation, I had decided to talk (in french again) about Model-Driven Development and how to reconcile developers with Model-Driven engineering.&lt;br /&gt;&lt;div id="__ss_5937850" style="width: 425px;"&gt;&lt;b style="display: block; margin: 12px 0pt 4px;"&gt;&lt;a href="http://www.slideshare.net/fmadiot/miasoftware-at-md-day-2010" title="Mia-Software at MD Day 2010"&gt;Mia-Software at MD Day 2010&lt;/a&gt;&lt;/b&gt;&lt;object height="355" id="__sse5937850" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mia-softwaremdday2010-101127152501-phpapp02&amp;stripped_title=miasoftware-at-md-day-2010&amp;userName=fmadiot" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse5937850" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mia-softwaremdday2010-101127152501-phpapp02&amp;stripped_title=miasoftware-at-md-day-2010&amp;userName=fmadiot" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;In the first part of my presentation I constated that, in 2010, Model-Driven Engineering adoption continues to increase:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A lot of successful projects have already proven the benefit of Model-Driven Development. In many domains (bank, insurance, defence, aeronautics, transportation, etc) and for various technologies (Java, C#, Flex, Smalltalk, Ada, C, Cobol, etc).&lt;/li&gt;&lt;li&gt;Model-Driven Engineering is not only dedicated to the development of new applications. It is also used to maintain the existing ones and facilitate their modernization. The &lt;a href="http://www.eclipse.org/MoDisco/"&gt;MoDisco&lt;/a&gt; project is an example of such initiative.&lt;/li&gt;&lt;li&gt;The offer is very rich! Just have a look at the &lt;a href="http://www.eclipse.org/modeling/"&gt;Eclipse Modeling Project&lt;/a&gt;: during the last nine months, there have been 14M lines of code committed on 45 active projects, by&amp;nbsp;113 committers of 20 different companies ! In addition, standards such as UML2 (even if the specification could be simplified) is now supported by a lot of mature tools.&lt;/li&gt;&lt;li&gt;The MD Day reflects this adoption with a continuous augmentation (since 2007) of both partners and attendees.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Despite this fact, we must also admit that Model-Driven Engineering still faces strong resistance.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is easy to challenge the most current arguments:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Complexity of UML?&lt;/b&gt;&amp;nbsp;UML is complex (even OMG admitted it by launching the UML Specification Simplification RFP), but 20% of UML&amp;nbsp;(class diagram)&amp;nbsp;is sufficient for 80% of needs. Do you really think that a class diagram is more complex than all the web technologies (WSDL/SOAP, Hibernate, Spring, etc) that most developers are familiar with ? And if it's still too complex, you can use a DSL with only your vocabulary: Model-Driven Engineering is not only UML!&lt;/li&gt;&lt;li&gt;&lt;b&gt;Too much abstractness?&lt;/b&gt;&amp;nbsp;MDD implies that the model should be more abstract than the code to develop (this is what makes the model more sustainable than only the source code). But the level of abstraction is free: it's up to you to define the good level of abstraction depending on the maturity of the team.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Complicated Process? &lt;/b&gt;MDD implies two new activities (the production of the model and the generation). But these activities can be integrated to any kind of process (from agile to waterfall). And modeling usually corresponds to the design of the application. For those who still think that design is not compatible with agility, just read principle #9 of &lt;a href="http://agilemanifesto.org/principles.html"&gt;Agile Manifesto&lt;/a&gt;: "Continuous attention to technical excellence and good design enhances agility".&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Nevertheless, one argument againts MDD is a real one: the difficulty to keep in sync the model and the code. If you loose the synchronization, you loose the benefit of MDD. But if you put all the energy of your team in maintaining this synchronization, you loose in agility.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hopefully there are solutions to avoid this pitfall:&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Model at runtime&lt;/b&gt;: the model is not transformed into code, it is directlty deployed and interpreted by a runtime engine. This approach is similar to declarative languages based on XML, for example to describe GUIs (XUL, XAML, etc). The drawback is that you need to implement a runtime engine.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Model compilation&lt;/b&gt;: the model is transformed into a complete source code, where no additional coding is required (this is the solution adopted by BritAir). This approach is similar to the compilation of a 3GL language (Java, C++, C#, etc) into C or byte code. The drawback is that you need to create comprehensive models and develop complex generators where all the cases must be supported.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;But in most cases, you can't describe all your system with a model. Then the generated code has to be completed manually. In this situation, to avoid the desynchronization between the model and the code, a solution consists in applying the &lt;a href="http://agilemanifesto.org/principles.html"&gt;Agile principles&lt;/a&gt;&amp;nbsp;to modeling and code generation (we can call this approach &lt;b&gt;Agile MDD&lt;/b&gt;).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Agile Modeling&lt;/b&gt; consists in:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Useful &lt;/b&gt;modeling: only model what is really helpful for the understanding of the system, and what will be exploited by the generator. Avoid modeling any information which is redundant with the code (it would rapidely be out of sync).&lt;/li&gt;&lt;li&gt;&lt;b&gt;Simple &lt;/b&gt;modeling: if the system is complex, the model can be complex, but it should always be more simple than the code.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Viewpoints &lt;/b&gt;modeling: decompose the model into submodels describing viewpoints on the system&lt;/li&gt;&lt;li&gt;&lt;b&gt;Incremental &lt;/b&gt;modeling: the model should be continuously challenged by other people on the project and/or by the generator.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Scott Ambler has defined several other core principles that you can read on&amp;nbsp;&lt;a href="http://www.agilemodeling.com/principles.htm"&gt;http://www.agilemodeling.com/principles.htm&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To produce code, these principles should be combined with other Agile principles related to generation. The objective of these &lt;b&gt;Agile Generation&lt;/b&gt; is to reduce the gap between the model and the code:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Targeted generation&lt;/b&gt;: you must be able to select only what you need to (re)generate, depending on what has changed (in the model, or in the generator). If each re-generation is global and takes too much time, you may want to delay the modification in the model and directly modify the code.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Incremental generation&lt;/b&gt;: if the generated code has to be completed manually, these modifications must be protected by the next generations (now, all the generators have this functionality with protected areas).&lt;/li&gt;&lt;li&gt;&lt;b&gt;Traceability&lt;/b&gt;: the generator should keep the trace between the model and the code to allow to easily navigate from a file to the corresponding model element.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Impact analysis&lt;/b&gt;: each time you click on the "generate" button, you must be informed of what&amp;nbsp;exactly&amp;nbsp;happened. Which are the new generated files ? Which parts of the existing files have been modified ?&lt;/li&gt;&lt;li&gt;&lt;b&gt;Assisted coding&lt;/b&gt;: after a generation, you should have a direct access to the parts of the code which have to be&amp;nbsp;manually&amp;nbsp;completed.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Adaptability&lt;/b&gt;: the generated code reflects architectural and coding choices which can evolve during the project. Templates engine already allow to easily modify the generator. But to facilitate the modification of the right template, traceability mechanisms should give a direct access from the generated code to the corresponding template definition.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Of course, these Agile MDD principles are not exclusive: they should be combined, when it is possible, with Model at Runtime and Model Compilation approaches.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To illustrate Agile MDD, I ended my talk with a presentation of the &lt;a href="http://www.mia-software.com/en/products/mia-studio/"&gt;Mia-Studio&lt;/a&gt; tool suite which supports these Agile Generation principles.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then Tony Rostren shown a short demonstration of the tool:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Modeling of the cinematic of an application in UML with MagicDraw&lt;/li&gt;&lt;li&gt;Generation of an executable application based on Struts&lt;/li&gt;&lt;li&gt;Edition of the generated code in Eclipse&lt;/li&gt;&lt;li&gt;Navigation from Java source code editor to corresponding element in MagicDraw&lt;/li&gt;&lt;li&gt;Modification of the model and regeneration of the corresponding code&lt;/li&gt;&lt;li&gt;Access to a template from a selected fragment of generated code&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;The full demonstration is available here:&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.mia-software.com/html/miaStudio/download/demo/mdday2010.htm"&gt;http://www.mia-software.com/html/miaStudio/download/demo/mdday2010.htm&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I spent the rest of the conference talking with customers and partners and demonstrating our tools. I could only attend one other presentation. It was the Sodius one, with Yann Lebeaupin talking with EADS about tools interoperability to support system engineering.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can find all the other presentations on slideshare:&amp;nbsp;&lt;a href="http://www.slideshare.net/MDDAY/presentations"&gt;http://www.slideshare.net/MDDAY/presentations&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-7846284450683343609?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/7846284450683343609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/12/md-day-2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/7846284450683343609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/7846284450683343609'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/12/md-day-2010.html' title='MD Day 2010'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3jpQTZO9cJ8/TPTNB-uqpcI/AAAAAAAAAhc/JpjVmA4euNc/s72-c/logo_md_day.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-8632370681853489219</id><published>2010-11-09T00:45:00.000-08:00</published><updated>2010-11-09T04:56:31.142-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='MoDisco'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF Facet'/><title type='text'>An Eclipse Modeling Week</title><content type='html'>Last week, I participated to &lt;a href="http://www.eclipsecon.org/summiteurope2010/"&gt;Eclipse Summit Europe 2010&lt;/a&gt; in Germany.&lt;br /&gt;&lt;br /&gt;I started tuesday with a talk at the Eclipse Modeling Symposium (you can read my previous post: &lt;a href="http://fmadiot.blogspot.com/2010/11/using-emf-to-represent-eclipse-3x-plug.html"&gt;Using EMF to represent Eclipse 3.x plug-ins&lt;/a&gt;&amp;nbsp;, and a complete summary of the symposium on &lt;a href="http://ed-merks.blogspot.com/2010/11/modeling-in-europe.html"&gt;Ed Merks' blog&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Then thursday, with Grégoire Dupé, I presented &lt;a href="http://www.eclipse.org/modeling/emft/facet/"&gt;EMF Facet&lt;/a&gt;, the new Eclipse/Modeling project we have created to allow dynamic extensions of existing EMF models.&lt;br /&gt;&lt;div id="__ss_5707458" style="width: 425px;"&gt;&lt;strong style="display: block; margin: 12px 0 4px;"&gt;&lt;a href="http://www.slideshare.net/fmadiot/emf-facet-ese2010" title="EMF Facet at ESE 2010"&gt;EMF Facet at ESE 2010&lt;/a&gt;&lt;/strong&gt;&lt;object height="355" id="__sse5707458" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mia-softwaretalkese2010-101108153423-phpapp01&amp;stripped_title=emf-facet-ese2010&amp;userName=fmadiot" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse5707458" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mia-softwaretalkese2010-101108153423-phpapp01&amp;stripped_title=emf-facet-ese2010&amp;userName=fmadiot" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;We have finished the week friday, at &lt;a href="http://www.eclipsedayparis.com/"&gt;Eclipse Day Paris&lt;/a&gt;, by a presentation of &lt;a href="http://www.eclipse.org/MoDisco/"&gt;MoDisco&lt;/a&gt;, the Eclipse/Modeling project dedicated to Model-Driven Software Modernization.&lt;br /&gt;&lt;br /&gt;&lt;div id="__ss_5707493" style="width: 425px;"&gt;&lt;strong style="display: block; margin: 12px 0 4px;"&gt;&lt;a href="http://www.slideshare.net/fmadiot/modisco-at-eclipse-day-paris-2010" title="MoDisco at Eclipse Day Paris 2010"&gt;MoDisco at Eclipse Day Paris 2010&lt;/a&gt;&lt;/strong&gt;&lt;object height="355" id="__sse5707493" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mia-softwareeclipseday2010-101108153943-phpapp02&amp;stripped_title=modisco-at-eclipse-day-paris-2010&amp;userName=fmadiot" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse5707493" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mia-softwareeclipseday2010-101108153943-phpapp02&amp;stripped_title=modisco-at-eclipse-day-paris-2010&amp;userName=fmadiot" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Now, we can come back to a normal activity ... until &lt;a href="http://www.mdday.fr/"&gt;MD Day 2010&lt;/a&gt;, the 25th of November in Paris.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-8632370681853489219?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/8632370681853489219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/11/eclipse-modeling-week.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/8632370681853489219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/8632370681853489219'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/11/eclipse-modeling-week.html' title='An Eclipse Modeling Week'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-2027017255197865833</id><published>2010-11-03T01:23:00.000-07:00</published><updated>2010-11-03T01:23:40.184-07:00</updated><title type='text'>Using EMF to represent Eclipse 3.x plug-ins</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Yesterday was the first day of Eclipse Europe Summit 2010 in Ludwigsburg. The afternoon, I participated to the &lt;a href="http://www.eclipsecon.org/summiteurope2010/sessions/?page=sessions&amp;amp;id=1898"&gt;Eclipse Modeling Symposium&lt;/a&gt;&amp;nbsp;organized by Ed Merks and Sven Efftinge.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TNESyBznEBI/AAAAAAAAAdo/pWir4InVzTI/s1600/modeling_pos_logo_fc_med.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TNESyBznEBI/AAAAAAAAAdo/pWir4InVzTI/s1600/modeling_pos_logo_fc_med.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;The room was crowded: I evaluated more than 150 attendees to this 4 hours session. It has been a very good opportunity to get an overview of how dynamic is the modeling world in Eclipse. There have been 15 presentations about models migration, graphical modelers (even in 3D !), models testing, code generation, documentation generation, new features for textual DSLs, and many other topics… (you can find a summary on the &lt;a href="http://madmeierslife.blogspot.com/2010/11/eclipse-summit-europe-modeling.html"&gt;Mäd Meiers' blog&lt;/a&gt;).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TNEVA2NKaRI/AAAAAAAAAd8/kUhxKXFDwYI/s1600/symposium5.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="195" src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TNEVA2NKaRI/AAAAAAAAAd8/kUhxKXFDwYI/s400/symposium5.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;I really appreciated the Papyrus presentation, especially when Remi Schnekenburger of CEA explained how they have integrated MoDisco to provide customizable navigation through the models ;-)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;I also got the chance to give a presentation during this session. This presentation was about using EMF to describe existing plug-ins developed for Eclipse 3.x. The idea is to create models from the main artifacts which compose an existing plug-in:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;An inventory model (using KDM Source) for the organization of the plugin (folders and files)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;A comprehensive Java model (using MoDisco) from the Java source code&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;A specific model to describe the MANIFEST.MF file&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;Several XML models (using MoDisco) for the .classpath, .project and plugin.xml files&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;Two KDM models for the content of the plugin.properties and build.properties&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;These models are referenced by a last model which describes the whole plug-in.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TNETo0dtRsI/AAAAAAAAAds/8aWAEn8Zzgc/s1600/symposium1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TNETo0dtRsI/AAAAAAAAAds/8aWAEn8Zzgc/s400/symposium1.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Here, the main benefit of the approach is not to raise the level of abstraction (the classical benefit of Model-Driven Engineering), but to go from an heterogeneous world (with various file formats) to an homogeneous world (EMF models) where you can manipulate all the information by using EMF APIs (and then any EMF compliant tool).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Then, I presented three examples of how this kind of model can be used:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;&lt;b&gt;Quality Analysis&lt;/b&gt;: by introspecting the model of the plug-in to check development rules, we can create a model of violations and inject this model into the Eclipse Problem View.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; font-family: 'Times New Roman'; font-size: medium; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TNEUAMXHR5I/AAAAAAAAAdw/c1OB6RgaFqc/s1600/symposium2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="85" src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TNEUAMXHR5I/AAAAAAAAAdw/c1OB6RgaFqc/s400/symposium2.PNG" width="400" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;ul style="font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;&lt;b&gt;Refactoring&lt;/b&gt;: by transforming the model of the plug-in and then regenerate it, we can adapt an existing Eclipse 3.x plug-in to fit with the E4 compatibility layer.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TNEUL11uPBI/AAAAAAAAAd0/1azWGg5T1Uk/s1600/symposium3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="93" src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TNEUL11uPBI/AAAAAAAAAd0/1azWGg5T1Uk/s400/symposium3.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;&lt;b&gt;Release Engineering&lt;/b&gt;: by extracting additional models from the content of update sites, we are experimenting constraints solver to calculate and evaluate possible build configurations and initialize B3 models.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TNEUj9KgfeI/AAAAAAAAAd4/qJYGA4DhMoE/s1600/symposium4.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="185" src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TNEUj9KgfeI/AAAAAAAAAd4/qJYGA4DhMoE/s400/symposium4.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;The slides of my presentation are available on Slideshare.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div id="__ss_5652140" style="width: 425px;"&gt;&lt;strong style="display: block; margin: 12px 0 4px;"&gt;&lt;a href="http://www.slideshare.net/fmadiot/miasoftware-at-eclipse-modeling-symposium-2010" title="Mia-Software at Eclipse Modeling Symposium 2010"&gt;Mia-Software at Eclipse Modeling Symposium 2010&lt;/a&gt;&lt;/strong&gt;&lt;object height="355" id="__sse5652140" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mia-softwaremodelingsymposium2010-101103031739-phpapp02&amp;stripped_title=miasoftware-at-eclipse-modeling-symposium-2010&amp;userName=fmadiot" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse5652140" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mia-softwaremodelingsymposium2010-101103031739-phpapp02&amp;stripped_title=miasoftware-at-eclipse-modeling-symposium-2010&amp;userName=fmadiot" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;div style="padding: 5px 0 12px;"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/fmadiot"&gt;fmadiot&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Today I will try to combine official sessions (to discover what is coming from other projects) and side discussions with persons who are interested in our work (several meetings are already planned about MoDisco and EMF Facet).&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;ESE is definitely too short :-(&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-2027017255197865833?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/2027017255197865833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/11/using-emf-to-represent-eclipse-3x-plug.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/2027017255197865833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/2027017255197865833'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/11/using-emf-to-represent-eclipse-3x-plug.html' title='Using EMF to represent Eclipse 3.x plug-ins'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3jpQTZO9cJ8/TNESyBznEBI/AAAAAAAAAdo/pWir4InVzTI/s72-c/modeling_pos_logo_fc_med.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-3268598948122497404</id><published>2010-10-28T14:54:00.000-07:00</published><updated>2010-10-28T14:54:37.356-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MoDisco'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><category scheme='http://www.blogger.com/atom/ns#' term='model'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Spy On Your Models - Part 3</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TMnfBxD4O3I/AAAAAAAAAb4/5h5AZfv_paA/s1600/851117_94125662.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="161" src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TMnfBxD4O3I/AAAAAAAAAb4/5h5AZfv_paA/s400/851117_94125662.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;In this sequence of posts, I explain how to use the&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://wiki.eclipse.org/MoDisco/Components/ModelBrowser/Documentation/0.8"&gt;Model Browser&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;provided by&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;a href="http://www.eclipse.org/gmt/modisco/"&gt;MoDisco&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;to inspect an EMF model.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;In the first two posts, I have described &lt;a href="http://fmadiot.blogspot.com/2010/09/spy-on-your-models-part-1.html"&gt;how to directly access to instances of a given type&lt;/a&gt;, and&lt;a href="http://fmadiot.blogspot.com/2010/10/spy-on-your-models-part-2.html"&gt; how to navigate through the model elements&lt;/a&gt;. In this third post, I will now describe how to customize the browser.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;When your model contains a large number of model elements, you need help to identify the nature of the objects your are looking for. A good idea is to define a graphical extension to associate a specific graphical rendering (icon, label, color, etc). It can be achieved with the EMF.Edit framework by developing content and label provider classes. You can develop and deploy a new plug-in, and once this plug-in is installed, the customization is applied systematically.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;But in some situations, you need a more flexible customization.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;A customization which presents the model according to a given viewpoint.&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;A customizations that you apply temporarily, depending on a working situation.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;This is what you can do by creating a UICustom model.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;A UICustom model defines graphical properties for elements of a metamodel (a ECore model). These properties can be loaded dynamically by the Model Browser and applied to the model elements.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;First, you have to create a new MoDisco project:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TMnp4AytODI/AAAAAAAAAb8/3_E56iugBYY/s1600/browser18.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TMnp4AytODI/AAAAAAAAAb8/3_E56iugBYY/s320/browser18.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;Then, create a UICustom model in this project:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TMnqFxU0dfI/AAAAAAAAAcA/bvR-BYU8Zgk/s1600/browser16.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TMnqFxU0dfI/AAAAAAAAAcA/bvR-BYU8Zgk/s320/browser16.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;The UICustom creation wizard asks which is the metamodel to be customized. It proposes all the ECore models registered in your Eclipse:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TMnqTQLVKwI/AAAAAAAAAcE/kUywNUtEphM/s1600/browser17.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TMnqTQLVKwI/AAAAAAAAAcE/kUywNUtEphM/s320/browser17.PNG" width="273" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;Once created, you can edit the UICustom model with the editor provided by MoDisco:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TMnq0liNHdI/AAAAAAAAAcI/3JgoGy1x13Q/s1600/browser20.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="185" src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TMnq0liNHdI/AAAAAAAAAcI/3JgoGy1x13Q/s320/browser20.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;Now you can select a metaclass and edit its graphical properties (label, bold, italic, font, color, icon, visible, etc). You can also customize the attributes and the references of the metaclass.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;Each graphical property can be set with a static value (for example, define a new icon for all the instances of Class) or a dynamic value, computed by a Query (for example, the label of an instance of Class can be italic if its "isAbstract" value is true).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;To understand how to define a customization, you can read the &lt;a href="http://wiki.eclipse.org/MoDisco/Components/ModelBrowser/Documentation/0.8#Customization"&gt;user manual&lt;/a&gt; in the MoDisco wiki.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;Once saved, a UICustom is applicable. Click on the "Load Customization" button in the toolbar :&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TMnu9yyv9OI/AAAAAAAAAcM/N7LNjio2aCQ/s1600/browser22.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TMnu9yyv9OI/AAAAAAAAAcM/N7LNjio2aCQ/s1600/browser22.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;Your UICustom model appears with all the other registered UICustom models. You can select it to apply it on the current model loaded in the Model Browser.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TMnvmcaPwnI/AAAAAAAAAcQ/NmIcIxyQTos/s1600/browser23.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="161" src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TMnvmcaPwnI/AAAAAAAAAcQ/NmIcIxyQTos/s320/browser23.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;In the next post, I will describe how to create and execute queries on model elements directly from the Model Browser.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-3268598948122497404?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/3268598948122497404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/10/spy-on-your-models-part-3.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/3268598948122497404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/3268598948122497404'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/10/spy-on-your-models-part-3.html' title='Spy On Your Models - Part 3'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3jpQTZO9cJ8/TMnfBxD4O3I/AAAAAAAAAb4/5h5AZfv_paA/s72-c/851117_94125662.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-4691674729319105410</id><published>2010-10-18T13:18:00.001-07:00</published><updated>2010-10-19T05:45:30.942-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ecore'/><category scheme='http://www.blogger.com/atom/ns#' term='MoDisco'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Spy On Your Models - Part 2</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TL10PswR3cI/AAAAAAAAAbs/EpjGPcKf0Po/s1600/browser15.PNG"&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s320/843566_85292309.jpg" alt="" id="BLOGGER_PHOTO_ID_5529483326583924082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In this sequence of posts, I explain how to use the &lt;a href="http://wiki.eclipse.org/MoDisco/Components/ModelBrowser/Documentation/0.8"&gt;&lt;span style="font-weight: bold;"&gt;Model Browser&lt;/span&gt;&lt;/a&gt; provided by &lt;a href="http://www.eclipse.org/MoDisco/"&gt;MoDisco&lt;/a&gt; to inspect an EMF model.&lt;br /&gt;&lt;br /&gt;In the &lt;a href="http://fmadiot.blogspot.com/2010/09/spy-on-your-models-part-1.html"&gt;first post&lt;/a&gt;, I have described the &lt;span style="font-weight: bold;"&gt;Types &lt;/span&gt;panel which allows to directly access to all the EMF instances of a given EClass. In this second post, I will now describe the &lt;span style="font-weight: bold;"&gt;Instances &lt;/span&gt;panel which allows to inspect an EMF object and navigate to all the other connected EMF objects.&lt;div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TL1Q6kL8wCI/AAAAAAAAAac/F0se1sBrTsg/s1600/browser1.PNG"&gt;&lt;img src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TL1Q6kL8wCI/AAAAAAAAAac/F0se1sBrTsg/s320/browser1.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5529664884557266978" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 142px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;This panel is a tree containing all the instances of the type selected in the Type panel. If you open a model element, you can see all its properties: the attributes and the references declared by the type (the metaclass) in the corresponding ECore model (the metamodel).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TL1aogS9XJI/AAAAAAAAAas/7FwIJJFs_hs/s1600/browser7.PNG"&gt;&lt;img src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TL1aogS9XJI/AAAAAAAAAas/7FwIJJFs_hs/s320/browser7.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5529675569391557778" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 320px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TL1aGnIcR_I/AAAAAAAAAak/4U3VqrqVAUI/s1600/browser6.PNG"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;The attributes are displayed with a green bullet and the value of the selected instance. The references are displayed with an icon inspired by UML associations: containment references have a diamond (like UML compositions), references with no opposite are terminated by an arrow (like UML navigable roles). Derived properties are prefixed by "/".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On each reference, you can right-click and select the "Add child" menu to add new EMF objects.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TL10PswR3cI/AAAAAAAAAbs/EpjGPcKf0Po/s1600/browser15.PNG"&gt;&lt;img src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TL10PswR3cI/AAAAAAAAAbs/EpjGPcKf0Po/s320/browser15.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5529703730541354434" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 139px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TL1winw47UI/AAAAAAAAAbk/ckv2ENd37S0/s1600/browser14.PNG"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;If you want to hide empty and derived references, unselect the buttons "Show Empty Links" and "Show Derived Links". Then the tree will only display setable references which have at least one connected object.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TL1aGnIcR_I/AAAAAAAAAak/4U3VqrqVAUI/s1600/browser6.PNG"&gt;&lt;img src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TL1aGnIcR_I/AAAAAAAAAak/4U3VqrqVAUI/s320/browser6.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5529674987110942706" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 279px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TL1Q6kL8wCI/AAAAAAAAAac/F0se1sBrTsg/s1600/browser1.PNG"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;When you open a reference, you can see all the objects connected through this reference. This is very helpful to know how the objects are connected to each other. Especially when the current type declares several references of the same type: in this case, you see precisely the connected objects under each reference.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This instance tree proposes several other interesting options.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TL1dmORSh9I/AAAAAAAAAa0/OpqN1Kz-JNs/s1600/browser8.PNG"&gt;&lt;img src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TL1dmORSh9I/AAAAAAAAAa0/OpqN1Kz-JNs/s320/browser8.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5529678828727863250" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 194px; height: 309px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TL1aogS9XJI/AAAAAAAAAas/7FwIJJFs_hs/s1600/browser7.PNG"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Let's see some of these options:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Show Multiplicity&lt;/b&gt;: This option displays the upper and lower bounds (between square brackets) of each structural feature as they are defined in the corresponding ECore model.&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TL1fKBI4hAI/AAAAAAAAAa8/3PNSK47ExoQ/s1600/browser9.PNG"&gt;&lt;img src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TL1fKBI4hAI/AAAAAAAAAa8/3PNSK47ExoQ/s320/browser9.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5529680543189861378" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 306px; " /&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Show Ordering&lt;/b&gt;: This option displays the index (between square brackets) of each element under a reference which has the "ordered" ECore property set to true. It is useful if you have already selected the "Sort instances" option which displays the elements in an alphabetical order.  See below the instances of &lt;i&gt;Property &lt;/i&gt;sorted by name under the &lt;i&gt;ownedAttribute&lt;/i&gt; reference: they are suffixed by the index within the list of attributes of the current class.&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TL1iPVPvojI/AAAAAAAAAbM/yzInExABc3I/s1600/browser10.PNG"&gt;&lt;img src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TL1iPVPvojI/AAAAAAAAAbM/yzInExABc3I/s400/browser10.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5529683933021577778" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 162px; " /&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TL1iPVPvojI/AAAAAAAAAbM/yzInExABc3I/s1600/browser10.PNG"&gt;&lt;/a&gt;&lt;b&gt;Show Opposite Links&lt;/b&gt;: this option indicates the name of the opposite links (if there is one defined in the ECore model). This option helps to know which reference allows to go back to a given object. Below, you can see that the &lt;i&gt;owner&lt;/i&gt; reference can be used to go from an instance of &lt;i&gt;Comment &lt;/i&gt;back to the class &lt;i&gt;CollectInformation&lt;/i&gt;.&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TL1qRYpIAsI/AAAAAAAAAbU/75AYNZgeP50/s1600/browser11.PNG"&gt;&lt;img src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TL1qRYpIAsI/AAAAAAAAAbU/75AYNZgeP50/s400/browser11.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5529692764386099906" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 90px; " /&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt; &lt;b&gt;Show Container&lt;/b&gt;: When there is no opposite link defined, this option helps you to go back to the container (the objects which holds the current object with a "containment" reference). The &lt;i&gt;eContainer &lt;/i&gt;reference is part of the EMF framework.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TL1urBf9F7I/AAAAAAAAAbc/aTOPtJJokd0/s1600/browser12.PNG"&gt;&lt;img src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TL1urBf9F7I/AAAAAAAAAbc/aTOPtJJokd0/s400/browser12.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5529697602896730034" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 220px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TL1qRYpIAsI/AAAAAAAAAbU/75AYNZgeP50/s1600/browser11.PNG"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Show Types of Links&lt;/b&gt;: This option indicates the Type declared for each reference. It is useful to know what kind of objects you can find under a reference. Below, you can see that the &lt;i&gt;packagedElement&lt;/i&gt; reference accepts instances of &lt;i&gt;PackageableElement&lt;/i&gt;. It explains why you find instances of &lt;i&gt;Class &lt;/i&gt;and &lt;i&gt;Association &lt;/i&gt;which both inherit from &lt;i&gt;PackageableElement&lt;/i&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TL1winw47UI/AAAAAAAAAbk/ckv2ENd37S0/s1600/browser14.PNG"&gt;&lt;img src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TL1winw47UI/AAAAAAAAAbk/ckv2ENd37S0/s400/browser14.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5529699657572740418" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 385px; height: 223px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the next post, I will explain how this browser can be dynamically extended and customized.&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s1600/843566_85292309.jpg"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-4691674729319105410?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/4691674729319105410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/10/spy-on-your-models-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/4691674729319105410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/4691674729319105410'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/10/spy-on-your-models-part-2.html' title='Spy On Your Models - Part 2'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLyrygB65XI/AAAAAAAAAaU/gqy-JjDTGTo/s72-c/843566_85292309.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-3793037859132099525</id><published>2010-10-14T13:26:00.000-07:00</published><updated>2010-10-14T05:51:33.968-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MoDisco'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Spy On Your Models - Part 1</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TLbbl5gSX-I/AAAAAAAAAaM/zJ7J4sXoLIk/s1600/browser5.PNG"&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TKT4BQqEpYI/AAAAAAAAAYM/87bpT33ohlg/s1600/1167404_44042079.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TKT4BQqEpYI/AAAAAAAAAYM/87bpT33ohlg/s320/1167404_44042079.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5522811743598060930" /&gt;&lt;/a&gt;&lt;/div&gt;Have you ever been stuck with an EMF model, trying to find what was going wrong? Which relation is broken or missing ? Where is that model element which should be there, related to that other one ? How many instances this EClass has in the model ?&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Of course, you can use the EMF reflexive editor. It is suitable for small models, but when your model contains a lot of model elements it is hard to find your way (you must start from the roots elements, you don't see the name of the relations between the objects, the tree doesn't show the objects pointed by non-containment relations, etc).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, if you really need this kind of information (and if you are not an expert in reading XMI files in plain text), the &lt;a href="http://wiki.eclipse.org/MoDisco/Components/ModelBrowser/Documentation/0.8"&gt;model browser&lt;/a&gt; provided by &lt;a href="http://www.eclipse.org/MoDisco/"&gt;MoDisco&lt;/a&gt; is a solution for you.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To allow inspecting the details of large and complex EMF models, MoDisco (the Eclipse/modeling project dedicated to Software Modernization) provides an editor with lots of interesting features. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;After &lt;a href="http://wiki.eclipse.org/MoDisco/Installation"&gt;MoDisco installation&lt;/a&gt;, you can right-click on any EMF resource and open the browser by selecting the menu "Open with &gt; MoDisco Browser".&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TKUC7g5dnFI/AAAAAAAAAYU/76rkm5OYX8Q/s1600/browser1.PNG"&gt;&lt;img src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TKUC7g5dnFI/AAAAAAAAAYU/76rkm5OYX8Q/s320/browser1.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5522823739506269266" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 142px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In this suite of posts, I will describe the main features of this tool.&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TKT4BQqEpYI/AAAAAAAAAYM/87bpT33ohlg/s1600/1167404_44042079.jpg"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first feature is a panel, on the left-side of the browser, displaying the classes (metaclasses) of the corresponding ECore definition (the metamodel). The selection of a type displays all its instances in the right-side panel. Each type is suffixed by the number of its instances. By default, only the types with at least one instance are listed, but if you click on the "(0)" button, the empty metaclasses are also listed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLTaoeN3vQI/AAAAAAAAAZs/9PPEoja5NFQ/s1600/browser2.PNG"&gt;&lt;img src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TLTaoeN3vQI/AAAAAAAAAZs/9PPEoja5NFQ/s320/browser2.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5527283031531306242" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 248px; height: 320px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Sometimes, it can be helpful to see also the instances of the subtypes too. For example, in a UML model, if you consider the DataType metaclass you may need to access also to the Enumeration and PrimitiveType instances. It is possible by clicking on the button "Display Instances of Submetaclasses".&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;By clicking on the button "Show Derivation Tree", you can also display these types in a tree, organized according to the "eSuperTypes" relation.&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TKT4BQqEpYI/AAAAAAAAAYM/87bpT33ohlg/s1600/1167404_44042079.jpg"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TLbSO41w-SI/AAAAAAAAAZ8/rUA3dQTkRDs/s1600/browser3.PNG"&gt;&lt;img src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TLbSO41w-SI/AAAAAAAAAZ8/rUA3dQTkRDs/s320/browser3.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5527836745861757218" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 310px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Four other options are available: to sort the types alphabetically, to sort them by the number of their instances, to group them by package and to show their full qualified name.&lt;div style="text-align: center; "&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TKT4BQqEpYI/AAAAAAAAAYM/87bpT33ohlg/s1600/1167404_44042079.jpg"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Of course, standard features provided by EMF on EClass are still available. For example to get the references to a metaclass, the menu "Show References" opens the view "EClass References".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TLbV48-Y6jI/AAAAAAAAAaE/8_w_AsGaFL0/s1600/browser4.PNG"&gt;&lt;img src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TLbV48-Y6jI/AAAAAAAAAaE/8_w_AsGaFL0/s320/browser4.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5527840767061060146" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 298px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TLbSO41w-SI/AAAAAAAAAZ8/rUA3dQTkRDs/s1600/browser3.PNG"&gt;&lt;/a&gt;&lt;div style="text-align: center; "&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TKT4BQqEpYI/AAAAAAAAAYM/87bpT33ohlg/s1600/1167404_44042079.jpg"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Another important feature provided by the browser is the management of large models. If a type as more than 1000 instances, they are displayed by groups of 1000 instances. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TLbbl5gSX-I/AAAAAAAAAaM/zJ7J4sXoLIk/s1600/browser5.PNG"&gt;&lt;img src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TLbbl5gSX-I/AAAAAAAAAaM/zJ7J4sXoLIk/s320/browser5.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5527847036781748194" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 168px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TLbV48-Y6jI/AAAAAAAAAaE/8_w_AsGaFL0/s1600/browser4.PNG"&gt;&lt;/a&gt;&lt;div style="text-align: center; "&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TKT4BQqEpYI/AAAAAAAAAYM/87bpT33ohlg/s1600/1167404_44042079.jpg"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;In a next post, I will describe the features related to the Instances panel which allows to view the properties of each instance and to navigate through its references to other instances.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-3793037859132099525?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/3793037859132099525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/09/spy-on-your-models-part-1.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/3793037859132099525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/3793037859132099525'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/09/spy-on-your-models-part-1.html' title='Spy On Your Models - Part 1'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3jpQTZO9cJ8/TKT4BQqEpYI/AAAAAAAAAYM/87bpT33ohlg/s72-c/1167404_44042079.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-4320109172463591075</id><published>2010-10-01T02:49:00.002-07:00</published><updated>2010-10-03T13:28:02.159-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MoDisco'/><category scheme='http://www.blogger.com/atom/ns#' term='jsp'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><title type='text'>Using EMF to detect loops within a JSP</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TKYD1bugpWI/AAAAAAAAAZU/3FVA9iIOFFI/s1600/jsp-foreach2.PNG"&gt;&lt;/a&gt;After my post explaining &lt;a href="http://fmadiot.blogspot.com/2010/09/how-to-create-emf-models-from-jsp-pages.html"&gt;how to create EMF models from JSP pages&lt;/a&gt;, someone posted a comment on TheServerSide to know if the EMF model could be used to detect loops in the JSP (&lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=60980"&gt;http://www.theserverside.com/news/thread.tss?thread_id=60980&lt;/a&gt;).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In fact, you can integrate loops in a JSP with several ways. The EMF model will represent these ways differently.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you write a scriptlet containing a loop in Java (for, while, ...):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TKX_CAwoc6I/AAAAAAAAAZE/X527SJLWZoM/s1600/jsp-foreach4.PNG"&gt;&lt;img src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TKX_CAwoc6I/AAAAAAAAAZE/X527SJLWZoM/s400/jsp-foreach4.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5523100928068580258" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 383px; " /&gt;&lt;/a&gt;the EMF model created from this JSP will contain a &lt;b&gt;JSPScriptlet&lt;/b&gt; object which contains the text of the scriptlet. &lt;/div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TKXdu0PrMJI/AAAAAAAAAY8/1ekpdyUyNxE/s1600/jsp-foreach3.PNG"&gt;&lt;img src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TKXdu0PrMJI/AAAAAAAAAY8/1ekpdyUyNxE/s400/jsp-foreach3.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5523064314407891090" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 252px; " /&gt;&lt;/a&gt;The discoverer currently provided by MoDisco does not parse the content of the scriptlet. It will be provided in a future version (after Indigo) by using the &lt;a href="http://fmadiot.blogspot.com/2010/01/how-to-create-emf-model-from-java.html"&gt;Java metamodel&lt;/a&gt; to represent the Java fragments contained in a scriptlet.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Another way for looping in a JSP can be achieved by using the "forEach" tag:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TKYB8tJxgOI/AAAAAAAAAZM/oIiMNW2EfKA/s1600/jsp-foreach5.PNG"&gt;&lt;img src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TKYB8tJxgOI/AAAAAAAAAZM/oIiMNW2EfKA/s400/jsp-foreach5.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5523104135440859362" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 236px; " /&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;In this case, the EMF model will contain a &lt;b&gt;JSPAction&lt;/b&gt; object whith the name of the tag ("c:forEach" here):&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TKWxgVzHF1I/AAAAAAAAAYk/qhCLNkk9tEc/s1600/jsp-foreach1.PNG"&gt;&lt;img src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TKWxgVzHF1I/AAAAAAAAAYk/qhCLNkk9tEc/s400/jsp-foreach1.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5523015687205230418" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 218px; " /&gt;&lt;/a&gt;This EMF object contains children which are the attributes of the tag (var, items, varStatus, ...) and the sub elements of the tag (a JSPAction "c:choose" and an Element "tr"):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TKW3m5BU6qI/AAAAAAAAAY0/kr9ydfe6CzY/s1600/jsp-foreach3.PNG"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); -webkit-text-decorations-in-effect: none; "&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TKYD1bugpWI/AAAAAAAAAZU/3FVA9iIOFFI/s1600/jsp-foreach2.PNG"&gt;&lt;img src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TKYD1bugpWI/AAAAAAAAAZU/3FVA9iIOFFI/s400/jsp-foreach2.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5523106209527276898" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 234px; height: 400px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-4320109172463591075?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/4320109172463591075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/10/using-emf-to-detect-loops-within-jsp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/4320109172463591075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/4320109172463591075'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/10/using-emf-to-detect-loops-within-jsp.html' title='Using EMF to detect loops within a JSP'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3jpQTZO9cJ8/TKX_CAwoc6I/AAAAAAAAAZE/X527SJLWZoM/s72-c/jsp-foreach4.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-1975890607107018362</id><published>2010-09-27T04:33:00.001-07:00</published><updated>2010-09-27T12:14:20.730-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MoDisco'/><category scheme='http://www.blogger.com/atom/ns#' term='jsp'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><category scheme='http://www.blogger.com/atom/ns#' term='jee'/><title type='text'>How to create EMF models from JSP pages ?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TKCgR2Pr4MI/AAAAAAAAAYE/xKMPU_g7lG8/s1600/JSP_Browser_MoDisco.gif"&gt;&lt;/a&gt;The next release of &lt;a href="http://www.eclipse.org/MoDisco/"&gt;MoDisco&lt;/a&gt; (&lt;a href="http://wiki.eclipse.org/MoDisco/Components/v0.9"&gt;version 0.9&lt;/a&gt;) is under development and is planned to be released with Indigo. This release will come with new components for creating EMF models from the source code of JEE applications. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The current version (&lt;a href="http://wiki.eclipse.org/MoDisco/Components"&gt;version 0.8&lt;/a&gt;) already provides components for creating EMF models from java source code (see this &lt;a href="http://fmadiot.blogspot.com/2010/01/how-to-create-emf-model-from-java.html"&gt;older post&lt;/a&gt;). In next version, new components will be dedicated to &lt;a href="http://wiki.eclipse.org/MoDisco/Components/JSP"&gt;JSP reverse-engineering&lt;/a&gt;. They have been developped by Fabien Giquel and Nicolas Guyomar of&lt;a href="http://www.mia-software.com/"&gt; Mia-Software&lt;/a&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;They are composed of:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;a metamodel for describing a JSP&lt;/li&gt;&lt;li&gt;a discoverer for creating a model from a set of JSP pages&lt;/li&gt;&lt;li&gt;a generator for generating JSP pages from a model&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;The JSP metamodel (defined with Ecore) is an extention of the XML metamodel (also provided by MoDisco) which contains types such as Page, JSPScriptlet, JSPExpression, JSPTagLib, etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TKCEy7c1IvI/AAAAAAAAAX0/8DXGdSEW0HE/s1600/JSP_Metamodel.png"&gt;&lt;img src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TKCEy7c1IvI/AAAAAAAAAX0/8DXGdSEW0HE/s320/JSP_Metamodel.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5521559153643168498" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 246px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The discoverer, is a component which analyzes JSP pages and creates an EMF model conforming to the JSP metamodel. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It can be launched from a project, or directly from JSP pages.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TKCf-OfRc8I/AAAAAAAAAX8/GD0Gd8wxpyQ/s1600/JSP_DiscoverFromFiles2.PNG"&gt;&lt;img src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TKCf-OfRc8I/AAAAAAAAAX8/GD0Gd8wxpyQ/s320/JSP_DiscoverFromFiles2.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521589034546197442" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 42px; " /&gt;&lt;/a&gt;The result is an EMF model which can be opened with the MoDisco &lt;a href="http://wiki.eclipse.org/MoDisco/Components/ModelBrowser"&gt;Model Browser&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TKCgR2Pr4MI/AAAAAAAAAYE/xKMPU_g7lG8/s1600/JSP_Browser_MoDisco.gif"&gt;&lt;img src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TKCgR2Pr4MI/AAAAAAAAAYE/xKMPU_g7lG8/s320/JSP_Browser_MoDisco.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5521589371635753154" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 225px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The generator allows regenerating JSP files from an EMF model (conforming to the JSP metamodel). While it still needs to be improved to support a better formatting, yet it can already be used to produce JSP files.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With these new components, you can reverse-enginer JSP files and use EMF APIs in order to control coding norms, detect patterns, document existing pages or refactor them by applying transformation at the model level (and then use the generator to get a new version of your JSPs).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-1975890607107018362?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/1975890607107018362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/09/how-to-create-emf-models-from-jsp-pages.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/1975890607107018362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/1975890607107018362'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/09/how-to-create-emf-models-from-jsp-pages.html' title='How to create EMF models from JSP pages ?'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3jpQTZO9cJ8/TKCEy7c1IvI/AAAAAAAAAX0/8DXGdSEW0HE/s72-c/JSP_Metamodel.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-3025782886434351393</id><published>2010-09-23T09:55:00.001-07:00</published><updated>2010-09-24T01:16:39.411-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='metamodel'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='extensibility'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF Facet'/><title type='text'>EMF Facet project has been created</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;a href="http://www.eclipse.org/modeling/emft/facet/"&gt;EMF Facet&lt;/a&gt; is a new Eclipse/Modeling project which will provide solutions to extend existing metamodels without changing them. It has been provisioned recently in &lt;a href="http://www.eclipse.org/modeling/emft/"&gt;EMFT&lt;/a&gt; by Greg Dupé of &lt;a href="http://www.mia-software.com/"&gt;Mia-Software&lt;/a&gt;, the co-leader of the project.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TJxeT2ULojI/AAAAAAAAAXg/r5wfRmggnQk/s320/emffacet-homepage.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5520390938340074034" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 202px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;With EMF Facet, it will be more easy to dynamically extend and customize a tool based on EMF.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The idea is to allow defining new attributes, new relations and new types in a non-intrusive way (you can read this &lt;a href="http://fmadiot.blogspot.com/2010/04/emf-facet-new-project-for-model.html"&gt;older post&lt;/a&gt; about EMF Facet).&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This mechanism has already been developped in the &lt;a href="http://www.eclipse.org/gmt/modisco/"&gt;MoDisco project&lt;/a&gt; (the Eclipse/Modeling project dedicated to Software Modernization). It is completed by a &lt;a href="http://wiki.eclipse.org/MoDisco/Components/QueryManager"&gt;QueryManager&lt;/a&gt; component which allow executing queries on a EMF model independently from the query technology (bridges for OCL, Java and XPath are already available). As it is independent from Software Modernization purposes, the corresponding code is going to move to this new EMF Facet project. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After some refactoring, it will be enriched with other components (such as customizable widgets to display extended EMF models). First version is planned to be ready in June 2011 for Indigo, the next Eclipse release.  Before this date, early versions will be available with intermediate &lt;a href="http://www.eclipse.org/projects/project-plan.php?projectid=eclipse#release_milestones"&gt;Indigo milestones&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To know more about this project, don't miss the talk &lt;a href="http://www.eclipsecon.org/summiteurope2010/sessions/?page=sessions&amp;amp;id=1758"&gt;EMF Facet: a Non-Intrusive Metamodel Extension Tooling&lt;/a&gt;, Thursday, the 4th of November during &lt;a href="http://www.eclipsecon.org/summiteurope2010/"&gt;Eclipse Summit Europe 2010&lt;/a&gt;, in Germany.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-3025782886434351393?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/3025782886434351393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/09/emf-facet-project-has-been-created.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/3025782886434351393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/3025782886434351393'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/09/emf-facet-project-has-been-created.html' title='EMF Facet project has been created'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3jpQTZO9cJ8/TJxeT2ULojI/AAAAAAAAAXg/r5wfRmggnQk/s72-c/emffacet-homepage.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-567876492952688033</id><published>2010-06-29T23:55:00.000-07:00</published><updated>2010-06-30T03:48:16.450-07:00</updated><title type='text'>Eclipse DemoCamp in Nantes</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://wiki.eclipse.org/images/8/89/Eclipse-camp.gif"&gt;&lt;/a&gt;An Eclipse DemoCamp will be organized in Nantes the 8th of July.&lt;div&gt;&lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Helios_2010/Nantes"&gt;http://wiki.eclipse.org/Eclipse_DemoCamps_Helios_2010/Nantes&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Helios_2010/Nantes"&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://wiki.eclipse.org/images/8/89/Eclipse-camp.gif"&gt;&lt;img src="http://wiki.eclipse.org/images/8/89/Eclipse-camp.gif" border="0" alt="" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 90px; height: 76px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is a good opportunity to discover what's new in &lt;b&gt;Helios&lt;/b&gt; and to meet teams directly involved in the development of the platform.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are the projects which will be highlighted:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- &lt;b&gt;Glassfish&lt;/b&gt;, the JEE Application Server&lt;/div&gt;&lt;div&gt;- &lt;b&gt;STP&lt;/b&gt;, the SOA Tools Platform&lt;/div&gt;&lt;div&gt;- &lt;b&gt;MoDisco&lt;/b&gt;, the Model-Driven Software Modernization platform&lt;/div&gt;&lt;div&gt;- &lt;b&gt;Acceleo&lt;/b&gt;, the Model-to-Text project&lt;/div&gt;&lt;div&gt;- &lt;b&gt;ATL&lt;/b&gt;, the Model-to-Model project&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Each project will be presented by one of their commiters (from SERLI, Mia-Software, Obeo and INRIA). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's free and only two hours from Paris!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-567876492952688033?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/567876492952688033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/06/eclipse-democamp-in-nantes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/567876492952688033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/567876492952688033'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/06/eclipse-democamp-in-nantes.html' title='Eclipse DemoCamp in Nantes'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-8726365874532252086</id><published>2010-06-24T09:32:00.000-07:00</published><updated>2010-06-24T15:10:29.484-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MoDisco'/><category scheme='http://www.blogger.com/atom/ns#' term='omg'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><category scheme='http://www.blogger.com/atom/ns#' term='helios'/><category scheme='http://www.blogger.com/atom/ns#' term='nasa'/><title type='text'>Getting feedback from adopters</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TCPUr55WY8I/AAAAAAAAAVc/ec-l3sO_ObE/s1600/open-browser.PNG"&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TCPL5ueaiCI/AAAAAAAAAVU/o4yNWk06yuo/s1600/DSCN6375.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TCPL5ueaiCI/AAAAAAAAAVU/o4yNWk06yuo/s320/DSCN6375.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5486452963655976994" /&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;The OMG Technical meeting at Minneapolis is over, I will come back to Nantes tomorrow.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;This kind of event is a very good opportunity to meet users of the tools we have developped for Eclipse. As anybody can download these tools, it is difficult to know precisely how they are used, and by who.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;For example, this week I discovered that Nicolas Rouquette from the NASA, was using the &lt;a href="http://wiki.eclipse.org/MoDisco/ModelBrowser"&gt;MoDisco Model Browser&lt;/a&gt; to inspect complex XML documents! This browser has not been developped for this purpose. But, as MoDisco comes with an automatic transformation of XML files into EMF models, you can load any XML file directly into the browser, and benefit from all its navigation, filtering and customization capabilities! &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Just click on an XML document, select the menu "Open with &gt; Other..." and pick the "MoDisco Model Browser".&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TCPUr55WY8I/AAAAAAAAAVc/ec-l3sO_ObE/s1600/open-browser.PNG"&gt;&lt;img src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TCPUr55WY8I/AAAAAAAAAVc/ec-l3sO_ObE/s320/open-browser.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5486462621808223170" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 262px; height: 320px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TCPL5ueaiCI/AAAAAAAAAVU/o4yNWk06yuo/s1600/DSCN6375.JPG"&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TCPL5ueaiCI/AAAAAAAAAVU/o4yNWk06yuo/s1600/DSCN6375.JPG"&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TCPL5ueaiCI/AAAAAAAAAVU/o4yNWk06yuo/s1600/DSCN6375.JPG"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;We really appreciate all these kinds of feedback: they are of great help while defining our roadmap :-))&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;If you have adopted (or are going to adopt) MoDisco , feel free to post your feedback (good or bad, it helps in both cases) on this blog, or on the &lt;a href="http://www.eclipse.org/forums/index.php?t=thread&amp;amp;frm_id=21&amp;amp;"&gt;MoDisco forum&lt;/a&gt; .&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Helios is out. Now, let's take the Indigo train! &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-8726365874532252086?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/8726365874532252086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/06/getting-feedback-from-adopters.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/8726365874532252086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/8726365874532252086'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/06/getting-feedback-from-adopters.html' title='Getting feedback from adopters'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3jpQTZO9cJ8/TCPL5ueaiCI/AAAAAAAAAVU/o4yNWk06yuo/s72-c/DSCN6375.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-6376464177607333965</id><published>2010-06-24T01:26:00.000-07:00</published><updated>2010-06-24T09:46:19.845-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='download'/><category scheme='http://www.blogger.com/atom/ns#' term='MoDisco'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='helios'/><title type='text'>How to install MoDisco with Helios?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TCKF-DAxk-I/AAAAAAAAAS8/LLtv0QEjO7E/s1600/eclipse-downloads.PNG"&gt;&lt;/a&gt;This year, for the Helios release, the &lt;b&gt;Modeling Package&lt;/b&gt; offers a very simple way to install the Modeling components.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The &lt;b&gt;Modeling Package&lt;/b&gt; is one of the Eclipse pre-packaged distributions available from the download page (&lt;a href="http://www.eclipse.org/downloads/"&gt;http://www.eclipse.org/downloads/&lt;/a&gt;).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TCKF-DAxk-I/AAAAAAAAAS8/LLtv0QEjO7E/s1600/eclipse-downloads.PNG"&gt;&lt;img src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TCKF-DAxk-I/AAAAAAAAAS8/LLtv0QEjO7E/s320/eclipse-downloads.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5486094597097624546" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 229px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once you have downloaded and launched this package, just click on the "Install Modeling Components" button from the toolbar.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TBNcSlJYbII/AAAAAAAAARs/BLi_D-dTEg8/s1600/install-modeling.PNG"&gt;&lt;img src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TBNcSlJYbII/AAAAAAAAARs/BLi_D-dTEg8/s320/install-modeling.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5481826645718887554" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 138px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This button opens a window displaying all the available Helios Modeling components. Select MoDisco and click on the Finish button.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TBNck5OBvSI/AAAAAAAAAR8/N5kTGhrstiQ/s1600/install-modisco.PNG"&gt;&lt;img src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TBNck5OBvSI/AAAAAAAAAR8/N5kTGhrstiQ/s320/install-modisco.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5481826960344726818" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 290px; height: 320px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A wizard appears to display all the MoDisco components which will be installed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TBNc3DuhQwI/AAAAAAAAASE/zz0WYF4C0Yw/s1600/install-modisco2.PNG"&gt;&lt;img src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TBNc3DuhQwI/AAAAAAAAASE/zz0WYF4C0Yw/s320/install-modisco2.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5481827272403010306" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 251px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Click on Next, then click on the "I accept the terms of the licence agreement" to finish the installation.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TBNdNIiA4cI/AAAAAAAAASM/zFO7LUJJ3V8/s1600/install-modisco3.PNG"&gt;&lt;img src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TBNdNIiA4cI/AAAAAAAAASM/zFO7LUJJ3V8/s320/install-modisco3.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5481827651649855938" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 251px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TBNc3DuhQwI/AAAAAAAAASE/zz0WYF4C0Yw/s1600/install-modisco2.PNG"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Restart Eclipse and it's done! You have now access to the features provided by MoDisco 0.8.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some of these features are directly available to manipulate or create EMF models, without having to write a line of code:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://fmadiot.blogspot.com/2010/05/modisco-is-ready-for-helios.html"&gt;Customizable model browser&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://fmadiot.blogspot.com/2010/01/how-to-create-emf-model-from-java.html"&gt;Reverse-engineering of Java source code into a Java model&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.eclipse.org/MoDisco/Components/XML/Documentation/0.8#XML_Discoverer"&gt;Reverse-engineering of XML files into XML models&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.eclipse.org/MoDisco/Components/KDM/Documentation/0.8#KDM_Source_Discoverer"&gt;Reverse-engineering of a structure of a project into a KDM-Source model&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.eclipse.org/MoDisco/Components/KDM/Documentation/0.8#KDM_to_UML_Converter"&gt;Transformation of KDM-Code models into UML2&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;In addition, as a platform for Software Modernization projects, MoDisco also provides a lot of components to help you in the development of model-driven reverse-engineering tools.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Enjoy!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-6376464177607333965?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/6376464177607333965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/06/how-to-install-modisco-with-helios.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/6376464177607333965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/6376464177607333965'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/06/how-to-install-modisco-with-helios.html' title='How to install MoDisco with Helios?'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3jpQTZO9cJ8/TCKF-DAxk-I/AAAAAAAAAS8/LLtv0QEjO7E/s72-c/eclipse-downloads.PNG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-2725630307805404556</id><published>2010-06-22T11:01:00.001-07:00</published><updated>2010-06-22T12:05:04.560-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MoDisco'/><category scheme='http://www.blogger.com/atom/ns#' term='omg'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><category scheme='http://www.blogger.com/atom/ns#' term='SMM'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='kdm'/><category scheme='http://www.blogger.com/atom/ns#' term='adm'/><title type='text'>Using EMF to control Eclipse plugins development rules</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TCECnQ6K4WI/AAAAAAAAAS0/oMS-zEIpuyg/s1600/kdmsource.PNG"&gt;&lt;/a&gt;&lt;div&gt;This week I am in Minneapolis to attend an OMG Technical Meeting. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TCD-DrsJK8I/AAAAAAAAASU/Tu20984GC9k/s1600/DSCN6409.JPG"&gt;&lt;img src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TCD-DrsJK8I/AAAAAAAAASU/Tu20984GC9k/s320/DSCN6409.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5485663685358201794" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 240px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Today I participated to the &lt;a href="http://www.omg.org/news/meetings/tc/mn/special-events/Eclipse.htm"&gt;2nd Eclipse &amp;amp; OMG Symposium&lt;/a&gt; where I talked about &lt;a href="http://www.eclipse.org/MoDisco/"&gt;MoDisco&lt;/a&gt; and how we support the specifications defined by &lt;a href="http://adm.omg.org/"&gt;ADM&lt;/a&gt;, the OMG task force working on Software Modernization. I presented an example where we use &lt;a href="http://wiki.eclipse.org/MoDisco/KDM"&gt;KDM&lt;/a&gt; (Knowledge Discovery Metamodel) and &lt;a href="http://wiki.eclipse.org/MoDisco/SMM"&gt;SMM&lt;/a&gt; (Structured Metrics Metamodel) to control the quality of Eclipse plugins.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We wanted to check automatically some rules which are mandatory by the yearly synchroneous release:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Version number ends with « qualifier »&lt;/li&gt;&lt;li&gt;Source code must use ICU4J classes&lt;/li&gt;&lt;li&gt;The project must contain an « about.html » file&lt;/li&gt;&lt;li&gt;Packages name should start with the plug-in Id&lt;/li&gt;&lt;li&gt;Plug-in must not contain JARs files&lt;/li&gt;&lt;li&gt;Plug-in should contain only one « message.properties » and « Message.java » files&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;We also wanted to check some rules that we had defined internally at Mia-Software:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;“PLUGIN_ID” variable of “Activator.java” should be initialized with the plug-in Id &lt;/li&gt;&lt;li&gt;Plug-in Id and Project name should be equal&lt;/li&gt;&lt;li&gt;«Bundle-Vendor» property value of « MANIFEST.MF » should be « %providerName »&lt;/li&gt;&lt;li&gt;« plugin.properties » should declare a « providerName » property&lt;/li&gt;&lt;li&gt;«Bundle-Name» property value of « MANIFEST.MF » should be « %pluginName »&lt;/li&gt;&lt;li&gt;« plugin.properties » should declare a « pluginName » property&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Of course, we could have implemented these rules by using the APIs provided by the plugins already provided by Eclipse (org.eclipse.core, org.eclipse.pde, org.eclipse.pde, etc). But all these APIs are not homogeneous, and it is not always easy to find the right API to use. That's why we decided to experiment an other approach.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Our idea is to use these APIs only to create EMF models of the plugin. Then, once the models are created, we can implement the rules by using only EMF APIs.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TCD_Y3z18JI/AAAAAAAAASc/U_jkeE-x6iE/s1600/eclipse-rules.PNG"&gt;&lt;img src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TCD_Y3z18JI/AAAAAAAAASc/U_jkeE-x6iE/s320/eclipse-rules.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5485665148900602002" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 200px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TCD-DrsJK8I/AAAAAAAAASU/Tu20984GC9k/s1600/DSCN6409.JPG"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;In our case, we have used MoDisco to create seven EMF models:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;A KDMSource model describing the organization of the plugin project (files and directories)&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;/span&gt;&lt;ul&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TCECnQ6K4WI/AAAAAAAAAS0/oMS-zEIpuyg/s1600/kdmsource.PNG"&gt;&lt;img src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TCECnQ6K4WI/AAAAAAAAAS0/oMS-zEIpuyg/s320/kdmsource.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5485668694691078498" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 218px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TCEAvAV9WKI/AAAAAAAAASs/ep8ftbUPBpc/s1600/problems-view.PNG"&gt;&lt;/a&gt;&lt;li&gt;A Java model describing the Java source code of the plugin&lt;/li&gt;&lt;li&gt;A Manifest model to describe the content of the MANIFEST.MF file&lt;/li&gt;&lt;li&gt;Two XML models to describe the content of the .project and .classpath files&lt;/li&gt;&lt;li&gt;Two KDMCode models to describe the content of the plugin.properties and the build.properties files&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;These models contain all the information required to check the rules listed below.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Rather than directly displaying the violations found in an Eclipse plug-in into the Eclipse Problems View, we use an SMM model to represent the result of the analysis. Then, we have developped a generic tool which displays each rule violation contained in this SMM model into the Eclipse Problems View.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TCEAvAV9WKI/AAAAAAAAASs/ep8ftbUPBpc/s1600/problems-view.PNG"&gt;&lt;img src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TCEAvAV9WKI/AAAAAAAAASs/ep8ftbUPBpc/s320/problems-view.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5485666628659927202" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 201px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TCEAYQpie2I/AAAAAAAAASk/lUQJudHlEgA/s1600/kdmsource.PNG"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TCD_Y3z18JI/AAAAAAAAASc/U_jkeE-x6iE/s1600/eclipse-rules.PNG"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;The benefit of this approach is that you just have to know EMF APIs to implement the rules, or use any EMF-compliant tool (such as OCL, ATL or QVT). Another benefit is that the result (the SMM model) is independent from how you want to deliver it to the user. Here we have injected the violations into the Eclipse Problem View, but we could have generated an Excel file or populated a tool such as Sonar.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have still some little things to improve in this plugin, and I'll try to to commit it this summer as a use-case in MoDisco.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Meanwhile, the complete presentation is available on slideshare.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="width:425px" id="__ss_4577521"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/fmadiot/modisco-eclipseomg-symp-2010" title="MoDisco Eclipse-OMG Symp 2010"&gt;MoDisco Eclipse-OMG Symp 2010&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse4577521" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=modiscoeclipse-omgsymp2010-100622135729-phpapp01&amp;amp;stripped_title=modisco-eclipseomg-symp-2010"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed name="__sse4577521" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=modiscoeclipse-omgsymp2010-100622135729-phpapp01&amp;amp;stripped_title=modisco-eclipseomg-symp-2010" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;script src="http://b.scorecardresearch.com/beacon.js?c1=7&amp;amp;c2=7400849&amp;amp;c3=1&amp;amp;c4=&amp;amp;c5=&amp;amp;c6="&gt;&lt;/script&gt;&lt;script src="http://b.scorecardresearch.com/beacon.js?c1=7&amp;amp;c2=7400849&amp;amp;c3=1&amp;amp;c4=&amp;amp;c5=&amp;amp;c6="&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-2725630307805404556?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/2725630307805404556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/06/using-emf-to-control-eclipse-plugins.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/2725630307805404556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/2725630307805404556'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/06/using-emf-to-control-eclipse-plugins.html' title='Using EMF to control Eclipse plugins development rules'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3jpQTZO9cJ8/TCD-DrsJK8I/AAAAAAAAASU/Tu20984GC9k/s72-c/DSCN6409.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-6640689574707717186</id><published>2010-06-03T08:20:00.001-07:00</published><updated>2010-06-03T08:48:38.364-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='modisco website'/><title type='text'>New MoDisco homepage</title><content type='html'>&lt;div&gt;The &lt;a href="http://www.eclipse.org/MoDisco/"&gt;MoDisco&lt;/a&gt; homepage is now based on &lt;a href="http://www.heikobehrens.net/category/oaw/"&gt;the new template provided by Heiko Behrens&lt;/a&gt; from XText team.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TAfIgz_-VBI/AAAAAAAAARk/Jb1Ra2puwMk/s1600/modisco-homepage.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TAfIgz_-VBI/AAAAAAAAARk/Jb1Ra2puwMk/s320/modisco-homepage.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5478567937759400978" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Some modifications have been done in the CSS to avoid the blinking effect on quick links. This CSS is available here : &lt;a href="http://www.eclipse.org/MoDisco/style.css"&gt;http://www.eclipse.org/MoDisco/style.css&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We still have to integrate a screencast, but it's already a good improvement. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Many thanks to Heiko !&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-6640689574707717186?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/6640689574707717186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/06/new-modisco-homepage.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/6640689574707717186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/6640689574707717186'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/06/new-modisco-homepage.html' title='New MoDisco homepage'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3jpQTZO9cJ8/TAfIgz_-VBI/AAAAAAAAARk/Jb1Ra2puwMk/s72-c/modisco-homepage.PNG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-8551076770874430371</id><published>2010-05-31T02:16:00.000-07:00</published><updated>2010-05-31T08:29:33.708-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MoDisco'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><category scheme='http://www.blogger.com/atom/ns#' term='helios'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>MoDisco is ready for Helios</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TAOv9tVN_vI/AAAAAAAAARI/cjHifF4SCe8/s1600/MoDisco_javaCodeAfterCreateJavaQueryWizard.png"&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://www.eclipse.org/MoDisco/"&gt;MoDisco&lt;/a&gt; 0.8 RC2 has been released last week. It contains all the features which will be shipped with the final Eclipse Helios release (available June 23, 2010).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are the main features added since &lt;a href="http://fmadiot.blogspot.com/2010/02/modisco-08m5-available-for-download.html"&gt;MoDisco 0.8 M5&lt;/a&gt;:&lt;/div&gt;&lt;div&gt;&lt;h4&gt;&lt;br /&gt;&lt;/h4&gt;&lt;h4&gt;Edition of models&lt;/h4&gt;&lt;/div&gt;&lt;div&gt;MoDisco provides a browser to inspect complex EMF models. Now it is possible to use the &lt;a href="http://wiki.eclipse.org/MoDisco/ModelBrowser"&gt;ModelBrowser&lt;/a&gt; to edit and modify the instances of the loaded EMF model:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Edit attributes through the Properties view&lt;/li&gt;&lt;li&gt;Create new children elements&lt;/li&gt;&lt;li&gt;Delete a model element (with all its references)&lt;/li&gt;&lt;li&gt;Cut/Copy/Paste a model element&lt;/li&gt;&lt;li&gt;Undo/Redo modifications&lt;/li&gt;&lt;li&gt;Save and Save As the model&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TAOrJD_fkYI/AAAAAAAAAQ4/kF60-y7VOg0/s1600/edition.PNG"&gt;&lt;img src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TAOrJD_fkYI/AAAAAAAAAQ4/kF60-y7VOg0/s320/edition.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5477409743991443842" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 239px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TAOqSv_rYkI/AAAAAAAAAQw/d8CvSiWiP3A/s1600/edition.PNG"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In addition, when the model is externally modified, the browser is automatically refreshed.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;h4&gt;&lt;br /&gt;&lt;/h4&gt;&lt;h4&gt;Collapse Link option&lt;/h4&gt;&lt;/div&gt;&lt;div&gt;One of the main differences between the MoDisco &lt;a href="http://wiki.eclipse.org/MoDisco/ModelBrowser"&gt;ModelBrowser&lt;/a&gt; and the default EMF Reflective Editor is the way the children elements are displayed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the Reflective Editor, all the children model elements are placed directly under the parent model element: you don't see how the children are connected to the parent.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TAOi6PvqylI/AAAAAAAAAQo/NCO6VOeFvxU/s1600/reflective.PNG"&gt;&lt;img src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TAOi6PvqylI/AAAAAAAAAQo/NCO6VOeFvxU/s320/reflective.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5477400693355235922" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 97px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TAOivd3OSbI/AAAAAAAAAQg/SVr8jZj3-YA/s1600/links.PNG"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;In the MoDisco ModelBrowser, the children are grouped under an intermediate node corresponding to the link defined in the metamodel.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TAOivd3OSbI/AAAAAAAAAQg/SVr8jZj3-YA/s1600/links.PNG"&gt;&lt;img src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TAOivd3OSbI/AAAAAAAAAQg/SVr8jZj3-YA/s320/links.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5477400508166457778" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 290px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TAOLFg6VFVI/AAAAAAAAAQY/kkA83xRqcfw/s1600/links.PNG"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;This feature is very useful when instances of the same type can be associated through several different links: you can know precisely how the children are connected to the parent.&lt;/div&gt;&lt;div&gt;But in some cases this option is not convenient (for example when each children of a given type can only been attached with one relation).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's why we have added a new option to the &lt;a href="http://wiki.eclipse.org/MoDisco/Components/ModelBrowser/Documentation/0.8#Customization"&gt;Customization&lt;/a&gt; model and corresponding editor: you can now collapse a link to hide this link in the browser and display the corresponding children directly under the parent.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TAOJ2Q_chGI/AAAAAAAAAQI/1cLXA54C8fQ/s1600/collapselink.png"&gt;&lt;img src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/TAOJ2Q_chGI/AAAAAAAAAQI/1cLXA54C8fQ/s320/collapselink.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5477373137179673698" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 194px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h4&gt;&lt;br /&gt;&lt;/h4&gt;&lt;h4&gt;Reusable Model TreeView&lt;/h4&gt;&lt;/div&gt;&lt;div&gt;The TreeView developped for the &lt;a href="http://wiki.eclipse.org/MoDisco/ModelBrowser"&gt;ModelBrowser&lt;/a&gt; is now compliant with &lt;a href="http://wiki.eclipse.org/index.php/Common_Navigator_Framework"&gt;CNF&lt;/a&gt; (Common Navigator Framework). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This TreeView displays the model elements properties and allows accessing to related objects by navigating through relations defined in the metamodel. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now this TreeView can be reused and integrated to any component compliant with CNF, and then benefit from the customization and extensibity mechanisms to dynamically configure which properties and relations are visible, add derived attributes and relations, and change how the model elements are displayed (label, color, icon, ...).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For example, the TreeView can easily be integrated into the Project Explorer to inspect the content of any EMF model:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TAOCZTa9gBI/AAAAAAAAAQA/mmoMsbHIps4/s1600/ProjectExplorerWithModelContents.png"&gt;&lt;img src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/TAOCZTa9gBI/AAAAAAAAAQA/mmoMsbHIps4/s320/ProjectExplorerWithModelContents.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5477364943034351634" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 240px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The TreeView has already been adopted by the Papyrus team to replace the default treeview in the Package Explorer.&lt;/div&gt;&lt;div&gt;&lt;h4&gt;&lt;br /&gt;&lt;/h4&gt;&lt;h4&gt;Java Model Query creation wizard&lt;/h4&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;MoDisco provides a &lt;a href="http://wiki.eclipse.org/MoDisco/Components/QueryManager"&gt;QueryManager&lt;/a&gt; to allow executing model queries independently of any technology. Drivers for Java, OCL and JXPath are provided to execute queries written with these technologies. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since MoDisco 0.8 M6, a wizard facilitates the creation of queries written in Java:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TAOvqjrCGRI/AAAAAAAAARA/rXgUJgpZUlw/s1600/MoDisco_createModelQueryWizard.png"&gt;&lt;img src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TAOvqjrCGRI/AAAAAAAAARA/rXgUJgpZUlw/s320/MoDisco_createModelQueryWizard.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5477414717477755154" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 294px; height: 320px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The wizard generates the corresponding Java class stub, with the correct imports and generic parameters instantiation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TAOv9tVN_vI/AAAAAAAAARI/cjHifF4SCe8/s1600/MoDisco_javaCodeAfterCreateJavaQueryWizard.png"&gt;&lt;img src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/TAOv9tVN_vI/AAAAAAAAARI/cjHifF4SCe8/s320/MoDisco_javaCodeAfterCreateJavaQueryWizard.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5477415046488129266" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 111px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/TAOvqjrCGRI/AAAAAAAAARA/rXgUJgpZUlw/s1600/MoDisco_createModelQueryWizard.png"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-8551076770874430371?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/8551076770874430371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/05/modisco-is-ready-for-helios.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/8551076770874430371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/8551076770874430371'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/05/modisco-is-ready-for-helios.html' title='MoDisco is ready for Helios'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3jpQTZO9cJ8/TAOrJD_fkYI/AAAAAAAAAQ4/kF60-y7VOg0/s72-c/edition.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-5849671550581582243</id><published>2010-04-26T05:33:00.000-07:00</published><updated>2010-04-27T04:55:36.341-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MoDisco'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='customization'/><category scheme='http://www.blogger.com/atom/ns#' term='facet'/><category scheme='http://www.blogger.com/atom/ns#' term='extensibility'/><title type='text'>EMF Facet, a new project for model customization and extensibility</title><content type='html'>&lt;div&gt;How to dynamically extend and combine existing Ecore definitions without having to modify them?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.eclipse.org/proposals/emf-facet/"&gt;EMF Facet&lt;/a&gt;, a new project we have proposed to create under &lt;a href="http://www.eclipse.org/modeling/emft/"&gt;EMFT&lt;/a&gt;, will propose dynamic extension mechanisms for all EMF-based tools exposing a view on a model:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Navigation tools (browser, navigator, etc);&lt;/li&gt;&lt;li&gt;Graphical modeling tools;&lt;/li&gt;&lt;li&gt;Code or documentation generation (M2T) tools;&lt;/li&gt;&lt;li&gt;Model-to-model transformation (M2M) tools.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt; &lt;p&gt;Our proposition provides a solution to introduce new viewpoints (or "facets") on existing models:&lt;/p&gt;&lt;ul&gt; &lt;li&gt;Extending an existing metamodel (Ecore model) in a non-intrusive way by  adding new types, attributes, operations and relations. New relations could be  used to compose several models by linking their elements.  &lt;/li&gt;&lt;li&gt;Computing an extension by executing queries against an existing model;  queries will be implemented by making use of existing query mechanisms (e.g.  considering Java, ATL, EMFQuery, Xpath, etc)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/S2hIGpQtO5I/AAAAAAAAAFc/fOCcLFiSx5U/s320/modisco_facet_subclassifiers.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5433672229414845330" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 214px; height: 320px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;i&gt;The Query "subClassifiers" visible as a "virtual" relation on Class&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;p&gt;Some of these mechanisms have already been developped in the &lt;a href="http://www.eclipse.org/gmt/modisco"&gt;MoDisco&lt;/a&gt; project. But, as they could be reused by tools not related to software modernization (the scope of the MoDisco project), we have decided to contribute the corresponding components to EMF Facet.&lt;/p&gt;&lt;div&gt;In a &lt;a href="http://fmadiot.blogspot.com/2010/02/modisco-08m5-available-for-download.html"&gt;previous post&lt;/a&gt;, I have presented these components (&lt;a href="http://wiki.eclipse.org/MoDisco/Components/FacetManager"&gt;Facet Manager&lt;/a&gt; and &lt;a href="http://wiki.eclipse.org/MoDisco/Components/QueryManager"&gt;Query Manager&lt;/a&gt;). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In &lt;a href="http://fmadiot.blogspot.com/2010/03/yesterday-i-presented-modisco-during.html"&gt;another post&lt;/a&gt;, I have also illustrated how Facets can be used to extend the Java metamodel to highlight &lt;b&gt;JUnit&lt;/b&gt; concepts.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-5849671550581582243?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/5849671550581582243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/04/emf-facet-new-project-for-model.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/5849671550581582243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/5849671550581582243'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/04/emf-facet-new-project-for-model.html' title='EMF Facet, a new project for model customization and extensibility'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3jpQTZO9cJ8/S2hIGpQtO5I/AAAAAAAAAFc/fOCcLFiSx5U/s72-c/modisco_facet_subclassifiers.PNG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-2296430421130547278</id><published>2010-04-21T23:47:00.000-07:00</published><updated>2010-04-21T14:47:43.835-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vb6'/><category scheme='http://www.blogger.com/atom/ns#' term='MoDisco'/><category scheme='http://www.blogger.com/atom/ns#' term='migration'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='jee'/><category scheme='http://www.blogger.com/atom/ns#' term='model'/><category scheme='http://www.blogger.com/atom/ns#' term='adm'/><category scheme='http://www.blogger.com/atom/ns#' term='mia-studio'/><category scheme='http://www.blogger.com/atom/ns#' term='mia-insight'/><title type='text'>Architecture-Driven Modernization Case-Studies</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/S89gtFVx-dI/AAAAAAAAAP0/4-gYRTGdwRo/s1600/amadeus1.PNG"&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/S8d6Jkr_1VI/AAAAAAAAAKc/9NqT_Grt3Y4/s1600/modisco2.PNG"&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/S8dw065F2xI/AAAAAAAAAKU/H66MeGf1QU8/s1600/is-transformation.PNG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 202px; height: 259px;" src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/S8dw065F2xI/AAAAAAAAAKU/H66MeGf1QU8/s320/is-transformation.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5460457127674239762" /&gt;&lt;/a&gt;William Ulrich and Philip Newcomb have recently published "&lt;b&gt;&lt;a href="http://www.systemtransformation.com/information_systems_transformati.htm"&gt;Information Systems Transformation, Architecture-Driven Modernization Case-Studies&lt;/a&gt;&lt;/b&gt;", a reference book on Software Modernization.&lt;br /&gt;&lt;br /&gt;This book has been written by two of the most active members of the &lt;a href="http://www.omg.org/adm/"&gt;Architecture-Driven Modernization task force&lt;/a&gt;, the OMG initiative which aims at defining standard specifications for the modernization of existing software systems. They first introduce Architecture-Driven Modernization technologies, standards and approaches. Then they have compiled ten detailled case-studies on real modernization projects on various business domains (bank, administration, tourism, air-trafic management, combat system) and technologies (COBOL, VB6, Powerbuilder, ...).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With Gabriel Barbier (&lt;a href="http://www.mia-software.com/"&gt;Mia-Software&lt;/a&gt;), Yves Lennon (&lt;a href="http://www.softmaint.com/"&gt;Sodifrance/SoftMaint&lt;/a&gt;) , &lt;a href="http://atlanmod.emn.fr/contrib/bruneliere"&gt;Hugo Brunelière&lt;/a&gt; and &lt;a href="http://atlanmod.emn.fr/contrib/jouault"&gt;Frédéric Jouault&lt;/a&gt; (&lt;a href="http://www.emn.fr/z-info/atlanmod/index.php/Main_Page"&gt;INRIA/AtlanMod&lt;/a&gt;) we have written one of these case-studies.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In this chapter we first describe the &lt;b&gt;modernization process and tools&lt;/b&gt; used by Sodifrance to migrate Software Systems. The approach has been imagined and protyped thanks to a collaboration established in 1993 bewteen Sodifrance and &lt;a href="http://atlanmod.emn.fr/contrib/bezivin"&gt;Jean Bezivin&lt;/a&gt;, from University of Nantes, who was working on the representation of existing software systems with a technology based on &lt;a href="http://books.google.fr/books?id=JhGJsGUGsrgC&amp;amp;pg=PA169&amp;amp;dq=sNets&amp;amp;ei=klXPS97MBqCszQTJoaHSAg&amp;amp;cd=2#v=onepage&amp;amp;q=sNets&amp;amp;f=false"&gt;sNets&lt;/a&gt;, a first generation of model engineering platform. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The sNets technology was immediately used by Sodifrance to develop a semantic discovery tool, named Semantor, to analyse any COBOL program and provide a fine-grained level of information about its internal structure and data. This tool is still evolving and has been renamed &lt;a href="http://www.mia-software.com/en/products/mia-insight/mia-mining/"&gt;Mia-Mining&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In parallel, at the end of 1998, based on the experience gained in the rebuilding of an insurance company’s contract management system, where modelling and tailored code-generators were successfully used, Sodifrance started developing its own model transformation technology. From this work, in association with Jean Bezivin who brought his knowledge about early work at OMG on MOF, was born &lt;a href="http://www.mia-software.com/produits/mia-studio/"&gt;Mia-Studio&lt;/a&gt;, a model transformation tool to develop and run model-to-model transformation rules and model-to-text generation templates.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With these tools, Sodifrance has progressively built a chain which can be used on architecture migration projects, to transform existing applications from client-server to n-tiers and SOA architectures.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;/span&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal; color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S89NN9mblTI/AAAAAAAAAPU/6tNmDUEA8MQ/s1600/process2.PNG"&gt;&lt;img src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S89NN9mblTI/AAAAAAAAAPU/6tNmDUEA8MQ/s320/process2.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5462669775293093170" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 180px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/S89NhZnKV2I/AAAAAAAAAPc/LyRKBXyr8IU/s1600/process.PNG"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;This chain is composed of three main steps: &lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li style="text-align: left;"&gt;Extraction of a comprehensive model (the initial model) of the existing application from its assets (source code, configuration files, development repositories, etc).&lt;/li&gt;&lt;li style="text-align: left;"&gt;Transformation of the model of the existing application into a comprehensive model of the target application (the target model).&lt;/li&gt;&lt;li style="text-align: left;"&gt;Generation of the source code of the target application from the model of the target application.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;To illustrate how this chain can be used, the chapter describes a project conducted by Sodifrance to &lt;b&gt;migrate an application from VB6 to JEE&lt;/b&gt; for &lt;a href="http://www.amadeus.com/hotels/hotels.html"&gt;Amadeus Hospitality&lt;/a&gt; the leader in IT solutions provided for the tourism and travel industry.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;The initial application, named RMS (Revenue Management System), was developed in VB6, and was performing queries on an Oracle database. It was composed of 300 screens, 200 of them displaying charts (pie charts, bar charts or line graphs). The VB6 code was composed of 306,000 source lines of code, VB6 code in 216 classes and 261 modules.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S89NN9mblTI/AAAAAAAAAPU/6tNmDUEA8MQ/s1600/process2.PNG"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/S89gtFVx-dI/AAAAAAAAAP0/4-gYRTGdwRo/s1600/amadeus1.PNG"&gt;&lt;img src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/S89gtFVx-dI/AAAAAAAAAP0/4-gYRTGdwRo/s320/amadeus1.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5462691200667613650" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 231px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The migration project was completed by Sodifrance in 1,600 man-days with ten engineers over a year. The transformation of all the VB6 code (access to data, business rules and interface) was 80% automated, while the definition of the screens (Forms) was only 50% automated, due to the necessity to redesign them for a web mode. The new version of RMS is now composed of about 300,000 lines of code in 1,000 Java classes and 310 Jsp (Java Server Pages).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/S89NqbbzyJI/AAAAAAAAAPk/dH22VCtkY_Y/s1600/amadeus.PNG"&gt;&lt;img src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/S89NqbbzyJI/AAAAAAAAAPk/dH22VCtkY_Y/s320/amadeus.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5462670264337942674" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 205px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the last part of the chapter, we present &lt;a href="http://www.eclipse.org/gmt/modisco/"&gt;MoDisco&lt;/a&gt;, the &lt;b&gt;Eclipse project dedicated to software modernization&lt;/b&gt;. This project has been created by AtlanMod during &lt;a href="http://www.modelplex.org/"&gt;Modelplex&lt;/a&gt;, a research project funded by the European Community.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Because of the widely different nature and technological heterogeneity of legacy systems, there are several different ways to extract models from such systems. MoDisco proposes a generic and extensible metamodel-driven approach to model discovery. A basic framework, including implementations of OMG  standards such as KDM or SMM, and a set of guidelines are provided to the Eclipse contributors to bring their own solutions to discover models in a variety of legacy systems.&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span"&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/S89N2WnkQzI/AAAAAAAAAPs/UuWo7CxKYrQ/s1600/modisco2.PNG"&gt;&lt;img src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/S89N2WnkQzI/AAAAAAAAAPs/UuWo7CxKYrQ/s320/modisco2.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5462670469203510066" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 137px; " /&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;One of the first industrial use cases using MoDisco has been the understanding of a Large Scale Data Intensive Geological system for &lt;a href="http://www.westerngeco.com/"&gt;WesternGeco&lt;/a&gt;, a geophysical services company&lt;/span&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/S89NqbbzyJI/AAAAAAAAAPk/dH22VCtkY_Y/s1600/amadeus.PNG"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-2296430421130547278?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/2296430421130547278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/04/architecture-driven-modernization-case.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/2296430421130547278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/2296430421130547278'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/04/architecture-driven-modernization-case.html' title='Architecture-Driven Modernization Case-Studies'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3jpQTZO9cJ8/S8dw065F2xI/AAAAAAAAAKU/H66MeGf1QU8/s72-c/is-transformation.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-2519057805089051240</id><published>2010-04-10T01:45:00.000-07:00</published><updated>2010-04-15T02:57:12.046-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='uml'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><category scheme='http://www.blogger.com/atom/ns#' term='mdsd'/><category scheme='http://www.blogger.com/atom/ns#' term='jee'/><category scheme='http://www.blogger.com/atom/ns#' term='model'/><category scheme='http://www.blogger.com/atom/ns#' term='magic-draw'/><category scheme='http://www.blogger.com/atom/ns#' term='mia-studio'/><title type='text'>JEE, Flex and MDSD in Tunis</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/S8bfNEfRumI/AAAAAAAAAKM/8JpgJr2cnSs/s1600/magic-draw.PNG"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/S8A7ZE80LEI/AAAAAAAAAJk/iAtSpFHNQCQ/s1600/DSCN6229.JPG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/S8A7ZE80LEI/AAAAAAAAAJk/iAtSpFHNQCQ/s400/DSCN6229.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5458428050384628802" /&gt;&lt;/a&gt;Last week I was in Tunis. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The weather was not as sunny as expected, but it was not the reason of my travel. I was there to setup a MDSD (Model-Driven Software Development) process for a tunisian bank.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This bank has planned to redevelop its Core Banking System with new technologies (JEE and Flex). In order to facilitate the development and provide both flexibility and quality to the future system, they have decided to adopt a Model-Driven approach. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My mission consists in helping the IT team to put this approach in place. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Developing a generator for a customer is an activity which I usually decompose in four steps:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S8QuYMzJ2WI/AAAAAAAAAJ8/HwJdHifAKBc/s1600/mdsd_process.PNG"&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S8QuYMzJ2WI/AAAAAAAAAJ8/HwJdHifAKBc/s400/mdsd_process.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5459539641567402338" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 55px; " /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S8QuYMzJ2WI/AAAAAAAAAJ8/HwJdHifAKBc/s1600/mdsd_process.PNG"&gt;&lt;/a&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S8QuYMzJ2WI/AAAAAAAAAJ8/HwJdHifAKBc/s1600/mdsd_process.PNG"&gt;&lt;/a&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S8QuYMzJ2WI/AAAAAAAAAJ8/HwJdHifAKBc/s1600/mdsd_process.PNG"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h4&gt;Development of a reference application&lt;/h4&gt;&lt;/div&gt;&lt;div&gt;In every industrialization process, the first step consists in identifying the scope of what can be beindustrialized. In a MDSD process, the better way to define this scope is to manually develop a reference application: a subset of the future application which contains examples of each coding patterns.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;During a first stay, few weeks ago, we had specified and started to develop a reference application based on a cash withdrawal scenario. Behind this scenario, we had defined several services to invoke, the corresponding business objects (BO) and data transfer objects (DTO), and the existing Oracle tables and stored procedures which have to be reused. Based on the languages and frameworks selected by the customer (Flex with the CairnGorm framework, JEE with the Spring and Hibernate frameworks), we had designed the reference application and defined the coding patterns to use.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This week, when I began my second stay, the customer had finished the development of the reference application, and it was running. &lt;/div&gt;&lt;br /&gt;&lt;h4&gt;Identification of the Generation Scope&lt;/h4&gt;&lt;br /&gt;&lt;div&gt;Once a reference application exists, the second step consists in analysing its source code to identify the variability factor of each line of code:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;What is the minimal information required to be able to produce this line of code?&lt;/li&gt;&lt;li&gt;Is this information specific to the reference application or generic ?&lt;/li&gt;&lt;li&gt;Can we produce other lines of code with the same information?&lt;/li&gt;&lt;li&gt;What is the ratio between the effort to declare this information and the effort to manually produce all the corresponding code?&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;The answers to these questions, coupled with a discussion with the customer, help defining the generation scope: &lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;which code can be produced automatically?&lt;/li&gt;&lt;li&gt;which code needs to be developped manually?&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;h4&gt;Definition of Modeling Rules&lt;/h4&gt;&lt;/div&gt;&lt;br /&gt;Once the generation scope is identified, then we need to define how the information required to generate the code can be defined within a model. There are three possibilities:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Defining a Profile in a UML Modeler&lt;/li&gt;&lt;li&gt;Developing a Domain-Specific Modeler&lt;/li&gt;&lt;li&gt;Developing a Domain-Specific Concrete Syntax&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;For my customer in Tunis, I have proposed the first option and defined a UML profile containing a first set of about 20 stereotypes (application, service, bo, vo, dao, table, ...). With this profile I used &lt;a href="http://www.magicdraw.com/"&gt;MagicDraw&lt;/a&gt; (which provides very powerful extensibility and customization mechanisms) integrated in Eclipse to create a model of the reference application.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/S8bfNEfRumI/AAAAAAAAAKM/8JpgJr2cnSs/s320/magic-draw.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5460297013869525602" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 230px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;h4&gt;Development of Generation Templates&lt;/h4&gt;&lt;div&gt;The fourth step is the easiest: templates can be developped from the reference application by copy/pasting fragments of code. The fragments parts which are generic remain in the templates, while variable parts are replaced by calls to the model (using EMF APIs).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Last week, it tooks me one day to develop the &lt;a href="http://www.mia-software.com/produits/mia-studio/plugins/plugin-eclipse/mia-generation/"&gt;Mia-Studio&lt;/a&gt; templates for the presentation layer. From the EMF model of the reference application, the templates have regenerated 6 MXML files and  19 ActionScript files (Commands, Events, Service Delegates, Front Controller, and Value Objects). The MXML files contain the graphical definition of the GUI: they will be generated only once, just to provide a first application which can be executed. Then they will be edited and maintained with a WYSIWYG designer.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S8bfM1YQ4DI/AAAAAAAAAKE/3Xy1tLwPAy4/s320/mia-studio.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5460297009813577778" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 230px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;The templates for the two other layers (Business and Data) will be developed with a colleague during a third stay in Tunis. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then our role in the project will be to assist the team in modeling and developing the first application and adapt the MDSD process to integrate the unforseen cases. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-2519057805089051240?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/2519057805089051240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/04/jee-flex-and-mdsd-in-tunis.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/2519057805089051240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/2519057805089051240'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/04/jee-flex-and-mdsd-in-tunis.html' title='JEE, Flex and MDSD in Tunis'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S8A7ZE80LEI/AAAAAAAAAJk/iAtSpFHNQCQ/s72-c/DSCN6229.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-1684938118552302019</id><published>2010-04-01T13:54:00.000-07:00</published><updated>2010-04-01T14:42:36.857-07:00</updated><title type='text'>Eclipse &amp; OMG Symposium</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://t2.gstatic.com/images?q=tbn:XrZaIxvZ2T7HcM:http://picocontainer.org/logging/images/eclipse-logo-white.jpg"&gt;&lt;/a&gt;After Ottawa in 2008, the &lt;a href="http://www.omg.org/news/meetings/tc/mn/special-events/Eclipse.htm"&gt;2nd biannual symposium on Eclipse &amp;amp; OMG&lt;/a&gt; will held in June at Minneapolis. This symposium will be introduced by Kenn Hussey, the leader of the &lt;a href="http://www.eclipse.org/modeling/mdt/"&gt;Eclipse MDT project&lt;/a&gt; which provides implementations and tools for standard metamodels. It is the opportunity to discuss about how OMG standards can be implemented on Eclipse, and how Eclipse can influence the definition of new standards.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://t2.gstatic.com/images?q=tbn:XrZaIxvZ2T7HcM:http://picocontainer.org/logging/images/eclipse-logo-white.jpg"&gt;&lt;img src="http://t2.gstatic.com/images?q=tbn:XrZaIxvZ2T7HcM:http://picocontainer.org/logging/images/eclipse-logo-white.jpg" border="0" alt="" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 117px; height: 68px; " /&gt;&lt;/a&gt;&lt;a href="http://www.omg.org/images/logos/omg-top-border.gif"&gt;&lt;img src="http://www.omg.org/images/logos/omg-top-border.gif" border="0" alt="" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 138px; height: 56px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With Hugo Bruneliere and &lt;a href="http://twitter.com/SoftModeling"&gt;Jordi Cabot&lt;/a&gt; of &lt;a href="http://www.emn.fr/z-info/atlanmod/index.php/Main_Page"&gt;INRIA/AtlanMod team&lt;/a&gt;, I will present the &lt;a href="http://wiki.eclipse.org/MoDisco/SMM"&gt;Eclipse implementation of SMM&lt;/a&gt; (Structured Metrics Metamodel), one of the OMG standards supported by the &lt;a href="http://www.eclipse.org/gmt/modisco/"&gt;MoDisco&lt;/a&gt; project. We will explain how this metamodel can be used to represent metrics computed from Java source code. And how it can help while developing Eclipse components, by measuring their compliance to Eclipse development best practices.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can read three of my posts on this topic :&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://fmadiot.blogspot.com/2009/11/emf-and-smm-to-export-code-metrics-to.html"&gt;Emf and SMM to export Code Metrics to Sonar and Squale&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://fmadiot.blogspot.com/2010/01/how-to-create-emf-model-from-java.html"&gt;How to create an EMF model from a Java application&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://fmadiot.blogspot.com/2010/03/yesterday-i-presented-modisco-during.html"&gt;Reverse-Engineering of JUnit Tests&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Talks on other standards will be given by people from University of Madrid, NASA (JPL), IBM, CEA, Model Driven Solutions, Ericsson, Intalio, RedHat, Obeo and Thales.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-1684938118552302019?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/1684938118552302019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/04/eclipse-omg-symposium.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/1684938118552302019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/1684938118552302019'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/04/eclipse-omg-symposium.html' title='Eclipse &amp; OMG Symposium'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-8606832419593400695</id><published>2010-03-27T11:18:00.000-07:00</published><updated>2010-03-27T13:38:14.676-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ecore'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipsecon'/><category scheme='http://www.blogger.com/atom/ns#' term='MoDisco'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><category scheme='http://www.blogger.com/atom/ns#' term='model'/><category scheme='http://www.blogger.com/atom/ns#' term='facet'/><category scheme='http://www.blogger.com/atom/ns#' term='b3'/><title type='text'>Back from EclipseCon 2010</title><content type='html'>I came back to home today, after one week at Santa-Clara, near San-Francisco,  attending my second &lt;a href="http://www.eclipsecon.org/2010/"&gt;EclipseCon&lt;/a&gt;.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/S65MjbbojZI/AAAAAAAAAJU/eKriJ54EdKs/s1600/2010-03-24_2.JPG"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e)  {}" href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/S65MjAC854I/AAAAAAAAAJM/Jvxv90LSt0o/s1600/2010-03-22_4.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/S65MjAC854I/AAAAAAAAAJM/Jvxv90LSt0o/s400/2010-03-22_4.JPG" alt="" id="BLOGGER_PHOTO_ID_5453380362983761794" border="0" /&gt;&lt;/a&gt;Last year, I only presented a poster. But this year I gave a talk about &lt;a href="http://www.eclipse.org/gmt/modisco/"&gt;MoDisco&lt;/a&gt; and I participated to the Modeling Project runway organized by Kenn Hussey. Gabriel Barbier, my colleague from Mia-Software, had also a talk with Henrik Lindberg about &lt;a href="http://www.eclipse.org/modeling/emft/b3/"&gt;B3&lt;/a&gt; and the possibility to use MoDisco to extract build information from source code .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/S65MjbbojZI/AAAAAAAAAJU/eKriJ54EdKs/s1600/2010-03-24_2.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/S65MjbbojZI/AAAAAAAAAJU/eKriJ54EdKs/s400/2010-03-24_2.JPG" alt="" id="BLOGGER_PHOTO_ID_5453380370335042962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Once again, I really enjoyed the conference and its organization: lots of interesting talks, very good keynotes (Steve Harris show was THE event of the week), but most of all it is the best way to share ideas, to meet people and to show what we  working on.&lt;br /&gt;&lt;br /&gt;This year, we spent a lot of time explaining a project we propose to create. The &lt;span style="font-weight: bold;"&gt;EMF Facet&lt;/span&gt; project will provide mechanisms to dynamically extend ECore models: adding properties, references, operations without changing the initial ECore model. These mechanisms have already been developped as part of the MoDisco project. We propose to externalize them to make them more reusable by other projects. We received very good feedback on this project from all the Modeling Project members to whom we presented our ideas and the existing components. We will first submit the proposal to the Modeling PMC next week.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-8606832419593400695?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/8606832419593400695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/03/back-from-eclipsecon-2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/8606832419593400695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/8606832419593400695'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/03/back-from-eclipsecon-2010.html' title='Back from EclipseCon 2010'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3jpQTZO9cJ8/S65MjAC854I/AAAAAAAAAJM/Jvxv90LSt0o/s72-c/2010-03-22_4.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-3583818280811597218</id><published>2010-03-23T22:58:00.001-07:00</published><updated>2010-06-29T23:50:56.668-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipsecon'/><category scheme='http://www.blogger.com/atom/ns#' term='MoDisco'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><category scheme='http://www.blogger.com/atom/ns#' term='junit'/><category scheme='http://www.blogger.com/atom/ns#' term='tests'/><title type='text'>Reverse-engineering of JUnit tests</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/S6qhSEjxEWI/AAAAAAAAAIE/Tt6KnE6c4vw/s1600/eclipsecon2010demo2.PNG"&gt;&lt;/a&gt;Tuesday I presented &lt;a href="http://www.eclipse.org/gmt/modisco"&gt;MoDisco&lt;/a&gt; during two EclipseCon sessions at Santa-Clara: &lt;div&gt;&lt;ul&gt;&lt;li&gt;the &lt;a href="http://www.eclipsecon.org/2010/sessions/sessions?id=1278"&gt;Eclipse Modeling Project Runway&lt;/a&gt;, a five minutes commented screencast with nine other modeling project committers&lt;/li&gt;&lt;li&gt;the talk &lt;a href="http://www.eclipsecon.org/2010/sessions/?page=sessions&amp;amp;id=1173"&gt;How to Deal With Your IT Legacy&lt;/a&gt; with Hugo Brunelière of INRIA-AtlanMod.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We decided this year to illustrate MoDisco with a example based on JUnit : &lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;reverse-engineering of source code containing JUnit tests (we took draw2d as a sample)&lt;/li&gt;&lt;li&gt;creation of a fine-grained EMF model describing the source code&lt;/li&gt;&lt;li&gt;definition of an extension (Facet) to find the JUnit Test suites, Test cases and Tests contained within the code&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/S6xcC1UPhyI/AAAAAAAAAIs/6yXACLn5kiQ/s1600/eclipsecon2010demo2.PNG"&gt;&lt;img src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/S6xcC1UPhyI/AAAAAAAAAIs/6yXACLn5kiQ/s320/eclipsecon2010demo2.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5452834452580304674" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 292px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/S6xcCSqCZwI/AAAAAAAAAIk/88K8uv-ifGg/s1600/eclipsecon2010demo1.PNG"&gt;&lt;img src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/S6xcCSqCZwI/AAAAAAAAAIk/88K8uv-ifGg/s320/eclipsecon2010demo1.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5452834443276478210" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 292px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;colorization (UICustom)  of the packages, classes and methods to be tested, depending on how many tests are defined for them&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/S6xcDw0BniI/AAAAAAAAAJE/Dw_LVL1FDXY/s1600/eclipsecon2010demo5.PNG"&gt;&lt;img src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/S6xcDw0BniI/AAAAAAAAAJE/Dw_LVL1FDXY/s320/eclipsecon2010demo5.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5452834468551302690" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 206px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S6xcDlzPAcI/AAAAAAAAAI8/IKBbVUzQNdA/s1600/eclipsecon2010demo4.PNG"&gt;&lt;img src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S6xcDlzPAcI/AAAAAAAAAI8/IKBbVUzQNdA/s320/eclipsecon2010demo4.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5452834465595195842" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 206px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S6xcDdyYOOI/AAAAAAAAAI0/dTHIYU_lbqg/s1600/eclipsecon2010demo3.PNG"&gt;&lt;img src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S6xcDdyYOOI/AAAAAAAAAI0/dTHIYU_lbqg/s320/eclipsecon2010demo3.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5452834463444121826" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 206px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;transformation of the EMF model and regeneration of the source code to migrate from JUnit3 to JUnit4&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;The slides are available &lt;a href="http://www.slideshare.net/fmadiot/modisco-eclipsecon2010"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I will blog soon to give more details about this JUnit use-case.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-3583818280811597218?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/3583818280811597218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/03/yesterday-i-presented-modisco-during.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/3583818280811597218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/3583818280811597218'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/03/yesterday-i-presented-modisco-during.html' title='Reverse-engineering of JUnit tests'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3jpQTZO9cJ8/S6xcC1UPhyI/AAAAAAAAAIs/6yXACLn5kiQ/s72-c/eclipsecon2010demo2.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-722629736975552395</id><published>2010-02-02T07:17:00.000-08:00</published><updated>2010-02-04T08:50:28.237-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OCL'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='MoDisco'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><category scheme='http://www.blogger.com/atom/ns#' term='model'/><title type='text'>MoDisco 0.8M5 available for download</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S2hiHamcgWI/AAAAAAAAAHM/g5P8dpHb6P0/s1600-h/modisco_query3.PNG"&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2hfsFjwoPI/AAAAAAAAAGU/T-7y4H3N7y4/s1600-h/modisco_query4.PNG"&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;Version &lt;b&gt;0.8M5&lt;/b&gt; of &lt;b&gt;&lt;a href="http://www.eclipse.org/gmt/modisco"&gt;MoDisco&lt;/a&gt;&lt;/b&gt;, has been released yesterday : &lt;a href="http://www.eclipse.org/gmt/modisco/downloads/"&gt;http://www.eclipse.org/gmt/modisco/downloads/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It already embeds the components which will be available in the final 0.8 version running with Helios. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Today I would like to focus on two new components (&lt;b&gt;Query Manager&lt;/b&gt; and &lt;b&gt;Facet Manager&lt;/b&gt;) and how they are used by the new version of the &lt;b&gt;Model Browser &lt;span class="Apple-style-span" style="font-weight: normal;"&gt;to&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt; allow defining custom (and dynamic) viewpoints on your EMF models.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;These mechanisms have been developped to support understanding of complex models automatically created from legacy source code. But you can also use it on "classic" EMF models created manually with graphical tool such as Papyrus.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Query Manager (new)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is a new component providing a facade to evaluate queries against an EMF model independently from the query mechanism. Implementations are provided to call queries written in Java, EMFQuery, OCL and XPath.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S2hgD1W2e4I/AAAAAAAAAGc/6HD2rYdfXqI/s1600-h/modisco_query4.PNG"&gt;&lt;img src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S2hgD1W2e4I/AAAAAAAAAGc/6HD2rYdfXqI/s320/modisco_query4.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5433698569401301890" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 244px; " /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;i&gt;A QuerySet containing OCL and Java queries&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;See : &lt;a href="http://wiki.eclipse.org/MoDisco/QueryManager"&gt;http://wiki.eclipse.org/MoDisco/Components/QueryManager&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Facet Manager (new)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This new component provides a mechanism to dynamically extend EMF model elements by adding "virtual" attributes and relations computed by queries.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;See : &lt;a href="http://wiki.eclipse.org/MoDisco/FacetManager"&gt;http://wiki.eclipse.org/MoDisco/Components/FacetManager&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;ModelBrowser &lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;The look &amp;amp; feel has been reviewed to be more compliant with Eclipse UI checklist.&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S2hhABWhPNI/AAAAAAAAAGs/X2l76vYkm2c/s1600-h/modisco_browser.png"&gt;&lt;img src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S2hhABWhPNI/AAAAAAAAAGs/X2l76vYkm2c/s320/modisco_browser.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5433699603413286098" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 197px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/S2hgjAyXJlI/AAAAAAAAAGk/fyxNK30H_zc/s1600-h/MoDiscoCustomizationEditor.png"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;With the new version it is possible to dynamically customize how the EMF model elements are displayed. Any customizable feature (label, color, icon, police, ...) can be set statically, or dynamically using a Query executed on each element to display.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/S2hhPB0OQLI/AAAAAAAAAG0/4plAXalfyNg/s1600-h/MoDiscoCustomizationEditor.png"&gt;&lt;img src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/S2hhPB0OQLI/AAAAAAAAAG0/4plAXalfyNg/s320/MoDiscoCustomizationEditor.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5433699861235908786" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 230px; " /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S2hhABWhPNI/AAAAAAAAAGs/X2l76vYkm2c/s1600-h/modisco_browser.png"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;i&gt;Wizard to customize the Browser for a given metamodel&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;You can also execute a Query against a model element directly from the browser&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/S2hh1a7xBkI/AAAAAAAAAG8/C3Ah595yc4k/s1600-h/modisco_query.PNG"&gt;&lt;img src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/S2hh1a7xBkI/AAAAAAAAAG8/C3Ah595yc4k/s320/modisco_query.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5433700520813463106" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 192px; " /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/S2hhPB0OQLI/AAAAAAAAAG0/4plAXalfyNg/s1600-h/MoDiscoCustomizationEditor.png"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;i&gt;Selection of a model element from the Browser&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2hh-1oJANI/AAAAAAAAAHE/a7PlLnROTj8/s1600-h/modisco_query2.PNG"&gt;&lt;img src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2hh-1oJANI/AAAAAAAAAHE/a7PlLnROTj8/s320/modisco_query2.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5433700682597728466" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 91px; " /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/S2hh1a7xBkI/AAAAAAAAAG8/C3Ah595yc4k/s1600-h/modisco_query.PNG"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;i&gt;Selection of Query to execute on the selected element&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S2hiHamcgWI/AAAAAAAAAHM/g5P8dpHb6P0/s1600-h/modisco_query3.PNG"&gt;&lt;img src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/S2hiHamcgWI/AAAAAAAAAHM/g5P8dpHb6P0/s320/modisco_query3.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5433700829961683298" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 59px; " /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2hh-1oJANI/AAAAAAAAAHE/a7PlLnROTj8/s1600-h/modisco_query2.PNG"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;i&gt;Result of the Query displayed in a table&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you want the Query to be always executed on each element of the same type, you can define a Facet to see the Query as a virtual type, attribute or relation in the browser.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/S2hIGpQtO5I/AAAAAAAAAFc/fOCcLFiSx5U/s320/modisco_facet_subclassifiers.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5433672229414845330" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 214px; height: 320px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;i&gt;The Query "subClassifiers" visible as a "virtual" relation on Class&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;See : &lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;a href="http://wiki.eclipse.org/MoDisco/ModelBrowser"&gt;http://wiki.eclipse.org/MoDisco/Components/ModelBrowser&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-722629736975552395?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/722629736975552395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/02/modisco-08m5-available-for-download.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/722629736975552395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/722629736975552395'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/02/modisco-08m5-available-for-download.html' title='MoDisco 0.8M5 available for download'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3jpQTZO9cJ8/S2hgD1W2e4I/AAAAAAAAAGc/6HD2rYdfXqI/s72-c/modisco_query4.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-6703552594150965238</id><published>2010-01-29T02:28:00.000-08:00</published><updated>2010-01-29T03:31:42.931-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reverse'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='MoDisco'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='model'/><category scheme='http://www.blogger.com/atom/ns#' term='refactoring'/><title type='text'>How to create an EMF model from a Java application ?</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2K9v0l39_I/AAAAAAAAADs/VzPJDnyVthM/s1600-h/java-discoverer.PNG"&gt;&lt;/a&gt;&lt;div&gt;Is it possible to reuse EMF-based tools with Java source code ? Yes if you have your Java source code translated into an EMF model.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is the aim of the &lt;a href="http://wiki.eclipse.org/MoDisco/Java"&gt;Java component&lt;/a&gt; provided by &lt;a href="http://www.eclipse.org/gmt/modisco/"&gt;MoDisco&lt;/a&gt;. This component is composed of a ECore definition of a java application and a discoverer which creates EMF models from an EClipse project containing Java source code.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The ECore definition declares all the concepts of the Java language : Package, ClassDeclaration, MethodDeclaration, Parameters, VariableDeclaration, IfStatement, Assignment, CastExpression, LineComment, ...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/S2K8t-FiqoI/AAAAAAAAADk/pMZT6hZfaFY/s1600-h/MoDisco-Java_metaclass_BodyDeclaration_and_its_hierarchy.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 144px;" src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/S2K8t-FiqoI/AAAAAAAAADk/pMZT6hZfaFY/s400/MoDisco-Java_metaclass_BodyDeclaration_and_its_hierarchy.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5432111598508616322" /&gt;&lt;/a&gt;To create an EMF model using this metamodel, select your project and right-click on the menu "MoDisco&gt;Discover Java model from Java project...". A wizard appears to select the analysis options :&lt;div&gt;&lt;ul&gt;&lt;li&gt;You can extend the analysis to dependencies (the JAR used by the project).&lt;/li&gt;&lt;li&gt;You can use an incremental mode if you need to optimize the memory usage&lt;/li&gt;&lt;li&gt;You can limit the analysis to declaration members if you don't need a model of the instructions contained within the methods&lt;/li&gt;&lt;li&gt;You can use a filter to exclude Java classes during the analysis&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;img src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2K9v0l39_I/AAAAAAAAADs/VzPJDnyVthM/s400/java-discoverer.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5432112729831241714" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 370px; height: 400px; " /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;The result is an EMF model which can be opened with the EMF reflexive editor or with the &lt;a href="http://wiki.eclipse.org/MoDisco/ModelBrowser"&gt;MoDisco generic browser&lt;/a&gt;. This browser allows accessing directly to instances of a specific class (for example all the MethodDeclarations) and navigating through all the references (composed or not).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/S2K4k5epCTI/AAAAAAAAADE/DZIqVl9pI9s/s1600-h/java-browser.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 317px;" src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/S2K4k5epCTI/AAAAAAAAADE/DZIqVl9pI9s/s400/java-browser.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5432107044606380338" /&gt;&lt;/a&gt;This model can be used with other EMF-based tools to check architectural or coding norms, to generate other models (UML or Domain-Specific) or to regenerate an other application (if you modify the Java model, MoDisco provides templates to regenerate Java source code).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-6703552594150965238?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/6703552594150965238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2010/01/how-to-create-emf-model-from-java.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/6703552594150965238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/6703552594150965238'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2010/01/how-to-create-emf-model-from-java.html' title='How to create an EMF model from a Java application ?'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3jpQTZO9cJ8/S2K8t-FiqoI/AAAAAAAAADk/pMZT6hZfaFY/s72-c/MoDisco-Java_metaclass_BodyDeclaration_and_its_hierarchy.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-214166838967455622</id><published>2009-11-30T01:21:00.000-08:00</published><updated>2009-12-01T07:00:52.956-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quality'/><category scheme='http://www.blogger.com/atom/ns#' term='squale'/><category scheme='http://www.blogger.com/atom/ns#' term='sonar'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><category scheme='http://www.blogger.com/atom/ns#' term='SMM'/><category scheme='http://www.blogger.com/atom/ns#' term='generation'/><category scheme='http://www.blogger.com/atom/ns#' term='mia-insight'/><title type='text'>EMF and SMM to export code metrics to Sonar and Squale</title><content type='html'>How to facilitate the integration between code quality measurement tools and code quality reporting tools ?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/SxTw6n3f7hI/AAAAAAAAACA/ykdaWsH4IqM/s1600/smm2.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 153px;" src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/SxTw6n3f7hI/AAAAAAAAACA/ykdaWsH4IqM/s400/smm2.PNG" alt="" id="BLOGGER_PHOTO_ID_5410213942303649298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is the problem we are faced with at &lt;a href="http://www.mia-software.com"&gt;Mia-Software&lt;/a&gt;: to address modernization projects, we have developped a lot of parsers creating models of code from which we can compute quality metrics (from COBOL, Natural or VB6 to Smalltalk, C# or Java). But as our customers are interested in getting these metrics in the quality report tool of their choice, we don't want to multiply the development of adhoc bridges (one for each couple "metrics calculator" &lt;-&gt; "report tool")&lt;br /&gt;&lt;br /&gt;To reduce the cost of bridging the tools, we chose &lt;a href="http://www.omg.org/spec/SMM/"&gt;SMM&lt;/a&gt; (Structured Metrics Metamodel) as a pivot. SMM is the &lt;a href="http://adm.omg.org/"&gt;OMG/ADM&lt;/a&gt; standard for defining metrics related to software and for representing their measurement on existing systems. Its reference EMF implementation can be found in &lt;a href="http://www.eclipse.org/gmt/modisco/"&gt;MoDisco&lt;/a&gt;, the Eclipse Modeling project focused on discovering models from software assets.&lt;br /&gt;&lt;br /&gt;The main classes defined by &lt;a href="http://www.omg.org/spec/SMM/"&gt;SMM&lt;/a&gt; are quite simple :&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Measure&lt;/span&gt; : the definition of an indicator (nb lines of code, cyclomatic complexity, …)&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Scope&lt;/span&gt; : the kind of elements on which the indicator can be measured&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Measurand&lt;/span&gt; : an element on which an indicator has been measured&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Measurement&lt;/span&gt; : the measured value of an indicator&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Observation&lt;/span&gt; : who ? how ? when ?&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3jpQTZO9cJ8/SxT4rMKFH3I/AAAAAAAAACI/UhrHgjsZn_Q/s1600/smm3.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 353px; height: 400px;" src="http://4.bp.blogspot.com/_3jpQTZO9cJ8/SxT4rMKFH3I/AAAAAAAAACI/UhrHgjsZn_Q/s400/smm3.PNG" alt="" id="BLOGGER_PHOTO_ID_5410222473260375922" border="0" /&gt;&lt;/a&gt;Then, for each measurement tool that we need to integrate with a report tool, we just have to create a &lt;a href="http://www.omg.org/spec/SMM/"&gt;SMM&lt;/a&gt; model describing the kind of metrics to exchange (instances of Measure and Scope) and a connector to translate the specific export format of the measurement tool to a &lt;a href="http://www.omg.org/spec/SMM/"&gt;SMM&lt;/a&gt; model containing the measured values (instances of Measurement, Measurand and Scope).&lt;br /&gt;&lt;br /&gt;In parallel, we create one generator for each report tool to integrate with. This generator takes the &lt;a href="http://www.omg.org/spec/SMM/"&gt;SMM&lt;/a&gt; model defining the measures and generates :&lt;br /&gt;&lt;br /&gt;   • the files declaring the metrics within the report tool&lt;br /&gt;   • the files configuring the report tool to integrate the new kind of metrics&lt;br /&gt;   • the source code of the component which will import &lt;a href="http://www.omg.org/spec/SMM/"&gt;SMM&lt;/a&gt; models containing the measurements&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/SxTuT8EB9RI/AAAAAAAAAB4/j14VONyikXc/s1600/smm1.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 213px;" src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/SxTuT8EB9RI/AAAAAAAAAB4/j14VONyikXc/s400/smm1.PNG" alt="" id="BLOGGER_PHOTO_ID_5410211078686766354" border="0" /&gt;&lt;/a&gt;At this time we have experimented this approach to import COBOL and VB6 metrics (calculated by &lt;a href="http://www.mia-software.com/en/products/mia-insight/"&gt;Mia-Insight&lt;/a&gt;) into the quality report tools &lt;a href="http://sonar.codehaus.org/"&gt;Sonar&lt;/a&gt; and &lt;a href="http://www.squale.org/"&gt;Squale&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Screenshots : COBOL -&gt; Sonar&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/SxUaFR6c8kI/AAAAAAAAACQ/vXA7KlN32KQ/s1600/sonar1.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 120px; height: 90px;" src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/SxUaFR6c8kI/AAAAAAAAACQ/vXA7KlN32KQ/s200/sonar1.PNG" alt="" id="BLOGGER_PHOTO_ID_5410259205365756482" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/SxUaQ3PnfAI/AAAAAAAAACY/u_V5-IDTBYU/s1600/sonar2.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 120px; height: 90px;" src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/SxUaQ3PnfAI/AAAAAAAAACY/u_V5-IDTBYU/s200/sonar2.PNG" alt="" id="BLOGGER_PHOTO_ID_5410259404365200386" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/SxUajw9IIDI/AAAAAAAAACg/hHscCe_lavY/s1600/sonar3.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 120px; height: 90px;" src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/SxUajw9IIDI/AAAAAAAAACg/hHscCe_lavY/s200/sonar3.PNG" alt="" id="BLOGGER_PHOTO_ID_5410259729094549554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Screenshots : COBOL -&gt; Squale&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/SxUa4zk4xiI/AAAAAAAAAC4/-0rM8x3fudE/s1600/squale3.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 119px; height: 87px;" src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/SxUa4zk4xiI/AAAAAAAAAC4/-0rM8x3fudE/s200/squale3.PNG" alt="" id="BLOGGER_PHOTO_ID_5410260090575439394" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3jpQTZO9cJ8/SxUa1BsunaI/AAAAAAAAACw/WEfB5INIneA/s1600/squale2.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 120px; height: 85px;" src="http://2.bp.blogspot.com/_3jpQTZO9cJ8/SxUa1BsunaI/AAAAAAAAACw/WEfB5INIneA/s200/squale2.PNG" alt="" id="BLOGGER_PHOTO_ID_5410260025646947746" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/SxUaw-nE4qI/AAAAAAAAACo/UVyT8Dh2_eE/s1600/squale1.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 120px; height: 86px;" src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/SxUaw-nE4qI/AAAAAAAAACo/UVyT8Dh2_eE/s200/squale1.PNG" alt="" id="BLOGGER_PHOTO_ID_5410259956098458274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Our conclusion is that &lt;a href="http://www.omg.org/spec/SMM/"&gt;SMM&lt;/a&gt; fits the need of integration between these kind of tools.&lt;br /&gt;&lt;br /&gt;The next step will be the integration of &lt;a href="http://xradar.sourceforge.net/"&gt;XRadar&lt;/a&gt; (suggestions of other report tools are welcome ;-) ).&lt;br /&gt;&lt;br /&gt;We also have to solve the problem of metrics aggregation. There are three possibilities :&lt;br /&gt;- aggregation at measurement time&lt;br /&gt;- aggregation in SMM model&lt;br /&gt;- aggregation in report tool&lt;br /&gt;We have already identified pros and cons for each alternative. Depending on the kind of aggregation to perform, experimentation will probabely give an answer !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-214166838967455622?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/214166838967455622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2009/11/emf-and-smm-to-export-code-metrics-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/214166838967455622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/214166838967455622'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2009/11/emf-and-smm-to-export-code-metrics-to.html' title='EMF and SMM to export code metrics to Sonar and Squale'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3jpQTZO9cJ8/SxTw6n3f7hI/AAAAAAAAACA/ykdaWsH4IqM/s72-c/smm2.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3294520508206749272.post-8574782048067243209</id><published>2009-10-31T05:41:00.001-07:00</published><updated>2009-11-03T01:36:22.902-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ecore'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='MoDisco'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='EMF'/><category scheme='http://www.blogger.com/atom/ns#' term='metamodel'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='model'/><category scheme='http://www.blogger.com/atom/ns#' term='modeling'/><title type='text'>Eclipse Summit Europe 2009</title><content type='html'>This year was my first attending ESE, and it was worth it !&lt;br /&gt;&lt;br /&gt;The talks on modeling were very interesting (Xtext, EMFQuery, Papyrus, ...) and it was nice to meet the guys directly involved in the projects we are interested in.&lt;br /&gt;&lt;br /&gt;The Cloudsmith team, for example, to discuss how we could use &lt;a href="http://www.eclipse.org/gmt/modisco/"&gt;MoDisco&lt;/a&gt; on the &lt;a href="http://www.eclipse.org/proposals/b3/"&gt;B3&lt;/a&gt; project to analyse plugins and create models of builds. Or André &lt;span&gt;&lt;span class="label fullname"&gt;Dietisheim&lt;/span&gt;&lt;/span&gt; about our tests with &lt;a href="http://www.eclipse.org/modeling/emf/?project=cdo"&gt;CDO&lt;/a&gt; to manage models of large Java applications created with MoDisco. Nice also to talk with Kenn, Ed, Ralph and many others.&lt;br /&gt;&lt;br /&gt;I had the chance to talk during both the &lt;a href="http://ed-merks.blogspot.com/2009/10/eclipse-summit-europe-2009-tutorials.html"&gt;Modeling Symposium&lt;/a&gt; (Tuesday) and a &lt;a href="http://www.eclipsecon.org/summiteurope2009/sessions?id=886"&gt;session&lt;/a&gt; dedicated to MoDisco (Thursday).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3jpQTZO9cJ8/SuybO_6bXuI/AAAAAAAAAAU/6RudBpCGTTU/s1600-h/MoDisco-ShortTalk2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_3jpQTZO9cJ8/SuybO_6bXuI/AAAAAAAAAAU/6RudBpCGTTU/s320/MoDisco-ShortTalk2.JPG" alt="" id="BLOGGER_PHOTO_ID_5398860735287353058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;With my colleague Gabriel Barbier of Mia-Software, who presented the demo Thursday, we shown how to create fine-grained models from Java source code (based on a Java.ecore metamodel), and how to navigate through this model with the model browser we have developped. We put the focus on the customization and the extensibility of this browser by using queries.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/Su1fVHDPHtI/AAAAAAAAAAc/-5bto7xd0I4/s1600-h/modisco-ese2009.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 257px; height: 320px;" src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/Su1fVHDPHtI/AAAAAAAAAAc/-5bto7xd0I4/s320/modisco-ese2009.PNG" alt="" id="BLOGGER_PHOTO_ID_5399076344561606354" border="0" /&gt;&lt;/a&gt;You can dynamically change the icon, color, font ... of the instances of your models (by defining a UICustomization, stored in a EMF model), or add "virtual" types (not originally defined in your Ecore metamodel) with "virtual" properties and references (by defining a RoleSet, also stored in a EMF model). The query mechanism that we provide is generic : it allows integrating queries written in Java, EMFQuery, OCL, XPath or ATL.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3jpQTZO9cJ8/SuybA-zZbGI/AAAAAAAAAAM/lNEN6MVtHcA/s1600-h/MoDisco-ShortTalk1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_3jpQTZO9cJ8/SuybA-zZbGI/AAAAAAAAAAM/lNEN6MVtHcA/s320/MoDisco-ShortTalk1.JPG" alt="" id="BLOGGER_PHOTO_ID_5398860494471261282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;We presented the 0.8 version which is still under development (planned for the end of 2009). But thanks to Nicolas Bros who have put the releng in place, it is possible to download an &lt;a href="http://www.eclipse.org/gmt/modisco/downloads/"&gt;integration build&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The demos are online :&lt;br /&gt;- &lt;a href="http://www.eclipse.org/gmt/modisco/doc/MoDisco-ESE2009-Symposium/demo.htm"&gt;Demo during the Modeling Symposium&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.eclipse.org/gmt/modisco/doc/MoDisco-ESE2009-Talk/Short_talk_demo-20091028-0003.htm"&gt;Demo during the MoDisco short talk&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3294520508206749272-8574782048067243209?l=fmadiot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fmadiot.blogspot.com/feeds/8574782048067243209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fmadiot.blogspot.com/2009/10/test.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/8574782048067243209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3294520508206749272/posts/default/8574782048067243209'/><link rel='alternate' type='text/html' href='http://fmadiot.blogspot.com/2009/10/test.html' title='Eclipse Summit Europe 2009'/><author><name>Fred Madiot</name><uri>http://www.blogger.com/profile/11419643764598868613</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_3jpQTZO9cJ8/S2qSCQNJ_SI/AAAAAAAAAHY/wmXw32wKcho/S220/portrait2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3jpQTZO9cJ8/SuybO_6bXuI/AAAAAAAAAAU/6RudBpCGTTU/s72-c/MoDisco-ShortTalk2.JPG' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
