What is a Domain Specific Language?
At JAOO I had a number of interesting discussion with various folks involved in DSLs (Simonyi, Fowler, Czarnecki) and as consequence I refined my definition of what a DSL is. I remove the terms "abstract" and "business". Here's my new try:A DSL is a concise, precise and processable description of a viewpoint, concern or aspect of a system, given in a notation that suits the people who specify that particular viewpoint, concern or aspect.
Of course there are still the usual points you can make about a DSL: textual vs. graphical vs. whatever, DSL vs. readable API, internal vs. external and interpretation vs. generation.
I think, however, that the definition above captures the essence.
SAFARI joins Eclipse
Some of you might have heard about the SAFARI project of IBM research. It is basically a framework for building support for arbitrary languages into Eclipse - a kind of meta tooling for Eclipse editors. Well, it is now in Eclipse proposal
stage. Very, very nice!
Bubbles don't crash! Or could they?
At this year's JAOO
conference (which is by the way really really good, once again!), the closing panel on the Architecture Quality
track was on the question whether we actually need architecture quality (and, I guess, what it means, and how to achieve it).
Of course, as usual, the panelists quoted the well-known statement that "bubbles don't crash", meaning that it is not useful to draw pretty diagrams it you want to get to a useful architecture.
Now, I really think that the state of the practice has moved on. Of course, bubbles don't crash. But (in my humble opinion) you can make bubbles crash by transforming them into executable code - my ususal architecture-centric model-driven development thing. Of course this is not the silver bullet that solves all problems, but it is a useful incremental step. It is interesting to see that sceptics always basically refuse to use something unless it is perfect - instead of embracing the incremental advantages.
Based on my experience, it is indeed very useful to see a system's architecture in a more explicit, more abstract fashion, hiding some of the details of the implementation code. You keep it current with the implememtation by forward generating implementation skeletons and filling in business logic. You can also run all kinds of validations on model level, etc.... Well, anyway, read this paper
And make sure you go to JAOO next year!
openArchitectureWare 4.2 released
team is proud to present the long awaited 4.2 release of the well-known MDSD toolkit. The new version comes with several major improvements (see below) and is now also fully compatible with the Eclipse 3.3 Europa
release and the corresponding EMF 2.3, UML 2.1 and GMF 2.0!
Major new features include a Debugger for Xpand and Xtend fully integrated Eclipse's debugging facility. You will love this when writing complex templates or transformations. In addition, openArchitectureWare 4.2 support Product Line Engineering (PLE) on generator level by integrating with popular variant management tools and the new components XWeave and XVar. The 4.2 release features a revamped Xtext with many more options for customizing the generated textual editors. The team has also worked hard on fixing many annoying quirks, bugs and performance issues.
See the New And Noteworthy
The documentation has been improved significantly. There are about 3hrs of videos
available demonstrating the use of simple to complex features of the openArchitectureWare platform. The documentation source was changed so we can now provide it in several forms: Eclipse's online help, PDF
or plain HTML
openArchitectureWare 4.2 now and enjoy it. There is no better way to do professional model-driven software development.
Model-Driven Product Line Engineering - Online Resources
Over the last couple of months, I have been contributing to the AMPLE
project. AMPLE stands for Aspect Oriented, Model-Driven Product Line Engineering
. We have produced a couple of interesting results as part of the case study team at SIEMENS. Here are some pointers to it:
Together with Iris Groher, I wrote a couple of papers. Luckily, all of them have been accepted to the venues we submitted them to. A full paper titled Product Line Implementation using Aspect-Oriented and Model-Driven Software Development
was accepted at the SPLC 2007
conference (Iris is actually currently there to present the paper - thanks :-)). It covers the overall approach we implemented in the case study at SIEMENS. We also submitted a paper to the MVSPL workshop
at the same conference. It is called Expressing Feature-Based Variability in Structural Models
and covers the construction of variants of models using aspect weaving on model level as well as other techniques. We also present a paper on Handling Variability in Model Transformations and Generators
at this years Domain Specific Modeling
workshop at OOPSLA
. In this paper we discuss in more detail how to build variants of generators.
All the stuff described in the papers has tools support. It has been implemented as part of the upcoming openArchitectureWare
4.2 release (yes, it'll be released real soon now!).
Finally, I am also going to give a couple of talks and tutorials on this subject at JAOO
. If you're interested in the general message of those talks (each of them targets different subsets), you can look at these videos
. The oAW 4.2 release will also feature a number of videos that explain how to use the new PLE-related features.
So much for the update - please let me know what you think!
Something completely different: Flugservolator
Yesterday evening I was briefly at the Oldtimer Fliegertreffen
at Hahnweide. In addition to all kinds of old airplanes, they also had the Flugservolator
This is basically a Silent Wings
soaring simulator together with a bunch of mechanics to add movements and g forces to the flight experience.
Of course, since it only does two axes and hence is limited in the amount of g's it can produce, it really makes the simulator experience quite a bit better. It is a lot of fun to fly an aileron roll
and actually be turned on your head in the simulator :-)
has been built by a number of students as part of their Technikerarbeit, supported by a number of companies.
If you want to use it for your event, you can contact them and rent the thing for a day. They also said that they'd built additional ones, if needed :-)
For the last 2.5 weeks I had been in Norway on holidays. I did not take my notebook, so I had to take a couple of books so I wouldn't disconnect from the software world :-) Here's what I read:
I started with Programming Erlang
. I was curious to understand the buzz around this language in the context of concurrent systems. And I must say it looks like a very interesting language indeed. I am not sure I would agree with Ralph Johnson who says that Erlang could be the next Java
, but it sure is an interesting approach to concurrency. Erlang is also interesting from a functional-language point of view.
Then I read Dierk König's Groovy in Action
book. Now, this is a must-read for everybody: great topic (Groovy is really cool!), superbly written, many insights into programming language design in general. And wrt to Groovy: It really feels like this is the future of Java! Why would anybody want to use Java now that Groovy's around?
I then concluded with Beautiful Code
, which, since it is an edited book, can't be judged as a whole. There are good, better and not-so-good chapters in it. I am still reading it now, and I am not sure I would recommend it wholeheartedly.
Anyway: I had something to do during the (few) rainy days in Norway, and I learned something along the way.