After reading several texts about meta-modeling I still do not really get the practical benefit. Sometimes I think it is only an interesting mind game but no useful tool. Sure it is wise to clarify your modeling vocabulary: some may say class where others say entity or concept, but this is just simple documentation your modeling terminology. Meta-modeling, as I understand it, is more complex, as it tries to formalize and abstract modeling. Some good examples are Keet's formal comparison of conceptual data modeling languages (UML, ERM and ORM) from academia and the Meta Object Facility (MOF) from industry. To me MOF looks as impractical as CORBA, which was also created by OMG. In theory you could use meta-modeling to transform and integrate models in different modeling languages, but is anyone actually doing this?
- Anybody can ask a question
- Anybody can answer
- The best answers are voted up and rise to the top
I can give you an example of when meta-modeling was useful at my workplace. In the 1990s, the company where I worked grew quickly by acquisition. With each acquisition, new staff, systems, databases and data were added. By 2004, the IT department employed almost 5,000 people and had a yearly budget of 10^9 USD. Many of the smaller companies we merged with had their data in MS Access, MS Excel, Fox Pro. Many of the large companies had flat files on the mainframe, hierarchical databases, huge DB2 installations running on OS/2... and everything else under the sun. Other than the general ledger, no serious attempt was made to consolidate any of this data.
At some point in time, someone woke up and realized there little control of corporate data and that the lack of control represented a huge risk to the company. It was time to clean house! But where to begin? Even a simple idea like "customer" meant something different to every group. The "customer" entity used by the legal department had almost no overlap with the "customer" used by the sales office, and those "customers" had nothing to do with the "customer" used by finance. How do you sort out a mess like that?
The approach we took started with backing up a step. Rather than put 30 people in a room and watch them fight for their own definition of what "customer" meant, we started with meta-modeling. We tackled questions like "what is a semantic attribute?" or "what are entities and how should their names be formatted?".
It was easier to gain consensus about abstractions like "class" and "relationship" than about actual operational data. But once the stakeholders had consensus on fundamental terms, we could move down the latter of abstraction, gradually getting more and more concrete. Eventually we had a common framework for describing corporate data and were working toward a common data dictionary.
You have different layers of abstractions. MOF is the highest, then using a transformation you get UML or BPM models, then views. Modelers usually talks about M0,M1..M3 I think that with new technologies traditional barriers between metamodelling and modeling is disappearing. Let's consider EMF (eclipse modeling technology). Ecore is a kind of MOF then using EMF serialization you get an UML model, then using GMF you get graphical representations.