Use LEFT and RIGHT arrow keys to navigate between flashcards;
Use UP and DOWN arrow keys to flip the card;
H to show hint;
A reads text to speech;
17 Cards in this Set
- Front
- Back
Join Point Adaption: Definition
|
Mittel um ausgewählte Join Points zu adaptieren
- Introductions, before,after, around |
|
Join Point Adaptations: Dimensionen
|
Level of Adaptation
Contructiveness Variability ContextAddition / Abstraktion |
|
Join Point Adaption: Level of Adaptation
|
Idee: Unterschedung zwischen strukturellen und verhaltens Adaptionen
Structural: ändern die Struktur des Codes (introduction) hinzufügen von Feldern Behavioral: ändert das Verhalten (advice) ohne dabei das strukturelle auftreten zu ändern Ändern von Methodeb |
|
Join Point Adaption: Constructiveness
|
- Destruktiv (ersetzt Code, around ohne Proceed)
- Konstruktiv (keine Codeersetzung) - konditioniert konstruktiv (around) -> Kein direkter Impact aber Overridung, Evolution,Reflection |
|
Join Point Adaption: Variability
|
Non-Variable Adaptation: keine Variabilität
Parametrisch: Variabilities innerhalb des codes, der die Adaption repräsentiert. |
|
Join Point Adaption: Level of Abstraktion / Context Addition
|
Fix: Kontext ist nicht veränderbar für alle join point klassen
Variable: Kontext der Join Points ist vom Entwickler spezifizierbar. |
|
Join Point Adaption: Weaving
|
Implementierung / Realisierung der Adaptations
Fragestellung: Wie Adaption durchführen? Wie ausgewählte Join Points berechnen - Code Transformation oder Veränderungen im Laufzeitsystem |
|
Weaving: Dimensionen
|
Dynamicity
Level of Adaptation Weaving Stimulus |
|
Weaving: Dynamicity
|
Dynamisch (veränderungen zur Laufzeit -> AspectS
Statusch (final decision / byte code änderung) Aspect J |
|
Weaving: Level of Adaptation
|
Code Instrumentation: Code Base Transformation
kein neues Laufzeitsystem nötig, binaries können auf mehreren Maschinen laufen. Runtime-overhead durch join point checks Sprachsemantiken oft unklar, Rekursive Probleme Code Interpretation: neue Code Interpretation in Sprachen mit wenigen Eigenschaften ist eine einfache Implementierung möglich Performance profitiert bei Join Point Checks Wenn die Basissprache auf mehreren Maschinen verfügbar ist eine große Anzahl von Laufzeitsystemen nötig Binaries evtl inkompatibel |
|
Weaving: Stimulus
|
User Driven: Abhängig von Inputs oder User Auswahl
System Driven: Nicht abhängig vom User Input |
|
Weaving: Aspect J Prinzip
|
Statisches Weaving basierend auf Code-Instrumentations
|
|
Weaving: Rekursionsproblem (Code instrumentation)
|
Jedes übersetze Objekt, könnte einen Join Point repräsentieren
- Rekursion durch Advice ausgelöst - Reduktion von selektierten Join Points durch den ausschluss von ziel klassen Pointcut ausgelöste rekursion - Reduktion von ausgewählten Join Points durch den Ausschluss des Kontrollfluss beginnend beim Aspect |
|
Weaving: AspectJ Funktion
|
Aspekte werden zur Compile Zeit hinzugefügt
ByteCode Transformation - Nachteil: Performance Overhead Aspect -> Class/singleton + staitscher Methoden block Before / After Advice: Methoden (parameter foreach exposed by pointcut) advice parameter Around Advice: Aspectclosure -> Store parameter - Proceed originaler Methodenaufruf |
|
Weaving: AspectJ pointcut
|
statisch oder dynamisch
- Statisch: direkte Code represenataiton - Dynamisch: Join Point Checks - if statements if (x instanceof B){advice} else { aroundbody; originalmethod()} Nicht alle Join Point Shadows implementiert statische Typeinformationen keine Kontrollflüsse Cflow -> konstrukt Datenstruktur (thread local variable) -> counter cflow stack (context exposure) static dynamic join point information provision |
|
Weaving: AspectS
|
Forschungprototyp
Aspekte, Pointcuts, Advices sind Objekte Explizite Instanziierung des Entwicklers notwendig Nur Methods valls / execution als JoinPoints MYAspect subclass of AsAspect - new install, uninstall ASbeforeAfteradvice,Asroundadvice (hat kein proceed) Fixe join point abstraction |
|
Weaving in AspectS
|
Methoddictionary (von behaviour aus)
Methodwrappiung (method wird ersetzt durch method mit aspect) Aspect - initialized -> create wrappers - installed -> each wrapper replaces original method in class dictionary - No static analysis für reducing the numer of join points |