Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "MMT/QVT Declarative (QVTd)"

< MMT
(Currently working on)
(changed category M2M to MMT)
(10 intermediate revisions by one other user not shown)
Line 1: Line 1:
==Presentation==
+
==Overview==
  
 
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 [http://www.omg.org/technology/documents/modeling_spec_catalog.htm#MOF_QVT QVT] Relations (QVTR) language.
 
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 [http://www.omg.org/technology/documents/modeling_spec_catalog.htm#MOF_QVT 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.
 
This goal includes all development components necessary for development of QVTc and QVTr programs and APIs to facilitate extension and reuse.
  
The [[M2M/Operational QVT Language (QVTO)|QVT Operational (QVTo)]] component provides corresponding facilities for the Procedural Language.
+
The [[QVTo]] component provides corresponding facilities for the Procedural Language.
  
 
QVT Declarative currently provides:
 
QVT Declarative currently provides:
Line 22: Line 22:
 
==Specification==
 
==Specification==
  
The base working document of this component is the OMG specification ptc/07-07-07 ([http://www.omg.org/cgi-bin/doc?ptc/2007-07-07 Meta Object Facility (MOF) 2.0 Query/View/Transformation Final Adopted Specification]).
+
The base working document of this component is the OMG specification ptc/07-07-07 ([http://www.omg.org/cgi-bin/doc?ptc/2007-07-07 Meta Object Facility (MOF) 2.0 Query/View/Transformation 1.0 Final Adopted Specification]).
  
The QVTR project includes a [[QVTR_Specification_Interpretation | special developpement documentation]] to exhibits:
+
The QVTd project includes a [[QVT_Specification_Interpretation | special development documentation]] to identify:
  
 
* specification deviance (and explanations)
 
* specification deviance (and explanations)
Line 30: Line 30:
 
* specification issues
 
* specification issues
  
This page is a summary of specification related developpement choices. Its main purpose is to a base of discussion with the community.
+
This page is a summary of specification related development choices. Its main purpose is to provide a basis for discussion with the community.
For any feed back on those pointsi is welcome.
+
Any feed back is welcome.
 
Please use the M2M newsgroup for the questions and the [https://bugs.eclipse.org/bugs/enter_bug.cgi?product=M2M Bugzilla] for issues.
 
Please use the M2M newsgroup for the questions and the [https://bugs.eclipse.org/bugs/enter_bug.cgi?product=M2M Bugzilla] for issues.
  
Line 50: Line 50:
 
===Currently working on===
 
===Currently working on===
  
After an unsuccessful attempt to use ATL tooling to define a QVTr compiler and execution engine  
+
After an unsuccessful attempt to use ATL tooling to define a QVTr compiler, an execution engine  
is being planned that will use transformations and will support both QVTc and QVTr.
+
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.
 
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.
 
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
+
We therefore plan to transform QVTr to QVTc using QVTc transformations. These will be modularized
by semantic concept to aid understnading and facilitiate extension and modification.
+
by semantic concept to aid understanding and facilitate extension and modification. We similarly plan
 +
to transform QVTc to a TxVM using transformations to a series of intermediate languages.
  
We plan to transform QVTc to a TxVM using QVTo transformations.
+
More specifically, we recognize that any practical use of a transformation is unidirectional
 +
requiring the multi-directional flexibility of QVTr and QVTc to be resolved. We therefore
 +
define
 +
* QVTu language as the unidirectional subset of QVTc
 +
* QVTm as the smallest declarative subset of QVTu that supports practical transformation programming
 +
* QVTi as a still smaller syntactic subset of QVTm but with imperative semantics suitable for code synthesis.
  
Until a good TxVM (transformation vitual machine) is available we plan to use ATC available
+
Using these subset languages, we plan to realize QVTc and QVTr using the following transformation chains
from SourceForge and developed by Open Canarias.
+
  
More specifically we recognise that any practical use of a transformation is unidirectional
+
* QVTi to TxVM using QVTo
requiring the multidirectional flexibility of QVTr and QVTc to be simplified. We therefore
+
* QVTm to QVTi using QVTi
define the QVTu language as the unidirectional subset of QVTc, and QVTumin as the smallest
+
* QVTu to QVTm using QVTm
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
 
* QVTc to QVTu using QVTu
* QVTrmin to QVTu using QVTu
+
* QVTr 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 QVTm language will provide a suitably simple declarative language
 
+
that will allow for effective application of transformation composition optimizations. These
We anticipate that the QVTumin language will provide a suitably simple declarative language
+
optimizations will be essential to avoid the costs of naive transformation chains. We hope
that will allow for effective application of transformation composition optimisations. These
+
that other transformation languages will provide conversion to QVTm so that transformations
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
 
developed in a variety of languages can be composed into an efficient composite transformation
 
and then transformed for efficient execution by a good TxVM.
 
and then transformed for efficient execution by a good TxVM.
  
===Things to do===
+
More details on these languages may be found in [[M2M/QVT Declarative Languages]].
  
{| border="1" cellpadding="2"
+
Recent work on improving the efficiency of the Eclipse OCL evaluator and providing a direct OCL to Java code
!Task !! First Version !! Release
+
generator demonstrates that the OCL evaluator can be regarded as the core of a TxVM. The [[M2M/QVTO]] project already exploits
|-
+
this by extending the interpretation capability and adding a debugger. The same interpretation approach should
|Editor integration || Jun 2008 || Jun 2008
+
be possible for at least QVTi, QVTm and QVTu, perhaps for QVTc too. Extension of OCL's direct OCL to Java should
|-
+
eliminate the interpretation overheads. Realisation of transformation composition should eventually allow
|Debugger integration || Sep 2008 || Jun 2009
+
efficient provision of QVTr to QVTc to QVTu to ... and so enable acceptable performance for all languages.
|-
+
 
|UI Launcher  || Jun 2008 || Jun 2009
+
[https://bugs.eclipse.org/bugs/show_bug.cgi?id=350917 Bug 350917] discusses extending the OCL evaluator with some
|-
+
pattern matching operations to assist in supporting transformations.
|Project nature || Jun 2009 || Jun 2009
+
|}
+
  
 
==Team==
 
==Team==
Line 108: Line 101:
 
* Frédéric Jouault
 
* Frédéric Jouault
  
==Questions and discussions about Relational QVT usage==
+
==Installation==
 +
A QVTd developement environment may be set up by [[M2M/QVT Declarative Installation]].
 +
 
 +
==Questions and discussions about QVT Declarative usage==
  
Questions and discussions about the usage of Relational QVT should take place on the [news://news.eclipse.org/eclipse.modeling.m2m eclipse.modeling.m2m] [http://www.eclipse.org/newsgroups/ Eclipse newsgroup] for the [[M2M|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 <nowiki>[QVTR]</nowiki>.
+
Questions and discussions about the usage of QVT Declarative should take place on the [news://news.eclipse.org/eclipse.modeling.m2m eclipse.modeling.m2m] [http://www.eclipse.org/newsgroups/ Eclipse newsgroup] for the [[M2M|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 <nowiki>[QVTc]</nowiki>, <nowiki>[QVTr]</nowiki> or <nowiki>[QVTd]</nowiki>.
  
[[Category:Modeling]] [[Category:M2M]]
+
[[Category:Modeling]] [[Category:MMT]]

Revision as of 12:05, 5 June 2013

Overview

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 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 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

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, 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 similarly plan to transform QVTc to a TxVM using transformations to a series of intermediate languages.

More specifically, we recognize that any practical use of a transformation is unidirectional requiring the multi-directional flexibility of QVTr and QVTc to be resolved. We therefore define

  • QVTu language as the unidirectional subset of QVTc
  • QVTm as the smallest declarative subset of QVTu that supports practical transformation programming
  • 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 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.

Recent work on improving the efficiency of the Eclipse OCL evaluator and providing a direct OCL to Java code generator demonstrates that the OCL evaluator can be regarded as the core of a TxVM. The M2M/QVTO project already exploits this by extending the interpretation capability and adding a debugger. The same interpretation approach should be possible for at least QVTi, QVTm and QVTu, perhaps for QVTc too. Extension of OCL's direct OCL to Java should eliminate the interpretation overheads. Realisation of transformation composition should eventually allow efficient provision of QVTr to QVTc to QVTu to ... and so enable acceptable performance for all languages.

Bug 350917 discusses extending the OCL evaluator with some pattern matching operations to assist in supporting transformations.

Team

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

The current commiters are:

Installation

A QVTd developement environment may be set up by M2M/QVT Declarative Installation.

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].

Copyright © Eclipse Foundation, Inc. All Rights Reserved.