# Model-Driven Approach to Cloud-Portability Issue
## 5 Proposal of the Generic IaaS Model
### Overview of Model-Driven Architecture Principles  
Model-Driven Architecture (MDA) is one of the software-development approaches that takes into account the Model-Driven Development (MDD) facts and actually puts them into practice. MDA is a specification released by OMG (Object Management Group [42]).  
This specification provides guidance on how to design structured specifications--models. The MDA specifies four layers, as shown in Figure 2.  
As shown in several works [38; 43; 44; 45; 46; 47], MDA is used for the proposal and transformation of information systems. MDA, except for the mentioned layer, contains transformations between each layer. Transformations can be bi-directional. This means that a designer can make transformations from the first to the second layer and vice versa. As is shown below, we have proposed an approach that uses MDA as a transformation framework applicable for the transformation between specific CC platforms and generic models. We propose a generic model as a common layer in the architecture of specific CC platforms' script transformations between each other. Specific CC platforms are information systems and we see parallels between MDA layers (specifically PIM and PSM) and transformations of description scripts between generic and specific CC platforms.  
Although the main idea of MDA architecture is the creation of models on higher levels of abstraction, transformations among these models remain relevant as artefacts of the CC script-transformation architecture proposed in this article. MDA conceptually introduces the process of transformation of models of higher levels of abstraction to models of lower levels of abstraction. Transformation rules describe how elements of a source model should be transformed to elements of an object model. This paradigm is exactly what we use to transform specific CC platform scripts to proposed generic models and vice versa.  
The Computer-Independent Model (CIM) is not included in our proposal. Transformation into the Platform-Independent Model (PIM) is not currently automated; according to software analysts, it must be done manually.  
The PIM layer completely specifies the functionality of the software system that is transformed into a specific platform for implementation. It has a certain degree of abstraction from a particular solution in order to be easily used by any development platform. PIM contains information that is important for the solution and development of the software system. This can be algorithms, different kinds of rules or restrictions and so on.  
The Platform-Specific Model (PSM) is dependent on the particular platform on which the system will be developed. According to this model, we can create specific structures in the resulting implementation platform (C ++, Java, Net). This model adequately reflects the code structure and is a sufficient basis for implementation. PSM also contains certain objects, which are used by the resulting programming process, for example classes, constructors, access to objects and so on.  
The last layer is an implementation model that represents the \"code\". In this layer, the software is programmed using the programming language of choice. The result of this layer is compilable code that is ready for deployment and usage by users.  
MDA assumes transformation between these layers, with development progressing from the most generic model to a more specific platform where the proposed application will be implemented. MDA principles can also be used reversibly and the user is not required to use all layers within the transformation process.  
Figure 2: MDA model—abstraction levels.