A Model-Based Approach to Families of Embedded Domain-Specific Languages

With the emergence of model-driven engineering (MDE), the creation of domain-specific languages (DSLs) is becoming a fundamental part of language engineering. The development cost of a DSL should be modest compared to the cost of developing a general-purpose programming language. Reducing the implementation effort and providing reuse techniques are key aspects for DSL approaches to be really effective. In this paper, we present an approach to build embedded domain-specific languages applying the principles of model-driven engineering. On the basis of this approach, we will tackle reuse of DSLs by defining families of DSLs, addressing reuse both from the DSL developer and user point of views. A family of DSLs will be built up by composing several DSLs, so we will propose composition mechanisms for the abstract syntax, concrete syntax, and model transformation levels of a DSL's definition. Finally, we contribute a software framework to support our approach, and we illustrate the paper with a case study to demonstrate its practical applicability.

[1]  Jesús Sánchez Cuadrado,et al.  A plugin-based language to experiment with model transformation , 2006, MoDELS'06.

[2]  Jack Greenfield,et al.  Software factories: assembling applications with patterns, models, frameworks and tools , 2004, OOPSLA '03.

[3]  Juha-Pekka Tolvanen,et al.  Domain-Specific Modeling: Enabling Full Code Generation , 2008 .

[4]  David Thomas,et al.  Programming Ruby: the pragmatic programmer's guide , 2000 .

[5]  Jean Bézivin,et al.  Model-based DSL frameworks , 2006, OOPSLA '06.

[6]  Daan Leijen,et al.  Domain specific embedded compilers , 1999, DSL '99.

[7]  Frédéric Jouault,et al.  Rule-based modularization in model transformation languages illustrated with ATL , 2007, Sci. Comput. Program..

[8]  Jesús Sánchez Cuadrado,et al.  Building Domain-Specific Languages for Model-Driven Development , 2007, IEEE Software.

[9]  Jürgen Dingel,et al.  Understanding and improving UML package merge , 2008, Software & Systems Modeling.

[10]  Gabor Karsai,et al.  Smart Dust: communicating with a cubic-millimeter computer , 2001 .

[11]  Markus Voelter A Family of Languages for Architecture Description , 2008 .

[12]  Steve Freeman,et al.  Evolving an embedded domain-specific language in Java , 2006, OOPSLA '06.

[13]  Paul Graham On LISP: Advanced Techniques for Common LISP , 1993 .

[14]  Krzysztof Czarnecki,et al.  DSL Implementation in MetaOCaml, Template Haskell, and C++ , 2003, Domain-Specific Program Generation.

[15]  Jesús Sánchez Cuadrado,et al.  Modularization of model transformations through a phasing mechanism , 2009, Software & Systems Modeling.

[16]  Samuel N. Kamin,et al.  A Special-Purpose Language for Picture-Drawing , 1997, DSL.

[17]  Paul Hudak,et al.  Building domain-specific embedded languages , 1996, CSUR.

[18]  Anneke Kleppe,et al.  Towards the Generation of a Text-Based IDE from a Language Metamodel , 2007, ECMDA-FA.

[19]  Stéphane Ducasse,et al.  Seaside: A Flexible Environment for Building Dynamic Web Applications , 2007, IEEE Software.

[20]  Jesús Sánchez Cuadrado,et al.  RubyTL: A Practical, Extensible Transformation Language , 2006, ECMDA-FA.

[21]  Gabor Karsai,et al.  Composing Domain-Specific Design Environments , 2001, Computer.

[22]  Daan Leijen,et al.  Parsec: direct style monadic parser combinators for the real world , 2001 .

[23]  Frank Budinsky,et al.  Eclipse Modeling Framework , 2003 .

[24]  Kent Beck,et al.  Contributing to Eclipse - principles, patterns, and plug-ins , 2003, The Eclipse series.

[25]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[26]  E. Visser,et al.  Program Transformation Mechanics. A Classification of Mechanisms for Program Transformation with a Survey of Existing Transformation Systems , 2003 .

[27]  Sjaak Brinkkemper,et al.  Meta-Modelling Based Assembly Techniques for Situational Method Engineering , 1999, Inf. Syst..

[28]  A. Evans,et al.  Building families of languages for model-driven system development , 2003 .

[29]  Diomidis Spinellis,et al.  Notable design patterns for domain-specific languages , 2001, J. Syst. Softw..

[30]  Paul Hudak,et al.  Modular domain specific languages and tools , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[31]  M Mernik,et al.  When and how to develop domain-specific languages , 2005, CSUR.

[32]  Manuel Wimmer,et al.  Bridging Grammarware and Modelware , 2005, MoDELS Satellite Events.

[33]  G. Nordstrom,et al.  On metamodel composition , 2001, Proceedings of the 2001 IEEE International Conference on Control Applications (CCA'01) (Cat. No.01CH37204).

[34]  Ralf Lämmel Adding Superimposition To a Language Semantics — Extended Abstract — , 2002 .

[35]  David M. Weiss,et al.  Software Product-Line Engineering: A Family-Based Software Development Process , 1999 .