Model Consistency ensured by Metamodel Integration MoConseMI 6th - - PowerPoint PPT Presentation

model consistency ensured by metamodel integration
SMART_READER_LITE
LIVE PREVIEW

Model Consistency ensured by Metamodel Integration MoConseMI 6th - - PowerPoint PPT Presentation

C A R L V O N O S S I E T Z K Y Model Consistency ensured by Metamodel Integration MoConseMI 6th GEMOC 2018, Copenhagen Johannes Meier Andreas Winter Software Engineering Group Department of Computing Science Carl von Ossietzky University,


slide-1
SLIDE 1

C A R L V O N O S S I E T Z K Y

Model Consistency ensured by Metamodel Integration MoConseMI

6th GEMOC 2018, Copenhagen Johannes Meier Andreas Winter

Software Engineering Group Department of Computing Science Carl von Ossietzky University, Oldenburg, Germany

  • 15. October 2018

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

1 / 12

slide-2
SLIDE 2

C A R L V O N O S S I E T Z K Y

Motivation

Motivation

various Artifacts in Software Development:

I Diagrams, DSLs, Tools, . . . I Artifacts are technically separated I Artifacts are interrelated regarding content

Ensure Consistency between Artifacts automatically

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

2 / 12

slide-3
SLIDE 3

C A R L V O N O S S I E T Z K Y

Motivation

Motivation

various Artifacts in Software Development:

I Diagrams, DSLs, Tools, . . . I Artifacts are technically separated I Artifacts are interrelated regarding content

Ensure Consistency between Artifacts automatically

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

2 / 12

slide-4
SLIDE 4

C A R L V O N O S S I E T Z K Y

Motivation

Motivation

various Artifacts in Software Development:

I Diagrams, DSLs, Tools, . . . I Artifacts are technically separated I Artifacts are interrelated regarding content

Ensure Consistency between Artifacts automatically

University Student +Name : String

university[1] students[*]

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

2 / 12

slide-5
SLIDE 5

C A R L V O N O S S I E T Z K Y

Motivation

Motivation

various Artifacts in Software Development:

I Diagrams, DSLs, Tools, . . . I Artifacts are technically separated I Artifacts are interrelated regarding content

Ensure Consistency between Artifacts automatically

University Student +Name : String

university[1] students[*]

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

2 / 12

slide-6
SLIDE 6

C A R L V O N O S S I E T Z K Y

Motivation

Motivation

various Artifacts in Software Development:

I Diagrams, DSLs, Tools, . . . I Artifacts are technically separated I Artifacts are interrelated regarding content

Ensure Consistency between Artifacts automatically

University Student +Name : String

university[1] students[*]

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

2 / 12

slide-7
SLIDE 7

C A R L V O N O S S I E T Z K Y

Motivation

Motivation

various Artifacts in Software Development:

I Diagrams, DSLs, Tools, . . . I Artifacts are technically separated I Artifacts are interrelated regarding content

Ensure Consistency between Artifacts automatically

University Student +Name : String

university[1] students[*]

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

2 / 12

slide-8
SLIDE 8

C A R L V O N O S S I E T Z K Y

Motivation

Motivation

various Artifacts in Software Development:

I Diagrams, DSLs, Tools, . . . I Artifacts are technically separated I Artifacts are interrelated regarding content

Ensure Consistency between Artifacts automatically

University Student +Name : String

university[1] students[*]

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

2 / 12

slide-9
SLIDE 9

C A R L V O N O S S I E T Z K Y

Motivation

Motivation

various Artifacts in Software Development:

I Diagrams, DSLs, Tools, . . . I Artifacts are technically separated I Artifacts are interrelated regarding content

Ensure Consistency between Artifacts automatically

University Student +Name : String

university[1] students[*]

link

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

2 / 12

slide-10
SLIDE 10

C A R L V O N O S S I E T Z K Y

Motivation

Motivation

various Artifacts in Software Development:

I Diagrams, DSLs, Tools, . . . I Artifacts are technically separated I Artifacts are interrelated regarding content

Ensure Consistency between Artifacts automatically

University Student +Name : String

university[1] students[*]

link

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

2 / 12

slide-11
SLIDE 11

C A R L V O N O S S I E T Z K Y

Motivation

Motivation

various Artifacts in Software Development:

I Diagrams, DSLs, Tools, . . . I Artifacts are technically separated I Artifacts are interrelated regarding content

Ensure Consistency between Artifacts automatically

University Student +Name : String

university[1] students[*]

link

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

2 / 12

slide-12
SLIDE 12

C A R L V O N O S S I E T Z K Y

Motivation

Motivation

various Artifacts in Software Development:

I Diagrams, DSLs, Tools, . . . I Artifacts are technically separated I Artifacts are interrelated regarding content

Ensure Consistency between Artifacts automatically

University Student +Name : String

university[1] students[*]

link keep consistent

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

2 / 12

slide-13
SLIDE 13

C A R L V O N O S S I E T Z K Y

Motivation

Problem

There are further Software Development Projects: e.g. with formal Specifications, C++, Test Cases, Documentation, Project Management, Build Tools Traceability

! further Consistency issues

General Problem: Artifacts are technically separated, but interrelated contentwise specific Consistency Rules have to be fulfilled automatically

Goal

Ensure Consistency between Artifacts automatically! Artifact == Model + Metamodel (structural formalization [CNS12])

! Model Integration

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

3 / 12

slide-14
SLIDE 14

C A R L V O N O S S I E T Z K Y

Motivation

Challenges

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

4 / 12

slide-15
SLIDE 15

C A R L V O N O S S I E T Z K Y

Motivation

Challenges

  • 1. Formalize Consistency Rules

University Student +Name : String

university[1] students[*]

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

4 / 12

slide-16
SLIDE 16

C A R L V O N O S S I E T Z K Y

Motivation

Challenges

  • 1. Formalize Consistency Rules

University Student +Name : String

university[1] students[*]

Sourcecode and Class Diagrams describe the same set of classes, identified by their class name. Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

4 / 12

slide-17
SLIDE 17

C A R L V O N O S S I E T Z K Y

Motivation

Challenges

  • 1. Formalize Consistency Rules

University Student +Name : String

university[1] students[*]

Each Requirement is linked with all Methods whose Name is contained in the Text of the Requirement. Sourcecode and Class Diagrams describe the same set of classes, identified by their class name. Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

