Chapter 5 (Programmier-Paradigmen für Software Produktlinien 2) Flashcards
Was sind Ziele von Programmierparadigmen in SPL?
Entwurf neuartiger Implementierungskonzepte und Sprachkonstrukte für Variabilität auf Programmebene Lösungsansätze für - Feature Traceability - Crosscutting Concerns - Preplanning problem - unflexible Vererbungshierarchien
Was ist der Unterschied zwischen Syntaktisches - und Semantisches Featuremapping?
Sytanktisch: n:m Feature mapping im Solutionspace (CPP)
Semantisch: 1:1 Mapping (FOP)
Was ist Komposition durch Aggregation?
Syntax : Aggregation/Kapselung
Kompositionssemantik: Hinzufügen in Klassen
Formale Semantik: Disjunkte Mengenvereinigung
Was ist Komposition durch Vererbung?
Syntax: Vererbung
Kompositionssemantik: Erweitern von Klassen
Formale Semantik: Overriding: rechtsassoziative Mengenvereinigung
Was ist Feature Oriented Programming (FOP)?
Kompositionsbasierter Ansatz zur Lösung des feature Traceability Problems.
Jedes Feature wird durch ein Feature-Modul implementiert
- Ermöglicht 1:n Feature Traceability
- syntaktische Trennung und Modularisierung von Feature-Code
- einfache Featurekomposition auf Basis der objektorientierten Programmkomposition
Feature als explizites Design-Konzept im Lösungsraum
Was bedeuten Kollaborationen und Rollen im Zusammenhang mit FOP?
Eine Menge von Klassen, die miteinander interagieren um ein Feature zu implementieren, bilden eine Kollaboration.
Eine Klasse kann Teil mehrerer Kollaborationen sein und in diesen verschiedene Rollen einnehmen(Rollenpolymorphie)
Eine Rolle kapselt das Verhalten/ die Funktionalität einer Klasse, welche für eine Kollaboration relevant ist.
Wie macht man FOP in Java?
- refines für Klassenverfeinerungen
- super für Methodenverfeinerungen
Was ist der Unterschied zwischen Komposition mit Hampack/Mixins?
Jampack:
- Zusammenbauen einer Klasse durch Überlagerung(superimposition)
- Super/original-Aufrufe werden durch inlining integriert
-> Ergebnis : eine Klasse
** Zurordnung des generierten Code zu Rollen nach Generierungnicht mehr vorhanden.
Mixins:
- generierung einer Klasse pro Rolle mit entsprechender Hierarchie
- Umbenennung, so dass die finale Klasse den Klassennamen erhält
- Ersetzen von Super durch super
** Code-Overhead
** langsamer durch Indirektion bei Methodenaufrufen
Was ist Aspect Oriented Programming(AOP)?
- Entwicklung aus Metaobjektprotokollen
- Ziel: Modularisierung von querschneidenden Belangen
- Erlaubt statische und dynamische Anpassungen
- Deklarativ mittels Quantifizierung
Was kann ein Aspekt und wofür wird das in SPL benutzt?
Es wird benutzt füt Modularisierung von Crosscutting concerns. 1 Aspekt webt das Feature in alle Module ein.
Es kann
- Klassenhierarchien manipulieren
- Methoden und Felder zu einer Klasse hinzufügen
- Methoden mit zusätzlichem Code erweitern
- Ereignisse wie Methodenaufrufe oder Feldzugriffe abfangen und zusätzlichen oder alternativen Code ausführen
Was ist ein statischer Aspekt?
Beispiel ist Erweiterung einer Methode X in Klasse Y
Was ist ein dynamischer Aspekt?
Dynamische Erweiterung auf Basis von Join-Points
- Ein Ereignis in der Programmausführung, wie ein Methodenaufruf, Feldzugriff o.a. wird als (dynamischer) join-point bezeichner
- Ein pointcut ist ein Prädikat um Join-points(JPs) auszuwählen.
- Advice ist Code, der ausgeführt wird, wenn ein JP von einem Pontcut ausgewählt wurde.
Was ist Quantifikation in bezug auf Pointcuts?
Eine Wichtige Eigenschaft von Pointcuts ist, dass sie deklarativ Join-Points quantifizieren können und somit auf mehrere Join-Points matchen können.
Was hat Obliviousness in Bezug auf AOP zu bedeuten?
+ Unbewusstheitsprinzip besagt, dass das Basisprogramm nichts von den Aspekten wissen muss
+ klassischen OO Design reicht, der Quelltext muss nicht für Aspekte vorbereitet sein
+ Basisentwickler brauchen keine Kenntnisse über Aspekte, weige Spezialisten reichen
+ die AOP-Sprachen muss sehr mächtig sein
- explizit keine Schnittstellen
- sehr schlechtes Design ist Konsequenz, wenn Aspekte später reingehackt werden
- komplexer Code
Ist pro Feature 1 Aspekt sinnvoll?
- Aspekte können sehr groß und unübersichtlich werden
- Aspekte können neue Klassen nur als statische innere Klassen einfügen
- > Bündelung von mehreren Aspekten und Klassen in Feature Modulen -> Mischung von Kollaborationen und Aspekten “Aspectual Feature Modules”
Vergleichen Sie AOP und FOP
Unterscheiden sich in ihrer Philosophie
- AOP fokussiert auf querschneidende Belange
- FOP fokussiert auf Domänenabstraktion
Was ist Delta Oriented Programming?
Es gibt ein Kernprogramm einer partiellen/vollständigen Konfiguration
- Modifikation des Kernprogrammes mit Anwendungsbedingungen über Features
Unterschied zwischen CoreDOP und pureDOP?
CoreDOP:
- gültiges Kernprodukt notwendig
- nicht immer explizit vorhanden
- Zusammenhang zwischen Delta-Modulen und Features schwer verständlich
pureDOP:
- kein expliziter Kern erforderlich
- Kern ergibt sich implizit durch mapping eines Delta-moduls auf Core-Feature
- Produktgenerierung durch anwendung von Deltas