MMT/QVT Declarative (QVTd)

From Eclipsepedia

< MMT
Revision as of 14:16, 22 November 2009 by Ed.willink.me.uk (Talk | contribs)

Jump to: navigation, search

Contents

Presentation

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

Specification

The base working document of this component is the OMG specification ptc/07-07-07 (Meta Object Facility (MOF) 2.0 Query/View/Transformation Final Adopted Specification).

The QVTR project includes a special developpement documentation to exhibits:

  • specification deviance (and explanations)
  • specification interpretation
  • specification issues

This page is a summary of specification related developpement choices. Its main purpose is to a base of discussion with the community. For any feed back on those pointsi is welcome. Please use the M2M newsgroup for the questions and the Bugzilla for issues.

Status and Roadmap

History

Date Task
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 and execution engine is being planned that will use transformations and will 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 modularised by semantic concept to aid understnading and facilitiate extension and modification.

We plan to transform QVTc to a TxVM using QVTo transformations.

Until a good TxVM (transformation vitual machine) is available we plan to use ATC available from SourceForge and developed by Open Canarias.

More specifically we recognise that any practical use of a transformation is unidirectional requiring the multidirectional flexibility of QVTr and QVTc to be simplified. We therefore define the QVTu language as the unidirectional subset of QVTc, and QVTumin as the smallest subset of QVTu that supports practical transformation programming. Similarly QVTrmin is the smallest subset of QVTr that remains useable.

Using these subset languages we plan to realise QVTc and QVTr using the following transformations

  • QVTumin to TxVM using QVTo
  • QVTu to QVTumin using QVTumin
  • QVTc to QVTu using QVTu
  • QVTrmin to QVTu using QVTu
  • QVTr to QVTrmin using QVTrmin

We hope that a good TxVM will arise as a separate project.

We anticipate that the QVTumin language will provide a suitably simple declarative language that will allow for effective application of transformation composition optimisations. These optimisations will be essential to avoid the costs of naive transformation chains. We hope other transformation languages will provide conversion to QVTumin 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.

Things to do

Task First Version Release
Editor integration Jun 2008 Jun 2008
Debugger integration Sep 2008 Jun 2009
UI Launcher Jun 2008 Jun 2009
Project nature Jun 2009 Jun 2009

Team

The QVT Declarative project is developed by E.D.Willink.

The current commiters are:

Questions and discussions about Relational QVT usage

Questions and discussions about the usage of Relational QVT should take place on the eclipse.modeling.m2m Eclipse newsgroup for the M2M project (more details about this newsgroup there), of which QVTR is a component. Please, remember to prefix the subject of your Relational QVT-related posts with [QVTR].