4 / 12

slide-18
SLIDE 18

C A R L V O N O S S I E T Z K Y

Motivation

Challenges

  • 1. Formalize Consistency Rules
  • 2. Create explicit SUM(M)

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

4 / 12

slide-19
SLIDE 19

C A R L V O N O S S I E T Z K Y

Motivation

Challenges

  • 1. Formalize Consistency Rules
  • 2. Create explicit SUM(M)

reuse Model Techniques which work only with one Model used as single Point of Truth Single Underlying Model [ASB09] SUMM and SUM are explicit

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

4 / 12

slide-20
SLIDE 20

C A R L V O N O S S I E T Z K Y

Motivation

Challenges

  • 1. Formalize Consistency Rules
  • 2. Create explicit SUM(M)

reuse Model Techniques which work only with one Model used as single Point of Truth Single Underlying Model [ASB09] SUMM and SUM are explicit

RequirementsSpecification Requirement

rowNumber : EInt [0..1] id : EString [0..1] author : EString [0..1] text : EString [0..1]

JavaASG ClassType

name : EString [1]

Method

name : EString [1]

ProjectData ClassDiagram Association

name : EString [1] lowerBound : EInt [0..1] upperBound : EInt [0..1] container [1] content [⇤] asg [0..1] classes [⇤] class [1] methods [⇤] calledBy [⇤] calling [⇤] containsRequirementsSpecification [⇤] integrator [0..1] containsJavaASG [⇤] integrator [0..1] fulfilled [⇤] fulfilledBy [⇤] integrator [0..1] containsClassDiagram [⇤] classes [⇤] diagram [0..1] class [1] associations [⇤] type [1] usedBy [⇤] data : RequirementsSpecification R1 : Requirement

rowNumber : EInt [0..1] = 1 id : EString [0..1] = ”R1” author : EString [0..1] = ”Andreas Winter” text : EString [0..1] = ”The student must be able to register for an event.”

R2 : Requirement

rowNumber : EInt [0..1] = 2 id : EString [0..1] = ”R2” author : EString [0..1] = ”Johannes Meier” text : EString [0..1] = ”The student must be enroled at the university.”

: JavaASG J2 : ClassType

name : EString [1] = ”Student”

J1 : ClassType

name : EString [1] = ”University”

M1 : Method

name : EString [1] = ”register”

M2 : Method

name : EString [1] = ”start”

: ProjectData : ClassDiagram CD1 : Class

className : EString [1] = ”University” :container :content[0] :container :content[1] :asg :classes[0] :asg :classes[1] :class :methods[0] :class :methods[0] :calledBy[0] :calling[0] :integrator :containsRequirementsSpecification[0] :integrator :containsJavaASG[0] :fulfilled[0] :fulfilledBy[0] :integrator :containsClassDiagram[0] :classes[0] :diagram

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

4 / 12

slide-21
SLIDE 21

C A R L V O N O S S I E T Z K Y

Motivation

Challenges

  • 1. Formalize Consistency Rules
  • 2. Create explicit SUM(M)

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

4 / 12

slide-22
SLIDE 22

C A R L V O N O S S I E T Z K Y

Motivation

Challenges

  • 1. Formalize Consistency Rules
  • 2. Create explicit SUM(M)
  • 3. Support initial (Meta)Models:

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

4 / 12

slide-23
SLIDE 23

C A R L V O N O S S I E T Z K Y

Motivation

Challenges

  • 1. Formalize Consistency Rules
  • 2. Create explicit SUM(M)
  • 3. Support initial (Meta)Models:
  • a. Reuse initial Models

existing Metamodels: DSLs, Environments, Tools, . . . existing Models:

  • ngoing projects, legacy data, . . .

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

4 / 12

slide-24
SLIDE 24

C A R L V O N O S S I E T Z K Y

Motivation

Challenges

  • 1. Formalize Consistency Rules
  • 2. Create explicit SUM(M)
  • 3. Support initial (Meta)Models:
  • a. Reuse initial Models

existing Metamodels: DSLs, Environments, Tools, . . . existing Models:

  • ngoing projects, legacy data, . . .

RequirementsSpecification Requirement

rowNumber : EInt [0..1] id : EString [0..1] author : EString [0..1] text : EString [0..1]

JavaASG ClassType

name : EString [1]

Method

name : EString [1]

ClassDiagram Class

className : EString [1]

Association

name : EString [1] lowerBound : EInt [0..1] upperBound : EInt [0..1] container [1] content [⇤] asg [0..1] classes [⇤] class [1] methods [⇤] calledBy [⇤] calling [⇤] diagram [0..1] classes [⇤] class [1] associations [⇤] type [1] usedBy [⇤] : RequirementsSpecification R1 : Requirement

rowNumber : EInt [0..1] = 1 id : EString [0..1] = ”R1” author : EString [0..1] = ”Andreas Winter” text : EString [0..1] = ”The student must be able to register for an event.”

R2 : Requirement

rowNumber : EInt [0..1] = 2 id : EString [0..1] = ”R2” author : EString [0..1] = ”Johannes Meier” text : EString [0..1] = ”The student must be enroled at the university.”

: JavaASG J2 : ClassType

name : EString [1] = ”Student”

J1 : ClassType

name : EString [1] = ”University”

M1 : Method

name : EString [1] = ”register”

M2 : Method

name : EString [1] = ”start”

: ClassDiagram CD1 : Class

className : EString [1] = ”University” :container :content[0] :container :content[1] :asg :classes[0] :asg :classes[1] :class :methods[0] :class :methods[0] :calledBy[0] :calling[0] :classes[0] :diagram

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

4 / 12

slide-25
SLIDE 25

C A R L V O N O S S I E T Z K Y

Motivation

Challenges

  • 1. Formalize Consistency Rules
  • 2. Create explicit SUM(M)
  • 3. Support initial (Meta)Models:
  • a. Reuse initial Models
  • b. Fix initial Inconsistencies

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

4 / 12

slide-26
SLIDE 26

C A R L V O N O S S I E T Z K Y

Motivation

Challenges

  • 1. Formalize Consistency Rules
  • 2. Create explicit SUM(M)
  • 3. Support initial (Meta)Models:
  • a. Reuse initial Models
  • b. Fix initial Inconsistencies
  • c. Consistent initital Models

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

