Last week I accepted a position as associate professor at the Software Engineering Group of Delft University of Technology. I will join forces there with Arie van Deursen who recently started at TUD as a full professor.

The ambition is to build a strong research group in the area of software engineering, based on our work in software evolution (Arie) and program transformation.

With NWO funding for a project on extensibility of transformation systems and one on model-driven software evolution my tenure at TUD can start full force. Of course, I will continue work on Stratego/XT and applications together with Martin Bravenboer, who will join me at TUD. I also hope to convince Eelco Dolstra to make the move to Delft. We are aiming at setting up a new buildfarm for supporting our own, but hopefully also other research projects.

CGN => mekelweg 4

We just got word from NWO, the dutch national research funding organization, that our project proposal on Model-Driven Software Evolution has been granted. This means that we will have funding to hire two PhD students, a postdoc, and an assistant professor.

The project is a collaboration between Arie van Deursen (principal investigator) and myself and is going to take place at Delft University of Technology, (where I’ll be moving; see next blog).

If you have an interest in program transformation and domain-specific languages, and the ambition to contribute to the state-of-the-art in these areas, then you might consider applying for one of these jobs. Official job adverts will be available later (we really just learned about acceptance), but in the mean time you can contact me if you have questions.

Here is the summary of the research proposal:

The promise of model-driven engineering (MDE) is that the development and maintenance effort can be reduced by working at the model instead of the code level. Models define what is variable in a system, and code generators produce the functionality that is common in the application domain.

The problem with model-driven engineering is that it can lead to a lock-in in the abstractions and generator technology adopted at project initiation. Software systems need to evolve, and systems built using model-driven approaches are no exception. What complicates model-driven engineering is that it requires multiple dimensions of evolution. In regular evolution, the modeling language is used to make the changes. In meta-model evolution, changes are required to the modeling notation. In platform evolution, the code generators and application framework change to reflect new requirements on the target platform. Finally, in abstraction evolution, new modeling languages are added to the set of (modeling) languages to reflect increased understanding of a technical or business domain. While MDE has been optimized for regular evolution, presently little or no support exists for metamodel, platform and abstraction evolution. It is this gap that this project proposes to address.

The first fundamental premise of this proposal is that evolution should be a continuous process. Software development is a continuous search for recurring patterns, which can be captured using domain-specific modeling languages. After developing a number of systems using a particular meta-model, new patterns may be recognized that can be captured in a higher-level or richter meta-model. The second premise is that reengineering of legacy systems to the model-driven paradigm should be a special case of this continuous evolution, and should be performed incrementally.

The goal of this project is to develop a systematic approach to model-driven software evolution. This approach includes methods, techniques, and underlying tool support. We will develop a prototype programming environment that assists software engineers with the introduction, development, and maintenance of models and domain-specific languages.

Together with Magne Haveraaen, Jim Cordy, and Jan Heering, I am organizing the next Workshop on Software Transformation Systems (STS’06), which will be co-located with GPCE and OOPSLA in Portland, Oregon in October. If you are interested in the design, implementation, and use of transformation systems you should consider submitting an abstract. (Note that the webpage is being updated, so check back on details of submissions.) If it will be like last time, it promisses to be a lively day full of interesting discussions.

Recently I got notice from NWO, the dutch research funding organization, that the project proposal `Transformations for Abstractions (TFA)’ that I submitted last September was accepted. (In a very competitive round; only 15% of proposals was accepted this year.) As a consequence, I have funding for a three year postdoc or a four year PhD student position. The topic of the project is language extensions (abstractions), in general, and extension of transformations on/for language extensions, in particular. Here is the summary of the proposal:

This proposal is about techniques at the intersection of two areas of software engineering. (1) In order to automate software engineering we would like to automate the process of producing programs by means of automatic transformations, thereby computing with programs as we do with other data. (2) In order to improve the expressivity of programming languages to the concepts and notations of specific application domains, we would would like to extend general-purpose languages with domain-specific abstractions. Combining these desiderata leads to the need to extend transformations for new domain-specific abstractions.

The goal of this project is to develop a systematic approach to the extension of general purpose languages with domain-specific abstractions, integrating those abstractions in the syntax and transformations of the programming environment. This requires research into the following issues:

  • strategies for the definition of domain abstractions
  • mechanisms for open extensibility of transformations
  • methods and patterns for design of open transformations
  • constraints for independent extensibility of transformations
  • derivation of transformation extensions from definitions of abstractions

We approach this goal by analyzing a variety of existing domain-specific languages and transformations, developing generic extensibility mechanisms, and validating these first in an `in vitro’ setting and then in a programming environment for the Java language. The project builds on a solid body of work from the Stratego/XT project that will allow us to concentrate on the core of the problem, rather than being distracted by infrastructural issues.

If you are interested in the project, either as a candidate for the position or as a collaborator, I would like to hear from you. Further information (such as the full project proposal) is available on request.

After many years, I finally have a new picture for my home page. Here is the transformation from December 1998 to May 2006:

self => self => self

Clearly the main reason for a new picture was the quality of the old one; I don’t look a day older, do I;-)

My renewed interest in photography was sparked by the discovery of autostitch, a tool that stitches together pictures from different parts of the same scene. It allows easy composition of panoramas such as the following picture of a canal in Amersfoort:

canal / bridge
It is composed from a bunch (10?) pictures taken by hand (no tripod) with my not so fantastic Samsung digital camera. Autostitch discovers how to put the pieces together.

It does not only work for landscape panoramas, as illustrated by the following 180 degrees interior shot:


It can also be used for funny things such as the following composition of three pictures I took back in 2004 at OOPSLA/GPCE in Vancouver of Martin Bravenboer and Jurgen Vinju:

Bravenboer & Vinju

Or even more surrealistic compositions with multiple occurrences of the same people:


See my autostitch experiments for more examples.

That was a fun diversion in the past week. I’ve neglected this blog for a while. Much has happened in the meantime, and there are many plans for new (program) transformation work. Now that I’ve found time for messing around with picture transformation, I expect I’ll find time for new blogs as well in the near future. Stay tuned. (I will mainly publish new photos at my flickr account.)