SlideShare une entreprise Scribd logo
1  sur  39
Made available under EPL 1.0
QVT Traceability
What does it really mean?
Edward Willink
Willink Transformations Ltd
Eclipse Foundation
MMT Component co-Lead
OCL Project Lead
QVTd Project Lead
QVTo Committer
OMG (Model Driven Solutions)
OCL 2.3, 2.4, 2.5 RTF Chair
QVT 1.2, 1.3 RTF Chair
AMT 2015 @ MODELS 2015
28th September 2015
28-Sept-2015 QVT traceability 2Made available under EPL 1.0
Overview
Traceability
alternate meanings
vague QVT specification
Traceability details
Traceability consequences
declarative
imperative
28-Sept-2015 QVT traceability 3Made available under EPL 1.0
QVT
Query / View / Transformation
OMG specification - slow to mature
ATL took a pragmatic short cut
Three languages
QVTo (Operational Mappings) - Imperative
QVTr (Relational) - Declarative, rich
QVTc (Core) - Declarative, simple
notional common core
Eclipse QVTd
QVTr->QVTc->QVTu->QVTm->QVTp->QVTi->Java
28-Sept-2015 QVT traceability 4Made available under EPL 1.0
Background
QVT ...
Aspires to be bigger, better, specified
QVT 1.2 - resolved 95 issues
QVT 1.2 - left 29 issues deferred
'for lack of time'
need to prototype solution
need inspiration
QVT Traceability specification is a mess
discussion document
invited paper for AMT 2015
28-Sept-2015 QVT traceability 5Made available under EPL 1.0
Traceability use cases
requirements traceability
'printf' traceability
debugger traceability
internal traceability
incremental traceability
28-Sept-2015 QVT traceability 6Made available under EPL 1.0
Requirements Traceability
How does X relate to the specification?
correlate rules/mappings to specification
vague 'requirements'
not M2M traceability
28-Sept-2015 QVT traceability 7Made available under EPL 1.0
'printf' Traceability
What happened?
voluminous output
facilitate debugging
facilitate performance analysis
model rather than informal text
informal pragmatic content
28-Sept-2015 QVT traceability 8Made available under EPL 1.0
Debugger Traceability
What is happening?
source level debugging
correlated source view
stepping
inspection
breakpoints
28-Sept-2015 QVT traceability 9Made available under EPL 1.0
Internal Traceability 1
Has X been executed?
General transformation policy
do not repeat computations
Internal mechanism
hidden from users
28-Sept-2015 QVT traceability 10Made available under EPL 1.0
Not so Simple Transformation
Primary S1 to T1 rule
Secondary S1,S2 to T1,T2 rule
re-use T1 created by R1 from S1
R1S1 T1
R1S1 T1
R2S2 T2
28-Sept-2015 QVT traceability 11Made available under EPL 1.0
Internal Traceability 2
What was the result of X?
Trivial transformation
tree-structured output - can use parameters
Complex transformation
graph-structured output - too complex for parameters
Overlap resolution - internal mechanism
ATL : resolveTemp
Epsilon : equivalent
QVTo : resolve
QVTr : when
Overlap resolution - explicit mechanism
QVTc : middle model
28-Sept-2015 QVT traceability 12Made available under EPL 1.0
Incremental Traceability
What do I need to re-execute?
support incremental update
at another time
persisted state
at another place
interchangeable/loadable
28-Sept-2015 QVT traceability 14Made available under EPL 1.0
Tentative QVT specification
QVT 1.2 (aspirationally) specifies
interchangeable QVTc/QVTo/QVTr traceability
incremental re-execution
persistent traceability model
?? QVT 1.3 ??
An incremental transformation execution may exploit the
saved traceability from a previous execution.
Simple principle
corrolaries?
declarative then imperative
28-Sept-2015 QVT traceability 15Made available under EPL 1.0
What do I need to re-execute?
R1, R2 represent some computation
(expression, statement,) rule/mapping
s1,s2 represent input state/objects of type S1,S2
t1,t2 represent output state/objects of type T1,T2
If s1 or s2 changes, R2 must re-compute
R1s1 : S1 t1 : T1
R2s2 : S2 t2 : T2
28-Sept-2015 QVT traceability 16Made available under EPL 1.0
How do I know what has changed?
Original execution
Possible re-execution
Compare s1' and s1
s1 may no longer exist, must use a 'recording'
trace representation
Compare trace representation of s1
and trace representation of s1'
R1s1 : S1 t1 : T1
R1s1' : S1 t1' : T1
28-Sept-2015 QVT traceability 17Made available under EPL 1.0
What is a trace representation ? 1
all the state needed to support comparison
in practice
save old trace representations
reload old trace representations
decide whether re-execute transformation
compare old with new
some inputs may have changed e.g. time
28-Sept-2015 QVT traceability 18Made available under EPL 1.0
What is a trace representation ? 2
Immutable DataType 'instances' - values
Integer, String, Set(String), Tuple ...
not unique
many objects may have a zero-valued Integer property
require full state as trace representation
simple/small for values such Integer - 4
complex/large for e.g. Collection of Tuple of ...
?? share repeated usages from a 'pool'
4
Set{1,2,3}
ref
4
ref
28-Sept-2015 QVT traceability 19Made available under EPL 1.0
What is a trace representation ? 3
Class instances - objects
'unique'
in memory, location/address can represent full state
full state must be persisted/reloaded
almost unique
declarative transformation
distinct reloaded / prevailing states - old time / new time
declarative in-place transformation
distinct before / after states
only one state needs to be saved
28-Sept-2015 QVT traceability 20Made available under EPL 1.0
Has X been executed?
What is executed?
a computation R1
one or more inputs, e.g. s1 conforming to S1
one or more outputs, e.g. t1 conforming to T1
The trace record: {{R1, {s1}}, {t1}}
The trace identity: {R1, {s1}}
computation identity: R1
input trace representations: s1
output trace representations: t1
R1s1 : S1 t1 : T1
28-Sept-2015 QVT traceability 21Made available under EPL 1.0
What was the result of X?
Trace Data = all Trace Records
Trace Records: {{R1, {s1}}, {t1}}, {{R2, {s1,s2}}, {t1,t2}}
Trace Identities: {R1, {s1}} , {R2, {s1,s2}}
Has (trace identity) X been executed?
does trace data contain a trace record for X?
What was the result of (trace identity) X?
extract outputs from trace record for the X
R1s1 : S1 t1 : T1
R2s2 : S2 t2 : T2
28-Sept-2015 QVT traceability 22Made available under EPL 1.0
(Mapping/Rule) Refinement
OO supports operation overloading
invariant / contra-variant arguments
covariant results
'simple' dynamic dispatch of type match
M2M permits mapping/rule refinement
mappings have predicates
non-execution is permissible
predicate arbitration amongst candidates
refined mappings may have covariant inputs
refined mappings may have additional/redundant inputs
multi-refinement is feasible
28-Sept-2015 QVT traceability 23Made available under EPL 1.0
Independent Mappings and
Refinements
Independent mappings
each matching mapping is executed
{{R1, {s1}}, t1a} and {{R2, {s1}}, t1b}
R1s1 : S1 t1a : T1
R2s1 : S1 t1b : T1
28-Sept-2015 QVT traceability 24Made available under EPL 1.0
Dependent Mappings and
Refinements
Dependent mappings
refinements, inheritances, (disjuncts in QVTo)
each refines one or more base mappings
best match for each base mapping executed once
multi-refinements execution may be 'shared'
{{R1, {s1}}, t1} or {{R2, {s2}}, t2}
R1s1 : S1 t1 : T1
R2s2 : S2 t2 : T2
28-Sept-2015 QVT traceability 25Made available under EPL 1.0
Refinement Tracing 1
what do we need to re-execute?
re-assess predicates wrt the base
trace record must have {R1,{s1}} as trace identity
re-assess change wrt previous execution
trace record must have {R2,{s1,s2}} as trace identity
R1s1 : S1 T1
R2
s1 : S1
T2
s2 : S2
28-Sept-2015 QVT traceability 26Made available under EPL 1.0
Refinement Tracing 2
what is the result of R1?
user may not know about R2
trace record must have {R1,{s1}} as trace identity
what is happening ?
referenced trace identity must be actual refinement
trace record must have {R2,{s1,s2}} as trace identity
R1s1 : S1 T1
R2
s1 : S1
T2
s2 : S2
28-Sept-2015 QVT traceability 27Made available under EPL 1.0
Refinement Tracing 3
One trace identity is not enough
need apparent/base trace identity
need actual trace identity
Better trace record
One or more trace identities
computation identity
input trace representations
output trace representations
Multi-refinement
one or more apparent/base trace identities
one actual trace identity
28-Sept-2015 QVT traceability 30Made available under EPL 1.0
Imperative, QVTo
Objects are mutable
List / Dict are mutable Sequence / Map
Mapping parameters may be inout
Global / transformation context is mutable
Trace representation is not stable
28-Sept-2015 QVT traceability 31Made available under EPL 1.0
Dict example 1
1) Declare a global source-to-target Dict
2) Populate it many times in many places
3) Use it many times in many places
1
2
3
28-Sept-2015 QVT traceability 32Made available under EPL 1.0
Dict example 2
Surely that's what "resolve" does?
Yes, but:
"resolve" is built-in, invisible, undebuggable
underspecified, poorly worded
suspect implementation (Eclipse QVTo has improved)
complex problem leads to distrust
Dict is mine, visible, debuggable
Dict is a traceability nightmare
global variable
multiple write sites, multiple read sites
correct usage is disciplined, usage to be debugged is not
28-Sept-2015 QVT traceability 33Made available under EPL 1.0
What is a trace representation ? 4
Mutable DataType 'instances' - values
imperative transformations only
in QVTo List(String), Dict(String, Set(Real))
not unique, not stable
imperative transformation may make many changes
require full prevailing state as trace representation
naive - use per-usage deep clones
better - share a deep clone of each distinct state
more compact - share similar deep clones
use a differential description of similar states
ref2 Set{1,2,3}
ref1
Set{1,2,4} s/3/4
28-Sept-2015 QVT traceability 34Made available under EPL 1.0
What is a trace representation ? 5
Class instances - objects
not unique for imperative transformation
numerous intermediate states
re-execution must use the corresponding state
multiple states can not co-exist in memory
28-Sept-2015 QVT traceability 35Made available under EPL 1.0
What is a trace representation ? 6
UML / MOF / Ecore single containment
old state can use a coherent set of objects
new / another state can use another coherent set
cannot share contained/container objects
completely independent objects for new / old / ...
co-ordinating equivalence map
differential representation for similar objects
s1 (old)
s2 (old, new)
s1' (new)
s2 (old, new)
s1 (old)
s2 (old, new)
s1' (new)
BAD
28-Sept-2015 QVT traceability 38Made available under EPL 1.0
Mutable Traceability 1
Objects are mutable
execute R1 for s1
modify object s1 to s1'
execute R2 for {s1',s2}
does {{R1,{s1}},t1} provide t1 for R2?
Yes. Otherwise unuseable. Need Object-to-Object.
R1s1' : S1 t1 : T1
R2s2 : S2 t2 : T2
R1s1 : S1 t1 : T1
28-Sept-2015 QVT traceability 39Made available under EPL 1.0
Mutable Traceability 2
DataTypes (List, Dict) are mutable
execute R2 for {s1,s2}
modify DataType s2
execute R2 for {s1,s2'}
does {R2,{s1,s2}} re-use {R2,{s1,s2'}} ?
No. Need multiple Object-to-Object.
R1s1 : S1 t1 : T1
R2s2 : S2 t2 : T2
R1s1 : S1 t1 : T1
R2s2' : S2 t2 : T2
28-Sept-2015 QVT traceability 40Made available under EPL 1.0
Mutable Traceability 3
Class instances can be changed
{{R1,{s1}},t1} is also {{R1,{s1'}},t1}
order dependent
{{R1,{s1'}},t1'} is also {{R1,{s1}},t1'}
DataType values cannot be changed
{{R2,{s1,s2}},{t1,t2}} is not {{R2,{s1,s2'}},{t1,t2'}}
Asymmetric mess
28-Sept-2015 QVT traceability 41Made available under EPL 1.0
Traceability specification conclusion
An incremental transformation execution may exploit the
saved traceability from a previous execution.
Declarative - QVTc, QVTr
practical, minor clarification of refinement tracing
Imperative - QVTo
impractical for arbitrary transformations
too much state to clone, differential state too hard
practical for well-behaved transformations
candidates for auto-conversion to QVTr
28-Sept-2015 QVT traceability 45Made available under EPL 1.0
Trace Metamodel 1
There is a shared Trace Metamodel
QVT has distinct views
per-mapping classes for QVTc (and QVTr)
simple object re-use by reference
per-semantic classes for QVTo
pragmatic
object re-use
'rigorous'
multi-state objects / values
28-Sept-2015 QVT traceability 46Made available under EPL 1.0
Trace Metamodel 2
Share between M2M tools
Can Mapping / Transformation be shared?
28-Sept-2015 QVT traceability 47Made available under EPL 1.0
Conclusion
Various traceability use cases
incremental traceability most stringent
QVT underspecified
Declarative tracing
relatively straightforward
Imperative tracing
too hard to fix
heavy cloning cost unless relative objects used

Contenu connexe

Tendances

Java.util.concurrent.concurrent hashmap
Java.util.concurrent.concurrent hashmapJava.util.concurrent.concurrent hashmap
Java.util.concurrent.concurrent hashmapSrinivasan Raghvan
 
Flink Forward Berlin 2018: Thomas Weise & Aljoscha Krettek - "Python Streamin...
Flink Forward Berlin 2018: Thomas Weise & Aljoscha Krettek - "Python Streamin...Flink Forward Berlin 2018: Thomas Weise & Aljoscha Krettek - "Python Streamin...
Flink Forward Berlin 2018: Thomas Weise & Aljoscha Krettek - "Python Streamin...Flink Forward
 
Reactive cocoa 101改
Reactive cocoa 101改Reactive cocoa 101改
Reactive cocoa 101改Jeff Lee
 
Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...
Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...
Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...Flink Forward
 
Cling the llvm based interpreter
Cling the llvm based interpreterCling the llvm based interpreter
Cling the llvm based interpreterRoberto Nogueira
 
[PyCon 2014 APAC] How to integrate python into a scala stack to build realtim...
[PyCon 2014 APAC] How to integrate python into a scala stack to build realtim...[PyCon 2014 APAC] How to integrate python into a scala stack to build realtim...
[PyCon 2014 APAC] How to integrate python into a scala stack to build realtim...Jerry Chou
 
ScilabTEC 2015 - Silkan
ScilabTEC 2015 - SilkanScilabTEC 2015 - Silkan
ScilabTEC 2015 - SilkanScilab
 
Testing Spark and Scala
Testing Spark and ScalaTesting Spark and Scala
Testing Spark and Scaladatamantra
 
What is to loop in c++
What is to loop in c++What is to loop in c++
What is to loop in c++03446940736
 
Designing a machine learning algorithm for Apache Spark
Designing a machine learning algorithm for Apache SparkDesigning a machine learning algorithm for Apache Spark
Designing a machine learning algorithm for Apache SparkMarco Gaido
 
Storage classes in c language
Storage classes in c languageStorage classes in c language
Storage classes in c languagetanmaymodi4
 
Jfokus functional groovy
Jfokus functional groovyJfokus functional groovy
Jfokus functional groovyAndres Almiray
 
Debugging and Profiling C++ Template Metaprograms
Debugging and Profiling C++ Template MetaprogramsDebugging and Profiling C++ Template Metaprograms
Debugging and Profiling C++ Template MetaprogramsPlatonov Sergey
 
On The Evolution of CAEX: A Language Engineering Perspective
On The Evolution of CAEX: A Language Engineering PerspectiveOn The Evolution of CAEX: A Language Engineering Perspective
On The Evolution of CAEX: A Language Engineering PerspectiveLuca Berardinelli
 

Tendances (20)

Java.util.concurrent.concurrent hashmap
Java.util.concurrent.concurrent hashmapJava.util.concurrent.concurrent hashmap
Java.util.concurrent.concurrent hashmap
 
Callgraph analysis
Callgraph analysisCallgraph analysis
Callgraph analysis
 
Flink Forward Berlin 2018: Thomas Weise & Aljoscha Krettek - "Python Streamin...
Flink Forward Berlin 2018: Thomas Weise & Aljoscha Krettek - "Python Streamin...Flink Forward Berlin 2018: Thomas Weise & Aljoscha Krettek - "Python Streamin...
Flink Forward Berlin 2018: Thomas Weise & Aljoscha Krettek - "Python Streamin...
 
Reactive cocoa 101改
Reactive cocoa 101改Reactive cocoa 101改
Reactive cocoa 101改
 
Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...
Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...
Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...
 
Cling the llvm based interpreter
Cling the llvm based interpreterCling the llvm based interpreter
Cling the llvm based interpreter
 
[PyCon 2014 APAC] How to integrate python into a scala stack to build realtim...
[PyCon 2014 APAC] How to integrate python into a scala stack to build realtim...[PyCon 2014 APAC] How to integrate python into a scala stack to build realtim...
[PyCon 2014 APAC] How to integrate python into a scala stack to build realtim...
 
ScilabTEC 2015 - Silkan
ScilabTEC 2015 - SilkanScilabTEC 2015 - Silkan
ScilabTEC 2015 - Silkan
 
Testing Spark and Scala
Testing Spark and ScalaTesting Spark and Scala
Testing Spark and Scala
 
Scilab
ScilabScilab
Scilab
 
What is to loop in c++
What is to loop in c++What is to loop in c++
What is to loop in c++
 
Intro to RxJS
Intro to RxJSIntro to RxJS
Intro to RxJS
 
Designing a machine learning algorithm for Apache Spark
Designing a machine learning algorithm for Apache SparkDesigning a machine learning algorithm for Apache Spark
Designing a machine learning algorithm for Apache Spark
 
Storage classes in c language
Storage classes in c languageStorage classes in c language
Storage classes in c language
 
Jfokus functional groovy
Jfokus functional groovyJfokus functional groovy
Jfokus functional groovy
 
Strel streaming
Strel streamingStrel streaming
Strel streaming
 
Logical Time
Logical TimeLogical Time
Logical Time
 
Os2
Os2Os2
Os2
 
Debugging and Profiling C++ Template Metaprograms
Debugging and Profiling C++ Template MetaprogramsDebugging and Profiling C++ Template Metaprograms
Debugging and Profiling C++ Template Metaprograms
 
On The Evolution of CAEX: A Language Engineering Perspective
On The Evolution of CAEX: A Language Engineering PerspectiveOn The Evolution of CAEX: A Language Engineering Perspective
On The Evolution of CAEX: A Language Engineering Perspective
 

En vedette

What does music mood mean for real users?
What does music mood mean for real users?What does music mood mean for real users?
What does music mood mean for real users?Jin Ha Lee
 
SysML adoption in France
SysML adoption in FranceSysML adoption in France
SysML adoption in FrancePascal Roques
 
Modeling the OCL Standard Library
Modeling the OCL Standard LibraryModeling the OCL Standard Library
Modeling the OCL Standard LibraryEdward Willink
 
Yet Another Three QVT Languages
Yet Another Three QVT LanguagesYet Another Three QVT Languages
Yet Another Three QVT LanguagesEdward Willink
 
Ressource numérique Circuit électrique au primaire
Ressource numérique Circuit électrique au primaire Ressource numérique Circuit électrique au primaire
Ressource numérique Circuit électrique au primaire Erradi Mohamed
 
Vbisigk
VbisigkVbisigk
VbisigkISIG
 
erocci - a scalable model-driven API framework, OW2con'16, Paris.
erocci - a scalable model-driven API framework, OW2con'16, Paris. erocci - a scalable model-driven API framework, OW2con'16, Paris.
erocci - a scalable model-driven API framework, OW2con'16, Paris. OCCIware
 
OCL Integration and Code Generation
OCL Integration and Code GenerationOCL Integration and Code Generation
OCL Integration and Code GenerationEdward Willink
 
01072013 e governance
01072013 e governance01072013 e governance
01072013 e governancebharati k
 
Frame latency evaluation: when simulation and analysis alone are not enough
Frame latency evaluation: when simulation and analysis alone are not enoughFrame latency evaluation: when simulation and analysis alone are not enough
Frame latency evaluation: when simulation and analysis alone are not enoughRealTime-at-Work (RTaW)
 
mis
mismis
misISIG
 
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...OCCIware
 
OCL Specification Status
OCL Specification StatusOCL Specification Status
OCL Specification StatusEdward Willink
 
Collaboration and Governance of Open Source Projects
Collaboration and Governance of Open Source ProjectsCollaboration and Governance of Open Source Projects
Collaboration and Governance of Open Source ProjectsJordi Cabot
 
النشاط العلمي - الكهرباء
النشاط العلمي  -   الكهرباءالنشاط العلمي  -   الكهرباء
النشاط العلمي - الكهرباءErradi Mohamed
 
The Importance of Opposites
The Importance of OppositesThe Importance of Opposites
The Importance of OppositesEdward Willink
 
Model Transformation A Personal Perspective
Model Transformation A Personal PerspectiveModel Transformation A Personal Perspective
Model Transformation A Personal PerspectiveEdward Willink
 

En vedette (20)

What does music mood mean for real users?
What does music mood mean for real users?What does music mood mean for real users?
What does music mood mean for real users?
 
SysML adoption in France
SysML adoption in FranceSysML adoption in France
SysML adoption in France
 
Modeling the OCL Standard Library
Modeling the OCL Standard LibraryModeling the OCL Standard Library
Modeling the OCL Standard Library
 
Yet Another Three QVT Languages
Yet Another Three QVT LanguagesYet Another Three QVT Languages
Yet Another Three QVT Languages
 
Ressource numérique Circuit électrique au primaire
Ressource numérique Circuit électrique au primaire Ressource numérique Circuit électrique au primaire
Ressource numérique Circuit électrique au primaire
 
Vbisigk
VbisigkVbisigk
Vbisigk
 
Java vs .Net
Java vs .NetJava vs .Net
Java vs .Net
 
erocci - a scalable model-driven API framework, OW2con'16, Paris.
erocci - a scalable model-driven API framework, OW2con'16, Paris. erocci - a scalable model-driven API framework, OW2con'16, Paris.
erocci - a scalable model-driven API framework, OW2con'16, Paris.
 
OCL Integration and Code Generation
OCL Integration and Code GenerationOCL Integration and Code Generation
OCL Integration and Code Generation
 
01072013 e governance
01072013 e governance01072013 e governance
01072013 e governance
 
Frame latency evaluation: when simulation and analysis alone are not enough
Frame latency evaluation: when simulation and analysis alone are not enoughFrame latency evaluation: when simulation and analysis alone are not enough
Frame latency evaluation: when simulation and analysis alone are not enough
 
mis
mismis
mis
 
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...
 
Cvl
CvlCvl
Cvl
 
OCL Specification Status
OCL Specification StatusOCL Specification Status
OCL Specification Status
 
Collaboration and Governance of Open Source Projects
Collaboration and Governance of Open Source ProjectsCollaboration and Governance of Open Source Projects
Collaboration and Governance of Open Source Projects
 
النشاط العلمي - الكهرباء
النشاط العلمي  -   الكهرباءالنشاط العلمي  -   الكهرباء
النشاط العلمي - الكهرباء
 
The Importance of Opposites
The Importance of OppositesThe Importance of Opposites
The Importance of Opposites
 
OCCIware
OCCIwareOCCIware
OCCIware
 
Model Transformation A Personal Perspective
Model Transformation A Personal PerspectiveModel Transformation A Personal Perspective
Model Transformation A Personal Perspective
 

Similaire à QVT Traceability Meaning

A Verilog HDL Test Bench Primer
A Verilog HDL Test Bench PrimerA Verilog HDL Test Bench Primer
A Verilog HDL Test Bench PrimerNicole Heredia
 
Cooperative Task Execution for Apache Spark
Cooperative Task Execution for Apache SparkCooperative Task Execution for Apache Spark
Cooperative Task Execution for Apache SparkDatabricks
 
La programmation concurrente par flux de données
La programmation concurrente par flux de donnéesLa programmation concurrente par flux de données
La programmation concurrente par flux de donnéesMicrosoft
 
MQTT and SensorThings API MQTT Extension
MQTT and SensorThings API MQTT ExtensionMQTT and SensorThings API MQTT Extension
MQTT and SensorThings API MQTT ExtensionSensorUp
 
Learn basics of Clojure/script and Reagent
Learn basics of Clojure/script and ReagentLearn basics of Clojure/script and Reagent
Learn basics of Clojure/script and ReagentMaty Fedak
 
iptables and Kubernetes
iptables and Kubernetesiptables and Kubernetes
iptables and KubernetesHungWei Chiu
 
Functest in Depth
Functest in DepthFunctest in Depth
Functest in DepthOPNFV
 
IRJET - Augmented Tangible Style using 8051 MCU
IRJET -  	  Augmented Tangible Style using 8051 MCUIRJET -  	  Augmented Tangible Style using 8051 MCU
IRJET - Augmented Tangible Style using 8051 MCUIRJET Journal
 
Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)
Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)
Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)Thomas Graf
 
Efficient Model Partitioning for Distributed Model Transformations
Efficient Model Partitioning for Distributed Model TransformationsEfficient Model Partitioning for Distributed Model Transformations
Efficient Model Partitioning for Distributed Model TransformationsAmine Benelallam
 
Cats second experiment results
Cats second experiment resultsCats second experiment results
Cats second experiment resultsCATS/EUROCONTROL
 
Transport SDN & OpenDaylight Use Cases in Korea
Transport SDN & OpenDaylight Use Cases in KoreaTransport SDN & OpenDaylight Use Cases in Korea
Transport SDN & OpenDaylight Use Cases in KoreaJustin Park
 
Matt Turner: Istio, The Packet's-Eye View (DevSecOps - London Gathering, Janu...
Matt Turner: Istio, The Packet's-Eye View (DevSecOps - London Gathering, Janu...Matt Turner: Istio, The Packet's-Eye View (DevSecOps - London Gathering, Janu...
Matt Turner: Istio, The Packet's-Eye View (DevSecOps - London Gathering, Janu...Michael Man
 
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)Takahiro Harada
 
Istio, The Packet's-Eye View - KubeCon NA 2018
Istio, The Packet's-Eye View - KubeCon NA 2018Istio, The Packet's-Eye View - KubeCon NA 2018
Istio, The Packet's-Eye View - KubeCon NA 2018Matt Turner
 

Similaire à QVT Traceability Meaning (20)

A Verilog HDL Test Bench Primer
A Verilog HDL Test Bench PrimerA Verilog HDL Test Bench Primer
A Verilog HDL Test Bench Primer
 
Cooperative Task Execution for Apache Spark
Cooperative Task Execution for Apache SparkCooperative Task Execution for Apache Spark
Cooperative Task Execution for Apache Spark
 
La programmation concurrente par flux de données
La programmation concurrente par flux de donnéesLa programmation concurrente par flux de données
La programmation concurrente par flux de données
 
MQTT and SensorThings API MQTT Extension
MQTT and SensorThings API MQTT ExtensionMQTT and SensorThings API MQTT Extension
MQTT and SensorThings API MQTT Extension
 
Learn basics of Clojure/script and Reagent
Learn basics of Clojure/script and ReagentLearn basics of Clojure/script and Reagent
Learn basics of Clojure/script and Reagent
 
Visibility Challenge on OF@TEIN SDN-enabled Virtual Playgrounds
Visibility Challenge on OF@TEIN SDN-enabled Virtual PlaygroundsVisibility Challenge on OF@TEIN SDN-enabled Virtual Playgrounds
Visibility Challenge on OF@TEIN SDN-enabled Virtual Playgrounds
 
iptables and Kubernetes
iptables and Kubernetesiptables and Kubernetes
iptables and Kubernetes
 
Functest in Depth
Functest in DepthFunctest in Depth
Functest in Depth
 
IRJET - Augmented Tangible Style using 8051 MCU
IRJET -  	  Augmented Tangible Style using 8051 MCUIRJET -  	  Augmented Tangible Style using 8051 MCU
IRJET - Augmented Tangible Style using 8051 MCU
 
Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)
Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)
Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)
 
Efficient Model Partitioning for Distributed Model Transformations
Efficient Model Partitioning for Distributed Model TransformationsEfficient Model Partitioning for Distributed Model Transformations
Efficient Model Partitioning for Distributed Model Transformations
 
Cats second experiment results
Cats second experiment resultsCats second experiment results
Cats second experiment results
 
Transport SDN & OpenDaylight Use Cases in Korea
Transport SDN & OpenDaylight Use Cases in KoreaTransport SDN & OpenDaylight Use Cases in Korea
Transport SDN & OpenDaylight Use Cases in Korea
 
5 csp
5 csp5 csp
5 csp
 
Matt Turner: Istio, The Packet's-Eye View (DevSecOps - London Gathering, Janu...
Matt Turner: Istio, The Packet's-Eye View (DevSecOps - London Gathering, Janu...Matt Turner: Istio, The Packet's-Eye View (DevSecOps - London Gathering, Janu...
Matt Turner: Istio, The Packet's-Eye View (DevSecOps - London Gathering, Janu...
 
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
Introduction to Monte Carlo Ray Tracing, OpenCL Implementation (CEDEC 2014)
 
Istio, The Packet's-Eye View - KubeCon NA 2018
Istio, The Packet's-Eye View - KubeCon NA 2018Istio, The Packet's-Eye View - KubeCon NA 2018
Istio, The Packet's-Eye View - KubeCon NA 2018
 
03 hdrf presentation
03 hdrf presentation03 hdrf presentation
03 hdrf presentation
 
OpenFlow
OpenFlowOpenFlow
OpenFlow
 
matlab_simulink_for_control082p.pdf
matlab_simulink_for_control082p.pdfmatlab_simulink_for_control082p.pdf
matlab_simulink_for_control082p.pdf
 

Plus de Edward Willink

OCL Visualization A Reality Check
OCL Visualization A Reality CheckOCL Visualization A Reality Check
OCL Visualization A Reality CheckEdward Willink
 
OCL 2019 Keynote Retrospective and Prospective
OCL 2019 Keynote Retrospective and ProspectiveOCL 2019 Keynote Retrospective and Prospective
OCL 2019 Keynote Retrospective and ProspectiveEdward Willink
 
A text model - Use your favourite M2M for M2T
A text model - Use your favourite M2M for M2TA text model - Use your favourite M2M for M2T
A text model - Use your favourite M2M for M2TEdward Willink
 
Commutative Short Circuit Operators
Commutative Short Circuit OperatorsCommutative Short Circuit Operators
Commutative Short Circuit OperatorsEdward Willink
 
Deterministic Lazy Mutable OCL Collections
Deterministic Lazy Mutable OCL CollectionsDeterministic Lazy Mutable OCL Collections
Deterministic Lazy Mutable OCL CollectionsEdward Willink
 
Embedded OCL Integration and Debugging
Embedded OCL Integration and DebuggingEmbedded OCL Integration and Debugging
Embedded OCL Integration and DebuggingEdward Willink
 
OCL - The Bigger Picture
OCL - The Bigger PictureOCL - The Bigger Picture
OCL - The Bigger PictureEdward Willink
 
Fast, Faster and Super-Fast Queries
Fast, Faster and Super-Fast QueriesFast, Faster and Super-Fast Queries
Fast, Faster and Super-Fast QueriesEdward Willink
 
Enrich Your Models With OCL
Enrich Your Models With OCLEnrich Your Models With OCL
Enrich Your Models With OCLEdward Willink
 
Re-engineering Eclipse MDT/OCL for Xtext
Re-engineering Eclipse MDT/OCL for XtextRe-engineering Eclipse MDT/OCL for Xtext
Re-engineering Eclipse MDT/OCL for XtextEdward Willink
 
Enriching Your Models with OCL
Enriching Your Models with OCLEnriching Your Models with OCL
Enriching Your Models with OCLEdward Willink
 

Plus de Edward Willink (18)

An OCL Map Type
An OCL Map TypeAn OCL Map Type
An OCL Map Type
 
OCL Visualization A Reality Check
OCL Visualization A Reality CheckOCL Visualization A Reality Check
OCL Visualization A Reality Check
 
OCL 2019 Keynote Retrospective and Prospective
OCL 2019 Keynote Retrospective and ProspectiveOCL 2019 Keynote Retrospective and Prospective
OCL 2019 Keynote Retrospective and Prospective
 
A text model - Use your favourite M2M for M2T
A text model - Use your favourite M2M for M2TA text model - Use your favourite M2M for M2T
A text model - Use your favourite M2M for M2T
 
Shadow Objects
Shadow ObjectsShadow Objects
Shadow Objects
 
Commutative Short Circuit Operators
Commutative Short Circuit OperatorsCommutative Short Circuit Operators
Commutative Short Circuit Operators
 
Deterministic Lazy Mutable OCL Collections
Deterministic Lazy Mutable OCL CollectionsDeterministic Lazy Mutable OCL Collections
Deterministic Lazy Mutable OCL Collections
 
The OCLforUML Profile
The OCLforUML ProfileThe OCLforUML Profile
The OCLforUML Profile
 
Embedded OCL Integration and Debugging
Embedded OCL Integration and DebuggingEmbedded OCL Integration and Debugging
Embedded OCL Integration and Debugging
 
OCL 2.5 plans
OCL 2.5 plansOCL 2.5 plans
OCL 2.5 plans
 
OCL - The Bigger Picture
OCL - The Bigger PictureOCL - The Bigger Picture
OCL - The Bigger Picture
 
UMLX and QVT and ATL
UMLX and QVT and ATLUMLX and QVT and ATL
UMLX and QVT and ATL
 
Fast, Faster and Super-Fast Queries
Fast, Faster and Super-Fast QueriesFast, Faster and Super-Fast Queries
Fast, Faster and Super-Fast Queries
 
Eclipse OCL Summary
Eclipse OCL SummaryEclipse OCL Summary
Eclipse OCL Summary
 
Aligning OCL and UML
Aligning OCL and UMLAligning OCL and UML
Aligning OCL and UML
 
Enrich Your Models With OCL
Enrich Your Models With OCLEnrich Your Models With OCL
Enrich Your Models With OCL
 
Re-engineering Eclipse MDT/OCL for Xtext
Re-engineering Eclipse MDT/OCL for XtextRe-engineering Eclipse MDT/OCL for Xtext
Re-engineering Eclipse MDT/OCL for Xtext
 
Enriching Your Models with OCL
Enriching Your Models with OCLEnriching Your Models with OCL
Enriching Your Models with OCL
 

Dernier

办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 

Dernier (20)

办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 

QVT Traceability Meaning

  • 1. Made available under EPL 1.0 QVT Traceability What does it really mean? Edward Willink Willink Transformations Ltd Eclipse Foundation MMT Component co-Lead OCL Project Lead QVTd Project Lead QVTo Committer OMG (Model Driven Solutions) OCL 2.3, 2.4, 2.5 RTF Chair QVT 1.2, 1.3 RTF Chair AMT 2015 @ MODELS 2015 28th September 2015
  • 2. 28-Sept-2015 QVT traceability 2Made available under EPL 1.0 Overview Traceability alternate meanings vague QVT specification Traceability details Traceability consequences declarative imperative
  • 3. 28-Sept-2015 QVT traceability 3Made available under EPL 1.0 QVT Query / View / Transformation OMG specification - slow to mature ATL took a pragmatic short cut Three languages QVTo (Operational Mappings) - Imperative QVTr (Relational) - Declarative, rich QVTc (Core) - Declarative, simple notional common core Eclipse QVTd QVTr->QVTc->QVTu->QVTm->QVTp->QVTi->Java
  • 4. 28-Sept-2015 QVT traceability 4Made available under EPL 1.0 Background QVT ... Aspires to be bigger, better, specified QVT 1.2 - resolved 95 issues QVT 1.2 - left 29 issues deferred 'for lack of time' need to prototype solution need inspiration QVT Traceability specification is a mess discussion document invited paper for AMT 2015
  • 5. 28-Sept-2015 QVT traceability 5Made available under EPL 1.0 Traceability use cases requirements traceability 'printf' traceability debugger traceability internal traceability incremental traceability
  • 6. 28-Sept-2015 QVT traceability 6Made available under EPL 1.0 Requirements Traceability How does X relate to the specification? correlate rules/mappings to specification vague 'requirements' not M2M traceability
  • 7. 28-Sept-2015 QVT traceability 7Made available under EPL 1.0 'printf' Traceability What happened? voluminous output facilitate debugging facilitate performance analysis model rather than informal text informal pragmatic content
  • 8. 28-Sept-2015 QVT traceability 8Made available under EPL 1.0 Debugger Traceability What is happening? source level debugging correlated source view stepping inspection breakpoints
  • 9. 28-Sept-2015 QVT traceability 9Made available under EPL 1.0 Internal Traceability 1 Has X been executed? General transformation policy do not repeat computations Internal mechanism hidden from users
  • 10. 28-Sept-2015 QVT traceability 10Made available under EPL 1.0 Not so Simple Transformation Primary S1 to T1 rule Secondary S1,S2 to T1,T2 rule re-use T1 created by R1 from S1 R1S1 T1 R1S1 T1 R2S2 T2
  • 11. 28-Sept-2015 QVT traceability 11Made available under EPL 1.0 Internal Traceability 2 What was the result of X? Trivial transformation tree-structured output - can use parameters Complex transformation graph-structured output - too complex for parameters Overlap resolution - internal mechanism ATL : resolveTemp Epsilon : equivalent QVTo : resolve QVTr : when Overlap resolution - explicit mechanism QVTc : middle model
  • 12. 28-Sept-2015 QVT traceability 12Made available under EPL 1.0 Incremental Traceability What do I need to re-execute? support incremental update at another time persisted state at another place interchangeable/loadable
  • 13. 28-Sept-2015 QVT traceability 14Made available under EPL 1.0 Tentative QVT specification QVT 1.2 (aspirationally) specifies interchangeable QVTc/QVTo/QVTr traceability incremental re-execution persistent traceability model ?? QVT 1.3 ?? An incremental transformation execution may exploit the saved traceability from a previous execution. Simple principle corrolaries? declarative then imperative
  • 14. 28-Sept-2015 QVT traceability 15Made available under EPL 1.0 What do I need to re-execute? R1, R2 represent some computation (expression, statement,) rule/mapping s1,s2 represent input state/objects of type S1,S2 t1,t2 represent output state/objects of type T1,T2 If s1 or s2 changes, R2 must re-compute R1s1 : S1 t1 : T1 R2s2 : S2 t2 : T2
  • 15. 28-Sept-2015 QVT traceability 16Made available under EPL 1.0 How do I know what has changed? Original execution Possible re-execution Compare s1' and s1 s1 may no longer exist, must use a 'recording' trace representation Compare trace representation of s1 and trace representation of s1' R1s1 : S1 t1 : T1 R1s1' : S1 t1' : T1
  • 16. 28-Sept-2015 QVT traceability 17Made available under EPL 1.0 What is a trace representation ? 1 all the state needed to support comparison in practice save old trace representations reload old trace representations decide whether re-execute transformation compare old with new some inputs may have changed e.g. time
  • 17. 28-Sept-2015 QVT traceability 18Made available under EPL 1.0 What is a trace representation ? 2 Immutable DataType 'instances' - values Integer, String, Set(String), Tuple ... not unique many objects may have a zero-valued Integer property require full state as trace representation simple/small for values such Integer - 4 complex/large for e.g. Collection of Tuple of ... ?? share repeated usages from a 'pool' 4 Set{1,2,3} ref 4 ref
  • 18. 28-Sept-2015 QVT traceability 19Made available under EPL 1.0 What is a trace representation ? 3 Class instances - objects 'unique' in memory, location/address can represent full state full state must be persisted/reloaded almost unique declarative transformation distinct reloaded / prevailing states - old time / new time declarative in-place transformation distinct before / after states only one state needs to be saved
  • 19. 28-Sept-2015 QVT traceability 20Made available under EPL 1.0 Has X been executed? What is executed? a computation R1 one or more inputs, e.g. s1 conforming to S1 one or more outputs, e.g. t1 conforming to T1 The trace record: {{R1, {s1}}, {t1}} The trace identity: {R1, {s1}} computation identity: R1 input trace representations: s1 output trace representations: t1 R1s1 : S1 t1 : T1
  • 20. 28-Sept-2015 QVT traceability 21Made available under EPL 1.0 What was the result of X? Trace Data = all Trace Records Trace Records: {{R1, {s1}}, {t1}}, {{R2, {s1,s2}}, {t1,t2}} Trace Identities: {R1, {s1}} , {R2, {s1,s2}} Has (trace identity) X been executed? does trace data contain a trace record for X? What was the result of (trace identity) X? extract outputs from trace record for the X R1s1 : S1 t1 : T1 R2s2 : S2 t2 : T2
  • 21. 28-Sept-2015 QVT traceability 22Made available under EPL 1.0 (Mapping/Rule) Refinement OO supports operation overloading invariant / contra-variant arguments covariant results 'simple' dynamic dispatch of type match M2M permits mapping/rule refinement mappings have predicates non-execution is permissible predicate arbitration amongst candidates refined mappings may have covariant inputs refined mappings may have additional/redundant inputs multi-refinement is feasible
  • 22. 28-Sept-2015 QVT traceability 23Made available under EPL 1.0 Independent Mappings and Refinements Independent mappings each matching mapping is executed {{R1, {s1}}, t1a} and {{R2, {s1}}, t1b} R1s1 : S1 t1a : T1 R2s1 : S1 t1b : T1
  • 23. 28-Sept-2015 QVT traceability 24Made available under EPL 1.0 Dependent Mappings and Refinements Dependent mappings refinements, inheritances, (disjuncts in QVTo) each refines one or more base mappings best match for each base mapping executed once multi-refinements execution may be 'shared' {{R1, {s1}}, t1} or {{R2, {s2}}, t2} R1s1 : S1 t1 : T1 R2s2 : S2 t2 : T2
  • 24. 28-Sept-2015 QVT traceability 25Made available under EPL 1.0 Refinement Tracing 1 what do we need to re-execute? re-assess predicates wrt the base trace record must have {R1,{s1}} as trace identity re-assess change wrt previous execution trace record must have {R2,{s1,s2}} as trace identity R1s1 : S1 T1 R2 s1 : S1 T2 s2 : S2
  • 25. 28-Sept-2015 QVT traceability 26Made available under EPL 1.0 Refinement Tracing 2 what is the result of R1? user may not know about R2 trace record must have {R1,{s1}} as trace identity what is happening ? referenced trace identity must be actual refinement trace record must have {R2,{s1,s2}} as trace identity R1s1 : S1 T1 R2 s1 : S1 T2 s2 : S2
  • 26. 28-Sept-2015 QVT traceability 27Made available under EPL 1.0 Refinement Tracing 3 One trace identity is not enough need apparent/base trace identity need actual trace identity Better trace record One or more trace identities computation identity input trace representations output trace representations Multi-refinement one or more apparent/base trace identities one actual trace identity
  • 27. 28-Sept-2015 QVT traceability 30Made available under EPL 1.0 Imperative, QVTo Objects are mutable List / Dict are mutable Sequence / Map Mapping parameters may be inout Global / transformation context is mutable Trace representation is not stable
  • 28. 28-Sept-2015 QVT traceability 31Made available under EPL 1.0 Dict example 1 1) Declare a global source-to-target Dict 2) Populate it many times in many places 3) Use it many times in many places 1 2 3
  • 29. 28-Sept-2015 QVT traceability 32Made available under EPL 1.0 Dict example 2 Surely that's what "resolve" does? Yes, but: "resolve" is built-in, invisible, undebuggable underspecified, poorly worded suspect implementation (Eclipse QVTo has improved) complex problem leads to distrust Dict is mine, visible, debuggable Dict is a traceability nightmare global variable multiple write sites, multiple read sites correct usage is disciplined, usage to be debugged is not
  • 30. 28-Sept-2015 QVT traceability 33Made available under EPL 1.0 What is a trace representation ? 4 Mutable DataType 'instances' - values imperative transformations only in QVTo List(String), Dict(String, Set(Real)) not unique, not stable imperative transformation may make many changes require full prevailing state as trace representation naive - use per-usage deep clones better - share a deep clone of each distinct state more compact - share similar deep clones use a differential description of similar states ref2 Set{1,2,3} ref1 Set{1,2,4} s/3/4
  • 31. 28-Sept-2015 QVT traceability 34Made available under EPL 1.0 What is a trace representation ? 5 Class instances - objects not unique for imperative transformation numerous intermediate states re-execution must use the corresponding state multiple states can not co-exist in memory
  • 32. 28-Sept-2015 QVT traceability 35Made available under EPL 1.0 What is a trace representation ? 6 UML / MOF / Ecore single containment old state can use a coherent set of objects new / another state can use another coherent set cannot share contained/container objects completely independent objects for new / old / ... co-ordinating equivalence map differential representation for similar objects s1 (old) s2 (old, new) s1' (new) s2 (old, new) s1 (old) s2 (old, new) s1' (new) BAD
  • 33. 28-Sept-2015 QVT traceability 38Made available under EPL 1.0 Mutable Traceability 1 Objects are mutable execute R1 for s1 modify object s1 to s1' execute R2 for {s1',s2} does {{R1,{s1}},t1} provide t1 for R2? Yes. Otherwise unuseable. Need Object-to-Object. R1s1' : S1 t1 : T1 R2s2 : S2 t2 : T2 R1s1 : S1 t1 : T1
  • 34. 28-Sept-2015 QVT traceability 39Made available under EPL 1.0 Mutable Traceability 2 DataTypes (List, Dict) are mutable execute R2 for {s1,s2} modify DataType s2 execute R2 for {s1,s2'} does {R2,{s1,s2}} re-use {R2,{s1,s2'}} ? No. Need multiple Object-to-Object. R1s1 : S1 t1 : T1 R2s2 : S2 t2 : T2 R1s1 : S1 t1 : T1 R2s2' : S2 t2 : T2
  • 35. 28-Sept-2015 QVT traceability 40Made available under EPL 1.0 Mutable Traceability 3 Class instances can be changed {{R1,{s1}},t1} is also {{R1,{s1'}},t1} order dependent {{R1,{s1'}},t1'} is also {{R1,{s1}},t1'} DataType values cannot be changed {{R2,{s1,s2}},{t1,t2}} is not {{R2,{s1,s2'}},{t1,t2'}} Asymmetric mess
  • 36. 28-Sept-2015 QVT traceability 41Made available under EPL 1.0 Traceability specification conclusion An incremental transformation execution may exploit the saved traceability from a previous execution. Declarative - QVTc, QVTr practical, minor clarification of refinement tracing Imperative - QVTo impractical for arbitrary transformations too much state to clone, differential state too hard practical for well-behaved transformations candidates for auto-conversion to QVTr
  • 37. 28-Sept-2015 QVT traceability 45Made available under EPL 1.0 Trace Metamodel 1 There is a shared Trace Metamodel QVT has distinct views per-mapping classes for QVTc (and QVTr) simple object re-use by reference per-semantic classes for QVTo pragmatic object re-use 'rigorous' multi-state objects / values
  • 38. 28-Sept-2015 QVT traceability 46Made available under EPL 1.0 Trace Metamodel 2 Share between M2M tools Can Mapping / Transformation be shared?
  • 39. 28-Sept-2015 QVT traceability 47Made available under EPL 1.0 Conclusion Various traceability use cases incremental traceability most stringent QVT underspecified Declarative tracing relatively straightforward Imperative tracing too hard to fix heavy cloning cost unless relative objects used