4 / 12

slide-27
SLIDE 27

C A R L V O N O S S I E T Z K Y

Motivation

Challenges

  • 1. Formalize Consistency Rules
  • 2. Create explicit SUM(M)
  • 3. Support initial (Meta)Models:
  • a. Reuse initial Models
  • b. Fix initial Inconsistencies
  • c. Consistent initital Models
  • 4. Ensure Model Consistency

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

4 / 12

slide-28
SLIDE 28

C A R L V O N O S S I E T Z K Y

Motivation

Related Work

synthetic projectional OSM Vitruvius GEMOC

  • 1. Formalize Consistency Rules

X X X X

  • 2. Create explicit SUM(M)

×

X

× ×

  • 3a. Reuse initial Models

X

×

X X

  • 3b. Fix initial Inconsistencies

X

×

?

  • 3c. Consistent initial Models

X

X X

  • 4. Ensure Model Consistency

X X X X

ISO Standard 42010:2011 [IEE11]: synthetic vs. projectional synthetic: TGGs [SK08], QVT-R [RJV09], explicit correspondences [EEC+14] OSM: Single Underlying (Meta)Model (SUM(M)) [ASB09] Vitruvius [KBL13, BHK+14] GEMOC Approach [LDC18]

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

5 / 12

slide-29
SLIDE 29

C A R L V O N O S S I E T Z K Y

Metamodel Integration

Metamodel Integration

Challenges Activities

  • 1. Formalize Consistency Rules
  • 2. Create explicit SUM(M)
  • 3. Support initial (Meta)Models:
  • a. Reuse initial Models
  • b. Fix initial Inconsistencies
  • c. Consistent initital Models
  • 4. Ensure Model Consistency

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

6 / 12

slide-30
SLIDE 30

C A R L V O N O S S I E T Z K Y

Metamodel Integration

Metamodel Integration

Challenges Activities

  • 1. Formalize Consistency Rules
  • 2. Create explicit SUM(M)
  • 1. Configuration of Operators
  • 3. Support initial (Meta)Models:
  • a. Reuse initial Models
  • b. Fix initial Inconsistencies
  • c. Consistent initital Models
  • 4. Ensure Model Consistency

S U M M

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

6 / 12

slide-31
SLIDE 31

C A R L V O N O S S I E T Z K Y

Metamodel Integration

Metamodel Integration

Challenges Activities

  • 1. Formalize Consistency Rules
  • 2. Create explicit SUM(M)
  • 1. Configuration of Operators
  • 3. Support initial (Meta)Models:
  • a. Reuse initial Models
  • b. Fix initial Inconsistencies
  • c. Consistent initital Models
  • 4. Ensure Model Consistency

S U M M Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

6 / 12

slide-32
SLIDE 32

C A R L V O N O S S I E T Z K Y

Metamodel Integration

Metamodel Integration

Challenges Activities

  • 1. Formalize Consistency Rules
  • 2. Create explicit SUM(M)
  • 1. Configuration of Operators
  • 3. Support initial (Meta)Models:
  • a. Reuse initial Models
  • 2. Initialization of SUM
  • b. Fix initial Inconsistencies
  • c. Consistent initital Models
  • 4. Ensure Model Consistency

S U M M SUM Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

6 / 12

slide-33
SLIDE 33

C A R L V O N O S S I E T Z K Y

Metamodel Integration

Metamodel Integration

Challenges Activities

  • 1. Formalize Consistency Rules
  • 2. Create explicit SUM(M)
  • 1. Configuration of Operators
  • 3. Support initial (Meta)Models:
  • a. Reuse initial Models
  • 2. Initialization of SUM
  • b. Fix initial Inconsistencies
  • c. Consistent initital Models
  • 4. Ensure Model Consistency

S U M M SUM Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

6 / 12

slide-34
SLIDE 34

C A R L V O N O S S I E T Z K Y

Metamodel Integration

Metamodel Integration

Challenges Activities

  • 1. Formalize Consistency Rules
  • 2. Create explicit SUM(M)
  • 1. Configuration of Operators
  • 3. Support initial (Meta)Models:
  • a. Reuse initial Models
  • 2. Initialization of SUM
  • b. Fix initial Inconsistencies
  • c. Consistent initital Models
  • 4. Ensure Model Consistency

S U M M SUM Requirements

1

Java

2

Delete Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Split Class

SUM(M)

Split Attribute Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

6 / 12

slide-35
SLIDE 35

C A R L V O N O S S I E T Z K Y

Metamodel Integration

Metamodel Integration

Challenges Activities

  • 1. Formalize Consistency Rules
  • 2. Create explicit SUM(M)
  • 1. Configuration of Operators
  • 3. Support initial (Meta)Models:
  • a. Reuse initial Models
  • 2. Initialization of SUM
  • b. Fix initial Inconsistencies
  • c. Consistent initital Models
  • 3. Consistency Assurance
  • 4. Ensure Model Consistency

S U M M SUM Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

6 / 12

slide-36
SLIDE 36

C A R L V O N O S S I E T Z K Y

Metamodel Integration

Metamodel Integration

Challenges Activities

  • 1. Formalize Consistency Rules
  • 2. Create explicit SUM(M)
  • 1. Configuration of Operators
  • 3. Support initial (Meta)Models:
  • a. Reuse initial Models
  • 2. Initialization of SUM
  • b. Fix initial Inconsistencies
  • c. Consistent initital Models
  • 3. Consistency Assurance
  • 4. Ensure Model Consistency

S U M M SUM

1x Methodologist

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

6 / 12

slide-37
SLIDE 37

C A R L V O N O S S I E T Z K Y

Metamodel Integration

Metamodel Integration

Challenges Activities

  • 1. Formalize Consistency Rules
  • 2. Create explicit SUM(M)
  • 1. Configuration of Operators
  • 3. Support initial (Meta)Models:
  • a. Reuse initial Models
  • 2. Initialization of SUM
  • b. Fix initial Inconsistencies
  • c. Consistent initital Models
  • 3. Consistency Assurance
  • 4. Ensure Model Consistency

S U M M SUM

nx User

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

6 / 12

slide-38
SLIDE 38

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 1. Configuration of Operators

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

7 / 12

slide-39
SLIDE 39

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 1. Configuration of Operators

