I was just privy to a conversation about the value of creating a specific kind of metamodel, and it made me wonder… if I had to explain the concept of a metamodel to someone, how would I do it?
First, let’s start by defining the term “metamodel.” The IEEE Online Software Engineering Vocabulary (SEVOCAB) provides 12 different definitions for the term ‘metamodel’. In my opinion, the definition most applicable to enterprise architecture is this one:
CDIF semantic metamodel. (1) the description of the set of concepts and notations used to define a model (ISO/IEC 15474-1:2002 Information technology — CDIF framework — Part 1: Overview, 4.2) Note: The CDIF semantic metamodel defines an Entity-Relationship-Attribute model that is used to construct and define models used in systems development.
Peel away the jargon, and you get this: a metamodel defines the stuff that you put into your models.
For example, I created this model of a fictitious company, Contoso. They have created some strategies, and the Enterprise Architect has tied those strategies to business initiatives and those business initiatives to the business units that are impacted by those initiatives. (A simple traceability model).
If the diagram above is a model, what is in the metamodel? That’s the diagram below:
In this metamodel, we provide definitions for three terms: strategy, initiative, and business unit. They are meaningful in the context of the model and should have a single definition. In addition, the metamodel defines every relationship that is allowed between these elements. We can say that an initiative may involve a business unit, but our model cannot show the relationship of a business unit to a strategy UNLESS there is an initiative that is aligned to that strategy and which involves the business unit.
A metamodel restricts what you can draw. It prevents you from drawing things that don’t make sense. And it clearly defines the terms so that when someone reads your model, they know WHY you described some things as strategies and other things as initiatives (for example).
A metamodel is the grammar and definitions of words. It provides the dictionary. The model itself is the story you tell with those words.
Tutorial over for the day!
2 thoughts on “Metamodel 101”
A good introductory article to metamodels Nick. Unfortunately this concept isn't as well understood as I think it should be. I think that there is plenty of scope for expanding this post into a series and explaining about the OMG's MOF and tools that allow people to create there own metamodels and instantiate them.
Indeed. I'd go further and state that for every model you must declarer what your metamodel is otherwise how can anyone understand, extend etc. .? It also stops folks cheating by relating anything to anything else. Importantly a metamodel provides a filter with which to view the world – if it doesn't fit is the metamodel correct or are you trying to fit the wrong piece? It also prompts questions if you find that a part of your metamodel isn't covered and it's always far easier to do this with the metamodel (being small) than a model.