<?xml version='1.0' encoding='UTF-8' ?>
<rss version="2.0" xmlns:admin="http://webns.net/mvcb/" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:icbm="http://postneo.com/icbm" xmlns:includedComments="http://www.laudably.com/rss2-comments" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/">
	<channel>
		<title>Steven Kelly on DSM</title>
		<link>http://www.metacase.com/blogs/stevek/blogView</link>
		<description>Domain-Specific Modeling: A Toolmaker Perspective</description>
		<webMaster>stevek@metacase.com</webMaster>
		<lastBuildDate>Thu, 05 Aug 2010 15:57:32 +0300</lastBuildDate>
		<admin:generatorAgent rdf:resource="http://www.cincomsmalltalk.com/CincomSmalltalkWiki/CSTBlogModule"></admin:generatorAgent>
		<admin:errorReportsTo rdf:resource="mailto:stevek@metacase.com"></admin:errorReportsTo>
		<dc:language>en-us</dc:language>
		<dc:creator>Steven Kelly</dc:creator>
		<dc:rights>Copyright 2005- Steven Kelly</dc:rights>
		<dc:date>2010-08-05T15:57:32+03:00</dc:date>
		<item>
			<title>Modeling Wizards keynote</title>
			<link>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3458476651</link>
			<category>DSM</category>
			<pubDate>Thu, 05 Aug 2010 15:57:31 +0300</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p align="center"><a href="http://modelingwizards.isti.cnr.it/"><img alt="A few Modeling Wizards" src="http://www.metacase.com/blogs/stevek/images/modelingWizards.png"/></a></p>
<p>I'm privileged to have been invited to give a keynote session at the <a href="http://modelingwizards.isti.cnr.it/">Modeling Wizards masterclass</a> in Oslo, Sept. 30 -- Oct. 2. As you can see from the pictures, there's an impressive line-up of <a href="http://modelingwizards.isti.cnr.it/the-lecturers/">speakers</a>: Jean B&eacute;zivin, Krzysztof Czarnecki, &Oslash;ystein Haugen and other luminaries from the field of model-driven development.</p>
<p>Unlike other conferences and workshops, this isn't just people submitting their own papers. As the title and line-up maybe reveal, the idea is to offer the best possible training in MDD for the participants. The three-day <a href="http://modelingwizards.isti.cnr.it/the-programme-2/">program</a> offers &quot;a set of carefully selected lectures dealing with various aspects of modeling and with a particular focus on domain-specific languages. The objective is to provide each attendee with sufficient information to understand the main issues and challenges in the use of modeling and domain-specific languages, and also to have a clear picture of the most recent advances in the field.&quot;</p>
<p>One thing I'm particularly happy to see is a mini-project running each afternoon, where participants will get the chance to put what they are learning into practice, with a helping hand from the speakers. I'm a big believer in the master craftsman - apprentice mode of learning, and have benefitted greatly from it myself over the years. To ensure the personal attention necessary, places are limited -- so <a href="http://modelingwizards.isti.cnr.it/registration/">sign up</a> now! The price of around 887&euro; includes accommodation and all meals for the three days, which compares very favorably with any other training I've seen. With the timing just before <a href="http://www.modelsconference.org/">MODELS 2010</a>, you can even get two events for the price of one set of air fares!</p></div>]]></description>
			<guid isPermaLink="false">3458476651</guid>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.metacase.com/blogs/stevek/blogView/servlet/CommentAPIServlet?guid=3458476651</wfw:comment>
		</item>
		<item>
			<title>Code Generation 2010 talks</title>
			<link>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3453970293</link>
			<category>DSM</category>
			<pubDate>Mon, 14 Jun 2010 12:11:33 +0300</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">





<p>At this year's <a href="http://www.codegeneration.net/cg2010/">Code Generation</a> conference in Cambridge, we're delighted to be able to offer our <a href="http://www.codegeneration.net/cg2010/sessioninfo.php?session=47"><strong>hands-on session teaching Domain-Specific Modeling</strong></a> with MetaEdit+, which was voted best session at last year's conference. We'll build five modeling languages and generators from scratch in 2%BD hours on Wednesday. If you've never created your own modeling language, or have only used things like GMF and think all tools must be similar, you have to see this! </p><p>That's a hands-on talk, but there are also wider issues: Most MDD projects fail before they even get started, or drag on but never really fulfill their promise. The reasons are as often human as technical. By knowing what tactics actually work and what don't -- many counter-intuitive or never considered by developers -- you can avoid the pitfalls and frustration of seeing your good ideas wasted. </p><p>We'll be looking at this in a new talk at Code Generation 2010: <strong><a href="http://www.codegeneration.net/cg2010/sessioninfo.php?session=45">Proven best practices for successful MDD adoption</a> </strong>(Thursday 10:45-12:00). This is intended for lead developers, team leads, architects, CTOs, managers - and also anybody trying to help or encourage other companies to adopt MDD.</p><p>The presentation will show you the roadmap for successfully introducing MDD into your organization, on both technical and human levels. Technical phases include the domain selection criteria, technical preparedness, language definition and testing, and the final roll-out. On the human level we will look at selling the idea, building mindshare, keeping momentum going, and managing organizational change. Drawing from our experience over the past fifteen years we will pinpoint the key challenges organizations usually face during MDD adoption, and offer some practical solutions to overcome them.</p><p>We will lead people through the technical tasks, people issues and process best practices in a tutorial format: teaching supported by slides, examples, cases, discussions and questions. Participants' own experiences and situations will be discussed throughout, so if you have a story to tell, do come along. We'll see if we can do a quick survey of participants to find which obstacles were most frequently encountered, and which were most serious. </p></div>]]></description>
			<guid isPermaLink="false">3453970293</guid>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.metacase.com/blogs/stevek/blogView/servlet/CommentAPIServlet?guid=3453970293</wfw:comment>
		</item>
		<item>
			<title>Domain-Specific Modeling: MDD that works</title>
			<link>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3446309083</link>
			<category>DSM</category>
			<pubDate>Wed, 17 Mar 2010 20:04:43 +0200</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p>Long time no blog. Aside from working on the next version of MetaEdit+ (about which more in a later post), I've been speaking at a variety of events. The first, back in November, was for the members of the International Association of Architects: a webcast on <a href="http://www.metacase.com/webinar/WebinarIASANov2009.html">Domain-Specific 

