<?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>Juha-Pekka on DSM</title>
		<link>http://www.metacase.com/blogs/jpt/blogView</link>
		<description>Domain-Specific Modeling: Making Models Work</description>
		<webMaster>jpt@metacase.com</webMaster>
		<lastBuildDate>Thu, 13 Nov 2008 17:25:38 +0200 (EET)</lastBuildDate>
		<admin:generatorAgent rdf:resource="http://www.cincomsmalltalk.com/CincomSmalltalkWiki/CSTBlogModule"></admin:generatorAgent>
		<admin:errorReportsTo rdf:resource="mailto:jpt@metacase.com"></admin:errorReportsTo>
		<dc:language>en-us</dc:language>
		<dc:creator>Juha-Pekka Tolvanen</dc:creator>
		<dc:rights>Copyright 2005- Juha-Pekka Tolvanen</dc:rights>
		<dc:date>2008-11-13T17:25:38+02:00</dc:date>
		<item>
			<title>Proceedings of the DSM'08 workshop available</title>
			<link>http://www.metacase.com/blogs/jpt/blogView?showComments=true&amp;entry=3400831329</link>
			<category>DSM</category>
			<pubDate>Tue, 07 Oct 2008 11:22:09 +0300 (EEST)</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p>The 8th OOPSLA workshop on Domain-Specific Modeling takes place 19-20th October. The workshop format is a combination of paper presentations and demos, interactive sessions, and group work on selected topics. This structure was found effective during the past workshops. In this workshop we have for the first time an interactive panel (goldfish bowl) on DSM evolution and a keynote on model repositories. The proceedings and program are available at: <a href="http://www.dsmforum.org/events/DSM08">www.dsmforum.org/events/DSM08</a>. </p>
</div>]]></description>
			<guid isPermaLink="false">3400831329</guid>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.metacase.com/blogs/jpt/blogView/servlet/CommentAPIServlet?guid=3400831329</wfw:comment>
		</item>
		<item>
			<title>JAOO track on DSLs</title>
			<link>http://www.metacase.com/blogs/jpt/blogView?showComments=true&amp;entry=3399558303</link>
			<category>DSM</category>
			<pubDate>Mon, 22 Sep 2008 17:45:03 +0300 (EEST)</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p><a href="http://jaoo.dk/">JAOO</a>, the premier developer conference in Europe, and in my scale definitely the number 1 in Scandinavia, starts next week. The conference includes a number of interesting topics, including a <a href="http://jaoo.dk/tracks/show_track.jsp?trackOID=184">track on domain-specific languages</a>. The DSL track, hosted by Glenn Vanderburg, covers Domain-Specific Modeling, internal DSLs by Martin Fowler and Language Workbenches by Neal Ford. I have the pleasure to start the track with defining modeling languages that work - raise abstraction and offer full code generation. </p><p>A more in-depth <a href="http://jaoo.dk/presentation/Building+Domain-Specific+Modeling+Languages+with+Full+Code+Generation">session</a> with actual language creation and modification exercises is following the next day as JAOO conference sessions are followed by <a href="http://jaoo.dk/tutorials/">tutorials</a>. </p>
<p>Hope to see you in Aarhus!</p></div>]]></description>
			<guid isPermaLink="false">3399558303</guid>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.metacase.com/blogs/jpt/blogView/servlet/CommentAPIServlet?guid=3399558303</wfw:comment>
		</item>
		<item>
			<title>IEEE Software special issue on DSM</title>
			<link>http://www.metacase.com/blogs/jpt/blogView?showComments=true&amp;entry=3399033233</link>
			<category>DSM</category>
			<pubDate>Tue, 16 Sep 2008 15:53:53 +0300 (EEST)</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p> IEEE Software seeks submissions for a special issue on Domain-Specific Languages and Modeling. This issue will focus on particular benefits observed or quantified by domain-specific practitioners and designers, especially when capabilities that are unavailable using general-purpose techniques can be shown. See details <a href="http://www.ece.arizona.edu/~sprinkjm/dsl/ ">here</a>. </p>
