• Shuffle
    Toggle On
    Toggle Off
  • Alphabetize
    Toggle On
    Toggle Off
  • Front First
    Toggle On
    Toggle Off
  • Both Sides
    Toggle On
    Toggle Off
  • Read
    Toggle On
    Toggle Off
Reading...
Front

Card Range To Study

through

image

Play button

image

Play button

image

Progress

1/17

Click to flip

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