Written by foremost experts in the field, Engineering Modeling Languages provides end-to-end coverage of the engineering of modeling languages to turn domain knowledge into tools.
The book provides a definition of different kinds of modeling languages, their instrumentation with tools such as editors, interpreters and generators, the integration of multiple modeling languages to achieve a system view, and the validation of both models and tools. Industrial case studies, across a range of application domains, are included to attest to the benefits offered by the different techniques. The book also includes a variety of simple worked examples that introduce the techniques to the novice user.
The book is structured in two main parts. The first part is organized around a flow that introduces readers to Model Driven Engineering (MDE) concepts and technologies in a pragmatic manner. It starts with definitions of modeling and MDE, and then moves into a deeper discussion of how to express the knowledge of particular domains using modeling languages to ease the development of systems in the domains.
The second part of the book presents examples of applications of the model-driven approach to different types of software systems. In addition to illustrating the unification power of models in different software domains, this part demonstrates applicability from different starting points (language, business knowledge, standard, etc.) and focuses on different software engineering activities such as Requirement Engineering, Analysis, Design, Implementation, and V&V.
Each chapter concludes with a small set of exercises to help the reader reflect on what was learned or to dig further into the examples. Many examples of models and code snippets are presented throughout the book, and a supplemental website features all of the models and programs (and their associated tooling) discussed in the book.
Table of Contents
What’s a Model? Introduction. Modeling in Science. Modeling in Engineering. Illustrative Example: Cellula. Automata. Semantic Foundations of MDE: the Meaning of Models. Exercises. What’s a Modeling Language. Why we need Modeling Languages. Concrete Syntax. Abstract Syntax. Semantics of a Modeling Languag. Exercise. Metamodeling With MOF and ECORE. Metamodel, Meta-language, Language Workbench and Meta-metamodel. Meta-Object Facility (MOF). Ecore and EMF. Representations for Machine Consumption. Illustrative Example: Metamodels for Cellular Automato. Exercises. Metamodeling With OCL. The Object Constraint Language - OCL. Advanced features of OCL. Usage of OCL for MOF. Exercises. Building Editors and Viewers. Introduction. Generic versus Specific Concrete Syntax. Visual Representations for Human Reading
Tree Editors. Diagram View (Box and Line). Textual View. Tabular View. Other Views. Model Transformation: from Contemplative. Models to Productive Models Motivations. Overview of Model Transformations. The Executable Meta-Modeling Approach. Exercises. Interpreter. Ingredients. Design pattern Interpreter
Combining the design patterns Interpreter and Visitor Aspect Weaving with Static Introduction. Exercises. Refactoring and Refinement. Foundations. Applying Model Refactoring. Illustrative Example: CAIR-Lite. Refactoring. Illustrative Example: CAER Refactoring. Applying Model Refinement. Exercises
Generators. Usefulness of text and code generation. Model-to-text transformations. Code Generation. Documentation Generation. Model Generation. Test Generation: Model-Based Validation And Verification. Exercises. Variability Management. Context of Software Product-Lines. Modeling Variability with Feature Diagrams. Advanced Variability Modeling Methods. Amalgamated Approach. Separating the Assets and the Variability Concern. Exploitation of Variability Models. MDE for SPL: Wrap up. Scaling up Modeling. Heterogeneous Modeling. Model Merging and Weaving. Language Reuse with Model Typing. Model Slicing. Software Language Engineering. Exercises. Wrap-up: Metamodeling Process. Actors. Tools to build. Metamodeling process. Metamodeling process variants Metamodeling Guidelines. Illustrative Example: Process followed to build Cellular Automaton tooling. Language Engineering: The Logo Example. Introduction. Meta-Modeling Logo. Weaving static semantics. Weaving dynamic semantics to get an interpreter. Compilation as a kind of Model Transformation. Model to Model. Transformation. Concrete Syntax. Exercices. Model Driven Engineering of a Role Playing Game. Introduction. Meta-Modeling the SRD 3.5. Weaving dynamic semantics to get an interpreter. Compilation to get a Web based editor. Testing a Rule Set. Exercices. Civil/Construction Engineering: The BIM Example. Introduction. Abstract Syntax of Buildings. Model Storage: Large Models. Concrete Syntax. Case Study: Clash Detection. Case Study: Quantity Takeoff. Application examples. Legal Information on the SRD
Benoit Combemale, Robert France, Jean-Marc Jézéquel, Bernhard Rumpe, James Steel, Didier Vojtisek