Chapter 5 (Programmier-Paradigmen für Software Produktlinien 2) Flashcards

1
Q

Was sind Ziele von Programmierparadigmen in SPL?

A
Entwurf neuartiger Implementierungskonzepte und Sprachkonstrukte für Variabilität auf Programmebene
Lösungsansätze für 
- Feature Traceability
- Crosscutting Concerns
- Preplanning problem
- unflexible Vererbungshierarchien
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was ist der Unterschied zwischen Syntaktisches - und Semantisches Featuremapping?

A

Sytanktisch: n:m Feature mapping im Solutionspace (CPP)
Semantisch: 1:1 Mapping (FOP)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was ist Komposition durch Aggregation?

A

Syntax : Aggregation/Kapselung
Kompositionssemantik: Hinzufügen in Klassen
Formale Semantik: Disjunkte Mengenvereinigung

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Was ist Komposition durch Vererbung?

A

Syntax: Vererbung
Kompositionssemantik: Erweitern von Klassen
Formale Semantik: Overriding: rechtsassoziative Mengenvereinigung

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was ist Feature Oriented Programming (FOP)?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was bedeuten Kollaborationen und Rollen im Zusammenhang mit FOP?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Wie macht man FOP in Java?

A
  • refines für Klassenverfeinerungen

- super für Methodenverfeinerungen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was ist der Unterschied zwischen Komposition mit Hampack/Mixins?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Was ist Aspect Oriented Programming(AOP)?

A
  • Entwicklung aus Metaobjektprotokollen
  • Ziel: Modularisierung von querschneidenden Belangen
  • Erlaubt statische und dynamische Anpassungen
  • Deklarativ mittels Quantifizierung
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was kann ein Aspekt und wofür wird das in SPL benutzt?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Was ist ein statischer Aspekt?

A

Beispiel ist Erweiterung einer Methode X in Klasse Y

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was ist ein dynamischer Aspekt?

A

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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Was ist Quantifikation in bezug auf Pointcuts?

A

Eine Wichtige Eigenschaft von Pointcuts ist, dass sie deklarativ Join-Points quantifizieren können und somit auf mehrere Join-Points matchen können.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Was hat Obliviousness in Bezug auf AOP zu bedeuten?

A

+ 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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Ist pro Feature 1 Aspekt sinnvoll?

A
  • 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”
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Vergleichen Sie AOP und FOP

A

Unterscheiden sich in ihrer Philosophie

  • AOP fokussiert auf querschneidende Belange
  • FOP fokussiert auf Domänenabstraktion
17
Q

Was ist Delta Oriented Programming?

A

Es gibt ein Kernprogramm einer partiellen/vollständigen Konfiguration
- Modifikation des Kernprogrammes mit Anwendungsbedingungen über Features

18
Q

Unterschied zwischen CoreDOP und pureDOP?

A

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