<?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>Luminis Software Development &#187; mdd</title>
	<atom:link href="http://lsd.luminis.eu/en/tag/mdd/feed/" rel="self" type="application/rss+xml" />
	<link>http://lsd.luminis.eu</link>
	<description></description>
	<lastBuildDate>Wed, 28 Dec 2011 20:44:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>AToM3 0.2.2 Language Workbench Evaluation</title>
		<link>http://lsd.luminis.eu/en/atom3-0-2-2-language-workbench-evaluation/</link>
		<comments>http://lsd.luminis.eu/en/atom3-0-2-2-language-workbench-evaluation/#comments</comments>
		<pubDate>Wed, 28 Dec 2011 20:36:50 +0000</pubDate>
		<dc:creator>Andriy Levytskyy</dc:creator>
				<category><![CDATA[MDD]]></category>
		<category><![CDATA[AToM3]]></category>
		<category><![CDATA[code generator]]></category>
		<category><![CDATA[DSM]]></category>
		<category><![CDATA[ER]]></category>
		<category><![CDATA[Graph Grammar]]></category>
		<category><![CDATA[interpreter]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[mdd]]></category>
		<category><![CDATA[MDE]]></category>
		<category><![CDATA[metamodel]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[opinion]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[transformation]]></category>
		<category><![CDATA[visual]]></category>
		<category><![CDATA[workbench]]></category>

		<guid isPermaLink="false">http://lsd.luminis.eu/?p=1771</guid>
		<description><![CDATA[(Nederlands) AToM3 is a language workbench developed at the Modelling, Simulation and Design Lab (MSDL) in the School of Computer Science of McGill University. The focus of the review is the language workbench capabilities, that is everything related to specification of modeling languages and automated processing of models.]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://atom3.cs.mcgill.ca/" target="_blank"></a></p>
<p><a href="http://atom3.cs.mcgill.ca/" target="_blank">AToM3</a> is a language workbench developed at the Modelling, Simulation and Design Lab (MSDL) in the School of Computer Science of McGill University. Please note that the reviewed version is not the latest (0.3).</p>
<p>The focus of the review is the language workbench capabilities, that is everything related to specification of modeling languages and automated processing of models.</p>
<h3>Freeform Multilingual Modeling</h3>
<p>In AToM3, models (and metamodels) are visually described as graphs. There is no support for spatial relationships, such as containment or touch. While position of modeling elements may  seem to imply spatial relationships among them (e.g. among a software component and a port), AToM3 does not recognize, maintain or process such relationships.</p>
<p>Modeling is performed by means of a visual editor: one selects a modeling concept from one of possibly multiple language toolbars (to the left of the canvas) and places (instantiates) it on the canvas. Any language toolbar can be easily removed or added by closing or opening its language-specification file. Furthermore, the toolbar itself is defined by a model in a so-called “Buttons” DSL (see Figure 1). At any time, the modeler is free to edit this model to e.g. arrange buttons in one or multiple rows, remove language concepts or specify additional buttons to launch transformations frequently used with the given language. Both language specification and toolbar files are generated by AToM3 from the language model (aka metamodel). Language independent tools like Edit, Connect, Delete form the general modeling toolbar (above the canvas).</p>
<p>A special feature of AToM3 is a freeform multi-language canvas. AToM3 breaks with the tradition of &#8220;strongly typed&#8221; diagrams that prevent intermixing modeling elements if not explicitly allowed by the diagram&#8217;s metamodel type. AToM3 canvas can be considered a diagram that allows any modeling elements. However, elements can only be connected if their metamodel allows this. Such canvas provides users with a high degree of modeling freedom. (As illustration of this freedom, <a href="http://atom3.cs.mcgill.ca/images/atom3logo.jpg" target="_blank">AToM3 logo</a> itself is a freeform model done using 5-6 DSLs). Furthermore, because models are not fragmented among islands of diagrams, information access is optimal. Another benefit is less effort on the metadeveloper&#8217;s part because a freeform model can be handled by a transformation without the prior need of metamodel integration.</p>
<p>Unfortunately as models grow in size and number, the single canvas does not scale well, nor does AToM3 provide the user with means to manage them.</p>
<p>AToM3 uses this editor and the freeform canvas in a few different contexts. The primary role is a modeling editor, however the same editor is used for metamodeling and specifying transformation definitions. Such reuse reduces the learning curve and more importantly, brings the benefits of a domain specific modeling environment and the freeform canvas to metadevelopers as well.</p>
<h3>Language Specification</h3>
<p>AToM3’s metalanguage is based on the Entity Relationship (ER) formalism. In order to provide complete metamodeling capabilities, concepts Entity and Relationship are extended with constraints and appearance properties (see Figure 2). Property constraints is used to define static semantics. Appearance defines visual presentation or concrete syntax of a language concept.</p>
<p>AToM3 provides overall excellent metamodeling capabilities that enable metadevelopers produce <a href="http://lsd.luminis.eu/measuring-quailty-of-a-metamodel/" target="_blank">level 5 quality metamodels</a>. The following details these capabilities.</p>
<h4>Abstract Syntax</h4>
<p>For this task metadevelopers are equipped with the ER-based metalanguage, which is very close to conceptual modeling techniques, such as <a href="http://www.orm.net/" target="_blank">ORM</a>. This means that there is a minimum gap between conceptual, business world-oriented models and AToM3 metamodels. In fact, AToM3 abstract syntax models are surprisingly simple and void of technical details typical for metamodels, which makes the models very readable by subject experts. Figures 2 and 4 of the <a href="http://lsd.luminis.eu/an-mde-example-curriculum-content-sequencing-application/" target="_blank">Curriculum Content Sequencing (CCS) demo</a> illustrate this point.</p>
<h4>Concrete Syntax</h4>
<p>A simple but sufficient editor allows to define a vector presentation for a language concept. Figure 2 shows all that the editor has to offer.</p>
<h4>Static Semantics</h4>
<p>The constraints property contains rules that control how a modeling element can be connected to another element to form a meaningful composition. Such rules can be defined per language concept or a model and triggered by editor events (e.g. edit, save, transformation start) or on demand by user, thus covering all imaginable ways to invoke model checking.</p>
<p>AToM3 constraint language is Python, which is an unusual choice. Indeed, Python is not a constraint language, not formal (in the model-driven sense), and has side effects (AToM3 is written in Python too). However, my experience with AToM3 showed that none of those are real disadvantages in practice: Python is known for a concise and easy to read syntax and as constraint language, is intended for metadevelopers (who know how to deal with side-effects). In this role, Python proved to be powerful, flexible and efficient.</p>
<h4>Dynamic Semantics</h4>
<p>AToM3 uses a common approach to define DSL semantics by translating language concepts to concepts in another target domain with predefined dynamic semantics (e.g, C++, Java). This approach is known as translational.</p>
<p>Another less common approach supported by AToM3, is by modeling the operational behavior of language concepts [1]. The operational semantics approach specifies how models can be directly executed, typically by an interpreter. Such specifications are expressed in terms of operations on the language itself, which is in contrast to translating the language into another form. The advantage is that operational semantics are easier to understand and write. The disadvantage is that interpreters are normally not available for DSLs due to the very specific nature of the latter. (For an AToM3 illustration of how to build a custom interpreter in a model-driven way, please refer to this <a href="http://lsd.luminis.eu/how-to-build-a-custom-model-interpreter-in-a-model-driven-way/" target="_blank">article</a>.)</p>
<p>In AToM3 translational and operational approaches are implemented as transformations.</p>
<h3>Transformation</h3>
<p>AToM3 employes the graph rewriting approach to transform models. Transformations themselves are declaratively expressed as graph-grammar models. My experience with transformation models written in imperative languages (e.g. QVT Operational, MERL) is that more time is spent figuring out <em>how</em> to navigate host model structure to access right information than actually specifying <em>what</em> to do with this information. Declarative approach like that of AToM3, frees the metadeveloper from having to specify navigation, thus drastically reducing complexity of transformation modeling.</p>
<p>To define a transformation in AToM3, one needs to create a graph grammar and specify one of more GG rules. Figure 3 shows a GG model for the export transformation in the CCS demo. Each rule specifies how a (sub)graph of a so-called host graph can be replaced by another (sub)graph. These (sub)graphs are respectively called the left-hand side (LHS) and the right-hand side (RHS). A rule is assigned an order (priority), a condition and an action. In AToM3, conditions and actions are programmed in Python. As in the case with the constraint language, Python performs very well in these roles too.</p>
<p>A special feature of AToM3 is that both LHS and RHS can be modeled with the DSL(s) of the host graph. In fact, the (sub)graph editor is based on the above mentioned model editor, and provides the metadeveloper with the freeform multilingual canvas, customizable language toolbars and transformations. The consequence is that it is very easy to construct sub-graphs and verify them with subject experts.</p>
<p>An interesting feature of AToM3 transformation system is that  it does not feature transformation parameters. This may seem limiting, however an equally effective alternative is to store &#8220;parameter&#8221; information in a model. The AToM3 canvas makes it extremely easy to mix such &#8220;parameter&#8221; model(s) with a host model  and pass them to a transformation. Figure 4 shows a sequencing model from the <a href="http://lsd.luminis.eu/an-mde-example-curriculum-content-sequencing-application/" target="_blank">CCS demo</a> together with a repository model (top left corner of the canvas). Given both, an export transformation can access the remote model repository, pass authentication, and store the sequencing model at the repository.</p>
<p>Another interesting feature is that transformation input can be also an element selected by users (unfortunately multiple selection does not work in this version). A promising application thereof is user-defined in-place transformations that automate frequent and routine modeling operations. For example, decomposing a group element into constituent objects (and vice-versa) with a click of a button. Industrial users that often work with large models would really appreciate the resulting reduction of repetitive strain.</p>
<p>Finally, AToM3 supports nearly all transformation kinds known to the author [2, 3]. It is easier to list what is unsupported: text-to-model and text-to-text (which is a consequence of the graphical nature of the language workbench), and the more exotic synchronization and bidirectional kinds. Due to its graph rewriting system, AToM3 is very strong in model-to-model (M2M) and model-to-text (M2T) transformations. A GG-based support for the latter, very popular category, is not obvious and therefore warrants an extra explanation.</p>
<h4>M2T Transformation</h4>
<p>In AToM3 M2T means producing textual structures from graph structures. One way of doing this is via a transformation where the source and the target models are the same. Rules of such transformation do not perform any important rewriting, but use the graphical nature of the source language to traverse and annotate the source model with temporary information that is needed for text generation. Text itself is generated by side-effects encoded in actions of rules, which can access the annotations.</p>
<p>A typical M2T application is code generation. An example of a non trivial code generation made with AToM3 is <a href="http://sourceforge.net/projects/zcase/" target="_blank">ZCase</a>, a software factory for <a href="http://www.zope.org/" target="_blank">Zope</a>. In the <a href="http://lsd.luminis.eu/an-mde-example-curriculum-content-sequencing-application/" target="_blank">CCS demo</a>, ZCase is a part of the ER<span style="color: #424037; font-size: 12px; line-height: 21px;"><em>→</em></span>Zope transformation chain.</p>
<h3>Conclusion</h3>
<p>The is no escaping the fact that AToM3 is a research tool and is not suitable for demanding industrial use. The workbench does not scale well for large models (both in terms of performance and user controls) and its tools are basic. There is no reliable support, no up-to-date exhaustive documentation, no collaborative development, no integration with version control and requirement management systems, and naturally plenty of bugs and annoyances. In short, the tool is far from being mature and ready for industrial users.</p>
<p>However, metadevelopers may find the above drawbacks quite tolerable, because they are better prepared to deal with technical issues and metamodels typically do not stress the tool&#8217;s scalability. On the positive side, AToM3 provides simple but optimal tools and set of features that work together to create one of the most robust and powerful language workbenches I know. Thereby AToM3 is extremely suitable for agile, responsive and timely development. Due to the maturity level of the workbench, its application is best limited to proofs of concept. To date, AToM3 is the language workbench of my choice for quick prototyping.</p>
<p>AToM3 is recommended to MDE students, analysts in need of quick prototyping and tool vendors seeking to improve their language workbenches. In my opinion, AToM3&#8217;s metamodeling and transformation technology is nearly optimal, and is still ahead of the larger and more inert commercial workbenches. While its problems are numerous, they are run-of-the-mill and knowledge and technologies to address them are commonly available. If these problems could have been removed, then AToM3 would have been the tool I could have easily recommended to industrial customers too.</p>
<h3>References</h3>
<p>[1] Tony Clark, Andy Evans, Paul Sammut, and James Willans. Applied Metamodelling: A foundation for Language Driven Development. Version 0.1. Xactium Ltd., 2004.</p>
<p>[2] Krzysztof Czarnecki and Simon Helsen. Classification of model transformation ap- proaches. In Jorn Bettin, Ghica van Emde Boas, Aditya Agrawal, Ed Willink, and Jean Bezivin, editors, 2nd OOPSLA Workshop on Generative Techniques in the Context of Model-Driven Architecture, Anaheim, CA, October 2003. ACM Press.</p>
<p>[3] Tom Mens, Krzysztof Czarnecki, and Pieter Van Gorp. Discussion &#8211; a taxonomy of model transformations. In Jean Bezivin and Reiko Heckel, editors, Language Engineering for Model-Driven Software Development, volume 04101 of Dagstuhl Seminar Proceedings, Dagstuhl, Germany, 2005. Internationales Begegnungs- und Forschungszentrum fuer Informatik (IBFI), Schloss Dagstuhl, Germany.</p>

<a href='http://lsd.luminis.eu/en/atom3-0-2-2-language-workbench-evaluation/atom3logo/' title='Figure 1'><img width="150" height="150" src="http://lsd.luminis.eu/wp-content/uploads/2011/12/atom3logo-150x150.jpg" class="attachment-thumbnail" alt="" title="Figure 1" /></a>
<a href='http://lsd.luminis.eu/en/atom3-0-2-2-language-workbench-evaluation/figure-1/' title='Figure 1'><img width="150" height="150" src="http://lsd.luminis.eu/wp-content/uploads/2011/12/Figure-1-150x150.png" class="attachment-thumbnail" alt="" title="Figure 1" /></a>
<a href='http://lsd.luminis.eu/en/atom3-0-2-2-language-workbench-evaluation/figure-2/' title='Figure 2 (a)'><img width="150" height="150" src="http://lsd.luminis.eu/wp-content/uploads/2011/12/Figure-2-150x150.png" class="attachment-thumbnail" alt="" title="Figure 2 (a)" /></a>
<a href='http://lsd.luminis.eu/en/atom3-0-2-2-language-workbench-evaluation/figure-3/' title='Figure 2 (b)'><img width="150" height="150" src="http://lsd.luminis.eu/wp-content/uploads/2011/12/Figure-3-150x150.png" class="attachment-thumbnail" alt="" title="Figure 2 (b)" /></a>
<a href='http://lsd.luminis.eu/en/atom3-0-2-2-language-workbench-evaluation/figure-4-1/' title='Figure 3 (a)'><img width="150" height="150" src="http://lsd.luminis.eu/wp-content/uploads/2011/12/Figure-4-1-150x150.png" class="attachment-thumbnail" alt="" title="Figure 3 (a)" /></a>
<a href='http://lsd.luminis.eu/en/atom3-0-2-2-language-workbench-evaluation/figure-4-2/' title='Figure 3 (b)'><img width="150" height="150" src="http://lsd.luminis.eu/wp-content/uploads/2011/12/Figure-4-2-150x150.png" class="attachment-thumbnail" alt="" title="Figure 3 (b)" /></a>
<a href='http://lsd.luminis.eu/en/atom3-0-2-2-language-workbench-evaluation/figure-4-3/' title='Figure 3 (c)'><img width="150" height="150" src="http://lsd.luminis.eu/wp-content/uploads/2011/12/Figure-4-3-150x150.png" class="attachment-thumbnail" alt="" title="Figure 3 (c)" /></a>
<a href='http://lsd.luminis.eu/en/atom3-0-2-2-language-workbench-evaluation/figure-4-4/' title='Figure 3 (d)'><img width="150" height="150" src="http://lsd.luminis.eu/wp-content/uploads/2011/12/Figure-4-4-150x150.png" class="attachment-thumbnail" alt="" title="Figure 3 (d)" /></a>
<a href='http://lsd.luminis.eu/en/atom3-0-2-2-language-workbench-evaluation/figure-5/' title='Figure 4'><img width="150" height="150" src="http://lsd.luminis.eu/wp-content/uploads/2011/12/Figure-5-150x150.png" class="attachment-thumbnail" alt="" title="Figure 4" /></a>

]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.eu/en/atom3-0-2-2-language-workbench-evaluation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CHARTER Surveillance Use Case &#8211; Industrial Evaluation</title>
		<link>http://lsd.luminis.eu/en/charter-surveillance-use-case-industrial-evaluation/</link>
		<comments>http://lsd.luminis.eu/en/charter-surveillance-use-case-industrial-evaluation/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 14:31:29 +0000</pubDate>
		<dc:creator>Andriy Levytskyy</dc:creator>
				<category><![CDATA[MDD]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[case]]></category>
		<category><![CDATA[CHARTER]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[evaluation]]></category>
		<category><![CDATA[industry]]></category>
		<category><![CDATA[mdd]]></category>
		<category><![CDATA[MDE]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[News Item]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://lsd.luminis.eu/?p=1718</guid>
		<description><![CDATA[(Nederlands) This month, Luminis has started development of a surveillance use case. The purpose of the case is industrial assessment and validation of tools and technologies developed in the “Critical and High Assurance Requirements Transformed through Engineering Rigor” project (CHARTER).  The ultimate goal of CHARTER is to ease, accelerate, and cost-reduce the certification of embedded systems. The CHARTER tool-suite employs real-time Java, Model Driven Development (MDD), rule-based compilation and formal verification. The coming series of articles will describe evaluation experiences in the surveillance use case.]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-1719 alignleft" title="Screen shot 2011-10-10 at 4.18.26 PM" src="http://lsd.luminis.eu/wp-content/uploads/2011/10/Screen-shot-2011-10-10-at-4.18.26-PM.png" alt="Screen shot 2011-10-10 at 4.18.26 PM" width="150" height="150" />This month, Luminis has started development of a surveillance use case. The purpose of the case is industrial assessment and validation of tools and technologies developed in the “Critical and High Assurance Requirements Transformed through Engineering Rigor” project (<a href="http://charterproject.ning.com/" target="_blank">CHARTER</a>).  The ultimate goal of CHARTER is to ease, accelerate, and cost-reduce the certification of embedded systems. The CHARTER tool-suite employs real-time Java, Model Driven Development (MDD), rule-based compilation and formal verification. The coming series of articles will describe evaluation experiences in the surveillance use case.</p>
<p>The CHARTER project includes user partners from four key industries: aerospace, automotive, surveillance and medical, each of which develops embedded systems that require high assurance or formal certification in order to meet business or governmental requirements. The four user partners will each validate the CHARTER tools and methodology using industrial applications and actual development scenarios, which will provide feedback for the project and ensure the tools and technologies perform as expected, and deliver the expected improvements in embedded systems development. As part of the evaluation process, metrics will be used to quantify industrial experiences in terms of development effort, cost savings, verification time, etc., to document for others the benefits achieved.</p>
<p>The CHARTER project was established to improve the software development process for developing critical embedded systems. Critical embedded software systems assist, accelerate, and control various aspects of society and are common in cars, aircraft, medical instruments and major industrial and utility plants. These systems are critical to human life and need to be held to the highest standards of performance through formal certification procedures. Improving the quality and robustness of these systems is paramount to their widespread adoption.</p>
]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.eu/en/charter-surveillance-use-case-industrial-evaluation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An MDE Example: Curriculum Content Sequencing Application</title>
		<link>http://lsd.luminis.eu/en/an-mde-example-curriculum-content-sequencing-application/</link>
		<comments>http://lsd.luminis.eu/en/an-mde-example-curriculum-content-sequencing-application/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 19:51:00 +0000</pubDate>
		<dc:creator>Andriy Levytskyy</dc:creator>
				<category><![CDATA[MDD]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[mdd]]></category>
		<category><![CDATA[MDE]]></category>
		<category><![CDATA[metamodel]]></category>
		<category><![CDATA[ontology]]></category>
		<category><![CDATA[process]]></category>

		<guid isPermaLink="false">http://lsd.luminis.eu/?p=1679</guid>
		<description><![CDATA[(Nederlands) The best way to explain MDE to someone without any model-driven experience is to involve in an MDE development. The second best, for which blog is a suitable medium, is to show examples. Today I would like to share an example of a simple MDE application and give a glimpse into work items and a process behind its development.]]></description>
			<content:encoded><![CDATA[<p>The best way to explain MDE to someone without any model-driven experience is to involve in an MDE development. The second best, for which blog is a suitable medium, is to show examples. Today I would like to share an example of a simple MDE application and give a glimpse into work items and a process behind its development.</p>
<p>The application in question is an MDE implementation of a sequencing system described in [1]. The purpose of this MDE exercise was to quickly build something concrete that would help <a href="http://www.luminis.eu/" target="_blank">Luminis</a> learn a new vertical domain.</p>
<p><strong>Problem Domain and Demo System</strong></p>
<p>Curriculum content sequencing (CCS) is an important pedagogical service. The purpose of this service is management of learning routes to help students achieve curriculum goals. An emerging trend in education is adaptive learning that is tailored to backgrounds and preferences of individual students. This is in contrast to the traditional way of content sequencing that usually prescribed a single learning route for groups of individuals. Advances in e-learning provide an excellent platform for adaptive content sequencing.</p>
<p><img class="aligncenter size-full wp-image-1683" title="Actors_and_services" src="http://lsd.luminis.eu/wp-content/uploads/2011/09/Actors_and_services.png" alt="Actors_and_services" width="598" height="399" /></p>
<p style="text-align: center;"><em>Figure 1: Use case diagram of the demo system</em></p>
<p>A use case diagram in Figure 1 shows actors and important services of a simple content sequencing system. These services are:</p>
<p><span style="text-decoration: underline;">Capture sequencing content</span> provides Sequencing Expert with tools to design content sequencing knowledge necessary to reach a curriculum goal.</p>
<p><span style="text-decoration: underline;">Register learning units</span> enables Materials Provider to connect leaning materials to nodes of content sequencing.</p>
<p><span style="text-decoration: underline;">Suggest a learning route</span> provides Student with a learning route tailored to the student’s curriculum competences, background and preferences. The service also suggests necessary learning units and their substitutions from other providers.</p>
<p><strong>Problem Domain Ontology</strong></p>
<p>Domain ontology is conceptualization of domain knowledge. Figure 2 shows an information model that captures ontology for the CCS domain. The model is created using the <a href="http://www.orm.net/" target="_blank">Object Role Modelling</a> (ORM) methodology. Some readers may be also familiar with ORM&#8217;s close relatives from The Netherlands: NIAM and <a href="http://www.fco-im.nl/" target="_blank">FCO-IM</a>.</p>
<p style="text-align: center;"><img class="size-full wp-image-1692 aligncenter" title="Simple_SSC_ontology" src="http://lsd.luminis.eu/wp-content/uploads/2011/09/Simple_SSC_ontology.png" alt="Simple_SSC_ontology" width="551" height="322" /></p>
<p style="text-align: center;"><em>Figure 2: Ontology for the curriculum content sequencing domain</em></p>
<p>At this point a few disclaimers are due:</p>
<p>The model loosely conforms to ORM, namely main principles are followed, used notation is based on more popular UML and ER languages, and not all ORM tools are being employed (an example of an ORM tool in Figure 2 is relationship ‘succession’ that is objectified as an entity).</p>
<p>The model itself is not complete. Moreover, it cannot be claimed correct, as the model was not verified with subject matter experts. However, the model is sufficiently accurate for the purpose of the demo (see above).</p>
<p><strong>Design</strong></p>
<p>The system illustrated in Figure 1 is partitioned in 2 parts: a domain specific modeling environment (DSME) for Sequencing Expert and a web-based CMS for Student and Materials Provider. Both parts can import/export curriculum content sequencing designs from each other. Each part provides the actors with rich environment and enables reuse of generic services that are relevant to the application, e.g. user management, document flow, security, content search. Any application-specific functionality that <em>changes frequently during the application&#8217;s life-cycle</em> was engineered with models, otherwise programmed. Such points of frequent change are known as variation points.</p>
<p>Figure 3 shows the system parts, variation points (shown as boxes) and activities (diamonds) related to changes in the variation points. These are laid over the OMG’s <a href="http://en.wikipedia.org/wiki/Meta-Object_Facility#Overview" target="_blank">four modeling layers</a> (labeled M0-M3). Variations at level M1 are part of the normal application operation. Here Sequencing Expert and Materials Publisher define sequencing designs and learning units (LU) respectively. Variations at level M2 occur when domain definitions (see Figure 2) change, e.g. as developer’s understanding of the CCS domain evolves. These are changes to the system itself and are carried out by developers during development or consequent system updates. Grayed out shapes at M0 and M3 are system and technology related variation points that do not change once chosen.</p>
<p style="text-align: center;"><img class="size-full wp-image-1685 aligncenter" title="CCS_Meta_application_PIM" src="http://lsd.luminis.eu/wp-content/uploads/2011/09/CCS_Meta_application_PIM.png" alt="CCS_Meta_application_PIM" width="523" height="341" /></p>
<p style="text-align: center;"><em>Figure 3: System parts, modeling architecture, variation points and change processes</em></p>
<p>Changes at level M2 are expensive and (given the experimental nature of the demo) frequent. Therefore these are best reduced or avoided. The direction of development activities implies that there is a single source of M2 changes, from which all the others can be derived. MDE is applied to isolate this source of change within a model (see <em>Metamodel</em> in the figure) and automate related development activities by means of transformations.</p>
<p>The following are selected technologies:</p>
<ul>
<li><a href="http://atom3.cs.mcgill.ca/" target="_blank">AToM3</a> ─ a language workbench. AToM3 uses Entity-Relationship (ER) and Graph Grammar (GG) as <em>Metalanguage</em> and <em>Transformation definition language</em> respectively. AToM3 is used as language workbench in (model-driven) development and as domain-specific modeling environment (DMSE) for Sequencing Expert.</li>
<li>Zope ─ a web application server that is typically used as intranet and extranet server, document publishing system, portal server and platform for collaboration. In this application, Zope provides a web-based CMS for Student and Material Provider.</li>
<li><a href="http://sourceforge.net/projects/zcase/" target="_blank">ZCase</a> ─ a model-driven software factory for code generation of Zope document types.</li>
<li>Python for development other than model-driven.</li>
</ul>
<p>With these solutions and technologies in place, the following is left to be developed:</p>
<ol>
<li>Metamodels for sequencing designs and learning units (see Figure 2).</li>
<li>A transformation bridging the gap between AToM3 metamodels and ZCase, thus forming a complete transformation chain <em>Model→Code</em>.</li>
<li>Import/export routine between AToM3 and Zope</li>
<li>Simple web-interfaces and document search for Student and Materials Provider</li>
</ol>
<p>The last two items were trivial to implement. Item 2, while simple, requires introduction of new material (namely ER, Class diagrams, Zope, ZCase, Python) for explanation. For these reasons items 2,3 and 4 will not be covered in the article.</p>
<p><strong>Capturing Sequencing Designs</strong></p>
<p>With the selected technology we can now define a DSL for capturing sequencing designs in AToM3.</p>
<p style="text-align: center;"><img class="size-full wp-image-1691 aligncenter" title="Sequencing DSL metamodel" src="http://lsd.luminis.eu/wp-content/uploads/2011/09/Sequencing-DSL-metamodel.png" alt="Sequencing DSL metamodel" width="546" height="414" /></p>
<p style="text-align: center;"><em>Figure 4: CCS metamodel</em></p>
<p>Figure 4 shows a CCS metamodel written in ER. Note, that the screenshot shows only the abstract syntax, but the other aspects (see <a href="http://lsd.luminis.eu/measuring-quailty-of-a-metamodel/" target="_blank">metamodelling quality</a>) are defined as well. The quality of the metamodel is at level 5.</p>
<p>Using language workbench capabilities and the above metamodel, AToM3 configures itself into a dedicated modeling environment for curriculum expert. (This configuration is implemented by AToM3&#8217;s own transformation <em>Generate DSME</em>.)</p>
<p style="text-align: center;"><img class="size-full wp-image-1682 aligncenter" title="A learning sequence example of the first grade mathematics course determined by curriculum experts" src="http://lsd.luminis.eu/wp-content/uploads/2011/09/A-learning-sequence-example-of-the-first-grade-mathematics-course-determined-by-curriculum-experts.png" alt="A learning sequence example of the first grade mathematics course determined by curriculum experts" width="604" height="318" /></p>
<p style="text-align: center;"><em>Figure 5: A learning sequencing design for the first grade mathematics course</em></p>
<p>Figure 5 is a screenshot of the CCS modeling environment at work: Left vertical toolbar contains buttons for every modeling concept defined in the CCS metamodel. Top horizontal toolbar contains generic modeling tools, Edit and Connect in particular. In AToM3 modeling is performed by means of a visual editor: one selects a modeling concept, places it on the canvas and modifies its properties with the Edit tool. Further on, such created instances of modeling concepts can be coupled using the Connect tool. An example of such a visual model is a sequencing design for the first grade mathematics course, shown on the canvas of DSME.</p>
<p><strong>Sequencing Designs in CMS</strong></p>
<p>Given the CCS metamodel, transformation chain ER→Zope generates implementation of the corresponding document types for Zope. Figure 6 shows these document types as seen in CMS (see options in the drop down list). You may recognize the entities and relationships from the metamodel shown in Figure 4.</p>
<p style="text-align: center;"><img class="size-full wp-image-1686 aligncenter" title="CMS Sequencing document types" src="http://lsd.luminis.eu/wp-content/uploads/2011/09/CMS-Sequencing-document-types.png" alt="CMS Sequencing document types" width="536" height="347" /></p>
<p style="text-align: center;"><em>Figure 6: Sequencing document types available in CMS</em></p>
<p>These types allow curriculum experts to build sequencing designs in a web browser. A more convenient way is to transfer sequencing designs from the DSME part. This is achieved by executing an export transformation on a sequencing design in AToM3. The result of this transformation is a fully searchable CCS document stored as graph structure in Zope. For example, given the AToM3 model in Figure 5, export would create a Zope document of type Sequencing multigraph as shown in the figure below.</p>
<p style="text-align: center;"><img class="size-full wp-image-1684 aligncenter" title="Author view on a sequencing model" src="http://lsd.luminis.eu/wp-content/uploads/2011/09/Author-view-on-a-sequencing-model.png" alt="Author view on a sequencing model" width="578" height="546" /></p>
<p style="text-align: center;"><em>Figure 7: Sequencing expert view on a CCS document</em></p>
<p>Figure 7 shows the web-interface that represents a CCS document as graph structure, i.e. a set of edges and nodes. (A viewer which can display graph-like structures in HTML web pages would be more appropriate, but is not necessary for this demo.) Note that the structure and properties of the AToM3 model from Figure 5 are transferred without loss of information.</p>
<p>The document shown in Figure 7 can be changed online and downloaded (via export tab seen in the screenshot) as an AToM3 model. Consequently, the downloaded file can be loaded in AToM3 for editing, thus closing the import/export round-trip.</p>
<p><strong>Learning Unit Registration</strong></p>
<p style="text-align: center;"><img class="size-full wp-image-1688 aligncenter" title="Learning Unit model" src="http://lsd.luminis.eu/wp-content/uploads/2011/09/Learning-Unit-model.png" alt="Learning Unit model" width="487" height="400" /></p>
<p style="text-align: center;"><em>Figure 8: Learning Unit metamodel</em></p>
<p>Learning Unit is a simple and atomic Zope document type, whose AToM3 metamodel is shown in Figure 8. LU Zope type is generated and its instances are created, searched, read, and modified similar to those of the CCS document types. A simple web interface is sufficient for Material Provider.</p>
<p><strong>Obtaining Learning Routes</strong></p>
<p>Currently, this service has a very basic recommendation mechanism:</p>
<ul>
<li>Sequencing designs are searched to match query parameters.</li>
<li>No account is taken of student’s curriculum competences, background and preferences (and there is no student profile).</li>
</ul>
<p style="text-align: center;"><img class="size-full wp-image-1690 aligncenter" title="Searching for course sequencing" src="http://lsd.luminis.eu/wp-content/uploads/2011/09/Searching-for-course-sequencing.png" alt="Searching for course sequencing" width="578" height="546" /></p>
<p style="text-align: center;"><img class="size-full wp-image-1689 aligncenter" title="Reader view on a sequencing model" src="http://lsd.luminis.eu/wp-content/uploads/2011/09/Reader-view-on-a-sequencing-model.png" alt="Reader view on a sequencing model" width="578" height="546" /></p>
<p style="text-align: center;"><img class="size-full wp-image-1693 aligncenter" title="Substitutive materials per SD" src="http://lsd.luminis.eu/wp-content/uploads/2011/09/Substitutive-materials-per-SD.png" alt="Substitutive materials per SD" width="578" height="546" /></p>
<p>The above screenshots illustrate the current functionality: The first is the web interface that allows students to define search parameters and displays search results. The next is the web view of the sequencing design previously shown in Figure 5. Selecting any node of the design, will display information about the sequencing node and suggest learning units and their substitutions from alternative materials providers (see the last screenshot).</p>
<p><strong>Summary</strong></p>
<p>In conclusion, I would like to highlight a few points about this MDE application:</p>
<p>The complete development of the application took about 2 man-week. The real power, however is how fast the application can be updated as the knowledge of the application domain evolves: a matter of an hour given even drastic changes in metamodels. This efficiency is possible due to application of the <a href="http://en.wikipedia.org/wiki/Single_Source_of_Truth" target="_blank">SSoT</a> principle, proper abstractions and automation: Effectively, two separate <a href="http://en.wikipedia.org/wiki/Platform-specific_model" target="_blank">PSM</a> developments were replaced by a single <a href="http://en.wikipedia.org/wiki/Platform-independent_model" target="_blank">PIM</a> development, from which code is generated for two platforms (AToM3 and Zope).</p>
<p>In development of this application, off-the-shelf MDE frameworks were reused (namely AToM3 and ZCase) and traditional development process was interwoven with development of missing model-driven assets (metamodels, ER→ZCase transformation). The latter is a software development process too, and as a matter of fact, followed OMG’s CIM/PIM/PSM process architecture.</p>
<p>Naturally, development of model-driven assets has its particularities as well. For one, there is a much stronger isomorphism between objects in the world of application users and domain concepts in model-driven artifacts. Therefore, role of analysis models, such as shown in Figure 2 is more important than in the more requirements-oriented traditional development.</p>
<p>This demo provides extremely simplified service for learning route recommendation. Recommendation algorithm depends on the information structures and is sensitive to changes in those structures as well. The service is in fact a model interpretation, where model is a CCS design and a Student profile. A possible MDE approach to building an application-specific interpreter is described <a href="http://lsd.luminis.eu/how-to-build-a-custom-model-interpreter-in-a-model-driven-way/" target="_blank">here</a> (but be sure to read the approach’s limitations as well).</p>
<p>Developed metamodels reach level 5 of <a href="http://lsd.luminis.eu/measuring-quailty-of-a-metamodel/" target="_blank">metamodeling quality</a>. This topmost level means that all aspects of the language have been modeled, including its semantics. In this demo, semantics of ER was defined by using the translational approach, that is by translating ER concepts to Zope and AToM3 concepts that have precise semantics. Figure 3 shows these translations as <em>Model→Code</em> and <em>Generate DSME</em> activities. This illustrates that a language can have multiple semantics.</p>
<p>The demo also showed that modular transformations can be reused to form new transformation chains. Case in point is how ZCase was integrated in ER to Zope transformation by means of a relatively simple bridge. This is a counterexample to a claim that MDE solutions are inflexible.</p>
<p>Do you have experience with MDE applications within your organization? Can you share these experiences as well?</p>
<p><strong>References</strong></p>
<p>[1] Yu-Liang Chi. 2009. Ontology-based curriculum content sequencing system with semantic rules. Expert Syst. Appl. 36, 4 (May 2009), 7838-7847.</p>
]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.eu/en/an-mde-example-curriculum-content-sequencing-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MetaEdit+ 4.5 Review</title>
		<link>http://lsd.luminis.eu/en/metaedit-4-5-review/</link>
		<comments>http://lsd.luminis.eu/en/metaedit-4-5-review/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 16:11:08 +0000</pubDate>
		<dc:creator>Andriy Levytskyy</dc:creator>
				<category><![CDATA[MDD]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code generator]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[DSM]]></category>
		<category><![CDATA[GOPPRR]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[mdd]]></category>
		<category><![CDATA[MDE]]></category>
		<category><![CDATA[MERL]]></category>
		<category><![CDATA[MetaEdit+]]></category>
		<category><![CDATA[metamodel]]></category>
		<category><![CDATA[News Item]]></category>
		<category><![CDATA[opinion]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[workbench]]></category>

		<guid isPermaLink="false">http://lsd.luminis.eu/?p=1277</guid>
		<description><![CDATA[MetaEdit+ DSM Environment by company MetaCase is a commercial language workbench that in contrast to inflexible CASE tools, enables users to build their own modeling and code generation tools (aka DSM tools). It comes in two main product components:

MetaEdit+ Modeler provides customizable DSM functionality for multiple users, multiple projects, running on all major platforms.
MetaEdit+ Workbench [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-1300" title="MetaEdit+" src="http://lsd.luminis.eu/wp-content/uploads/2010/12/metaedit-250x511.png" alt="MetaEdit+" width="255" height="56" />MetaEdit+ DSM Environment by company <a href="http://www.metacase.com" target="_blank">MetaCase</a> is a commercial language workbench that in contrast to inflexible CASE tools, enables users to build their own modeling and code generation tools (aka DSM tools). It comes in two main product components:</p>
<ul>
<li>MetaEdit+ Modeler provides customizable DSM functionality for multiple users, multiple projects, running on all major platforms.</li>
<li>MetaEdit+ Workbench i) allows building custom modeling languages (DSLs), and text generators and 2) includes the functionality of MetaEdit+ Modeler and MetaEdit+ API (the latter is not reviewed in this document).</li>
</ul>
<p>This review is written from the MDE perspective and will cover major MDE functionally related to specification of modeling languages. For a complete picture of MetaEdit+, readers are advised to consider other aspects (e.g. collaboration, versioning, etc&#8230;) as well.</p>
<p>This review covers MetaEdit+ Workbench version 4.5.</p>
<h3>Language Specification</h3>
<p><img class="alignright size-medium wp-image-1295" title="A" src="http://lsd.luminis.eu/wp-content/uploads/2010/12/A-300x282.png" alt="A" width="180" height="169" />MetaEdit+ supports graph-like visual languages represented as diagrams, matrixes or tables. There is a limited support for spatial languages: touch and containment relationships are derived from canvas coordinates of modeling elements. There is no actual tool support to preserve these relationships: for example, as a modeller moves a “container” element, contained elements do not move along as expected, but remain at old coordinates.</p>
<p>In MetaEdit+, languages are specified with a set of specialized tools. In the following, we describe the tools per each aspect of the visual language definition: abstract syntax, concrete syntax, static and dynamic semantics.</p>
<h4>Abstract Syntax</h4>
<p>This aspect is defined with GOPPRR metatypes. GOPPRR is an acronym for metatypes Graph, Object, Property, Port, Role and Relationship. For each metatype, there is a form-based tool, e.g. Object tool allows specification of object types  and Graph tool allows assembling types produced with the other tools into a specification of abstract syntax. GOPPRR tools support single inheritance.</p>
<p>Graph tool also allows linking DSL objects to graphs of other DSLs through decomposition and explosion structures. Furthermore, through sharing language concepts (of any OPPRR metatype) among graphs, DSLs can be integrated so that changes in one model can be automatically reflected in models based on different languages.</p>
<p>An alternative to these form-based tools for abstract syntax specification is a visual metamodeling DSL. However, this functionality is best used as easy start-up leading to automated generation of barebone GOPPRR metamodels. Once a language developer changes a GOPPRR metamodel (which is inevitable), visual metamodeling is best discontinued to avoid manual round-trip between the two metamodels.</p>
<h4>Concrete Syntax</h4>
<p>By default, MetaEdit+ provides generic symbols. However, language developers are free to specify custom symbols for objects, roles and relationships. These symbols are either defined with a WYSIWYG vector drawing tool or imported from vector graphics (SVG) or bitmap files. Symbols can display text, property values and dynamic outputs produced by text generators (more on generators in section M2T Transformation). Moreover, symbols or their parts can be conditionally displayed. Finally, symbols can be reused among different DSLs via a symbol library.</p>
<p>MetaEdit+ does not directly support multiple concrete syntaxes per language, which (the lack of such support) is still a common practice among language workbenches. However, its capability to display symbols based on conditions allows to work around this limitation.</p>
<h4>Static Semantics</h4>
<p>This aspect covers constraints and business rules. The purpose of these rules is to ensure a consistent and valid model.</p>
<p>In general, DSM tools should verify a model against the static semantics of its DSL at different times. These times can be classified as ‘live’ (i.e. when a user is modelling) and ‘batch’ (i.e. invoked on events caused by actions such as user demand, model saving or transformation). Furthermore, tool actions following violation of a constraint can be classified as prevention (i.e. a violating action is canceled and a warning message is displayed) or merely informative (i.e. a violating action is allowed, but model will display clues about invalid constructions until the effect of the action is corrected).</p>
<p>MetaEdit’s Constraint tool (available from the Graph tool) allows ‘live’ checks against constraints and preventive protection of models (‘live’ and ‘preventive’ in the terms of the above classifications). The tool is very expressive and easy to use, but covers only limited number of types of constraints, namely:</p>
<ul>
<li>object connectivity in a relationship</li>
<li>object occurrence in a model</li>
<li>ports involved in a relationship</li>
<li>property uniqueness</li>
</ul>
<p>More advanced constraints have to rely on MERL generator (see section M2T Transformation), which can inform users about invalid constructions during modeling (‘live’ and ‘informative’ in the terms of the above classifications). MERL generator can also be used for ‘batch informative’ and ‘batch preventive’ checks: a checking report can be run on demand or included as preventive check before any other transformation is carried out.</p>
<h4>Dynamic Semantics</h4>
<p>MetaEdit+ can define dynamic semantics through a process of translating DSL concepts to concepts in another target domain with defined dynamic semantics. Examples of target domains in code generation applications are e.g. C++ or Java. A major benefit of language workbenches is that they are capable of automating this and other useful kinds of processes.</p>
<h3>PROCESS AUTOMATION</h3>
<p>MDE applications need capabilities to automate processes in which models are inputs and outputs. MetaEdit+ provides various levels of support for model-to-model (M2M), model-to-text (M2T) (e.g. in code generation applications) and text-to-model (T2M) (import of legacy code, data type definitions, etc. into models) types of transformations. (The latter transformation type is not reviewed.)</p>
<h4>M2T Transformation</h4>
<p>Text (and more specifically code) generation is accomplished with Generator tool that can efficiently navigate models, filter and access information, and output text into external files, Generator Output tool and DSL symbols.  All these tasks are specified with imperative language MERL. While MERL is very concise and efficient for most of these tasks, I think that navigation and access tasks are better accomplished in a declarative way.</p>
<p>MERL generators are defined per graph type (i.e. per DSL) and can be acquired from supertypes of a given graph type via an inheritance hierarchy. If a generator has to be used for different graph types, then the generator should be defined for the common parent graph type. On the other hand, DSL developer can define new or redefine generators already provided by parent graph types.</p>
<p>Finally, MERL provides support for modularization by allowing includes of generators in other generators. Making modular generators pays off well, as there are many reuse opportunities in MetaEdit+: generators can be reused not only for text generation but also in concrete syntax (symbols) and validation/reporting purposes (symbols, generator output tool).</p>
<h4>M2M Transformation</h4>
<p>Models can be transformed 1) programmatically via the SOAP and WebServices-based API of MetaEdit+ (this option requires product component MetaEdit+ API) or 2) through code generation of an intermediate external representation (in the XML format) and consequent import thereof as new model.</p>
<p>These two options amount to a generic support at a minimum level that is commonly provided nearly by all language workbenches. Moreover, code generation of an intermediate representation cannot implement in-place M2M transformations, of which application examples are: model optimization, model layout, <a href="http://lsd.luminis.eu/model-interpretation-for-weighbridge-domain/" target="_blank">model interpretation</a>, model weaving and any repeatable model manipulation in general.</p>
<h3>OTHER</h3>
<ul>
<li>DSL evolution: MetaEdit+ updates existing models instantly yet non-destructively to reflect changes in DSLs.  The update policy ensures that models created with the older DSL versions are not broken and remain usable with existing generators. Instant update is also very useful when fine-tuning a DSL with end users.</li>
<li>According to MetaCase, a MetaEdit+ project can hold over 4 billion objects. A typical project would contain about 40-100 models (graphs).</li>
<li>In the multi-user version, users can simultaneously access and share all models within a Repository. Locking is made at the object-level, so several users could collaboratively work on the same model at the same time.</li>
<li>Multi-user collaboration in MetaEdit+, product line analysis of commonality and variability and proper separation of concerns reduce the need for version control as it is known in software engineering. Therefore MetaEdit+ does not provide its own versioning system. Best practices for versioning with MetaEdit+ can be found <a href="http://www.metacase.com/support/45/documentation/versioning.html" target="_blank">here</a>.</li>
<li>Model interoperability: by default, all models and DSLs can be exported in an XML format. The schemas are very simple, which make it easy to post-process such files if needed. Moreover, the M2T transformation capabilities of MetaEdit+ enable DSL developers to easily create custom export generators.</li>
</ul>
<h3>CONCLUSION</h3>
<p>MetaEdit+ is a versatile language workbench that enables building high quality visual DSLs for any kind of domain, be it technical or business. Another key quality of MetaEdit+ is efficient DSL/GOPPRR tools, which allow light-weight, agile and fast DSL development and evolution. A testament to this quality is the fact that MetaCase is one of few language workbench makers that routinely designs and builds DSLs in improvisation with audience at conferences, workshops, etc. In my opinion, this impressive productivity is possible because GOPPRR tools are based on paradigms that are optimum for DSL development (DSM for DSM so to speak).</p>
<p>Highlights of MetaEdit+ are:</p>
<ul>
<li>Proper level of abstraction: DSL developers are completely shielded from details of how DSM-tools are implemented. DSL development tools focus on essential abstractions for specification of languages and generators.</li>
<li>High-levels of automation: DSM-tools are completely and automatically generated from abstract language specifications.</li>
<li>High quality of tools: each DSL development task has its own dedicated tool.</li>
<li>Numerous enhancements: high integration of tools, non-destructive evolution of languages, inheritance mechanism, reuse opportunities for types, symbols and generators, visual metamodeling, etc.</li>
<li>Very cheap <a href="http://www.metacase.com/introductory_license.html" target="_blank">introductory license</a>.</li>
</ul>
<p>Naturally, there are a few drawbacks as well:</p>
<ul>
<li>No specific support for model-to-model transformation.</li>
<li>Somewhat limited constraints support.</li>
<li>Limited support for spatial relations.</li>
<li>Uncommon user interface.</li>
<li>Form-based GOPPRR tools prevent a global overview of a metamodel.</li>
<li>Expensive  standard licenses.</li>
</ul>
<p>Code generation applications are the oldest tradition in MDE and this is where MetaEdit+ excels. As MDE discovers new applications, my experience is that the code generation specialization becomes restrictive. Admittedly, it is possible to implement some types of M2M transformations with code generation (via intermediate representation). However, the problem with this workaround is that it introduces accidental complexity both to MDE developers and more importantly to end users (that have to keep repeating the generate/import routine, sometimes complicated by model merge).</p>
<p>That said, in my opinion MetaEdit+ gets the big things right. Whether its shortcomings are little things is a subjective matter that is best evaluated in the context of a concrete problem domain.</p>
]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.eu/en/metaedit-4-5-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DSL Design Tutorial at PPL2010</title>
		<link>http://lsd.luminis.eu/en/dsl-design-tutorial-at-ppl2010/</link>
		<comments>http://lsd.luminis.eu/en/dsl-design-tutorial-at-ppl2010/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 17:13:32 +0000</pubDate>
		<dc:creator>Andriy Levytskyy</dc:creator>
				<category><![CDATA[MDD]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[luminis]]></category>
		<category><![CDATA[mdd]]></category>
		<category><![CDATA[News Item]]></category>
		<category><![CDATA[ontology]]></category>

		<guid isPermaLink="false">http://lsd.luminis.eu/?p=1273</guid>
		<description><![CDATA[In MDD explicit knowledge of the domain is crucial for successful development of domain-specific modeling languages (DSML). Yet many starting DSL developers are missing the skill of domain knowledge conceptualization. The main symptoms are difficulty to come up with good language concepts and struggling with levels of abstractions.
While language design remains an art, there are a [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-1274" src="http://lsd.luminis.eu/wp-content/uploads/2010/11/Screen-shot-2010-11-19-at-4.27.16-PM-300x263.png" alt="Photo from Inception (2010)" width="300" height="263" />In MDD explicit knowledge of the domain is crucial for successful development of domain-specific modeling languages (DSML). Yet many starting DSL developers are missing the skill of domain knowledge conceptualization. The main symptoms are difficulty to come up with good language concepts and struggling with levels of abstractions.</p>
<p>While language design remains an art, there are a number of paradigms, techniques and guidelines that can make creation of DSLs easier. These helping means are the core of the DSL design tutorial developed at Luminis Software Development.</p>
<p>The tutorial was given for the first time during the <a title="PPL2010" href="http://www.practicalproductlines.org/ppl2010/index.php" target="_blank">PPL2010</a> conference that took place on November 17 &amp; 18 at Océ R&amp;D, Venlo, NL. A small group of participants learned basics of domain analysis, participated in domain definition and implemented a simple metamodel of their own. The general feedback was very positive.</p>
<p>The slides for the tutorial can be downloaded <a title="here" href="http://www.bits-chips.nl/events/ppl2010" target="_blank">here</a> from the Bits&amp;Chips website.</p>
]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.eu/en/dsl-design-tutorial-at-ppl2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Model Interpretation for Weighbridge domain</title>
		<link>http://lsd.luminis.eu/en/model-interpretation-for-weighbridge-domain/</link>
		<comments>http://lsd.luminis.eu/en/model-interpretation-for-weighbridge-domain/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 08:21:31 +0000</pubDate>
		<dc:creator>Andriy Levytskyy</dc:creator>
				<category><![CDATA[MDD]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[executable models]]></category>
		<category><![CDATA[mda]]></category>
		<category><![CDATA[mdd]]></category>

		<guid isPermaLink="false">http://lsd.luminis.nl/?p=1122</guid>
		<description><![CDATA[Model interpretation approach is grasping attention of the model driven community. Industrial experiences of company Mendix has shown some very promising results. A recent post at a popular “model-minded” blog triggered a discussion about code generation versus model interpretation.
Model interpretation in itself is not a new concept and there exist well known interpreters for generic [...]]]></description>
			<content:encoded><![CDATA[<p>Model interpretation approach is grasping attention of the model driven community. Industrial experiences of company <a href="http://www.mendix.com/">Mendix</a> has shown some very promising results. A recent <a href="http://www.theenterprisearchitect.eu/archive/2010/06/28/model-driven-development-code-generation-or-model-interpretation">post</a> at a popular “model-minded” blog triggered a discussion about code generation versus model interpretation.</p>
<p>Model interpretation in itself is not a new concept and there exist well known interpreters for generic and mainstream domains (e.g., Ptolemy and Simulink). The novelty in model interpretation today is that model driven methods provide efficiency and flexibility, which enable application of this concept to arbitrary problem domains.</p>
<p>In a series of blogs we will illustrate this novel aspect and provide an example of model interpretation. Specifically this article will illustrate 1) how a custom modeling language (DSL) is developed for an arbitrary problem domain and 2) how a system behavior can be specified with the DSL and directly interpreted without any intermediate transformation steps. In a followup article we will show how a custom model interpreter can be efficiently built using a model driven method.</p>
<h3>Model Interpretation As System</h3>
<p>Traditional generative approaches like Model Driven Architecture (MDA) prescribe an (automated) code generation process that takes a system model as input and eventually produces code that implements the specified system. The system comes to existence when the code is executed.</p>
<p>Alternatively, the code generation process can be skipped and a system model be executed directly.  Model Interpretation achieves such direct execution by means of a model interpreter. In this case the system comes to existence when the model is being interpreted. Thereby system behavior is completely defined by the model being interpreted.</p>
<p>Fig. 1 illustrates a possible approach to model interpretation of event-driven systems.  An event-driven system exhibits behavior by generating (external) events in reaction to incoming external events. Therefore, the interpreter should support two-way event communication with the context. An example of an incoming external event is arrival of a positive signal from a motion sensor for an automated door. An outgoing external event could be a command to an actuator to open the door.</p>
<p><img class="alignnone size-full wp-image-1125" title="An approach to system as model interpretation" src="http://lsd.luminis.nl/wp-content/uploads/2010/10/Screen-shot-2010-10-04-at-9.07.01-PM.png" alt="Screen shot 2010-10-04 at 9.07.01 PM" width="426" height="300" /></p>
<p><em>Figure 1: An approach to system as model interpretation</em></p>
<p>In the figure, entities are shown as boxes and their roles w.r.t.  each other are shown in italic. Given that a domain-specific language (DSL) and an interpreter already exist, a domain expert uses the DSL to <em>specify</em> a system and its events at development time. Moving to the run-time, the same model (system configuration) <em>represents</em> the system and its events. During model execution, the interpreter reads system state from the model and interprets system events according to the semantics of the events. Interpretation may change the state of the system by changing the system configuration at run time, and communicate external events to the system’s context.</p>
<p>Typically a sequence of external events is provided by the context of the system. Alternatively, these events can be specified in the system model and consequently generated by the interpreter itself (in this case, system behavior is simulated).</p>
<h3>Domain</h3>
<p>Today model interpretation can be applied to an arbitrary problem domain. To reflect this freedom, we chose a minor and uncommon weighbridge domain, whose purpose is to measure weight of vehicles.</p>
<p>The following is a typical weighbridge scenario: One or more delivery vans arriving (at a factory) must pass over a weighbridge on entry. A weighbridge accepts one van at a time and each weighing operation takes a certain amount of time. If the weighbridge is busy, arriving vans join the waiting queue to the bridge. When the weighbridge becomes available again, the first van in the waiting queue drives over the bridge.</p>
<p>This domain is characterized by a number of inherent variations, such as number of weighbridges, weighbridge capacity, weighing operation duration, number of arriving vans, arrival times of vans, etc.. The result is that a multitude of weighbridge system configurations are possible and per configuration a multitude of dynamic van arrival and weighing scenarios can play out.</p>
<p><img class="alignnone size-full wp-image-1128" title="A weighbridge system modeled in a DSL" src="http://lsd.luminis.nl/wp-content/uploads/2010/10/Screen-shot-2010-10-04-at-9.11.54-PM.png" alt="A weighbridge system modeled in a DSL" width="332" height="315" /></p>
<p><em>Figure 2: A weighbridge system modeled in a DSL</em></p>
<p>Figure 2 shows a simplified weighbridge system configuration, originally described by Birtwistle and Tofts [1]. Yellow boxes are vans. The large blue box is a weighbridge and green entities are a van arrival queue (EL) at the factory and a van waiting queue (Delay) at a weighbridge. As you can see the factory’s configuration has a single weighbridge W, which is free at this time. Finally, three delivery vans V1, V2 and Main have arrived (external events). An execution of this model is illustrated further in the article. An <a href="http://atom3.cs.mcgill.ca/">AToM3</a> implementation of a DSL for the domain is briefly described next.</p>
<h3>Weighbridge DSL</h3>
<p>The earlier mentioned freedom of application depends on flexibility and efficient adaptation of model interpreters to new domains. Model driven methods achieve this flexibility through metamodeling. If you are not familiar with metamodeling, you can skip this section as it is not required for understanding the demo.</p>
<p>A DSL is defined with abstract syntax, concrete syntax, static semantics and dynamic semantics. (Such a definition is known as metamodel.) Behind every DSL is a modeling paradigm that gives fundamental guidelines for metamodeling. In case of the weighbridge domain, a proper modeling paradigm is Process Interaction [2].</p>
<p><img class="alignnone size-full wp-image-1129" title="PI Metamodel" src="http://lsd.luminis.nl/wp-content/uploads/2010/10/Screen-shot-2010-10-04-at-9.13.28-PM.png" alt="PI Metamodel" width="625" height="505" /></p>
<p><em>Figure 3: PI Metamodel</em></p>
<p>For the purposes of this demo, a PI modeling language will suffice  and we will reuse and extend a PI metamodel developed by Juan de Lara [3]. We just have to keep in mind that Process and Resource in Juan’s metamodel correspond to van and weighbridge concepts in the demo domain. The abstract syntax of the PI DSL is illustrated in Figure 3. The concrete syntax of this DSL is illustrated in Figure 2. We skip static semantics (in other words, business rules) as the focus of the domain is interpretation, not domain modeling. The following is a brief description of the key PI concepts:</p>
<p><strong>Resource</strong> is a synonym for the Weighbridge concept. A weighbridge has the following attributes:</p>
<p><span style="white-space: pre;"> </span><em>Name</em> is a unique identifier of Weighbridge: <em>String</em></p>
<p><span style="white-space: pre;"> </span><em>State</em> denotes availability of Weighbridge: <em>Enum{idle, busy}</em></p>
<p><span style="white-space: pre;"> </span><em>Tproc</em> is typical duration of weighing service: <em>Time </em>(used in simulated execution)</p>
<p><span style="white-space: pre;"> </span><em>Capacity</em> denotes capability to weigh multiple vans at the same time: <em>[1..N]</em></p>
<p><span style="white-space: pre;"> </span><em>Load</em> denotes weighbridge&#8217;s capacity occupied with served vans: <em>[0..Capacity]</em></p>
<p><strong>Process</strong> is a synonym of the Van concept. A van has the following attributes:</p>
<p><span style="white-space: pre;"> </span><em>Name</em> is a unique identifier of Van: <em>String</em></p>
<p><span style="white-space: pre;"> </span><em>Tcreation</em> is time-stamp of Van’s arrival event: <em>Time</em></p>
<p><span style="white-space: pre;"> </span><em>Tinitproc</em> is the start time of weighing operation: <em>Time</em></p>
<p><span style="white-space: pre;"> </span><em>Tendproc</em> is the end time of weighing operation: <em>Time</em></p>
<p><span style="white-space: pre;"> </span><em>Body</em> is a sequence of tasks: <em>sequence{task} </em>(tasks examples are bridge access, van weighing, bridge exit, etc.)</p>
<p><span style="white-space: pre;"> </span><em>EVnext</em> is the iterator for tasks in body: <em>[0..N]</em></p>
<p>For simulation purposes, additional concepts are defined:</p>
<p><strong>Time</strong> is a clock for simulated time.</p>
<p><strong>ProcIntGenerator</strong> specifies time intervals between van arrivals.</p>
<p>Finally, to assist visualization of system state, the original metamodel was extended with additional relationship:</p>
<p><strong>manageElement</strong> specifies an operation (append, insert or remove) on an element (target end of this relationship) of a sequence (source end of this relationship).</p>
<p>The final touch of DSL definition is dynamic semantics (meaning of DSL concepts). In the model interpretation approach, such semantics is defined in an interpreter. In case of a DSL and a pure interpretive approach there is a good chance that an interpreter exactly matching the DSL will need to be developed. More so if the interpreter has to meet additional specific requirements. In our case, such requirements were run-time visualization of system behavior and interpreter integration with the factory context (not covered in this article). In a followup article we will show how a custom model interpreter can be developed. Incidentally our development approach is also based on model interpretation.</p>
<h3>Run Time Example</h3>
<p>A picture is worth a thousand words. With that in mind an illustration of model interpretation is best done with a video. The following screencast shows execution of the weighbridge system configuration introduced earlier (see Figure 2). For the sake of visualization, execution is carried out in the step-by-step mode and displays how the state of the weighbridge configuration changes in response to events.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="385" 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://www.youtube.com/v/-CaH01RJXUY?fs=1&amp;hl=en_US&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="640" height="385" src="http://www.youtube.com/v/-CaH01RJXUY?fs=1&amp;hl=en_US&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h3>Conclusions</h3>
<p>In our experience model interpretation is characterized by very fast development times. In fact it did not even feel like development at all as domain experts are completely shielded from all incidental technical details.  I believe that Birtwistle and Tofts, the scientists that coined the weighbridge benchmark, would feel at home with the demonstrated DSL and the interpreter in no time. With incidental complexity out of the equation and direct involvement of domain experts, I think we’ve come very close to the essential complexity of the domain and development times cannot be drastically improved any more. That said, I feel that those interested in this approach should be aware of run-time performance penalty due to interpreter indirection. Whether this will pose a problem, depends on the application domain.</p>
<p>What are your experiences with model interpretation? What is your domain?</p>
<h3>References</h3>
<p>[1] Graham Birtwistle and Chris Tofts. An operational semantics of process-oriented simulation languages: Part 1 πDemos. ACM Transactions on Modeling and Computer Simulation, 10(4):299–333, December 1994.</p>
<p>[2] Jerry Banks, editor. Handbook Of Simulation. Principles, Methodology, Advances, Applications, and Practice, pages 813 – 833. Wiley-Interscience Publication, New York, September 1998.</p>
<p>[3] Juan de Lara. Simulacio ́n educativa mediante meta-modelado y grama ́ticas de grafos. Revista de Ensen ̃anza y Tecnolog ́ıa, 23, Mayo-Agosto 2002.</p>
]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.eu/en/model-interpretation-for-weighbridge-domain/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Presentaties AgileMDD kennissessie &#8211; 30 maart 2010</title>
		<link>http://lsd.luminis.eu/en/agilemdd-300310/</link>
		<comments>http://lsd.luminis.eu/en/agilemdd-300310/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 12:28:56 +0000</pubDate>
		<dc:creator>Richard van der Laan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[AgileMDD]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[kennissessie]]></category>
		<category><![CDATA[mda]]></category>
		<category><![CDATA[mdd]]></category>

		<guid isPermaLink="false">http://lsd.luminis.nl/?p=759</guid>
		<description><![CDATA[(Nederlands) Op 30 maart organiseerde luminis samen met ArchitecIT een kennissessie over model-driven development. In deze kennissessie stond het delen van praktijkervaringen centraal. De presentaties van deze avond zijn inmiddels online beschikbaar.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://lsd.luminis.nl/wp-content/uploads/2010/04/AgileMDD-300310-5.jpg"><img class="aligncenter size-full wp-image-834" title="AgileMDD-300310-5" src="http://lsd.luminis.nl/wp-content/uploads/2010/04/AgileMDD-300310-5.jpg" alt="" width="638" height="235" /></a></p>
<p>Op 30 maart organiseerde luminis samen met <a href="http://www.architecit.nl">ArchitecIT</a> een kennissessie over model-driven development. Aan de hand van vijf verschillende thema&#8217;s deelden sprekers van diverse organisaties hun praktijkervaringen met MDD. De volgende organisaties waren als deelnemer vertegenwoordigd: <strong>ArchitecIT, Delphino Consultancy, luminis, Ministerie van Defensie, Nedap, Nuon, PANalytical, Radboud Universiteit Nijmegen, Sogeti, Tennet en Thales.</strong></p>
<p>De presentaties van deze avond zijn inmiddels online beschikbaar en kunnen hieronder worden gedownload.</p>
<p><a href="http://www.agilemdd.nl"></a><a href="http://www.agilemdd.nl"><img class="alignleft size-full wp-image-509" title="agilemdd_logo" src="http://lsd.luminis.nl/wp-content/uploads/2009/09/agilemdd_logo.png" alt="agilemdd_logo" width="141" height="45" /></a><br />
<strong> </strong><br />
<strong> </strong><br />
<strong> </strong></p>
<p>In de praktijk zijn er bij softwareontwikkeling nog veel communicatie (overdrachtsmomenten) en bestaan de meeste ontwikkeltaken uit veel handwerk. Op basis van een MDD aanpak kunnen ontwikkeltaken worden geautomatiseerd en kan de onderlinge communicatie worden verbeterd. Hierbij is het echter wel belangrijk om te weten hoe MDD het beste kan worden toegepast en wat hierbij de meest voorkomende valkuilen zijn. Vanuit onze AgileMDD filosofie moet bij model-driven development een pragmatische en doelgerichte aanpak vooral centraal staan. Zo kan de bestaande ontwikkelkracht in de organisatie slimmer worden ingezet.<br />
<img class="alignright size-full wp-image-762" src="http://lsd.luminis.nl/wp-content/uploads/2010/04/AgileMDD-300310-1.jpg" alt="" width="160" height="230" /></p>
<p><strong></strong><br />
<strong>Programma kennissessie 30 maart:</strong></p>
<ul>
<li><a href="http://lsd.luminis.nl/wp-content/uploads/2010/04/AgileMDD-kennissessie-Trends-en-ontwikkelingen-Deel-1.pdf">Agile MDD: huidige trends en ontwikkelingen &#8211; Deel 1 (Richard van der Laan)</a></li>
<li><a href="http://lsd.luminis.nl/wp-content/uploads/2010/04/AgileMDD-kennissessie-Trends-en-ontwikkelingen-Deel-2.pdf">Agile MDD: huidige trends en ontwikkelingen &#8211; Deel 2 (Tony Sloos)</a></li>
<li><a href="http://lsd.luminis.nl/wp-content/uploads/2010/04/AgileMDD-kennissessie-Realtime-heterogeneous-systems.pdf">Thales case: MDA in realtime heterogene systemen (Rene van Hees, Alexander Broekhuis)</a></li>
<li><a href="http://lsd.luminis.nl/wp-content/uploads/2010/04/AgileMDD-kennissessie-DSL-toolkit.pdf">Defensie case: Microsoft DSL Toolkit in de praktijk (Gerrit Jan Timmermans, Erik Sanders)</a></li>
<li><a href="http://lsd.luminis.nl/wp-content/uploads/2010/04/AgileMDD-kennissessie-MDSD-en-software-architectuur.pdf">MDD en software architectuur (Angelo Hulshout)</a></li>
<li><a href="http://lsd.luminis.nl/wp-content/uploads/2010/04/AgileMDD-kennissessie-MDE-Opportunities-and-Risks.pdf">MDD kansen en risico&#8217;s (Andriy Levytskyy)</a></li>
</ul>
<p>Wil je op de hoogte blijven van aankomende AgileMDD sessies of geïnteresseerd in advies op maat? Neem dan contact op met Inge Dokter (<a href="mailto:inge.dokter@luminis.nl?SUBJECT=Interesse%20in%20AgileMDD">inge.dokter@luminis.nl</a>) of bel 026-3653470.</p>
<table>
<td><img class="alignleft size-full wp-image-773" src="http://lsd.luminis.nl/wp-content/uploads/2010/04/AgileMDD-300310-4.jpg" alt="" width="276" height="187" /><img class="alignright size-full wp-image-780" title="Discussie resultaat vorige MDD kennissessie" src="http://lsd.luminis.nl/wp-content/uploads/2010/04/AgileMDD-300310-3.jpg" alt="Discussie resultaat vorige MDD kennissessie" width="305" height="187" /></td>
</table>
]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.eu/en/agilemdd-300310/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Meld je nu aan voor de AgileMDD kennissessie op 30 maart</title>
		<link>http://lsd.luminis.eu/en/meld-je-nu-aan-voor-de-agilemdd-kennissessie-op-30-maart/</link>
		<comments>http://lsd.luminis.eu/en/meld-je-nu-aan-voor-de-agilemdd-kennissessie-op-30-maart/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 09:56:03 +0000</pubDate>
		<dc:creator>Richard van der Laan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[AgileMDD]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[mda]]></category>
		<category><![CDATA[mdd]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[uml]]></category>

		<guid isPermaLink="false">http://lsd.luminis.nl/?p=672</guid>
		<description><![CDATA[(Nederlands) Luminis Software Development en ArchitecIT nodigen je graag uit voor een kennissessie over model-driven development. We laten deze avond graag zien waarom modellen steeds belangrijker worden en hoe je er succesvol mee kunt zijn. De hele kennissessie zal in het teken staan van praktijkervaringen.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.agilemdd.nl"></a><a href="http://www.agilemdd.nl"><img class="alignleft size-full wp-image-509" title="agilemdd_logo" src="http://lsd.luminis.nl/wp-content/uploads/2009/09/agilemdd_logo.png" alt="agilemdd_logo" width="141" height="45" /></a><br />
<strong> </strong><br />
<strong> </strong><br />
<strong> </strong><br />
Luminis Software Development en ArchitecIT nodigen je graag uit voor een kennissessie over model-driven development.</p>
<p>We laten deze avond graag zien waarom modellen steeds belangrijker worden en hoe je er succesvol mee kunt zijn. De hele kennissessie zal in het teken staan van praktijkervaringen. </p>
<p>Aan de hand van vijf verschillende thema&#8217;s delen sprekers van diverse organisaties hun ervaringen met MDD in de praktijk: <b>Thales Hengelo</b>, <b>Ministerie van Defensie</b>, <b>ArchitecIT</b>, <b>Delphino Consultancy</b> en <b>luminis</b>.</p>
<p>In onze visie is het noodzakelijk om de ontwikkelkracht slimmer in te zetten, niet in de laatste plaats door de enorme toename van complexiteit in softwareintensieve systemen. In de praktijk zijn is er nog veel communicatie (overdrachtsmomenten) en bestaan de meeste ontwikkeltaken uit veel handwerk. Op basis van een pragmatische en doelgerichte aanpak kunnen ontwikkeltaken snel worden geautomatiseerd en kan de onderlinge communicatie worden verbeterd.</p>
<p><b>Datum:</b> dinsdag 30 maart van 16:45 tot 20:00 uur<br />
<b>Locatie:</b> IJsselburcht 3, 6825 BS, Arnhem<br />
<b>Voor wie:</b> Architecten, ICT Managers en belangstellenden<br />
<b>Aanmelden:</b> U kunt zich aanmelden per email door contact op te nemen met <a href="mailto:inge.dokter@luminis.nl?SUBJECT=Aanmelding%20MDD%20Kennissessie">Inge Dokter</a></p>
<p><b>Het programma:</p>
<p>16:45 Opening in de grote zaal<br />
17:00 Agile MDD: huidige trends en ontwikkelingen (Tony Sloos, Richard van der Laan)<br />
17:30 MDA in realtime heterogene systemen (Rene van Hees, Alexander Broekhuis)<br />
18:00 Lopend buffet<br />
18:30 Microsoft DSL Toolkit in de praktijk (Gerrit Jan Timmermans, Erik Sanders)<br />
19:00 MDD en software architectuur (Angelo Hulshout)<br />
19:30 MDD kansen en risico&#8217;s (Andriy Levytskyy)<br />
20:00 Afsluiting met borrel<br />
</b><br />
Graag ontvangen we je aanmelding zo snel mogelijk, maar in iedergeval voor <b><u>12 maart</u></b>. Aan deelname zijn <b><u>geen kosten</u></b> verbonden.<br />
Je kan je aanmelding sturen naar Inge Dokter (<a href="mailto:inge.dokter@luminis.nl?SUBJECT=Aanmelding%20MDD%20Kennissessie">inge.dokter@luminis.nl</a>)</p>
<p>We hopen je te zien op dinsdag 30 maart!</p>
]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.eu/en/meld-je-nu-aan-voor-de-agilemdd-kennissessie-op-30-maart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

