Arie van Deursen, Paul Klint, Joost Visser. Domain-Specific Languages: An Annotated Bibliography. SIGPLAN Notices, 35(6):26-36, 2000. [doi]
Posted by Ricky T. Lindeman on 30/06/2010 15:08, last updated on 30/06/2010 16:29 (Public)
Title: Domain-Specific Languages: An Annotated Bibliography
Authors: Deursen, Arie van and Klint, Paul and Visser, Joost
Deursen et al. mention that the concepts of domain specific languages is old but systematic study of them has started just recently. Therefore they will dis- cuss the following topics: terminology, risks and opportunities, example DSL’s, design methodology and DSL implementation strategies. Their bibliography contains a selection of over 75 key publications in the field of DSL’s, all having an expected major importance in the DSL field for several years despite current ongoing research.
In section 2, “Terminology”, the authors propose the following definition for DSL’s: “A domain-specific language (DSL) is a programming language or executable specification language that offers, through appropriate notations and abstractions, expressive power focused on, and usually restricted to, a particular problem domain.” They mention that the term “problem domain” is vague and do not define this term any further but instead refer to a list of example DSL’s in section 4, Ex- ample DSL’s. The term “problem domain” or the reason of the vagueness could be further explained, by mentioning the problems encountered with finding the correct scope of the problem domain or with extracting the domain knowledge.
In the following section, “Risks and Opportunities”, the benefits and disad- vantages of using a DSL are motivated, however not all reasons are motivated with references. For example, the costs of education for DSL users is considered a disadvantage, however, this is not motivated with a reference to a case-study. The section ends with references to other comparisons of software approaches, a costs and benefits analysis from the software maintenance perspective and a comparison of approaches based on software reuse.
Section 4, “Example DSL’s”, lists the best-known DSL’s such as PIC, LEX, YACC as described by Bentley [1], and others such as SQL, BNF and HTML. The section ends with a grouping of DSL’s for a certain domain in several domain area’s.
In section 5, “DSL Design Methodology”, the DSL development process is discussed. The process is divided in a total of 7 steps, based on Cleaveland [2] and a previous paper of Deursen et al. [3], and is divided in 3 groups: Analysis, Implementation, and Use. The given process is not complete:
In the following section, “DSL Implementation”, steps 5 and 6 of the previ- ous mentioned development process are clarified. Two different implementation approaches are identified:
Embedded languages/domain-specific libraries
Again, Mernik et al. note that language specialization, the opposite of extension, is also a viable option. In this case the base language is restricted to a small subset of features. The section ends with another implementation technique: Use a DSL to define aspects in aspect oriented programming. This technique however easily fits into the language extension category.
The bibliography provides a good overview of the most important information in the DSL field, although it is sometimes incomplete because of the ongoing re- search as mentioned by the authors in the introduction. Furthermore, the paper is largely theoretical, lacking examples, case studies or guides on how to create DSL’s. Still, this bibliography can be used as a comprehensive introduction to DSL’s, especially due to the references annotated with a summary.
[1] Jon Bentley. Programming pearls: little languages. 29:711–721, 1986.
[2] J. Craig Cleaveland. Building application generators. IEEE Softw., 5(4):25– 33, 1988.
[3] Arie van Deursen and Paul Klint. Little languages: little maintenance? Journal of Software Maintenance, 10(2):75–92, 1998.
[4] Marjan Mernik, Jan Heering, and Anthony M. Sloane. When and how to develop domain-specific languages. ACM Comput. Surv., 37(4):316–344, 2005.
[5] Eelco Visser. Webdsl: A case study in domain-specific language engineer- ing. In Ralf Lmmel, Joost Visser, and Joo Saraiva, editors, Generative and Transformational Techniques in Software Engineering II, International Summer School, GTTSE 2007, Braga, Portugal, July 2-7, 2007. Revised Papers, volume 5235 of Lecture Notes in Computer Science, pages 291– 373. Springer, 2007.