Reusable Architectural Decisions for DSL Design: Foundational Decisions in DSL Projects

Domain-specific languages (DSL) receive a constantly growing attention in the area of software development. However, so far the documentation of reusable architectural knowledge for DSL design is rather limited. In this paper, we systematically explore the DSL design space by combining reusable architectural decision modeling and software patterns. In particular, we have explored three reusable architectural decisions in this design space: the decision for the type of DSL development process, the decision for the concrete syntax style, and the decision for developing an external vs. an embedded DSL. These decisions are foundational for each DSL project. Each of these decisions has a number of (candidate) patterns for DSL design. These (candidate) patterns define alternative solutions in the shared context and problem space of the respective reusable architectural decision.

[1]  Frank Leymann,et al.  Reusable Architectural Decision Models for Enterprise Application Development , 2007, QoSA.

[2]  S. Dmitriev Language Oriented Programming: The Next Programming Paradigm , 2004 .

[3]  Uwe Zdun,et al.  Using Patterns to Capture Architectural Decisions , 2007, IEEE Software.

[4]  Shane Sendall,et al.  Model Transformation: The Heart and Soul of Model-Driven Software Development , 2003, IEEE Softw..

[5]  George Stepanek,et al.  Software Project Secrets: Why Software Projects Fail , 2005 .

[6]  Capers Jones,et al.  Why software fails , 1996 .

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

[8]  Gilles Dubochet On Embedding Domain-specific Languages with User-friendly Syntax , 2006 .

[9]  Jeff Tyree,et al.  Architecture decisions: demystifying architecture , 2005, IEEE Software.

[10]  Frank Leymann,et al.  Combining Pattern Languages and Reusable Architectural Decision Models into a Comprehensive and Comprehensible Design Method , 2008, Seventh Working IEEE/IFIP Conference on Software Architecture (WICSA 2008).

[11]  Tom Mens,et al.  A Taxonomy of Model Transformation , 2006, GRaMoT@GPCE.

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

[13]  Albert S. Dexter,et al.  Surviving IT project cancellations , 2005, CACM.

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

[15]  Ralf Lämmel,et al.  Towards an engineering discipline for GRAMMARWARE Draft as of August 17 , 2003 , 2003 .

[16]  Bran Selic,et al.  The Pragmatics of Model-Driven Development , 2003, IEEE Softw..

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

[18]  Mark Strembeck,et al.  An integrated approach to engineer and enforce context constraints in RBAC environments , 2004, TSEC.

[19]  Mark Strembeck,et al.  An approach for the systematic development of domain‐specific languages , 2009, Softw. Pract. Exp..

[20]  Bonnie A. Nardi,et al.  A Small Matter of Programming: Perspectives on End User Computing , 1993 .

[21]  Jan Bosch,et al.  Software Architecture as a Set of Architectural Design Decisions , 2005, 5th Working IEEE/IFIP Conference on Software Architecture (WICSA'05).

[22]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[23]  Martin P. Ward Language-Oriented Programming , 1994, Softw. Concepts Tools.

[24]  Gerhard Fischer,et al.  Metadesign: Guidelines for Supporting Domain Experts in Software Development , 2009, IEEE Software.

[25]  Mark Strembeck,et al.  Design and implementation of a flexible RBAC-service in an object-oriented scripting language , 2001, CCS '01.

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

[27]  Douglas C. Schmidt,et al.  Patterns, frameworks, and middleware: their synergistic relationships , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[28]  Valdis Berzins,et al.  The Realizable Benefits of a Language Prototyping Language , 1988, IEEE Trans. Software Eng..

[29]  Laurence Tratt,et al.  Domain specific language implementation via compile-time meta-programming , 2008, TOPL.

[30]  Jon Louis Bentley,et al.  Programming pearls: little languages , 1986, CACM.

[31]  Terence Parr The Definitive ANTLR Reference: Building Domain-Specific Languages , 2007 .

[32]  O. Coplien,et al.  Software Patterns , 1996 .

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

[34]  Philippe Kruchten,et al.  Building Up and Reasoning About Architectural Knowledge , 2006, QoSA.

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

[36]  P. J. Landin,et al.  The next 700 programming languages , 1966, CACM.

[37]  Richard N. Taylor,et al.  Software Design and Architecture The once and future focus of software engineering , 2007, Future of Software Engineering (FOSE '07).