</div>]]></description>
			<guid isPermaLink="false">3399033233</guid>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.metacase.com/blogs/jpt/blogView/servlet/CommentAPIServlet?guid=3399033233</wfw:comment>
		</item>
		<item>
			<title>Define DSLs based on existing metamodels?</title>
			<link>http://www.metacase.com/blogs/jpt/blogView?showComments=true&amp;entry=3396791154</link>
			<category>DSM</category>
			<pubDate>Thu, 21 Aug 2008 17:05:54 +0300 (EEST)</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml"> 

<p> The idea of using standardized modeling constructs while

defining domain-specific languages is often raised. Supporting

arguments include easier language definition and reuse of existing

already working languages and their constructs. Sometimes another,

and usually hidden, argument is that the tool used does not allow

anything else. A classical example is the use of UML profiles.</p> 

<p> A much more powerful approach to define languages is to work

directly with the metamodels. Based on our experience this is much

easier too. Basically, we may:</p> 

<ol> 

<li> Extend the existing metamodel (add new constructs, and I

consider here extending existing language constructs with profiles

one option too)</li> 

<li> Modify the existing metamodel (add, delete, modify)</li> 

<li> Define the metamodel from the scratch</li> 

<li> Define the metamodel and possible reuse individual language

constructs</li> 

</ol> 

<p> With MetaEdit+ all these options are possible, but clearly 3

&amp; 4 are the most successful ones: both in terms of the effort

needed when defining the domain-specific language and more

importantly in terms of the productivity gains obtained with the

language. Option 2 would also be good, but this is not usually

possible since the problem domain is usually different. We know

this very well, since although the current version of 

<a href="http://www.metacase.com/products.html"> MetaEdit+</a> comes

with 1135 language constructs (metamodel elements), hardly ever

existing complete languages are used as a basis to define

domain-specific modeling languages. Parts of them, however, can be

reused.</p> 

<p> Consider for instance the domain of developing mobile phone

applications (

<a href="http://media.wiley.com/product_data/excerpt/64/04700366/0470036664.pdf"> 

Chapter 1</a> in 

<a href="http://www.dsmbook.com/"> DSM book</a> ). A sample model for

one mobile application is visible 

<a href="http://www.metacase.com/phone_example.html"> here</a> .

Would it make sense to even try to define similar high-level

language using existing standardized modeling concepts? Obviously

not. The use of profiles does not make sense since the amount of

new stereotypes, tagged values and constraints would be huge. The

language definition would take ages and we don't even speak about

maintenance of it or making generator to produce the running

application code. Also the use of existing standardized languages,

such as UML, BPMN or SySML, as a basis and then starting to modify

their metamodels is not a reasonable option: We would need to

remove first over 99% of their concepts! If you don't believe, try

to implement a modeling language for mobile application development

based on UML metamodel (or profiles).</p> 

<p> When it comes to the effort needed, the language for the mobile

domain was implemented in 4 days along with the editor. This

language was developed from scratch. Implementation of the

generator took other 6 days producing executable complete code (in

Python). Nothing was reused from existing modeling languages,

although some constructs, like start and stop states, could be

reused. In MetaEdit+ the effort to define Start and Stop state and

their connections with other constructs is just 1-2 minutes, so

reuse is not so crucial here.</p> 

</div>]]></description>
			<guid isPermaLink="false">3396791154</guid>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.metacase.com/blogs/jpt/blogView/servlet/CommentAPIServlet?guid=3396791154</wfw:comment>
		</item>
		<item>
			<title>DSLs: The Good, the Bad, and the Ugly. A panel at OOPSLA</title>
			<link>http://www.metacase.com/blogs/jpt/blogView?showComments=true&amp;entry=3394804681</link>
			<category>DSM</category>
			<pubDate>Tue, 29 Jul 2008 17:18:01 +0300 (EEST)</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p>This year OOPSLA has a panel dedicated on domain-specific languages. My aim is to be on &ldquo;the Good&rdquo; side. While this position comes naturally for me, having seen many times in <a href="http://www.metacase.com/cases/"> industrial cases</a> how productivity has improved 500-1000% when moving to DSM, it looks that all the other panelists want to be on the Good side too ;-) The great thing is that the panelists have different backgrounds and perspectives on creating, using and maintaining domain-specific textual or graphical modeling languages. Take a look of the <a href="http://www.oopsla.org/oopsla2008/program-overview/panels.html#pnl0000003">panel</a> and other program now available at <a href="http://www.oopsla.org/oopsla2008/">OOPSLA</a> website. </p>
