## 2 Literature Review
### Background
#### Brief Presentation of MDE  
A model is an abstraction, a simplification of a system that allows to understand and answer the questions asked about the latter. A system can be described by different models related to each other. Model is at the heart of MDE technology, which combines two major activities:  
* The meta-modeling, which aims at building a model called meta-model that makes it possible to define models description languages, i.e., modeling languages. The meta-modeling enables the definition of a modeling language for a domain, also called Domain Specific Modeling Language (DSML), through the definition of domain concepts, relationships between these concepts, and specific constraints required by the domain. * The model transformation that aims to build processing engines, enabling movement from one model to another and the creation of operational models (for code generation, documentation, testing, verification, implementation, etc.) [41]. MDE has several significant improvements in the development of complex systems, allowing us to focus on a more abstract concern than conventional programming. This is a form of generative engineering in which all or part of an application is generated from models [41]. The benefits of MDE are many: independence from technological changes, better management of complexity, greater reusability, etc. The number of views increases, the models used and their associated semantics are becoming better defined and, little by little, models occupy a central position in the development process: the virtual prototype of the system to achieve. Indeed, the evolution of software workshops (such as I-Logix Rapsody, and Artisan Software Studio) and languages allows executable model building today [42]. Meta-models have significant advantages over other techniques, such as BNF grammars or the UML profile [43]. Domain Specific Modeling Languages (DSML)  
DSMLs are languages that are designed on purpose for a specific domain, context, or company, to ease the task of people that need to describe things in that domain [44]. They are particularly useful because they are tailored to the requirements of the domain, both in terms of semantics and expressive power (and thus do not force end users to study more general-purpose languages that may be full of concepts completely irrelevant for the domain) and of notation and syntax (and thus provide appropriate modeling abstractions and primitives closer to the ones used in the domain). A modeling language is defined through three core ingredients. (i) Abstract syntax: Describing the structure of the language and the way the different primitives can be combined together, independently of any particular representation or encoding; (ii) Concrete syntax: Describing specific representations of the modeling language. It consists of one or more diagrams. The concrete syntax can be either textual or graphical; and (iii) Semantics: Describing the meaning of the elements defined in the language and the meaning of the different ways of combining them. OCL: A Language for Verification of UML Models  
OCL (Object Constraint Language) is a functional language based on first-order logic for expressing specifications on a UML model. By the representation of different types of UML diagrams in the form of class diagrams, OCL can be used as the meta-model specification language, which requires a good knowledge of the syntax and semantics of modeling elements. OCL rules may be attached to a meta-model not only to check the own semantic rules of the modeled domain, but also to restrict the set of valid instances (models). OCL allows navigation in class diagrams (particularly in the meta-model) and has set-primitive and iterators on data collections. One can thus express the pre- and post-conditions of methods, class invariants, etc. [45]. Overview of Eclipse Modeling Framework (EMF)  
The choice of a meta-modeling technology depends primarily on the availability of tools to support the development of a complete solution.