Operator MM M

Metamodel Decisions Model Decisions

MM’ M’

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

7 / 12

slide-40
SLIDE 40

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 1. Configuration of Operators

Operator MM M

Metamodel Decisions Model Decisions

MM’ M’

∆M ∆MM

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

7 / 12

slide-41
SLIDE 41

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 1. Configuration of Operators

Operator MM M

Metamodel Decisions Model Decisions

MM’ M’

∆M ∆MM

Chechik, Nejati, Sabetzadeh: A Relationship-Based Approach to Model Integration (2012)

! merge, composition, weaving

Herrmannsdoerfer et al.: An Extensive Catalog of Operators for the Coupled Evolution of Metamodels and Models (2011)

! extended Coupled Operators

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

7 / 12

slide-42
SLIDE 42

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 1. Configuration of Operators

Operator MM M

Metamodel Decisions Model Decisions

MM’ M’

∆M ∆MM

Inverse Operator MM M”

Model Decisions Inv Metamodel Decisions Inv

MM’ M’

∆0

M

∆0

MM

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

7 / 12

slide-43
SLIDE 43

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 1. Configuration of Operators

Operator MM M

Metamodel Decisions Model Decisions

MM’ M’

∆M ∆MM

Inverse Operator MM M”

Model Decisions Inv Metamodel Decisions Inv

MM’ M’

∆0

M

∆0

MM

=

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

7 / 12

slide-44
SLIDE 44

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 1. Configuration of Operators

Operator MM M

Metamodel Decisions Model Decisions

MM’ M’

∆M ∆MM

Inverse Operator MM M”

Model Decisions Inv Metamodel Decisions Inv

MM’ M’

∆0

M

∆0

MM

=

?

=

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

7 / 12

slide-45
SLIDE 45

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 2. Initialization of SUM: Overview

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

8 / 12

slide-46
SLIDE 46

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 2. Initialization of SUM: Overview

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes

RequirementsSpecification Requirement

rowNumber : EInt [0..1] id : EString [0..1] author : EString [0..1] text : EString [0..1] container [1] content [⇤] data : RequirementsSpecification R1 : Requirement

rowNumber : EInt [0..1] = 1 id : EString [0..1] = ”R1” author : EString [0..1] = ”Andreas Winter” text : EString [0..1] = ”The student must be able to register for an event.”

R2 : Requirement

rowNumber : EInt [0..1] = 2 id : EString [0..1] = ”R2” author : EString [0..1] = ”Johannes Meier” text : EString [0..1] = ”The student must be enroled at the university.” :container :content[0] :container :content[1]

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

8 / 12

slide-47
SLIDE 47

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 2. Initialization of SUM: Overview

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes

JavaASG ClassType

name : EString [1]

Method

name : EString [1] asg [1] classes [⇤] class [1] methods [⇤] calledBy [⇤] calling [⇤] asgjava : JavaASG J2 : ClassType

name : EString [1] = ”Student”

J1 : ClassType

name : EString [1] = ”University”

M1 : Method

name : EString [1] = ”register”

M2 : Method

name : EString [1] = ”start” :asg :classes[0] :asg :classes[1] :class :methods[0] :class :methods[0] :calledBy[0] :calling[0]

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

8 / 12

slide-48
SLIDE 48

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 2. Initialization of SUM: Overview

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes

RequirementsSpecification Requirement

rowNumber : EInt [0..1] id : EString [0..1] author : EString [0..1] text : EString [0..1]

JavaASG ClassType

name : EString [1]

Method

name : EString [1]

ProjectData

container [1] content [⇤] asg [1] classes [⇤] class [1] methods [⇤] calledBy [⇤] calling [⇤] containsRequirementsSpecification [⇤] integrator [0..1] containsJavaASG [⇤] integrator [0..1] data : RequirementsSpecification R1 : Requirement

rowNumber : EInt [0..1] = 1 id : EString [0..1] = ”R1” author : EString [0..1] = ”Andreas Winter” text : EString [0..1] = ”The student must be able to register for an event.”

R2 : Requirement

rowNumber : EInt [0..1] = 2 id : EString [0..1] = ”R2” author : EString [0..1] = ”Johannes Meier” text : EString [0..1] = ”The student must be enroled at the university.”

: JavaASG J2 : ClassType

name : EString [1] = ”Student”

J1 : ClassType

name : EString [1] = ”University”

M1 : Method

name : EString [1] = ”register”

M2 : Method

name : EString [1] = ”start”

: ProjectData

:container :content[0] :container :content[1] :asg :classes[0] :asg :classes[1] :class :methods[0] :class :methods[0] :calledBy[0] :calling[0] :integrator :containsRequirementsSpecification[0] :integrator :containsJavaASG[0]

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

8 / 12

slide-49
SLIDE 49

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 2. Initialization of SUM: Overview

Requirements

1

Java

2

Add Relation

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes

RequirementsSpecification Requirement

rowNumber : EInt [0..1] id : EString [0..1] author : EString [0..1] text : EString [0..1]

JavaASG ClassType

name : EString [1]

Method

name : EString [1]

ProjectData

container [1] content [⇤] asg [1] classes [⇤] class [1] methods [⇤] calledBy [⇤] calling [⇤] containsRequirementsSpecification [⇤] integrator [0..1] containsJavaASG [⇤] integrator [0..1] fulfilled [⇤] fulfilledBy [⇤] data : RequirementsSpecification R1 : Requirement

rowNumber : EInt [0..1] = 1 id : EString [0..1] = ”R1” author : EString [0..1] = ”Andreas Winter” text : EString [0..1] = ”The student must be able to register for an event.”

R2 : Requirement

rowNumber : EInt [0..1] = 2 id : EString [0..1] = ”R2” author : EString [0..1] = ”Johannes Meier” text : EString [0..1] = ”The student must be enroled at the university.”

: JavaASG J2 : ClassType

name : EString [1] = ”Student”

J1 : ClassType

name : EString [1] = ”University”

M1 : Method

name : EString [1] = ”register”

M2 : Method

name : EString [1] = ”start”

: ProjectData

:container :content[0] :container :content[1] :asg :classes[0] :asg :classes[1] :class :methods[0] :class :methods[0] :calledBy[0] :calling[0] :integrator :containsRequirementsSpecification[0] :integrator :containsJavaASG[0] :fulfilled[0] :fulfilledBy[0]

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

