Stefan Sobernig, "Variable Domain-specific Software Languages with DjDSL: Design and Implementation"
English | ISBN: 3030421511 | 2020 | 319 pages | PDF | 10 MB
English | ISBN: 3030421511 | 2020 | 319 pages | PDF | 10 MB
This book details the conceptual foundations, design and implementation of the domain-specific language (DSL) development system DjDSL. DjDSL facilitates design-decision-making on and implementation of reusable DSL and DSL-product lines, and represents the state-of-the-art in language-based and composition-based DSL development. As such, it unites elements at the crossroads between software-language engineering, model-driven software engineering, and feature-oriented software engineering.
The book is divided into six chapters. Chapter 1 (“DSL as Variable Software”) explains the notion of DSL as variable software in greater detail and introduces readers to the idea of software-product line engineering for DSL-based software systems. Chapter 2 (“Variability Support in DSL Development”) sheds light on a number of interrelated dimensions of DSL variability: variable development processes, variable design-decisions, and variability-implementation techniques for DSL. The three subsequent chapters are devoted to the key conceptual and technical contributions of DjDSL: Chapter 3 (“Variable Language Models”) explains how to design and implement the abstract syntax of a DSL in a variable manner. Chapter 4 (“Variable Context Conditions”) then provides the means to refine an abstract syntax (language model) by using composable context conditions (invariants). Next, Chapter 5 (“Variable Textual Syntaxes”) details solutions to implementing variable textual syntaxes for different types of DSL. In closing, Chapter 6 (“A Story of a DSL Family”) shows how to develop a mixed DSL in a step-by-step manner, demonstrating how the previously introduced techniques can be employed in an advanced example of developing a DSL family.
The book is intended for readers interested in language-oriented as well as model-driven software development, including software-engineering researchers and advanced software developers alike. An understanding of software-engineering basics (architecture, design, implementation, testing) and software patterns is essential. Readers should especially be familiar with the basics of object-oriented modelling (UML, MOF, Ecore) and programming (e.g., Java).