Instance-Based Context Calculation of OCL Expressions.
-
Upload
wernher-bolich -
Category
Documents
-
view
109 -
download
3
Transcript of Instance-Based Context Calculation of OCL Expressions.
Instance-Based Context Calculation of OCLExpressions
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
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
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()
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
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
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
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
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
10
Detaillierte Architektur
11
Performancemessungen
■ Metamodell = Company Model
■ Änderungen auf einer Instanz mit 5000 Elementen
12
Hinzufügen eines Departments
■ 3 Events
■ 14 Neuauswertungen
13
Löschen eines Departments
■ 4 Events
■ 19 Neuauswertungen