From Wikipedia, the free encyclopedia
Jump to: navigation, search
"Meta model" redirects here. For other uses, see Meta model (disambiguation).
Example of a Geologic map information meta-model, with four types of meta-objects, and their self-references.[1]

Metamodeling or meta-modeling is the analysis, construction and development of the frames, rules, constraints, models and theories applicable and useful for modeling a predefined class of problems. As its name implies, this concept applies the notions of meta- and modeling in software engineering and systems engineering.


"Metamodeling" is the construction of a collection of "concepts" (things, terms, etc.) within a certain domain. A model is an abstraction of phenomena in the real world; a metamodel is yet another abstraction, highlighting properties of the model itself. A model conforms to its metamodel in the way that a computer program conforms to the grammar of the programming language in which it is written.

Common uses for metamodels are:

  • As a schema for semantic data that needs to be exchanged or stored
  • As a language that supports a particular method or process
  • As a language to express additional semantics of existing information
  • As a mechanism to create tools that work with a broad class of models at run time
  • As a schema for modeling and automatically exploring sentences of a language with applications to automated test synthesis

Because of the "meta" character of metamodeling, both the praxis and theory of metamodels are of relevance to metascience[disambiguation needed], metaphilosophy, metatheories and systemics, and meta-consciousness. The concept can be useful in mathematics, and has practical applications in computer science and computer engineering/software engineering, which are the main focus of this article.

Metamodeling topics[edit]

Meta-Object Facility Illustration.
Example of an ontology.
A DoDAF metamodel.


In software engineering, the use of models is more and more recommended. This should be contrasted with the classical code-based development techniques. A model always conforms to a unique metamodel. One of the currently most active branch of Model Driven Engineering is the approach named model-driven architecture proposed by OMG. This approach is based on the utilization of a language to write metamodels called the Meta Object Facility or MOF. Typical metamodels proposed by OMG are UML, SysML, SPEM or CWM. ISO has also published the standard metamodel ISO/IEC 24744.[3] All the languages presented below could be defined as MOF metamodels.

Metadata modeling[edit]

Metadata modeling is a type of metamodeling used in software engineering and systems engineering for the analysis and construction of models applicable and useful to some predefined class of problems. (see also: data modeling).

Model transformations[edit]

One important move in Model Driven Engineering is the systematic use of Model Transformation Languages. The OMG has proposed a standard for this called QVT for Queries/Views/Transformations. QVT is based on the Meta-Object Facility or MOF. Among many other Model Transformation Languages (MTLs), some examples of implementations of this standard are AndroMDA, VIATRA, Tefkat, MT[disambiguation needed], ManyDesigns Portofino.

Relationship to ontologies[edit]

Meta-models are closely related to ontologies. Both are often used to describe and analyze the relations between concepts[4]

  • Ontologies: express something meaningful within a specified universe or domain of discourse by utilizing a grammar for using vocabulary. The grammar specifies what it means to be a well-formed statement, assertion, query, etc. (formal constraints) on how terms in the ontology’s controlled vocabulary can be used together.[5]
  • Meta-modeling: can be considered as an explicit description (constructs and rules) of how a domain-specific model is built. In particular, this comprises a formalized specification of the domain-specific notations. Typically, metamodels are – and always should follow - a strict rule set.[6] “A valid metamodel is an ontology, but not all ontologies are modeled explicitly as metamodels”.[5]

Types of metamodels[edit]

For software engineering, several types of models (and their corresponding modeling activities) can be distinguished:

Zoos of metamodels[edit]

A library of similar metamodels has been called a Zoo of metamodels.[7] There are several types of meta-model zoos.[8] Some are expressed in ECore. Others are written in MOF 1.4 - XMI 1.2. The metamodels expressed in UML-XMI1.2 may be uploaded in Poseidon for UML, a UML CASE tool.

See also[edit]


  1. ^ David R. Soller et al. (2001) Progress Report on the National Geologic Map Database, Phase 3: An Online Database of Map Information Digital Mapping Techniques '01 -- Workshop Proceedings U.S. Geological Survey Open-File Report 01-223.
  2. ^ FEA (2005) FEA Records Management Profile, Version 1.0. December 15, 2005.
  3. ^ International Organization for Standardization / International Electrotechnical Commission, 2007. ISO/IEC 24744. Software Engineering - Metamodel for Development Methodologies.
  4. ^ E. Söderström, et al. (2001) "Towards a Framework for Comparing Process Modelling Languages", in: Lecture Notes In Computer Science; Vol. 2348. Proceedings of the 14th International Conference on Advanced Information Systems Engineering. Pages: 600 – 611, 2001
  5. ^ a b Pidcock, Woody (2003), What are the differences between a vocabulary, a taxonomy, a thesaurus, an ontology, and a meta-model? 
  6. ^ Ernst, Johannes (2002), What is metamodeling, and what is it good for? 
  7. ^ Jean-Marie Favre: Towards a Basic Theory to Model Driven Engineering..
  8. ^ AtlanticZoo.

Further reading[edit]