8 / 12

slide-50
SLIDE 50

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 2. Initialization of SUM: Overview

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes

ClassDiagram Class

className : EString [1]

Association

name : EString [1] lowerBound : EInt [0..1] upperBound : EInt [0..1] diagram [1] classes [⇤] class [1] associations [⇤] type [1] usedBy [⇤] umlclasses : ClassDiagram CD1 : Class

className : EString [1] = ”University” :classes[0] :diagram

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

8 / 12

slide-51
SLIDE 51

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 2. Initialization of SUM: Overview

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes

RequirementsSpecification Requirement

rowNumber : EInt [0..1] id : EString [0..1] author : EString [0..1] text : EString [0..1]

JavaASG ClassType

name : EString [1]

Method

name : EString [1]

ProjectData ClassDiagram Class

className : EString [1]

Association

name : EString [1] lowerBound : EInt [0..1] upperBound : EInt [0..1] container [1] content [⇤] asg [1] classes [⇤] class [1] methods [⇤] calledBy [⇤] calling [⇤] containsRequirementsSpecification [⇤] integrator [0..1] containsJavaASG [⇤] integrator [0..1] fulfilled [⇤] fulfilledBy [⇤] diagram [1] classes [⇤] class [1] associations [⇤] type [1] usedBy [⇤] integrator [0..1] containsClassDiagram [⇤] data : RequirementsSpecification R1 : Requirement

rowNumber : EInt [0..1] = 1 id : EString [0..1] = ”R1” author : EString [0..1] = ”Andreas Winter” text : EString [0..1] = ”The student must be able to register for an event.”

R2 : Requirement

rowNumber : EInt [0..1] = 2 id : EString [0..1] = ”R2” author : EString [0..1] = ”Johannes Meier” text : EString [0..1] = ”The student must be enroled at the university.”

: JavaASG J2 : ClassType

name : EString [1] = ”Student”

J1 : ClassType

name : EString [1] = ”University”

M1 : Method

name : EString [1] = ”register”

M2 : Method

name : EString [1] = ”start”

: ProjectData : ClassDiagram CD1 : Class

className : EString [1] = ”University” :container :content[0] :container :content[1] :asg :classes[0] :asg :classes[1] :class :methods[0] :class :methods[0] :calledBy[0] :calling[0] :integrator :containsRequirementsSpecification[0] :integrator :containsJavaASG[0] :fulfilled[0] :fulfilledBy[0] :integrator :containsClassDiagram[0] :classes[0] :diagram

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

8 / 12

slide-52
SLIDE 52

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 2. Initialization of SUM: Overview

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes

RequirementsSpecification Requirement

rowNumber : EInt [0..1] id : EString [0..1] author : EString [0..1] text : EString [0..1]

JavaASG ClassType

name : EString [1]

Method

name : EString [1]

ProjectData ClassDiagram Class

className : EString [1]

Association

name : EString [1] lowerBound : EInt [0..1] upperBound : EInt [0..1] container [1] content [⇤] asg [0..1] classes [⇤] class [1] methods [⇤] calledBy [⇤] calling [⇤] containsRequirementsSpecification [⇤] integrator [0..1] containsJavaASG [⇤] integrator [0..1] fulfilled [⇤] fulfilledBy [⇤] diagram [1] classes [⇤] class [1] associations [⇤] type [1] usedBy [⇤] integrator [0..1] containsClassDiagram [⇤] data : RequirementsSpecification R1 : Requirement

rowNumber : EInt [0..1] = 1 id : EString [0..1] = ”R1” author : EString [0..1] = ”Andreas Winter” text : EString [0..1] = ”The student must be able to register for an event.”

R2 : Requirement

rowNumber : EInt [0..1] = 2 id : EString [0..1] = ”R2” author : EString [0..1] = ”Johannes Meier” text : EString [0..1] = ”The student must be enroled at the university.”

: JavaASG J2 : ClassType

name : EString [1] = ”Student”

J1 : ClassType

name : EString [1] = ”University”

M1 : Method

name : EString [1] = ”register”

M2 : Method

name : EString [1] = ”start”

: ProjectData : ClassDiagram CD1 : Class

className : EString [1] = ”University” :container :content[0] :container :content[1] :asg :classes[0] :asg :classes[1] :class :methods[0] :class :methods[0] :calledBy[0] :calling[0] :integrator :containsRequirementsSpecification[0] :integrator :containsJavaASG[0] :fulfilled[0] :fulfilledBy[0] :integrator :containsClassDiagram[0] :classes[0] :diagram

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

8 / 12

slide-53
SLIDE 53

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 2. Initialization of SUM: Overview

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes

RequirementsSpecification Requirement

rowNumber : EInt [0..1] id : EString [0..1] author : EString [0..1] text : EString [0..1]

JavaASG ClassType

name : EString [1]

Method

name : EString [1]

ProjectData ClassDiagram Class

className : EString [1]

Association

name : EString [1] lowerBound : EInt [0..1] upperBound : EInt [0..1] container [1] content [⇤] asg [0..1] classes [⇤] class [1] methods [⇤] calledBy [⇤] calling [⇤] containsRequirementsSpecification [⇤] integrator [0..1] containsJavaASG [⇤] integrator [0..1] fulfilled [⇤] fulfilledBy [⇤] diagram [0..1] classes [⇤] class [1] associations [⇤] type [1] usedBy [⇤] integrator [0..1] containsClassDiagram [⇤] data : RequirementsSpecification R1 : Requirement

rowNumber : EInt [0..1] = 1 id : EString [0..1] = ”R1” author : EString [0..1] = ”Andreas Winter” text : EString [0..1] = ”The student must be able to register for an event.”

R2 : Requirement

rowNumber : EInt [0..1] = 2 id : EString [0..1] = ”R2” author : EString [0..1] = ”Johannes Meier” text : EString [0..1] = ”The student must be enroled at the university.”

: JavaASG J2 : ClassType

name : EString [1] = ”Student”

J1 : ClassType

name : EString [1] = ”University”

M1 : Method

name : EString [1] = ”register”

M2 : Method

name : EString [1] = ”start”

: ProjectData : ClassDiagram CD1 : Class

