Instance-Based Context Calculation of OCL Expressions.

13
Instance-Based Context Calculation of OCL Expressions

Transcript of Instance-Based Context Calculation of OCL Expressions.

Page 1: Instance-Based Context Calculation of OCL Expressions.

Instance-Based Context Calculation of OCLExpressions

Page 2: Instance-Based Context Calculation of OCL Expressions.

2

Gliederung der Bachelorarbeit

■ Einleitung zu MDD, EMF, OCL, Impact Analyse

■ Voraussetzungen für die instanzbasierte Kontextermittlung

■ Filtersynthese

■ Event Manager

■ Bidirektionale Navigierbarkeit

■ instanzbasierte Kontextermittlung

■ Aufbau von Pfaden für Rückwärtsnavigation

■ Ermittlung der Kontextobjekte

■ Verbesserungsmöglichkeiten

■ prototypische Implementierung

Page 3: Instance-Based Context Calculation of OCL Expressions.

3

■ in Ecore: nur unidirektionale Referenzen

■ Bidirektionalität durch 2 entgegen gesetzte Referenzen

■ in OCL: Navigierbarkeit von nicht navigierbaren Assoziationen optional (laut Spec abhängig von Plattform)

■ nicht von Ecore OCL unterstützt, in MOIN aber möglich

Voraussetzungen: Navigierbarkeit 1/2

A Ba2b

A Ba2b

b2a

context A inv:self.a2b->notEmpty()

context A inv:self.a2b.b2a->notEmpty()

A Ba2b context B inv:

self.b2a->notEmpty()b2a

Page 4: Instance-Based Context Calculation of OCL Expressions.

4

Voraussetzungen: Navigierbarkeit 2/2

■ Lösung des Problems der Navigierbarkeit: Ecore Annotationen

■ Annotationen benennen Gegenrichtung

■ Auffinden der referenzierten Objekte mit Model Query 2

■ Annotationen erweitern Ausdruckskraft von Ecore OCL

■ Ausdruckskraft gleichmächtig zu MOIN OCL

A Ba2b

@b2acontext B inv:self.b2a->notEmpty()

Page 5: Instance-Based Context Calculation of OCL Expressions.

5

Rückwärtsnavigation

■ Analyse der Navigationspfade von OCL Ausdrücken

■ Aufbau eines Navigationspfades für Rückwärtsnavigation

A

context A inv:self.a2b.b2c.name = „X“

OperationCall=

StringLiteral„X“

PropertyCallname

PropertyCallb2c

PropertyCalla2b

Variableself

OppositePropertyNavigationStep

AssociationNavigationStep

IdentityNavigationStep

Änderung des Attributs name

}2.:|{ aabbBbaA

}2.|{ CcbbbB

}|{ tChangeEvenccC

Page 6: Instance-Based Context Calculation of OCL Expressions.

6

Ermittlung der Kontextobjekte

A

OppositePropertyNavigationStep

AssociationNavigationStep

IdentityNavigationStep

}2.:|{ aabbBbaA

}2.|{ CcbbbB

}|{ tChangeEvenccC

c

A Ba2b

b2aC

b2c

c

c

b

b

b

b

b

a

a

a

a

a

a

Page 7: Instance-Based Context Calculation of OCL Expressions.

7

Ermittlung der Kontextobjekte

A

OppositePropertyNavigationStep

AssociationNavigationStep

IdentityNavigationStep

}2.:|{ aabbBbaA

}2.|{ CcbbbB

}|{ tChangeEvenccC

c

A Ba2b

b2aC

b2c

c

c

b

b

b

b

b

a

a

a

a

a

a

Page 8: Instance-Based Context Calculation of OCL Expressions.

8

Ermittlung der Kontextobjekte

A

OppositePropertyNavigationStep

AssociationNavigationStep

IdentityNavigationStep

}2.:|{ aabbBbaA

}2.|{ CcbbbB

}|{ tChangeEvenccC

c

A Ba2b

b2aC

b2c

c

c

b

b

b

b

b

a

a

a

a

a

a

Page 9: Instance-Based Context Calculation of OCL Expressions.

9

Verbesserungsmöglichkeiten

■ Strategieauswahl anhand der Größe von Instanzmengen

■ Annahme: Overhead InstanceScope Analyse > Auswertung auf gesamten Kontext

■ Feststellung: auf keinem der Beispielmodelle aufgetreten

■ partielle Evaluation von OCL Ausdrücken

■ Vergleich der Ergebnisse der Vorwärtsauswertung vor und nach Änderung

■ Wenn Ergebnis unverändert, Ergebnis des Gesamtausdrucks unverändert

Page 10: Instance-Based Context Calculation of OCL Expressions.

10

Detaillierte Architektur

Page 11: Instance-Based Context Calculation of OCL Expressions.

11

Performancemessungen

■ Metamodell = Company Model

■ Änderungen auf einer Instanz mit 5000 Elementen

Page 12: Instance-Based Context Calculation of OCL Expressions.

12

Hinzufügen eines Departments

■ 3 Events

■ 14 Neuauswertungen

Page 13: Instance-Based Context Calculation of OCL Expressions.

13

Löschen eines Departments

■ 4 Events

■ 19 Neuauswertungen