blob: 280f3f70dd04202fe63fef4f30ce70ecd2bf655d [file] [log] [blame]
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Overview and Getting Started</title>
<link href="book.css" rel="stylesheet" type="text/css">
<meta content="DocBook XSL Stylesheets V1.75.1" name="generator">
<link rel="home" href="index.html" title="QVT Declarative Documentation">
<link rel="up" href="index.html" title="QVT Declarative Documentation">
<link rel="prev" href="index.html" title="QVT Declarative Documentation">
<link rel="next" href="HowDoesItWork.html" title="How Does It Work?">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<h1 xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0">Overview and Getting Started</h1>
<div class="chapter" title="Overview and Getting Started">
<div class="titlepage">
<div>
<div>
<h2 class="title">
<a name="OverviewandGettingStarted"></a>Overview and Getting Started</h2>
</div>
</div>
</div>
<div class="toc">
<dl>
<dt>
<span class="section"><a href="OverviewandGettingStarted.html#WhatisQVTQueryViewTransformation">What is
<em class="glossterm">QVT</em>?
</a></span>
</dt>
<dt>
<span class="section"><a href="HowDoesItWork.html">How Does It Work?</a></span>
</dt>
<dt>
<span class="section"><a href="WhoisBehindEclipseQVTd.html">Who is Behind Eclipse QVTd?</a></span>
</dt>
<dt>
<span class="section"><a href="GettingStarted.html">Getting Started</a></span>
</dt>
<dt>
<span class="section"><a href="Extensions.html">Extensions</a></span>
</dt>
</dl>
</div>
<p>For a quick demonstration of QVTc or QVTr editing and execution go to
<a class="link" href="GettingStarted.html" title="Getting Started">Getting Started</a>.
</p>
<p>A PDF version of this documentation is available at
<a class="ulink" href="http://download.eclipse.org/qvtd/doc/0.14.0/qvtd.pdf" target="_new">QVTd 0.14.0 Documentation</a>.
</p>
<div class="section" title="What is QVT?">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both">
<a name="WhatisQVTQueryViewTransformation"></a>What is
<em class="glossterm">QVT</em>?
</h2>
</div>
</div>
</div>
<p>The
<a class="ulink" href="http://www.omg.org/spec/QVT/" target="_new">Query/View/Transformation language</a> is the model transformation language specified by the
<em class="glossterm">OMG</em> (Object Management Group). Or rather it is three specified languages to which Eclipse QVTd adds five intermediate languages.
</p>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>QVTo &ndash; Operation Mappings is an imperative transformation language supported by the
<a class="ulink" href="https://projects.eclipse.org/projects/modeling.mmt.qvt-oml" target="_new">Eclipse QVTo project</a>.
</p>
</li>
</ul>
</div>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>QVTr &ndash; Relations is a rich declarative transformation language.</p>
</li>
</ul>
</div>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>QVTc &ndash; Core is a simple core declarative transformation language.</p>
</li>
</ul>
</div>
<p>QVTc and QVTr, generically referred to as QVTd, are supported the
<a class="ulink" href="https://projects.eclipse.org/projects/modeling.mmt.qvtd" target="_new">Eclipse QVTd project</a> (QVT Declarative) and documented here.
</p>
<p>
</p>
<div class="mediaobject">
<img src="images/QVThorizontalAlphabet.png"></div>
<p>
</p>
<p>The Eclipse QVTd support involves a transformation chain from QVTr via QVTc to executable form. The stages in this chain are:</p>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>QVTu &ndash; a unidirectional declarative transformation language &ndash; a simplification of QVTc.</p>
</li>
</ul>
</div>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>QVTm &ndash; a minimal declarative transformation language &ndash; a further simplification of QVTc.</p>
</li>
</ul>
</div>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>QVTp &ndash; a partitioned declarative transformation language &ndash; a further simplification of QVTc.</p>
</li>
</ul>
</div>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>QVTs &ndash; a graphical declarative transformation language suitable for schedule determination.</p>
</li>
</ul>
</div>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>QVTi &ndash; an executable imperative transformation language &ndash; a variant of QVTc.</p>
</li>
</ul>
</div>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>Java &ndash; the ultimate executable form</p>
</li>
</ul>
</div>
<p>Note that QVTu, QVTm, QVTp, QVTs and QVTi are not defined by the current OMG specification. It is possible that they may contribute to a future specification.</p>
<div class="section" title="Modeling Layers">
<div class="titlepage">
<div>
<div>
<h3 class="title">
<a name="ModelingLayers"></a>Modeling Layers</h3>
</div>
</div>
</div>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>
<span class="emphasis"><em>EMF is Modeled Structure</em></span>
</p>
</li>
</ul>
</div>
<p>The Eclipse Modeling Framework (
<em class="glossterm">EMF</em>) supports the definition of structural meta-models and the subsequent use of models conforming to these meta-models. EMF also supports generating of Java code to represent the meta-models. Additional Java code can be provided to add behavior to the structural meta-models.
</p>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>
<span class="emphasis"><em>OCL is EMF and Modeled Behavior</em></span>
</p>
</li>
</ul>
</div>
<p>
<em class="glossterm">OCL</em> provides a modeling language that allows the behavior to be embedded within the structural meta-models or provided as a complement to those meta-models. As a modeling language, OCL understands the models and so OCL code is much more compact than the equivalent Java. OCL code can be statically checked, whereas the corresponding Java code often uses reflection and so cannot be checked.
</p>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>
<span class="emphasis"><em>QVT is Modeled Model Execution</em></span>
</p>
</li>
</ul>
</div>
<p>Eclipse QVTd is an implementation of the OMG QVT 1.3 specification for use with Ecore and UML meta-models.</p>
<p>Eclipse QVTd exploits the extensibility of the Eclipse OCL Pivot model.</p>
</div>
</div>
</div>
</body>
</html>