className : EString [1] = ”University” :container :content[0] :container :content[1] :asg :classes[0] :asg :classes[1] :class :methods[0] :class :methods[0] :calledBy[0] :calling[0] :integrator :containsRequirementsSpecification[0] :integrator :containsJavaASG[0] :fulfilled[0] :fulfilledBy[0] :integrator :containsClassDiagram[0] :classes[0] :diagram

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

8 / 12

slide-54
SLIDE 54

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 2. Initialization of SUM: Overview

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes

RequirementsSpecification Requirement

rowNumber : EInt [0..1] id : EString [0..1] author : EString [0..1] text : EString [0..1]

JavaASG ClassType

name : EString [1] className : EString [1]

Method

name : EString [1]

ProjectData ClassDiagram Association

name : EString [1] lowerBound : EInt [0..1] upperBound : EInt [0..1] container [1] content [⇤] asg [0..1] classes [⇤] class [1] methods [⇤] calledBy [⇤] calling [⇤] containsRequirementsSpecification [⇤] integrator [0..1] containsJavaASG [⇤] integrator [0..1] fulfilled [⇤] fulfilledBy [⇤] integrator [0..1] containsClassDiagram [⇤] classes [⇤] diagram [0..1] class [1] associations [⇤] type [1] usedBy [⇤] data : RequirementsSpecification R1 : Requirement

rowNumber : EInt [0..1] = 1 id : EString [0..1] = ”R1” author : EString [0..1] = ”Andreas Winter” text : EString [0..1] = ”The student must be able to register for an event.”

R2 : Requirement

rowNumber : EInt [0..1] = 2 id : EString [0..1] = ”R2” author : EString [0..1] = ”Johannes Meier” text : EString [0..1] = ”The student must be enroled at the university.”

: JavaASG J2 : ClassType

name : EString [1] = ”Student” className : EString [1] =

J1 : ClassType

name : EString [1] = ”University” className : EString [1] = ”University”

M1 : Method

name : EString [1] = ”register”

M2 : Method

name : EString [1] = ”start”

: ProjectData : ClassDiagram

:container :content[0] :container :content[1] :asg :classes[0] :asg :classes[1] :class :methods[0] :class :methods[0] :calledBy[0] :calling[0] :integrator :containsRequirementsSpecification[0] :integrator :containsJavaASG[0] :fulfilled[0] :fulfilledBy[0] :integrator :containsClassDiagram[0]

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

8 / 12

slide-55
SLIDE 55

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 2. Initialization of SUM: Overview

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes

RequirementsSpecification Requirement

rowNumber : EInt [0..1] id : EString [0..1] author : EString [0..1] text : EString [0..1]

JavaASG ClassType

name : EString [1]

Method

name : EString [1]

ProjectData ClassDiagram Association

name : EString [1] lowerBound : EInt [0..1] upperBound : EInt [0..1] container [1] content [⇤] asg [0..1] classes [⇤] class [1] methods [⇤] calledBy [⇤] calling [⇤] containsRequirementsSpecification [⇤] integrator [0..1] containsJavaASG [⇤] integrator [0..1] fulfilled [⇤] fulfilledBy [⇤] integrator [0..1] containsClassDiagram [⇤] classes [⇤] diagram [0..1] class [1] associations [⇤] type [1] usedBy [⇤] data : RequirementsSpecification R1 : Requirement

rowNumber : EInt [0..1] = 1 id : EString [0..1] = ”R1” author : EString [0..1] = ”Andreas Winter” text : EString [0..1] = ”The student must be able to register for an event.”

R2 : Requirement

rowNumber : EInt [0..1] = 2 id : EString [0..1] = ”R2” author : EString [0..1] = ”Johannes Meier” text : EString [0..1] = ”The student must be enroled at the university.”

: JavaASG J2 : ClassType

name : EString [1] = ”Student”

J1 : ClassType

name : EString [1] = ”University”

M1 : Method

name : EString [1] = ”register”

M2 : Method

name : EString [1] = ”start”

: ProjectData : ClassDiagram

:container :content[0] :container :content[1] :asg :classes[0] :asg :classes[1] :class :methods[0] :class :methods[0] :calledBy[0] :calling[0] :integrator :containsRequirementsSpecification[0] :integrator :containsJavaASG[0] :fulfilled[0] :fulfilledBy[0] :integrator :containsClassDiagram[0]

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

8 / 12

slide-56
SLIDE 56

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 2. Initialization of SUM: Details

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

9 / 12

slide-57
SLIDE 57

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 2. Initialization of SUM: Details

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

9 / 12

slide-58
SLIDE 58

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 2. Initialization of SUM: Details

ClassType

name : String

Class

className : String

: ClassType

name = “University”

: Class

className = “University”

: ClassType

name = “Student”

  • 3a. Forward Execution

to create the initial SUM Java ClassDiagram Metamodel Changes Model Changes

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

9 / 12

slide-59
SLIDE 59

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 2. Initialization of SUM: Details

Merge Classes

ClassType

name : String

Class

className : String

: ClassType

name = “University”

: Class

className = “University”

: ClassType

name = “Student”

  • 3a. Forward Execution

to create the initial SUM Java ClassDiagram Metamodel Changes Model Changes

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

9 / 12

slide-60
SLIDE 60

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 2. Initialization of SUM: Details

Merge Classes

ClassType

name : String

Class

className : String

: ClassType

name = “University”

: Class

className = “University”

: ClassType

name = “Student”

ClassType

name : String className : String

: ClassType

name = “University” className = “University”

: ClassType

name = “Student” className =

  • 3a. Forward Execution

to create the initial SUM Java ClassDiagram SUM(M) Metamodel Changes Model Changes

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

9 / 12

slide-61
SLIDE 61

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 2. Initialization of SUM: Details

Merge Classes

ClassType

name : String

Class

className : String

: ClassType

name = “University”

: Class

className = “University”

: ClassType

name = “Student”

ClassType

name : String className : String

: ClassType

name = “University” className = “University”

: ClassType

name = “Student” className =

ClassType

name : String className : String

: ClassType

name = “University” className = “University”

: ClassType

name = “Student” className = “Student”

  • 3a. Forward Execution

to create the initial SUM

  • 3b. Backward Execution

to fix the initial Models Java ClassDiagram SUM(M) Metamodel Changes Model Changes Metamodel Changes Model Changes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

