Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [qvto-dev] QVT 1.3 Traceability proposal

Hi Christopher

QVTo is much more advanced than QVTc and QVTr in terms of its actual useability.

e.g. QVTc/r have no Transformation/Model/Status classes. So far Eclipse QVTd adds Transformation/Model.

OMG QVTc/QVTr clearly need something similar, so at some point I anticipate sharing them.

----

Similarly, at a suitable level of abstraction, the TraceXXX classes should be shared between all QVT languages. Exactly as specified in principle, but almost certainly nothing like as realized in practice.

Currently the various resolve operations have an ability to perform a variety of canned queries as demonstrated by my OCL-like equivalent. But they cannot do more. e.g examine the input parameter for a particular traced mapping invocation. Opening up the internal trace data with useable TraceRecord classes could allow users to formulate their own queries. And do 'printf' debugging.

----

A write back of trace data after a transform() completes could be done, but since extents will sometimes be cloned, particularly for parallel execution on the cloud, the write back may be hard to use. If multiple very similar executions are performed, e.g. try-10-iterations, try-11-iterations, ... the access to the write-back will need qualification with the transformation identity. Not supported by resolve() for a DataType, but viable with an arbitrary query.

But if the Status has a traceData field, the 'writeBack' is available without any writing back cost and without creating ambiguities. No extra syntax is needed, although it might be nice to be able to re-use canned resolve() capabilities; but I cannot see how to all the transformation identity to the current syntax. Ah! Maybe just an optional first Status argument.

Probably invocation of resolve(status,...) will be responsible for translating object identities backwards and forwards across clones so that the user does not know the details.

    Regards

        Ed Willink

On 13/10/2015 15:47, Christopher Gerking wrote:

Hi

 

How helpful are classes such as TraceData or TraceRecord, if they are not in the scope of the resolve operations? I vote for a write-back, that is when the execution of transform() finishes, the accessed trace gets included by the accessing trace. In this way, the nested execution becomes subject to resolve operations.

 

 

Regards

Christopher

 

Von: qvto-dev-bounces@xxxxxxxxxxx [mailto:qvto-dev-bounces@xxxxxxxxxxx] Im Auftrag von Ed Willink
Gesendet: Montag, 12. Oktober 2015 19:09
An: qvto-dev@xxxxxxxxxxx
Betreff: Re: [qvto-dev] QVT 1.3 Traceability proposal

 

Hi

On 12/10/2015 15:39, Ed Willink wrote:



“This including any mappings executed by accessed or extended transformations or libraries”.

 

I basically agree. But what does this mean for resolving from within an accessed transformation? Is the trace data from the accessing transformation available? So is there an immediate write-through? That’s dangerous, because if one transformation accesses two other transformations (which share some mapping operations), the second transformation might fall over trace records created by the first one.

 

Alternatively, an accessed transformation could start with an empty trace data. At the end of the nested execution, there would be a write-back to the trace of the accessing transformation. I consider this as the most generally compatible solution.

 

Overall, the initial trace data should depend on whether the accessed transformation reuses the model extents from the accessing transformation. But I think this would imply too many hybrid forms and twilight areas for a clean specification.

 

Maybe I don't understand accessed transformations. I thought they were a variant of extended transformations with different name visibility rules. In both cases there is just one 'TransformationCallExp' and so only one trace data. I see no actual 'TransformationCallExp'to enable one transformation to invoke another.

I just found Transformation::transform()/parallelTransform()

Clearly a parallelTransform() cannot share its trace data. So IMHO, each distinct transformation invocation is 100% independent, requiring clear rules on sharing 'mutable' out extents passed as immutable in extents.

Bug. Status should provide access to the invoked transformation's trace data... TraceData, TraceRecord should be reified as visible classes (immutable by QVTo code). ? a new issue for QVT 1.4.

    Regards

        Ed Willink



_______________________________________________
qvto-dev mailing list
qvto-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/qvto-dev


No virus found in this message.
Checked by AVG - www.avg.com
Version: 2015.0.6140 / Virus Database: 4447/10811 - Release Date: 10/13/15



Back to the top