<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Miscellaneous-B &#187; tefkat</title>
	<atom:link href="http://lawley.id.au/blog/category/tefkat/feed/" rel="self" type="application/rss+xml" />
	<link>http://lawley.id.au/blog</link>
	<description>Whatever was I thinking...</description>
	<lastBuildDate>Fri, 07 Nov 2008 05:44:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<image><title>Miscellaneous-B</title><link>http://lawley.id.au/blog</link><url>http://www.lawley.id.au/images/headshot.jpg</url></image>		<item>
		<title>Micro-modelling</title>
		<link>http://lawley.id.au/blog/2008/06/14/micro-modelling/</link>
		<comments>http://lawley.id.au/blog/2008/06/14/micro-modelling/#comments</comments>
		<pubDate>Sat, 14 Jun 2008 01:15:56 +0000</pubDate>
		<dc:creator>lawley</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[tefkat]]></category>

		<guid isPermaLink="false">http://lawley.id.au/blog/?p=230</guid>
		<description><![CDATA[It occurs to me that just as there is value in micro-formats (structured data embedded in HTML using existing HTML syntax and well-known conventions), there is also value in micro-models: models embedded in code (e.g., Java) using existing Java syntax (e.g., annotations).
The key advantages are model and code are in a single place and are [...]]]></description>
			<content:encoded><![CDATA[<p>It occurs to me that just as there is value in micro-formats (structured data embedded in HTML using existing HTML syntax and well-known conventions), there is also value in <em>micro-models</em>: models embedded in code (e.g., Java) using existing Java syntax (e.g., annotations).</p>
<p>The key advantages are model and code are in a single place and are therefore maintained simultaneously (avoiding <a href="http://en.wikipedia.org/wiki/Round-trip_engineering">RTE</a> problems keeping code and model synchronised), a single familiar syntax, and works with existing coding tools.</p>
<p>Of course, for large/complex models this is likely to start to break down.</p>
<p>An existing (although somewhat trivial) example of this can be seen in the @model etc javadoc annotations used by <a href="http://eclipse.org/emf/">EMF</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lawley.id.au/blog/2008/06/14/micro-modelling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>David Hearnden submits!</title>
		<link>http://lawley.id.au/blog/2007/10/18/david-hearnden-submits/</link>
		<comments>http://lawley.id.au/blog/2007/10/18/david-hearnden-submits/#comments</comments>
		<pubDate>Thu, 18 Oct 2007 06:34:50 +0000</pubDate>
		<dc:creator>lawley</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[tefkat]]></category>

		<guid isPermaLink="false">http://www.lawley.id.au/blog/2007/10/18/david-hearnden-submits/</guid>
		<description><![CDATA[541 * w00t: I&#8217;ve just heard that David Hearnden has submitted his thesis &#8220;Deltaware: Incremental Change Propagation for Automating Software Evolution in the Model-Driven Architecture&#8221; which, amongst many other things, contains a formal semantics for the model transformation language implemented by Tefkat (in an appendix).
]]></description>
			<content:encoded><![CDATA[<p><span style="font-size:large;">541 * w00t:</span> I&#8217;ve just heard that <a href="http://www.itee.uq.edu.au/~hearnden/">David Hearnden</a> has submitted his <a href="http://www.itee.uq.edu.au/~hearnden/deltaware.pdf">thesis</a> <em>&#8220;Deltaware: Incremental Change Propagation for Automating Software Evolution in the Model-Driven Architecture&#8221;</em> which, amongst many other things, contains a formal semantics for the model transformation language implemented by <a href="http://tefkat.net">Tefkat</a> (in an appendix).</p>
]]></content:encoded>
			<wfw:commentRss>http://lawley.id.au/blog/2007/10/18/david-hearnden-submits/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Re: Bloody EMF</title>
		<link>http://lawley.id.au/blog/2006/12/12/rel-bloody-emf/</link>
		<comments>http://lawley.id.au/blog/2006/12/12/rel-bloody-emf/#comments</comments>
		<pubDate>Tue, 12 Dec 2006 05:53:46 +0000</pubDate>
		<dc:creator>lawley</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[tefkat]]></category>

		<guid isPermaLink="false">http://www.lawley.id.au/blog/2006/12/12/rel-bloody-emf/</guid>
		<description><![CDATA[David Hearnden is having trouble with EMF and damn-it if I&#8217;m not having exactly the same problem and debugging experience.  Debugging this stuff is like trying to debug interpreted code by single-stepping through the interpreter!
[update: It seems that the problem is not with the serialisation, but that the Resource "contains" the objects twice.  [...]]]></description>
			<content:encoded><![CDATA[<p>David Hearnden is <a href="http://www.bloglines.com/blog/DavidHearnden?id=22">having trouble</a> with EMF and damn-it if I&#8217;m not having exactly the same problem and debugging experience.  Debugging this stuff is like trying to debug interpreted code by single-stepping through the interpreter!</p>
<p><em>[update: It seems that the problem is not with the serialisation, but that the Resource "contains" the objects twice.  How does this happen?  First the objects are added to the Resource with <code>getContents().add(objectx)</code>, then later something like <code>object1.setParent(object2)</code> is called where parent is a containment relationship.  Thus, the resource "directly" contains object1 and object2 but also transitively contains object1 via the containment from object2.</em></p>
<p><em>The real question is "why?".  In earlier versions of Tefkat this did not happen.  When the transitive containment was established the direct containment was removed (<b>I think</b> -- it could be that the serialisation was smart and ignored the duplicates).  Either way, this is something that's crept into EMF in one of the more recent releases (2.2.0 or 2.2.1 maybe?).  So far, no joy on tracking down the real root of the regression.]</em></p>
]]></content:encoded>
			<wfw:commentRss>http://lawley.id.au/blog/2006/12/12/rel-bloody-emf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On Tefkat, object identity, and F-Logic</title>
		<link>http://lawley.id.au/blog/2006/05/17/on-tefkat-object-identity-and-f-logic/</link>
		<comments>http://lawley.id.au/blog/2006/05/17/on-tefkat-object-identity-and-f-logic/#comments</comments>
		<pubDate>Wed, 17 May 2006 12:37:02 +0000</pubDate>
		<dc:creator>lawley</dc:creator>
				<category><![CDATA[tefkat]]></category>

		<guid isPermaLink="false">http://www.lawley.id.au/blog/2006/05/17/on-tefkat-object-identity-and-f-logic/</guid>
		<description><![CDATA[This afternoon Kerry and I spent some time looking at a particular aspect of Tefkat that was troubling us.  We had a couple of rules of the following form:

RULE one(f, b)
  FORALL Foo f
  MAKE DYNAMIC Bar b        // implicitly FROM one(f)
;

RULE two(f, b) EXTENDS [...]]]></description>
			<content:encoded><![CDATA[<p>This afternoon <a href="http://twinparrots.blogspot.com/">Kerry</a> and I spent some time looking at a particular aspect of Tefkat that was troubling us.  We had a couple of rules of the following form:<br />
<code><br />
RULE one(f, b)<br />
  FORALL Foo f<br />
  MAKE DYNAMIC Bar b        // implicitly FROM one(f)<br />
;<br />
</code><code><br />
RULE two(f, b) EXTENDS one(f, b)<br />
  WHERE f.attr = 0<br />
  MAKE DYNAMIC Baz b        // implicitly FROM two(f)<br />
;<br />
</code><br />
the idea being that for each of a subset of the instances of Foo, one should create an instance of Baz instead of an instance of Bar (this requires that Baz is a subtype of Bar).</p>
<p>To cut a long story short, the problem we were running in to is that there are different function symbols in the implicit FROM clauses of each of the rules, thus leading to the situation where separate Bar and Baz instances were being created and then asserted as being the same object.</p>
<p>My first instinct was to say, &#8220;<em>oh, we&#8217;ve found an implementation bug, let&#8217;s fix it</em>&#8220;. I was thinking that while the Tefkat FROM clauses must behave as <a href="http://en.wikipedia.org/wiki/Injective_function">injections</a>, that there were actually effectively multiple functions involved and thus it was okay for <code>one(f) = two(f)</code>. Unfortunately, it&#8217;s not that simple; in summary, my original Tefkat implementation was correctly implementing an injective function of the form <code>I(&lt;func>, &lt;args>)</code> and thus ensuring <code>I(one, f) != I(two, f)</code>.</p>
<p>In summary, the fragment <code>MAKE Foo f FROM p(1), Foo f FROM q(1)</code> will always fail (consider the semantically equivalent fragment <code>MAKE Foo f FROM p(1), Foo g FROM q(1) SET f = g</code>).</p>
<p>So, what&#8217;s the <a href="http://en.wikipedia.org/wiki/FLogic">F-Logic</a> reference in the title about?  Well, F-Logic allows the definition of one&#8217;s own <em>equality theory</em>, Tefkat is based on a (very) restricted subset of F-Logic, and the FROM &#8220;functions&#8221; in Tefkat behave as F-Logic <em>OIDs</em>. That is, they act as logical object identifiers, and an F-Logic equality theory allows you to say that two (or more) logical object identifiers refer to the same object.</p>
<p>What does all this mean?  Well, it means that there is a formal basis we can use to allow for multiple injective functions, but there is a cost. The cost is that any test for object equality (or inequality) must take into account any specific equality theory defined by the transformation rules. Fortunately, such an equality theory can only apply to objects created by the transformation which limits the impact somewhat, but even so I&#8217;m not yet sure that the cost of the resulting inter-rule dependencies is not too high. It&#8217;s not even clear, from a language usability-design perspective, if there is much of a gain in allowing <code>MAKE Foo f FROM p(1), Foo f FROM q(1)</code>.</p>
<p>I think the path to understanding and answering this last question may be had from an analysis of the underlying relationship between Tefkat&#8217;s transformation rules and the mathematics of mapping relations between models along the lines of Akehurst, Kent, and Patrascoiu&#8217;s <em>&#8220;<a href="http://dx.doi.org/10.1007/s10270-003-0032-z">A relational approach to defining and implementing transformations between metamodels</a>&#8220;</em> (actually, I&#8217;m yet to read this paper, but I think it should be relevant based on David Akehurt&#8217;s other publications on the topic).</p>
]]></content:encoded>
			<wfw:commentRss>http://lawley.id.au/blog/2006/05/17/on-tefkat-object-identity-and-f-logic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>subversion hiccup</title>
		<link>http://lawley.id.au/blog/2006/05/11/subversion-hiccup/</link>
		<comments>http://lawley.id.au/blog/2006/05/11/subversion-hiccup/#comments</comments>
		<pubDate>Thu, 11 May 2006 05:43:22 +0000</pubDate>
		<dc:creator>lawley</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[tefkat]]></category>

		<guid isPermaLink="false">http://www.lawley.id.au/blog/2006/05/11/subversion-hiccup/</guid>
		<description><![CDATA[I&#8217;ve just committed a bunch of changes to Tefkat without a log message!  I&#8217;m really annoyed about that partly because I spent a good deal of time determining exactly what all the changes did, and partly because now that I&#8217;ve made this mistake (I swear that Eclipse never prompted me for the message) I [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just committed a bunch of changes to <a href="http://tefkat.sourceforge.net/">Tefkat</a> without a log message!  I&#8217;m really annoyed about that partly because I spent a good deal of time determining exactly what all the changes did, and partly because now that I&#8217;ve made this mistake (I swear that Eclipse never prompted me for the message) I cannot find any way to post-facto add the message.</p>
<p>damn</p>
<p>For the record, the changes were as follows:</p>
<ul>
<li>Added support for arbitrary XML documents as model instances, as well as using XSD (XML Schema) documents as (meta)models</li>
<li>TrackingUse (LINKS/LINKING) now refers to the tracking class by name rather than by a reference to the EClass (this allows dynamically generated ECore models such as occurs when using XML Schema</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://lawley.id.au/blog/2006/05/11/subversion-hiccup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Associations as first-class citizens in OO languages</title>
		<link>http://lawley.id.au/blog/2006/03/19/associations-as-first-class-citizens-in-oo-languages/</link>
		<comments>http://lawley.id.au/blog/2006/03/19/associations-as-first-class-citizens-in-oo-languages/#comments</comments>
		<pubDate>Sat, 18 Mar 2006 14:31:36 +0000</pubDate>
		<dc:creator>lawley</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[tefkat]]></category>

		<guid isPermaLink="false">http://www.lawley.id.au/blog/2006/03/19/associations-as-first-class-citizens-in-oo-languages/</guid>
		<description><![CDATA[The other day I was wondering about why we even need things like MOF/EMF (ignoring the cross-language story).  That is, why don&#8217;t modern OO languages include associations (and their containment/multiplicity constraints) as first-class concepts.
Today I browsed over to this article by Dave Thomas (of smalltalk fame), a sometime DSTC visitor, and found this sentence:
Closely [...]]]></description>
			<content:encoded><![CDATA[<p>The other day I was wondering about why we even need things like MOF/EMF (ignoring the cross-language story).  That is, why don&#8217;t modern OO languages include associations (and their containment/multiplicity constraints) as first-class concepts.</p>
<p>Today I browsed over to this <a href="http://www.jot.fm/issues/issue_2006_03/column1">article</a> by Dave Thomas (of smalltalk fame), a sometime DSTC visitor, and found this sentence:</p>
<blockquote><p>Closely related to this is the interesting work on making relationships found in ER and UML models first class types in a programming language [2].</p>
<p>[2] Gavin Bierman, Alisdair Wren, First-Class relationships in an object-oriented language, ECOOP 2005, <a href="http://www.cl.cam.ac.uk/%7Eaw345/talks/ecoop05.pdf">http://www.cl.cam.ac.uk/~aw345/talks/ecoop05.pdf</a>
</p></blockquote>
<p>The link goes to the slides, and I haven&#8217;t spent time on the details, but I&#8217;m glad other people are thinking about this too.</p>
]]></content:encoded>
			<wfw:commentRss>http://lawley.id.au/blog/2006/03/19/associations-as-first-class-citizens-in-oo-languages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tefkat lives again</title>
		<link>http://lawley.id.au/blog/2006/03/05/tefkat-lives-again/</link>
		<comments>http://lawley.id.au/blog/2006/03/05/tefkat-lives-again/#comments</comments>
		<pubDate>Sun, 05 Mar 2006 12:59:52 +0000</pubDate>
		<dc:creator>lawley</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[tefkat]]></category>

		<guid isPermaLink="false">http://www.lawley.id.au/blog/2006/03/05/tefkat-lives-again/</guid>
		<description><![CDATA[No builds available yet, but you can grab the code (LGPLed) from subversion if you&#8217;re really keen:
svn co https://svn.sourceforge.net/svnroot/tefkat/trunk tefkat
Note that I expect there will be a complete package rename (to replace the vestigal com.dstc) before the first release.
]]></description>
			<content:encoded><![CDATA[<p>No builds available yet, but you can grab the code (LGPLed) from subversion if you&#8217;re really keen:</p>
<p>svn co https://svn.sourceforge.net/svnroot/tefkat/trunk tefkat</p>
<p>Note that I expect there will be a complete package rename (to replace the vestigal com.dstc) before the first release.</p>
]]></content:encoded>
			<wfw:commentRss>http://lawley.id.au/blog/2006/03/05/tefkat-lives-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Response to feedback on Tefkat</title>
		<link>http://lawley.id.au/blog/2006/02/28/response-to-feedback-on-tefkat/</link>
		<comments>http://lawley.id.au/blog/2006/02/28/response-to-feedback-on-tefkat/#comments</comments>
		<pubDate>Tue, 28 Feb 2006 05:06:30 +0000</pubDate>
		<dc:creator>lawley</dc:creator>
				<category><![CDATA[tefkat]]></category>

		<guid isPermaLink="false">http://www.lawley.id.au/blog/2006/02/28/response-to-feedback-on-tefkat/</guid>
		<description><![CDATA[Here are some quick responses to this paper:

Not accessible via ant, can not be composed into larger transformation chains.
An Ant Task is in the works, but Tefkat can be called from the command line so it is invokable from Ant and Make. To be fair, this is not documented and the current distribution is in [...]]]></description>
			<content:encoded><![CDATA[<p>Here are some quick responses to this <a href="http://www.osera.modeldriven.org/documents/AssessQVT.doc">paper</a>:</p>
<ul>
<li><em>Not accessible via ant, can not be composed into larger transformation chains.</em><br />
An Ant Task is in the works, but Tefkat can be called from the command line so it is invokable from Ant and Make. To be fair, this is not documented and the current distribution is in the form of an Eclipse plugin rather than a standalone application so it&#8217;s not readily apparent.
</li>
<li><em>Can not reuse transformation fragments (e.g., no include/import capability)</em><br />
This is a known problem and one I hope to address as soon as I have the time.
</li>
<li><em>Requires fixed,static set of sources and targets, which are identified in a configuration model.Â  In practice, provisioning requires an arbitrary and dynamically determined set of sources and targets.</em><br />
Not quite.  You can use a configuration model instance and this was the only way to invoke Tefkat in the early releases, but you can also specify source/target models and other parameters via an Eclipse launch configuration.  See next item&#8230;
</li>
<li><em>Requires explicit tagging of each project with a tefkat nature, plus manual creation and maintenance of a configuration model.</em><br />
This is one way to do it, but not the only way.  You can invoke transformations from the Run&#8230; and Debug&#8230; menu items and specify the sources and targets there.  This means that you can select from any of a number of (named) different configuration options as with any Eclipse launch item.  It also means you can drop into the source-level debugger and step through your transformation rules.
</li>
<li><em>No possibility for incremental target model updates.</em><br />
I&#8217;m not sure how to interpret this comment.  I suspect it means that you always construct an entirely new target model instance on each run, rather than &#8220;just&#8221; updating an existing one.  This is a fair comment and we are working on two alternative approaches to addressing it:</p>
<ol>
<li>a merge-based approach, which will also preserve any manual changes made to the target model instance, and</li>
<li>an <em>update-mode</em> that will operate directly on an existing target model.</li>
</ol>
</li>
<li><em>No possibility for determining scope of incremental source model updates.</em><br />
Again, I&#8217;m not sure how to interpret this comment.
</li>
<li><em>No default transformations.Â  For example, a copy of an instance of a source model to an instance of a target model requires a fully elaborated transformation, element by element, containment by containment, association by association, attribute by attribute.</em><br />
It is quite simple to write such a transformation reflectively (requires approx. three rules), but this is an area that we need to address beyond supporting include/import of other transformations.
</li>
<li><em>Parameterization of transform would only be possible via an additional source model. Â Environmental state/properties are not accessible.</em><br />
This is intended to change.  Restricting the inputs of a transformation to be source model instances was a mistake.  A future Tefkat version will allow arbitrary objects/values as input.
</li>
<li><em>Use of internal EMF api reduces portability across EMF versions.Â  Â Different versions of EMF alter behavior of QVT engine.</em><br />
I&#8217;d like to know which specific API this is in reference to.  This may be due to the mechanism currently used to support narrowing a target object&#8217;s type, but if you do not need this functionality then there shouldn&#8217;t be a problem.
</li>
<li><em>Extremely poor performance. Â Â Use of multiple elements in a â€œFOR ALLâ€ may result in exponential number of WHERE evaluations across entire model.</em><br />
This was a problem for older versions of Tefkat, but it now has term-selection rules that attempt to mitigate this problem and avoid computing cross-products where navigation in WHERE clauses can be used instead.
</li>
<li><em>No recursively defined templates.</em><br />
These should be supported, but I don&#8217;t recall ever checking that recursive templates work.  Certainly this is the first time I&#8217;ve heard a complaint about it.
</li>
<li><em>Awkward mechanisms for sequencing and/or working around recursion limitations. Â Â For example, trying to determine sequence of a choreography requires temporary information sets and rescanning model to determine and process each successive node.</em><br />
Tefkat&#8217;s declarative ordering specification is very powerful but somewhat awkward to use since rules generally relate a single source object to a single target object, but to specify relative ordering you need two source objects and two target objects and references to the appropriate source and target features.</p>
<p>We hope to include a mechanism to deal with the common simple case (for all source objects in this ordered collection, create a correspondingly ordered collection of target objects).
</li>
<li><em>Target instances are generally not acceptable to other processing engines (e.g., bpel, wsdl, j2ee, etc.).Â  These require xslt transforms to get them into an acceptable state.Â  This problem is joint tefkat/emf problem.</em><br />
Tefkat was designed for MOF-to-MOF (EMF-to-EMF) transformation so this was not a primary goal.  However, to the extent that EMF supports transforming arbitrary XML documents (better if an XML Schema (XSD) is available), then so does Tefkat.  There have been some substantial transformations written to transform eHealth records (based on OpenEHR) to XForms using EMF&#8217;s XSD support.
</li>
<li><em>Very limited expression evaluation, there is only simple arithmetic operators and a string concatenation capability.</em><br />
I&#8217;m not sure what extra expressions they would like, but Tefkat does support dynamically loaded functions via an Eclipse extension point so this is a hook that allows you to plug in arbitrary code. Note that Tefkat also supports various string splitting functions using regexps etc.
</li>
<li><em>No possibility to produce non-model target artifacts such as java source, text files, etc.</em><br />
And XSLT doesn&#8217;t allow you to transform non-XML documents &#8212; Tefkat is for model-to-model transformations.  If you need model-to-text, then do a model-to-model transformation and write a pretty printer that gives you the right text.
</li>
<li><em>No mechanism to include defined â€œextensionsâ€ to models (e.g., an Â â€œanyâ€), such as the bpel extension or technology binding extensions to wsdl.</em><br />
Tefkat does have an <em>any</em> type and using reflection you can also match or create arbitrary objects.  Again, I&#8217;m not sure what the real problem is.</li>
<li><em>No extension mechanisms to work around any of the other problems.</em><br />
In fact, you can call arbitrary Java code from a Tefkat transformation, but it&#8217;s pretty hairy, undocumented, and a bit of a hack.  As part of the planned support for staged transformations I hope to fix this.
</li>
<li><em>QVT not yet adopted by OMG.</em><br />
AFAIK, it&#8217;s in the final stages, but it&#8217;s a bit of a mess since it comprises three different models with the two declarative approaches being only partly integrated and the other (imperative approach) sitting off to the side.</p>
<p>While I feel that the OMG really did/does need a QVT for their MDA to work, it really was too early to standardise on something when the requirements were not based on sufficient real-world experience.
</li>
<li><em>Not open source.</em><br />
It wasn&#8217;t, but as part of the wind-up of DSTC, Tefkat has been assigned to me on the condition that I Open Source it (which is what I always wanted).  Keep your eye on <a href="http://sf.net/projects/tefkat">http://sf.net/projects/tefkat</a>.
</li>
<li><em>Provider (DSTC) no longer in business.</em><br />
No longer a relevant issue, see above.
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://lawley.id.au/blog/2006/02/28/response-to-feedback-on-tefkat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Feedback on Tefkat</title>
		<link>http://lawley.id.au/blog/2006/02/28/feedback-on-tefkat/</link>
		<comments>http://lawley.id.au/blog/2006/02/28/feedback-on-tefkat/#comments</comments>
		<pubDate>Mon, 27 Feb 2006 22:56:42 +0000</pubDate>
		<dc:creator>lawley</dc:creator>
				<category><![CDATA[tefkat]]></category>

		<guid isPermaLink="false">http://www.lawley.id.au/blog/2006/02/28/feedback-on-tefkat/</guid>
		<description><![CDATA[Here&#8217;s some feedback on Tefkat that I found in a paper discovered via a persistent Google search for &#8220;Tefkat&#8221;.  I don&#8217;t have time to address all the issues right now, but I thought I should post them anyway.  I will note that several criticism apply to very early versions of Tefkat and are [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s some feedback on Tefkat that I found in a <a href="http://www.osera.modeldriven.org/documents/AssessQVT.doc">paper</a> discovered via a persistent Google search for &#8220;Tefkat&#8221;.  I don&#8217;t have time to address all the issues right now, but I thought I should post them anyway.  I will note that several criticism apply to very early versions of Tefkat and are no longer valid.</p>
<blockquote><p>
The following are the issues with Tefkat that could not be resolved;</p>
<ul>
<li>Not accessible via ant, can not be composed into larger transformation chains.
</li>
<li>Can not reuse transformation fragments (e.g., no include/import capability)
</li>
<li>Requires fixed,static set of sources and targets, which are identified in a configuration model.Â  In practice, provisioning requires an arbitrary and dynamically determined set of sources and targets.
</li>
<li>Requires explicit tagging of each project with a tefkat nature, plus manual creation and maintenance of a configuration model.Â  Â  </li>
<li>No possibility for incremental target model updates. </li>
<li>No possibility for determining scope of incremental source model updates. </li>
<li>No default transformations.Â  For example, a copy of an instance of a source model to an instance of a target model requires a fully elaborated transformation, element by element, containment by containment, association by association, attribute by attribute. </li>
<li>Parameterization of transform would only be possible via an additional source model. Â Environmental state/properties are not accessible. </li>
<li>Use of internal EMF api reduces portability across EMF versions.Â  Â Different versions of EMF alter behavior of QVT engine. </li>
<li>Extremely poor performance. Â Â Use of multiple elements in a â€œFOR ALLâ€ may result in exponential number of WHERE evaluations across entire model. </li>
<li>No recursively defined templates. </li>
<li>Awkward mechanisms for sequencing and/or working around recursion limitations. Â Â For example, trying to determine sequence of a choreography requires temporary information sets and rescanning model to determine and process each successive node. </li>
<li>Target instances are generally not acceptable to other processing engines (e.g., bpel, wsdl, j2ee, etc.).Â  These require xslt transforms to get them into an acceptable state.Â  This problem is joint tefkat/emf problem. </li>
<li>Very limited expression evaluation, there is only simple arithmetic operators and a string concatenation capability. </li>
<li>No possibility to produce non-model target artifacts such as java source, text files, etc. </li>
<li>No mechanism to include defined â€œextensionsâ€ to models (e.g., an Â â€œanyâ€), such as the bpel extension or technology binding extensions to wsdl. </li>
<li>No extension mechanisms to work around any of the other problems. </li>
<li>QVT not yet adopted by OMG. </li>
<li>Not open source. </li>
<li>Provider (DSTC) no longer in business. </li>
</ul>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://lawley.id.au/blog/2006/02/28/feedback-on-tefkat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
