Describing Behaviour Models through Reusable, Multilevel, Coupled - - PowerPoint PPT Presentation

describing behaviour models through reusable multilevel
SMART_READER_LITE
LIVE PREVIEW

Describing Behaviour Models through Reusable, Multilevel, Coupled - - PowerPoint PPT Presentation

Describing Behaviour Models through Reusable, Multilevel, Coupled Model Transformations Adrian Rutle Fernando Mac as Francisco Dur an Roberto Rodr guez-Echeverr a Uwe Wolter November 2, 2016 Fernando Mac as et al.


slide-1
SLIDE 1

Describing Behaviour Models through Reusable, Multilevel, Coupled Model Transformations

Adrian Rutle Fernando Mac´ ıas Francisco Dur´ an Roberto Rodr´ ıguez-Echeverr´ ıa Uwe Wolter November 2, 2016

Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-2
SLIDE 2

PLS example with two-level approach

Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-3
SLIDE 3

PLS example with multilevel approach

Machine

EClass

1-1 Container

EClass

1-1 Part

EClass

1-1 contains@1-2 EReference

  • ut@1-2

EReference in@1-2 EReference creates@1-1 EReference

(a) generic_plant

ghead

GenHead

1-1 ghandle

GenHandle

1-1 c1

Conveyor

1-1 c2

Conveyor

1-1 c3

Conveyor

1-1 t1

Tray

1-1 t2

Tray

1-1 assembler

Assembler

1-1 cout@1-1 cout cout@1-1 cout cout@1-1 cout in@1-1 in@2

  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2

(d) hammer_config_1

gleg

GenLeg

1-1 gseat

GenSeat

1-1 b1

Box

1-1 b2

Box

1-1 b3

Box

1-1 gluer

Gluer

1-1

  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2
  • ut@1-1 out@2

in@1-1 in@2 in@1-1 in@2

(e) stool_config_1

GenLeg

Machine

1-1 Leg

Part

1-1 GenSeat

Machine

1-1 Seat

Part

1-1 Box

Container

1-1 Gluer

Machine

1-1 Stool

Part

1-1 creates@1-1 creates creates@1-1 creates has@1-1 EReference@2 has@1-1 EReference@2

(c) stool_plant

1..1 3..3 GenHandle

Machine

1-1 GenHead

Machine

1-1 Conveyor

Container

1-1 Tray

Container

1-1 Handle

Part

1-1 Head

Part

1-1 Hammer

Part

1-1 Assembler

Machine

1-1 creates@1-1 creates creates@1-1 creates cout@1-1 EReference@2 has@1-1 EReference@2 has@1-1 EReference@2

(b) hammer_plant

1..1 1..1

Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-4
SLIDE 4

PLS example with multilevel approach

ghead

GenHead

1-1 ghandle

GenHandle

1-1 c1

Conveyor

1-1 c2

Conveyor

1-1 c3

Conveyor

1-1 t1

Tray

1-1 t2

Tray

1-1 assembler

Assembler

1-1 cout@1-1 cout cout@1-1 cout cout@1-1 cout in@1-1 in@2

  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2

Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-5
SLIDE 5

Defining semantics for behavioural models

We use model transformations: Inherently multilevel Commonality can be exploited for reusability Across languages (horizontally) Inside the same stack of languages (vertically) Generic if defined on higher levels Trade-off between genericity may lead to imprecision

Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-6
SLIDE 6

Defining semantics for behavioural models

We use model transformations: Inherently multilevel Commonality can be exploited for reusability Across languages (horizontally) Inside the same stack of languages (vertically) Generic if defined on higher levels Trade-off between genericity may lead to imprecision Our proposal: Multilevel transformations coupled with a meta-level: precise and reusable

Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-7
SLIDE 7

Option 1: Two-level rule

Create an instance of Handle for each instance

  • f GenHandle

GenHandle Machine 1-1 GenHead Machine 1-1 Conveyor Container 1-1 Tray Container 1-1 Handle Part 1-1 Head Part 1-1 Hammer Part 1-1 Assembler Machine 1-1 creates@1-1 creates creates@1-1 creates cout@1-1 EReference@2 has@1-1 EReference@2 has@1-1 EReference@2

——————————————–

ghead GenHead 1-1 ghandle GenHandle 1-1 c1 Conveyor 1-1 c2 Conveyor 1-1 c3 Conveyor 1-1 t1 Tray 1-1 t2 Tray 1-1 assembler Assembler 1-1 cout@1-1 cout cout@1-1 cout cout@1-1 cout in@1-1 in@2

  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2

gha

GenHandle

h

Handle

gha

GenHandle

cr:creates FROM TO

Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-8
SLIDE 8

Option 1: Two-level rule

Create an instance of Handle for each instance

  • f GenHandle