Modeling: MDD that works</a>. (The link 

will take you to the webcast, which was recorded live. <b>Update:</b> Added the codec and a Flash video alternative.) The format worked 

surprisingly well, even for the 

<a href="http://www.metacase.com/webinar/WebinarIASANov2009QA.html">question and

answer session</a>: the participants could submit questions via the webcast chat tool, and Juha-Pekka picked a selection of them to ask me at the end. Something that was asked later was the size of the domain: with DSM, this is never something as broad as "embedded systems", or even "mobile phones". Normally it will be much narrower, e.g. a particular family or product line of mobile phones from a particular manufacturer, or then home and auto insurance policies in the EU. Making things no broader than necessary is one of the keys to high productivity with your DSM language, and also to making it easier to build the language: stick to what you are experts in, and follow <a href="http://en.wikipedia.org/wiki/You_ain't_gonna_need_it">YAGNI</a> to avoid creating extra work for yourself.</p>

<p> One thing that struck me when preparing for the talk was that we often show graphs of how productivity increased in various DSM cases, but we don't normally have time to provide the details of each case. The cases studies are, however, available (see table below): some even with the modeling languages and generators publicly available. Most importantly, some of the cases obtained their productivity figures with scientifically rigorous experiments; not many companies have time for that, but those experiments serve to confirm the validity of engineers' estimates in other cases.</p>

<p>

<img border="0" height="280" src="http://www.metacase.com/blogs/stevek/images/DSMProductivity.png" width="455"><br clear="all"/></img></p>

<p>Productivity figures can seem a little abstract, so in the talk I looked at 

the in terms of something more concrete. Imagine that you can build one product 

in a certain time by coding. How much more can you build if you apply various 

kinds of modeling? In a previous post we already saw how <a href="http://www.metacase.com/blogs/stevek/blogView?showComments=true&entry=3432385251">with normal UML, you 

can actually build <i>less</i> than with manual coding</a>. With MDA, the tool 

vendors' own figures range from 22% extra (Obeo:

<a href="http://www.obeo.fr/pages/presentation/en">average cost reduction of an MDA 

project is 18%</a> => 22% productivity increase) to 35% extra (OptimalJ: 

<a href="http://www.theserverside.com/tt/articles/article.tss?l=SymposiumCoverage">30%201340%</a>). 

You can see from the red bars on MDA1 and MDA2 below just how little you get for 

your investment in tools and training %2014 not to mention the long term nightmare 

of trying to maintain CIM, PIM, PSM and code in synch with only semi-automatic 

support. The productivity results for DSM tell a very different story: 5%201310x 

faster, and completely automatic code generation.</p>

<p><img border="0" height="280" src="http://www.metacase.com/blogs/stevek/images/CodevsUMLvsMDAvsDSM.png" width="455"/></p>

<p>But what is the cost of creating your own DSM language and generator? After 

all, the MDA tool vendors promise to provide those, so that's an extra cost for 

DSM. Here are the figures in person days for the cases above. I think they speak 

for themselves: 2%20133 weeks by one person is so small it makes you cry. How many 

companies out there could spend 2%20133 weeks to make themselves 5%201310x faster? </p>

<p><img border="0" height="280" src="http://www.metacase.com/blogs/stevek/images/DaysToCreateDSMSolution.png" width="455"/></p>

<p>Of course those figures demand good tools: all those cases are with <a href="http://www.metacase.com/products.html">MetaEdit+</a>. Your mileage will definitely vary with other tools%A0%2014 and what's worse, because they make you do more work, your brain power will be directed away from creating the best possible language. At the end of the day, it's the size of the productivity improvement for the modelers that counts the most. If you can make 10 modelers 6x faster rather than 5x faster, that's worth 10 extra person years per year. With MetaEdit+, you're far more likely to get those extra person years, and you're sure to get your language ready faster. When we see the first case with GMF or DSL Tools making it into the 5 10x range, we can look at this topic again...</p>

<p><b>Referenced DSM Cases</b> (for more see <a href="http://www.dsmforum.org/">

www.dsmforum.org</a>)</p>



