A presentation held at ICST 2012 in Montreal, Canada. The presentation relies on a joint work of Zoltán Ujhelyi, Ákos Horváth and Dániel Varró from the Fault Tolerant Systems Research group at the Budapest University of Technology and Economics.
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Dynamic Backward Slicing of Model Transformations
1. Dynamic
Backward
Slicing
of
Model
Transforma7ons
Zoltán Ujhelyi,
Ákos
Horváth,
Dániel
Varró
Budapest University of Technology and Economics
Department of Measurement and Informa<on Systems
2. Models
and
Transforma7ons
in
Cri7cal
Systems
System
Design
Model
Refine
Architecture
Design
Model
Refine
Component
Design
Model
3. Models
and
Transforma7ons
in
Cri7cal
Systems
System
Design
Model
Refine
Simula7on
Architecture
Design
Model
Refine
Simula7on
Component
Design
Model
Simula7on
4. Models
and
Transforma7ons
in
Cri7cal
Systems
Horizontal
Model
Transforma7ons
Model
genera7on
System
Design
System
V&V
Model
Model
Back-‐Annota7on
Refine
Use
Simula7on
Model
genera7on
Formal
Architecture
methods
Architecture
V&V
Design
Model
Model
Refine
Back-‐Annota7on
Use
Simula7on
Model
genera7on
Formal
Component
Component
methods
Design
V&V
Model
Model
Back-‐Annota7on
Simula7on
5. Models
and
Transforma7ons
in
Cri7cal
Systems
Horizontal
Model
Transforma7ons
Model
genera7on
System
Design
System
V&V
Model
Model
Back-‐Annota7on
Refine
Use
Simula7on
Model
genera7on
Formal
Architecture
methods
Architecture
V&V
Ver7cal
Model
Transforma7ons
Design
Model
Model
Refine
Back-‐Annota7on
Use
Simula7on
Model
genera7on
Formal
Component
Component
methods
Design
V&V
Model
Model
Back-‐Annota7on
Simula7on
Code
Test
Genera7on
Genera7on
Design
+
V&V
Ar7facts
(Source
code,
Glue
code,
Config.
Tables,
Test
Cases,
Monitors,
Fault
Trees,
etc.)
6. Models
and
Transforma7ons
in
Cri7cal
Systems
Horizontal
Model
Transforma7ons
Model
genera7on
System
Design
System
V&V
Model
Model
Back-‐Annota7on
Refine
Use
Simula7on
Model
genera7on
Formal
Architecture
methods
Architecture
V&V
Ver7cal
Model
Transforma7ons
Design
Model
Model
Refine
Back-‐Annota7on
Use
Simula7on
Model
genera7on
Formal
Component
Component
methods
Design
V&V
Model
Model
Back-‐Annota7on
Simula7on
Model
Transforma7ons
Code
Test
•
systema7c
founda7on
of
Genera7on
Genera7on
knowledge
transfer:
theore7cal
resultstools
Design
+
V&V
Ar7facts
•
bridge
/
integrate
(Source
code,
Glue
code,
exis7ng
languages&tools
Config.
Tables,
Test
Cases,
Monitors,
Fault
Trees,
etc.)
7. Overview
of
Model
Transforma7ons
Modeling
tool
Source
Target
MT
rule
metamodel
metamodel
Source
Target
model
model
8. Overview
of
Model
Transforma7ons
Modeling
tool
Source
Target
MT
rule
metamodel
metamodel
Source
Target
model
model
Model: Description
of a concrete system
9. Overview
of
Model
Transforma7ons
Metamodel: Precise spec of
a modeling language
Modeling
tool
Source
Target
MT
rule
metamodel
metamodel
Source
Target
model
model
Model: Description
of a concrete system
10. Overview
of
Model
Transforma7ons
Metamodel: Precise spec of Model Transformation:
a modeling language How to generate a target equivalent
of an arbitrary source model
Modeling
tool
Source
Target
MT
rule
metamodel
metamodel
Source
Target
model
model
Model: Description
of a concrete system
11. Overview
of
Model
Transforma7ons
Eclipse
Framework
Model
Transforma7on
Tool
Modeling
tool
Source
Target
MT
rule
metamodel
metamodel
Source
Target
MT
engine
model
model
12. Overview
of
Model
Transforma7ons
Eclipse
Framework
Model
Transforma7on
Tool
Modeling
tool
Source
Target
MT
rule
metamodel
metamodel
Source
Target
MT
engine
model
model
Transformation engine:
Support for querying and
manipulating large models
13. Overview
of
Model
Transforma7ons
Eclipse
Framework
Model
Transforma7on
Tool
Modeling
tool
Source
Target
MT
rule
metamodel
metamodel
Source
Target
MT
engine
model
model
Transformation engine:
Support for querying and
manipulating large models
ATL
VIATRA2:
hYp://www.eclipse.org/gmt/VIATRA2/
QVT
14. Demonstra7ng
example:
Petri
net
Simula7on
Petri
nets
Architecture
Design
Model
o Used
e.g.
in
component
design
analysis
Component
o Places
and
Transi7ons
Design
Model
Simula<on
o State
of
the
net
• Tokens
Store
Simulator
transforma7on
Query
o In-‐place
transforma7on
Client
(source
and
target
metamodels
are
iden7cal)
Server
o Uses
both
impera7ve
and
declara7ve
elements
Respond
14
22. Control
Structure
rule fireTransition(in T) = {
if (find isFireable(T)) {
// remove tokens from source places
forall Pl
with find sourcePlace(T,Pl)
do apply removeToken(Pl);
// creates tokens on target places
forall Pl
with find targetPlace(T,Pl)
do apply addToken(Pl);
}
}
22
23. Debugging
model
transforma7ons
Basic
debugging
ques7ons
• Why
is
a
certain
statement
executed?
• Why
is
a
certain
model
element
created?
Finding
dependencies
• Hidden
data
dependencies
• Declara7ve
rules
23
24. Debugging
model
transforma7ons
Basic
debugging
ques7ons
• Why
is
a
certain
statement
executed?
• Why
is
a
certain
model
element
created?
Finding
dependencies
‘Dynamic
backward
slicing’
problem
• Hidden
data
dependencies
• Declara7ve
rules
24
25. Program
Slicing
Dependency
analysis
Example
Use
cases
o Debugging
solware
1. int i;
o Impact
analysis
2. int sum = 0;
o ...
3. int product = 1;
Types
of
slicing
4. for(i = 1; i < N; ++i) {
o Dynamic/sta7c
5. sum = sum + i;
o Backward/Forward
6. product = product *i;
7. }
8. write(sum);
9. write(product);
25
26. Program
Slicing
Dependency
analysis
Example
Use
cases
o Debugging
solware
1. int i;
o Impact
analysis
2. int sum = 0;
o ...
3. int product = 1;
Types
of
slicing
4. for(i = 1; i < N; ++i) {
o Dynamic/sta7c
5. sum = sum + i;
Slicing
criterion:
o Backward/Forward
6. product = product *i;
a
statement
and
a
7. }
variable
8. write(sum);
9. write(product);
26
27. Program
Slicing
Dependency
analysis
Example
Use
cases
statements
Slice:
the
criterion
o Debugging
solware
1. int i;
depends
on
o Impact
analysis
2. int sum = 0;
o ...
3. int product = 1;
Types
of
slicing
4. for(i = 1; i < N; ++i) {
o Dynamic/sta7c
5. sum = sum + i;
o Backward/Forward
6. product = product *i;
7. }
8. write(sum);
9. write(product);
27
28. Program
Slicing
Dependency
analysis
Example
Use
cases
statements
Slice:
the
criterion
o Debugging
solware
1. int i;
depends
on
o Impact
analysis
2. int sum = 0;
o ...
3. int product = 1;
Types
of
slicing
4. for(i = 1; i < N; ++i) {
o Dynamic/sta7c
5. sum = sum + i;
o Backward/Forward
6. product = product *i;
7. }
8. write(sum);
9. write(product);
28
29. Slicing
Model
Transforma7ons
Similar
to
program
slicing
BUT:
processing
(input)
models
is
required
Our
approach:
Criterion
Transforma7on
Transforma7on
Model
Slice
transforma7on
Models
slicing
Model
Slice
29
30. Approach
Input
Transforma7on
model
Program
rule fireTransition(in T) = {
if (find isFireable(T)) {
// remove tokens from source
places
forall Pl
with find sourcePlace(T,Pl)
do apply removeToken(Pl);
// creates tokens on target
places
forall Pl
with find targetPlace(T,Pl)
do apply addToken(Pl);
}
}
30
31. Approach
Input
Transforma7on
1.
Execu7ng
the
Program
model
Transforma7on
rule fireTransition(in T) = {
if (find isFireable(T)) {
// remove tokens from source
places
forall Pl
with find sourcePlace(T,Pl)
do apply removeToken(Pl);
// creates tokens on target
places
forall Pl
with find targetPlace(T,Pl)
do apply addToken(Pl);
}
}
31
32. Approach
Input
Transforma7on
1.
Execu7ng
the
Program
model
Transforma7on
rule fireTransition(in T) = {
if (find isFireable(T)) {
// remove tokens from source
places
Output
forall Pl
model
with find sourcePlace(T,Pl)
do apply removeToken(Pl);
// creates tokens on target
places
forall Pl
with find targetPlace(T,Pl)
do apply addToken(Pl);
}
}
32
33. Approach
Input
Transforma7on
1.
Execu7ng
the
Program
model
Transforma7on
rule fireTransition(in T) = {
if (find isFireable(T)) {
// remove tokens from source
places
Output
forall Pl
model
2.
Genera7ng
an
with find sourcePlace(T,Pl)
do apply removeToken(Pl);
Execu7on
Trace
// creates tokens on target
places
forall Pl
with find targetPlace(T,Pl)
do apply addToken(Pl);
}
}
33
34. Approach
Input
Transforma7on
1.
Execu7ng
the
For
each
statement
record:
Program
model
Transforma7on
• Variable
Usage
• Model
Usage
• Model
Manipula7on
rule fireTransition(in T) = {
if (find isFireable(T)) {
// remove tokens from source
places
Output
forall Pl
model
2.
Genera7ng
an
with find sourcePlace(T,Pl)
do apply removeToken(Pl);
Execu7on
Trace
// creates tokens on target
places
forall Pl
with find targetPlace(T,Pl)
do apply addToken(Pl);
}
}
34
35. Approach
Input
Transforma7on
1.
Execu7ng
the
Program
model
Transforma7on
rule fireTransition(in T) = {
if (find isFireable(T)) {
// remove tokens from source
places
Output
forall Pl
model
2.
Genera7ng
an
with find sourcePlace(T,Pl)
do apply removeToken(Pl);
Execu7on
Trace
// creates tokens on target
places
forall Pl
with find targetPlace(T,Pl)
do apply addToken(Pl);
}
}
35
36. Approach
Input
Transforma7on
1.
Execu7ng
the
Program
model
Transforma7on
rule fireTransition(in T) = {
if (find isFireable(T)) {
// remove tokens from source
places
Output
forall Pl
model
2.
Genera7ng
an
with find sourcePlace(T,Pl)
do apply removeToken(Pl);
Execu7on
Trace
// creates tokens on target
places
forall Pl
with find targetPlace(T,Pl)
do apply addToken(Pl);
}
}
3.
Calcula7ng
the
Slice
36
37. Approach
Input
Transforma7on
1.
Execu7ng
the
Program
model
Transforma7on
Criteria:
Model
element
rule fireTransition(in T) = {
if (find isFireable(T)) {
// remove tokens from source
places
Output
forall Pl
model
2.
Genera7ng
an
with find sourcePlace(T,Pl)
do apply removeToken(Pl);
Execu7on
Trace
// creates tokens on target
places
forall Pl
with find targetPlace(T,Pl)
do apply addToken(Pl);
}
}
3.
Calcula7ng
the
Slice
37
38. Approach
Input
Transforma7on
1.
Execu7ng
the
Program
model
Transforma7on
Criteria:
Criteria:
Model
element
Program
statement
rule fireTransition(in T) = {
if (find isFireable(T)) {
(and
a
variable)
places
// remove tokens from source
Output
forall Pl
model
2.
Genera7ng
an
with find sourcePlace(T,Pl)
do apply removeToken(Pl);
Execu7on
Trace
// creates tokens on target
places
forall Pl
with find targetPlace(T,Pl)
do apply addToken(Pl);
}
}
3.
Calcula7ng
the
Slice
38
39. Approach
Input
Transforma7on
1.
Execu7ng
the
Program
model
Transforma7on
rule fireTransition(in T) = {
if (find isFireable(T)) {
// remove tokens from source
places
Output
forall Pl
model
2.
Genera7ng
an
with find sourcePlace(T,Pl)
do apply removeToken(Pl);
Execu7on
Trace
// creates tokens on target
places
forall Pl
with find targetPlace(T,Pl)
do apply addToken(Pl);
}
}
3.
Calcula7ng
the
Slice
39
40. Approach
Input
Transforma7on
1.
Execu7ng
the
Program
model
Transforma7on
rule fireTransition(in T) = {
if (find isFireable(T)) {
// remove tokens from source
places
Output
forall Pl
model
2.
Genera7ng
an
• Traversing
Trace
Records
Backwards
with find sourcePlace(T,Pl)
do apply removeToken(Pl);
Execu7on
Trace
// creates tokens on target
• Selec7ng
Dependent
Trace
Records
places
forall Pl
with find targetPlace(T,Pl)
do apply addToken(Pl);
}
}
3.
Calcula7ng
the
Slice
40
41. Approach
Input
Transforma7on
1.
Execu7ng
the
Program
model
Transforma7on
rule fireTransition(in T) = {
if (find isFireable(T)) {
// remove tokens from source
places
Output
forall Pl
model
2.
Genera7ng
an
with find sourcePlace(T,Pl)
do apply removeToken(Pl);
Execu7on
Trace
// creates tokens on target
places
forall Pl
with find targetPlace(T,Pl)
do apply addToken(Pl);
}
}
3.
Calcula7ng
the
Slice
41
42. Approach
Input
Transforma7on
1.
Execu7ng
the
Program
model
Transforma7on
rule fireTransition(in T) = {
if (find isFireable(T)) {
// remove tokens from source
places
Output
forall Pl
model
2.
Genera7ng
an
with find sourcePlace(T,Pl)
do apply removeToken(Pl);
Execu7on
Trace
// creates tokens on target
places
forall Pl
with find targetPlace(T,Pl)
do apply addToken(Pl);
}
}
3.
Calcula7ng
the
Slice
42
43. Approach
Input
Transforma7on
1.
Execu7ng
the
Program
model
Transforma7on
rule fireTransition(in T) = {
if (find isFireable(T)) {
// remove tokens from source
places
Output
forall Pl
model
2.
Genera7ng
an
with find sourcePlace(T,Pl)
do apply removeToken(Pl);
Execu7on
Trace
// creates tokens on target
places
forall Pl
with find targetPlace(T,Pl)
do apply addToken(Pl);
}
}
Sliced
3.
Calcula7ng
model
the
Slice
43
44. Slicing
Model
Transforma7ons
–
An
Example
rule fireTransition(in T) = {
(1)
if (find isFireable(T)) {
(2)
Query
// remove tokens from source places
forall Pl
(3)
Client
Store
with find sourcePlace(T,Pl)
(4)
do apply removeToken(Pl);
(5)
// creates tokens on target places
Server
forall Pl
(6)
with find targetPlace(T,Pl)
(7)
(9)
do apply addToken(Pl);
(8)
(10)
}
Respond
}
Code
Instance
model
Criteria:
rule
call
addToken,
variable
Pl
Trace
Records:
Lookup:
44
45. Slicing
Model
Transforma7ons
–
An
Example
rule fireTransition(in T) = {
(1)
if (find isFireable(T)) {
(2)
Query
// remove tokens from source places
forall Pl
(3)
Client
Store
with find sourcePlace(T,Pl)
(4)
do apply removeToken(Pl);
(5)
// creates tokens on target places
Server
forall Pl
(6)
with find targetPlace(T,Pl)
(7)
(9)
do apply addToken(Pl);
(8)
(10)
}
Respond
}
Code
Instance
model
Criteria:
rule
call
addToken,
variable
Pl
Trace
Records:
Lookup:
10. apply addToken(Pl)
Uses
variable:
Pl
Uses
model:
Server
Modifies model: Token
45
46. Slicing
Model
Transforma7ons
–
An
Example
rule fireTransition(in T) = {
(1)
if (find isFireable(T)) {
(2)
Query
// remove tokens from source places
forall Pl
(3)
Client
Store
with find sourcePlace(T,Pl)
(4)
do apply removeToken(Pl);
(5)
// creates tokens on target places
Server
forall Pl
(6)
with find targetPlace(T,Pl)
(7)
(9)
do apply addToken(Pl);
(8)
(10)
}
Respond
}
Code
Instance
model
Criteria:
rule
call
addToken,
variable
Pl
Trace
Records:
Lookup:
10. apply addToken(Pl)
variable
Pl
Uses
variable:
Pl
Uses
model:
Server
Modifies model: Token
46
47. Slicing
Model
Transforma7ons
–
An
Example
rule fireTransition(in T) = {
(1)
if (find isFireable(T)) {
(2)
Query
// remove tokens from source places
forall Pl
(3)
Client
Store
with find sourcePlace(T,Pl)
(4)
do apply removeToken(Pl);
(5)
// creates tokens on target places
Server
forall Pl
(6)
with find targetPlace(T,Pl)
(7)
(9)
do apply addToken(Pl);
(8)
(10)
}
Respond
}
Code
Instance
model
Criteria:
rule
call
addToken,
variable
Pl
Trace
Records:
Lookup:
9. find targetPlace(T,Pl)
variable
Pl
Modifies
variable:
Pl
Uses
variable:
T
Uses
model:
Server,
Query
47
48. Slicing
Model
Transforma7ons
–
An
Example
rule fireTransition(in T) = {
(1)
if (find isFireable(T)) {
(2)
Query
// remove tokens from source places
forall Pl
(3)
Client
Store
with find sourcePlace(T,Pl)
(4)
do apply removeToken(Pl);
(5)
// creates tokens on target places
Server
forall Pl
(6)
with find targetPlace(T,Pl)
(7)
(9)
do apply addToken(Pl);
(8)
(10)
}
Respond
}
Code
Instance
model
Criteria:
rule
call
addToken,
variable
Pl
Trace
Records:
Lookup:
9. find targetPlace(T,Pl)
Data/model
Modifies
variable:
Pl
variable
T
dependency
Uses
variable:
T
Uses
model:
Server,
Query
48
49. Slicing
Model
Transforma7ons
–
An
Example
rule fireTransition(in T) = {
(1)
if (find isFireable(T)) {
(2)
Query
// remove tokens from source places
forall Pl
(3)
Client
Store
with find sourcePlace(T,Pl)
(4)
do apply removeToken(Pl);
(5)
// creates tokens on target places
Server
forall Pl
(6)
with find targetPlace(T,Pl)
(7)
(9)
do apply addToken(Pl);
(8)
(10)
}
Respond
}
Code
Instance
model
Criteria:
rule
call
addToken,
variable
Pl
Trace
Records:
Lookup:
8. apply addToken(Pl)
Uses
variable:
Pl
variable
T
Uses
model:
Store
Modifies model: Token
49
50. Slicing
Model
Transforma7ons
–
An
Example
rule fireTransition(in T) = {
(1)
if (find isFireable(T)) {
(2)
Query
// remove tokens from source places
forall Pl
(3)
Client
Store
with find sourcePlace(T,Pl)
(4)
do apply removeToken(Pl);
(5)
// creates tokens on target places
Server
forall Pl
(6)
with find targetPlace(T,Pl)
(7)
(9)
do apply addToken(Pl);
(8)
(10)
}
Respond
}
Code
Instance
model
Criteria:
rule
call
addToken,
variable
Pl
Trace
Records:
Lookup:
7. find targetPlace(T,Pl)
Modifies
variable:
Pl
variable
T
Uses
variable:
T
Uses
model:
Store,
Query
50
51. Slicing
Model
Transforma7ons
–
An
Example
rule fireTransition(in T) = {
(1)
if (find isFireable(T)) {
(2)
Query
// remove tokens from source places
forall Pl
(3)
Client
Store
with find sourcePlace(T,Pl)
(4)
do apply removeToken(Pl);
(5)
// creates tokens on target places
Server
forall Pl
(6)
with find targetPlace(T,Pl)
(7)
(9)
do apply addToken(Pl);
(8)
(10)
}
Respond
}
Code
Instance
model
Criteria:
rule
call
addToken,
variable
Pl
Trace
Records:
Lookup:
6. forall Pl
variable
T
51
52. Slicing
Model
Transforma7ons
–
An
Example
rule fireTransition(in T) = {
(1)
if (find isFireable(T)) {
(2)
Query
// remove tokens from source places
forall Pl
(3)
Client
Store
with find sourcePlace(T,Pl)
(4)
do apply removeToken(Pl);
(5)
// creates tokens on target places
Server
forall Pl
(6)
with find targetPlace(T,Pl)
(7)
(9)
do apply addToken(Pl);
(8)
(10)
}
Respond
}
Code
Instance
model
Criteria:
rule
call
addToken,
variable
Pl
Trace
Records:
Lookup:
6. forall Pl
Control
variable
T
dependency
52
53. Slicing
Model
Transforma7ons
–
An
Example
rule fireTransition(in T) = {
(1)
if (find isFireable(T)) {
(2)
Query
// remove tokens from source places
forall Pl
(3)
Client
Store
with find sourcePlace(T,Pl)
(4)
do apply removeToken(Pl);
(5)
// creates tokens on target places
Server
forall Pl
(6)
with find targetPlace(T,Pl)
(7)
(9)
do apply addToken(Pl);
(8)
(10)
}
Respond
}
Code
Instance
model
Criteria:
rule
call
addToken,
variable
Pl
Trace
Records:
Lookup:
5. apply removeToken(Pl)
Uses
variable:
Pl
variable
T
Uses
model:
Client
Removes model: Token
53
54. Slicing
Model
Transforma7ons
–
An
Example
rule fireTransition(in T) = {
(1)
if (find isFireable(T)) {
(2)
Query
// remove tokens from source places
forall Pl
(3)
Client
Store
with find sourcePlace(T,Pl)
(4)
do apply removeToken(Pl);
(5)
// creates tokens on target places
Server
forall Pl
(6)
with find targetPlace(T,Pl)
(7)
(9)
do apply addToken(Pl);
(8)
(10)
}
Respond
}
Code
Instance
model
Criteria:
rule
call
addToken,
variable
Pl
Trace
Records:
Lookup:
4. find sourcePlace(T,Pl)
Modifies
variable:
Pl
variable
T
Uses
variable:
T
Uses
model:
Client,
Query
54
55. Slicing
Model
Transforma7ons
–
An
Example
rule fireTransition(in T) = {
(1)
if (find isFireable(T)) {
(2)
Query
// remove tokens from source places
forall Pl
(3)
Client
Store
with find sourcePlace(T,Pl)
(4)
do apply removeToken(Pl);
(5)
// creates tokens on target places
Server
forall Pl
(6)
with find targetPlace(T,Pl)
(7)
(9)
do apply addToken(Pl);
(8)
(10)
}
Respond
}
Code
Instance
model
Criteria:
rule
call
addToken,
variable
Pl
Trace
Records:
Lookup:
3. forall Pl
variable
T
55
56. Slicing
Model
Transforma7ons
–
An
Example
rule fireTransition(in T) = {
(1)
if (find isFireable(T)) {
(2)
Query
// remove tokens from source places
forall Pl
(3)
Client
Store
with find sourcePlace(T,Pl)
(4)
do apply removeToken(Pl);
(5)
// creates tokens on target places
Server
forall Pl
(6)
with find targetPlace(T,Pl)
(7)
(9)
do apply addToken(Pl);
(8)
(10)
}
Respond
}
Code
Instance
model
Criteria:
rule
call
addToken,
variable
Pl
Trace
Records:
Lookup:
2. if (find isFireable(T))
Uses
variable:
T
variable
T
Uses
model:
Client,
Query
56
57. Slicing
Model
Transforma7ons
–
An
Example
rule fireTransition(in T) = {
(1)
if (find isFireable(T)) {
(2)
Query
// remove tokens from source places
forall Pl
(3)
Client
Store
with find sourcePlace(T,Pl)
(4)
do apply removeToken(Pl);
(5)
// creates tokens on target places
Server
forall Pl
(6)
with find targetPlace(T,Pl)
(7)
(9)
do apply addToken(Pl);
(8)
(10)
}
Respond
}
Code
Instance
model
Criteria:
rule
call
addToken,
variable
Pl
Trace
Records:
Lookup:
2. if (find isFireable(T))
Control
Uses
variable:
T
variable
T
dependency
Uses
model:
Client,
Query
57
58. Slicing
Model
Transforma7ons
–
An
Example
rule fireTransition(in T) = {
(1)
if (find isFireable(T)) {
(2)
Query
// remove tokens from source places
forall Pl
(3)
Client
Store
with find sourcePlace(T,Pl)
(4)
do apply removeToken(Pl);
(5)
// creates tokens on target places
Server
forall Pl
(6)
with find targetPlace(T,Pl)
(7)
(9)
do apply addToken(Pl);
(8)
(10)
}
Respond
}
Code
Instance
model
Criteria:
rule
call
addToken,
variable
Pl
Trace
Records:
Lookup:
1. rule fireTransition(in T)
Modifies:
variable
T
variable
T
58
59. Slicing
Model
Transforma7ons
–
An
Example
rule fireTransition(in T) = {
(1)
if (find isFireable(T)) {
(2)
Query
// remove tokens from source places
forall Pl
(3)
Client
Store
with find sourcePlace(T,Pl)
(4)
do apply removeToken(Pl);
(5)
// creates tokens on target places
Server
forall Pl
(6)
with find targetPlace(T,Pl)
(7)
(9)
do apply addToken(Pl);
(8)
(10)
}
Respond
}
Code
Instance
model
Criteria:
rule
call
addToken,
variable
Pl
Trace
Records:
Lookup:
1. rule fireTransition(in T)
Data/model
Modifies:
variable
T
dependency
59
60. Implementa7on
Architecture
Model
Transforma7on
Tool
Source
Target
MT
program
metamodel
metamodel
Source
Target
MT
engine
model
model
61. Implementa7on
Architecture
Model
Transforma7on
Tool
Source
Target
MT
program
metamodel
metamodel
Source
Target
MT
engine
model
model
Execu7on
Trace
62. Implementa7on
Architecture
Model
Transforma7on
Tool
Source
Target
MT
program
metamodel
metamodel
Source
Target
Trace
metamodel
defined
MT
engine
model
model
for
adaptability
Execu7on
Trace
63. Implementa7on
Architecture
Model
Transforma7on
Tool
Source
Target
MT
program
metamodel
metamodel
Source
Target
MT
engine
model
model
Execu7on
Trace
64. Implementa7on
Architecture
Model
Transforma7on
Tool
Source
Target
MT
program
metamodel
metamodel
Source
Target
MT
engine
model
model
Execu7on
Trace
Slicing
algorithm
65. Implementa7on
Architecture
Model
Transforma7on
Tool
Source
Target
MT
program
metamodel
metamodel
Source
Target
MT
engine
model
model
Execu7on
Trace
Model
Slicing
algorithm
Slice
66. Implementa7on
Architecture
Model
Transforma7on
Tool
Source
Target
MT
program
metamodel
metamodel
Source
Target
MT
engine
model
model
Execu7on
Trace
Model
Program
Slicing
algorithm
Slice
Slice
67. Case
Studies
Petri
net
Antworld
Case
simula7on
Study
• Simple
transforma7on,
• Complex
simula7on
large
models
• Ever-‐growing
models
BPEL2SAL
Reengineering
transforma7on
Case
Study
• Complex
impera7ve
• Model
Extrac7on
control
structure
67
68. Evalua7on
Measurements:
Manually
selected
Ques7ons:
Size
of
slicing
criteria
• Model
slice
• Mul7ple
for
• Independence
• Transforma7on
each
of
model
slice
slice
transforma7on
from
selected
• Covering
all
statement
phases
of
the
• Independence
program
of
program
slice
from
model
instances
68
69. Evalua7on
Measurements:
Manually
selected
Ques7ons:
Size
of
slicing
criteria
• Model
slice
Data-‐driven
transforma7ons
• Mul7ple
for
• Independence
each
• Transforma7on
more
impera7ve
style
or
of
model
slice
slice
transforma7on
from
selected
• Covering
all
statement
phases
of
the
• Independence
program
of
program
slice
from
model
instances
69
70. Lessons
Learned
(Evalua7on
of
Case
Studies)
Petri
net
simula7on
Antworld
Case
Study
• Transforma7on
slice
largely
• Transforma7on
slices
more
model
independent
model-‐dependent
• Sta7c
slices
would
be
similar
BPEL2SAL
transforma7on
Reengineering
Case
Study
• Well-‐separated
phases
• Many
dependencies
between
• Few
dependencies
between
phases
• Small
slices
• Ignored
model
elements
missing
from
trace
and
slice
• Small
slices
70
71. Conclusion
Dynamic
backward
slicing
of
model
transforma7ons
• Models
and
transforma7on
simultaneously
Implementa7on
and
evalua7on
• Various
transforma7on
case
studies
• Using
the
VIATRA2
transforma7on
framework
Future
plans
• Transforma7on
debugging
support
• Por7ng
to
other
transforma7ons
tools
• Back-‐annota7on
between
trace
and
concrete
syntax
necessary
71