The goal of domain-specific languages (DSLs) is to increase the productivity of software engineers by abstracting from low-level boilerplate code. Introduction of DSLs in the software development process requires a smooth workflow for the production of DSLs themselves. This tutorial gives an overview of all aspects of DSL engineering: domain analysis, language design, syntax definition, code generation, deployment, and evolution, discussing research challenges on the way. The concepts are illustrated with DSLs for web applications built using several DSLs for DSL engineering: SDF for syntax definition, Stratego/XT for code generation, and Nix for software deployment.
This is the text of the abstract that I just sent to the organizers of the Summer School on Generative and Transformational Techniques in Software Engineering (GTTSE’07). Joost Visser and Ralf Laemmel invited me to give a tutorial at GTTSE last August in Seattle where we were attending FLOC 2006. (On the photo during the RULE/WRS lunch, which was really the day before they asked me, but hey there are no pictures from that event.) I was, and still am, very happy with the invitation (see photo of me being happy; it looks silly, but that’s the price you have to pay;-) Here’s what I wrote when accepting the invitation:
Hmm, I’ve been mulling for a good title, but haven’t found one yet. I’ll try to give you an impression of what I have in mind. Some titles that are related to what I want to do (but that I’m not completely happy with yet) are:
What I want to talk about is the development of DSLs as a common abstraction activity in the software engineering process. Just like a set of classes is developed to implement an API that provides functionality in a certain domain, one can develop a DSL to provide a compact and appropriate notation for the domain. The challenge is to make the development of DSLs so cheap that it becomes attractive to actually start using it in software development on a regular basis. This is not an original idea of course. For instance, the DSL Tools of Microsoft also aim to achieve this using visual languages. [For good measure it should be noted that Microsoft did not invent the term DSLs. While you, my dear reader, are aware of this, I recently ran into people who asked me whether I was using the term DSL to humour them (they are working with MS DSLs). The fact that the term DSLs stems from the previous century was news to them.]
This topic is at the basis of the MoDSE project that we’re starting in Delft, which is about ‘Model-Based Software Evolution’. That is, we’re going to study the impact of evolution on a software development process based on DSLs/models. (Upgrading DSL programs when language changes, adapting to changes in the target platform, integrating with legacy code, etc.). However, I would like to restrict the tutorial to the DSL Engineering part of the story; that is, designing and implementing DSLs.
Of course, the approach would be based on SDF, Stratego/XT, and elements of MetaBorg. But I want to go beyond the mere technical issues of SDF and Stratego, and discuss the design and implementation of a collection of interacting DSLs. This is the topic that I’m going to work on in the next year and that I’ll be motivated to talk about next Summer and write about.’’
The year is going by rapidly, but I have indeed started to work on this project, albeit slower than I had wanted. Together with a bunch of master’s students I’m exploring model-driven engineering and domain-specific languages for the domain of web applications. Personally, I’m in the process of getting up-to-date with the latest Java technology for web application development.
I am planning to report about my journey through webland and towards the GTTSE tutorial on this blog, but if you want to hear the end result you should consider registering for the summerschool. I understand registration opens March 1.
Lingering a bit in Seattle in August 2006, is a good occasion to show off this photo (in fact a composition of a dozen individual shots) of the swimming pool in the Sheraton hotel were the FLOC conference was held. While a swimming pool is not so exceptional in a hotel, it had been some thirty years since I swam at such a high altitude (above street level that is); this one was at the 35th floor. (The previous occasion was in a hotel in Sao Paulo, Brazil in 1976; that one was actually on top of the building, that is, without a roof.) This one should be really viewed large. See more photos of the Seattle trip, including one of Bill Gates’ office, in the photoset on flickr or on this site.