MMT/QVT Declarative (QVTd)
The QVT Declarative (QVTd) component aims to provide a complete Eclipse based IDE for the Core (QVTc) and Relations (QVTr) Languages defined by the OMG QVT Relations (QVTR) language. This goal includes all development components necessary for development of QVTc and QVTr programs and APIs to facilitate extension and reuse.
The QVT Operational (QVTo) component provides corresponding facilities for the Procedural Language.
QVT Declarative currently provides:
- Editors for QVTc and QVTr
- Parsers for QVTc and QVTr
- Meta-models for QVTc and QVTr
(The EMOF-based implementations of the QVT models are the source of the normative models in ptc/09-11-04 for OMG QVT 1.1.)
QVT Declarative will provide
- a dedicated perspective
- an execution environment for QVTc and QVTo
- an integrated debugger for QVTc and QVTo
The base working document of this component is the OMG specification ptc/07-07-07 (Meta Object Facility (MOF) 2.0 Query/View/Transformation 1.0 Final Adopted Specification).
The QVTd project includes a special development documentation to identify:
- specification deviance (and explanations)
- specification interpretation
- specification issues
This page is a summary of specification related development choices. Its main purpose is to provide a basis for discussion with the community. Any feed back is welcome. Please use the M2M newsgroup for the questions and the Bugzilla for issues.
Status and Roadmap
|July 2008||QVT 1.0 models, parsers and editors migrated from GTM/UMLX project|
|August 2008||Editors adapted to use IMP|
|November 2009||Models upgraded and used as basis for OMG QVT 1.1 models|
Currently working on
After an unsuccessful attempt to use ATL tooling to define a QVTr compiler, an execution engine is being planned that will use transformations and support both QVTc and QVTr.
The OMG specification provides an almost monolithic QVTr to QVTc transformation written in QVTr. This is difficult to understand, and cannot be used until a QVTr execution engine is available.
We therefore plan to transform QVTr to QVTc using QVTc transformations. These will be modularized by semantic concept to aid understanding and facilitate extension and modification.
We plan to transform QVTc to a TxVM using QVTo transformations.
Until a good TxVM (transformation virtual machine) is available, we plan to use the ATC TxVM available from SourceForge. This was developed by Open Canarias.
More specifically, we recognize that any practical use of a transformation is unidirectional requiring the multidirectional flexibility of QVTr and QVTc to be resolved. We therefore define the QVTu language as the unidirectional subset of QVTc, and QVTm as the smallest declarative subset of QVTu that supports practical transformation programming, and QVTi as a still smaller syntactic subset of QVTm but with imperative semantics suitable for code synthesis.
Using these subset languages, we plan to realize QVTc and QVTr using the following transformation chains
- QVTi to TxVM using QVTo
- QVTm to QVTi using QVTi
- QVTu to QVTm using QVTm
- QVTc to QVTu using QVTu
- QVTr to QVTu using QVTu
We hope that a good language-neutral TxVM will arise as a separate project.
We anticipate that the QVTm language will provide a suitably simple declarative language that will allow for effective application of transformation composition optimizations. These optimizations will be essential to avoid the costs of naive transformation chains. We hope that other transformation languages will provide conversion to QVTm so that transformations developed in a variety of languages can be composed into an efficient composite transformation and then transformed for efficient execution by a good TxVM.
More details on these languages may be found in [M2M/QVT Declarative Languages].
The QVT Declarative project is developed by E.D.Willink.
The current commiters are:
- Ed Willink (lead)
- Frédéric Jouault
Questions and discussions about QVT Declarative usage
Questions and discussions about the usage of QVT Declarative should take place on the eclipse.modeling.m2m Eclipse newsgroup for the M2M project (more details about this newsgroup there), of which QVTd is a component. Please, remember to prefix the subject of your QVT Declarative-related posts with [QVTc], [QVTr] or [QVTd].