<?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>The Metalevel &#187; MDD</title>
	<atom:link href="http://pjmolina.com/metalevel/category/mdd/feed/" rel="self" type="application/rss+xml" />
	<link>http://pjmolina.com/metalevel</link>
	<description>Abstraction based levitation</description>
	<lastBuildDate>Mon, 26 Jul 2010 18:00:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Hello World with Essential, the video</title>
		<link>http://pjmolina.com/metalevel/2010/07/hello-world-with-essential/</link>
		<comments>http://pjmolina.com/metalevel/2010/07/hello-world-with-essential/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 15:19:47 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[Essential]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[mde]]></category>
		<category><![CDATA[mdsd]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=612</guid>
		<description><![CDATA[The Hello World sample is a nice starting point to show the syntax and capabilities of every new language. This test is also useful for code generators and Domain Specific Languages (DSLs) also as a proof of concept. Following this honorable tradition, I have created a video showing the capabilities of Essential: the tool I [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" style="margin-left: 10px;" title="Essential Logo" src="/img/LogoEssential300px.png" alt="Essential Logo" width="180" height="99" /></p>
<p>The <a title="Hello World" href="http://en.wikipedia.org/wiki/Hello_world_program" target="_blank">Hello World sample</a> is a nice starting point to show the syntax and capabilities of every new language. This test is also useful for code generators and Domain Specific Languages (DSLs) also as a proof of concept.</p>
<p>Following this honorable tradition, I have created a video showing the capabilities of <strong><a title="Essential" href="http://pjmolina.com/metalevel/essential/">Essential</a></strong>: the tool I am working on for doing agile Model Driven Development.</p>
<p>In this 10 minutes video you will get a general idea of the DSL the language provides to create:</p>
<ul>
<li>metamodels</li>
<li>models</li>
<li>templates</li>
<li>and control transformations</li>
</ul>
<p>In order to see the details, jump to Vimeo, activate the High Definition mode (HD) and set full screen (sorry embebed version is not good enough).</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="281" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=13587681&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="500" height="281" src="http://vimeo.com/moogaloop.swf?clip_id=13587681&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/13587681">Essential IDE &#8211; Hello World sample</a> from <a href="http://vimeo.com/user3817869">Pedro J. Molina</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>More info about it and 12 usage scenarios in the last Code Generation 2010 presentation about <a title="Tailored Code Generators" href="http://pjmolina.com/metalevel/2010/06/tailored-code-generators-at-cg2010/">Tailored Code Generators</a>.</p>
<p>Share your impressions!</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2010/07/hello-world-with-essential/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Language Workbench Competition 2011</title>
		<link>http://pjmolina.com/metalevel/2010/07/language-workbench-competition-2011/</link>
		<comments>http://pjmolina.com/metalevel/2010/07/language-workbench-competition-2011/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 20:02:45 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[language workbench]]></category>
		<category><![CDATA[lwc2011]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=617</guid>
		<description><![CDATA[Language Workbenches, as defined originally by Martin Fowler, are tools aiming to cope with DSL creation and code generation to increase the level of abstraction of software development. Currently, the main efforts on MDD, MDE, MDSD (model-driven-whatever you prefer&#8230;) are focused in the development of this kind of tools perceived as a hot research area for [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Language Workbenches</strong>, as defined originally by <a href="http://martinfowler.com/articles/languageWorkbench.html" target="_blank">Martin Fowler</a>, are tools aiming to cope with DSL creation and code generation to increase the level of abstraction of software development.</p>
<p>Currently, the main efforts on MDD, MDE, MDSD (model-driven-<em>whatever you prefer</em>&#8230;) are focused in the development of this kind of tools perceived as a hot research area for Software Engineering.</p>
<p>In this scenarion, Cambridge, at <a title="Code Generation 2010" href="http://www.codegeneration.net/cg2010/index.php">Code Generation 2010</a> was the perfect place for sparkling the idea of promoting a contest to show and compare the advances of different language workbenches.</p>
<p>The <strong><a title="Language Workbench Competition 2011" href="http://www.languageworkbenches.net/" target="_blank">Language Workbench Competition</a></strong> born with the objective to serve as a point of comparison between different tools in this exciting and fast moving area.</p>
<p>The competition is now open to the public. So anyone interested can enroll and implement the <a title="LWC2011 Challenge" href="http://www.delphino-consultancy.nl/lwc/LWCTask-1.0.pdf" target="_blank">proposed challenge</a> just published.</p>
<p>On the other hand, if you want to know more about Language Workbenches, modeling and code generation add this <a title="Language Workbench Competition" href="http://www.languageworkbenches.net/">page</a> to you bookmarks and come back in few months to see some proposals.</p>
<p>The promoters of the idea are: <a title="Markus Völter" href="http://www.voelter.de/" target="_blank">Markus Völter</a>, <a title="Eelco Visser" href="http://blog.eelcovisser.net/" target="_blank">Eelco Visser</a>, <a title="Steven Kelly" href="http://www.metacase.com/blogs/stevek/blogView" target="_blank">Steven Kelly</a>, <a title="Angelo Hulshout" href="http://www.hulshout.nl/" target="_blank">Angelo Hulshout</a>, <a title="Jos Warmer" href="http://www.modeldrivensoftware.net/profile/JosWarmer" target="_blank">Jos Warmer</a>, <a title="Bernhard Merkle" href="http://www.modeldrivensoftware.net/profile/BernhardMerkle" target="_blank">Bernhard Merkle</a>, <a title="Karsten Thoms" href="http://kthoms.wordpress.com/" target="_blank">Karsten Thoms</a> and <a title="Pedro J. Molina" href="http://pjmolina.com/metalevel/about/" target="_blank">myself</a>.</p>
<p>So this a <em>call to arms</em> but with sportsmanship!</p>
<p><a title="Angelo Hulshout" href="http://www.hulshout.nl/?p=491" target="_blank">Angelo</a> and <a title="Markus Völter" href="http://voelterblog.blogspot.com/2010/07/language-workbench-competition-2011.html" target="_blank">Markus</a> has already started the calling.</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2010/07/language-workbench-competition-2011/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tailored Code Generators at CG2010</title>
		<link>http://pjmolina.com/metalevel/2010/06/tailored-code-generators-at-cg2010/</link>
		<comments>http://pjmolina.com/metalevel/2010/06/tailored-code-generators-at-cg2010/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 22:52:15 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[DSL]]></category>
		<category><![CDATA[Essential]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[cg2010]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=603</guid>
		<description><![CDATA[I presented the following talk: DSL and tool support for Tailored Code Generators at Code Generation 2010, at Cambridge, UK on June 18th. CG2010 Tailored Code Generators View more presentations from Pedro J. Molina. It also was the public presentation of Essential: the tooling supporting my approach for applying MDD. I got a very good [...]]]></description>
			<content:encoded><![CDATA[<p>I presented the following talk: <strong><a title="DSL and tool support for Tailored Code Generators" href="http://www.codegeneration.net/cg2010/sessioninfo.php?session=15" target="_blank">DSL and tool support for Tailored Code Generators</a></strong><strong> </strong> at <strong><a title="Code Generation 2010" href="http://www.codegeneration.net/cg2010/index.php" target="_blank">Code Generation 2010</a></strong>, at Cambridge, UK on June 18th.</p>
<div id="__ss_4579382" style="width: 425px;"><strong><a title="CG2010 Tailored Code Generators" href="http://www.slideshare.net/pjmolina/cg2010-tailored-code-generators-4579382">CG2010 Tailored Code Generators</a></strong><object id="__sse4579382" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cg2010tailoredcodegenerators-100622173311-phpapp02&amp;stripped_title=cg2010-tailored-code-generators-4579382" /><param name="name" value="__sse4579382" /><param name="allowfullscreen" value="true" /><embed id="__sse4579382" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cg2010tailoredcodegenerators-100622173311-phpapp02&amp;stripped_title=cg2010-tailored-code-generators-4579382" name="__sse4579382" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/pjmolina">Pedro J. Molina</a>.</div>
</div>
<p>It also was the public presentation of <strong><a title="Essential" href="http://pjmolina.com/metalevel/essential/" target="_self">Essential</a></strong><strong>:</strong> the tooling supporting my approach for applying MDD. I got a very good feedback from the audience and receive many request to test the tool.</p>
<p>People interested in beta testing it can still enroll <a title="Request Essential Evaluation" href="http://bit.ly/9SbgvP" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2010/06/tailored-code-generators-at-cg2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Introducing MDSD</title>
		<link>http://pjmolina.com/metalevel/2010/06/introducing-mdsd-in-cg2010/</link>
		<comments>http://pjmolina.com/metalevel/2010/06/introducing-mdsd-in-cg2010/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 07:51:09 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[DSL]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[conference]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=595</guid>
		<description><![CDATA[My yesterday talk slides in Code Generation 2010 about Introducing Model Driven Software Development: CG2010 Introducing MDSD View more presentations from Pedro J. Molina.]]></description>
			<content:encoded><![CDATA[<p>My yesterday talk slides in <a title="Code Generation 2010" href="http://www.codegeneration.net/cg2010/index.php" target="_blank">Code Generation 2010</a> about <a title="Introducing MDSD" href="http://www.codegeneration.net/cg2010/sessioninfo.php?session=101" target="_blank">Introducing Model Driven Software Development</a>:</p>
<div id="__ss_4523046" style="width: 425px;"><strong><a title="CG2010 Introducing MDSD" href="http://www.slideshare.net/pjmolina/cg2010-introducing-mdsd">CG2010 Introducing MDSD</a></strong><object id="__sse4523046" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cg2010introducingmdsd-100617020657-phpapp02&amp;rel=0&amp;stripped_title=cg2010-introducing-mdsd" /><param name="name" value="__sse4523046" /><param name="allowfullscreen" value="true" /><embed id="__sse4523046" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cg2010introducingmdsd-100617020657-phpapp02&amp;rel=0&amp;stripped_title=cg2010-introducing-mdsd" name="__sse4523046" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/pjmolina">Pedro J. Molina</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2010/06/introducing-mdsd-in-cg2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Essential drop</title>
		<link>http://pjmolina.com/metalevel/2010/06/essential-drop/</link>
		<comments>http://pjmolina.com/metalevel/2010/06/essential-drop/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 12:27:38 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[DSL]]></category>
		<category><![CDATA[Essential]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[cg2010]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=587</guid>
		<description><![CDATA[Essential is going to be presented this week in Code Generation 2010 during the session DSL and tool support for building tailored code generators. To celebrate this milestone and give the chance to have more people trying it, an early version is going to be released for the people interested in. If this is your case, [...]]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://pjmolina.com/metalevel/essential"><img class="alignright" title="Essential" src="http://pjmolina.com/img/LogoEssential300px.png" alt="" width="180" height="99" /></a><a title="Essential" href="http://pjmolina.com/metalevel/essential/">Essential</a></strong> is going to be presented this week in <a title="Code Generation 2010" href="http://www.codegeneration.net/cg2010/index.php" target="_blank">Code Generation 2010</a> during the session <a title="DSL and tool support for building tailored code generators." href="http://www.codegeneration.net/cg2010/sessioninfo.php?session=15" target="_blank">DSL and tool support for building tailored code generators</a>.</p>
<p>To celebrate this milestone and give the chance to have more people trying it, an early version is going to be released for the people interested in.</p>
<p>If this is your case, please enroll yourself using the <a title="Essential evaluation form" href="http://spreadsheets0.google.com/embeddedform?formkey=dDZxQXVyM2NJTk1BcVRRZmJqUDRaREE6MQ" target="_blank">evaluation request form</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2010/06/essential-drop/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Nature by Numbers</title>
		<link>http://pjmolina.com/metalevel/2010/05/nature-by-numbers/</link>
		<comments>http://pjmolina.com/metalevel/2010/05/nature-by-numbers/#comments</comments>
		<pubDate>Wed, 12 May 2010 22:25:43 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[DSL]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[3d design]]></category>
		<category><![CDATA[mathematics]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=554</guid>
		<description><![CDATA[Today I want to share an outstanding video found by my colleague Nico. This kind of material always shock and amaze me! When I was a child, I imagine how multimedia contents can effectively be more educational than just using the boring traditional books. I remember myself playing with animated GIFs to show the cyclic nature of the glucose [...]]]></description>
			<content:encoded><![CDATA[<p>Today I want to share an <strong>outstanding video</strong> found by my colleague <a title="Nico" href="http://twitter.com/ncornag" target="_blank">Nico</a>.</p>
<p>This kind of material always shock and amaze me!</p>
<p>When I was a child, I imagine how multimedia contents can effectively be more educational than just using the boring traditional books. I remember myself playing with animated GIFs to show the cyclic nature of the <a title="Glucose" href="http://en.wikipedia.org/wiki/Glucose" target="_blank">glucose</a> and later on playing with Powerpoint, Flash, etc. to try to explain complex things visually. I prefer a good picture than a thousand of words.</p>
<p>Thereby, when I see a video like the next one I need to see it two or three more times till be able to close the mouth and that only happens just after satisfying my curiosity and gathering the full details. Math, nature and a piece of art, all in one.</p>
<p>Now enjoy it and turn on the full screen mode!</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="281" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=9953368&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="500" height="281" src="http://vimeo.com/moogaloop.swf?clip_id=9953368&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/9953368">Nature by Numbers</a> from <a href="http://vimeo.com/eterea">Cristóbal Vila</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>The three principles explained in the video:</p>
<ul>
<li><a title="Fibonacci numbers" href="http://en.wikipedia.org/wiki/Fibonacci_number" target="_blank">Fibonacci numbers</a>,</li>
<li>Phi (φ), the <a title="Phi: the golden ratio" href="http://en.wikipedia.org/wiki/Golden_ratio" target="_blank">golden ratio</a>, the golden number, and</li>
<li><a title="Delaunay triangulation" href="http://en.wikipedia.org/wiki/Delaunay_triangulation" target="_blank">Delaunay-Voronoy growth</a>.</li>
</ul>
<p><a title="Intro to: Nature by Numbers" href="http://www.etereaestudios.com/docs_html/nbyn_htm/intro.htm" target="_blank">Intro</a> and the <a title="Nature by numbers. Making of" href="http://www.etereaestudios.com/docs_html/nbyn_htm/wip_index.htm" target="_blank">making-of</a>.</p>
<p>After seen the video, and coming back from the off-topic, <em>isn&#8217;t beauty to dream about that, may be, Nature is really model-driven&#8230; and actually has a complex and hidden metamodel governing it all?</em></p>
<p>All credits to <a href="http://www.etereaestudios.com/docs_html/general_index_htm/cristobal.htm" target="_blank">Cristóbal Vila</a>, <a href="http://www.etereaestudios.com/" target="_blank">Etérea Studios</a> and his <a href="http://www.etereaestudios.com/docs_html/general_index_htm/works_01.htm" target="_blank">great videos</a>.</p>
<p><em>¡Que bueno! ¡Maño! Me quito el sobrero.</em></p>
<p><em><br />
</em></p>
<p><strong>Additional Model Driven bonus:</strong> Reviewing the making-of I found two visual models (DSL) (<a title="DSL1" href="http://www.etereaestudios.com/docs_html/nbyn_htm/wip_07.htm" target="_blank">this</a> and <a title="DSL2" href="http://www.etereaestudios.com/docs_html/nbyn_htm/wip_06.htm" target="_blank">this</a> using <a title="XPresso" href="http://www.maxon.net/en/products/cinema-4d/highlights/xpresso.html" target="_blank">XPresso</a>) describing algorithms in a visual form driving the animation in two scenes. Wow!</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2010/05/nature-by-numbers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Presenting on Semana Informatica 2010</title>
		<link>http://pjmolina.com/metalevel/2010/04/presenting-on-semana-informatica-2010/</link>
		<comments>http://pjmolina.com/metalevel/2010/04/presenting-on-semana-informatica-2010/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 20:20:49 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=539</guid>
		<description><![CDATA[On April 27, my colleague Nicolas Cornaglia and I will be presenting a talk with some live demos in Valencia, Spain representing our company Capgemini, in the scope of the event Semana Informatica 2010. The title of the talk will be: Productivity through frameworks and MDD. The session will be delivered in Spanish. Full agenda (PDF version) [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.semanainformatica.com"><img class="alignright" style="margin-left: 5px; border: 0px initial initial;" title="Enlace a semanainformatica.com" src="http://www.semanainformatica.com/images/stories/promociones/banner1-2010.gif" border="0" alt="Enlace a semanainformatica.com" width="240" height="80" /></a></p>
<p>On April 27, my colleague <a title="niko's mini factory" href="http://nikofactory.blogspot.com/" target="_blank">Nicolas Cornaglia</a> and I will be presenting a talk with some live demos in Valencia, Spain representing our company <a title="Capgemini España" href="http://www.es.capgemini.com" target="_blank">Capgemini</a>, in the scope of the event <strong><a title="Semana Informatica 2010" href="http://www.semanainformatica.com/" target="_blank">Semana Informatica 2010</a></strong>.</p>
<p>The title of the talk will be: <strong>Productivity through frameworks and MDD</strong>.</p>
<p>The session will be delivered in Spanish. Full <a title="Agenda" href="http://www.semanainformatica.com/edicion-2010/programa.html" target="_blank">agenda</a> (<a title="Program PDF version" href="http://www.semanainformatica.com/images/stories/documentacion/triptico/programa%20semanainformatica%202010.pdf" target="_blank">PDF version</a>) and <a title="Session details" href="http://www.semanainformatica.com/edicion-2010/programa/155-seminario-capgemini.html" target="_blank">session details</a>.</p>
<p><strong>Abstract:</strong></p>
<p>Business applications for Enterprise Software usually follows a fixed set of standards (global or in-house) to help in keeping the maintenance cost as lower as possible (reducing TCO). In this context, homogeneity and regulation compliance is frequently a must.</p>
<p>The main issue in our presentation will be to show how an approach based in a good framework, modeling tools and code generation techniques can be <strong>the right tools</strong> to achieve a <em>high degree of standarization, quality, productivity and flexibility </em>to evolve the <strong>Enterprise Architecture</strong>. Such flexibility is key to provide a better <em>Time to Market</em> when a business process change or a technical requirement suddenly emerges.</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2010/04/presenting-on-semana-informatica-2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Balancing Variability &amp; Commonality</title>
		<link>http://pjmolina.com/metalevel/2010/03/balancing-variability-commonality/</link>
		<comments>http://pjmolina.com/metalevel/2010/03/balancing-variability-commonality/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 21:53:45 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[commonality]]></category>
		<category><![CDATA[metamodeling]]></category>
		<category><![CDATA[variability]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=532</guid>
		<description><![CDATA[When creating a DSL (Domain Specific Language) one of the most important choices is to decide about what items in your domain are going to be considered variable, changeable and which ones are going to be considered fixed, carved in stone. The former need to be specified in your DSL, in your design or may [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/pinksherbet/233228813/sizes/l/"><img class="aligncenter" title="Free Child Walking on White Round Spheres Balance CC via Pink Sherbet at Pink Sherbet." src="http://farm1.static.flickr.com/93/233228813_ae74d9ec1d.jpg" alt="" width="500" height="229" /></a></p>
<p>When creating a DSL (Domain Specific Language) one of the most important choices is to decide about what items in your domain are going to be considered variable, changeable and which ones are going to be considered fixed, carved in stone.</p>
<p>The former need to be specified in your DSL, in your design or may be coded. The latter are considered immutable and will remain static for all your derived applications for ages.</p>
<p>Considering that everything is static it is obviously useless. On the contrary, considering every aspect variable drives to another no-end getting nothing tangible again as a result. Therefore, in the middle we will have to search for the virtue.</p>
<p>The main issue here is to study a domain and ponder between variable parts and fixed parts. It is not a trivial thing to do from the very beginning. Experience in DSL construction and specially, experience in the domain helps to train your smell, but there are not clear rules for it, nevertheless.</p>
<p>It is not only about knowing your requirements. It is about trying to predict how your requirements will change across time and what types of requirements have more likelihood and tendency to change.</p>
<h2>Adding variability</h2>
<p>A variable part could be, for example, the background color of your application. If so, you need to add syntax and semantics to your DSL to capture such property. Let’s say you can express somewhere in your specification:  <code>{ background-color = peach; }</code></p>
<p>We can select the peach color for app1, and may be ivory for app2.</p>
<p>However, nothing is for free and this freedom comes with the followings possible drawbacks:</p>
<ul>
<li>You need to increase the size of your language (DSL), editors, model checkers, compilers and code generation or interpreters.</li>
<li>Users have to provide a value for such property unless you have also provided a sensible default value in case of missing information.</li>
<li>Homogeneity across applications vanishes with respect to background-color. Now it’s a user choice (the one in control of the modeling tool).</li>
<li>Specs are more complex.</li>
</ul>
<h2>Adding commonality</h2>
<p>On the other hand, if you consider the background of your application should be always the same because you are following, for example, a user interface style guide then, the background color is a fixed issue. Its value is provided by design by a style guide, by an architect, or design choice and the user modeling has no control over it.</p>
<p>In this scenario, the DSL is smaller. No need to specify the background color, it is implicit, it is no included in the model/specification.</p>
<p>With this kind of choice, we are betting for standardization. A shared library, a runtime framework or an interpreter will take care of supplying the right color in the right moment.</p>
<ul>
<li>Users can not change the background color, specs are smaller.</li>
<li>Standardization is improved across applications.</li>
<li>User has no control on the feature.</li>
</ul>
<h2>But, what is the right choice?</h2>
<p>It depends. There is no right choice with the information given till the moment. To answer the question we need to consider if the background color is a fundamental feature in our domain and it is needed to be different from application to application or may be, on the contrary, the color should be used in an homogeneous way following a predefined style guide.</p>
<p>Again, the domain imposes the rules to follow. Studding the domain and its variability is crucial to create a consistent DSLs focused in gathering the key features of the domain in a model: <strong>the important and variable ones</strong>. The important and fixed ones must be also identified but they shouldn’t be included into the model, but into the framework or the runtime.</p>
<h2>Standards, policy assurance, compliance</h2>
<p>Everything related to standard procedures, compliance and in-house stile guidelines are first-class candidates for standardization. If done in that way, your developers will not have to remember all that weird standard and compliance rules when developing a specific artifact.</p>
<p>A code generator will provide the right value for them. It will do it silently, without errors neither oversights. All the boring code dedicated to plumbing applications like: naming guidelines, service publication, serialization, persistence, adapters, proxies, skeletons, stubs, DAO code are driven by strict standards and best practices and are natural candidates for strong automation by code generators.</p>
<p>Moreover, if the regulation or the standard changes, the change will have impact in the following assets:</p>
<ul>
<li>a single change to a framework will be enough</li>
<li>or a change to a code generator and then forcing a regeneration process and redeploy.</li>
</ul>
<p>In both cases, it is cheaper that manually reviewing a set of in-production applications.</p>
<p>For example, think about replacing your data-layer access code from a DAO pattern and SQL to an ORM based approach like Hibernate.</p>
<h2>Business Know-How</h2>
<p>The core of the business Know-How is the important and the variable parts we are interested in to be collected in a specification. Such features need to be modeled, and if possible, abstracted from the technology that will implement it.</p>
<p>If we do it in this way, the model can survive the current technology.</p>
<p>Why we could be interested in do it in such a way?</p>
<p><strong>Just because technology evolves like fashion.</strong> Today everyone likes red T-shirts, tomorrow blue jeans will be sublime! Basic, Cobol, C, Java, C#, Ruby… what is the next language to use in 5 years time?</p>
<p>Use your best bet, whatever platform better fulfills your requirements, but I it could be nice to see the business process surviving the technology. <img src='http://pjmolina.com/metalevel/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />   We don’t know in which direction, but technology will evolve, and will change for sure.</p>
<h2>Maintaining a language or a DSL</h2>
<p>When a DSL or a language needs a review you will be probably considering adding new features to the language.</p>
<p>Each new feature will increase the variability and increase the complexity of the language. Before deciding to add a new modeling feature make a cost/benefits analysis and double check that the valued added by the improvement is greater than the cost of implementing it.</p>
<p>I like to follow the golden rule proposed by <a title="Gordon S. Novak" href="http://userweb.cs.utexas.edu/users/novak/" target="_blank">Gordon S. Novak</a><strong> </strong>about automatic programming:</p>
<blockquote><p><em>“Automatic Programming is defined as the synthesis of a program from a specification. If automatic programming is to be useful, the specification must be smaller and easier to write than the program would be if written in a conventional programming language.”</em></p></blockquote>
<h2>Conclusion</h2>
<p>Whenever is possible:</p>
<ul>
<li><strong>Business Know-How</strong> should be captured by models, specs, DSLs.</li>
<li><strong>Technical Know-How</strong> should be captured by code generators, model interpreters, best practices and patterns.</li>
</ul>
<p>So, at the end of the day I like the following pair of quotes to sum up about what to include in a model:</p>
<ul>
<li>The Spanish writer <a title="Baltasar Gracián" href="http://en.wikipedia.org/wiki/Baltasar_Graci%C3%A1n" target="_blank">Baltasar Gracián</a> in the XVII century said <em>“Lo bueno si breve, dos veces bueno.”</em> (a literal translation from Spanish could be: <em>“Good things if brief, twice good.”</em>)</li>
<li>On the other side, <a title="Albert Einstein" href="http://en.wikipedia.org/wiki/Albert_Einstein" target="_blank">Albert Einstein</a> (XX century) counterpoints <em>“Things should be as simple as possible, but not simpler.”</em></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2010/03/balancing-variability-commonality/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Countdown for CG2010</title>
		<link>http://pjmolina.com/metalevel/2010/03/countdown-for-cg2010/</link>
		<comments>http://pjmolina.com/metalevel/2010/03/countdown-for-cg2010/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 21:07:24 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[conference]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=524</guid>
		<description><![CDATA[The Programme for Code Generation 2010 has been published. This year Mark has invited me to give an introductory session to Model Driven Software Development (MDSD) oriented to begginers. Also, I will discuss in a second session about creating tailored code generators. See you in Cambridge in June!]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.codegeneration.net/cg2010/index.php"><img class="aligncenter" title="CG2010 Logo" src="http://www.codegeneration.net/cg2010/images/CG2010logo250x64.gif" alt="" width="250" height="64" /></a></p>
<p style="text-align: left;">The Programme for <a title="Code Generation 2010 Programme" href="http://www.codegeneration.net/cg2010/programme.php" target="_blank">Code Generation 2010</a> has been published.</p>
<p>This year <a title="Mark Dalgarno" href="http://blog.software-acumen.com/2010/03/13/cg2010-program-launched/" target="_blank">Mark</a> has invited me to give an introductory session to <a href="http://www.codegeneration.net/cg2010/sessioninfo.php?session=101" target="_blank">Model Driven Software Development</a> (MDSD) oriented to begginers.</p>
<p>Also, I will discuss in a second session about <a title="Tailored code generatiors" href="http://www.codegeneration.net/cg2010/sessioninfo.php?session=15" target="_blank">creating tailored code generators</a>.</p>
<p>See you in <a title="CG2010" href="http://www.codegeneration.net/cg2010/index.php" target="_blank">Cambridge</a> in June!</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2010/03/countdown-for-cg2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Metalevels &amp; Meta-metalevels</title>
		<link>http://pjmolina.com/metalevel/2010/02/metalevels-and-meta-metalevels/</link>
		<comments>http://pjmolina.com/metalevel/2010/02/metalevels-and-meta-metalevels/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 18:17:29 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[MDD]]></category>
		<category><![CDATA[metamodel]]></category>
		<category><![CDATA[model]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=174</guid>
		<description><![CDATA[It seems like a tongue twister, and sometimes it is. Modeling and metamodeling is always a topic subject to high probability of misinterpretation. At the end, the concepts involved has subtle differences, but talking about then in different levels depending on the properties we want to stress. My friend Peter Bell posted some time ago, a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/angryromancegrrl/442644984/sizes/l/"><img class="alignright" style="margin-left: 15px;" title="Teotihuacan pyraminds. Credits by Sharron McClellan via Flickr.com" src="http://farm1.static.flickr.com/170/442644984_8447ca44bb_m.jpg" alt="" width="240" height="180" /></a>It seems like a tongue twister, and sometimes it is. Modeling and metamodeling is always a topic subject to high probability of misinterpretation. At the end, the concepts involved has subtle differences, but talking about then in different levels depending on the properties we want to stress.</p>
<p>My friend Peter Bell posted some time ago, a nice introductory article to <a title="Models, Meta Models and Meta-Meta Models, oh My!" href="http://www.pbell.com/index.cfm/2009/6/24/Models-Meta-Models-and-MetaMeta-Models-oh-My" target="_blank">models, metamodels and meta-metamodels</a>.</p>
<p>If you have some basic background on databases, the examples Peter provides, will be useful to understand it all.</p>
<p>On the contrary, I usually preffer to explain it starting from the top and then going downto the hill. But I have to recognize than the reverse (as explained by Peter) is probably easy to follow for newcomers.</p>
<p>Now my version:</p>
<p>Take the following concepts: <strong>entity</strong>, <strong>attribute </strong>and <strong>relation</strong>. These are more than enough to create your basic meta-meta-model. With this primitive concepts you can built everything from scratch in every model!</p>
<ul>
<li>OMG / <a title="OMG's Meta Object Facility" href="http://en.wikipedia.org/wiki/Meta-Object_Facility" target="_blank">MOF</a> call this level M3.</li>
<li>When instantiating these M3 concepts, you can build M2 models and create meta-models for UML class diagrams, or state-machines. For example, UML class can be described as an entity with an attribute called Name, etc.</li>
<li>Instantiating M2, it allows you to create M1 models: tipically your business problem to deal with invoices (class <strong>Invoice</strong>) and customers (class <strong>Customer</strong>) and its corresponding association relationships.</li>
<li>Finally, when instantiating M1 models, you are finally creating living objects in an M0 world (let&#8217;s call it: <em>The Reality</em>). For example, customer=ACME and invoice=INV0003 are living objects at your aplication run-time.</li>
</ul>
<p>Funny and weird, isn&#8217;t it. It&#8217;s like building aztec pyramids but with a top-down approach.</p>
<p>This layered approach to modeling based in abstraction and instanciation are crucial to undestand MOF, or any meta-modeling tool you ever use.</p>
<p><img class="alignright" title="OMG levels sample." src="http://yuml.me/diagram/scruffy/class/%5BM3%20Entity%5D%5E-instance%20of-%5BM2%20UML%20Class%5D%2C%20%5BM2%20UML%20Class%5D%5E-instance%20of-%20%5BM1%20Customer%20Class%5D%2C%20%5BM1%20Customer%20Class%5D%5E-instance%20of-%5BM0%20ACME%20Object%5D" alt="" width="150" height="510" /></p>
<ul>
<li>M3 (meta-meta-models) used to be hard-wired in metamodeling tools like MetaEdit, EMT, or MS DSL Tools/Corona.</li>
<li>M2 defines the rules for modeling (meta-modeling). A typical metamodel is the UML metamodel hard-wired in each UML tool you use. If your are changing an M1 model, you are creating a new language, in a literal sense. Sample the UML class concept.</li>
<li>M1 are each of the instances or models you create with tools like UML. Sample: a class named Customer.</li>
<li>An M0 sample would be the object ACME persisted as a row in a table and representing a customer in runtime in one particular software, for example.</li>
</ul>
<p style="text-align: center;">
<p>Frequently people ask: why we stop at M3? It&#8217;s is not possible to have M4? An upper model to M3?</p>
<p>Well, the easy answer to this is No.</p>
<p>However the long response is: Can you find a more simple primitive concepts of entity, attribute &amp; relation in a more abstract way and still be capable to derive/express the same concepts? If this is possible and convenient for your domain, then you just have invented your M4 model.</p>
<p>At the end, you start defining some primitive concepts like <strong>axioms</strong>: they can not be simplified or divided in simpler parts and ones axioms can not deriver others.</p>
<p>Note that you can use as many levels as needed, but you need a root level containing the axioms to start from and a M0 to set an arbitrary reference for the reality. To my preferences, I would have started to name it in the reverse order, M0 for the axioms, and M3 for reality.</p>
<p>The core metamodeling concepts in MOF, EMF, Meta-Edit and MS models are basically the same if you take a look: <strong>entities</strong> or core-classes, <strong>attributes</strong> or properties and <strong>relations</strong>.</p>
<p>From these primitives, it is easy and convenient to build any syntactic construction needed for the lower levels.</p>
<p>On the contrary, how to incorporate the emerging<strong> semantics</strong> in each new level is still a topic for strong discussion. But this is another interesting open topic for another post&#8230;</p>
<p>Long life to meta-meta-modeling!</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2010/02/metalevels-and-meta-metalevels/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
