“A model of models” – this is basically what metamodel means. Thus, metamodeling is the construction, analysis and development of the models, frames, theories, rules, and constraints that are applicable for modelling a predefined class of problems. If a model is an abstraction of phenomena in the real world, a metamodel, on the other hand, is another abstraction but this time highlighting the properties of the model itself. Now the question is how can a metamodel emerge from different models? There are times when modelling a set of related systems that usually belongs to a given domain, some share many constructs. Now these constructs are therefore generalized across different models, which in turn will result to a metamodel that the set of related models should conform to.
Metamodeling is also considered as an explicit description of how a domain-specific model is built, which includes certain constructs and rules that comprise a formalized specification of domain-specific documents. Metamodeling can be identified into three dimensions: (a) as the modelling of a representation language; (b) as the modelling of information on how to manipulate and use application models; and (c) as the multiple instantiation levels of application language.
Metamodels also have a lot of uses, as going “meta” simply means developing a computational model for a family of applications, while developing an architecture for executing such applications. Some of the common uses of metamodels include: (a) As a language that supports a particular process or method; (b) As a schema for semantic data that needs to be stored or exchanged; and (c) As a language used to express additional semantics of existing information. Indeed, creating a metamodel will definitely lead to creating a standard of transforming parameters that will positively affect system performance.