Academia.eduAcademia.edu

State of the Art of QVT: A Model Transformation Language Standard

2007

Query/Views/Transformation (QVT) is the OMG standard language for specifying model transformations in the context of MDA. It is regarded as one of the most important standards since model transformations are proposed as major operations for manipulating models. In the first part of the paper we briefly summarize the typical transformation scenarios that developers encounter in software development and formulate key requirements for each scenario. This allows a comparison between the desirable and the formulated requirements for QVT. Such a comparison helps us to initially evaluate the adequacy of the QVT language.The second part of the paper focuses on the current state of the standard: the language architecture, specification, paradigm, and open issues. The three QVT sublanguages Operational Mappings, Relations, and Core are briefly described. Special attention is given to the currently available and expected tool support.

State of the Art of QVT: A Model Transformation Language Standard Ivan Kurtev Software Engineering Group, University of Twente, The Netherlands [email protected] Abstract. Query/Views/Transformation (QVT) is the OMG standard language for specifying model transformations in the context of MDA. It is regarded as one of the most important standards since model transformations are proposed as major operations for manipulating models. In the first part of the paper we briefly summarize the typical transformation scenarios that developers encounter in software development and formulate key requirements for each scenario. This allows a comparison between the desirable and the formulated requirements for QVT. Such a comparison helps us to initially evaluate the adequacy of the QVT language.The second part of the paper focuses on the current state of the standard: the language architecture, specification, paradigm, and open issues. The three QVT sublanguages Operational Mappings, Relations, and Core are briefly described. Special attention is given to the currently available and expected tool support. Keywords: Model transformations, QVT, MDA, MDE. 1 Introduction Model Driven Engineering (MDE) is an emerging approach for software development gaining more and more attention by the industry and the academia. MDE emphasizes the need for thorough modeling of software systems before they are implemented. The implementation should be derived from the models by applying model transformations, possibly in a fully automated way. MDE principles may be applied by using different modeling languages, transformation languages, and tools. One example of such an approach is Model Driven Architecture (MDA) initiative proposed by OMG. MDA distinguishes between platform independent models (PIMs) and platform specific models (PSMs). This classification is motivated by the constant change in implementation technologies and the recurring need to port software from one technology to another. Furthermore, MDA proposes its set of modeling standards: (i) to define models and modeling languages (UML [12], UML profiles, MOF [14]); (ii) to represent and exchange models (XMI) [11]; (iii) to define model constraints (OCL) [16]; (iv) to specify transformations on models. The last operation is proposed as the main way to manipulate models in MDA. The important role of model transformations motivates the effort that OMG took to define a standard language for model transformations aligned with the rest of OMG A. Schürr, M. Nagl, and A. Zündorf (Eds.): AGTIVE 2007, LNCS 5088, pp. 377–393, 2008. © Springer-Verlag Berlin Heidelberg 2008 378 I. Kurtev standards. The result of this effort is the standard QVT MOF 2.0 language [17] which at the time of the writing of this paper is in the final standardization phase. Transformation technologies are not something new in software engineering. A compiler is actually a transformer that produces an artifact at a lower level of abstraction from another artifact at a higher level of abstraction, possibly expressed in a language that matches the problem domain better. The standardization of XML as an exchange data format gave birth to XSLT, a standard transformation language for XML documents. A similar effort is observed in the domain of Semantic Web. Many more examples may be given from the domain of data engineering, a discipline that is facing hard interoperability and data heterogeneity problems and approaches them by applying data transformations. In software engineering we witness a stable progress in at least two fields: program transformations and graph transformations. This gives us a valuable insight about the problems we need to tackle and about the advantages and disadvantages of the available techniques. In the light of this discussion an interesting question emerges. How does OMG derive the QVT standard? What are the transformation scenarios that will be addressed and what kind of properties the language will possess? Unfortunately, a quick look at the QVT Request for Proposals [13] (QVT RFP) document shows that the most important requirements for the language concern its alignment to the existing OMG standards and the software engineering qualities of the language take the role of nonmandatory requirements. The purpose of this paper is twofold. First we would like to outline a set of transformation scenarios commonly found in software and data engineering. Each scenario naturally poses a set of requirements. They can be compared to the requirements and rationale behind QVT. Second, we present an overview on QVT and the current tool support for this language. The paper is organized as follows. Section 2 gives a larger context for discussion by considering several well-known transformation scenarios. Section 3 presents the requirements for QVT as described in the QVT RFP. Section 4 explains the overall architecture of the QVT language and briefly describes the three QVT sublanguages: Relations, Core, and Operational Mappings (OM). Section 5 lists the currently available tools for specifying and executing QVT transformations. Section 6 concludes the paper. 2 Transformation Scenarios in Software and Data Engineering The previous section mentioned that transformations are applied to solve problems in many domains. Those problems, however, generally differ and may pose a set of different requirements. These requirements should be the starting point for the development of a transformation language. In this section we analyze two domains of application of transformations: software development based on the principles of MDE and heterogeneous data translation. 2.1 Model Driven Software Development Model Driven Software Development (MDSD) applies the principles of MDE in the development of software systems. A system is specified as a set of models that are State of the Art of QVT: A Model Transformation Language Standard 379 repetitively refined until a model (models) with enough details to implement the system is obtained. The implementation step should be automated as much as possible by code generation from the models. When applied in practice, this general scheme of MDSD processes should follow and address some stable general principles and scenarios of software development such as separation of concerns, iterative development, refactoring, reverse engineering, and others. These principles and scenarios take a concrete shape in the context of MDSD and put forward requirements and open questions. In this section we focus on the role of model transformations related to various aspects of MDSD. Refinement Steps in MDSD. Regardless of the actual development methodology an MDSD process can be seen as a series of refinement steps. More abstract models are transformed into more detailed ones being closer to the actual system. The most important requirement for this refinement process is the semantics preserving property of transformations. Fig. 1 illustrates the process of refinement and the relations of the models to the system. Fig. 1. Refinement of models in MDSD and their relation to the system to be implemented The vertical dimension denotes the refinement from more abstract to more concrete models. Since all models are representations of the same system every transformation step should preserve the intended meaning of the source model and eventually bring new details. The refinement steps may encode useful design knowledge based on design and architectural patterns, idioms related to a particular implementation technology, and standard transformations such as UML to Java or UML to J2EE. Semantics preservation should ensure that the produced system will behave as it is specified in the models. Separation of Concerns. The principle of separation of concerns helps in managing the complexity in development of large software systems. The application of this principle in MDSD leads to more than one model of the system developed from different points of interest. These models may be refined independently from each other along a single track as shown in Fig. 2. At a certain moment these models (or code) must be integrated to obtain a complete system. 380 I. Kurtev Fig. 2. Refinement and composition of models representing different concerns Fig. 2 shows an example organization of models in a two-dimensional space. The vertical dimension indicates the level of abstraction of models. The horizontal dimension indicates that the models may be separated according to the problem they solve or the point of interest taken to develop a model. Such points of interest are known as concerns. Fig. 2 shows a horizontal dimension with four concerns: A, B, C, and D. At a certain stage models of different concerns may be composed. Composition of models is treated as a transformation that takes at least two input models and generates an output model. Both the refinement and composition transformations must be semantics preserving since the resulting models represent the same system as the source models. Two issues arise in relation to the principle of separation of concerns. The first one is the consistency between models belonging to various concerns. Models of different concerns should be treated separately but ultimately they represent the same underlying system. Therefore, the independent changes over the models should not produce inconsistent results. The second issue is the composition of models which is a special kind of transformation with at least two input models. The composition problems may expose specificities that may require a specialized language optimized for composition tasks [3]. Iterative Development and System Evolution. Contemporary software development methods promote iterative processes to manage complexity and to deal with identification of system inadequacy at an earlier stage of development. Every new iteration changes (adds to) the functionality of the system. Changes may also occur when the system evolves due to changed requirements during the maintenance phase. The impact of a change on a system developed according to the MDE principles State of the Art of QVT: A Model Transformation Language Standard 381 requires changes to the existing models and integration of the newly developed models with existing ones. Since the system is developed as a series of transformations over models a change in one model must be propagated through the rest. The propagation may be in two directions: to models derived from the changed model and to models from which the changed model is derived. Fig. 3. Evolution and change propagation in MDE Fig. 3 shows three moments in which models sequentially evolve. After the initial transformation is executed at moment t1, subsequent changes of the source and target models (at moments t2 and t3) may require forward and backward change propagation. Two problems arise here: how to identify the required changes and how to apply them on existing models at a low cost. The first problem is known as traceability problem. A trace allows a software artifact to be related to its predecessors that were developed during earlier phases of development. For example, a Java class may be traced back to its design class, analysis class, and ultimately to the requirement that motivates its presence in the system. In the case of model transformations a trace would relate elements in the source model to the created elements in the target model. By transitivity, traces may be detected over the chain of transformations. If a model element is changed, traces help in detecting the changes in the model elements derived from it and ultimately in the system code. Traceability support may not be a property of a transformation language. It may be provided by the transformation engine or the developer may take care of creating and using traces. The second problem is how to apply the identified changes. One naive solution is to execute again the transformation on the modified model. However, for large models this may be time consuming, especially when there is a long chain of model refinements and compositions. A more efficient solution is to transform only those elements that are modified and to do only incremental changes at the target models. It should be noted that this scenario does not necessarily call for bidirectional transformation programs. The two directions may be supported by two different transformation programs. 382 I. Kurtev 2.2 Data Translation Problems in Data Engineering Domain Data translation, data mapping, and data integration are among the important subfields in data engineering. In this section we consider a real-life scenario that requires solving data translation problems. The scenario is generalized and it is shown that conceptually it exemplifies the classical data and schema translation problem. The most important and challenging problem in data translation is the problem of heterogeneity. Data come from various sources, they are usually autonomous (controlled by different organizations) and distributed, structured according to different data models. To illustrate the complexity of the problem we give a list of some data formats used in practice: ER, Relational Model, Object-Relational Model, XML, SGML, comma-separated data, Excel sheets, Latex documents, Word documents, etc. Even relational data stored in systems coming from different vendors expose some differences. Consider a scenario in which geographically distributed development teams work on a common product. Teams use different tools for bug tracking. One team uses Mantis, the second team uses Bugzilla, and the third team uses simple Excel spreadsheets to describe bugs. Teams are at different levels of maturity and may use different development processes. There is a need for exchanging information about bugs among the teams. However, every tool uses its own data format for bug description. Moreover, the conceptual models behind every tool used to describe bugs may also differ. The scenario is illustrated in Fig. 4. Fig. 4. Tool interoperability problem in bug management Fig. 4a shows one possible way for interoperability in which there are bridges for every couple of tools. If a new team joins the project a potential new bug tracking system will be used. Then bridges must be built from the new tool to the existing tools. Fig. 4b shows a second way to handle the interoperability: a pivot model is defined that unifies the models used by the tools. Then a bridge is defined between the pivot model and every tool. The scenario shown above may be generalized to the well known problem of schema and data translation [1]. It is illustrated in Fig. 5. We intentionally use terminology specific to the data engineering domain. We have three levels: database, State of the Art of QVT: A Model Transformation Language Standard Models M1 M2 conformsTo Schemas conformsTo S1 T1 conformsTo conformsTo Databases S2 D1 T2 (a) D2 ERModel conformsTo ERschema conformsTo ERdata 383 OOModel conformsTo T1 OO schema conformsTo T2 OOdata (b) Fig. 5. Schema and data translation problem in data engineering schema, and model. Databases conform to schemas and schemas conform to models. This three-level organization corresponds to the three levels of model, metamodel, and metametamodel. The schema and data translation problem is formulated as follows. Given two models M1 and M2, a source schema S1 conforming to M1, and a source database D1 conforming to S1, find a translation T1 that generates a target schema S2 conforming to the model M2, and a translation T2 that translates the database D1 to a database D2 conforming to S2. Fig. 5a diagrammatically shows the problem and Fig. 5b gives a concrete example. An interesting question is if it is possible to automatically derive T2 from T1. The main observation on this problem is that it may involve a large degree of heterogeneity. We also have two possibilities for translations between a pair of models: lossless and lossy transformations. This depends on the level of compatibility between the schemas/models. In data translation we are interested in preserving the information as much as possible across models and schemas. This requirement is known as preservation of information capacity [7, 8]. 3 QVT Requirements After the presentation of two problem domains and the requirements they pose to model transformation systems we present the QVT standard proposed by OMG. The requirements for the QVT language are described in the formal QVT Request for Proposals (QVT RFP) [13] issued by OMG. Here we briefly summarize the requirements without repeating them in full. QVT requirements are divided into mandatory and optional requirements. 384 I. Kurtev Mandatory requirements: • • • • • Query language: Proposals shall define a language for querying models; Transformation language for MOF models: Proposals shall define a language for transformation definitions. Definitions describe relationships between source and target MOF metamodels; QVT abstract syntax in MOF: The abstract syntax of the QVT languages shall be described as MOF 2.0 metamodel; Declarative language: The transformation definition language shall be declarative in order to apply incremental updates done on the source model immediately to the target model; MOF 2.0 model instances: All the mechanisms defined by proposals shall operate on models instances of MOF 2.0 metamodels; Optional requirements: • • • • Bidirectional transformations: Proposals may support transformation definitions that can be executed in two directions (either through a symmetric definition or through a couple of definitions); Traceability between source and target models: Proposals may support traceability between source and target model elements after transformation execution; Reusable transformations: Proposals may support mechanisms for reuse of transformation definitions; In-place updates: Proposals may support execution of transformations where the source and target models are the same; It should be noted that not all the requirements are listed here. For example, the requirement for view definition is skipped since it is not implemented in the proposed standard. We also give the definitions of the three concepts that are used in the name of the QVT language (Query, View, and Transformation) as defined by OMG documents. Query: A query is an expression that is evaluated over a model. The result of a query is one or more instances of types defined in the source model, or defined by the query language. View: A view is a model which is completely derived from another model (the base model). There is a ‘live’ connection between the view and the base model. Transformation: A model transformation is a process of automatic generation of a target model from a source model, according to a transformation definition. An analysis of the requirements shows that main attention is paid to the alignment of QVT to the rest of the OMG standards, most notably MOF2.0. On the base of the mandatory requirements we may infer the following operational context of the QVT language (Fig. 6). The operational context is based on the three-level MOF metamodeling architecture. The QVT abstract syntax is defined as a metamodel (QVT). QVT transformations are models conforming to the QVT metamodel. Fig. 6 shows an example transformation Tab. It is based on the input and output metamodels MMa and MMb. In general, QVT allows more than one input and output models and their State of the Art of QVT: A Model Transformation Language Standard 385 conformsTo M3 MOF conformsTo conformsTo conformsTo M2 MMa QVT based on conformsTo MMb based on conformsTo conformsTo M1 Ma Tab input executed Mb output Fig. 6. QVT operational context corresponding metamodels to be used. For simplicity, we show only single input and output models/metamodels. QVT transformations are executed by taking input models (Ma) and producing output models (Mb). The optional requirements correspond to some well-known software quality properties. The RFP does not give any domain analysis and in-depth coverage of possible scenarios in which QVT will be used. 4 QVT Languages According to Fig. 6, the abstract syntax of QVT is defined as a MOF 2.0 metamodel. This metamodel defines three sublanguages for transforming models. They rely on OCL 2.0 as navigation and query language for models. Creation of views on models is not addressed in the proposal. 4.1 QVT Architecture QVT languages are arranged in a layered architecture shown in Fig.7. The languages Relations and Core are declarative languages at two different levels of abstraction. The specification document defines their concrete textual syntax and abstract syntax. In addition, Relations language has a graphical syntax. Operational Mappings is an imperative language that extends Relations and Core languages. Relations language provides capabilities for specifying transformations as a set of relations among models. Core language is a declarative language that is simpler than the Relations language. One purpose of the Core language is to provide the basis for specifying the semantics of the Relations language. The semantics of the Relations language is given as a transformation RelationsToCore. This transformation may be written in the Relations language. Sometimes it is difficult to provide a complete declarative solution to a given transformation problem. To address this issue the QVT proposes two mechanisms for extending the declarative languages Relations and Core: a third language called Operational Mappings and a mechanism for invoking transformation functionality implemented in an arbitrary language (Black Box implementation). 386 I. Kurtev Fig. 7. Layered architecture of QVT languages Operational Mappings language extends the Relations language with imperative constructs and OCL constructs with side effects. The syntax of Operational Mappings language provides constructs commonly found in imperative languages (loops, conditions, etc.). The QVT specification indicates a relation between Operational Mappings and Core. However, such a relation cannot be identified after inspecting the metamodels of these languages. Black Box mechanism allows plugging-in and executing external code during transformation execution. This mechanism allows complex algorithms to be implemented in any programming language and enables reuse of already existing libraries. This makes some parts of the transformation opaque, which brings a potential danger since their functionality is arbitrary and is not controlled by the transformation engine. Fig. 7 does not suggest any particular implementation of a QVT transformation engine. Tool vendors may choose different strategies. For example, the Core language may be supported by an execution engine and the Relations transformations may be transformed to equivalent programs written in Core language. In that way the engine is capable of executing programs written in both languages. Another possibility is that only the Relations and Operational Mappings are supported by a tool. These implementation options may produce tools with different capabilities. To denote the capabilities of tools, the QVT proposal defines a set of QVT conformance points for tools. Conformance points are organized along two dimensions and form a grid with 12 cells. Table 1 shows the dimensions and the possible conformance points. The Language Dimension defines three levels corresponding to the three QVT languages. If a tool conforms to a given level this means that it is capable of executing transformation definitions written in the corresponding language. Table 1. QVT conformance points for tools Language Dimension Interoperability Dimension Syntax Executable Core Relations Operational Mappings XMI Executable Syntax Exportable XMI Exportable State of the Art of QVT: A Model Transformation Language Standard 387 The Interoperability Dimension is concerned with the form in which a transformation definition is expressed. It defines four levels: • • • • Syntax Executable. A tool can read and execute transformation definitions written in the concrete syntax given in the QVT proposal; XMI Executable. A tool can read and execute transformation definitions serialized according to the XMI serialization rules (recall that transformation definitions conform to the QVT metamodel and therefore are XMI serializable); Syntax Exportable. A tool can export transformation definitions in the concrete syntax of the corresponding language; XMI Exportable. A tool can export transformation definitions in XMI format; A requirement states that if a tool is SyntaxExecutable or XMIExecutable for a given language level, it should also be SyntaxExportable or XMIExportable respectively. It should be noted that the QVT specification does not define the term “QVT compliant transformation language”. This term tends to be more and more used. However, its meaning is not clear. It is an attractive possibility to attach a standard label to an existing transformation language. The specification gives us only the possibility to claim compliance for tools and not for languages. 4.2 Relations Language Transformations written in the Relations language consists of declarations of relations among metaelements. Relations are based on an arbitrary number of domains. When a relation is specified no execution direction is assumed. When a transformation is executed an execution direction is chosen. This opens the possibility to specify bidirectional transformations if their logic permits so. The following transformation scenarios are supported by the Relations language: • • • • Check-only: transformation execution checks if given models satisfy the relations specified in the transformation definition. No new models/model elements are created and no changes are made to the existing models. The answer is yes or no depending if the relations hold; Unidirectional transformation: the transformation is executed in a given direction. The target model is created according to the relations in the transformation definition. After the transformation execution, the input and output models satisfy the relations in the transformation definition; Model synchronization: the transformation engine checks if the relations in a transformation definition hold for a given set of models. If a relation is not satisfied the engine makes changes in the models in order to satisfy the relation. This may lead to creation of new elements, deletion, and update of existing elements. This scenario is motivated by the need for handling model updates in an incremental fashion; In-place update: in this scenario there is only one model that may be changed according to the specified relations; 388 I. Kurtev Every relation contains a set of object patterns. These patterns can be matched against existing model elements, instantiated to model elements in new models, and may be used to apply changes to existing models. The language handles the manipulation of traceability links automatically and hides the related details from the developer. The code snippet below gives an example relation. 1. relation AttributeToColumn { 2. checkonly domain uml c:Class {}; 3. enforce domain rdbms t:Table {}; 4. primitive domain prefix:String; 5. 6. where { 7. PrimitiveAttributeToColumn(c, t, prefix); 8. ComplexAttributeToColumn(c, t, prefix); 9. SuperAttributeToColumn(c, t, prefix); 10. } 11. } In a hypothetical transformation that transforms UML class models to relational schemas there is a relation between UML attributes and columns of relational tables. The relation AttributeToColumn specifies this. It consists of three domains: uml (line 2), rdbms (line 3), and one primitive domain that allows passing strings to the relation in the form of a parameter (line 4). In order to hold, the relation must satisfy the object patterns in the domains and to have the condition in the where clause (lines 6-10) evaluated to true. The where clause illustrates the possibility for invoking one relation from another one. The keywords checkonly and enforce play an important role for the semantics of the transformation. Checkonly indicates that the domain elements (in this case UML classes) cannot be changed (i.e. they are read-only) by the transformation execution. Enforce indicates that the engine should change the elements of the domain to ensure the relation. On the basis of the concrete transformation scenario these keywords have different effect on the domains. For example, if a unidirectional transformation is executed from classes to tables then the uml domain will be used for matching and the rdbms domain will be created. In this scenario the meaning of enforce is creation of new elements. If two models already exist and the transformation is executed to synchronize them, changes are allowed only in the enforced domains. 4.3 Core Language Core language is a declarative language that is simpler than the Relations language. Transformation definitions written in it tend to be longer than the equivalent definitions written in Relations language. Traceability links are treated as ordinary model elements. The developer is responsible for explicitly creating and using the links. Both languages support the same set of transformation scenarios. The rationale behind Core is to support bidirectional incremental transformations. An ideal execution engine for Core should be event-based: every modification in one model is immediately handled and the required modifications in the other models are performed. The following is a snippet taken from a Core transformation specification. State of the Art of QVT: A Model Transformation Language Standard 389 map attributeColumns in umlRdbms { check enforce rdbms (t:Table) { realize c:Column| c.owner := t; c.key->size()=0; c.foreignKey->size()=0; } where (c2t:ClassToTable| c2t.table=t;){ realize a2c:AttributeToColumn| a2c.column := c; c2t.fromAttribute.leafs->include(a2c); default a2c.owner := c2t; } map{ check enforce rdbms (ct:String) {c.type := ct;} where (p2n:PrimitiveToName){ a2c.type := p2n; p2n.typeName := ct; } } map {……………………………………………………………………………………} A transformation in Core is a set of mappings. Mappings roughly correspond to relations in the Relations language. Mappings can be nested. The concepts of enforced and check domains are also available. 4.4 Operational Mappings Operational Mappings language extends the Relations language with imperative constructs and OCL constructs with side effects. The basic idea in this language is that the object patterns specified in the relations are instantiated by using imperative constructs. In that way the declaratively specified relations are imperatively implemented. The syntax of Operational Mappings language provides constructs commonly found in imperative languages (loops, conditions, etc.). Transformations are always unidirectional. 1. transformation SimpleUML2FlattenSimpleUML(in source : SimpleUML, 2. out target : SimpleUML); 3. main() {} 4. ......................... 5. ...helpers............... 6. ...mapping operations.... 7. mapping Class::leafClass2Class(in model : Model) : Class 8. when {not model.allInstances(Generalization)->exists(g | g.general 9. = self)} 10. {name:= self.name; 11. abstract:= self.abstract; 12. attributes:= self.derivedAttributes()-> 13. map property2property(self); 14. } A transformation in Operational Mappings always has an entry point from which the transformation execution starts. This is the mapping called main (line 3). From main other mappings may be invoked. The body of the transformation definition contains mappings and helper operations. An example of a mapping is called leafClass2Class (lines 7-14). This mapping creates an UML class from every UML class that satisfies the guarding condition specified in the when clause (lines 8-9). The properties of the created class are assigned with values in the body of the mapping (lines 10-13). It is possible to invoke other mappings from the body of the current one 390 I. Kurtev (the keyword map in line 13). In that way the execution order among the mappings is imperatively specified. 4.5 Discussion In section 2 we outlined several transformation scenarios. We observe a diversity of transformation problems that may require different transformation techniques. A logical question is if it is possible to handle these scenarios by a single transformation language in a satisfactory way. The answer is probably no. This is implicitly supported by the fact that QVT is not a single language. It is a suite of three languages that covers both the imperative and declarative paradigm, and addresses several transformation scenarios. Here we discuss briefly every scenario and how it can be handled by the QVT languages. Regarding the semantics preservation property of model refinement, the QVT specification and the RFP do not require support for checking this. It is not clear yet what type of reasoning may be performed over QVT programs. We expect that a meaningful reasoning would require a limited version of the languages. Model composition may be regarded as a transformation from at least two input models to a composed model. From that point of view, QVT supports model composition in general. There are proposals for model composition languages [3] specialized in model composition only. Performing incremental bidirectional transformations is one of the scenarios in QVT Relations. It is somehow unclear how this scenario is implemented in the current engines. The approach suggested in the specification is to execute the transformation afresh by performing the required pattern matching and to execute only the required changes in the models. More experience is needed to judge if this approach provides satisfactory performance results. QVT specification does not address data translation problems. Historically, the language is proposed as a solution to software development-related problems. The need for information capacity preservation is not analyzed. Due to the alignment of QVT to the OMG standards we may claim that from the data format point of view QVT transformations operate on XMI data. QVT is applicable in data engineering if suitable translators from and to XMI are available. We may speculate about the need for domain-specific transformation languages adapted to a specific problem. From that point of view OMG proposes QVT as a general purpose transformation language similar to the role that XSLT plays in the XML domain. Some of the scenarios described in section 2 may require a specialized and eventually less expressive transformation language. 5 QVT Tools Current tool support for the QVT languages is in its infancy. This is due to several reasons. First, the specification is not officially finalized and still unstable. Second, providing a mature tool requires time and efforts. Most tools do not support all the features of the languages. Once a tool is made available, the feedback from the user community is crucial. Practically all the current tools are dealing with bug fixes and State of the Art of QVT: A Model Transformation Language Standard 391 are gaining experience from real life usage. Regardless the stability of the language specification many pragmatics issues are involved ranging from syntax-highlighting and visual syntax editors to the availability of comfortable debug facilities. All these make the current description of the tool support valid for a limited period of time. In this section we report on the tools available at the time of the writing of this paper. Table 2 summarizes the currently available QVT tools. It is followed by more information on every tool. Table 2. Tool support per QVT language QVT Tools per Language Core Relations Operational Mappings • A commercial add-on to OptimalJ • IKV++ medini QVT • Tata Consultancy ModelMorf • MOMENT-QVT • Eclipse M2M Relations2ATLVM • Borland Together Architect 2006 • SmartQVT • Eclipse M2M OM2ATLVM Core Language The Core language is supported by an add-on to the commercial tool OptimalJ provided by Compuware. However, OptimalJ is now in maintenance phase and its future development is questionable. It is expected that an open source implementation of a Core engine may be provided. Relations Language Relations currently enjoys the largest tool support. The medini QVT [5] developed by IKV++ is an Eclipse based interpreter with syntax highlighting editor, code completion, and debugging facilities. It is available as a part of a commercial suite and as a free downloadable distribution for non-commercial purposes. One of the original contributors to QVT that proposed the Relations language is Tata Consultancy. They provide a Java-based engine known as ModelMorf [9]. Currently ModelMorf is a command line tool. The web site indicates the plan to provide a commercial tool for Relations that implements both textual and visual syntax. MOMENT-QVT [10] is an MDE project that is based on the term rewriting formalism MAUDE. It plans to provide implementation of OCL and QVT Relations. Operational Mappings Language Borland provides both an interpreter and a compiler to Java for one of the earlier QVT OM specifications. It is a part of Borland Together Architect 2006 for Eclipse. 15 days trial is available for download. SmartQVT [18] is an open source Eclipse-based compiler for QVT Operational Mappings provided by France Telecom, the original initiator of QVT OM. 392 I. Kurtev Both Together Architect and SmartQVT provide a front-end for Operational Mappings that can be used to parse transformation programs and obtain a model conforming to the QVT abstract syntax. Eclipse M2M Project M2M [4] is an open source project under Eclipse that aims at providing implementations for QVT and ATL [6]. M2M consists of three components: Procedural QVT (Operational Mappings), Declarative QVT (Relations and Core), and ATL. The committers in this project are: INRIA, Borland, and Compuware. The ATL Virtual Machine is adopted as a basic infrastructure for the project. Compilers from QVT OM and Relations to ATL VM code are under development. This effort is led by Obeo under the umbrella of the ATL industrialization project [1]. 6 Conclusions In this paper we presented QVT – the OMG standard language for model transformations in MDA. QVT is closely integrated with the existing suite of OMG standards, most notably with MOF 2.0 and OCL 2.0. We believe that the standardization of QVT is a step in the right direction. A software standard has a high chance to attract the attention of a larger user community. This should open the possibility to gain experience with the model transformation technology in real life industrial projects. There are also risks, however. A standard lacking formal ground (as the current QVT specification), not supported by tools with industrial quality may compromise the whole idea behind model transformations. This should encourage the communities working on various transformation technologies to stress the importance of transformation problems in current software engineering practices and to promote alternatives to QVT. References 1. ATL Pro web site, http://www.atl-pro.com/ 2. Atzeni, P., Cappellari, P., Bernstein, P.A.: Model-Independent Schema and Data Translation. In: Ioannidis, Y., Scholl, M.H., Schmidt, J.W., Matthes, F., Hatzopoulos, M., Böhm, K., Kemper, A., Grust, T., Böhm, C. (eds.) EDBT 2006. LNCS, vol. 3896, pp. 368–385. Springer, Heidelberg (2006) 3. Bézivin, J., Bouzitouna, S., Del Fabro, M.D., Gervais, M., Jouault, F., Kolovos, D., Kurtev, I., Paige, R.: A Canonical Scheme for Model Composition. In: Rensink, A., Warmer, J. (eds.) ECMDA-FA 2006. LNCS, vol. 4066, pp. 346–360. Springer, Heidelberg (2006) 4. Eclipse M2M Project, http://www.eclipse.org/m2m/ 5. Medini QVT, http://www.ikv.de 6. Jouault, F., Kurtev, I.: Transforming Models with ATL. In: Bruel, J.-M. (ed.) MoDELS 2005. LNCS, vol. 3844, pp. 128–138. Springer, Heidelberg (2006) 7. Miller, R., Ioannidis, Y., Ramakrishnan, R.: The Use of Information Capacity in Schema Integration and Translation. In: Agrawal, R., Baker, S. (eds.) VLDB 1993, pp. 120–133. Morgan Kaufmann, San Francisco (2003) State of the Art of QVT: A Model Transformation Language Standard 393 8. Miller, R., Ioannidis, Y., Ramakrishnan, R.: Schema equivalence in heterogeneous systems: bridging theory and practice. Inf. Syst. 19(1), 3–31 (1994) 9. ModelMorf: A model transformer, http://www.tcs-trddc.com/ModelMorf/ 10. MOMENT Project, http://moment.dsic.upv.es/ 11. OMG/XMI XML Model Interchange (XMI) OMG document ad/98-10-05 (1998) 12. OMG. OMG Unified Modeling Language Specification v. 1.4. OMG document (2001) 13. OMG. MOF 2.0 Query/Views/Transformations RFP. OMG document ad/2002-04-10 (2002) 14. OMG. Meta Object Facility (MOF) Specification. OMG document formal/02-04-03 (2002) 15. OMG. MDA Guide version 1.0.1. OMG document omg/2003-06-01 (2003) 16. OMG. Object Constraint Language (OCL), OMG document ptc/03-10-14 (2003) 17. OMG. MOF QVT Final Adopted Specification. OMG document ptc/05-11-01 (2005) 18. SmartQVT Project, http://smartqvt.elibel.tm.fr/