Create an instance of Head for each instance of GenHead

GenHandle Machine 1-1 GenHead Machine 1-1 Conveyor Container 1-1 Tray Container 1-1 Handle Part 1-1 Head Part 1-1 Hammer Part 1-1 Assembler Machine 1-1 creates@1-1 creates creates@1-1 creates cout@1-1 EReference@2 has@1-1 EReference@2 has@1-1 EReference@2

——————————————–

ghead GenHead 1-1 ghandle GenHandle 1-1 c1 Conveyor 1-1 c2 Conveyor 1-1 c3 Conveyor 1-1 t1 Tray 1-1 t2 Tray 1-1 assembler Assembler 1-1 cout@1-1 cout cout@1-1 cout cout@1-1 cout in@1-1 in@2

  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2

ghe

GenHead

h

Head

ghe

GenHead

cr:creates FROM TO

Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-9
SLIDE 9

Option 1: Two-level rule

GenHandle Machine 1-1 GenHead Machine 1-1 Conveyor Container 1-1 Tray Container 1-1 Handle Part 1-1 Head Part 1-1 Hammer Part 1-1 Assembler Machine 1-1 creates@1-1 creates creates@1-1 creates cout@1-1 EReference@2 has@1-1 EReference@2 has@1-1 EReference@2

——————————————–

ghead GenHead 1-1 ghandle GenHandle 1-1 c1 Conveyor 1-1 c2 Conveyor 1-1 c3 Conveyor 1-1 t1 Tray 1-1 t2 Tray 1-1 assembler Assembler 1-1 cout@1-1 cout cout@1-1 cout cout@1-1 cout in@1-1 in@2

  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2

ghe

GenHead

h

Head

ghe

GenHead

cr:creates FROM TO

Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-10
SLIDE 10

Option 1: Two-level rule

Problems × Too specific × Difficult to reuse × Each machine needs a new rule × Each language or hierarchy needs its set of similar rules × Leads to proliferation

GenHandle Machine 1-1 GenHead Machine 1-1 Conveyor Container 1-1 Tray Container 1-1 Handle Part 1-1 Head Part 1-1 Hammer Part 1-1 Assembler Machine 1-1 creates@1-1 creates creates@1-1 creates cout@1-1 EReference@2 has@1-1 EReference@2 has@1-1 EReference@2

——————————————–

ghead GenHead 1-1 ghandle GenHandle 1-1 c1 Conveyor 1-1 c2 Conveyor 1-1 c3 Conveyor 1-1 t1 Tray 1-1 t2 Tray 1-1 assembler Assembler 1-1 cout@1-1 cout cout@1-1 cout cout@1-1 cout in@1-1 in@2

  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2

ghe

GenHead

h

Head

ghe

GenHead

cr:creates FROM TO

Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-11
SLIDE 11

Option 2: Multilevel rule

Create an instance of Part for each instance of Machine

Machine EClass 1-1 Container EClass 1-1 Part EClass 1-1 contains@1-2 EReference
  • ut@1-2

EReference in@1-2 EReference creates@1-1 EReference

——————————————–

GenHandle Machine 1-1 GenHead Machine 1-1 Conveyor Container 1-1 Tray Container 1-1 Handle Part 1-1 Head Part 1-1 Hammer Part 1-1 Assembler Machine 1-1 creates@1-1 creates creates@1-1 creates cout@1-1 EReference@2 has@1-1 EReference@2 has@1-1 EReference@2

——————————————–

ghead GenHead 1-1 ghandle GenHandle 1-1 c1 Conveyor 1-1 c2 Conveyor 1-1 c3 Conveyor 1-1 t1 Tray 1-1 t2 Tray 1-1 assembler Assembler 1-1 cout@1-1 cout cout@1-1 cout cout@1-1 cout in@1-1 in@2
  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2

m

Machine

p

Part

m

Machine

cr:creates FROM TO

Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-12
SLIDE 12

Option 2: Multilevel rule

Machine EClass 1-1 Container EClass 1-1 Part EClass 1-1 contains@1-2 EReference
  • ut@1-2

EReference in@1-2 EReference creates@1-1 EReference

——————————————–

GenHandle Machine 1-1 GenHead Machine 1-1 Conveyor Container 1-1 Tray Container 1-1 Handle Part 1-1 Head Part 1-1 Hammer Part 1-1 Assembler Machine 1-1 creates@1-1 creates creates@1-1 creates cout@1-1 EReference@2 has@1-1 EReference@2 has@1-1 EReference@2

——————————————–

ghead GenHead 1-1 ghandle GenHandle 1-1 c1 Conveyor 1-1 c2 Conveyor 1-1 c3 Conveyor 1-1 t1 Tray 1-1 t2 Tray 1-1 assembler Assembler 1-1 cout@1-1 cout cout@1-1 cout cout@1-1 cout in@1-1 in@2
  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2