<table border="1" bordercolor="#C0C0C0" cellspacing="0">

	<tr>

		<td>

		Heart rate monitor</td>

		<td>

		Polar</td>

		<td>K%E4rn%E4 et al.,

		<a href="http://www.dsmforum.org/events/DSM09/Papers/Karna.pdf">

		Evaluating the use of DSM in embedded UI application development</a>, 

		Procs of DSM%201909 at OOPSLA, 2009. </td>

	</tr>

	<tr>

		<td>

		Call processing services</td>

		<td>%A0</td>

		<td>Kelly, S., Tolvanen, J.-P., Chapter 5, <a href="http://dsmbook.com/">

		Domain-Specific Modeling: Enabling Full Code Generation</a>, Wiley, 

		2008. <br/> [CPL project in <a href="http://www.metacase.com/download/">MetaEdit+</a>]</td>

	</tr>

	<tr>

		<td>

		Touch screen UI applications</td>

		<td>

		Panasonic</td>

		<td>Safa, L.,

		<a href="http://www.dsmforum.org/events/DSM07/papers/safa.pdf">The 

		Making Of User-Interface Designer: A Proprietary DSM Tool</a>, Procs of 

		DSM%201907 at OOPSLA, 2007.</td>

	</tr>

	<tr>

		<td>

		Home automation</td>

		<td>%A0</td>

		<td>Kelly, S., Tolvanen, J.-P., Chapter 5, <a href="http://dsmbook.com/">

		Domain-Specific Modeling: Enabling Full Code Generation</a>, Wiley, 

		2008. <br/>

		[Home automation project in <a href="http://www.metacase.com/download/">MetaEdit+</a>]</td>

	</tr>

	<tr>

		<td>

		Mobile phone applications</td>

		<td>

		Nokia</td>

		<td>MetaCase,

		<a href="http://www.metacase.com/papers/MetaEdit_in_Nokia.pdf">Nokia 

		case study</a>, 2000</td>

	</tr>

	<tr>

		<td>

		Phone switch features</td>

		<td>%A0</td>

		<td>Weiss, D. M., Lai, C. T. R., 

		<a href="http://www.amazon.com/exec/obidos/ASIN/0201694387/metacaseconsu-20">Software 

		Product-line Engineering: A Family-Based Software Development Process</a>, Addison 

		Wesley Longman, 1999. </td>

	</tr>

	<tr>

		<td>

		Financial web application</td>

		<td>

		Pecunet</td>

		<td>Kelly, S., Tolvanen, J.-P., Chapter 6, <a href="http://dsmbook.com/">

		Domain-Specific Modeling: Enabling Full Code Generation</a>, Wiley, 

		2008.<br/>

		MetaCase, <a href="http://www.metacase.com/cases/pecunet.html">Pecunet case study</a>, 2001.<br/>

		IASA Architect Skills Library: <a href="http://www.iasahome.org/c/document_library/get_file?p_l_id=38776&folderId=68665&name=08-Domain.pdf">Domain-Specific Modeling</a>, 2007.<br/>

		[Insurance project in <a href="http://www.metacase.com/download/">MetaEdit+</a>]</td>

	</tr>

</table>

</div>]]></description>
			<guid isPermaLink="false">3446309083</guid>
			<includedComments:comment-collection>
				<includedComments:comment>
					<includedComments:guid>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3446309083</includedComments:guid>
					<includedComments:puid>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3446309083</includedComments:puid>
					<includedComments:author>Julius Campbell</includedComments:author>
					<includedComments:pubDate>2010-03-19T03:53:14+02:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;I saw the webinar you mentioned in this blog post.&amp;nbsp; Such a boost in productivity seems very attractive.&amp;nbsp; What in your opinion is keeping more people from adopting DSM with MetaEdit+ ?&amp;nbsp; What advice would you give someone who wants to introduce MetaEdit+ within their organization?&lt;/p&gt;
&lt;p&gt;http://www.juliuscampbell.com/datawhisperer&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Barriers to Adoption</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3446309083</includedComments:guid>
					<includedComments:puid>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3446309083</includedComments:puid>
					<includedComments:author>Steven Kelly</includedComments:author>
					<includedComments:pubDate>2010-03-19T17:39:57+02:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Good question, Julius! First off, many people &lt;em&gt;are&lt;/em&gt; adopting DSM with MetaEdit+. However, you're right in saying that many more could join in and get the same benefits. Normal resistance to change is of course one issue.&amp;nbsp;We&amp;nbsp;talk to many people who know this is the right way to go, but can't&amp;nbsp;start just yet, because they have to get the current product out of the door. Or because they're just getting started on the next product.&amp;nbsp;Or are right in the middle of a product.&lt;/p&gt;
&lt;p&gt;My advice on how to effectively promote and deploy DSM within an organization is contained in a chapter of the &lt;a href="http://dsmbook.com/" target="_blank" title="Domain-Specific Modeling: Enabling Full Code Generation"&gt;DSM book&lt;/a&gt;. It's hard to summarize a chapter in a sentence, but maybe: small steps, proving the worth throughout.&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Re: Domain-Specific Modeling: MDD that works</includedComments:title>
				</includedComments:comment>
			</includedComments:comment-collection>
			<wfw:comment>http://www.metacase.com/blogs/stevek/blogView/servlet/CommentAPIServlet?guid=3446309083</wfw:comment>
		</item>
		<item>
			<title>Worst Practices for Domain-Specific Modeling</title>
			<link>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3432819161</link>
			<category>DSM</category>
			<pubDate>Mon, 12 Oct 2009 16:52:41 +0300</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p><html><div xmlns="http://www.w3.org/1999/xhtml">
<p>One of the surprises for me at Code Generation 2009 was during the keynote, when I passed round a list for people to sign up to receive a pre-print of the Worst Practices for Domain-Specific Modeling article that was to appear in IEEE Software. When the list came back, I was astonished to see that basically the entire audience had signed up -- never underestimate the appeal of &quot;free&quot;!</p>

<img align="right" height="240" hspace="8" src="http://www.metacase.com/images/IEEESoftwareJulAug2009.jpg" width="180"/>

<p>I think the article is important, in that it is the first study of a large sample of DSM languages. The 20 worst practices identified were analysed from a sample spanning:</p>

<ul><li>76 cases of DSM</li><li>15 years</li><li>4 continents</li><li>several tools</li><li> 100 language creators</li><li>3 to 300 modelers per case</li></ul>

<p>IEEE Software has now published the next issue after the special issue on DSM, so it seems a fair time to point you to the final version of our article, available for free download:</p>

<blockquote><b><a href="http://www.metacase.com/papers/WorstPracticesForDomain-SpecificModeling.html"><b>Worst Practices for Domain-Specific Modeling</b></a></b><br/>Steven Kelly and Risto Pohjonen <br/>IEEE Software, vol. 26, no. 4, pp. 22-29, July/Aug. 2009<br/>doi:10.1109/MS.2009.109</blockquote>

