Markus Völter talks about his recent (and highly anticipated ) new book on domain-specific languages. Enter Markus.
Domain-Specific Languages are modeling or programming languages that are tailored to a particular application domain. By incorporating knowledge about that domain, DSLs can lead to more concise and more analyzable programs, improved code quality, tighter stakeholder integration and faster development speed. In contrast to UML and its profiling
mechanism, DSLs provide a much better way of creating a language that is specific to a domain — and the meta model does not have the “accidental” complexity incurred by the UML language.
This book provides a thorough introduction to DSLs, relying on today’s state-of-the-art language workbenches. These are tools to efficiently create, integrate and use DSLs. The book focusses mostly on textual syntax, has lots of examples and is based on years of experience. The book has four parts, each focussing on a different aspect of DSL
Introduction: This part introduces DSLs in general and discusses their advantages and drawbacks. It defines important terms and concepts and introduces the case studies and tools used in most of the remainder of the book.
DSL Design: This part focusses on the design of DSLs – regardless of implementation technologies. It discusses seven design dimensions, explains a number of reusable language paradigms and points out a number of process-related issues.
DSL Implementation: This part provides details about the implementation of DSLs, using lots of examples. It uses three state-of-the-art but quite different language workbenches: JetBrains MPS, Eclipse Xtext and TU Delft’s Spoofax.
DSLs in Software Engineering: This part discusses the use of DSLs for requirements engineering, architecture, implementation and product line engineering, as well as their roles as a developer utility and for implementing business logic
The book is available as a print version (for a very reasonable price) and as a PDF
(as donationware). You can get both versions from dslbook.org