grundlagen der softwareproduktlinien: 10. interaktionen
TRANSCRIPT
![Page 1: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/1.jpg)
109.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Grundlagen der Softwareproduktlinien: 10. Interaktionen
Wintersemester 2019/20Gunter Saake
![Page 2: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/2.jpg)
4109.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Feature-Interaktionen
![Page 3: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/3.jpg)
4209.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Telefonproduktlinie: Manche Telefone unterstützen „Anklopfen“, andere „Rufumleitung bei Besetzt“
• Was passiert wenn beide Features aktiviert sind?• Freie Leitung: kein Problem• Besetzte Leitung: anklopfen oder umleiten?
• Kann man solche Probleme erkennen?
Beispiel: Feature-Interaktionen
![Page 4: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/4.jpg)
4309.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Flood Control• Verhindert Überschwemmung durch Wasser abstellen
• Fire Control• Bekämpft Feuer mit Sprinkleranlage
Beispiel: Feature-Interaktionen
![Page 5: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/5.jpg)
4409.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Cycle braucht DFS• Shortest Path geht nur auf gewichteten Graphen• Connected geht nur auf ungerichteten Graphen• Strongly Connected geht nur auf gerichteten Graphen und braucht
DFS
Feature-Interaktionen
GPL
TRANSPOSE
BFS DFSDIRECTEDUNDIRECTED WEIGHTED
CONNECTEDCOMPONENTS
STRONGLYCONNECTED C.CYCLE CHECKING
SINGLE -SOURCESHORTEST PATH
SEARCH
ALGORITHMS
EDGES
![Page 6: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/6.jpg)
4509.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Datenbank-Produktlinie mit Feature • Statistics• Transactions
• Statistics sammelt Statistiken über Buffer Hit Ratio, Tabellen-Größe, Transaktionen
• Transaktionen stellt ACID-Eigenschaften sicher
• Beide Features sollen optional sein• Aber: Statistik sammelt Informationen über Transaktionen,
Transaktionen nutzen evtl. statistische Informationen ...
• Wie implementieren, so dass alle Varianten möglich sind?
Feature-Interaktionen
Database
Statistics Transactions
![Page 7: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/7.jpg)
4609.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Datenbank-Produktlinie mit Feature Index und Update• Index: Beschleunigt den Zugriff durch B-Baum• Update: Erlaubt Updates der Datenbank, sonst nur Lesezugriff
• Beide Features sollen optional sein• Effizienter Leseindex• Schreiben in Datenbank ohne Index• Aber: Wenn beide Features � schreiben auch in Index
• Wie implementieren, so dass alle Varianten möglich sind?
Feature-Interaktionen
![Page 8: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/8.jpg)
4709.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Feature-Interaktionen
lnplus power
eval
simplify
plus power
eval
plus power
eval
(a) (b)
(c)
Daten-zentriert Methoden-zentriert (Visitor)
AOP & FOP
![Page 9: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/9.jpg)
4809.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Features benutzen Methoden anderer Features• Cycle nutzt die Suchfunktion Graph.search, die in DFS
eingeführt wurde• Shorted Path erwartet, dass die Methode Edge.getWeight
vorhanden ist
• Features erweitern andere Features• Feature Weighted implementiert Gewichte indem es Methode
addEdge aus Base überschreibt
• Features verlassen sich auf ein bestimmtes Verhalten, welches in einem Feature festgelegt wird
• Connected erwartet das Kanten immer in beide Richtungen zeigen
Interaktion verursacht Abhängigkeiten
![Page 10: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/10.jpg)
4909.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Optionales Feature verhält sich isoliert korrekt
• Problem in Kombination mit anderem Feature
• Zusätzlicher Quelltext koordiniert richtiges Verhalten
Probleme optionaler Features
Transaktionen Statistiken
Statistiken über Transaktionen
Anklopfen Rufumleitung
Einstellungsmöglichkeit
Add Eval
Auswerten von Add
+ +
+Index Update
Schreiben in Index+
![Page 11: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/11.jpg)
5009.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Probleme optionaler Features
Statistiken(buffer hit ratio, table size and cardinality, …)
Transaktionen(locks, commit,rollback, …)
Durchsatz-Messung(“Transaktionen pro Sekunde”)
![Page 12: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/12.jpg)
5109.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Erwünschte Produkte
Datenbank mit Statistiken, aber ohne Transakt.
Datenbank mit Transakt., aber ohne Statistiken
Datenbank mit Statistikenund mit Transaktionen
Requirements Engineering II - SPL: Feature-Interaktionen
![Page 13: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/13.jpg)
5209.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Unerwünschte/Unmögliche Produkte
Datenbank mit Transaktionen und ohneStatistiken, die aber denoch den Durchsatz misst(Grösser und langsamer als nötig)
Datenbank mit Statistiken und ohneTransaktionen, die dennoch denDurchsatz misst (?)
![Page 14: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/14.jpg)
5309.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Implementierungsbeispiel
• Sperren (blau)
• Statistiken (rot)
• Die Features überlappensich an 2 Stellen (violett)• Statistiken über Locks• Synchronisierung der
Statistikmethode
class Database {List locks;void lock() { /*...*/}void unlock() { /*...*/ }void put(Object key,Object data){
lock(); /*...*/unlock();
}Object get(Object key) {
lock(); /*...*/ unlock();
}int getOpenLocks() {
return locks.size(); }int getDbSize() {
return calculateDbSize(); }static int calculateDbSize() {
lock();/*...*/ unlock();
}}
![Page 15: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/15.jpg)
5409.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Aufteilung in Module?
Stat Lock
DBWo implementiert man hier die
Durchsatz-Messung?
![Page 16: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/16.jpg)
5509.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Aufteilung in Module?
Stat Lock
DB
Stat Lock
DB
Wo implementiert man hier dieDurchsatz-Messung?
Wie erstellt man ein Produkt mitStatistiken aber ohne Transaktionen?
![Page 17: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/17.jpg)
5609.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Aufteilung in Module?
Stat Lock
DB
Stat Lock
DB
Database
Statistics Transactions
Txn-Stats
Wo implementiert man hier dieDurchsatz-Messung?
Wie erstellt man ein Produkt mitStatistiken aber ohne Transaktionen?
Ist Durchsatz-Messungwirklich ein Feature? LockStat Lock
DB
Stat
![Page 18: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/18.jpg)
5709.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Beschreibt wie viele Produkte aus einer Produktlinie erstellt werden können
• Eine Produktlinie mit n unabhängigen, optionalen Features erlaubt 2n Produkte
• Abhängigkeiten zwischen Features schränken die Variabilität der Produktlinie ein
• Eine einzige Abhängigkeit „Feature A benötigt B“ reduziert die Anzahl der möglichen Produkte um 25%
Variabilität
![Page 19: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/19.jpg)
5809.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Eingeschränkte Variabilität
EingeschränkteVariabilität
Mapping
Database
Statistics TransactionsAccess
Read Write
Index
Feature Modell
Gewollt: 12 Produkte
Database
Statistics Transactions
Gewollt: 4 ProdukteStat Lock
DB
DB
Stat LockWrtIdx
Tatsächlich möglich: 5 Produkte
Tatsächlich möglich: 3 Produkte
Implementierung
Mapping
![Page 20: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/20.jpg)
5909.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• „A benötigt B“, „B benötigt C“ à „A benötigt B und C“
• Folge: Einzelne Features können die Auswahl vieler weiterer Features erzwingen und die Variabilität der SPL deutlich einschränken
• Beispiel: Berkeley DB• Das Statistik-Feature sammelt Statistiken über verschiedene
Bereiche des Programms, z.B. Speicherverbrauch, Transaktionen, Schreibzugriffe, Buffer Hit Ratio, usw.
• Die Auswahl des Statistik-Features erzwingt die Auswahl von 14 (von 37) weiteren Features, u. a. Transaktionen, Caches
Abhängigkeiten sind transitiv
![Page 21: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/21.jpg)
6009.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Auflösung von Feature-Interaktionen
![Page 22: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/22.jpg)
6109.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Dynamisch vs. Statisch• Dynamisch: Beim Ausführen einer Variante; unerwartetes
Verhalten, Abstürze, Race Conditions• Statisch: beim Generieren/Kompilieren einer Variante; z. B.
Methode aufgerufen, die nicht definiert ist
• Domäne vs. Implementierung• Domänenabhängigkeit: Die Abhängigkeit ist durch die Domäne
konzeptionell festgelegt; alternative Implementierungen haben die gleichen Abhängigkeiten
• Implementierungsabhängigkeit: Abhängigkeit entsteht durch eine gewählte Implementierung; alternative Implementierung ist möglich
Klassifikation
![Page 23: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/23.jpg)
6209.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Schwer zu erkennen
• Viel Forschung in Telekommunikationssystemen• M. Calder, M. Kolberg, E.H. Magill, S. Reiff-Marganiec. Feature
interaction: A critical review and considered forecast. Computer Networks, Volume 41, Issue 1, 2003, pp. 115-141
• Bei Anforderungsanalyse durch spezielle Modellierung gezielt nach Interaktionen suchen
• Formale Spezifikation, Model Checking, …
• Testen, testen, testen ...
• Wenn gefunden à Problem optionaler Features
Dynamische Feature-Interaktionen
![Page 24: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/24.jpg)
6309.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Implementierungsabhängigkeiten sind unangenehm
• Reduzierte Variabilität, obwohl Varianten in Domäne möglich wären
• Beispiel: Transaktionen vs. Statistiken (s.o.)• Lösung 1: im Feature-Modell benötigt Statistik Transaktionen à
Reduzierte Variabilität• Lösung 2: Keine Statistik über Transaktionen à schlechtere
Implementierung
• Daher gesucht: Möglichkeit Implementierungs-abhängigkeiten aufzulösen
Implementierungsabhängigkeiten
![Page 25: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/25.jpg)
6409.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Wie modularisiert man zwei interagierende Features?
• Ziele:• Variabilität wie im Feature-Modell vorgesehen• Geringer Implementierungsaufwand• Effiziente Implementierung (Codegröße, Performance)• Code Qualität (Trennung v. Belangen, Modularität)
Lösungen (L) für Probleme
Modul-Schnittstelle
![Page 26: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/26.jpg)
6509.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
L 1: Mehrere Implementierungen
Variability Impl. Effort Binary Size & Perf. Code Quality
Produkte
![Page 27: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/27.jpg)
6609.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
L 1: Mehrere Implementierungen
Variability Impl. Effort Binary Size & Perf. Code Quality
Code Replikation
Produkte
![Page 28: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/28.jpg)
6709.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
L 2: Abhängigkeiten in Feature-Modell
Variability Impl. Effort Binary Size & Perf. Code Quality
Produkte
![Page 29: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/29.jpg)
6809.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
L 2: Abhängigkeiten in Feature-Modell
Variability Impl. Effort Binary Size & Perf. Code Quality
Produkte
Varianten nicht
möglich
![Page 30: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/30.jpg)
6909.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
L 3: Quelltext verschieben
Variability Impl. Effort Binary Size & Perf. Code Quality
Produkte
![Page 31: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/31.jpg)
7009.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
L 3: Quelltext verschieben
Nicht effizient
Variability Impl. Effort Binary Size & Perf. Code Quality
Produkte
![Page 32: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/32.jpg)
7109.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
L 4: Verhalten ändern
Variability Impl. Effort Binary Size & Perf. Code Quality
Produkte
![Page 33: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/33.jpg)
7209.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
L 4: Verhalten ändern
Variability Impl. Effort Binary Size & Perf. Code Quality
Produkte
Fehlendes
Verhalten
![Page 34: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/34.jpg)
7309.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
L 5: Präprozessor
#ifdef TXNlock();#ifdef STATlockCount++;#endif#endif
Variability Impl. Effort Binary Size & Perf. Code Quality
Produkte
![Page 35: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/35.jpg)
7409.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
L 5: Präprozessor
nicht modular
#ifdef TXNlock();#ifdef STATlockCount++;#endif#endif
Variability Impl. Effort Binary Size & Perf. Code Quality
Produkte
![Page 36: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/36.jpg)
7509.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
L 6: Herauslösen der Interaktionen
Variability Impl. Effort Binary Size & Perf. Code Quality
Produkte
![Page 37: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/37.jpg)
7609.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
L 6: Herauslösen der Interaktionen
Zusätzl. Modul
(aufwändig)
Variability Impl. Effort Binary Size & Perf. Code Quality
Produkte
![Page 38: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/38.jpg)
7709.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Überblick
![Page 39: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/39.jpg)
7809.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Überblick
Keine beste Lösung
![Page 40: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/40.jpg)
7909.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Beispiel: Herauslösen von Interaktionen
![Page 41: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/41.jpg)
8009.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Feature Modul enthält nur den eigenen Code, keinen Interaktionscode
• Neues Modul (A\B) wird immer (automatisch) ausgewählt wenn A und B ausgewählt sind
• A\B erweitert A oder B wenn beide ausgewählt
• Damit sind alle 4 Konfigurationen möglich• ohne A, ohne B• mit A, ohne B• ohne A, mit B• mit A, mit B (und mit A\B)
• „Optimale“ Implementierung für alle Varianten
Herauslösen
![Page 42: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/42.jpg)
8109.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Manuelles Herauslösen sehr aufwendig
• Zusätzliche Module à höhere Komplexität
• Interaktionen sind oft stark verteilte, heterogene Erweiterungen
• Theoretisch sehr viele binäre Interaktionen möglich
• Auch Interaktionen zwischen mehr als zwei Features möglich
Probleme
22
2
maxnnn
i -=÷÷
ø
öççè
æ=
![Page 43: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/43.jpg)
8209.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Interaktionen höherer Ordnung
![Page 44: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/44.jpg)
8309.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Beispiel
class Stack {boolean push(Object o) {
Lock lock=lock();if (lock==null) {
log("lock failed for: "+o)’;return false;
}rememberValue ();elementData[size ++] = o;...}
void log(String msg) { /*...*/ }
boolean undo () {Lock lock=lock();if (lock==null) {
log("undo-lock failed")’;return false;
}restoreValue ();...log("undone.")’;
}}
![Page 45: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/45.jpg)
8409.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Beispiel
class Stack {boolean push(Object o) {
Lock lock=lock();if (lock==null) {
log("lock failed for: "+o)’;return false;
}rememberValue ();elementData[size ++] = o;...}
void log(String msg) { /*...*/ }
boolean undo () {Lock lock=lock();if (lock==null) {
log("undo-lock failed")’;return false;
}restoreValue ();...log("undone.")’;
}}
Locking-Logging
Logging
Locking
Undo
UndoUndo-Locking
Undo-Locking-Logging
Undo-Logging
![Page 46: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/46.jpg)
8509.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Theoretisch möglich (mit höherer Ordnung):
• Tatsächliche Anzahl• Deutlich geringer• Aber trotzdem häufig mehr als Features im System
Wieviele Interaktionen möglich?
121
1
1max --=÷÷
ø
öççè
æ-
=å-
=
non
h nn
o
![Page 47: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/47.jpg)
8609.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Fast aller Quelltext wird in neue Module extrahiert
• 6 Features à 15 Module
Herauslösen im Expression-Problem
eval
simplify
lnplus power
![Page 48: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/48.jpg)
8709.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Erfahrungen und Praxis
![Page 49: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/49.jpg)
8809.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Abhängigkeiten beibehalten?
• Verhalten ändern?
• Herauslösen der Interaktion?
• Präprozessor?
Berkeley DB
![Page 50: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/50.jpg)
8909.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Abhängigkeiten beibehalten?• Wichtige Features waren de-facto obligatorisch (Statistiken,
Transaktionen, Speicherverwaltung, …)
• Verhalten ändern?• Wir wollten das bestehende Verhalten beibehalten
• Herauslösen der Interaktion?• 76% des Statistikcodes in 9 Module extrahiert• Möglich, aber aufwendig
• Präprozessor?• Viel schneller, einfacher• Deutlich verstreute und vermischte Belange
Berkeley DB
![Page 51: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/51.jpg)
9009.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Feature Modell ändern• Vermeidet 14 Abh. und verhindert ¾ der Produkte
• Logging mit Präprozessor• Vermeidet 11 Abh., aber verstreuter Quelltext
• B-Baum kann immer geschrieben werden• Anstieg der Binärgöße um 5—13%
• 10 verbleibende Interaktionen herausgelöst
FAME-DBMS
API
get put delete
API
Read Write
![Page 52: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/52.jpg)
9109.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Variabilität ist kein Selbstzweck• Mit 33 optionalen unabhängigen Features kann man eine
Variante für jeden Menschen auf dem Planeten erstellen• Mit 320 Features eine Variante für jedes Atom im Universum• Niemand kann all diese Varianten testen; niemand braucht all
diese Varianten
• Daher• Konzentration auf benötigte Varianten• Variabilitätsmanagement, Variabilität an der richtigen Stelle,
Domänenanalyse
Welche Interaktionen auflösen?
![Page 53: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/53.jpg)
9209.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Exkurs: PKW-Produktlinie
![Page 54: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/54.jpg)
9309.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Auswahl beschränkte sich auf Autotyp und ggf. noch wenige Extras wie alternativer Kassettenrekorder oder Dachgepäckträger
• Eine Variante (Audi 80, 1.3l, 55PS) machte 40% des Umsatzes aus
Vor 20 Jahre
![Page 55: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/55.jpg)
9409.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• 1020 mögliche Varianten eines Audi; 1032 mögliche Varianten eines BMW
• Kaum ein Auto verlässt das Werk identisch zu einem vorherigen
• Allein 100 verschiedene Bodengruppen für ein Modell, je nach Motor und Ausstattung
• 50 verschiedene Lenkräder (3 vs. 4 Speichen, Holz vs. Kunststoff vs. Leder, Heizung, Farben)
Vor einigen Jahren
![Page 56: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/56.jpg)
9509.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Hohe Variantenzahl verursacht enorme Kosten und Komplexität• Hohe Logistikkosten• Entwicklungsaufwand• Investitionen für Werkzeuge und Anlagen• Hohe Fertigungskosten aufgrund geringer Stückzahlen,
besonders bei zugekauften Teilen
• „Wir brauchen aber genügend Varianten, um die Kundenwünsche zu erfüllen.“
• Lösungsansatz: Variantenmanagement als strategisches Projekt; beteiligt Entwickler, Logistiker und Marketing
Probleme der Produktlinie
![Page 57: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/57.jpg)
9609.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Zuerst Analyse, was überhaupt und in welcher Kombination nachgefragt wird
• Exotische Varianten werden gestrichen• „Es sollte nicht sein, dass wir Teile entwickeln und herstellen,
die wir dann nicht verbauen“
Variantenmanagement
![Page 58: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/58.jpg)
9709.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Zuerst Analyse, was überhaupt und in welcher Kombination nachgefragt wird
• Exotische Varianten werden gestrichen• „Es sollte nicht sein, dass wir Teile entwickeln und herstellen,
die wir dann nicht verbauen“
• Variantenmanagement wird möglichst früh eingesetzt, schon bei der Entwicklung
• Audi konnte 5 Millionen Euro durch Variantenreduktion des Dachmoduls einsparen, indem das zentrale Bedienelement neutral gestaltet wurde, so dass es zu allen Dachhimmeln passt
• BMW hat die Anzahl der Bodengruppen von 100 auf 4 reduziert: Rechts-/Linkslenker, mit/ohne Schiebedach; für Kunden waren Unterschiede zuvor eh nicht sichtbar.
Variantenmanagement
![Page 59: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/59.jpg)
9809.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Nötige Variabilität bieten• Unnötige Variabilität vermeiden• Reduziert Entwicklungskosten• Reduziert Testkosten• Reduziert Wartungskosten
• z. B. Shorted Path von Weighted entkoppeln, wenn es Bedarf dafür gibt, sonst Abhängigkeit belassen
• z. B. Statistiken und Transaktionen nur mit Glue-Code trennen falls Bedarf erkennbar
In Softwareproduktlinien
![Page 60: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/60.jpg)
9909.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Zusammenfassung
![Page 61: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/61.jpg)
10009.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
• Vergleich von FOP und AOP
• Symbiose von FOP und AOP
• Feature-Interaktionen• Probleme• Lösungsansätze
• Variantemanagement
Zusammenfassung
![Page 62: Grundlagen der Softwareproduktlinien: 10. Interaktionen](https://reader035.vdocuments.site/reader035/viewer/2022081404/62932be5b30821253c0b0ce8/html5/thumbnails/62.jpg)
10109.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien
Fragen