</div>]]></description>
			<guid isPermaLink="false">3394804681</guid>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.metacase.com/blogs/jpt/blogView/servlet/CommentAPIServlet?guid=3394804681</wfw:comment>
		</item>
		<item>
			<title>My DSL for mixin medical device</title>
			<link>http://www.metacase.com/blogs/jpt/blogView?showComments=true&amp;entry=3391693534</link>
			<category>DSM</category>
			<pubDate>Mon, 23 Jun 2008 17:05:34 +0300 (EEST)</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">
<p><html><div xmlns="http://www.w3.org/1999/xhtml">



<p>I <a href="http://www.metacase.com/blogs/jpt/blogView?showComments=true&entry=3389866403">mentioned</a> previously the workshop organized by ICTNoviQ that included a metamodeling <a href="http://www.ictnoviq.nl/C12573D3004B13B0/files/Mixin.pdf/$FILE/Mixin.pdf">exercise</a>. Such a hands-on part makes things more concrete and also shows the value of metamodels. I%2019ll post here my language for specifying the various mixin processes for the medical device. See below the physical structure of the mixing device (took from the <a href="http://www.ictnoviq.nl/C12573D3004B13B0/files/Mixin.pdf/$FILE/Mixin.pdf">full description</a>). </p><p><img alt="Structure of the machine" src="http://www.metacase.com/blogs/jpt/images/mixin_structure.png"/></p><p>Rather than building a DSL based on primitives provided by the framework, i.e. have objects like move, open, shut, suck, blow, filter etc. and various bindings between them, I took the physical device structure as a starting point and thought how someone would give for me the mixing instructions. Most likely it would be like %201Ctake from the second cup 5 units with a filter A and put 2 units to cup 6 and 3 units to cup 7 and then clean the needle%201D. This is clearly the description in the terms of the problem domain. My DSL, implemented with MetaEdit+, for the above instruction looks like: </p><p><img alt="Sample Mixin Process" src="http://www.metacase.com/blogs/jpt/images/SampleMixinProcess.png"/></p>

<p>The same in solution domain is the code took from the exercise: </p><p>01 move(-3); filt(1); suck(5); <br>02 move(4); filt(0); blow(2); <br>03 move(1); blow(3); <br>04 move(-3); suck(30); <br>05 move(1); blow(30); </p><p>With the domain-specific modeling language there is no need for the programmer to count the needle movement operations. The needle cleaning (code lines 4 and 5) is abstracted to a property of the role together with blow operations. If cleaning is set to the property a blue drop is shown in a model. This choice also enforces the domain rule: nobody can now clean the needle after taking the medicine into it. For the same reason I decided to omit the cups related to the cleaning from the DSL. The language also fixes the filter use by providing a property for the suck role with filter selection (none, A, B). Second typical example on how DSL enforces the domain rules and hides unnecessary complexity. </p>

<p>More complex structures, like wait times, iterations or repetitions over the same operations could be easily added to the language by extra properties and bindings that the current sample does not yet show. Note also that all features are not worth to model, even at the domain level, if there is no variability. For example, shutter operations can be produced by the generator if can%2019t be put to the underlying platform. 

</p>

