62
1 09.01.20 Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien Grundlagen der Softwareproduktlinien: 10. Interaktionen Wintersemester 2019/20 Gunter Saake

Grundlagen der Softwareproduktlinien: 10. Interaktionen

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Grundlagen der Softwareproduktlinien: 10. Interaktionen

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

4109.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Feature-Interaktionen

Page 3: Grundlagen der Softwareproduktlinien: 10. Interaktionen

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

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

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

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

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

4709.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Feature-Interaktionen

lnplus power

eval

print

simplify

plus power

eval

print

plus power

eval

print

(a) (b)

(c)

Daten-zentriert Methoden-zentriert (Visitor)

AOP & FOP

Page 9: Grundlagen der Softwareproduktlinien: 10. Interaktionen

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

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

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

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

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

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

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

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

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

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

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

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

6009.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Auflösung von Feature-Interaktionen

Page 22: Grundlagen der Softwareproduktlinien: 10. Interaktionen

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

7709.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Überblick

Page 39: Grundlagen der Softwareproduktlinien: 10. Interaktionen

7809.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Überblick

Keine beste Lösung

Page 40: Grundlagen der Softwareproduktlinien: 10. Interaktionen

7909.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Beispiel: Herauslösen von Interaktionen

Page 41: Grundlagen der Softwareproduktlinien: 10. Interaktionen

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

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

8209.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Interaktionen höherer Ordnung

Page 44: Grundlagen der Softwareproduktlinien: 10. Interaktionen

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

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

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

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

print

simplify

lnplus power

Page 48: Grundlagen der Softwareproduktlinien: 10. Interaktionen

8709.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Erfahrungen und Praxis

Page 49: Grundlagen der Softwareproduktlinien: 10. Interaktionen

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

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

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

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

9209.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Exkurs: PKW-Produktlinie

Page 54: Grundlagen der Softwareproduktlinien: 10. Interaktionen

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

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

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

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

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

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

9909.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Zusammenfassung

Page 61: Grundlagen der Softwareproduktlinien: 10. Interaktionen

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

10109.01.20Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Fragen