<p><b>Stop press</b>: thanks to the efforts of the tireless Yoshio Asano of <a href="http://www.fuji-setsu.co.jp/">Fujisetsubi</a>, the article is also available in Japanese from the same page. Domo arigato, Yoshio-san! </p></div></html>
</p></div>]]></description>
			<guid isPermaLink="false">3432819161</guid>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.metacase.com/blogs/stevek/blogView/servlet/CommentAPIServlet?guid=3432819161</wfw:comment>
		</item>
		<item>
			<title>Using UML takes 15% longer than just coding</title>
			<link>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3432385251</link>
			<category>DSM</category>
			<pubDate>Wed, 07 Oct 2009 16:20:51 +0300</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p>In the <a href="http://www.codegeneration.net/cg2009/keynotes.php">keynote</a> at Code Generation, I mentioned that empirical research shows that using UML does not improve software development productivity: depending on the study, reports ranged from -15% to +10% compared to just coding. I guess most people these days know those results from their own experience, but as the reports I was aware of were from the 1990s, it was interesting to see a more up-to-date article recently:</p>
<blockquote>WJ Dzidek, E Arisholm, LC Briand: <a href="http://www.ipd.uka.de/Tichy/uploads/folien/149/DzidekArisholmBriandBenefitsofUML_TSE2008.pdf">A Realistic Empirical Evaluation of the Costs and Benefits of UML in Software Maintenance</a>, IEEE Transactions on Software Engineering, Vol 34 No 3, May/June 2008</blockquote>
<p>Unlike many earlier studies, this uses professional developers and reasonably large tasks. The tasks all extended the same Java Struts web application, in total about 30 hours per developer. 10 developers performed the tasks with Java, and another 10 performed the same tasks with Java and Borland's Together UML tool. The developers using UML were somewhat more experienced -- 256 kLOC of Java under their belts rather than 187 kLOC, and 44% longer Struts experience -- but otherwise the groups were similar. Time was measured until submission of a correct solution, giving a reasonably sound basis for comparison. Here are the results:</p><img alt="Time to correctly complete 5 tasks: with UML 2300 minutes, without UML 2000 minutes" src="http://www.metacase.com/blogs/stevek/images/UMLOslo.png"/><p>Compared to just coding, using UML took 15% longer to reach a correct solution (the green bar). In addition, it looks like even using UML to help you understand the code gives no benefit over just reading the code: the blue and red bars are the same length as the purple bar. As the tasks only looked at extending an existing system with existing models, we can't say for sure whether the story is the same in initial implementation, but other studies indicate it.</p><p>One bad thing about the article is that it tries to obfuscate this clear result by subtracting the time spent on updating the models: the whole times are there, but the abstract, intro and conclusions concentrate on the doctored numbers, trying to show that UML is no slower. Worse, the authors try to give the impression that the results without UML contained more errors -- although they clearly state that they measured the time to a correct submission. They claim a &quot;54% increase in functional correctness&quot;, which sounded impressive. However, alarm bells started ringing when I saw the actual data even shows a 100% increase in correctness for one task. That would mean all the UML solutions were totally correct, and all the non-UML solutions were totally wrong, wouldn't it? But not in their world: what it actually meant was that out of 10 non-UML developers, all their submissions were correct apart from one mistake made by one developer in an early submission, but which he later corrected. Since none of the UML developers made a mistake in their initial submissions of that particular task, they calculated a 100% difference, and try to claim that as a 100% improvement in correctness -- ludicrous!</p><p>To calculate correctness they should really have had a number of things that had to be correct, e.g. 20 function points. Calculated like that, the value for 1 mistake would drop by a factor of 20, down from 100% to just 5% for that developer, and 0.5% over all non-UML developers. I'm pretty sure that calculated like that there would be no statistically significant difference left. Even if there was, times were measured until all mistakes were corrected, so all it would mean is that the non-UML developers were more likely to submit a code change for testing before it was completely correct. Quite possibly the extra 15% of time spent on updating the models gave the developer time to notice a mistake, perhaps when updating that part of the model, and so he went straight back to making a fix rather than first submitting his code for testing. In any case, to reach the same eventual level of quality took 15% longer with UML than without: if you have a quality standard to meet, using UML won't make you get there any more certainly, it will just slow you down.</p><p>To their credit, the authors point out two similar experiments as related work. One showed UML took 27% longer, the other 48% longer. The percentage of time spent updating models was also larger: 30-35% (which may be because those studies only measured time until the first submission of a solution: correcting bugs was probably mostly coding, so if measured to a correct solution the UML time would only increase a little and hence the percentages would drop).</p><p>So what do we learn from all this? Probably nothing new about UML, but at least a confirmation that earlier results still apply, even for real developers on realistic projects using today's UML tools. Maybe more importantly, we can see that empirical research, properly written up, is valuable in helping us decide whether something really improves productivity or not. Ignore the conclusions (they probably existed in the minds of the authors before the paper was written), but look at the data and the analysis. Throw out the chaff, and draw your own conclusions from what is left. Above all, don't blindly accept or reject what they say, just because it agrees or disagrees with your existing prejudice. There's at least a chance that you might learn something!</p></div>]]></description>
			<guid isPermaLink="false">3432385251</guid>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.metacase.com/blogs/stevek/blogView/servlet/CommentAPIServlet?guid=3432385251</wfw:comment>
		</item>
		<item>
			<title>MERL primer for openArchitectureWare Xpand users</title>
			<link>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3429172808</link>
			<category>DSM-tech</category>
			<pubDate>Mon, 31 Aug 2009 12:00:08 +0300</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml"> 
