# A Model-Driven Approach for Solving the Software Component Allocation Problem
## 2 Background on Model Transformation  
Models play a key role in MDE. As a means to deal with the complexity of systems, a model is a reduced presentation that helps to analyze certain properties of the system while ignoring irrelevant details.  
MDE approaches are based on the use of meta-models. A model needs to conform to a meta-model. This means that the model must respect the structure and constraints defined by the meta-model. The meta-model specifies the concepts of a domain, the relationships between these concepts, and the rules that restrict the possible elements and relationships in the valid models. In addition, the meta-model itself is specified using a metamodeling language. For example, the meta-models in the eclipse modeling framework [8] are specified in Ecore [9]. In this paper, Ecore is used to define the meta-models. However, there are other meta modeling languages, including the meta object facility (MOF) [10], which is the core meta modeling language in the model driven architecture (MDA) based approaches proposed by the object management group (OMG) [11].  
MDE approaches consider models as the main development artifacts. Models can be automatically transferred into other representations. For example, model-to-text transformations transform models into text (or code). In a model-to-model transformation (or model transformation for short), a model is transformed into another model that can be at a different level of abstraction or in a different formalism. In such transformations, a source model conforming to a source meta-model is transformed into a target model which conforms to a target meta-model.  
A model-to-model transformation language is used to specify the transformation rules. ATLAS transformation language (ATL) [12; 13] is a model transformation language widely known by the MDE community. This is due to many features of ATL, including its support of several meta-modeling languages and the availability of ATL development tools that are integrated with the Eclipse platform. Programs written in ATL can be executed to automatically generate the target models. ATL language and toolkit are part of the eclipse modeling project [14]. There are other model transformation languages such as the QVT (query/view/transformations) [15] for specifying transformations on models conforming to MOF.  
In ATL, the model transformations are specified using transformation rules. A transformation rule specifies one or more elements to be created in the target model for each matching element in the source model. ATL supports three kinds of transformation rules: matched, lazy, and called rules [12]. Matched and lazy rules use a declarative fashion to specify the transformations, while on the other hand, the called rules use an imperative style. Matched rules are applied once for each matching element, but lazy rules are applied as many times for each match as it is referred to from other rules. Called rules, on the other hand, have to be explicitly invoked by other rules and can accept parameters. They can only be called from within an imperative code section, either from a matched rule or another called rule. All of the transformation rules presented in the Appendix, which is to be discussed later, are matched rules.