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

<channel>
	<title>MDA, MDSD, MDE, MDWhatever!</title>
	<atom:link href="http://mdwhatever.free.fr/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://mdwhatever.free.fr</link>
	<description>About model driven engineering</description>
	<lastBuildDate>Mon, 12 Mar 2012 19:56:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Eclipsecon 2012 : see you there!</title>
		<link>http://mdwhatever.free.fr/index.php/2011/12/eclipsecon-2012-see-you-there/</link>
		<comments>http://mdwhatever.free.fr/index.php/2011/12/eclipsecon-2012-see-you-there/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 17:01:24 +0000</pubDate>
		<dc:creator>xavier</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://mdwhatever.free.fr/?p=253</guid>
		<description><![CDATA[After my previous blog post and with the help (and motivation) of Mickael Istria (https://twitter.com/#!/mickaelistria and http://mickaelistria.wordpress.com/) we will share our feedback about continuous code improvement when developing eclipse based solutions. This talk will involve some tools and SAAS providers such as : Maven/Tycho: to build your app Jacoco: to instrument your code in order]]></description>
			<content:encoded><![CDATA[<p>After my previous blog post and with the help (and motivation) of Mickael Istria (<a href="https://twitter.com/#!/mickaelistria">https://twitter.com/#!/mickaelistria</a> and <a href="http://mickaelistria.wordpress.com/">http://mickaelistria.wordpress.com/</a>) we will share our feedback about continuous code improvement when developing eclipse based solutions.<br />
This talk will involve some tools and SAAS providers such as :</p>
<ul>
<li><a href="http://eclipse.org/tycho/">Maven/Tycho</a>: to build your app</li>
<li><a href="http://www.eclemma.org/jacoco/">Jacoco</a>: to instrument your code in order to gather code coverage</li>
<li><a href="http://www.sonarsource.org/">Sonar</a>: to gather some metrics such as code coverage, it coverage, code conventions, complexity, and so on&#8230;</li>
<li><a href="http://www.cloudbees.com/dev.cb">Cloudbees Dev@cloud</a> SAAS platform : for continuous integration and deployement</li>
</ul>
<p>You can find the abstract of our incoming talk there : <a href="http://www.eclipsecon.org/2012/sessions/get-ready-fight-your-technical-debt-tycho-sonar-and-jacoco">http://www.eclipsecon.org/2012/sessions/get-ready-fight-your-technical-debt-tycho-sonar-and-jacoco</a></p>
<p>So get ready to fight the technical debt and see you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://mdwhatever.free.fr/index.php/2011/12/eclipsecon-2012-see-you-there/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quality analysis on Eclipse plugins with Tycho, Sonar, Jacoco and SWTBot</title>
		<link>http://mdwhatever.free.fr/index.php/2011/09/quality-analysis-on-eclipse-plugins-with-tycho-sonar-jacoco-and-swtbot/</link>
		<comments>http://mdwhatever.free.fr/index.php/2011/09/quality-analysis-on-eclipse-plugins-with-tycho-sonar-jacoco-and-swtbot/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 13:25:45 +0000</pubDate>
		<dc:creator>xavier</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Intégration continue]]></category>

		<guid isPermaLink="false">http://mdwhatever.free.fr/?p=209</guid>
		<description><![CDATA[Building tools brings a lot more that compilation. You can go much further. For instance, have a look at maven : there&#8217;s a plugin for almost everything (Here, here, and here). And with the rise of Tycho, you can bring all the power of maven to build OSGI/Eclipse based projects. Let&#8217;s see how to leverage]]></description>
			<content:encoded><![CDATA[<p>Building tools brings a lot more that compilation. You can go much further.</p>
<p>For instance, have a look at maven : there&#8217;s a plugin for almost everything (<a title="Here" href="http://maven.apache.org/plugins/index.html" target="_blank">Here</a>, <a title="here" href="http://mojo.codehaus.org/plugins.html" target="_blank">here</a>, <a title="and here" href="http://code.google.com/hosting/search?q=maven+plugin+label%3Amaven&amp;projectsearch=Search+Projects" target="_blank">and here</a>). And with the rise of <a href="http://www.eclipse.org/tycho/" target="_blank">Tycho</a>, you can bring all the power of maven to build OSGI/Eclipse based projects.</p>
<p>Let&#8217;s see how to leverage the use of <a href="http://www.sonarsource.org/" target="_blank">Sonar</a> (a great open source quality analysis tool) to deal with the QA of your project.<br />
<span id="more-209"></span></p>
<h2><span style="line-height: 28px;">Install the Jacoco plugin for Sonar</span></h2>
<p>I assume you have a running instance of Sonar. (If not, have a look here : <a href="http://docs.codehaus.org/display/SONAR/Install+Sonar" target="_blank">Install Sonar</a>).</p>
<p>Since Eclipse convention is to separate plugin and test in two separate projects (in order to not pollute plugin dependencies with test dependencies), &#8220;traditional&#8221; code coverage tools (such as Cobertura) won&#8217;t be able instrument Eclipse plugin classes because test classes are not in their classpath.</p>
<p><a href="http://www.eclemma.org/jacoco/trunk/index.html" target="_blank">Jacoco</a> adopts &#8220;on the fly instrumentation&#8221; by the means of a JavaAgent (<a href="http://www.eclemma.org/jacoco/trunk/doc/implementation.html" target="_blank">http://www.eclemma.org/jacoco/trunk/doc/implementation.html</a>), this enables the ability to maintain plugin code and test code in separated project : that just what we need in our case! Great!</p>
<p>So to install Jacoco plugin just follow that guide : <a href="http://docs.codehaus.org/display/SONAR/JaCoCo+Plugin" target="_blank">http://docs.codehaus.org/display/SONAR/JaCoCo+Plugin</a>.</p>
<p>Now we are ready to configure our Tycho build.</p>
<h2>Tycho build</h2>
<p>I assume you have a running tycho build. So you just need to add the following section in the <strong>pluginManagement</strong> section of the parent pom :</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!-- Testing --&gt;
&lt;plugin&gt;
   &lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
   &lt;artifactId&gt;tycho-surefire-plugin&lt;/artifactId&gt;
   &lt;version&gt;${tycho.version}&lt;/version&gt;
   &lt;configuration&gt;
      &lt;useUIHarness&gt;false&lt;/useUIHarness&gt;
      &lt;includes&gt;
         &lt;include&gt;**/*Test.java&lt;/include&gt;
      &lt;/includes&gt;
      &lt;!-- Kill test JVM if tests take more than 10 minutes (600 seconds) to finish --&gt;
      &lt;forkedProcessTimeoutInSeconds&gt;600&lt;/forkedProcessTimeoutInSeconds&gt;
   &lt;/configuration&gt;
&lt;/plugin&gt;
</pre>
<p>And then provide the following profile :</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!-- This profile is used to gather code coverage for Sonar --&gt;
&lt;profile&gt;
  &lt;id&gt;codeCoverage&lt;/id&gt;
  &lt;properties&gt;
    &lt;!-- Properties to enable jacoco code coverage analysis --&gt;
    &lt;sonar.core.codeCoveragePlugin&gt;jacoco&lt;/sonar.core.codeCoveragePlugin&gt;
    &lt;sonar.dynamicAnalysis&gt;reuseReports&lt;/sonar.dynamicAnalysis&gt;
    &lt;sonar.jacoco.reportPath&gt;../org.demo.camp.nantes.parent/target/jacoco.exec&lt;/sonar.jacoco.reportPath&gt;
  &lt;/properties&gt;

  &lt;build&gt;
    &lt;plugins&gt;
      &lt;!-- Enabling use of jacoco --&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;org.jacoco&lt;/groupId&gt;
        &lt;artifactId&gt;jacoco-maven-plugin&lt;/artifactId&gt;
        &lt;version&gt;0.5.3.201107060350&lt;/version&gt;
        &lt;executions&gt;
          &lt;execution&gt;
            &lt;goals&gt;
              &lt;goal&gt;prepare-agent&lt;/goal&gt;
            &lt;/goals&gt;
            &lt;configuration&gt;
              &lt;!-- Where to put jacoco coverage report --&gt;
              &lt;destFile&gt;${sonar.jacoco.reportPath}&lt;/destFile&gt;
            &lt;/configuration&gt;
          &lt;/execution&gt;
        &lt;/executions&gt;
      &lt;/plugin&gt;
    &lt;/plugins&gt;
  &lt;/build&gt;
&lt;/profile&gt;
</pre>
<p>And that&#8217;s all for the parent pom configuration.</p>
<p>For unit testing you do not need to do more that providing the right packaging :</p>
<pre class="brush: xml; title: ; notranslate">
&lt;packaging&gt;eclipse-test-plugin&lt;/packaging&gt;
</pre>
<p>But for UI testing with <a href="http://www.eclipse.org/swtbot/" target="_blank">SWTBot</a>, you need some more configuration.</p>
<h2>Tycho configuration for UI testing project with SWTBot</h2>
<p>In order to execute your UI tests, you need to specify which product/application you need to start. Basically, for an Eclipse plugin, you&#8217;ll need to run the following couple :</p>
<pre class="brush: xml; title: ; notranslate">
&lt;product&gt;org.eclipse.sdk.ide&lt;/product&gt;
&lt;application&gt;org.eclipse.ui.ide.workbench&lt;/application&gt;
</pre>
<p>So you just need to add the following section to your UI test plugin :</p>
<pre class="brush: xml; title: ; notranslate">
&lt;build&gt;
	&lt;plugins&gt;
		&lt;plugin&gt;
	        &lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
	        &lt;artifactId&gt;tycho-surefire-plugin&lt;/artifactId&gt;
	        &lt;version&gt;${tycho.version}&lt;/version&gt;
	        &lt;configuration&gt;
	          &lt;useUIHarness&gt;true&lt;/useUIHarness&gt;
	          &lt;useUIThread&gt;false&lt;/useUIThread&gt;
	          &lt;product&gt;org.eclipse.sdk.ide&lt;/product&gt;
	          &lt;application&gt;org.eclipse.ui.ide.workbench&lt;/application&gt;
	        &lt;/configuration&gt;
      	&lt;/plugin&gt;
	&lt;/plugins&gt;
&lt;/build&gt;
</pre>
<p>Now your UI test can run through Tycho and being analyzed by Sonar. Great!</p>
<h2>Limitations</h2>
<p>Wokring on Mac has some advantages, and some drawbacks, here we are facing a drawback. Running SWT applications on Mac require the following JVM argument : <strong>-XstartOnFirstThread (</strong><a href="http://www.eclipse.org/swt/macosx/" target="_blank">http://www.eclipse.org/swt/macosx/</a>).</p>
<p>So you need to configure the the tycho-surefire-plugin as below in the parent pom :</p>
<pre class="brush: xml; title: ; notranslate">
&lt;plugin&gt;
	&lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
	&lt;artifactId&gt;tycho-surefire-plugin&lt;/artifactId&gt;
	&lt;version&gt;${tycho.version}&lt;/version&gt;
	&lt;configuration&gt;
		&lt;useUIHarness&gt;false&lt;/useUIHarness&gt;
		&lt;includes&gt;
			&lt;include&gt;**/*Test.java&lt;/include&gt;
		&lt;/includes&gt;
		&lt;!-- Kill test JVM if tests take more than 10 minutes (600 seconds) to finish --&gt;
		&lt;forkedProcessTimeoutInSeconds&gt;600&lt;/forkedProcessTimeoutInSeconds&gt;
		&lt;argLine&gt;-XstartOnFirstThread&lt;/argLine&gt;
	&lt;/configuration&gt;
&lt;/plugin&gt;
</pre>
<p>But if you do that, the tycho-surefire-plugin argLine <strong>will overwrite</strong> the Jacoco instrumentation argLine.</p>
<p>But thanks to this following tycho-surefire-plugin configuration parameter : <strong>appArgLine</strong> you can add other arguments without overwriting the ones from the <strong>argLine</strong> configuration parameter. So you can define your MacOs profile as below :</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!-- MacOS specific vm arguments for UI testing --&gt;
&lt;profile&gt;
	&lt;id&gt;osx&lt;/id&gt;
	&lt;activation&gt;
		&lt;property&gt;
			&lt;name&gt;java.vendor.url&lt;/name&gt;
			&lt;value&gt;http://www.apple.com/&lt;/value&gt;
		&lt;/property&gt;
	&lt;/activation&gt;
	&lt;build&gt;
		&lt;pluginManagement&gt;
			&lt;plugins&gt;
				&lt;plugin&gt;
					&lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
					&lt;artifactId&gt;tycho-surefire-plugin&lt;/artifactId&gt;
					&lt;version&gt;${tycho.version}&lt;/version&gt;
					&lt;configuration&gt;
						&lt;appArgLine&gt;-XstartOnFirstThread&lt;/appArgLine&gt;
					&lt;/configuration&gt;
				&lt;/plugin&gt;
			&lt;/plugins&gt;
		&lt;/pluginManagement&gt;
	&lt;/build&gt;
&lt;/profile&gt;
</pre>
<p>You now can handle the execution of your UI tests seamlessly on any platform.</p>
<h2>To be done</h2>
<p>If you have a look at the Sonar analysis, you&#8217;ll see that code coverage is calculated from source code and test code (<a href="http://ec2-79-125-43-108.eu-west-1.compute.amazonaws.com:8080/sonar/drilldown/measures/1?metric=coverage" target="_blank">Sonar analysis</a>).</p>
<p>So we need to use the sonar.exclusions pom property : <a href="http://docs.codehaus.org/display/SONAR/Advanced+parameters" target="_blank">http://docs.codehaus.org/display/SONAR/Advanced+parameters</a></p>
<p>Another thing to investigate is to differentiate <strong>Code coverage</strong> and <strong>IT coverage</strong> : <a href="http://www.sonarsource.org/measure-code-coverage-by-integration-tests-with-sonar/" target="_blank">http://www.sonarsource.org/measure-code-coverage-by-integration-tests-with-sonar/</a></p>
<p>Add continuous integration (Jenkins or Hudson) : here is a good explanation on how to run UI test on a headless server : <a href="http://blog.dahanne.net/2011/07/18/run-ui-tests-on-a-headless-jenkins-hudson-continuous-integration-server-running-ubuntu/" target="_blank">http://blog.dahanne.net/2011/07/18/run-ui-tests-on-a-headless-jenkins-hudson-continuous-integration-server-running-ubuntu/</a> by <a href="http://twitter.com/#!/anthonydahanne" target="_blank">@anthonydahanne</a></p>
<h2>Resources</h2>
<p>You can have a look to the source code of a small sample : <a href="https://github.com/xseignard/tycho-demo-camp" target="_blank">https://github.com/xseignard/tycho-demo-camp</a></p>
<p>You can run <strong>mvn clean install -PcodeCoverage</strong> and then <strong>mvn sonar:sonar -PcodeCoverage</strong> from the parent project.</p>
<p>And check the sonar analysis here: <a href="http://ec2-79-125-43-108.eu-west-1.compute.amazonaws.com:8080/sonar/">http://ec2-79-125-43-108.eu-west-1.compute.amazonaws.com:8080/sonar/</a> It should work out of the box.</p>
<p>You can edit/remove the sonar connection settings in order to use your own Sonar instance.</p>
<p>Feel free to provide pull request in order to ameliorate the project and/or drop a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://mdwhatever.free.fr/index.php/2011/09/quality-analysis-on-eclipse-plugins-with-tycho-sonar-jacoco-and-swtbot/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Unified feed of bloggers speaking about MDE</title>
		<link>http://mdwhatever.free.fr/index.php/2011/02/unified-feed-of-bloggers-speaking-about-mde/</link>
		<comments>http://mdwhatever.free.fr/index.php/2011/02/unified-feed-of-bloggers-speaking-about-mde/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 12:45:49 +0000</pubDate>
		<dc:creator>xavier</dc:creator>
				<category><![CDATA[Model Driven]]></category>

		<guid isPermaLink="false">http://mdwhatever.free.fr/?p=202</guid>
		<description><![CDATA[Yahoo! pipes is a great tool! I use it to have all my favorites MDE bloggers in a single RSS feed. You can find that feed here : http://feeds.feedburner.com/MdePipe Feel free send me new bloggers, I&#8217;ll add them for sure!]]></description>
			<content:encoded><![CDATA[<p>Yahoo! pipes is a great tool! I use it to have all my favorites MDE bloggers in a single RSS feed.</p>
<p>You can find that feed here : <a href="http://feeds.feedburner.com/MdePipe" target="_blank">http://feeds.feedburner.com/MdePipe</a></p>
<p>Feel free send me new bloggers, I&#8217;ll add them for sure!</p>
]]></content:encoded>
			<wfw:commentRss>http://mdwhatever.free.fr/index.php/2011/02/unified-feed-of-bloggers-speaking-about-mde/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>An interview with Jordi Cabot, head of the first MDE diploma</title>
		<link>http://mdwhatever.free.fr/index.php/2010/08/an-interview-with-jordi-cabot-head-of-the-first-mde-diploma/</link>
		<comments>http://mdwhatever.free.fr/index.php/2010/08/an-interview-with-jordi-cabot-head-of-the-first-mde-diploma/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 21:43:26 +0000</pubDate>
		<dc:creator>xavier</dc:creator>
				<category><![CDATA[Model Driven]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[mda]]></category>
		<category><![CDATA[mde]]></category>
		<category><![CDATA[mdsd]]></category>
		<category><![CDATA[mia-software]]></category>
		<category><![CDATA[obeo]]></category>

		<guid isPermaLink="false">http://mdwhatever.free.fr/?p=187</guid>
		<description><![CDATA[Nantes, France, has a great environment for MDE purpose: great schools, great labs, great companies and now the FIRST post-graduate specialization Diploma in Model Driven Engineering! Here is an interview with the head of the dipolma: Jordi Cabot. Xavier Seignard (XS) – Hello Jordi Cabot. Maybe you can start by introducing yourself and your position]]></description>
			<content:encoded><![CDATA[<p>Nantes, France, has a great environment for MDE purpose: great schools, great labs, great companies and now the FIRST post-graduate specialization Diploma in Model Driven Engineering! Here is an interview with the head of the dipolma: Jordi Cabot.</p>
<p><span id="more-187"></span></p>
<p><strong>Xavier Seignard (XS) – Hello Jordi Cabot. Maybe you can start by introducing yourself and your position in the MDE diploma?</strong></p>
<p>Hello Xavier and thanks for giving me the chance to talk about the MDE Diploma (<a title="http://www.mines-nantes.fr/fr/Formations/Formation-specialisee/MDE" href="http://www.mines-nantes.fr/fr/Formations/Formation-specialisee/MDE" target="_blank">http://www.mines-nantes.fr/fr/Formations/Formation-specialisee/MDE</a>). A few words about myself: I´m the leader of the AtlanMod team (<a title="http://www.emn.fr/x-info/atlanmod" href="http://www.emn.fr/x-info/atlanmod" target="_blank">http://www.emn.fr/x-info/</a><a title="http://www.emn.fr/x-info/atlanmod" href="http://www.emn.fr/x-info/atlanmod" target="_blank">atlanmod</a>) an INRIA research group located at the École des Mines de Nantes. AtlanMod is one of the leading MDE research teams in the world and has created some of the most popular MDE technologies like the ATL model transformation  language. I&#8217;m also the creator of the Modeling Languages portal (<a title="http://modeling-languages.com" href="http://modeling-languages.com" target="_blank">http://modeling-languages.com</a>) where I write about all kinds of software modeling and model-driven engineering topics.</p>
<p><strong>XS –  Could you explain us the birth of this diploma, who took the initiative?<br />
</strong> Jean Bézivin took the initiative of creating the diploma when he realized that there were many companies interested in starting new projects using MDE techniques but that the engineers with the &#8220;human skills&#8221; necessary to lead those MDE projects were not widely available (no specialized formation on these topics existed anywhere in the world!).</p>
<p>From there, he started, together with Frédéric Jouault and Serge Masserot, designing a formation that included not only technical MDE subjects but also case studies and MDE project management aspects to make sure students had a complete picture of the benefits but also complexities of MDE . The idea has always been to &#8220;create&#8221; MDE experts that can advice the companies about when and where use MDE techniques in their software engineering activities, not only technical experts that can implement these solutions (designing metamodels, model transformations,&#8230;) for them.</p>
<h1>The students :</h1>
<p><strong>XS – How many people are following the diploma this first year?</strong></p>
<p>We have six students.</p>
<p><strong>XS – What is the profile of the students? What is the proportion working for a software editor, for a consulting company, big companies, institutional administrations? </strong></p>
<p>There´s a little bit of everything, from a student working in a tool development company to a student that works in the informatics department of a big company and even one student that will be the key designer/developer of a new model-driven product for a start-up company.</p>
<p><strong>XS – What is the background of the students? System engineering, embedded systems, information systems, …?</strong></p>
<p>Most of them have a computer science background with a focus on the information systems area but the diploma covers the use of MDE on all the above mentioned areas.</p>
<p><strong>XS – How international are the students?</strong></p>
<p>All students live in France (not all of them are French though) and moved to Nantes to follow the diploma (only one of the students is originally from Nantes). During these months they have stayed in the student residence of the École des Mines.</p>
<p><strong>XS – Last year, I met Gisela Bonnaud, Pedagogical Engineering Coordiantor of the diploma, she told me that some companies were willing to recruit people so they can follow the diploma. What was the motivation of the students to follow this diploma? They were sent by their companies? Is it a personal interest?</strong></p>
<p>In the end for this edition we had 50/50. Three of the students were sent direclty by their companies and three other came on their own and managed to found a company to do the internship during this first semester of courses.</p>
<p>But in fact, we have indeed detected a growing interest of companies willing to hire MDE students so we are working in that direction for the new edition.The idea would be to bring companies to &#8220;sponsor&#8221; MDE students in exchange of getting the student working for them as interns and, possibly, as employees at the end of the diploma. We believe this is a very &#8220;low-risk / high-reward&#8221; way to hire an MDE expert for your company and with the option of &#8220;testing&#8221; that employee during the internship to make sure he/she integrates well with the company.</p>
<p><strong>XS – The formation is quite expensive, how it is financed?</strong></p>
<p>For the students already employed by a company, the company takes care of the cost of the diploma. The rest has benefitted from (partial) grants to help them cover the fees. However, I think all of them are happy with the &#8220;investment&#8221; they made since thanks to the diploma they have found a company in which they will probably continue working on MDE topics even after the internship finishes.</p>
<p><strong>XS – The first semester (academic coursework) is finished, what is the feedback of the students?</strong></p>
<p>They are very happy with the contents of the diploma and with what they have learnt so far but I´m afraid we have a been a bit too demanding. They have complained that the pace of the courses has been too high: on average they have had four full days of courses (24h) and one day of personal work per week to complete the MDE exercises and mini-projects given by the lecturers. A second complaint was regarding the difficulty of relating all the different concepts seen during the course, specially because the ordering of the courses did not always followed an exact sequence (maybe they were practicing one day a model transformation language and the next day seeing the application of MDE in the embedded systems domain) due to the constraints of our guest lecturers. We will work on these two aspects for the next edition of the diploma.</p>
<p><strong>XS –  The internships are about to start, any buzzwords, privileged application fields?</strong></p>
<p>We are very excited about the internship topics. I believe that we cover most of the main areas of MDE. Topics include new model-driven reverse engineering techniques to migrate legacy systems, code-generation tools, model-driven tool interoperability aspects to improve the business-IT alignment and putting in place a new model-driven development method in a company, defining the UML profiles /DSLs required in the company&#8217;s specific domain.</p>
<h1>The diploma :</h1>
<p><strong>XS – How did you elaborate the program? With the help of partners such as companies and labs?</strong></p>
<p>The program reflects our own vision of the MDE field and the aspects we believe are important  (including all the non-techincal ones) to become an MDE expert. After we sketched the first program version we went back to the community for feedback. We reached many of our colleagues and also presented the diploma in several events like the Educators&#8217; Symposium in the MoDELS&#8217;09 conference.</p>
<p><strong>XS – How international are the lecturers?</strong></p>
<p>I think we can say we managed to have most of the the big names in software modeling in Europe teaching in the diploma!. And as a complement, the students were invited to attend the Jeudi des Modeles (<a title="http://www.emn.fr/z-info/jmodeles/" href="http://www.emn.fr/z-info/jmodeles/" target="_blank">http://www.emn.fr/z-info/jmodeles/</a>) cycle of conferences where we have recently hosted notables like Ivar Jacobson or Ed Merks and we even had a &#8220;field-trip&#8221; and brought all the students to a modeling conference (ECMFA&#8217;10 in Paris) so that they could know about the latest developments in the area. All in all, I believe we can say that the quality of the lecturers has been oustanding and we are very grateful to all of them for accepting our invitation and for taking the time to prepare high-quality lectures for our students.</p>
<p><strong>XS – What is the proportion of academic/industrial lecturers?</strong></p>
<p>I´d say it was 50/50. We have tried to balance both perspectives. It is good that students know about the cutting-edge technologies that leading research groups are developing but at the same time they need to be familiar with the best practices and commercial tools currently in use in software companies.</p>
<p><strong>XS – MDE is evolving a lot recently, how do you deal with that to stay at the cutting edge of these technologies in the program?</strong></p>
<p>This is tough. Again, we need to find an equilibrium between the new hot topics and the core technologies. We decided to devote the first part of the courses to core MDE technologies that we wanted the students to master (metamodeling, model transofrmations,..) and then we organized the rest of the courses as one-day sessions on one specific aspect that could be either the application of MDE in a particular domain (e.g. web engineering, real-time systems,&#8230;) or an introduction to an advanced MDE topic (like MPS-Meta Programming System) that is getting some momentum but that right now it is difficult to guess if it will become more mainstream or not. In each edition, we will review all these advanced topics to see if any of them deserves to be moved to the &#8220;core&#8221; part and get more attention.</p>
<p><strong>XS – What is the feedback of the lecturers?</strong></p>
<p>The feedback has been very positive. All of them manifested that they were very impressed about the quality and, specially, the interest and participation of the students. No surprise here, the participation depended a lot on the topic of the day. More junior students were more interested  in the most technical subjects, instead the more senior ones were more participative during the discussion on  social and project management aspects of MDE projects since they have already experimented this kind of difficulties.</p>
<h1>The MDE diploma team:</h1>
<p><strong>XS – It is always tricky to start a new diploma, what are the lessons learned with this first semester?</strong></p>
<p>As I was saying before, I think we have tried to squeeze to much content in the diploma. We love all these topics so it was very difficult to us to discard some of them during the planning. Also, I think we understimated the complexity of the logistics required to bring all these external experts to teach in the diploma. This was almost a full-time job for a couple of months. We were lucky to have a person working as a pedagogic assistant for the diploma that could take care of this but I think this is one aspect that should be taken into account when trying to open an international diploma like this one. One last lesson learnt is about the need to oganized a weekly session with the students to help them relate the things they have learnt that week with past and future lectures. Seeing so many topics (taught by so many different teachers) is a very rich experience but comes with the danger of leaving them a little bit confused at times. It´s important to make sure they understand the relationships between all MDE concepts and I think that a weekly session to have an open discussion with the students to put things in perspective could be a good solution for this.</p>
<p><strong>XS – Because we know MDE is often scary for companies, is this diploma can be an argument for the adoption of such technologies?</strong></p>
<p>This is exactly one of the goals of the diploma. The diploma offers two main benefits to companies. First it provides them with a MDE expert that can advice the company about the best way to benefit from MDE (the goal of the MDE expert is not to change completely how the company does things but to identify the areas in which MDE can make a difference). Second, thanks to the internship program, companies can conduct a pilot project to test MDE and get convinced about the competitive advantage this may represent to them. We hope every edition more and more companies realize about this!</p>
<p><strong>XS – With the help of the graduate school of engineering “Ecole des Mines de Nantes” and the research team “Atlanmod”, the MDE diploma seems to benefit of a great environment, what&#8217;s your feeling about that?</strong></p>
<p>This is absolutely true!. I´m very happy to be leading the AtlanMod team. Jean Bézivin did a great job in creating a leading MDE research team in Nantes, supported by the École des Mines de Nantes and by INRIA. In fact, he didn´t just created a team but helped developing a complete modeling ecosystem in the Pays de la Loire region. Having great modeling companies around (like our close partners OBEO and MIA-Software) offers greats opportunities to all students and researchers interested in MDE.  Nantes may not be in the middle of the Silicon Valley but for sure we are in the center of the &#8220;Modeling Valley&#8221;.</p>
<p><strong>XS – What are your plans for the next year of the diploma?</strong></p>
<p>We are already preparing the next edition of the MDE diploma. It´s going to start in September 2011. Those interested in taking part in it can already contact me at <a title="jordi.cabot@mines-nantes.fr" href="mailto:jordi.cabot@mines-nantes.fr">jordi.cabot@mines-nantes.fr</a> .</p>
<p><strong>XS – Thanks Jordi, I wish you a lot of success to you and the MDE diploma team. To end this interview, do you have an anecdote to share?</strong></p>
<p>Well, let´s say that I´ve discovered the usefulness of the images tab of google search. Since I didn´t know personally all the lecturers, more than once I had to quickly search google to find a picture of the lecturer of the day to see if the person wandering around the department not knowing where to go was indeed him/her (all lecturers were supposed to stop at the reception desk and ask for me but many arrived early and tried to find the classroom by themselves and believe me this is not easy in our École).</p>
]]></content:encoded>
			<wfw:commentRss>http://mdwhatever.free.fr/index.php/2010/08/an-interview-with-jordi-cabot-head-of-the-first-mde-diploma/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A list of bloggers speaking about MDE (update january 2011)</title>
		<link>http://mdwhatever.free.fr/index.php/2010/07/a-list-of-bloggers-speaking-about-mde/</link>
		<comments>http://mdwhatever.free.fr/index.php/2010/07/a-list-of-bloggers-speaking-about-mde/#comments</comments>
		<pubDate>Sat, 03 Jul 2010 06:09:09 +0000</pubDate>
		<dc:creator>xavier</dc:creator>
				<category><![CDATA[Model Driven]]></category>
		<category><![CDATA[bloggers]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[list]]></category>
		<category><![CDATA[mda]]></category>
		<category><![CDATA[mde]]></category>
		<category><![CDATA[mdsd]]></category>
		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://mdwhatever.free.fr/?p=166</guid>
		<description><![CDATA[If like me, you love reading bloggers who are speaking about MDE, here is all the bloggers I follow. Maybe you will enjoy following them? And if you know some others, let me know! http://5ise.quanxinquanyi.de/ http://abstratt.com/blog http://actifsource.blogspot.com/ http://activeknowledgemodeling.com/ http://appgen.pbell.com/ http://aspectize.com/blogs/corp/default.aspx http://blanglois.blogspot.com/ http://blog.benois.fr/ http://blog.efftinge.de/ http://blogs.euranova.eu/ http://eclipsemde.blogspot.com/ http://ed-merks.blogspot.com/ http://ekkescorner.wordpress.com/ http://fmadiot.blogspot.com/ http://freddyallilaire.blogspot.com/ http://jomd.blogspot.com/ http://kenn-hussey.blogspot.com/ http://kthoms.wordpress.com/ http://lsd.luminis.eu/category/technical/mdd-technical/ http://mdwhatever.free.fr/ http://www.metacase.com/blogs/jpt/blogView]]></description>
			<content:encoded><![CDATA[<p>If like me, you love reading bloggers who are speaking about MDE, here is all the bloggers I follow. Maybe you will enjoy following them? And if you know some others, let me know!<br />
<span id="more-166"></span></p>
<ul>
<li><a href="http://5ise.quanxinquanyi.de/" target="_blank">http://5ise.quanxinquanyi.de/</a></li>
<li><a href="http://abstratt.com/blog" target="_blank">http://abstratt.com/blog</a></li>
<li><a href="http://actifsource.blogspot.com/" target="_blank">http://actifsource.blogspot.com/</a></li>
<li><a href="http://activeknowledgemodeling.com/" target="_blank">http://activeknowledgemodeling.com/</a></li>
<li><a href="http://appgen.pbell.com/">http://appgen.pbell.com/</a></li>
<li><a href="http://aspectize.com/blogs/corp/default.aspx" target="_blank">http://aspectize.com/blogs/corp/default.aspx</a></li>
<li><a href="http://blanglois.blogspot.com/" target="_blank">http://blanglois.blogspot.com/</a></li>
<li><a href="http://blog.benois.fr/" target="_blank">http://blog.benois.fr/</a></li>
<li><a href="http://blog.efftinge.de/" target="_blank">http://blog.efftinge.de/</a></li>
<li><a href="http://blogs.euranova.eu/" target="_blank">http://blogs.euranova.eu/</a></li>
<li><a href="http://eclipsemde.blogspot.com/" target="_blank">http://eclipsemde.blogspot.com/</a></li>
<li><a href="http://ed-merks.blogspot.com/" target="_blank">http://ed-merks.blogspot.com/</a></li>
<li><a href="http://ekkescorner.wordpress.com/" target="_blank">http://ekkescorner.wordpress.com/</a></li>
<li><a href="http://fmadiot.blogspot.com/" target="_blank">http://fmadiot.blogspot.com/</a></li>
<li><a href="http://freddyallilaire.blogspot.com/">http://freddyallilaire.blogspot.com/</a></li>
<li><a href="http://jomd.blogspot.com/" target="_blank">http://jomd.blogspot.com/</a></li>
<li><a href="http://kenn-hussey.blogspot.com/" target="_blank">http://kenn-hussey.blogspot.com/</a></li>
<li><a href="http://kthoms.wordpress.com/" target="_blank">http://kthoms.wordpress.com/</a></li>
<li><a href="http://lsd.luminis.eu/category/technical/mdd-technical/" target="_blank">http://lsd.luminis.eu/category/technical/mdd-technical/</a></li>
<li><a href="http://mdwhatever.free.fr/" target="_blank">http://mdwhatever.free.fr/</a></li>
<li><a title="http://www.metacase.com/blogs/jpt/blogView" href="http://www.metacase.com/blogs/jpt/blogView" target="_blank">http://www.metacase.com/blogs/jpt/blogView</a></li>
<li><a title="http://www.metacase.com/blogs/stevek/blogView" href="http://www.metacase.com/blogs/stevek/blogView" target="_blank">http://www.metacase.com/blogs/stevek/blogView</a></li>
<li><a href="http://metaplop.blogspot.com/" target="_blank">http://metaplop.blogspot.com/</a></li>
<li><a href="http://model-driven-blogging.blogspot.com/" target="_blank">http://model-driven-blogging.blogspot.com/</a></li>
<li><a href="http://modeldrivensoftware.ning.com/profiles/blog/list" target="_blank">http://modeldrivensoftware.ning.com/profiles/blog/list</a></li>
<li><a href="http://modeling-languages.com/blogs/jordi" target="_blank">http://modeling-languages.com/blogs/jordi</a></li>
<li><a title="http://modelseverywhere.wordpress.com/" href="http://modelseverywhere.wordpress.com/" target="_blank">http://modelseverywhere.wordpress.com/</a></li>
<li><a href="http://pjmolina.com/metalevel" target="_blank">http://pjmolina.com/metalevel</a></li>
<li><a href="http://skanderturki.wordpress.com/" target="_blank">http://skanderturki.wordpress.com/</a></li>
<li><a href="http://thegordian.blogspot.com/" target="_blank">http://thegordian.blogspot.com/</a></li>
<li><a href="http://voelterblog.blogspot.com/">http://voelterblog.blogspot.com/</a></li>
<li><a href="http://www.ebpml.org/blog2/">http://www.ebpml.org/blog2/</a></li>
<li><a href="http://www.hulshout.nl/" target="_blank">http://www.hulshout.nl/</a></li>
<li><a href="http://www.peterfriese.de/" target="_blank">http://www.peterfriese.de/</a></li>
<li><a href="http://www.theenterprisearchitect.eu/" target="_blank">http://www.theenterprisearchitect.eu/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://mdwhatever.free.fr/index.php/2010/07/a-list-of-bloggers-speaking-about-mde/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How to debug your MagicDraw plugin with Eclipse</title>
		<link>http://mdwhatever.free.fr/index.php/2010/07/how-to-debug-your-magicdraw-plugin/</link>
		<comments>http://mdwhatever.free.fr/index.php/2010/07/how-to-debug-your-magicdraw-plugin/#comments</comments>
		<pubDate>Sat, 03 Jul 2010 05:08:10 +0000</pubDate>
		<dc:creator>xavier</dc:creator>
				<category><![CDATA[Model Driven]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[magicdraw]]></category>
		<category><![CDATA[magicdraw open API]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://mdwhatever.free.fr/?p=143</guid>
		<description><![CDATA[After reading this post, you are now MagicDraw open API experts! But you still need to debug your plugins! Here is a short presentation on how to debug your MagicDraw plugin with Eclipse. Create your MagicDraw user library First of all you need to create a user library (Window&#62;Preferences&#62;Java&#62;Build Path&#62;User Libraries) in Eclipse containing every]]></description>
			<content:encoded><![CDATA[<p>After reading this <a title="post" href="http://mdwhatever.free.fr/index.php/2010/03/how-to-develop-your-magicdraw-plugin/" target="_blank">post</a>, you are now MagicDraw open API experts! But you still need to debug your plugins! Here is a short presentation on how to debug your MagicDraw plugin with Eclipse.</p>
<p><span id="more-143"></span></p>
<h2>Create your MagicDraw user library</h2>
<p>First of all you need to create a user library (Window&gt;Preferences&gt;Java&gt;Build Path&gt;User Libraries) in Eclipse containing <strong>every *.jar</strong> from the &#8220;<strong>&lt;MagicDraw_Install_Dir&gt;/lib</strong>&#8221; and its subfolders.</p>
<p style="text-align: center;"><a href="http://mdwhatever.free.fr/wp-content/uploads/MagicDrawUserLibrary.png" rel="shadowbox[post-143];player=img;" title="MagicDraw User Library"><img class="size-medium wp-image-148 aligncenter" style="border: 1px solid black;" title="MagicDraw User Library" src="http://mdwhatever.free.fr/wp-content/uploads/MagicDrawUserLibrary-300x187.png" alt="" width="300" height="187" /></a></p>
<h2>Create your debug project</h2>
<p>Create a new Java Project, and then you need to reference your plugin project in the build path of your debug project : (Right click ﻿on the project&gt;Configure build path)</p>
<p style="text-align: center;"><a href="http://mdwhatever.free.fr/wp-content/uploads/Properties-for-magicdraw-debug-.png" rel="shadowbox[post-143];player=img;" title="Add your plugin project to the build path"><img class="aligncenter size-medium wp-image-144" style="border: 1px solid black;" title="Add your plugin project to the build path" src="http://mdwhatever.free.fr/wp-content/uploads/Properties-for-magicdraw-debug--300x199.png" alt="" width="300" height="199" /></a></p>
<p>Here I take the Eclipse project given in this <a title="post" href="http://mdwhatever.free.fr/index.php/2010/03/how-to-develop-your-magicdraw-plugin/" target="_blank">post</a>.</p>
<p>Then you need to create a main class which will init your plugin and launch MagicDraw :</p>
<pre lang="java">
package fr.free.mdwhatever.magicdrawDebug;

import com.nomagic.magicdraw.core.Application;
import com.nomagic.runtime.ApplicationExitedException;

import fr.free.mdwhatever.simplePlugin.SimplePlugin;
/**
 * This class allows you to debug your MagicDraw plugin
 *
 * @author Xavier Seignard
 */
public class Debug {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			SimplePlugin plugin = new SimplePlugin();
			Application app = Application.getInstance();
			// Start the application (visible, not silent,
			// don't try to load a project, the given args,
			// the StartUp participant)
			app.start(true, false, false, args, null);
			plugin.init();
		} catch (ApplicationExitedException e) {
			e.printStackTrace();
		}
	}
}
</pre>
<p>Then all you need to do is to right-click on this class and choose &#8220;Debug as&#8221; to launch MagicDraw within the Eclipse debugger and use all the functionalities it gives us!</p>
<p><strong>Nota :</strong> Maybe you&#8217;ll need to tune up a bit more your debug configuration by adding &#8220;-Xmx1024m&#8221; as VM argument as shown below :</p>
<p style="text-align: center;"><a href="http://mdwhatever.free.fr/wp-content/uploads/RunConfiguration.png" rel="shadowbox[post-143];player=img;" title="Run Configuration VM argument"><img class="aligncenter size-medium wp-image-154" style="border: 1px solid black;" title="Run Configuration VM argument" src="http://mdwhatever.free.fr/wp-content/uploads/RunConfiguration-300x197.png" alt="" width="300" height="197" /></a></p>
<p>Hope this helps! See you!</p>
]]></content:encoded>
			<wfw:commentRss>http://mdwhatever.free.fr/index.php/2010/07/how-to-debug-your-magicdraw-plugin/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Model driven tools : the big list!</title>
		<link>http://mdwhatever.free.fr/index.php/2010/06/model-driven-tools-the-big-list/</link>
		<comments>http://mdwhatever.free.fr/index.php/2010/06/model-driven-tools-the-big-list/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 20:57:33 +0000</pubDate>
		<dc:creator>xavier</dc:creator>
				<category><![CDATA[Model Driven]]></category>
		<category><![CDATA[abse]]></category>
		<category><![CDATA[acceleo]]></category>
		<category><![CDATA[actifsource]]></category>
		<category><![CDATA[agile platform]]></category>
		<category><![CDATA[andromda]]></category>
		<category><![CDATA[aspectize]]></category>
		<category><![CDATA[atl]]></category>
		<category><![CDATA[atomweaver]]></category>
		<category><![CDATA[bluage]]></category>
		<category><![CDATA[celerio]]></category>
		<category><![CDATA[codefluent]]></category>
		<category><![CDATA[e4 xwt]]></category>
		<category><![CDATA[emf]]></category>
		<category><![CDATA[emftext]]></category>
		<category><![CDATA[enterprise architect]]></category>
		<category><![CDATA[itemis]]></category>
		<category><![CDATA[jaxio]]></category>
		<category><![CDATA[jetbrain mps]]></category>
		<category><![CDATA[magicdraw]]></category>
		<category><![CDATA[mda]]></category>
		<category><![CDATA[mde]]></category>
		<category><![CDATA[mdsd]]></category>
		<category><![CDATA[mendix]]></category>
		<category><![CDATA[metacase]]></category>
		<category><![CDATA[metaedit+]]></category>
		<category><![CDATA[mia-software]]></category>
		<category><![CDATA[mia-studio]]></category>
		<category><![CDATA[model driven tools]]></category>
		<category><![CDATA[modisco]]></category>
		<category><![CDATA[obeo]]></category>
		<category><![CDATA[obeo designer]]></category>
		<category><![CDATA[qvto]]></category>
		<category><![CDATA[redview]]></category>
		<category><![CDATA[softfluent]]></category>
		<category><![CDATA[springfuse]]></category>
		<category><![CDATA[springroo]]></category>
		<category><![CDATA[wazaabi]]></category>
		<category><![CDATA[xpand]]></category>
		<category><![CDATA[xtend]]></category>
		<category><![CDATA[xtext]]></category>

		<guid isPermaLink="false">http://mdwhatever.free.fr/?p=121</guid>
		<description><![CDATA[I&#8217;ll try to list all the MDE tools I know, I&#8217;ll also try to reference them by their scope. Feel free to comment this list of MDE tools! M2M/M2T tools: actifsource (http://www.actifsource.com/) AndroMDA (http://www.andromda.org/) Eclipse ATL (http://www.eclipse.org/atl/) is a part of Eclipse Modeling project Eclipse QVTO (http://wiki.eclipse.org/M2M/QVTO) is a part of Eclipse Modeling project Itemis/Eclipse xpand/xtend (http://wiki.eclipse.org/Xpand)]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll try to list all the MDE tools I know, I&#8217;ll also try to reference them by their scope. Feel free to comment this list of MDE tools!</p>
<p><strong>M2M/M2T tools:</strong></p>
<ul>
<li>actifsource (<a href="http://www.actifsource.com/">http://www.actifsource.com/</a>)</li>
<li>AndroMDA (<a href="http://www.andromda.org/">http://www.andromda.org/</a>)</li>
<li>Eclipse ATL (<a href="http://www.eclipse.org/atl/">http://www.eclipse.org/atl/</a>) is a part of <a href="http://www.eclipse.org/modeling/">Eclipse Modeling project</a></li>
<li>Eclipse QVTO (<a href="http://wiki.eclipse.org/M2M/QVTO">http://wiki.eclipse.org/M2M/QVTO</a>) is a part of <a href="http://www.eclipse.org/modeling/">Eclipse Modeling project</a></li>
<li>Itemis/Eclipse xpand/xtend (<a href="http://wiki.eclipse.org/Xpand">http://wiki.eclipse.org/Xpand</a>) it was originaly a part of the no longer supported openArchitectureWare (<a href="http://oaw.itemis.com/">http://oaw.itemis.com/</a> &amp; <a href="http://www.openarchitectureware.org/">http://www.openarchitectureware.org/</a>)  is now a part of <a href="http://www.eclipse.org/modeling/">Eclipse Modeling project</a></li>
<li><a href="http://www.eclipse.org/modeling/"></a>Mia-Software Mia-Generation (<a href="http://www.mia-software.com/">http://www.mia-software.com/</a>) is a part of Mia-Studio tool suite</li>
<li>Mia-Software Mia-Transformation (<a href="http://www.mia-software.com/">http://www.mia-software.com/</a>) is a part of Mia-Studio tool suite</li>
<li>Obeo/Eclipse Acceleo (<a href="http://www.eclipse.org/acceleo/">http://www.eclipse.org/acceleo/</a>) is a M2T tool that has recently moved from the Obeo (<a href="http://www.obeo.fr/">http://www.obeo.fr/</a>) company to <a href="http://www.eclipse.org/modeling/">Eclipse Modeling project</a></li>
</ul>
<p><span id="more-121"></span></p>
<p><strong>MDE application builders:</strong></p>
<ul>
<li>Artisan Software Tools Artisan Studio (<a href="http://www.artisansoftwaretools.com/">http://www.artisansoftwaretools.com/</a>) for SysML</li>
<li>Aspectize (<a href="http://aspectize.com/">http://aspectize.com/</a>) for .NET target</li>
<li>BluAge (<a href="http://www.bluage.com/">http://www.bluage.com/</a>)</li>
<li>Jaxio Celerio (<a href="http://www.jaxio.com/">http://www.jaxio.com/</a>)</li>
<li>Jaxio SpringFuse (<a href="http://www.springfuse.com/">http://www.springfuse.com/</a>) for Java Spring</li>
<li>Mendix (<a href="http://www.mendix.com/">http://www.mendix.com/</a>)</li>
<li>Outsystems Agile Platform (<a href="http://www.outsystems.com/agile-platform">http://www.outsystems.com/agile-platform</a>)</li>
<li>SkyWay Software SkyWay Builder (<a href="http://www.skywayperspectives.org/">http://www.skywayperspectives.org/</a>) for Java Spring</li>
<li>Sodius MDWorkbench (<a href="http://www.mdworkbench.com/">http://www.mdworkbench.com/</a> &amp; <a href="http://www.sodius.com/">http://www.sodius.com/</a>)</li>
<li>SoftFluent CodeFluent Entities (<a href="http://www.codefluententities.com/">http://www.codefluententities.com/</a> &amp; <a href="http://www.softfluent.com/">http://www.softfluent.com/</a>) for .NET target</li>
<li>SpringSource SpringRoo (<a href="http://www.springsource.org/roo">http://www.springsource.org/roo</a>) for Java Spring</li>
</ul>
<p><strong>Language workbenches:</strong></p>
<ul>
<li>EMFText (<a href="http://www.emftext.org/index.php/EMFText">http://www.emftext.org/</a>)</li>
<li>Itemis/Eclipse TMF Xtext (<a href="http://xtext.itemis.com/">http://xtext.itemis.com/</a>) is a part of <a href="http://www.eclipse.org/modeling/">Eclipse Modeling project</a> (<a href="http://www.eclipse.org/Xtext/">http://www.eclipse.org/Xtext/</a>)</li>
<li>Jetbrains MPS (<a href="http://www.jetbrains.com/mps/">http://www.jetbrains.com/mps/</a>)</li>
<li>Spoofax (<a href="http://strategoxt.org/Spoofax/WebHome">http://strategoxt.org/Spoofax/WebHome</a>)</li>
</ul>
<p><strong>DSM (Domain Specific Modeling) workbenches:</strong></p>
<ul>
<li>Isomeris ABSE &amp; Atomweaver (<a href="http://www.atomweaver.com/">http://www.atomweaver.com/</a> , <a href="http://www.abse.info/">http://www.abse.info/</a> &amp; <a href="http://www.isomeris.com/">http://www.isomeris.com/</a>) quite intriguing tools that will be launched during Q3(July) 2010</li>
<li>MetaCase MetaEdit+ (<a href="http://www.metacase.com/">http://www.metacase.com/</a>)</li>
<li>Obeo Designer (<a href="http://www.obeo.fr/pages/obeo-designer/en">http://www.obeo.fr/pages/obeo-designer/en</a>)</li>
</ul>
<p><strong>MDE UI design tools:</strong></p>
<ul>
<li>Eclipse E4/XWT (<a href="http://wiki.eclipse.org/E4/XWT">http://wiki.eclipse.org/E4/XWT</a>)</li>
<li>redView (<a href="http://redview.org/">http://redview.org/</a>)</li>
<li>wazaabi (<a href="http://wazaabi.org/">http://wazaabi.org/</a>)</li>
</ul>
<p><strong>Modernization tools:</strong></p>
<ul>
<li>eclipse MoDisco (<a href="http://www.eclipse.org/MoDisco/">http://www.eclipse.org/MoDisco/</a>) is a part of <a href="http://www.eclipse.org/modeling/">Eclipse Modeling project</a></li>
<li>Mia-Sotware Mia-Modernization (<a href="http://www.mia-software.com/">http://www.mia-software.com/</a>) is a part of Mia-Studio tool suite</li>
<li>Obeo Agility (<a href="http://www.obeo.fr/pages/agility/en">http://www.obeo.fr/pages/agility/en</a>)</li>
</ul>
<p><strong>CASE tools with MDE capabilities:</strong></p>
<ul>
<li>ModelioSoft Modelio (<a href="http://www.modeliosoft.com/">http://www.modeliosoft.com/</a>)</li>
<li>NoMagic MagicDraw (<a href="http://www.magicdraw.com/">http://www.magicdraw.com/</a>)</li>
<li>Sparx System Enterprise Architect (<a href="http://www.sparxsystems.com/products/ea/">http://www.sparxsystems.com/products/ea/</a>)</li>
</ul>
<p><strong>XSLT based tool:</strong></p>
<ul>
<li>Xomega (<a href="http://www.xomega.net/">http://www.xomega.net/</a>)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://mdwhatever.free.fr/index.php/2010/06/model-driven-tools-the-big-list/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>[French] Introduction to algebraïc graph transformations</title>
		<link>http://mdwhatever.free.fr/index.php/2010/06/french-introduction-to-algebraic-graph-transformations/</link>
		<comments>http://mdwhatever.free.fr/index.php/2010/06/french-introduction-to-algebraic-graph-transformations/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 21:56:06 +0000</pubDate>
		<dc:creator>xavier</dc:creator>
				<category><![CDATA[Model Driven]]></category>
		<category><![CDATA[agg]]></category>
		<category><![CDATA[graph based transformations]]></category>
		<category><![CDATA[mde]]></category>

		<guid isPermaLink="false">http://mdwhatever.free.fr/?p=117</guid>
		<description><![CDATA[For french readers, you&#8217;ll find an introduction about algebraïc graph transformations. Since graph based transformations are quite trendy, I thought it should be a good idea to see what&#8217;s behind graph based transformations. For the ones who don&#8217;t speak french, you  should watch at least the bibliography at the end of the pdf, since almost]]></description>
			<content:encoded><![CDATA[<p>For french readers, you&#8217;ll find an introduction about algebraïc graph transformations. Since graph based transformations are quite trendy, I thought it should be a good idea to see what&#8217;s behind graph based transformations.</p>
<p>For the ones who don&#8217;t speak french, you  should watch at least the bibliography at the end of the pdf, since almost bibliography entries are in english.</p>
<p>The purpose of this paper is to have a french version of what is algebraïc graph transformations because there is almost nothing in french.</p>
<p><a href="http://mdwhatever.free.fr/wp-content/uploads/graphes.pdf">graphes.pdf</a></p>
<p>Regards.</p>
]]></content:encoded>
			<wfw:commentRss>http://mdwhatever.free.fr/index.php/2010/06/french-introduction-to-algebraic-graph-transformations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to develop your MagicDraw plugin</title>
		<link>http://mdwhatever.free.fr/index.php/2010/03/how-to-develop-your-magicdraw-plugin/</link>
		<comments>http://mdwhatever.free.fr/index.php/2010/03/how-to-develop-your-magicdraw-plugin/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 21:18:38 +0000</pubDate>
		<dc:creator>xavier</dc:creator>
				<category><![CDATA[Model Driven]]></category>
		<category><![CDATA[magicdraw]]></category>
		<category><![CDATA[magicdraw open API]]></category>
		<category><![CDATA[Maven2]]></category>
		<category><![CDATA[mde]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://mdwhatever.free.fr/?p=44</guid>
		<description><![CDATA[MagicDraw is a great modeling tool¹ for lot of reasons. First of all : this is a mature tool, enterprise ready, and easy to use. Then there&#8217;s a lot of great side functionalities like : reporting templates, dependency matrix, active validation and even more²! But in a model driven environment, MagicDraw is great because of]]></description>
			<content:encoded><![CDATA[<p>MagicDraw is a great modeling tool<a href="#note1">¹</a> for lot of reasons. First of all :</p>
<ul>
<li>this is a mature tool,</li>
<li>enterprise ready,</li>
<li>and easy to use.</li>
</ul>
<p>Then there&#8217;s a lot of great side functionalities like :</p>
<ul>
<li>reporting templates,</li>
<li>dependency matrix,</li>
<li>active validation</li>
<li>and even more<a href="#note2">²</a>!</li>
</ul>
<p>But in a model driven environment, MagicDraw is great because of its <a title="open API" href="http://www.magicdraw.com/main.php?ts=navig&amp;cmd_show=1&amp;menu=feature_list#Open_API" target="_blank">open API</a> which allows you to manipulate models and diagrams really easily.</p>
<p>So it&#8217;s time to introduce a simple plugin to get familiar with this open API!<span id="more-44"></span></p>
<h1>Some resources to start</h1>
<p>First of all, you&#8217;ll find javadoc and samples in the &#8220;<strong>&lt;MagicDraw_Install_Dir&gt;\openapi</strong>&#8221; directory and documentation in &#8220;<strong>&lt;MagicDraw_Install_Dir&gt;\manual\MagicDraw OpenAPI UserGuide.pdf</strong>&#8220;.</p>
<p>The documentation is really good, so I think you&#8217;ll find all what you need there.</p>
<h1>How plugins are working?</h1>
<p>Each time MagicDraw starts, it scans the &#8220;<strong>&lt;MagicDraw_Install_Dir&gt;\plugin</strong>&#8221; directory to find subdirectories containing two main things :</p>
<ul>
<li>A &#8220;<strong>plugin.xml</strong>&#8221; file which describes your plugin, the required libraries, and how to start it.</li>
<li>A jar containing a class which extends the &#8220;<strong>com.nomagic.magicdraw.plugins.Plugin</strong>&#8221; and implements its &#8220;<strong>init()</strong>&#8221; method.</li>
</ul>
<h2>Plugin.xml</h2>
<pre lang="xml" escaped="true">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!-- The id must be unique, I generally put the class that extends the Plugin class as id. --&gt;
&lt;plugin
    &lt;!-- The id must be unique, I generally put the class that extends the Plugin class as id. --&gt;
    id="fr.free.mdwhatever.simplePlugin.magicDraw.SimplePlugin"
    name="SimplePlugin"

    &lt;!-- Here I put project.version as version because Maven will filter it and put the same version you find in the pom.xml. --&gt;
    version="${project.version}" 

    &lt;!-- Who is providing this plugin (i.e. your company or whatever). --&gt;
    provider-name="Xavier Seignard"

    &lt;!-- The class which extends the com.nomagic.magicdraw.plugins.Plugin class
    in order to init your plugin within MagicDraw. --&gt;
    class="fr.free.mdwhatever.simplePlugin.magicDraw.SimplePlugin"&gt;

    &lt;!-- MagicDraw API version required by plug-in. Plug-ins and their requires versions required by plug-in. --&gt;
    &lt;requires&gt;
        &lt;api version="1.0" /&gt;
    &lt;/requires&gt;

    &lt;!-- The runtime libraries your plugin needs. --&gt;
    &lt;runtime&gt;
        &lt;library name="${artifactId}-${version}.${packaging}" /&gt;
    &lt;/runtime&gt;
&lt;/plugin&gt;</pre>
<h2>The SimplePlugin class</h2>
<p>Here is the plugin entrance, take a look at the commented code.</p>
<pre lang="java">package fr.free.mdwhatever.simplePlugin;

import com.nomagic.magicdraw.plugins.Plugin;
import com.nomagic.actions.ActionsCategory;
import com.nomagic.magicdraw.actions.ActionsConfiguratorsManager;
import com.nomagic.magicdraw.core.Application;

/**
 * This class allows you to load your plugin in MagicDraw
 *
 * @author Xavier Seignard
 */
public class SimplePlugin extends Plugin {

    // Methods
    /**
     * Plugin initialization and registration of the action in MagicDraw
     */
    public void init() {
        try {
            // We create a new actions category
            ActionsCategory category = new ActionsCategory(null, null);
            // We add our plugin action in this newly created category
            category.addAction(new SimplePluginAction());
            // We get the MagicDraw action manager
            ActionsConfiguratorsManager manager = ActionsConfiguratorsManager.getInstance();
            // We add our new configuration for our category in the MagicDraw action manager
            manager.addContainmentBrowserContextConfigurator(new BrowserContextConfigurator(category));
            // If everything is OK we log it to the MagicDraw GUI logger
            // Not really clever to put it there, but it's just to show how to log something in MagicDraw
            Application.getInstance().getGUILog().log("[Simple Plugin] Loading OK");
        }
        catch (Exception e) {
            // If something goes wrong we log it to the MagicDraw GUI logger
            Application.getInstance().getGUILog().log(
                    "[Simple Plugin] Could not instantiate plugin : " + e.toString());
        }
    }

    /**
     * The plugin is always supported, no matter the version of MagicDraw, or the perspective, or what you want.
     *
     * @return always true
     */
    public boolean isSupported() {
        return true;
    }

    /**
     * Return true always, because this plugin does not have any close specific actions.
     *
     * @return always true
     */
    public boolean close() {
        return true;
    }
}</pre>
<h1>This plugin has to do something!</h1>
<h2>How to trigger it?</h2>
<p>Some plugin can just listen to some event, or it can be triggered by a contextual menu item or a button or whatever. In the case below we add a contextual menu item. (Have a look at the &#8220;<em>com.nomagic.magicdraw.actions.ActionsConfiguratorsManager</em>&#8220;)</p>
<pre lang="java">package fr.free.mdwhatever.simplePlugin;

import com.nomagic.actions.ActionsManager;
import com.nomagic.magicdraw.actions.BrowserContextAMConfigurator;
import com.nomagic.magicdraw.ui.browser.Tree;
import com.nomagic.actions.ActionsCategory;
import com.nomagic.actions.NMAction;
import com.nomagic.magicdraw.actions.MDActionsCategory;
import com.nomagic.actions.AMConfigurator;

/**
 * This class allows you to add your plugin action (i.e. SimplePluginAction.java) in MagicDraw contextual menu.
 * @author Xavier Seignard
 */
public class BrowserContextConfigurator implements BrowserContextAMConfigurator {
    // Attributes

    // Here is the category of the contextual menu where you'll find you plugin
    public final static String SIMPLE_PLUGIN_MENU_CATEGORY = "Simple Plugin Menu Category";
    // Here is the ID of your category
    public final static String SIMPLE_PLUGIN_MENU_ID = "SimplePluginMenuID";
    // Plugin action
    private NMAction action;

    /**
     * Default constructor.
     *
     * @param nmAction the NMAction to set
     */
    public BrowserContextConfigurator(NMAction nmAction) {
        this.action = nmAction;
    }

    // Methods
    /**
     * Adds the plugin in the MagicDraw ui.
     *
     * @param mngr the action manager of MagicDraw to be configured
     * @param tree the containement tree of MagicDraw, where the plugin will be added
     */
    public void configure(ActionsManager mngr, Tree tree) {
        // We try to find the existing category
        ActionsCategory category = (ActionsCategory) mngr.getActionFor(SIMPLE_PLUGIN_MENU_ID);
        // If it doesn't exist we create it
        if (category == null) {
            category = new MDActionsCategory(SIMPLE_PLUGIN_MENU_ID, SIMPLE_PLUGIN_MENU_CATEGORY);
            category.setNested(true);
            mngr.addCategory(category);
        }
        // Then we add the action to the category
        category.addAction(action);
    }

    /**
     * Getter for priority.
     *
     * @return the priority int
     */
    public int getPriority() {
        return AMConfigurator.MEDIUM_PRIORITY;
    }
}</pre>
<h2>Set its behaviour</h2>
<p>You have to extend the corresponding action, in this case : <strong>DefaultBrowserAction</strong>.</p>
<pre lang="java">package fr.free.mdwhatever.simplePlugin;

import java.awt.event.ActionEvent;
import javax.swing.JOptionPane;
import com.nomagic.magicdraw.ui.browser.actions.DefaultBrowserAction;
import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.Element;

/**
 * This class defines the behavior of the action in your plugin.
 *
 * @author Xavier Seignard
 */
public class SimplePluginAction extends DefaultBrowserAction {
    // Attributes
    // Serial version UID.
    private static final long serialVersionUID = 1L;
    // The name of the action which will be displayed in MagicDraw
    private static final String SIMPLE_PLUGIN_ACTION_NAME = "Simple Plugin Action";
    // The id of the action which will be displayed in MagicDraw
    private static final String SIMPLE_PLUGIN_ACTION_ID = "SimplePluginActionID";

    /**
     * Default constructor.
     *
     * @throws Exception if the super(...) call fails
     */
    public SimplePluginAction() throws Exception {
        super(SIMPLE_PLUGIN_ACTION_ID, SIMPLE_PLUGIN_ACTION_NAME, null, null);
    }

    // Methods
    /**
     * Here you define what does your action
     *
     * @param actionEvent the triggering event
     */
    public void actionPerformed(ActionEvent actionEvent) {
        SimplePluginBehavior simplePluginBehavior = new SimplePluginBehavior();
        CountingVisitor countingVisitor = simplePluginBehavior.getVisitor();
        // Clear the map for a clean count
        countingVisitor.getMap().clear();

        // Visit the children for counting elements of each type
        simplePluginBehavior.visitChildren((Element) getSelectedObject());
        // Display the counting results
        String result = simplePluginBehavior.returnResults(countingVisitor.getMap());
        JOptionPane.showMessageDialog(null, result);
    }

    /**
     * Defines when your action is available.
     */
    public void updateState() {
        // This action is only available when your click on an instance of Element in the containment tree
        if (this.getSelectedObject() != null) {
            if (this.getSelectedObject() instanceof Element) {
                setEnabled(true);
            }
            else {
                setEnabled(false);
            }
        }
        else {
            setEnabled(false);
        }
    }
}</pre>
<h2>This visitor pattern</h2>
<p>The visitor pattern is well implemented in the Magicdraw open API, and it saves you a lot of efforts, so use it!</p>
<pre lang="java">package fr.free.mdwhatever.simplePlugin;

import java.util.HashMap;
import com.nomagic.magicdraw.uml.BaseElement;
import com.nomagic.magicdraw.uml.ClassTypes;
import com.nomagic.magicdraw.uml.InheritanceVisitor;
import com.nomagic.uml2.ext.jmi.reflect.VisitorContext;
import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.Element;

/**
 * This class extends InheritanceVisitor to count element through the visitor pattern.
 * @author Xavier Seignard
 *
 */
public class CountingVisitor extends InheritanceVisitor {

    // Map for counting results. Class type is a key, number is a value.
    private HashMap countMap = new HashMap();

    /**
     * The visitation of the element.
     *
     * @param element the element to visit.
     * @param context the context of the visitor.
     */
    public void visitElement(Element element, VisitorContext context) {
        super.visitElement(element, context);
        // Call the count
        countElements(element);
    }

    /**
     * Count elements of each type.
     *
     * @param element the element to count.
     */
    public void countElements(BaseElement element) {
        // We get the human readable name of the element
        String classType = ClassTypes.getShortName(element.getClassType());
        // Then we get the count of this type of elements
        Integer count = countMap.get(classType);
        // If it is the first element of this type we visit, we need to create a new value for the counting
        if (count == null) {
            count = Integer.valueOf(0);
        }
        // Finally we increase the count
        countMap.put(classType, Integer.valueOf(count.intValue() + 1));
    }

    /**
     * Getter for countMap.
     * @return the countMap
     */
    public HashMap getMap() {
        return countMap;
    }
}</pre>
<h2>The implementation of the behavior</h2>
<p>Finally here is the implementation of the behaviour which allows you to calculate some metric like classes per package, or methods per classes :</p>
<pre lang="java">package fr.free.mdwhatever.simplePlugin;

import java.util.HashMap;
import com.nomagic.magicdraw.core.Application;
import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.Element;

/**
 * The behavior of our MagicDraw plugin
 *
 * @author Xavier Seignard
 */
public class SimplePluginBehavior {  

    // Our visitor to count the type of each element.
    private CountingVisitor visitor = new CountingVisitor();

    /**
     * Returns a string containing the counting results
     *
     * @param map the HashMap containing the counting results
     * @return string describing the counting results
     */
    public String returnResults(HashMap map)
    {
        // The string to return
        String textToReturn = "";
        textToReturn += "Number of elements for each types :\n";
        for (String key : map.keySet()) {
            textToReturn += "\t"  + key + " : " + (map.get(key)).intValue() + "\n";
        }

        // Calculation for some means (the real interesting part)
        Integer packages = map.get("Package");
        Integer classes = map.get("Class");
        Integer attributes = map.get("Property");
        Integer operations = map.get("Operation");

        if (packages != null &amp;&amp; classes != null) {
            textToReturn += "Average classes per package : " + (classes.doubleValue()/packages.doubleValue()) + "\n";
        }

        if (classes!=null &amp;&amp; operations!=null) {
            textToReturn += "Average operations per class : " + (operations.doubleValue()/classes.doubleValue()) + "\n";
        }

        if (classes!=null &amp;&amp; attributes!=null)
            textToReturn += "Average attributes per class : " + (attributes.doubleValue()/classes.doubleValue()) + "\n";

        // if map was empty and no elements was found.
        if (textToReturn.length()==0)
        {
            textToReturn = "No elements found!";
        }

        return textToReturn;
    }

    /**
     * We parse all the children of the given root element.
     * For each element, we visit it to count the types of the elements
     *
     * @param rootElement the root element to start counting
     */
    public void visitChildren(Element rootElement)
    {
        try {
            rootElement.accept(visitor);
        }
        catch (Exception e) {
            // If something goes wrong we log it to the MagicDraw GUI logger
            Application.getInstance().getGUILog().log(
                    "[Simple Plugin] Exception occured : " + e.toString());
        }
        // We visit the children elements
        for (Element child : rootElement.getOwnedElement()) {
              visitChildren(child);
        }
    }

    /**
     * Getter for the visitor.
     * @return the visitor
     */
    public CountingVisitor getVisitor() {
        return visitor;
    }
}</pre>
<h1>Conclusion</h1>
<p>You&#8217;re now familiar with the MagicDraw openAPI! So lets go and develop your own plugin!</p>
<p>You&#8217;ll find a packaged version of this Eclipse/Maven2 project there : <a title="magicdraw-simple-plugin.tar.gz" href="http://mdwhatever.free.fr/wp-content/uploads/magicdraw-simple-plugin.tar.gz" target="_blank">magicdraw-simple-plugin.tar.gz</a><br />
To set up your environement, you&#8217;ll have to upload some MagicDraw libs to your maven2 local repo. You&#8217;ll find them in the &#8220;<strong>&lt;MagicDraw_Install_Dir&gt;\lib\</strong>&#8221; directory. The list of the needed libs are described in the &#8220;<strong>dependencies</strong>&#8221; section in the &#8220;<strong>pom.xml</strong>&#8221; file.</p>
<p>You&#8217;ll also need to declare an environement variable &#8220;<strong>MDUML_HOME</strong>&#8221; which is the &#8220;<strong>&lt;MagicDraw_Install_Dir&gt;</strong>&#8220;.</p>
<p>Then if you execute a &#8220;<strong>mvn clean install</strong>&#8221; it will compile the plugin and install it on your MagicDraw installation. And you&#8217;ll just have to start MagicDraw to test the plugin.</p>
<p>In a next blog post we&#8217;ll see how to debug your plugins within Eclipse.</p>
<hr />
<p id="note1">1 : Have a look here : <a title="MagicDraw testimonials" href="http://www.magicdraw.com/main.php?ts=navig&amp;=&amp;cmd_show=1&amp;menu=testimonials" target="_blank">http://www.magicdraw.com/main.php?ts=navig&amp;=&amp;cmd_show=1&amp;menu=testimonials</a>, you&#8217;ll find my testimonial!</p>
<p id="note2">2 : Here is the features list of MagicDraw: <a title="MagicDraw features" href="http://www.magicdraw.com/main.php?ts=navig&amp;cmd_show=1&amp;menu=feature_list" target="_blank">http://www.magicdraw.com/main.php?ts=navig&amp;cmd_show=1&amp;menu=feature_list</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mdwhatever.free.fr/index.php/2010/03/how-to-develop-your-magicdraw-plugin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Maven2 : &#8220;l&#8217;orchestrateur&#8221; de l&#8217;ingénierie des modèles</title>
		<link>http://mdwhatever.free.fr/index.php/2010/01/maven2-lorchestrateur-de-lingenierie-des-modeles/</link>
		<comments>http://mdwhatever.free.fr/index.php/2010/01/maven2-lorchestrateur-de-lingenierie-des-modeles/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 10:12:59 +0000</pubDate>
		<dc:creator>xavier</dc:creator>
				<category><![CDATA[Maven2]]></category>
		<category><![CDATA[Model Driven]]></category>
		<category><![CDATA[emf]]></category>
		<category><![CDATA[magicdraw]]></category>
		<category><![CDATA[mde]]></category>
		<category><![CDATA[mia-software]]></category>

		<guid isPermaLink="false">http://mdwhatever.free.fr/?p=32</guid>
		<description><![CDATA[Dans un contexte d&#8217;ingénierie des modèles, Maven2 est un outil formidable pour orchestrer les différents traitements que subissent nos modèles. C&#8217;est ce que nous appliquons chez le client chez qui j&#8217;interviens. Maven2 nous sert (entre autres) à : Exécuter un export vers XMI depuis MagicDraw ; Exécuter des fonctionalités particulières de MagicDraw sans pour autant]]></description>
			<content:encoded><![CDATA[<p>Dans un contexte d&#8217;ingénierie des modèles, Maven2 est un outil formidable pour orchestrer les différents traitements que subissent nos modèles.</p>
<p>C&#8217;est ce que nous appliquons chez le client chez qui j&#8217;interviens.</p>
<p>Maven2 nous sert (entre autres) à :</p>
<ul>
<li>Exécuter un export vers XMI depuis MagicDraw ;</li>
<li>Exécuter des fonctionalités particulières de MagicDraw sans pour autant lancer MagicDraw en mode graphique ;</li>
<li>Exécuter nos propres plugins MagicDraw ;</li>
<li>Valider nos modèles avec nos propres règles de validation codées avec l&#8217;API emf/uml2 d&#8217;eclipse ;</li>
<li>Lancer nos transformations de modèle ;</li>
<li>Et finalement de générer avec MIA-Generation.</li>
</ul>
<p><span id="more-32"></span><br />
Pour certaines des tâches ci-dessus il existe des plugins Maven2, pour les autres vous pouvez développer vos propres plugins Maven2.</p>
<p>Pas de panique, la courbe d&#8217;apprentissage est faible, et on obtient rapidement ce que l&#8217;on veut!</p>
<p>Malheureusement, il n&#8217;est pas toujours facile de trouver de la documentation sur la création de plugins pour Maven2.<br />
Pour vous aider à débuter, voici quelques liens qui m&#8217;ont été très utiles :</p>
<ul>
<li><a href="http://maven.apache.org/developers/">Maven Developer Centre</a></li>
<li><a href="http://maven.apache.org/ref/2.1.0/maven-plugin-api/apidocs/index.html">API Maven 2.1.0 &#8211; Plugin</a></li>
<li><a href="http://maven.apache.org/ref/2.1.0/apidocs/index.html">API Maven 2.1.0 &#8211; Full</a></li>
<li><a href="http://maven.apache.org/guides/plugin/guide-java-plugin-development.html">Guide to Developing Java Plugins for Maven2</a></li>
<li><a href="http://docs.codehaus.org/display/MAVENUSER/Mojo+Developer+Cookbook">Mojo Developer Cookbook</a></li>
<li><a href="http://docs.codehaus.org/display/MAVENUSER/Write+your+own+report+plugin">Write your own report plugin</a></li>
<li><a href="http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide">Maven Properties Guide</a></li>
<li><a href="http://www.sonatype.com/people/2009/08/create-a-customized-build-process-in-maven/">Create a Customized Build Process in Maven</a></li>
<li><a href="http://www.sonatype.com/books/mcookbook/reference/ch04s04.html#d0e2206">Creating an Ant Maven Plugin</a></li>
<li><a href="http://blog.tartachuc.org/2008/07/07/creer-un-packaging-maven2/">Créer un nouveau packaging Maven</a></li>
<li><a href="http://maven.apache.org/plugins/maven-docck-plugin/">Maven DOCCK Plugin &#8211; Documentation Validation</a></li>
<li><a href="http://maven.apache.org/guides/mini/guide-embedding-m2.html">Maven &#8211; The Maven Embedder</a></li>
<li><a href="http://tetedebois.org/fr/2009/01/19/maven-embarque/">Tetedebois.org » Maven embarqué</a></li>
<li><a href="http://www.mail-archive.com/users@maven.apache.org/msg66057.html">Re: Maven Embedder Example?</a></li>
<li><a href="http://www.developers-blog.org/blog/default/2009/09/18/How-to-resolve-an-artifact-with-maven-embedder">How to resolve an artifact with maven embedder</a></li>
</ul>
<p>Le rendez-vous est pris avec Maven3!</p>
]]></content:encoded>
			<wfw:commentRss>http://mdwhatever.free.fr/index.php/2010/01/maven2-lorchestrateur-de-lingenierie-des-modeles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