<p> 
<a href="http://www.metacase.com/support/45/manuals/mwb/Mw-5_3.html"> 
MERL</a> and openArchitectureWare's Xpand languages are rather similar in approach and functionality. The main differences are in syntax and keywords, so learning one if you know the other is easy. In the <a href="http://www.metacase.com/forums/forum_topics.asp?FID=1">MetaEdit+ forum</a> I've posted a quick <a href="http://www.metacase.com/forums/forum_posts.asp?TID=116">primer on how to translate from Xpand to MERL</a>. The primer is below, with comments after the respective row where necessary.</p> 
<table border="1" borderColor="#c0c0c0" cellPadding="2" cellSpacing="0"> 
<tbody> 
<tr> 
<th> Xpand</th> 
<th> MERL</th> 
</tr> 
<tr style="font-family: Courier"> 
<td> SomeFixedText</td> 
<td> 'SomeFixedText'</td> 
</tr> 
<tr style="font-family: Courier"> 
<td> &laquo;SOMECOMMAND&raquo;</td> 
<td> SOMECOMMAND</td> 
</tr> 
<tr> 
<td colSpan="2"> 
<font color="#000066" size="2"> In XPand commands are quoted,
whereas in MERL fixed text is quoted.</font> 
</td> 
</tr> 
<tr style="font-family: Courier"> 
<td> &laquo;DEFINE foo ... ENDDEFINE&raquo;</td> 
<td> Report 'foo' ... EndReport</td> 
</tr> 
<tr> 
<td colSpan="2"> 
<font color="#000066" size="2"> In MERL, each report is defined on
its own, not with several reports one after another in a single
text. 
<br/> Each report is defined on a particular Graph type (or the
supertype of all, Graph itself).</font> 
</td> 
</tr> 
<tr style="font-family: Courier"> 
<td> &laquo;FILE Name + &quot;.java&quot; ... ENDFILE&raquo;</td> 
<td> filename :Name '.java' write ... close</td> 
</tr> 
<tr style="font-family: Courier"> 
<td> &laquo;EXPAND foo FOREACH Bar&raquo;</td> 
<td> foreach .Bar { subreport 'foo' run }</td> 
</tr> 
<tr> 
<td colSpan="2"> 
<font color="#000066" size="2"> You don't need to define a
subreport, you can just put the commands from foo in the {}. 
<br/> This often makes more sense, e.g. if you're not going to call
foo from elsewhere. 
<br/> &nbsp;
<br/> foreach is for navigation from a graph to its elements. 
<br/> For navigation between elements use &quot;do&quot; or &quot;dowhile&quot; (which
covers SEPARATOR):</font> 
</td> 
</tr> 
<tr style="font-family: Courier"> 
<td> &laquo;EXPAND foo FOREACH Bar&raquo;</td> 
<td> do .Bar { subreport 'foo' run }</td> 
</tr> 
<tr style="font-family: Courier"> 
<td> &laquo;EXPAND foo FOREACH Bar SEPARATOR &quot;,&quot;&raquo;</td> 
<td> dowhile .Bar { subreport 'foo' run ','}</td> 
</tr> 
<tr style="font-family: Courier"> 
<td> &laquo;this.name&raquo;</td> 
<td> :name</td> 
</tr> 
<tr style="font-family: Courier"> 
<td> &laquo;LET ... AS var ..&lt;var&gt;.. ENDLET&raquo;</td> 
<td> variable 'var' write ... close ..$var..</td> 
</tr> 
<tr> 
<td colSpan="2"> 
<font color="#000066" size="2"> For assignments with a single
element on the right-hand side, you can use the shorter form: $var
= 'foo', $var = :foo etc.</font> 
</td> 
</tr> 
<tr style="font-family: Courier"> 
<td> &laquo;REM...ENDREM&raquo;</td> 
<td> /*...*/</td> 
</tr> 
<tr style="font-family: Courier"> 
<td> &laquo;PROTECT ID ... ... ENDPROTECT&raquo;</td> 
<td> md5id ... md5block ... md5sum</td> 
</tr> 
<tr style="font-family: Courier"> 
<td> &laquo;CSTART ... CEND ...&raquo;</td> 
<td> filename 'bar.java' 
<br/> md5start ... md5stop ... 
<br/> merge .. .. .. close</td> 
</tr> 
<tr> 
<td colSpan="2"> 
<font color="#000066" size="2"> The start and end sequences are
specified in the filename command, since they will be the same for
the whole file</font> 
</td> 
</tr> 
<tr style="font-family: Courier"> 
<td> &laquo;this.name.toUpper()&raquo;</td> 
<td> :Name%upper</td> 
</tr> 
<tr> 
<td colSpan="2"> 
<font color="#000066" size="2"> For text manipulation, e.g. with
Java in oAW, you can use MERL 
<a href="http://www.metacase.com/support/45/manuals/mwb/Mw-5_3_6.html#_Ref190594241" target="_blank"> translators</a> . Many are defined in _translators,
such as %upper a-z A-Z, and you can define your own to convert any
combination of characters, strings and regular expressions.</font> 
</td> 
</tr> 
</tbody> 
</table> 
</div>]]></description>
			<guid isPermaLink="false">3429172808</guid>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.metacase.com/blogs/stevek/blogView/servlet/CommentAPIServlet?guid=3429172808</wfw:comment>
		</item>
		<item>
			<title>Re: Processing of MetaEdit  Models with oAW</title>
			<link>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3428923761</link>
			<category>DSM-tech</category>
			<pubDate>Fri, 28 Aug 2009 14:49:21 +0300</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">



<p>Heiko Kern has written a great set of information on how to <a href="http://blog.integration-engineering.de/2009/08/processing-of-metaedit-models-with-oaw">process MetaEdit+ models with oAW</a> (the openArchitectureWare model transformation tools for Eclipse). The integration he's built is a great example of how easy it is to <a href="http://www.metacase.com/mwb/integration.html">integrate MetaEdit+</a> with other tools:</p>

<ul><li>You can export models or metamodels from MetaEdit+ as XML. The format is an extension of the open Graph eXchange Language standard, <a href="http://www.gupro.de/GXL/tools/tools.html">GXL, supported by over 40 tools</a>.</li><li>You can quickly write a little generator to output your models in whatever XML or other text format you want.</li><li>MetaEdit+ can call other tools from its generators, e.g. for build integration.</li><li>Other tools can call MetaEdit+ with command-line parameters to specify a series of actions to run.</li><li>Other tools can call MetaEdit+ through its WebServices / SOAP API, to create/read/update/delete any data in models, and for control integration, e.g. to animate models for model-level debugging.</li><li>You can import models or metamodels as XML.</li><li>You can import text in any format and convert it to models via <a href="http://www.metacase.com/forums/forum_posts.asp?TID=44">reverse engineering</a> generators.</li></ul><p>At last year's OOPSLA <a href="http://www.dsmforum.org/events/DSM08/">DSM workshop</a>, Heiko had an article about his <a href="http://www.dsmforum.org/events/DSM08/Papers/3-Kern.pdf">MetaEdit+ / Eclipse integration</a>. We had a good discussion about it, in particular about his reasons for building it. His paper gave the impression that he wanted to use oAW  rather than MetaEdit+'s own MERL generator language, because he needed some specific features in oAW. It turned out though that he hadn't actually used MERL, and didn't realise that MERL and oAW's XPand are actually very similar in terms of approach and functionality. </p>

