Earlier this week I was visiting the Programming Tools Group of Oege de Moor in Oxford. The visit was associated with the refactoring project in which I am an official collaborator. The project aims at studying the high-level description of refactorings. The starting point is to combine the strengths of program analysis with attribute grammars and program transformation with (strategic) rewriting based approaches. They are experimenting with the JastAdd-based Java compiler. For me the project is interesting as we are considering to integrate attribute grammars in Stratego. To start exploring this topic I've started writing an implementation of WebDSL in JastAdd together with Torbjörn Ekman, the main developer op JastAdd, who is a postdoc in Oxford. We got to implement a basic version of the data model sub-language complete with modules and code generation (using the StringTemplate library of Terence Parr). I'm planning to finish the implementation of the data model and use that as the basis for my lecture on JastAdd in the program transformation course. (And then hand the implementation to the students who can then add the implementation of (a subset of) the UI language.) We had further discussions about the relation of between JastAdd and Stratego; although quite different at first sight, there are interesting similarities (that I hadn't realised before). More to follow about that in the future.
My proposal for a tutorial on 'WebDSL: A Case Study in Domain-Specific Language Engineering' has been accepted by the organizers of Code Generation 2008. This conference emerged from the codegeneration.net site, which collects information about code generation techniques and tools. As opposed to the conferences I usually visit, this one attracts quite a crowd from industry, I understand. Last year's event was quite a success, according to attendees I talked to, so I'm looking forward to event in general, and the opportunity to present Stratego/XT, SDF, and WebDSL to industry, in particular. Now think how to squeeze that into 75 min;)
The NWO/EZ Jacquard Software Engineering Program has granted the project Pull Deployment of Services for an amount of 368K Euro which should pay for a PhD student (4 years) and a postdoc (3 years). In the project for which I am principal investigator, we collaborate with Merijn de Jonge from Philips Research and the buildfarm project at TU Delft in which software deployment expert Eelco Dolstra is postdoc. Here's the text from the proposal summary:
Hospitals are complex organizations, requiring the coordination of specialists and support staff operating complex medical equipment, involving large data sets, to take care of the health of large numbers of patients. The information technology infrastructure of hospitals is heterogeneous and may consist of thousands of electronic devices, ranging from workstations to medical equipment such as MRI scanners. These devices are connected by wired and wireless networks with complex topologies with different security and privacy policies applicable to different nodes. Software deployment in such a heterogeneous environment is inherently difficult. In order to make health-care professionals more effective and deployment and maintenance more tractable, the hospital information technology infrastructure is changing from a device-oriented to a service-oriented environment, in which the access to services is decoupled from the physical access to particular devices.
In this project, we propose a pull model for service deployment in which the components comprising a service are distributed over nodes in the network, depending on the network topology, properties of the application, and quality of service requirements. The goal of this project is to expand the state-of-the-art in software deployment to support pull deployment of services. In order to realize this goal we will conduct research in (1) modeling of services and network architectures, (2) technology for distributed deployment, and (3) tools for testing implementations of distributed services. We will build on our previous research in software deployment (Nix) and model-based software development (Stratego/XT). The project will be conducted in close collaboration with Philips as industrial partner and will consist of a series of experiments building prototype systems which implement service distribution scenarios of increasing complexity.
Today I started teaching a new master's course on Program Transformation & Generation at Delft University. The course studies techniques principles, techniques, applications of program transformation and generation. Using WebDSL as case study, several paradigms for implementing domain-specific languages will be studied, including term rewriting (Stratego), attribute grammars (Eli, JastAdd), and graph transformation. This is a departure from earlier courses I taught at Utrecht University about same subject. There I would spend a full quarter teaching on just Stratego/XT, which I felt was necessary to prepare master's students for a master project in this area. With the current state of documentation of Stratego/XT, it appears that such a in depth course is no longer necessary. At least, that is the experience with several (PhD) students who recently started developing Stratego applications succesfully without any prior training.