m

Machine

p

Part

m

Machine

cr:creates FROM TO

Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-13
SLIDE 13

Option 2: Multilevel rule

Problems × Too generic × Not precise × All machines will create parts × All parts can be created directly × Any machine can create any part

Machine EClass 1-1 Container EClass 1-1 Part EClass 1-1 contains@1-2 EReference
  • ut@1-2

EReference in@1-2 EReference creates@1-1 EReference

——————————————–

GenHandle Machine 1-1 GenHead Machine 1-1 Conveyor Container 1-1 Tray Container 1-1 Handle Part 1-1 Head Part 1-1 Hammer Part 1-1 Assembler Machine 1-1 creates@1-1 creates creates@1-1 creates cout@1-1 EReference@2 has@1-1 EReference@2 has@1-1 EReference@2

——————————————–

ghead GenHead 1-1 ghandle GenHandle 1-1 c1 Conveyor 1-1 c2 Conveyor 1-1 c3 Conveyor 1-1 t1 Tray 1-1 t2 Tray 1-1 assembler Assembler 1-1 cout@1-1 cout cout@1-1 cout cout@1-1 cout in@1-1 in@2
  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2

m

Machine

p

Part

m

Machine

cr:creates FROM TO

Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-14
SLIDE 14

Option 3: Multilevel Coupled rule

Create an instance of each specific Part for each instance of Machine that generates that Part

Machine EClass 1-1 Container EClass 1-1 Part EClass 1-1 contains@1-2 EReference
  • ut@1-2

EReference in@1-2 EReference creates@1-1 EReference

——————————————–

GenHandle Machine 1-1 GenHead Machine 1-1 Conveyor Container 1-1 Tray Container 1-1 Handle Part 1-1 Head Part 1-1 Hammer Part 1-1 Assembler Machine 1-1 creates@1-1 creates creates@1-1 creates cout@1-1 EReference@2 has@1-1 EReference@2 has@1-1 EReference@2

——————————————–

ghead GenHead 1-1 ghandle GenHandle 1-1 c1 Conveyor 1-1 c2 Conveyor 1-1 c3 Conveyor 1-1 t1 Tray 1-1 t2 Tray 1-1 assembler Assembler 1-1 cout@1-1 cout cout@1-1 cout cout@1-1 cout in@1-1 in@2
  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2

P1

Part

M1

Machine

cr:creates m1

M1

p1

P1

m1

M1

cr:cr META FROM TO

Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-15
SLIDE 15

Option 3: Multilevel Coupled rule

MML MMI MMR L I R MMS MMD MMT S D T MM tL tI tR tS tD tT lc rc mc ic nc fc gc (PO) (PBC)

Machine EClass 1-1 Container EClass 1-1 Part EClass 1-1 contains@1-2 EReference
  • ut@1-2

EReference in@1-2 EReference creates@1-1 EReference

——————————————–

GenHandle Machine 1-1 GenHead Machine 1-1 Conveyor Container 1-1 Tray Container 1-1 Handle Part 1-1 Head Part 1-1 Hammer Part 1-1 Assembler Machine 1-1 creates@1-1 creates creates@1-1 creates cout@1-1 EReference@2 has@1-1 EReference@2 has@1-1 EReference@2

——————————————–

ghead GenHead 1-1 ghandle GenHandle 1-1 c1 Conveyor 1-1 c2 Conveyor 1-1 c3 Conveyor 1-1 t1 Tray 1-1 t2 Tray 1-1 assembler Assembler 1-1 cout@1-1 cout cout@1-1 cout cout@1-1 cout in@1-1 in@2
  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2

P1

Part

M1

Machine

cr:creates m1

M1

p1

P1

m1

M1

cr:cr META FROM TO

Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-16
SLIDE 16

Option 3: Multilevel Coupled rule

Advantages Generic enough Reusable in different configurations Reusable in different languages Precise enough Only the right machine creates a part

Machine EClass 1-1 Container EClass 1-1 Part EClass 1-1 contains@1-2 EReference
  • ut@1-2

EReference in@1-2 EReference creates@1-1 EReference

——————————————–

GenHandle Machine 1-1 GenHead Machine 1-1 Conveyor Container 1-1 Tray Container 1-1 Handle Part 1-1 Head Part 1-1 Hammer Part 1-1 Assembler Machine 1-1 creates@1-1 creates creates@1-1 creates cout@1-1 EReference@2 has@1-1 EReference@2 has@1-1 EReference@2

——————————————–