<p>MERL tends to be a little more succint: here is the MERL generator to output simple Java classes for a UML Class Diagram, as in Heiko's example:</p>

<style type="text/css">

.fixedtext { background-color: #F0F0F0; color:#800000 }

.metamodel { color: #006000}

.variable { color: #6699FF }

</style>

<pre>subreport '_translators' run



foreach <span class="metamodel">.Class [UML]</span>

{  filename id '.java' write

      '<span class="fixedtext">public class </span>' id '<span class="fixedtext"> {</span>' <span class="variable">$cr2</span>



      do <span class="metamodel">:Attributes</span>

      {  '<span class="fixedtext">   </span>' <span class="metamodel">:Visibility</span> '<span class="fixedtext"> </span>' <span class="metamodel">:Data type;</span> '<span class="fixedtext"> </span>' <span class="metamodel">:Name</span> '<span class="fixedtext">;</span>' <span class="variable">$cr2</span>



         '<span class="fixedtext">   public void set</span>' <span class="metamodel">:Name</span>%firstUpper '<span class="fixedtext">(</span>' <span class="metamodel">:Data type;</span> '<span class="fixedtext"> </span>' <span class="metamodel">:Name</span> '<span class="fixedtext">) {</span>' <span class="variable">$cr</span>

         '<span class="fixedtext">      this.</span>' <span class="metamodel">:Name</span> '<span class="fixedtext"> = </span>' <span class="metamodel">:Name</span> '<span class="fixedtext">;</span>' <span class="variable">$cr</span>

         '<span class="fixedtext">   }</span>' <span class="variable">$cr2</span>



         '<span class="fixedtext">   public </span>' <span class="metamodel">:Data type;</span> '<span class="fixedtext"> get</span>' <span class="metamodel">:Name</span>%firstUpper '<span class="fixedtext">() {</span>' <span class="variable">$cr</span>

         '<span class="fixedtext">      return this.</span>' <span class="metamodel">:Name</span> '<span class="fixedtext">;</span>' <span class="variable">$cr</span>

         '<span class="fixedtext">   }</span>' <span class="variable">$cr2</span>

      }

      '<span class="fixedtext">}</span>'

   close 

}

</pre>

<p>Heiko's oAW XPand code is 65% longer. Even ignoring the extra loop over all Class Diagrams that Heiko needs (MetaEdit+ offers that automatically in the UI or via the forAll:run: command-line parameter), oAW is still over 20% longer. The actual difference isn't that important: I'm sure both could be made shorter for this example, but the current code is typical of what is generally written. My point is that there's no real saving to be had by using XPand instead of MERL. If your models are in MetaEdit+, use MERL; if they're in Eclipse, use oAW. Having integration is great, but if you can avoid using it then that's even better. </p>

</div>]]></description>
			<guid isPermaLink="false">3428923761</guid>
			<includedComments:comment-collection>
				<includedComments:comment>
					<includedComments:guid>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3428923761</includedComments:guid>
					<includedComments:puid>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3428923761</includedComments:puid>
					<includedComments:author>Heiko Kern</includedComments:author>
					<includedComments:pubDate>2009-09-02T20:36:46+03:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Hi Steven, thank you for your response to my article. I agree with you in many points. Nevertheless, I would like to address some issues. The (re-)implementation of the UML-to-Java example in MERL is really nice and shows the expressiveness of MERL. However, your comparison between my oAW variant and your MERL variant doesn't consider the following two facts. Firstly, in my oAW example, the model structure is the result of the M3B between MetaEdit+ and Eclipse EMF. Hence, I need some additional (select/query) operations. Secondly, your MERL variant uses a loop over all attributes, instead my variant uses the EXPAND mechanism. Both facts blow up the code unnecessarily. A solution to the first problem could be the implementation of generic operations that are equivalent to MetaEdit+ operations (e.g. the loop over all diagrams of a certain type). These operations could be implemented as an additional feature of the M3B and could be reused in different EMF-based tools. A solution to the second point is the use of oAW's &amp;laquo;FOREACH&amp;raquo;&amp;laquo;ENDFOREACH&amp;raquo; expression. These two changes should be enough in order to achieve the same code length as your MERL transformation.&lt;/p&gt;
&lt;p&gt;Furthermore, I want to say something about my motivation for building the MetaEdit-EMF-Bridge. My research interests are in DSM/MDD and especially in metamodeling and model interoperability. I investigate an approach that I call M3-level-based Bridge or Metametamodel-based Transformation. This approach allows me to achieve model interoperability between model hierarchies consisting of three levels. The MetaEdit-EMF-Bridge is one application of this M3B approach. The use of this bridge, the discussion about this bridge, and so on gives me valuable feedback and experience for my research work. In my opinion the MetaEdit-EMF-Bridge is an interesting case because both tool spaces cover equal DSM/MDD tasks. The functionality of MetaEdit+ and of EMF-based tools are very similar. But maybe there are other reasons for using EMF-based tools instead of MetaEdit+. I think from a practical view, our articles provide a good conclusion. If both tool spaces complement each other then the bridging concept is very useful. Conversely this means, if both tool spaces are almost equal then it is less useful.&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Re: Re: Processing of MetaEdit Models with oAW</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3428923761</includedComments:guid>
					<includedComments:puid>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3428923761</includedComments:puid>
					<includedComments:author>Steven Kelly</includedComments:author>
					<includedComments:pubDate>2009-09-08T17:30:58+03:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Thanks Heiko, I'd imagined that it should be possible to make your code a little shorter. I'm not sure why in Xpand it is common to use EXPAND rather than just FOREACH - maybe because there tend to be many generators in one file/window, so there is more need to split things up to stop it becoming one big long mess? In MetaEdit+ each generator is seen on its own, classified by graph type and generator name.&lt;/p&gt;
&lt;p&gt;I'd agree that MetaEdit+'s MERL and oAW's Xpand are close enough that in general bridging in either direction isn't necessary. However, I don't agree that "the functionality of MetaEdit+ and of EMF-based tools are very similar". And nor does Markus Voelter: he'd much rather have the&amp;nbsp;&lt;a href="http://voelterblog.blogspot.com/2006/10/mdsdple-conference-in-leipzig.html"&gt;"really cool"&amp;nbsp;Diagram Editor of MetaEdit+&lt;/a&gt; than &lt;a href="http://voelterblog.blogspot.com/2009/06/gmf-is-still-awful.html"&gt;GMF's "awful" editors&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Maybe the real solution is just to do your model editing and processing&amp;nbsp;in MetaEdit+, and simply link to it from your favourite IDE - as many of our users in both Eclipse and VisualStudio do. You can open repositories and/or individual models by clicking on them in the source tree in your IDE, and generation in MetaEdit+ can add files to the source tree in your IDE (if you want), or you can run generation from the IDE or whatever your favourite build tool is.&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Re: Re: Processing of MetaEdit Models with oAW</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3428923761</includedComments:guid>
					<includedComments:puid>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3428923761</includedComments:puid>
					<includedComments:author>Dex Fischer</includedComments:author>
					<includedComments:pubDate>2010-02-05T11:47:57+02:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Guys, I thank both of you for the most informative posts. I read and downloaded both articles &lt;em&gt;[dubious comment link removed. -Ed]&lt;/em&gt; and understood the main idea. The only question arises. Can we transform an EPC model, such as the one in Figure 3 after the transformation of the metamodel from MetaEdit to EMF?&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title></includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3428923761</includedComments:guid>
					<includedComments:puid>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3428923761</includedComments:puid>
					<includedComments:author>Steven Kelly</includedComments:author>
					<includedComments:pubDate>2010-02-05T11:59:47+02:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Dear Dex,&lt;/p&gt;
&lt;p&gt;It's great to see entities like you taking an interest in meta-metamodels. Admittedly your question is a rather simple transformation of a line from Heiko's article:&lt;/p&gt;
&lt;p&gt;"After the transformation of the metamodel from MetaEdit to EMF, we can transform an EPC model, such as the one in Figure 3"&lt;/p&gt;
&lt;p&gt;Of course that line answers your question, which is a bit of a giveaway that you don't yet pass the Turing Test. But still I'm impressed.&lt;/p&gt;
&lt;p&gt;Yours sincerely,&lt;br /&gt;Steve's automated spam detecter.&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Re: Re: Processing of MetaEdit Models with oAW</includedComments:title>
				</includedComments:comment>
			</includedComments:comment-collection>
			<wfw:comment>http://www.metacase.com/blogs/stevek/blogView/servlet/CommentAPIServlet?guid=3428923761</wfw:comment>
		</item>
		<item>
			<title>Code Generation 2009 round-up</title>
			<link>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3423259520</link>
			<category>DSM</category>
			<pubDate>Wed, 24 Jun 2009 01:25:20 +0300</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">



<p>Once again, <a href="http://www.codegeneration.net/cg2009/">Code Generation</a> 

proved itself as the best European conference on Model-Driven Development. Lots 

of smart people, lots of experience, lots of enthusiasm, lots of willingness to 

listen and learn from others. Even though having to prepare and run some 

sessions hampered me from seeing as much of the rest as I'd like, there's still 

too much to write for one blog post. I'll post about things I'm certain of 

first, and come back to things like Xtext and MPS after further investigation.</p>

<h3>Keynotes</h3>

<p>The two keynotes, both presented as a double act by me and

<a href="http://www.voelter.de/" target="_blank">Markus V&ouml;lter</a>, seemed to go 

down well. Mark Dalgarno had a surprise up his sleeve, presenting us with a 

blind choice of weapons from a black bag. We then had to

<a href="http://www.flickr.com/photos/33466493@N04/3638230884/in/pool-cg2009" target="_blank">

duel it out</a>, graphical DSM against textual DSLs, with the plastic gun and 

dagger we picked. Since I got the gun, I think the result was a foregone 

conclusion :-). The dagger may be a &quot;weapon from an earlier, more civilized 

