3. Se - 11. Aspektorientierte Softwareentwicklung Flashcards
Für die Wartung eines Softwaresystems ist es ideal, seine Aufteilung in (1) anhand der (2) vorzunehmen.
Was sollte für die Zahlen eingegeben werden?
1 - Komponenten
2 - Anforderungen
Für die Wartung eines Softwaresystems ist es ideal, seine Aufteilung in Komponenten anhand der Anforderungen vorzunehmen.
Für die Wartung eines Softwaresystems ist es ideal, seine Aufteilung in Komponenten anhand der Anforderungen vorzunehmen.
Welches Prinzip entspricht dies vollständig?
Prinzip “Seperation of concerns”
Side Info:
Mann kann versuchen diesem Ziel so nahe wie möglich zu kommen, doch zu 100% wird es nie erreichbar sein
Was ist eine m:n Beziehung?
Es gibt immer Anforderungen, die sich auf mehrere Komponenten beziehen und Komponenten, die mehrere Anforderungen erfüllen müssen
Wann stößt das Prinzip “Serperation of concerns” an seine Grenzen? Und wie heißt das Fachwort dazu?
Wenn die Belange sich überlagern (crossing concerns)
Nenne häufige Bsp für crossing conerns (3)
Authentifizierung
Logging
Sicherung im Hintergrund
Was ist AOSD?
Welches Konzept führt es ein?
Aspektorientierte SoftwareEntwicklung
Konzept der Aspekte. Ein Aspekt kapselt Funktionalität, die anderen Funktionalität kreuzt, also an vielen Stellen im System vorkommt
Was wird im Quellcode spezifiziert?
Wie Aspekte in den Code eingeworben werden, um ein ausführbares Programm zu erzeugen
Somit können Aspekte UNabhängig voneinander geändert und wiederverwendet werden
Was ist ein Aspekt?
Aus was besteht ein Aspekt?
Ein Aspekt kapselt Funktionalität, die anderen Funktionalität kreuzt, also an vielen Stellen im System vorkommt
Advice: der Quellcode gemäss den (anderen Anforderungen kreuzenden) Anforderungen
Pointcut: die Definition, an welchen Join Points der Aspekte eingefügt werden soll
Was sind mögliche Join Points?
Vor oder nach dem Aufruf bestimmter Methoden oder Konstruktoren
Zugriffe auf bestimmte Attribute einer Klasse oder bestimmter Objekte
Initialisierung von Objekten
Exceptions
Nenne (6) Begriffe des AOSD und die Definition
Advice: Code zum Implementieren eines Belanges
Aspekt: Programmabstraktion, die einen sich kreuzenden Belang definiert. Sie enthält die Definition eines Pointercuts und den mit dem Belang verknüpften Advice
Verbindungspunkt (Joint Point): Ergebis in einem ausgeführten Programm, bei dem der mit einem Aspekt verknüpfte Advice ausgeführt werden kann
Verbindungspunktmodell: Satz von Ereignissen, auf die in einem Pointcut verwiesen werden kann
Pointcut: Eine in einem Aspekt eingeschlossenen Anweisungen, die die Verbindungspunkte definiert, an denen der mit dem Aspekt verknüpfte Advice ausgeführt werden soll
Einweben: Einbeziehen des Advicecodes an den angegeben Verbindundspunkten durch einen Aspect Weber
Welche Möglichkeiten gibt es zur Einwebung von Aspekten?
- Quellcodeverarbeitung: Zunächst läuft der Aspect Weaver über den Quellcode und fügt ihn (in angepasster Form) an den passenden Stellen ein. Danach lässt sich ein Standardcompiler verwenden
- Während des Links: Der Aspect-Weaver wird sozusagen in den Compiler “eingebaut”
- zur Laufzeit: Join Points werden ständig im Hintergrund überwacht. Tritt ein definiertes Ereignis ein, so wird der zugehörige Advice ausgeführt
Wie werden bei der Use Case Modellierung Aspekte w.z.B erweiternde Anwendungsfälle, gekennzeichnet?
«_space;extends»_space;
«_space;include»_space;
Wie können Black-Box-Tests durchgeführt werden?
Black-Box-Test können für aspektorientierte Software durchgeführt werden wie für jede andere Software
Welche Besonderheiten haben White-Box-Test und Programminspektionen bei AOSD?
Aspekte unabhängig von dem System testen, in das sie eingewoben werden
Jeder Advice einzeln testbar
Gegenseitige Störung von Aspekten muss ausgeschlossen werden, indem Programmabläufe erzeugt werden, bei denen die beteiligten Aspekte in allen möglichen Kombinationen und Reihenfolge aufgerufen werden
Test sollte alle Join Points umfassen, die in dem System vorkommen