ghead GenHead 1-1 ghandle GenHandle 1-1 c1 Conveyor 1-1 c2 Conveyor 1-1 c3 Conveyor 1-1 t1 Tray 1-1 t2 Tray 1-1 assembler Assembler 1-1 cout@1-1 cout cout@1-1 cout cout@1-1 cout in@1-1 in@2
  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2
  • ut@1-1
  • ut@2

P1

Part

M1

Machine

cr:creates m1

M1

p1

P1

m1

M1

cr:cr META FROM TO

Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-17
SLIDE 17

Comparison

Two-level

gha

GenHandle

h

Handle

gha

GenHandle

cr:creates FROM TO

Multilevel

m

Machine

p

Part

m

Machine

cr:creates FROM TO

Coupled

P1

Part

M1

Machine

cr:creates m1

M1

p1

P1

m1

M1

cr:cr META FROM TO

MML MMI MMR L I R MMS MMD MMT S D T MM tL tI tR tS tD tT lc rc mc ic nc fc gc (PO) (PBC)

Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-18
SLIDE 18

Conclusions

Coupled model transformations exploit the advantages of multilevel metamodelling: Reusability Genericity Precission Application to behavioural metamodelling natural and straightforward Future Work Full formalization Expand horizontal and vertical flexibility Implement tool support

Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-19
SLIDE 19

Extra slides

Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-20
SLIDE 20

More Multilevel Coupled Rules – CreatePart

P1

Part

M1

Machine

cr:creates m1

M1

p1

P1

m1

M1

cr:cr META FROM TO

rule CreatePart { meta { P1: mm [0]! Part M1: mm [0]! Machine cr: mm [0]! Machine.creates [M1.cr = P1] } from { m1: M1 } to { p1: P1 m1: M1 cr: cr [m1.cr = p1] } } Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-21
SLIDE 21

More Multilevel Coupled Rules – SendPartOut

P1

Part

M1

Machine

C1

Container

cr:creates m1

M1

p1

P1

c1

C1

cr:cr

  • ut:out

p1

P1

m1

M1

c1

C1

  • ut:out

c:contains META FROM TO

rule SendPartOut { meta { P1: mm [0]! Part M1: mm [0]! Machine C1: mm [0]! Container cr: mm [0]! Machine.creates

  • ut: $mm [0]! Machine.out

contains: $mm [0]! Container. contains [M1.cr = P1] } from { p1: P1 m1: M1 c1: C1 cr: cr

  • ut: out

[m1.cr = p1] [m1.out = c1] } to { p1: P1 m1: M1 c1: C1

  • ut: out

c: contains [m1.out = c1] [c1.c = p1] } } Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-22
SLIDE 22

More Multilevel Coupled Rules – TransferPart

P1

Part

Conveyor Tray cout c1

Conveyor

p1

P1

t1

Tray

co1:contains@2 cout:cout p1

P1

c1

Conveyor

t1

Tray

cout:cout co2:contains@2 META FROM TO rule TransferPart { meta { P1: mm [0]! Part Conveyor: $mm [1]! Conveyor Tray: $mm [1]! Tray contains: $mm [0]! Container. contains cout: $mm [1]! Conveyor.cout [Conveyor.cout = Tray] } from { p1: P1 t1: Tray c1: Conveyor cout: cout co1: contains [c1.co1 = p1] [c1.cout = t1] } to { p1: P1 t1: T1 c1: C1 cout: cout co2: contains [t1.co2 = p1] [c1.cout = t1] } } Fernando Mac´ ıas et al. Multilevel Coupled MTs

slide-23
SLIDE 23

More Multilevel Coupled Rules – Assemble

C1

Container

M1

Machine

C2

Container

P1

Part

P2

Part

P3

Part

has has m1

M1

c1

C1

c2

C2

p1

P1

p2

P2

i:in@2

  • :out@2

co1:contains@2 co2:contains@2 c1

C1

m1

M1

c2

C2

p3

P3

i:in@2

  • :out@2

co3:contains@2 META FROM TO

rule Assemble { meta { P1 , P2 , P3: mm [0]! Part C1 , C2: mm [0]! Container M1: mm [0]! Machine c: $mm [0]! Container.contains in: $mm [0]! Machine.in

  • ut: $mm [0]! Machine.out

has1 , has2: mm [0]! Part.has [P3.has1 = P1] [P3.has2 = P2] } from { p1: P1 , p2: P2 c1: C1 , c2: C2 m1: M1 i: in , o: out , co1: c, co2: c [c1.co1 = p1] [c1.co2 = p2] [m1.i = c1] [m1.out = c2] } to { p3: P3 c1: C1 , c2: C2 m1: M1 i: in , o: out , co3: c [c2.co3 = p3] [m1.i = c1] [m1.o = c2] } } Fernando Mac´ ıas et al. Multilevel Coupled MTs