age&quot;, but it's only useful if you can get in close to your adversary. Similarly, 

text may be more familiar, but it does often tie you closer to the code; problem 

domain DSLs in text seem as rare as accurate knife throwers. Markus successfully 

stabbed me in the back later on, so that evened things up and emphasized the 

point from our slides: both text and graphics are useful in the right place. 

Choose, but choose wisely.</p>

<p>It was fun to see the keynote get picked up on Twitter:</p>



<blockquote><a href="http://twitter.com/EelcoVisser"><img src="http://s3.amazonaws.com/twitter_production/profile_images/135809182/self_normal.jpg" style="margin-right: 4px; float: left"/></a>

<a href="http://twitter.com/EelcoVisser/statuses/2220107629">

EelcoVisser</a>: keynote by @markusvoelter and Steven Kelly at #cg2009: great overview of issues in model-driven development 

<br clear="all"/></blockquote>



<blockquote><a href="http://twitter.com/HBehrens"><img src="http://s3.amazonaws.com/twitter_production/profile_images/87000893/HeikoProfil_normal.jpg" style="margin-right: 4px; float: left"/></a>

HBehrens: Steven Kelly at #cg2009 keynote: &quot;wizard based generators create a large legacy application you've 



never seen before&quot; 

<br clear="all"/></blockquote>