</div></html>
</p></div>]]></description>
			<guid isPermaLink="false">3391693534</guid>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.metacase.com/blogs/jpt/blogView/servlet/CommentAPIServlet?guid=3391693534</wfw:comment>
		</item>
		<item>
			<title>MetaCase named as Top Influencer by Software Development Times</title>
			<link>http://www.metacase.com/blogs/jpt/blogView?showComments=true&amp;entry=3389967787</link>
			<category>DSM</category>
			<pubDate>Tue, 03 Jun 2008 17:43:07 +0300 (EEST)</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p><i>&quot;MetaCase continues to demonstrate leadership in the area of Domain-Specific Modeling, improving developer productivity while helping the industry get the message about the power of DSM,&quot; </i>said Alan Zeichick, editorial director at <a href="http://sdtimes.com/">SD Times</a>. </p><p>We at MetaCase are naturally deeply honored. It is very gratifying to be selected again and notify how the popularity of Domain-Specific Modeling is raising. It is not only exciting for us as a tool vendor, but thrilling for us as software developers. An increasing number of organizations - from automotive giants to embedded device manufacturers - are radically improving their software development performance, and we're proud to be leading this move forward. </p><p>It is particularly interesting to see how &ldquo;meta&rdquo; has became relevant in other categories than modeling too. See the complete <a href="http://sdtimes.com/content/article.aspx?ArticleID=32287">SD Times TOP 100 list</a>. </p>
</div>]]></description>
			<guid isPermaLink="false">3389967787</guid>
			<includedComments:comment-collection>
				<includedComments:comment>
					<includedComments:guid>http://www.metacase.com/blogs/jpt/blogView?showComments=true&amp;entry=3389967787</includedComments:guid>
					<includedComments:puid>http://www.metacase.com/blogs/jpt/blogView?showComments=true&amp;entry=3389967787</includedComments:puid>
					<includedComments:author>Petri I. Salonen</includedComments:author>
					<includedComments:pubDate>2008-06-04T06:04:33+03:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;There is no question in my mind that DSM (domain-specific modeling) will become of great importance in future development initiatives. This will give management of software development organizations a better handle on intellectual property, productivity and quality as most of the work is focused on enabling derivative products in a product family and not trying to reinvent the wheel each and every time.&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>DSM will become the next big thing in software development</includedComments:title>
				</includedComments:comment>
			</includedComments:comment-collection>
			<wfw:comment>http://www.metacase.com/blogs/jpt/blogView/servlet/CommentAPIServlet?guid=3389967787</wfw:comment>
		</item>
		<item>
			<title>DSL design contest: a case of medical device operations</title>
			<link>http://www.metacase.com/blogs/jpt/blogView?showComments=true&amp;entry=3389866403</link>
			<category>DSM</category>
			<pubDate>Mon, 02 Jun 2008 13:33:23 +0300 (EEST)</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p><a href="http://www.ictnoviq.nl/en/company-profile?open">ICTNoviQ</a> organizes a <a href="http://www.ictnoviq.nl/C12573D3004B13B0/files/Workshop Model Driven Software Development [ENG].pdf/$FILE/Workshop Model Driven Software Development [ENG].pdf">workshop on creating DSLs</a>, including a contest: During the workshop participants implement a DSL for a medical device to create different medicine mixing processes. The domain is small and clearly bounded and the <a href="http://www.ictnoviq.nl/C12573D3004B13B0/files/Mixin.pdf/$FILE/Mixin.pdf">contest assignment</a> suggests several ways to raise the level of abstraction. It is up to the language designer to choose which parts is put to the modeling language, what generators do, and which parts are left to the domain framework.</p><p>My schedule does not permit participation, but I implemented the language anyway - there is a promise that the designers of the &ldquo;best&rdquo; DSL will be rewarded ;-) Although I doubt that remote participation in competition is possible I sent my DSL, implemented with <a href="http://www.metacase.com/products.html">MetaEdit+</a>, to the organizers anyway. If you are interested, take a look of the domain description as it nicely hints about several ways to implement the language. I&rsquo;ll post my version of the language after the workshop (held 18th June). </p>
</div>]]></description>
			<guid isPermaLink="false">3389866403</guid>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.metacase.com/blogs/jpt/blogView/servlet/CommentAPIServlet?guid=3389866403</wfw:comment>
		</item>
	</channel>
</rss>
