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.
Opinions?
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!
Labels: eclipse
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 for details.
And make sure you go to JAOO next year!
openArchitectureWare 4.2 released
The
openArchitectureWare 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 for details.
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.
Download openArchitectureWare 4.2 now and enjoy it. There is no better way to do professional model-driven software development.
Labels: eclipse
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,
OOPSLA,
GPCE and
OOP. 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!
Labels: eclipse
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 :-)
The
Flugservolator 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 :-)
Holiday Reading
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.