Software Factory: Meta-Model - The "Eats, Shoots & Leaves" of DSM
Life is all about using the right punctuations in your language. Between "Spare him, not kill him" and "Spare him not, kill him" there's as much difference as between life and death, albeit the same bunch of words.
It's the grammar which matters in your language. Adopt the right rules of grammar to convey the right message, or you’ll end up trying to teach stone-age men to read Shakespeare.
In its simplest form, a Meta-Model is the grammar that defines your business. Like any kid who can speak perfect English, a Meta-Model can be defined by anyone who knows the grammar of their business – typically any business user. A Meta-Model is a model to define the model. A Meta-Model definition tool (like the one provided by Microsoft DSL Tool kit) lets you define the rules of the business.
Consider the business of a restaurant with concepts such as – Menu, Recipe, Caterer, Buffet and Happy Hours. The Factory architect works with the business domain expert to define the Meta-Model.
The ideal Meta-Model consists of Shapes that represent each of the domain concepts, Connectors that define all possible relationships between those concepts ("a specific Menu always relates to Happy-Hours"), Business Rules to be enforced over these concepts ("Happy-Hours is always between 12 noon and 5 PM"), specific Attributes of each of the concepts ("the Buffet has a pre-defined choice of soups"), Actions to be taken during or after the creation of an instance of a model (events, generation of artifacts).
So it’s like everything your mother tongue is composed of. Except that it speaks the language of business. The Factory architect defines all these elements comprising the language of his business and deploys them, so that the business user can use them to draw models representing business processes and other domain specific activities.
Creating an appropriate Meta-Model is the fundamental of effective Domain-Specific Modeling strategy. Like a good compiler optimizes your source code in the best possible way, a good Meta-Model mixes the scope and scale of business in the right proportion to let the business create highly Self-Explanatory models.
A Self-Explanatory model is one which is readily understandable by a human reader, and is also easy enough for the code (or artifact) generation tools to parse and generate usable and extendable artifacts from the model.
In the next post, I'll discuss the different types of Meta-Models.


