approaches to model transformation...
TRANSCRIPT
![Page 1: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/1.jpg)
APPROACHES TO MODEL
TRANSFORMATION REUSE
ICMT’2016, Viena
Juan de Lara
joint work with
Esther Guerra and Jesús Sánchez Cuadrado
Modelling&Software Engineering Research Group
http://miso.es @miso_uam
![Page 2: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/2.jpg)
FROM CONCEPTS TO
A-POSTERIORI TYPING Juan de Lara
joint work with
Esther Guerra and Jesús Sánchez Cuadrado
Modelling&Software Engineering Research Group
http://miso.es @miso_uam
ICMT’2016, Viena
![Page 3: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/3.jpg)
Model-transformations are the key elements
for automation in model-based approaches
MOTIVATION
3
Domain-specific
languages
Proliferation of domain
meta-models
![Page 4: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/4.jpg)
MOTIVATION
4
Transformations are defined over specific meta-models
Difficult to reuse for other related meta-models
How to avoid creating (essentially)
the same transformation for
different meta-models?
![Page 5: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/5.jpg)
MOTIVATION:
PROCESS MODELS TO PETRI NETS
5
Task
name: String
initial: boolean
next
* Place Transition id: String
tokens: int
inps
outs *
*
![Page 6: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/6.jpg)
6
press
wait
cross
start start
press
wait
cross
Task
name: String
initial: boolean
next
* Place Transition id: String
tokens: int
inps
outs *
*
MOTIVATION:
PROCESS MODELS TO PETRI NETS
task2PN
![Page 7: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/7.jpg)
7
L R=NAC
t:Task
name=n
t:Task
name=n
:Place id=n tokens=t.initial?1:0
t1:Task
t2:Task
:next
p1:Place
p2:Place
t1:Task
t2:Task
:next
p1:Place
p2:Place
:Transition
:inps
:outs
L R=NAC
TRANSFORMATION
(GRAPH BASED)
![Page 8: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/8.jpg)
8
TRANSFORMATION
(ATL)
rule Task2Place { from t : Process!Task to p : PN!Place ( id <- t.name, tokens <- if t.initial then 1 else 0 endif ) } rule next2Transition { from t1 : Process!Task, t2 : Process!Task (t1.next->includes(t2)) to tr : PN!Transition ( inps <- t1, outs <- t2 ) } …
![Page 9: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/9.jpg)
REUSE FOR ANOTHER
META-MODEL
9
Task
name: String
initial: boolean
next
* Place Transition id: String
tokens: int
inps
outs *
*
Activity
ident: String
InitialActivity
task2PN
FlowEdge from
to
![Page 10: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/10.jpg)
10
rule Task2Place { from t : Process!Task to p : PN!Place ( id <- t.name, tokens <- if t.initial then 1 else 0 endif ) } rule next2Transition { from t1 : Process!Task, t2 : Process!Task (t1.next->includes(t2)) to tr : PN!Transition ( inps <- t1, outs <- t2 ) } …
AD-HOC REUSE (COPY+ADAPT)
![Page 11: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/11.jpg)
AD-HOC REUSE (COPY+ADAPT)
11
rule Task2Place { from t : Process!Activity to p : PN!Place ( id <- t.ident, tokens <- if t.oclIsTypeOf(Process!InitialActivity) then 1 else 0 endif ) } rule next2Transition { from t1 : Process!Activity, t2 : Process!Activity (Process!FlowEdge.allInstances()->exist(e | e.from=t1 and e.to=t2)) to tr : PN!Transition ( inps <- t1, outs <- t2 ) }
![Page 12: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/12.jpg)
AD-HOC REUSE (COPY+ADAPT)
12
rule Task2Place { from t : Process!Activity to p : PN!Place ( name <- t.ident, tokens <- if t.oclIsTypeOf(Process!InitialActivity) then 1 else 0 endif ) } rule next2Transition { from t1 : Process!Activity, t2 : Process!Activity (Process!FlowEdge.allInstances()->exist(e | e.from=t1 and e.to=t2)) to tr : PN!Transition ( inps <- t1, outs <- t2 ) }
• Complex and error prone
• Repetitive
• Does not scale to large
transformations
![Page 13: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/13.jpg)
EXPLICIT MODEL ADAPTATION
13
13
Task
name: String
initial: boolean
next
* Place Transition id: String
tokens: int
inps
outs *
*
Activity
ident: String
InitialActivity
task2PN
FlowEdge from
to
activity2task;task2PN
activity2task
![Page 14: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/14.jpg)
MOTIVATION
14
rule Activity2Task { from t : Activities!Activity to p : Process!Task ( id <- t.ident, initial <- t.oclIsKindOf(Activities!InitialActivity), next <- Activities!FlowEdge.allInstances()-> select (e | e.from = t)-> collect(e | e.to ) ) }
t:
InitialActivity
ident=“a0”
p: Task
name=“a0”
initial=true
pl: Place
name=“a0”
tokens=1 activity2task task2PN
![Page 15: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/15.jpg)
MOTIVATION
15
rule Activity2Task { from t : Activities!Activity to p : Process!Task ( name <- t.ident, initial <- t.oclIsKindOf(Activities!InitialActivity), next <- Activities!FlowEdge.allInstances()-> select (e | e.from = t)-> collect(e | e.to ) ) }
• Three models involved,
complicates traceability
• Two transformations: less
efficient
• May require a transformation
back to the initial model
![Page 16: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/16.jpg)
Concept-based reuse de Lara, Guerra. “From types to type requirements: genericity for model-driven
engineering”. SoSyM 2103.
Sánchez Cuadrado, Guerra, de Lara. “A Component Model for Model
Transformations”. IEEE Trans. Software Eng. 2014.
Multi-level based reuse de Lara, Guerra, Sánchez Cuadrado. “Model-driven engineering with domain
specific meta-modelling languages”. SoSyM 2015.
A-posteriori typing de Lara, Guerra, Sánchez Cuadrado. “A-posteriori typing for Model-Driven
Engineering”. MoDELS 2015: 156-165
Transformation co-evolution Di Ruscio, Iovino, Pierantonio. “A Methodological Approach for the Coupled
Evolution of Metamodels and ATL Transformations”. ICMT’13
Model (sub-)typing Steel, Jezequel. “On Model Typing”. SoSyM 2007.
Guy, et al. “On Model Subtyping”. ECMFA'12.
SO WHAT?
16
![Page 17: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/17.jpg)
Concept-based reuse de Lara, Guerra. “From types to type requirements: genericity for model-driven
engineering”. SoSyM 2103.
Sánchez Cuadrado, Guerra, de Lara. “A Component Model for Model
Transformations”. IEEE Trans. Software Eng. 2014.
Multi-level based reuse de Lara, Guerra, Sánchez Cuadrado. “Model-driven engineering with domain
specific meta-modelling languages”. SoSyM 2015.
A-posteriori typing de Lara, Guerra, Sánchez Cuadrado. “A-posteriori typing for Model-Driven
Engineering”. MoDELS 2015: 156-165
Transformation co-evolution Di Ruscio, Iovino, Pierantonio. “A Methodological Approach for the Coupled
Evolution of Metamodels and ATL Transformations”. ICMT’13
Model (sub-)typing Steel, Jezequel. “On Model Typing”. SoSyM 2007.
Guy, et al. “On Model Subtyping”. ECMFA'12.
SO WHAT?
17
![Page 18: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/18.jpg)
Automate ad-hoc copy-adaptation:
CONCEPT-BASED REUSE
18
Concept
Msrc Mtar
from to
«conforms to» «conforms to»
Template
execution
MMsrc Instantiated
template
to
binding
MMtar
HOT
Transformation
template
definition
from
Final user
Transformation
developer
(with reuse)
Transformation
developer
(for reuse)
1
2 3
4
• Transformations defined over “concepts”
• Binding to concrete meta-model
• Automated transformation adaptation
![Page 19: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/19.jpg)
19
STRUCTURAL
CONCEPTS
Structural Concepts.
• They gather the structure needed
from meta-models for the
transformation to be applicable.
• They have the form of a meta-
model as well.
SimpleTask concept
Task
name: String
initial: boolean
next
*
Their elements are treated as variables, which need to be bound
to elements in specific meta-models.
Interface of the transformation
• No superflous elements
• No extra complexity
• Transformations become as simple as possible
![Page 20: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/20.jpg)
20
REUSABLE
TRANSFORMATIONS
Transformations defined using the types of the concept.
L R=NAC
t:Task
name=n
t:Task
name=n
:Place id=n tokens=t.initial?1:0
t1:Task
t2:Task
:next
p1:Place
p2:Place
t1:Task
t2:Task
:next
p1:Place
p2:Place
:Transition
:inps
:outs
L R=NAC
![Page 21: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/21.jpg)
21
BINDING
Concept binding:
• Bind each element in the
concept to an element in the
meta-model.
Task SETask
name id
initial isInitial
next following
Binding SETask Engineer
Coding Testing
actors *
Software Engineering processes
Design
SimpleTask concept
Task
name: String
initial: boolean
next
*
Analysis
id: String
isInitial: boolean
following
0..5
![Page 22: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/22.jpg)
ADAPTATION
The transformation gets automatically adapted
Similar to template instantiation in generic programming
22
t:SETask
id=n
t:SETask
id=n
:Place id=n tokens=t.isInitial?1:0
t1:SETask
t2:SETask
:following
p1:Place
p2:Place
t1:SETask
t2:SETask
:following
p1:Place
p2:Place
:Transition
:inps
:outs
![Page 23: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/23.jpg)
WAIT A MOMENT…
IS THE RESULTING
TRANSFORMATION
CORRECT?
Rules for the binding
• Cardinalities
• Composition, features, subtyping, etc
Depends on what you do with the concept
• Read only (e.g., for M2M transformation)
• Write (e.g., for in-place transformation)
23
SETask Task
SETask Task
Concept Meta-model binding
R
W
Sánchez Cuadrado, Guerra, de Lara. “Flexible Model-to-Model Transformation Templates: An Application
to ATL”. JOT 2012.
Task next * SETask
R following 0..5
SETask
following 0..5 Task
next * W
![Page 24: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/24.jpg)
WAIT A MOMENT…
ISN’T THIS JUST A
RENAMING?
HOW FLEXIBLE IS THE
BINDING?
Basic binding
• Renaming of types, attributes
• N-to-1 mappings
More flexibility is needed in practice
• Hybrid concepts
• Cardinalities in concept elements
• Adapters
24
![Page 25: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/25.jpg)
25
MORE FLEXIBLE
BINDINGS
Concepts express a
particular design choice on
how structure is organized
Different meta-models may
implement the same
structure differently
• Association as
intermediate class
• Enumerate as subclases
• etc.
binding
Task
name: String
initial: boolean
next
*
Activity
ident: String
InitialActivity
FlowEdge from
to
![Page 26: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/26.jpg)
26
HYBRID CONCEPTS
Hide “unessential” structure behind
required operations
Operations need to be implemented
together with the binding
The generic transformation may use
these required operations
Task
getName(): String
isInitial():boolean
getNext(): Task[*]
SimpleTask hybrid
concept
![Page 27: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/27.jpg)
27
HYBRID CONCEPTS
operation Activity getName() : String { return self.ident }
operation Activity isInitial() : boolean { return false; }
operation Activity getNext() : Set(Activity) {
return FlowEdge.all.select(f|f.from=self).collect(f|f.to);
}
operation InitialActivity isInitial() : boolean { return true;}
Task Activity
binding
![Page 28: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/28.jpg)
28
HYBRID CONCEPTS
operation Activity getName() : String { return self.ident }
operation Activity isInitial() : boolean { return false; }
operation Activity getNext() : Set(Activity) {
return FlowEdge.all.select(f|f.from=self).collect(f|f.to);
}
operation InitialActivity isInitial() : boolean { return true;}
Task Activity
binding
Allows bridging a large number of
heterogeneities
The generic transformation needs
to be written using these
operations. Difficult for e.g. graph
transformation approaches
![Page 29: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/29.jpg)
29
BINDING ADAPTERS
Elements in the concept are variables
• Allow binding them to expressions: adapters
Adapters resolve the heterogeneities between the
concept and the meta-model
They induce an adaptation of the transformation
![Page 30: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/30.jpg)
rule Task2Place { from t : Pr!Task to p : PN!Place ( tokens <- if t.initial then 1 else 0 endif )}
30
Task
initial: boolean
next
*
Concept
Activity
InitialActivity
Flow
Edge
from
to
Task Activity
Task.initial if (self.oclIsKindOf(InitialActivity)) then
true else false endif
Task.next FlowEdge.allInstances()->
select(e|e.from=self)->
collect(to)
Meta-model
typed on
helper context Pr!Activity def: initial : Boolean = if (…) then true else false endif; rule Task2Place { from t : Pr!Activity to p : PN!Place ( tokens <- if t.initial then 1 else 0 endif )}
typed on
adaptation
![Page 31: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/31.jpg)
31
ADAPTERS VS
HYBRID CONCEPTS
Bridge a large number of
heterogeneities
The generic transformation
remains agnostic w.r.t. the
binding
Adaptation mechanism
dependent on the
particular transformation
language (e.g., ATL)
Bridge a large number of
heterogeneities
The generic
transformation needs to
be written using
operations
Adaptation mechanism
dependent on the
particular transformation
language (e.g., Epsilon)
Hybrid concepts Adapters
![Page 32: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/32.jpg)
WAIT A MOMENT…
Aren’t concepts characterizing a set of “suitable”
meta-models for the transformation?
Isn’t that exactly what meta-models do (for
models)?
Concepts as meta-meta-models
Rely on typing: no need to adapt the
transformation
32
![Page 33: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/33.jpg)
Language families as instances of a
common meta-model
MULTI-LEVEL BASED
REUSE
33
Process Modelling
Software Process
Modelling Language Educational
Modelling Language
Software Process
Models
Educational
Models
![Page 34: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/34.jpg)
34
MULTI-LEVEL BASED
GENERICITY
Transformations can be
defined at the top meta-level
Applicable to instances of
all languages in the family
Process Modelling
Software Process
Modelling Language Educational
Modelling Language
Software Process
Models
Educational
Models
…
Transformation
defined on
applic
able
to
![Page 35: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/35.jpg)
35
MULTI-LEVEL BASED
GENERICITY
Task
Kind Gateway
Kind
Seq Par
src
tar
*
*
Test: TaskKind Coding:TaskKind
T2C: Seq
C2T: Seq src tar
src tar
data:
Coding
unitDt:
Test
gui:
Coding
: C2T src
tar
: T2C
tar
src
«conf»
«conf» data: Coding
unitDT: Test
gui: Coding
rule Task2Place
transform t : Level0!TaskKind
to p : Place
{
...
}
....
defined on
![Page 36: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/36.jpg)
rule Task2Place
transform t : Level0!TaskKind
to p : Place
{
...
}
....
36
MULTI-LEVEL BASED
GENERICITY
data: Coding
unitDT: Test
gui: Coding
rule Coding2Place
transform t : Coding
to p : Place
{…}
rule Test2Place
transform t : Test
to p : Place
{…}
defined on
data:
Coding
unitDt:
Test
gui:
Coding
: C2T src
tar
: T2C
tar
src
«conf»
Task
Kind Gateway
Kind
Seq Par
src
tar
*
*
Test: TaskKind Coding:TaskKind
T2C: Seq
C2T: Seq src tar
src tar
«conf»
![Page 37: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/37.jpg)
37
MULTI-LEVEL VS CONCEPT-
BASED GENERICITY
Concept-based Genericity
Multi-level-based Genericity
• A posteriori binding: meta-
models may exist first.
• Adapters and hybrid concepts
to solve heterogeneities.
• A priori: meta-meta-model
should exist first.
• Ability to apply an operation
several meta-levels below.
• Domain-Specific meta-
modelling.
![Page 38: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/38.jpg)
38
CAN WE GET THE BEST OF
BOTH APPROACHES?
• A posteriori binding:
meta-models may exist
first.
• Adapters or Hybrid
concepts to solve
heterogeneities.
• Independence of the
transformation
language
Concept-based reuse Multi-level reuse
![Page 39: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/39.jpg)
39
CAN WE GET THE BEST OF
BOTH APPROACHES?
• A posteriori binding:
meta-models may exist
first.
• Adapters to solve
heterogeneities.
• Independence of the
transformation
language
Concept-based reuse Multi-level reuse
Let’s make the typing relation:
• A-posteriori
• As flexible as adapters
![Page 40: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/40.jpg)
A-POSTERIORI TYPING
40
A more flexible typing mechanism for MDE
Decouple instantiation from classification
• Interfaces in object-oriented programming
• Roles in role-based programming languages
Allow dynamic typing and multiple classifiers for objects
Type and instance-level reclassification specifications
![Page 41: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/41.jpg)
CONSTRUCTIVE VS
A-POSTERIORI TYPING
41
Task start: Date duration: int name: String
review: Task start= 8/5/15 duration= 30 name= “rev”
creation «instance of»
Measurable
quantity: int
Schedulable
date: Date
review: Task
Tasks meta-model
model
Scheduling MM Measuring MM
model
«instance of» «instance of»
start= 8/5/15 duration= 30 name= “rev”
«Schedulable,Measurable»
Constructive typing A-posteriori typing
Constructive typing A-posteriori typing
![Page 42: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/42.jpg)
42
* topics *
* res
Task start: Date duration: int name: String
Tasks meta-model (constructive types)
Resource
Person owner
assigned
1..* 1..*
0..3
reviews Article title: String
Conference meta-model (dynamic types)
Reviewer
Author authors
Topic desc: String
«Author» p2: Person
«Reviewer» p1: Person
«Article» r: Resource
:owner
t1:Task
start: 8/5/15 duration: 30 name: “rev”
:res
:assigned «Author,Reviewer»
p2: Person «Reviewer»
p1: Person
«Article» r: Resource
:owner
t1:Task start: 8/5/15 duration: 30 name: “rev”
:res
:assigned
«Author» p3: Person
«Article» s: Resource
:owner
t2:Task start: 9/5/15 duration: 30 name: “rev”
:res
:assigned
the model changes and gets retyped
creation «instance of»
model
• A Person (constructive type) is only a Reviewer (a posteriori type)
when some condition is met.
A-POSTERIORI TYPING:
FLEXIBLE REUSE
![Page 43: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/43.jpg)
SPECIFYING AP TYPINGS
AT THE TYPE-LEVEL
43
Schedulable date: Date span: double
review: Task
Tasks meta-model ( MMC )
start= 8/5/15 /months= 1 duration= 30 name= “rev”
Scheduling MM ( MMR )
Task start: Date duration: int name: String
Typing Specification
Task Schedulable self.start date /months: double=self.duration/30 span
«Schedulable»
«date»
«span»
creation «instance of» (constructive)
«instance of» (a-posteriori)
• Derived attributes (months) defined in the typing
specification.
• Typing rules: ensure syntactic correctness
![Page 44: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/44.jpg)
TYPE-LEVEL AP TYPING
44
date: Date span: double
writing: Task start= 15/3/15 duration= 90 name= “wrt”
review: Task start= 8/5/15 duration= 30 name= “rev”
Schedulable
Scheduling MM (MMR)
Instance model of Tasks ( MMC )
«instance of» (a-posteriori)
“Scheduling glasses”
Operations
review: Schedulable date= 8/5/15 span= 1
{review, writing}
{1, 3}
Schedulable.allInstances()
writing: Schedulable
date= 15/3/15 span= 3
Schedulable.allInstances()-> collect(span)
![Page 45: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/45.jpg)
SPECIFYING AP TYPINGS AT
THE INSTANCE LEVEL
45
date: Date span: double
writing: Task start= 15/3/15 duration= 90 name= “wrt”
review: Task start= 8/5/15 /months= 1 duration= 30 name= “rev”
«Schedulable»
«date»
«instance of» (a-posteriori)
Schedulable
Scheduling MM (MMR) Typing Specification
Task.allInstances()->select(duration<80) Schedulable self.start date /months: double=self.duration/30 span
Instance model of Tasks ( MMC )
«span»
• Typing defined by queries.
• Derived attributes defined by queries as well.
![Page 46: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/46.jpg)
INSTANCE-LEVEL AP TYPING
46
Operations
date: Date span: double
writing: Task start= 15/3/15 duration= 90 name= “wrt”
review: Task start= 8/5/15 duration= 30 name= “rev”
Schedulable
Scheduling MM (MMR)
Instance model of Tasks ( MMC )
«instance of» (a-posteriori)
review: Schedulable date= 8/5/15 span= 1
Schedulable.allInstances()-> collect(span)
{review}
{1}
Schedulable.allInstances()
“Scheduling glasses”
![Page 47: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/47.jpg)
INSTANCE-LEVEL AP TYPING
47
Operations
date: Date span: double
writing: Task start= 15/3/15 duration= 60 name= “wrt”
review: Task start= 8/5/15 duration= 30 name= “rev”
Schedulable
Scheduling MM (MMR)
Instance model of Tasks ( MMC )
«instance of» (a-posteriori)
review: Schedulable date= 8/5/15 span= 1
Schedulable.allInstances()-> collect(span)
{review, writing}
{1, 2}
Schedulable.allInstances()
“Scheduling glasses”
writing: Schedulable
date= 15/3/15 span= 2
![Page 48: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/48.jpg)
Activity Task
ident name
/init : boolean =
self.oclsKindOf(InitialActivity) initial
/follow: Task[*] = FlowEdge.allInstances()->
select(e|e.from=self)->
collect(e|e.to) next
EXAMPLE
48
Task
name: String
initial: boolean
next
*
Activity
ident: String
InitialActivity
FlowEdge from
to
![Page 49: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/49.jpg)
Aren’t retypings now a kind of transformation?
Producing a view of a given model
How expressive are retypings considered as
model transformations?
49
WAIT A MOMENT…
![Page 50: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/50.jpg)
A-POSTERIORI TYPING AS A
TRANSFORMATION
50
Task
name: String
initial: boolean
next Place
Transition id: String
tokens: int
inps
outs *
* task2PN
Task.allInstances() Place
name id
/toks : int = if (self.initial) then 1 else 0 tokens
Task.allInstances()->select(t|t.next.isDefined()) Transition
/prevs : Task[*] = Set{self} inps
/nexts : Task[*] = Set{self.next} outs
0..1
![Page 51: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/51.jpg)
A-POSTERIORI TYPING AS A
TRANSFORMATION
51
Place Transition id: String
tokens: int
inps
outs *
*
t1:Task
name=“t1”
initial=false
name=“t2”
initial=true :next
name=“t3”
initial=false
:next
t2:Task
t3:Task
Task
name: String
initial: boolean
next
0..1 task2PN
![Page 52: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/52.jpg)
A-POSTERIORI TYPING AS A
TRANSFORMATION
52
Place Transition id: String
tokens: int
inps
outs *
*
«Place»
«Place, Transition»
«Place, Transition»
«id»
«id»
«id»
Task
name: String
initial: boolean
next
0..1 task2PN
t1:Task name=“t1”
initial=false
name=“t2”
initial=true :next
name=“t3”
initial=false
:next
t2:Task
t3:Task
![Page 53: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/53.jpg)
A-POSTERIORI TYPING AS A
TRANSFORMATION
53
Place Transition id: String
tokens: int
inps
outs *
*
t2:Task
t3:Task «Transition»
«Transition»
«outs»
«outs»
«inps»
«inps»
Task
name: String
initial: boolean
next
0..1 task2PN
«Place»
«Place»
«id»
«id» name=“t2”
initial=true
name=“t3”
initial=false
t2:Task
t3:Task
«Place»
«id»
t1:Task name=“t1”
initial=false
![Page 54: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/54.jpg)
TYPING AS TRANSFORMATION:
THE GOOD
54
No objects need to be created
• Just retype existing elements
Incrementality (forwards)
• For free
Bidirectionality
• For restricted cases of type-level specifications
• Incrementality (backwards) for (more) restricted cases
Analysis
• Executability
• Totality
• Surjectivity
![Page 55: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/55.jpg)
55
Limited expressivity
• 1-to-1 or N-to-1 mappings
• 1-to-N and N-to-M only in certain cases
No replacement for regular transformation languages
• Helpers, auxiliary operations, etc
Efficiency operations for instance-level specifications
• T.allInstances() needs to compute all objects belonging to T
• Type caches and “smart” update policies
TYPING AS TRANSFORMATION:
THE BAD
![Page 56: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/56.jpg)
ANALYSIS OF
A-POSTERIORI RETYPING
56
Schedulable date: Date span: double
Tasks meta-model ( MMC ) Scheduling MM ( MMR )
Task start: Date duration: int name: String
Typing Specification
Task Schedulable self.start date /months: double=self.duration/30 span
• Creation and role meta-models may have OCL constraints.
• Executability: Can some “Tasks” models become valid
Scheduling models?.
• Totality: Can all Tasks models become valid Scheduling
model?.
• Surjectivity: Can every Scheduling instance be obtained via
retyping some Tasks instance?
CR0: self. span>0 CC0: self. duration<100
![Page 57: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/57.jpg)
57
SO WHAT?
WHAT HAVE WE
GAINED?
• The transformation is
adapted
• Adapters to solve
heterogeneities
• Automate ad-hoc reuse
• Language families
• Independence of the
transformation language
• Transformation applicable
across levels
Concept-based reuse Multi-level reuse
• Independence of the transformation language
• Heterogeneities can be resolved
• Typing becomes dynamic and multiple
• Improve model-adaptation-based reuse
Retyping-based reuse
![Page 58: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/58.jpg)
T l support
58
![Page 59: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/59.jpg)
TOOL SUPPORT
59
bentō (http://www.miso.es/tools/bento.html)
• Component model for transformations
• Concepts
• Domain specific language for bindings
• ATL transformations
metaDepth (http://metadepth.org)
• Multi-level textual modelling
• Integrated with the Epsilon languages (EOL, ETL, EGL)
• Concepts (structural and hybrid)
• Multi-level based reuse
• A-posteriori typing
![Page 60: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/60.jpg)
BENTŌ
Adaptation of ATL transformations according to the binding
Support for refactoring meta-models into concepts
60
Sánchez Cuadrado, Guerra, de Lara. “A Component Model for Model Transformations”. IEEE TSE 2014
Sánchez Cuadrado, Guerra, de Lara. “Reusable Model Transformation Components with bentō”. ICMT’ 15
![Page 61: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/61.jpg)
// Model Tasks someTasks { Task t0 { start = "30/04/2015"; duration = 30; name = "coding"; } }
METADEPTH
61
Multi-level textual modelling
Concepts
• Over every Epsilon language
• Hybrid concepts
A-posteriori typing
• Over every Epsilon language
Analysis of type-level specs
• Integration with the USE validator
• Bidirectional reclassification
• Reclassification totality and surjectivity
// Meta-model Model Tasks { Node Task { start : Date; duration : int; name : String; } }
![Page 62: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/62.jpg)
CONCEPT-BASED
REUSE
62
concept SimpleTasks(&M, &T, &initial) { Model &M { Node &T { &initial : boolean; name : String; } } }
bind SimpleTasks( SEProcess, SEProcess::SETask, SEProcess::SETask.isInitial )
<<some operation>>
rule Task2Place transform task : Source!&T to place : Target!Place { place.name := task.name; if (task.&initial=true) place.tokens:=1 else place.tokens:=0 }
ETL transformation
![Page 63: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/63.jpg)
63
Model ProcessModel@2 { Node Task { name@1 : String[0..1]; initial : boolean = false; } }
ProcessModel SoftwareProcess { Task Analysis { name = “reqs, analysis”; } }
SoftwareProcess aSoftProcess{ Analysis a { initial = true; } }
@model(potency=0) rule Task2Place transform task : Source!Task to place : Target!Place { place.name := task.name; if (task.initial=true) place.tokens:=1 else place.tokens:=0 }
ETL transformation
MULTI-LEVEL BASED
REUSE
![Page 64: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/64.jpg)
A-POSTERIORI TYPING:
BX MODEL TRANSFORMATIONS
Simple bidirectional model transformations by reclassification
64
![Page 65: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/65.jpg)
Simple bidirectional model transformations by reclassification
65
type Factory PetriNet {
Conveyor::parts > Place::tokens,
Generator::outps > Transition::outs, Terminator::inps > Transition::ins,
Assembler::inps > Transition::ins, Assembler::outps > Transition::outs,
}
A-POSTERIORI TYPING:
BX MODEL TRANSFORMATIONS
![Page 66: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/66.jpg)
Simple bidirectional model transformations by reclassification
66
Forward reclassification
A-POSTERIORI TYPING:
BX MODEL TRANSFORMATIONS
![Page 67: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/67.jpg)
Factory example { // 1st typing Conveyor p {}
Terminator t { inps= [p]; }
}
Factory example { // 2nd typing Conveyor p {}
Assembler t { inps= [p]; }
}
67
PetriNet example {
Place p {}
Transition t { ins = [p]; }
}
MetaDepth console > dump example as Factory
The typing specification can also be used backwards!
Might yield multiple AP typings for a model
A-POSTERIORI TYPING:
BX MODEL TRANSFORMATIONS
![Page 68: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/68.jpg)
// Model witness with no Petri net equivalent Factory noRefinementWitness {
Assembler assembler2 { outps= [conveyor2, conveyor1]; }
Conveyor conveyor1 { name= "string1"; }
Conveyor conveyor2 { name= "string1"; }
Generator generator2 { outps= [conveyor1]; }
Part part2 {
qa = true;
} // This part would become a token outside any Place } 6
8
The reclassification is not total
• Equivalently, the backwards reclassification is not surjective
The solver produces a witness
• A Factory model that cannot be reclassified into a Petri net
A-POSTERIORI TYPING:
BX MODEL TRANSFORMATIONS
![Page 69: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/69.jpg)
APPLICATIONS:
REUSE OF OPERATIONS
Simulator for Petri nets can be reused “as is” for Factory
• Provide an AP typing from Factory to Petri nets
• Factory models become typed as Petri nets
69
// EOL excerpt of the simulator
operation Transition enabled() : Boolean {
return self.ins.forAll(p| p.tokens.size()>0);
}
operation step() : Boolean {
var enabled : Set(Transition) := Transition.all.select( t | t.enabled());
... // fire one random Transition from enabled }
![Page 70: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/70.jpg)
APPLICATIONS:
FLEXIBLE REUSE
70
// Type parts as tokens only if QA is passed type Factory PetriNet inst {
$Conveyor.all$ > Place with {
/sp : Token[*] = $self.parts.select(p|p.qa=true)$ > tokens
}
$Part.all.select( p | p.qa = true )$ > Token
}
![Page 71: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/71.jpg)
SUMMARY
Approaches to reuse in model transformation
• Reuse transformations for other meta-models
Concept-based
• Ideas from generic programming
• Hybrid concepts, adapters
Multi-level modelling
• Families of languages
A-posteriori typing
• Provide additional types via retyping specifications
• Dynamic typing 71
![Page 72: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/72.jpg)
FUTURE WORK
72
Syntactic vs Semantic reuse correctness
• Transformation intents
Improve tool support for retypings and reuse
• Repositories of reusable transformations
• Reuse recommenders
Exploit structural typing in MDE
Explore multiple typings for MDE
Explore more in detail retypings as bx transformations
![Page 73: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/73.jpg)
73
if you put water into a cup, it
becomes the cup
TAKE-HOME LESSON
![Page 74: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/74.jpg)
74
if you put water into a cup, it
becomes the cup
you put water into a bottle, it
becomes the bottle
TAKE-HOME LESSON
![Page 75: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/75.jpg)
75
if you put water into a cup, it
becomes the cup
you put water into a bottle, it
becomes the bottle
you put it in a teapot, it becomes
the teapot
TAKE-HOME LESSON
![Page 76: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/76.jpg)
76
if you put water into a cup, it
becomes the cup
you put water into a bottle, it
becomes the bottle
you put it in a teapot, it becomes
the teapot
be like water my friend
Bruce Lee
![Page 77: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/77.jpg)
77
if you put water into a cup, it
becomes the cup
you put water into a bottle, it
becomes the bottle
you put it in a teapot, it becomes
the teapot
(let transformations) be like water
my friend Bruce Lee
![Page 78: APPROACHES TO MODEL TRANSFORMATION REUSEstaf2016.conf.tuwien.ac.at/wp-content/uploads/ICMT2016...APPROACHES TO MODEL TRANSFORMATION REUSE ICMT’2016, Viena Juan de Lara joint work](https://reader030.vdocuments.site/reader030/viewer/2022040323/5e688adc4fb7de74f323f276/html5/thumbnails/78.jpg)
THANKS!
78
http://www.miso.es
joint work with
E. Guerra and J. Sánchez Cuadrado
@miso_uam