In his new book, DSL Engineering – Designing, Implementing and Using Domain Specific Languages, Markus Voelter does a tremendous job of bringing new structure and clarity to the field of Domain Specific Languages (DSLs). The ambition is high with a very thorough examination of the many factors that come into play when considering the use of a DSL – either an already existing one or a DSL that you plan to design and implement. For DSL creators, the book covers the complete process all the way from the design phase for a language to in-depth analysis of features in tool sets used for implementing DSLs and their supporting environments. For DSL users there is useful discussion and advice throughout the book that will help in selecting the right existing DSL and development environment to use it.
With an emphasis on precise and consistent definitions the book lays a solid foundation for continued analysis and discussion around the role, function and applicability of DSL technologies. The terminology forwarded in the book is robust and well researched, providing a much needed shared vocabulary for efficient communication in the field.
The book is an excellent complement to Domain Specific Languages by Martin Fowler with Rebecca Parsons. Whereas Fowler’s book concentrates its focus on the generally well established methods for traditional, textually based DSL development with parsers and compilers, “DSL Engineering” takes a wider perspective and includes a more detailed discussion of modern Language Workbenches such as the Intentional Domain Workbench. The book compares both approaches and provides useful context for when each approach has an advantage.
At Intentional we have had the pleasure of reading and providing feedback to Markus since early drafts. We have also had the privilege of writing a case study showcasing Intentional Software’s unique perspective on DSLs for business users which is included in Chapter 22: DSLs for Business Users. That chapter shows one of our recent projects and walks through how to use the Intentional Domain Workbench to build a Health Workbench for tele-health.