Model is an abstraction or representation of a system. Whatever the type of the model it can provide a conceptual view of the system or part of it in different detailed levels. In software development, models are often used by designers to plan the projects and discuss them with the clients or end users, particularly in the early stages of the project where it contains no information about the implementation of the project. Models are defined using modelling languages, which demands that language’ syntax and semantics must be both precisely defined. Meta-modelling allows language definition to be modelled, formalized in a language that is similar to the language used to construct system models. In other words, meta-modelling makes language definitions easier to understand and depending on the modelling tools used, enables language definitions to be manipulated and integrated in the same way as system models since they are all models. A met-model is a model of the concepts that a language contains, for example, in UML this includes such concepts as class, attribute, and operation.etc.
This is crucial for the model driven development (MDD), the recent trend in software engineering initiated by the object management group (OMG). In MDD, models are the essential artifacts and its aim is to increase the abstraction in the software development process that helps to manage the complexity and frequent changes in today’s’ systems, especially complex ones.
MDD infrastructure is based on the traditional OMG modelling infrastructure where Meta-modelling is a basic part of it. The infrastructure of MDD must define the concepts that are used in building a model and the rules of using these concepts, how the concepts can be extended for the language user’ needs, the notation to be used in the representation of models, and how the constructs of a model can represent real world elements including software artifacts. An important feature of the MDD infrastructure is its ability to facilitate the mapping from models to other artifacts like code, which the meta-modelling approach supports and enables dynamic changes throughout the development lifecycle to be handled effectively. However, there are different problems in this area that need to be discussed and researched, one of them is the need for full explanation of how the real world elements are accommodated in the infrastructure including meta-models.
This special issue will introduce state-of-the-art and advanced techniques for adopting meta-models in systems development in addition to applications and cases. The special issue is intended to publish original research contributions that discuss and report on the use and design of meta-models in software engineering. Ideas, problems and solutions related to the development and use of meta-models will be discussed.