<p>The latter was picked up by several people. The reference was to 

vendor-supplied wizards, often found in IDEs or SDKs, that create skeleton 

applications for you based on your input. Since the vendors take pride in just 

how much boilerplate they can spew out, you're left with a mass of generated 

code that you've never seen before, but must extend with your own code. Worse, 

you're responsible for maintaining the whole ensuing mixture, and there's no 

chance of re-running the wizard to change some of the choices -- at least not 

without losing or invalidating the code you've added. That's in sharp contrast 

with generation in DSM, where your input is in the form of a model which you can 

edit at any time. You get the speed of generation but can remain at a high level 

of abstraction throughout.</p>

<h3>MetaEdit+ Hands-on</h3>

<p>We'd decided to try something special in the hands-on: building 5 different 

graphical modeling languages from scratch in under 3 hours. Rather than being 

random exercises, the languages were increasingly good ways of modeling the same 

domain. We started with something that was basically just the current code 

turned into graphics, and ended up with a language that reduced the modeling 

work to a third of what it was at its worst, with many possible errors ruled out 

by the language design and rules, and with much better scope for reuse. We 

showed how to make generators for all the languages, and actually built them for 

two. And of course since this was MetaEdit+, simply defining the metamodel 

already gave you a full graphical modeling environment -- we just tweaked the 

symbols to taste.</p>

<p>Never having run the session before, we were rather nervous about how much we 

could achieve in the time available. In the end, thanks to great slides from 

Risto Pohjonen and testing from Janne Luoma, it seems we pretty much hit our 

target. Only at the very end of the last language did we have some people only 

just starting the last section (the generator) while others were finishing it 

and going on to beautify the symbols or play around with other fun features of 

MetaEdit+. Hopefully people learned not just about MetaEdit+ as a tool, but also 

how to make better languages and improve existing ones. Feedback online was 

encouraging:</p>



<blockquote><a href="http://twitter.com/PeterBell"><img src="http://s3.amazonaws.com/twitter_production/profile_images/272698998/green_6524_peter_normal.jpg" style="margin-right: 4px; float: left"/></a>

<a href="http://twitter.com/PeterBell/statuses/2206790592">

PeterBell</a>: Great metaedit hands on - built and refactored language and generator in just a couple of hours at #cg2009 

<br clear="all"/></blockquote>



<blockquote><a href="http://twitter.com/elsvene"><img src="http://s3.amazonaws.com/twitter_production/profile_images/58726240/Foto_3_normal.jpg" style="margin-right: 4px; float: left"/></a>

<a href="http://twitter.com/elsvene/statuses/2206971239">

elsvene</a>: been to a great hands-on session for MetaEdit+. Really interesting tool! #cg2009 

<br clear="all"/></blockquote>



<blockquote><a href="http://twitter.com/HBehrens"><img src="http://s3.amazonaws.com/twitter_production/profile_images/87000893/HeikoProfil_normal.jpg" style="margin-right: 4px; float: left"/></a>

<a href="http://twitter.com/HBehrens/statuses/2206721207">

HBehrens</a>: for me MetaEdit is the most sophisticated graphical modeling tool currently available #cg2009. Thanks for this session! 

<br clear="all"/></blockquote>







<h3>Dinner</h3>

<p>The conference dinner was of the high standard you'd expect from a Cambridge college. The airy hall and 

contemporary art lent a friendly ambience. The large round tables weren't particularly conducive to 

conversation: you could only really talk to the people either side of you without shouting or craning your 

neck. On long tables you can reach 5 people for the same effort. I was fortunate to be sitting between Scott 

Finnie and Jon Hurwitz, so I certainly didn't suffer. </p>



<p>The &quot;suffering&quot; started later, when there was a raffle in aid of Bletchley Park, the home of Allied code-breaking work in World War II. 

I ended up 

<a href="http://www.flickr.com/photos/33466493@N04/3638235028/in/pool-cg2009" target="_blank">winning a prize donated by Microsoft</a>: a screwdriver 

toolkit and MSDN T-shirt, causing much hilarity and bad jokes about finally getting Microsoft tools that 

didn't crash. The irony continued when Alan Cameron Wills won a signed copy of our Domain-Specific Modeling 

book -- despite having received one from us last year. Either the older British segment of the audience were 

most inclined to support Bletchley Park by buying raffle tickets, or then the draw was rigged to encourage 

vendor co-operation. The people on my table were having none of that, and encouraged me to 

<a href="http://www.flickr.com/photos/33466493@N04/3638235268/in/pool-cg2009">cover up the 

Microsoft logos</a> :-). All in all a good laugh, and in a good cause.</p>

</div>]]></description>
			<guid isPermaLink="false">3423259520</guid>
			<includedComments:comment-collection>
				<includedComments:comment>
					<includedComments:guid>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3423259520</includedComments:guid>
					<includedComments:puid>http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3423259520</includedComments:puid>
					<includedComments:author>Peter Bell</includedComments:author>
					<includedComments:pubDate>2009-06-24T15:57:27+03:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Thanks for the great keynote - a really nice&amp;nbsp; overview of the core concepts, and I love the gun/knife metaphor :-)&lt;/p&gt;
&lt;p&gt;The MetaEdit+ hands on was just right for getting comfortable with creating and modifying the languages. The only thing that would have made it perfect would have been if scheduling had allowed for a full morning working on the languages and a full afternoon getting really comfortable writing the generators. It would be great if you could do a session on the generators next year, but I'm not sure that would make sense for people who hadn't done the meta model/model creation session this year.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Thanks!</includedComments:title>
				</includedComments:comment>
			</includedComments:comment-collection>
			<wfw:comment>http://www.metacase.com/blogs/stevek/blogView/servlet/CommentAPIServlet?guid=3423259520</wfw:comment>
		</item>
	</channel>
</rss>