9 / 12

slide-62
SLIDE 62

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 2. Initialization of SUM: Details

Merge Classes

ClassType

name : String

Class

className : String

: ClassType

name = “University”

: Class

className = “University”

: ClassType

name = “Student”

ClassType

name : String className : String

: ClassType

name = “University” className = “University”

: ClassType

name = “Student” className =

Split Class

ClassType

name : String className : String

: ClassType

name = “University” className = “University”

: ClassType

name = “Student” className = “Student”

  • 3a. Forward Execution

to create the initial SUM

  • 3b. Backward Execution

to fix the initial Models inverse to each other Java ClassDiagram SUM(M) Metamodel Changes Model Changes Metamodel Changes Model Changes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

9 / 12

slide-63
SLIDE 63

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 2. Initialization of SUM: Details

Merge Classes

ClassType

name : String

Class

className : String

: ClassType

name = “University”

: Class

className = “University”

: ClassType

name = “Student”

ClassType

name : String className : String

: ClassType

name = “University” className = “University”

: ClassType

name = “Student” className =

Split Class

ClassType

name : String

Class

className : String

: ClassType

name = “University”

: Class

className = “University”

: ClassType

name = “Student”

: Class

className = “Student”

ClassType

name : String className : String

: ClassType

name = “University” className = “University”

: ClassType

name = “Student” className = “Student”

  • 3a. Forward Execution

to create the initial SUM

  • 3b. Backward Execution

to fix the initial Models inverse to each other Java ClassDiagram SUM(M) Metamodel Changes Model Changes Metamodel Changes Model Changes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

9 / 12

slide-64
SLIDE 64

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 3. Consistency Assurance: Details

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

10 / 12

slide-65
SLIDE 65

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 3. Consistency Assurance: Details

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

10 / 12

slide-66
SLIDE 66

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 3. Consistency Assurance: Details

Add Association

Requirement

text : String

Method

name : String

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “register”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

Requirement

text : String

Method

name : String fulfilled ⇤ fulfilledBy ⇤

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “register”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy

  • 1. Initialization (forward)

Requirements Java SUM(M) Metamodel Changes Model Changes

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

10 / 12

slide-67
SLIDE 67

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 3. Consistency Assurance: Details

Add Association

Requirement

text : String

Method

name : String

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “register”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

Requirement

text : String

Method

name : String fulfilled ⇤ fulfilledBy ⇤

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “register”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy

∆User

  • 1. Create Link between R2 “enrole” and M2 “start”
  • 2. Rename Method M1 from “register” to “enrole”
  • 1. Initialization (forward)

Requirements Java SUM(M) Metamodel Changes Model Changes

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

10 / 12

slide-68
SLIDE 68

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 3. Consistency Assurance: Details

Add Association

Requirement

text : String

Method

name : String

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “register”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

Requirement

text : String

Method

name : String fulfilled ⇤ fulfilledBy ⇤

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “register”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy fulfilled fulfilledBy

∆User

  • 1. Create Link between R2 “enrole” and M2 “start”
  • 2. Rename Method M1 from “register” to “enrole”
  • 1. Initialization (forward)
  • 2. Run (backward)

Requirements Java SUM(M) Metamodel Changes Model Changes

Requirements

1

Java

2

Delete Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Split Class Into Two

SUM(M)

Split Attribute Into Two Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

10 / 12

slide-69
SLIDE 69

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 3. Consistency Assurance: Details

Add Association

Requirement

text : String

Method

name : String

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “register”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

Requirement

text : String

Method

name : String fulfilled ⇤ fulfilledBy ⇤

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “register”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy

Delete Association

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy fulfilled fulfilledBy

inverse to each other

∆User

  • 1. Create Link between R2 “enrole” and M2 “start”
  • 2. Rename Method M1 from “register” to “enrole”
  • 1. Initialization (forward)
  • 2. Run (backward)

Requirements Java SUM(M) Metamodel Changes Model Changes

Requirements

1

Java

2

Delete Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Split Class Into Two

SUM(M)

Split Attribute Into Two Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

10 / 12

slide-70
SLIDE 70

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 3. Consistency Assurance: Details

Add Association

Requirement

text : String

Method

name : String

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “register”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

Requirement

text : String

Method

name : String fulfilled ⇤ fulfilledBy ⇤

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “register”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy

Delete Association

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy fulfilled fulfilledBy

inverse to each other

∆User

  • 1. Create Link between R2 “enrole” and M2 “start”
  • 2. Rename Method M1 from “register” to “enrole”
  • 1. Initialization (forward)
  • 2. Run (backward)

Requirements Java SUM(M) Metamodel Changes Model Changes

Requirements

1

Java

2

Delete Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Split Class Into Two

SUM(M)

Split Attribute Into Two Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

10 / 12

slide-71
SLIDE 71

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 3. Consistency Assurance: Details

Add Association

Requirement

text : String

Method

name : String

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “register”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

Requirement

text : String

Method

name : String fulfilled ⇤ fulfilledBy ⇤

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “register”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy

Delete Association

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy fulfilled fulfilledBy

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

inverse to each other

∆User

  • 1. Create Link between R2 “enrole” and M2 “start”
  • 2. Rename Method M1 from “register” to “enrole”
  • 1. Initialization (forward)
  • 2. Run (backward)
  • 3. Run (forward)

Requirements Java SUM(M) Metamodel Changes Model Changes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

10 / 12

slide-72
SLIDE 72

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 3. Consistency Assurance: Details

Add Association

Requirement

text : String

Method

name : String

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “register”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

Requirement

text : String

Method

name : String fulfilled ⇤ fulfilledBy ⇤

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “register”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy

Delete Association

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy fulfilled fulfilledBy

Add Association

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

inverse to each other

∆User

  • 1. Create Link between R2 “enrole” and M2 “start”
  • 2. Rename Method M1 from “register” to “enrole”

inverse to each other

  • 1. Initialization (forward)
  • 2. Run (backward)
  • 3. Run (forward)

Requirements Java SUM(M) Metamodel Changes Model Changes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

10 / 12

slide-73
SLIDE 73

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 3. Consistency Assurance: Details

Add Association

Requirement

text : String

Method

name : String

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “register”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

Requirement

text : String

Method

name : String fulfilled ⇤ fulfilledBy ⇤

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “register”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy

