<?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; .NET</title>
	<atom:link href="http://pjmolina.com/metalevel/category/dotnet/feed/" rel="self" type="application/rss+xml" />
	<link>http://pjmolina.com/metalevel</link>
	<description>Abstraction based levitation</description>
	<lastBuildDate>Tue, 17 Jan 2012 20:22:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Essential on Alt.Net Hispano</title>
		<link>http://pjmolina.com/metalevel/2011/07/essential-on-alt-net-hispano/</link>
		<comments>http://pjmolina.com/metalevel/2011/07/essential-on-alt-net-hispano/#comments</comments>
		<pubDate>Sun, 03 Jul 2011 08:46:15 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[Essential]]></category>
		<category><![CDATA[MDD]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=723</guid>
		<description><![CDATA[The Alt.NET Hispano group has published my VAN about Code generation with Essential. The recording was done in Spanish. La comunidad Alt.NET Hispano ha publicado la VAN (desconferencia) sobre Generación de código con Essential que tuvimos el pasado dia 11 de junio. Si estás interesado en MDD, generación de código y como aplicarlo con Essential, [...]]]></description>
			<content:encoded><![CDATA[<p>The <a title="Alt.NET Hispano" href="http://altnethispano.org">Alt.NET Hispano</a> group has published my VAN about <a title="Generación de Código con Essential" href="http://altnethispano.org/wiki/van-2010-05-28-generacion-de-codigo-con-essential.ashx">Code generation with Essential</a>. The recording was done in Spanish.</p>
<p>La comunidad Alt.NET Hispano ha publicado la VAN (desconferencia) sobre <a title="Generación de código con Essential" href="http://altnethispano.org/wiki/van-2010-05-28-generacion-de-codigo-con-essential.ashx">Generación de código con Essential</a> que tuvimos el pasado dia 11 de junio. Si estás interesado en MDD, generación de código y como aplicarlo con Essential, este video grabado para la comunidad en español es un buen punto de partida.</p>
<p>Mi agradecimiento a Alt.NET Hispano por el interés en la materia y la invitación a divulgarlo.</p>
<p><a title="Descarga directa: Essential Video" href="http://content.screencast.com/users/AltNetHispano/folders/VAN/media/512cfc98-8e47-48a2-8781-a22bf3f40af9/van-2011-06-11.flv?downloadOnly=true">Descarga directa del video</a> (562 Mb).</p>
<p>&nbsp;</p>
<p><span id="more-723"></span></p>
<p><object id="scPlayer" width="700" height="468" data="http://content.screencast.com/users/AltNetHispano/folders/VAN/media/512cfc98-8e47-48a2-8781-a22bf3f40af9/flvplayer.swf" type="application/x-shockwave-flash"><param name="movie" value="http://content.screencast.com/users/AltNetHispano/folders/VAN/media/512cfc98-8e47-48a2-8781-a22bf3f40af9/flvplayer.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="thumb=http://content.screencast.com/users/AltNetHispano/folders/VAN/media/512cfc98-8e47-48a2-8781-a22bf3f40af9/FirstFrame.jpg&amp;containerwidth=800&amp;containerheight=468&amp;analytics=UA-21341284-1&amp;content=http://content.screencast.com/users/AltNetHispano/folders/VAN/media/512cfc98-8e47-48a2-8781-a22bf3f40af9/van-2011-06-11.flv&amp;blurover=false" /><param name="allowFullScreen" value="true" /><param name="scale" value="showall" /><param name="allowScriptAccess" value="always" /><param name="base" value="http://content.screencast.com/users/AltNetHispano/folders/VAN/media/512cfc98-8e47-48a2-8781-a22bf3f40af9/" />Unable to display content. Adobe Flash is required.</object></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2011/07/essential-on-alt-net-hispano/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://content.screencast.com/users/AltNetHispano/folders/VAN/media/512cfc98-8e47-48a2-8781-a22bf3f40af9/van-2011-06-11.flv&amp;amp" length="589272873" type="video/x-flv" />
<enclosure url="http://content.screencast.com/users/AltNetHispano/folders/VAN/media/512cfc98-8e47-48a2-8781-a22bf3f40af9/van-2011-06-11.flv?downloadOnly=true" length="589272873" type="video/x-flv" />
		</item>
		<item>
		<title>Searching for the essential building bricks of MDD</title>
		<link>http://pjmolina.com/metalevel/2010/01/searching-for-the-essential-building-bricks-of-mdd/</link>
		<comments>http://pjmolina.com/metalevel/2010/01/searching-for-the-essential-building-bricks-of-mdd/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 17:41:58 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[Essential]]></category>
		<category><![CDATA[MDD]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=403</guid>
		<description><![CDATA[A title like this could sound utopian and probably it is in the extreme, but at the same time provides two advantages: a suggestive title brings more blogs readers , and these kind of Quests keep me active developing and testing my ideas about MDD. Sorry for 1, the joke. But Let me explain 2 [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.flickr.com/photos/cybergabi/2967324927/"><img class="alignnone" title="Red Brick Wall. Photo by Cibergabi via Flickr.com" src="http://farm4.static.flickr.com/3239/2967324927_5d4016ef2c.jpg" alt="Red Brick Wall. Photo by Cibergabi via Flickr.com" width="500" height="332" /></a></p>
<p>A title like this could sound utopian and probably it is in the extreme, but at the same time provides two advantages:</p>
<ol>
<li>a suggestive title brings more blogs readers <img src='http://pjmolina.com/metalevel/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , and</li>
<li>these kind of Quests keep me active developing and testing my ideas about MDD.</li>
</ol>
<p>Sorry for 1, the joke. But Let me explain 2 a little further if you are interested:</p>
<p><a href="http://www.flickr.com/photos/cybergabi/2967324927/"></a></p>
<p>Some months ago, I started to develop a new tool for doing Model Driven Development. I always start new developments with contained expectatives. I consider most of them throw away propotypes just to test a new way of doing the same thing, but luckily, with less effort and better productivity. But when you found the way, you follow it again whenever you need it, isn’t it?</p>
<p>So, this time is one of those moments: I am quite happy with the results, and I will continue building on the top of it to make it grow.</p>
<p>Today (almost?) everyone agrees on code generation can make your life notably easier as long as you have:</p>
<ol>
<li>a stable domain,</li>
<li>a clear knowledge of your domain (domain expert) and,</li>
<li>tools: modelling editors, model checkers, and code generator adapted to your domain and your chosen target architecture and language.</li>
</ol>
<p>The trickiest one to get is, not surprisingly, the third one. And this issue: the quality and the applicability of the MDD tools is the main stopper when considering applying MDD for a software development project.</p>
<p>So, my motivation during years is not only to create code generators one more time, but do it in a way that it will be cheaper to obtain results in next projects. Therefore, reducing the requirements for the entry level will help the MDD adoption to gain speed.</p>
<p><em>Ok, wait a minute, are you reinventing the wheel again? Building another meta-code-generator?</em></p>
<p>Yes I know, there are very good and mature tools for doing MDD: such as EMF/GMF, XText, ATL, TextUml, Metacase, MS DSL Tools, etc.</p>
<p>However, guided by my intuition and the experiences in the domains I have worked in, I have a strong opinion on of how some things should be done and for the moment I didn’t found the perfect tool to satisfy my needs.</p>
<p>But, instead of complain, I decided to take to the action and add my two cents implementing my view about MDD tool support: taking the good ideas of the standards available and reinventing the parts that don’t fit.</p>
<h2>The tool</h2>
<p>After this introduction, the name of the tool is not going to surprise you. It is named <strong><a title="Essential " href="http://pjmolina.com/metalevel/essential/">Essential</a></strong>.</p>
<p>The goals of the project are following ones:</p>
<ul>
<li>to declaratively describe metamodels, models, templates, and transformations using textual DSLs</li>
<li>to provide a comfortable editor for each of these four pillars,</li>
<li>to provide model checkers to assure the integrity of the four, and</li>
<li>to build code generators and transformation interpreters to achieve the output we are looking for.</li>
</ul>
<p>In the next posts I will depict the DSLs used in Essential and some architectural choices. This will help us to discuss the essence of the problems found in MDD.</p>
<p>I want to thanks Javier Hernandez for his constant help, good discussions and counterpoints about choosing design alternatives for Essential. And also to <a title="Niko's Mini Factory Blog" href="http://nikofactory.blogspot.com/" target="_blank">Nicolas Cornaglia</a> and Ángel Marín for their active beta testing as early adopters and providing good test fields.</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2010/01/searching-for-the-essential-building-bricks-of-mdd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Forward engineering with MDD: A proof of concept</title>
		<link>http://pjmolina.com/metalevel/2009/12/forward-engineering-with-mdd-a-proof-of-concept/</link>
		<comments>http://pjmolina.com/metalevel/2009/12/forward-engineering-with-mdd-a-proof-of-concept/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 00:11:03 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=382</guid>
		<description><![CDATA[Hello everybody! I want to share with you a set of videos to show what I understand when talking about Forward Engineering applied to MDD. First of all, a legal disclaimer: my apologies for the quality of the videos and for my rusty English: I am starting to play with video editing tools and recording [...]]]></description>
			<content:encoded><![CDATA[<p>Hello everybody!</p>
<p>I want to share with you a set of videos to show what I understand when talking about <strong>Forward Engineering</strong> applied to <strong>MDD</strong>.</p>
<p>First of all, a legal disclaimer: <em>my apologies for the quality of the videos and for my rusty English: I am starting to play with video editing tools and recording software so I expect to improve my recording and editing skills on the way. Anyway, I found (I hope) they have enough quality to explain the main ideas. So seeing it is totally up to you! You have been warned!  <img src='http://pjmolina.com/metalevel/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em></p>
<p><em>Also note: see the videos in High Quality mode (HQ) in Youtube. Otherwise, details of the samples probably will not be visible.</em></p>
<p>In a <a title="Scaling MDD for production" href="http://pjmolina.com/metalevel/2009/06/scaling-mdd-for-production/" target="_blank">previous post</a> I introduced a sample of the code that can be generated from a very basic conceptual model. I have created three videos to show you the main steps involved.</p>
<ol>
<li><strong>Modeling (<a title="Forward engineering with MDD: 1/3 Modeling" href="http://www.youtube.com/watch?v=T8seerYgHwc&amp;fmt=6" target="_blank">Video 1/3</a></strong><strong>)</strong>. The first video uses a minimalistic class model created inside Visual Studio 2005 with Microsoft DSL Tools. The sample creates a basic blog structure in less than 5 minutes. Note that in the specification there are no technological choices (neither the types are bind to a concrete language representation).
</li>
<li><strong>Code Generation (<a title="Forward engineering with MDD: 2/3 Code generation" href="http://www.youtube.com/watch?v=ZhUeYXsR7G8&amp;fmt=6" target="_blank">Video 2/3</a>)</strong>. A quick step: Selecting a code generation (selecting a target architecture), fixing the design choices offered by the code generation and pressing the red button: Generate! A full .NET Solution is generated in less than 5 seconds ready to compile.
</li>
<li><strong>A quick code review of the generated code (<a title="Forward engineering with MDD: 3/3 A quick review to the generated code" href="http://www.youtube.com/watch?v=o-md-41irDA&amp;fmt=6" target="_blank">Video 3/3</a>)</strong>. Finally, I am sure you have curiosity to take a look to the output code, don’t you? This third video shows a walkthrough to show:
<ul>
<li>DB Scripts (table creation, foreign keys,  drop scripts)</li>
<li>Database creation</li>
<li>Logic layer: POCOs (Plain Old CLR objects), NHibernate mappings and a Business Service Layer with fully functional CRUD operations.</li>
</ul>
</li>
</ol>
<p>So this is it. It is a proof of concept of how fast and direct MDD tools can be starting from a minimalistic model.</p>
<p>When talking about using or buying modeling &amp; code generation products my advice is:</p>
<ul>
<li>Don’t use models just for documentation. They will be outdated soon or later. On the contrary, a living (generating) model is always in sync with its target application.</li>
<li>Don’t resign yourself to just using code generation of skeletons. As you just have seen the current technology allows you to generate much more.</li>
<li>Don’t be content if anyone try to sell you a model too close or tied in any way to a given target language. Today we have just generated C#, but tomorrow may be we prefer Ruby? Python?</li>
<li>Don’t resign yourself to use a tool married with a specific database. You know, technology changes faster that we usually expect.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2009/12/forward-engineering-with-mdd-a-proof-of-concept/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>NClass 2.0 released!</title>
		<link>http://pjmolina.com/metalevel/2009/07/nclass-2-0-irelease/</link>
		<comments>http://pjmolina.com/metalevel/2009/07/nclass-2-0-irelease/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 22:20:50 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[UML]]></category>
		<category><![CDATA[class diagram]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[nclass]]></category>
		<category><![CDATA[skeleton generation]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=229</guid>
		<description><![CDATA[NClass is a elegant UML class diagram tool oriented to code modeling for the C# &#38; Java languages. It is specially well suited to create your O-O design class model (and think and visualize the full set in terms of Design Patterns) and generate a skeleton for you in C# or Java. On the other [...]]]></description>
			<content:encoded><![CDATA[<p><strong><a title="NClass" href="http://nclass.sourceforge.net/index.html" target="_blank">NClass</a></strong> is a elegant <strong>UML class diagram tool</strong> oriented to code modeling for the C# &amp; Java languages.</p>
<ul>
<li>It is specially well suited to create your O-O design class model (and think and visualize the full set in terms of <a title="Design Patterns [Gamma et al]" href="http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612" target="_blank">Design Patterns</a>) and generate a skeleton for you in C# or Java.</li>
<li>On the other hand, if you need to document <em>a-posteriori</em> (I hope you don&#8217;t do it frequently, by the way), NClass also incorporates a plug-in developed by Malte Ried to reverse engineering a .NET assembly using reflection to extract the classes and draw the corresponding design class model.</li>
</ul>
<p><span id="more-229"></span></p>
<p>In this second mayor version the key new features are:</p>
<ul>
<li>Project-model hierarchy for multiple diagrams</li>
<li>Name, role and multiplicity labels on relationships</li>
<li>Navigation facilities (Model Explorer, Diagram Navigator)</li>
<li>Inline class editor</li>
<li>Visual enhancements (gradient modes,  ClearType, etc.)</li>
<li>Generation of solution files and <em>NotImplementedException</em> as default implementation</li>
</ul>
<p>NClass is coded in C# by my colleague <a title="Balázs Tihanyi on ohloh.net" href="http://www.ohloh.net/accounts/btihanyi" target="_blank">Balázs Tihanyi</a> (based on Budapest) and it&#8217;s released under the GNU Licence.</p>
<p>In version 2.0, NClass supports different languages like Hungarian, English, Russian, Brazilian Portuguese, German, Chinese &amp; Spanish. If you find a bug in the Spanish translation do not complaint  to Balázs. <em>In this case do it directly to me.</em> }:)</p>
<p><a title="Dowloand page for NClass" href="http://nclass.sourceforge.net/downloads.html" target="_blank">Try it</a> &amp; enjoy!</p>
<div class="wp-caption alignnone" style="width: 508px"><a href="http://nclass.sourceforge.net/screenshots.html"><img title="NClass User Interface" src="http://nclass.sourceforge.net/images/screenshots/classic.png" alt="NClass User Interface" width="498" height="396" /></a><p class="wp-caption-text">NClass User Interface</p></div>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2009/07/nclass-2-0-irelease/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Scaling MDD for production</title>
		<link>http://pjmolina.com/metalevel/2009/06/scaling-mdd-for-production/</link>
		<comments>http://pjmolina.com/metalevel/2009/06/scaling-mdd-for-production/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 19:46:32 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[Oslo]]></category>
		<category><![CDATA[CG2009]]></category>
		<category><![CDATA[scale]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=80</guid>
		<description><![CDATA[This was my contribution for the Code Generation 2009 conference. The central idea of my speech was devoted to achieve scalability in MDD tools &#38; methods for industrial application of the MDD technology. I was so glad to see that Markus Völter and Steven Kelly also just 30 minutes before my talk, were addressing the same key issues [...]]]></description>
			<content:encoded><![CDATA[<p>This was my contribution for the <a title="Code Generation 2009" href="http://www.codegeneration.net/cg2009/" target="_blank">Code Generation 2009</a> conference.</p>
<p>The central idea of my speech was devoted to achieve scalability in MDD tools &amp; methods for industrial application of the MDD technology.</p>
<p>I was so glad to see that <a title="Markus Vöelter" href="http://voelterblog.blogspot.com/" target="_blank">Markus Völter</a> and <a title="Steven Kelly's blog" href="http://www.metacase.com/blogs/stevek/blogView" target="_blank">Steven Kelly</a> also just 30 minutes before my talk, were addressing the same key issues in their inspiring keynote: <em>scalability, partitioning, modularization of DSL</em>. This fact reinforce me in the idea that we are really growing as a community (CG) with common problems and aligned in the solutions improving the tools &amp; techniques more and more every year.</p>
<p><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Scaling MDD for production: enabling SoC at model time" href="http://www.slideshare.net/pjmolina/cg09-soc-driven?type=powerpoint">Scaling MDD for production: enabling SoC at model time</a></p>
<div id="__ss_1544278" style="width: 425px; text-align: left;"><object 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=cg09-socdriven-090607063917-phpapp01&amp;rel=0&amp;stripped_title=cg09-soc-driven" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cg09-socdriven-090607063917-phpapp01&amp;rel=0&amp;stripped_title=cg09-soc-driven" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p>There was also time for an small but complete live demo of a small tool <strong>socDriven</strong> running and demonstrating the concepts explained. The tool was implementing a compiler and merger for a small textual DSL. The DSL was parsed using the <a title="OSLO" href="http://msdn.microsoft.com/en-us/oslo/default.aspx">OSLO</a> M<sub>Grammar</sub> to create the AST. A merged engine in a second phase glued the partial specifications producing as output:</p>
<ul>
<li>the same specs merged in a unique file,</li>
<li>the same spec ready to be open with a graphical editor with DSL Tools,</li>
<li>a full code generation solution on VS2008 containing:
<ul>
<li>scripts for SQL Server</li>
<li>a logic layers with <a title="POCO definition" href="http://en.wikipedia.org/wiki/Plain_Old_CLR_Object" target="_blank">POCO</a>s &amp; full NHibernate mappings</li>
<li>a default CRUD service definition,</li>
<li>a default Web Service definition,</li>
<li>and a Windows Form UI ready to query and execute CRUD operations.</li>
</ul>
</li>
</ul>
<p>After the generation of the solution, it can be opened with VS, create the DB launching the scripts provided and pressing just F5 for building and running it all! == (a.k.a<em> the utopia of 0 custom code) </em>};-)</p>
<p>Please, feel free to add your comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2009/06/scaling-mdd-for-production/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making the preparatives for CG09</title>
		<link>http://pjmolina.com/metalevel/2009/05/making-the-preparatives-for-cg09/</link>
		<comments>http://pjmolina.com/metalevel/2009/05/making-the-preparatives-for-cg09/#comments</comments>
		<pubDate>Sun, 03 May 2009 09:00:41 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[Oslo]]></category>
		<category><![CDATA[CG2009]]></category>
		<category><![CDATA[mgrammar]]></category>
		<category><![CDATA[oslo]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=77</guid>
		<description><![CDATA[During these days, I am dedicating a lot of my free time to work on my session &#8220;Scaling MDD for production: Enabling SoC at model-time&#8221; for Code Generation 2009. This year my focus will be directed to stress the importance of prepare your code generator for scalability and discuss some techniques in order to achieve [...]]]></description>
			<content:encoded><![CDATA[<p>During these days, I am dedicating a lot of my free time to work on my session <a href="http://www.codegeneration.net/cg2009/sessioninfo.php?session=8" target="_blank"><em>&#8220;Scaling MDD for production: Enabling SoC at model-time&#8221;</em></a> for <a href="http://www.codegeneration.net/cg2009/index.php" target="_blank">Code Generation 2009</a>.</p>
<p>This year my focus will be directed to stress the importance of prepare your code generator for scalability and discuss some techniques in order to achieve it. <a href="http://en.wikipedia.org/wiki/Separation_of_concerns" target="_blank">Separation of Concerns</a> (SoC) is one of the powerful principles you ever can apply in Computer Science, and I will discuss about how to use it as the basis to split concerns and improve the scalability of the approach.</p>
<p>A custom MDD tool named &#8220;socDriven&#8221; has also been implemented to demonstrate the ideas. This tool has been developed using .NET, the Microsoft OSLO MGrammar &amp; StringTemplate.</p>
<p>See you there to discuss about it!</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2009/05/making-the-preparatives-for-cg09/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oslo at first glance</title>
		<link>http://pjmolina.com/metalevel/2008/12/oslo-at-first-glance/</link>
		<comments>http://pjmolina.com/metalevel/2008/12/oslo-at-first-glance/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 20:04:58 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[oslo]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=39</guid>
		<description><![CDATA[Microsoft is making some noise about Oslo: the new MS approach to Model Driven Development (MDD for friends) and Domain Specific Languages (DSL). As a practitioner and enthusiast of MDD and .NET I was looking forward to try it and see if there are nuts enough to justify the noise. At Models Remixed you can find some [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="Oslo Logo" src="http://pjmolina.com/img/OsloLogo.png" alt="" width="121" height="109" />Microsoft is making some noise about <strong>Oslo: </strong>the new MS approach to Model Driven Development (MDD for friends) and Domain Specific Languages (DSL).</p>
<p>As a practitioner and enthusiast of MDD and .NET I was looking forward to try it and see if there are nuts enough to justify the noise.</p>
<p>At <a title="Models Remixed" href="http://modelsremixed.com/" target="_blank">Models Remixed</a> you can find some nice marketing introductory videos about Model Driven &amp; Oslo. By the way, if you take a look to the funny video about <a id="ctl00_mainContentContainer_ctl01_ctl04" onclick="javascript:Track('ctl00_mainContentContainer_ctl01_ctl01|ctl00_mainContentContainer_ctl01_ctl04',this);" href="http://wm.microsoft.com/ms/msdn/oslo/ModelingThroughtheAges.wmv" target="_blank">Modeling through the ages</a> just remember that the second scene about humans and T-Rex is purely fiction: humans &amp; T-Rex were never concurrent in time. Fortunately T-Rex disappeared a long time before humans get off the trees.<span id="more-39"></span></p>
<p>Much more technical &amp; serious videos can be found at <a href="http://msdn.microsoft.com/es-es/oslo/dd229322(en-us).aspx" target="_blank">the Oslo homepage in MSDN</a>.</p>
<p><strong>Oslo</strong> is the Microsoft codenamed project to embrace MDD as a second wave initiative annunciated by Bill Gates before retiring. The first wave was initiated by <strong>Microsoft DSL Tools</strong> some years ago to support a modeling environment following the steps of Java counterparts EMF/GMF.</p>
<p>The project Oslo is still under development but some bits are available in form of CTP. As seen, Oslo provides the following main components:</p>
<ul>
<li>A <strong>Repository</strong>. A relational, SQL Server based, repository to store models as schemas and models instances as data.</li>
<li>A language called <strong>M</strong>. Or better said, a meta-language used to create languages (textual DSLs) and schemas or models.</li>
<li>A functional language to create grammars <strong>MGrammar</strong>.</li>
<li>A graphical editor called <strong>Quadrant</strong> able to represent models in a graphical way. I&#8217;ve seen some videos but seems it is not released yet in the CTP.</li>
</ul>
<p>More utilities comes with it to assist in the modeling tasks:</p>
<ul>
<li><strong>Intellipad</strong> is lightweight text editor with keyword highlighting capabilities able to help in the editing of a myriad of languages, also custom ones defined in <strong>MGrammar</strong>.</li>
<li>Some commands tools like <strong>mx </strong>to compile &amp; deploy models to DB Schemas.</li>
</ul>
<p>I was wondering to know if Quadrant (the visual editor) has a common-ground on DSL Tools. But for them moment it seems to be no common roots here or reuse. The editor seems to be (re-)created totally from scratch.</p>
<p>As a first rough simplification we could say that M allows to define modules (or namespaces). Modules contains types, types contains properties, properties can have any type you have already define or can be a primitive type.</p>
<p>The <strong>mx</strong> tool is able to compile models and generate tables, views as stored procs. in Transact-SQL.</p>
<p>Types are compiled into tables. Properties are compiled into columns.</p>
<p>Models will be available at the database ready to be consumed by any application able to connect to the database using raw SQL, ADO, Datasets, LINQ, objects models (M models), etc. Of course, other Microsoft tools will be prepared to take profit of the MDD tools: Biztalk, Visual Studio 10, .NET 4.0</p>
<p>I am still playing &amp; learning the ropes with Oslo, but is it difficult not to compare it with other previous experiences like:</p>
<ul>
<li><a title="Antlr" href="http://www.antlr.org/" target="_blank">Antlr</a> for grammar creation,</li>
<li><a title="Microsoft DSL Tools" href="http://msdn.microsoft.com/en-us/vsx/default.aspx" target="_blank">MS DSL Tools</a> &amp; <a title="Graphical Modeling Framework" href="http://www.eclipse.org/modeling/gmf/" target="_blank">GMF</a> for graphical representation,</li>
<li><a title="Eclipse Modeling Framework" href="http://www.eclipse.org/modeling/emf/" target="_blank">EMF</a> for the modeling core &amp;</li>
<li><a title="Hibernate" href="http://www.hibernate.org/" target="_blank">Hibernate</a> for the ORM mapping.</li>
</ul>
<p>I will continue commenting about Oslo as CTPs appears and my knowledge on it increases.</p>
<p>My general impression is that there is a good stuff behing Oslo, but we will have to wait a bit before seeing it in his full glory.</p>
<p>To get started with Oslo and take your own impressions you can download the CTP and take a look <a title="Getting started with Oslo" href="http://msdn.microsoft.com/es-es/oslo/default(en-us).aspx" target="_blank">here</a>.</p>
<p>More info at <a title="Wikipedia on Oslo" href="http://en.wikipedia.org/wiki/Oslo_(Microsoft_project)" target="_blank">wikipedia</a>.</p>
<p>Updated: a nice video about <a href="http://mschnlnine.vo.llnwd.net/d1/pdc08/WMV-HQ/TL31.wmv">how to start with MGrammar</a> from Channel 9.</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2008/12/oslo-at-first-glance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://mschnlnine.vo.llnwd.net/d1/pdc08/WMV-HQ/TL31.wmv" length="197976445" type="video/x-ms-wmv" />
		</item>
	</channel>
</rss>

