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

1
Q

Was ist der Unterschied zwischen Variabilität zur Laufzeit und Compilezeit?

A

Zur Laufzeit:
- Gesamter Quelltext aller Konfigurationen wird kompiliert
- Belegung der featureparameter variiert den Kontrollfluss der Programmausführung
Zur Compilezeit:
- Nur für die Konfiguration benötigter Quelltext wird kompiliert
- Belegung der Featureparameter variiert den übersetzen Quelltext.

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

Was sind Vorteile und Nachteile von Präprozessoren?

A

+ In vielen Sprachen bereits enthalten/ einfach verwendbare Tools
+ Den meisten Entwicklern bereits bekannt
+ Sehr einfaches Programmierkonzept: markieren und entfernen
+ Sehr flexibel/ ausdrucksstark, beliebige Granularität
+ Nachträgliche Einführung von Variabilität in bestehendes Programm einfach
- Vermischung von zwei Sprachen
- Kontrollfluss schwer nachvollziehbar
- Lange Annotationen schwer zu finden
- Zusätzliche Zeilenumbrüche zerstören Layout
- Vermischung von syntaktischer Variation und Programmsemantik
- Hohe Komplexität durch beliebige Schachtelung
- Fehleranfälligkeit durch Komplexität und unstrukturierten Einsatz
- Feature Code ist komplett verstreut => Feature Traceability problem
- verhindert erschwert Toolsupport.

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

Was ist Feature- Traceability?

A

Ziel: Zusammenhang zwischen Code und features explizit machen

  • Im Idealfall: Pro Feature ein Modul
  • Andernfalls sind Umwege und Notlösungen unausweichlich, wenn Modularisierung nicht möglich
  • > Kommentare oder Annotationnen im Quelltext
  • > Namenskonventionen
  • > Zusätzliche Werkzeuge
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Was sind Komponentensysteme?

A

Komponenten sind abgeschlossene, modulare Implementierungseinheiten mit fester Schnittstelle.

  • Komponenten bieten Dienst an Umgebung an.
  • ”” werden zusammen mit anderen kompatiblen Komponenten (auch von anderen herstellern) zu Softwaresystemen zusammengesetzt (Komposition und Aggregation)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Unterschied/Gemeinsamkeit von Komponente und Objekte/Klassen?

A
  • Ähnliches Konzept: Kapselung, Interfaces, Geheimnisprinzip
  • Objekte strukturieren ein Problem
  • Komponenten bieten anwendbare Teilfunktionalität
  • Objekte sind üblicherweise kleiner als Komponenten
  • Objekte haben oft Abhängigkeiten zu anderen Objekten und Komponenten haben eher wenig Kopplung
  • Interfaces von Objekten sind häufig Implementierungsnah; Komponenten sind eher auf einer höheren Abstraktionsebene.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was sind Frameworks?

A
  • Sammlung abstrakter und konkreter Klassen
  • Abstrakte Struktur, die für einen bestimmten Zweck instanziiert/angepasst/erweitert werden kann.
  • Wiederverwendbare Lösung für eine Problemfamilie in einer Domäne.
  • Punkte, an denen Erweiterungen vorgesehen sind: hot spots (variation points, extension points)
  • Umkehrung der Kontrolle, das Framework bestimmt die Aufrufreihenfolge von Diensten.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was sind Plug-Ins

A
  • kapseln Erweiterungen eines Frameworks
  • Ermöglichen es, spezielle Funktionen bei Bedarf hinzuzufügen
  • Üblicherweise getrennt vom Framework kompilierbar
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was vertseht man unter Produktlinien als Frameworks?

A
  • Vollautomatisierung möglich
  • Modular
  • In der Praxis verbreitet und bewährt
  • Erstellungsaufwand und Laufzeit- Overhead für Framework/Architektur
  • Vorplanung nötig , erfordert Erfahrung
  • Schwierige Wartung, Evolution
  • Geringe Granularität oder iesige Interfaces
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Was sind Crosscutting Concerns?

A

Nicht alle belange( Features ) in einem Programm können mittels Objekten(Komponenten, Plugins) modularisiert werden.

  • Belange sind semantisch zusammenhängende Einheiten
  • Aber ihre Implementierung ist häufig verstreut, vermischt und repliziert im Code.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was ist Code Scattering und Tangling?

A

● Verstreuter Feature-Code (code scattering)
– Code, der zu einem Feature gehört, ist nicht modularisiert, sondern im gesamten Programm verteilt
– Häufig kopierter Code (auch wenn es je nur ein einzelner Methodenaufruf ist)
– Oder stark verteilte Implementierung von (komplementären) Teilen eines Features

● Vermischter Feature-Code (code tangling)
– Code, der zu verschiedenen Features gehört, ist in einem Modul (oder einer Methode) vermischt

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

Was bedeutet Dominante Dekomposition?

A

● Viele Belange können modularisiert werden, jedoch nicht immer gleichzeitig
– Problemstellung nur in einer Richtung modularisierbar
– Im Graph können Farben modularisiert werden…
– …dann sind aber die Datenstrukturen (Node, Edge) verteilt (oder umgekehrt)
● Entwickler wählen eine „dominante“ Dekomposition aus (z.B. Operationen, Authentifizierung, Datenstrukturen), aber einige andere Belange „schneiden quer“

● Gleichzeitige Modularisierung entlang verschiedener Dimensionen nicht möglich

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