Domain-Specific Modeling: Enabling Full Code Generation

Steven Kelly, Juha-Pekka Tolvanen

Publisher Wiley-IEEE Computer Society Press
ISBN 978-0-470-03666-2
RRP £53.50
Reviewed by Ahmad Subahi
Score 9 out of 10

Domain Specific Modelling Steven Kelly and Juha-Pekka Tolvanen have been working in the area of domain-specific modeling (DSM) for more than 10 years. Based on their vast experience in this area, they have written this practical book reflecting their valuable knowledge.

In 427 pages, the book covers a variety of topics in DSM. It is divided into four main sections: Background and Motivation, Fundamentals, DSM Examples, and Creating DSM Solutions.

Each section consists of numerous chapters. In the early chapters, the book covers simple topics and examples explaining DSM to beginners. It moves on to gradually provide more technical and complex DSM concepts and real life cases for advanced developers with a practical discussion in the last section.

The book starts with a comprehensive overview of the key idea of DSM 'raising the level of abstraction' and an outline of the business values of using DSM in organisations. The authors use gradual comparisons - supported by examples - between various software development methods and DSM to show their limitations compared to a DSM approach.

The benefits of applying DSM in organisations are considered in more detail in the second chapter, supported by statistical details from companies such as Nokia.

Several cases from different domains using different platforms are presented to the reader. Authors describe each case separately and show its language definitions and designs with the DSL, generators mechanism, and how the services of the essential platform and domain framework are used. They cover several ‘problem domains and generation targets’.

As a core section of the book, at the beginning of the third section the process of creating the most appropriate modeling languages and rules for a particular domain problem are discussed with some examples.

Developers and the challenges of creating a fundamental part of DSM solution called 'generators' are briefly presented, including generator features, types, and services. It also covers code checking and documentation to help readers obtain high quality generated code.

Chapter 14 looks at different approaches classified into multiple levels to build a tool support for DSM solutions, and provides historical information about tools for experienced programmers from the 70s, the 90s - such as CASE tools and MetaEdit - and the most current such as DSL Tool released by Microsoft in 2006. For each tool, the authors tend to coherently describe its origin, functionalities, and limitations.

In balance, this practical book is quite useful for the target audience. It is a complete, well-written reference and can be used as a guide book for creating and implementing DSM solutions in real world problem domains.

Its gradual and organised structure makes the book appropriate to several kinds of readers, such as advanced software developers and architects, academic research students, and more. Therefore, I believe that the book has achieved its goal to cover DSM comprehensively.

Further information: Wiley

February 2009