show all comments

DSM

Proceedings of the DSM'08 workshop available

October 07, 2008 11:22:09 +0300 (EEST)

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: www.dsmforum.org/events/DSM08.

DSM

JAOO track on DSLs

September 22, 2008 17:45:03 +0300 (EEST)

JAOO, 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 track on domain-specific languages. 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.

A more in-depth session with actual language creation and modification exercises is following the next day as JAOO conference sessions are followed by tutorials.

Hope to see you in Aarhus!

DSM

IEEE Software special issue on DSM

September 16, 2008 15:53:53 +0300 (EEST)

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 here.

DSM

Define DSLs based on existing metamodels?

August 21, 2008 17:05:54 +0300 (EEST)

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.

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:

  1. Extend the existing metamodel (add new constructs, and I consider here extending existing language constructs with profiles one option too)
  2. Modify the existing metamodel (add, delete, modify)
  3. Define the metamodel from the scratch
  4. Define the metamodel and possible reuse individual language constructs

With MetaEdit+ all these options are possible, but clearly 3 & 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 MetaEdit+ 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.

Consider for instance the domain of developing mobile phone applications ( Chapter 1 in DSM book ). A sample model for one mobile application is visible here . 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).

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.

DSM

DSLs: The Good, the Bad, and the Ugly. A panel at OOPSLA

July 29, 2008 17:18:01 +0300 (EEST)

This year OOPSLA has a panel dedicated on domain-specific languages. My aim is to be on “the Good” side. While this position comes naturally for me, having seen many times in industrial cases 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 panel and other program now available at OOPSLA website.

DSM

My DSL for mixin medical device

June 23, 2008 17:05:34 +0300 (EEST)

I mentioned previously the workshop organized by ICTNoviQ that included a metamodeling exercise. Such a hands-on part makes things more concrete and also shows the value of metamodels. I’ll 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 full description).

Structure of the machine

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 “take 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”. This is clearly the description in the terms of the problem domain. My DSL, implemented with MetaEdit+, for the above instruction looks like:

Sample Mixin Process

The same in solution domain is the code took from the exercise:

01 move(-3); filt(1); suck(5);
02 move(4); filt(0); blow(2);
03 move(1); blow(3);
04 move(-3); suck(30);
05 move(1); blow(30);

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.

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’t be put to the underlying platform.

DSM

MetaCase named as Top Influencer by Software Development Times

June 03, 2008 17:43:07 +0300 (EEST)

"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," said Alan Zeichick, editorial director at SD Times.

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.

It is particularly interesting to see how “meta” has became relevant in other categories than modeling too. See the complete SD Times TOP 100 list.

DSM

DSL design contest: a case of medical device operations

June 02, 2008 13:33:23 +0300 (EEST)

ICTNoviQ organizes a workshop on creating DSLs, 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 contest assignment 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.

My schedule does not permit participation, but I implemented the language anyway - there is a promise that the designers of the “best” DSL will be rewarded ;-) Although I doubt that remote participation in competition is possible I sent my DSL, implemented with MetaEdit+, 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’ll post my version of the language after the workshop (held 18th June).