March 23 – 28 , 2003, Dagstuhl Seminar 03131
Domain-Specific Program Generation
For support, please contact
1. Public Statement
Generative approaches have the potential to revolutionise software development as automation and components revolutionised manufacturing. This technology is particularly effective when applied with domain-specific techniques, since compact, domain-specific notations make programs easier to write and maintain and domain-specific knowledge allows for a more efficient implementation. The purpose of the seminar was to promote scientific cooperation on the topic of domain specific program generation. This topic has been pursued so far in a number of research communities which had insufficient contact with each other:
- Domain-specific languages:
- Language developers in a specific application domain have often been unaware of the domain-independent aspects of their domain-specific work. Vice versa, researchers that do not work in a specific domain are often unaware of the experiences made in application work.
- High-performance parallelism:
- This is one application domain, which has led to the development of a particular form of domain-specific language (so-called skeletons). Researchers in this community has been quite unaware of the wider aspects of domain-specific program generation.
- Program generators:
- This domain is concerned with the fast and reliable generation of members of a program family (so-called "product lines"). Researchers in this community are often in industry.
- Rersearchers in this community develop a technology that can be used for customizing compilation and translation systems for domain-specific purposes. As a main result of the seminar, initial steps were taken to form a working group. Also cooperation on an individual basis was fostered. A compendium of papers presented at the seminar is in preparation for the Lecture Notes in Computer Science series of Springer-Verlag.
2. Scientific Highlights and Perspectives
The seminar contributed significantly to the formation of a new community around the seminar topic:
- People from different language backgrounds - notably imperative languages (main representative: C++) and declarative languages (main representative: Haskell) - got to know each others' work. People were very receptive of each other: everybody went away with a wider horizon; new cooperations were formed at several levels; some led to newly formed joint authorships for the compendium.
- Talks on applications made a special impact. In particular, the community on high performance parallelism (the "skeletons" community) was recognized as a domain with a 1.special need for optimization. The integration of this domian in the wider context of the research community is a major result of the seminar.
- An outcome of this seminar was the foundation of a new IFIP WG 2.11 "Program Generation" ,
3. Presentation and Publication
Talks altogether: 35; Keynotes: 3; Talks of young researchers: 4.
23 submissions have been announced by participants for a planned compendium on the seminar topic. The submissions are based on talks given or discussions conducted at the seminar. Springer-Verlag has been approached for publication. The book will appear in May 2004:
Domain-Specific Program Generation; Christian Lengauer, Don Batory, Charles Consel, Martin Odersky, eds.;
Lecture Notes in Computer Science 3016, Springer-Verlag, 2004.
Preface - Table of Contents
4. Working Group on Domain-Specific Program Generation: Mission Statement
Generative approaches have the potential to revolutionize software development as automation and components revolutionized manufacturing. Such approaches are particularly effective when combined with domain-specific techniques, since compact, domain-specific notations make programs easier to write and maintain, and domain-specific knowledge allows for a more efficient implementation.
The aim of this Working Group of researchers and practitioners is to promote innovation in
for domain-specific program generation.
The scope of this Working Group covers all aspects of design, analysis, generation, and quality control of generative programs and the programs that they generate, with emphasis on the use of domain specific knowledge. Specific research themes include (but are not limited to the following areas):
- Foundations: language design, semantics, type systems, formal methods, multi-stage and multi-level languages, validation and verification.
- Design: models of generative programming, domain engineering, domain analysis and design, system family and product line engineering, model-driven development, separation of concerns, aspect-oriented modellig, feature-oriented modellig.
- Engineering: practices in the context of program generation, such as requirements elicitation and management, software process engineering and management, software maintenance, software estimation and measurement
- Techniques: meta-programming, staging, templates, in-lining, macro expansion, reflection, partial evaluation, intentional programming, staged configuration, stepwise refinement, software reuse, adaptive compilation, runtime code generation, compilation, integration of domain specific languages, testing.
- Tools: open compilers, extensible programming environments, active libraries, frame processors, program transformation systems, program specializers, aspect weavers, and tools for domain modellig.
- Application: IT infrastructure, finance, telecom, automotive, aerospace, space applications, scientific computing, health, life sciences, manufacturing, government, systems software and middle-ware, embedded and real-time systems, generation of non-code artefacts.
The objectives of the Working Group are:
- Foster collaboration and interaction between researchers from domain engineering, and on language design, meta-programming techniques, and generative methodologies.
- Demonstrate concrete benefits in specific application areas.
- Develop techniques to assess productivity, reliability, and usability.