Delete Association

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy fulfilled fulfilledBy

Add Association

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy

inverse to each other

∆User

  • 1. Create Link between R2 “enrole” and M2 “start”
  • 2. Rename Method M1 from “register” to “enrole”

inverse to each other

  • 1. Initialization (forward)
  • 2. Run (backward)
  • 3. Run (forward)

Requirements Java SUM(M) Metamodel Changes Model Changes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

10 / 12

slide-74
SLIDE 74

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 3. Consistency Assurance: Details

Add Association

Requirement

text : String

Method

name : String

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “register”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

Requirement

text : String

Method

name : String fulfilled ⇤ fulfilledBy ⇤

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “register”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy

Delete Association

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy fulfilled fulfilledBy

Add Association

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy fulfilled fulfilledBy

inverse to each other

∆User

  • 1. Create Link between R2 “enrole” and M2 “start”
  • 2. Rename Method M1 from “register” to “enrole”

inverse to each other

  • 1. Initialization (forward)
  • 2. Run (backward)
  • 3. Run (forward)

Requirements Java SUM(M) Metamodel Changes Model Changes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

10 / 12

slide-75
SLIDE 75

C A R L V O N O S S I E T Z K Y

Metamodel Integration

  • 3. Consistency Assurance: Details

Add Association

Requirement

text : String

Method

name : String

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “register”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

Requirement

text : String

Method

name : String fulfilled ⇤ fulfilledBy ⇤

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “register”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy

∆1

M

Delete Association

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy fulfilled fulfilledBy

∆2

M

Add Association

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start”

R1 : Requirement

text = “. . . register . . . ”

M1 : Method

name = “enrole”

R2 : Requirement

text = “. . . enrole . . . ”

M2 : Method

name = “start” fulfilled fulfilledBy fulfilled fulfilledBy

∆3

M

inverse to each other

∆User

  • 1. Create Link between R2 “enrole” and M2 “start”
  • 2. Rename Method M1 from “register” to “enrole”

inverse to each other

  • 1. Initialization (forward)
  • 2. Run (backward)
  • 3. Run (forward)

Requirements Java SUM(M) Metamodel Changes Model Changes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

10 / 12

slide-76
SLIDE 76

C A R L V O N O S S I E T Z K Y

Metamodel Integration

Operators: Summary

Metamodel Change ∆MM: small Change in the Metamodel Model Change ∆M: handle Model-Co-Evolution (Coupled Operators [HVW11]) Configurations by the Methodologist:

I Metamodel Decisions: set Properties for wanted Metamodel Changes I Model Decisions: describe Model Changes for Consistency Rules

Bi-Directionality only for MM: combine with inverse Operator currently 20 Operators implemented Operator MM M

Metamodel Decisions Model Decisions

MM’ M’

∆M ∆MM

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

11 / 12

slide-77
SLIDE 77

C A R L V O N O S S I E T Z K Y

Conclusion

Summary

Operator-based bottom-up SUM-Approach for Model Consistency: Methodologist configures arbitrary, but stable Chain of configured Operators (once) User applies Changes and Model Consistency is ensured automatically by executing the Operator Chain

! separated Models are migrated to projectional Views on the SUM

Requirements

1

Java

2

Add Association

3

ClassDiagram

4

Change Multiplicity

5

Change Multiplicity

6

Merge Classes

SUM(M)

Merge Attributes Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

12 / 12

slide-78
SLIDE 78

C A R L V O N O S S I E T Z K Y

Conclusion

Literature I

[ASB09] Colin Atkinson, Dietmar Stoll, and Philipp Bostan. Supporting View-Based Development through Orthographic Software Modeling. Evaluation of Novel Approaches to Software Engineering (ENASE), pages 71–86, 2009. [BHK+14] Erik Burger, J¨

  • rg Henss, Martin K¨

uster, Steffen Kruse, and Lucia Happe. View-based model-driven software development with ModelJoin. Software & Systems Modeling, 2014. [CNS12] Marsha Chechik, Shiva Nejati, and Mehrdad Sabetzadeh. A Relationship-Based Approach to Model Integration. Innovations Syst Softw Eng, 8(123):3–18, 2012. [EEC+14] Mahmoud El Hamlaoui, Sophie Ebersold, Bernard Coulette, Mahmoud Nassar, and Adil Anwar. Heterogeneous models matching for consistency management. In 2014 IEEE Eighth International Conference on Research Challenges in Information Science (RCIS), pages 1–12. IEEE, may 2014. [HVW11] Markus Herrmannsdoerfer, Sander D. Vermolen, and Guido Wachsmuth. An Extensive Catalog of Operators for the Coupled Evolution of Metamodels and

  • Models. Software Language Engineering, LNCS 6563:163–182, 2011.

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

13 / 12

slide-79
SLIDE 79

C A R L V O N O S S I E T Z K Y

Conclusion

Literature II

[IEE11] IEEE. ISO/IEC/IEEE 42010:2011 - Systems and software engineering - Architecture description. 2011(March):1–46, 2011. [KBL13] Max E Kramer, Erik Burger, and Michael Langhammer. View-centric engineering with synchronized heterogeneous models. Proceedings of the 1st Workshop on View-Based, Aspect-Oriented and Orthographic Software Modelling - VAO ’13, pages 1–6, 2013. [LDC18] Manuel Leduc, Thomas Degueule, and Benoit Combemale. Modular Language Composition for the Masses. SLE 2018 - 11th ACM SIGPLAN International Conference on Software Language Engineering, 2018. [MW18] Johannes Meier and Andreas Winter. Towards Evolution Scenarios of Integrated Software Artifacts. Softwaretechnik-Trends, 38(2):63–64, 2018. [RJV09] J. R. Romero, Juan Ignacio Ja´ en, and Antonio Vallecillo. Realizing correspondences in multi-viewpoint specifications. Proceedings - 13th IEEE International Enterprise Distributed Object Computing Conference, EDOC 2009, pages 163–172, 2009. [SK08] Andy Sch¨ urr and Felix Klar. 15 Years of triple graph grammars: Research challenges, new contributions, open problems. Lecture Notes in Computer Science, 5214 LNCS:411–425, 2008.

Johannes Meier, Andreas Winter Metamodel Integration

  • 15. October 2018

14 / 12