Grundlagen der Softwareproduktlinien: 3. Feature ModelleProduktvarianten (SAT, BDD, …)...

Post on 10-Sep-2020

2 views 0 download

Transcript of Grundlagen der Softwareproduktlinien: 3. Feature ModelleProduktvarianten (SAT, BDD, …)...

111/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Grundlagen der Softwareproduktlinien: 3. Feature Modelle

Wintersemester 2019/20Gunter Saake, Jacob Krüger

211/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Letzte Woche

Architecture

Business Organisation

Process

KostenNutzen

Planung

Strategie Technische Aspekte

Menschen

Strukturen

Kommunikation

Verantwortlichkeiten

Rollen

311/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Letzte Woche

411/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Letzte Woche

511/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Warum Features modellieren?

611/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Beschreibung der Features einer Domäne

• Dient Visualisierung und Kommunikation

• Feature-Modelle beschreiben …• Elementare Abstraktionen einer Domäne und deren

Beziehungen• Die Menge der Produkte einer SPL

• Feature-Diagramme visualisieren Features und deren Beziehungen

Feature-Modellierung

711/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Feature-Modellierung

811/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Feature Modellierung in der Praxis

[Berger et al. 2010, 2014]

911/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Feature Modellierung in der Praxis

[Berger et al. 2010, 2014]

1011/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Feature Modellierung in der Praxis

[Berger et al. 2010, 2014]

„The same functionality was implemented twice […] They

implemented the same features.“

„The first one is that it‘s visible, you see the features that you had in the

code before“

1111/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Notationen & Tools

1211/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Notationen & Tools

23% der Unternehmen nutzen eigene NotationenMeistens werden mehrere Notationen genutzt

1311/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Notationen & Tools

1411/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Notationen & Tools

38% nutzen Eigenentwicklungen30% nutzen andere Open-Source Tools27% nutzen andere kommerzielle Tools

1511/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Komplexität

~Linux

1611/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Probleme

1711/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Probleme

„Getting developers to understand why we do this.“

1811/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Probleme

„Getting developers to understand why we do this.“

• Nutzen:• Organisieren von Wissen• Kollaboration• Konfigurationsmanagement

1911/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Feature-Modelle und -Diagramme

2011/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Features: Basis, Txn, Write, Win, Unix

• Abhängigkeiten:• Basis muss immer ausgewählt sein und braucht Win oder Unix• Win darf nie zusammen mit Unix ausgewählt werden• Wenn Txn ausgewählt ist muss auch Write ausgewählt sein

• Wie viele Varianten sind möglich?

Feature-Modell: Beispiel

2111/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Features: Basis, Txn, Write, Win, Unix

• Abhängigkeiten:• Basis muss immer ausgewählt sein und braucht Win oder Unix• Win darf nie zusammen mit Unix ausgewählt werden• Wenn Txn ausgewählt ist muss auch Write ausgewählt sein

• Wie viele Varianten sind möglich?• {Basis, Win}• {Basis, Unix}• {Basis, Win, Write}• {Basis, Unix, Write}• {Basis, Win, Write, Txn}• {Basis, Unix, Write, Txn}

Feature-Modell: Beispiel

2211/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Variable für jedes Feature (wahr wenn ausgewählt)

• Formel beschreibt Feature-Modell

• Formel ist wahr für eine gültige Feature-Auswahl

Feature-Modell in Aussagenlogik

2311/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Variable für jedes Feature (wahr wenn ausgewählt)

• Formel beschreibt Feature-Modell

• Formel ist wahr für eine gültige Feature-Auswahl

• Erlaubt automatische Überprüfung, und Aufzählen der gültigen Produktvarianten (SAT, BDD, …)

Feature-Modell in Aussagenlogik

2411/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Graphische Darstellung eines Modells• Basierend auf Hierarchischem Und-Oder-Graph

Feature-Diagramme

2511/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Graphische Darstellung eines Modells• Basierend auf Hierarchischem Und-Oder-Graph• Kindknoten: Optional, Obligatorisch (Mandatory) oder Alternativ

Feature-Diagramme

Optional Obligatorisch

Oder(mind. 1)

Alternativ(genau 1)

2611/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Graphische Darstellung eines Modells• Basierend auf Hierarchischem Und-Oder-Graph• Kindknoten: Optional, Obligatorisch (Mandatory) oder Alternativ• Abstrakt vs. Konkret: Ohne vs. mit Bezug zur Implementierung• Abstrakte Features haben keinen Einfluss auf Produkte

Feature-Diagramme

Abstrakt

Konkret

2711/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Beispiel: Lego

Hair Gender Body

Officer

2811/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Beispiel: Lego

Hair Gender Body

Officer

2911/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Beispiel: Lego

Hair Gender Body

Officer

3011/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Wurzel ist immer ausgewählt

Diagramme zu Modellen

3111/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Diagramme zu Modellen

3211/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Diagramme zu Modellen

3311/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Diagramme zu Modellen

3411/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Diagramme zu Modellen

3511/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Diagramme zu Modellen

3611/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Diagramme besser lesbar („Management-kompatibel“)

Feature-Diagramm vs. Formeln

3711/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Diagramme besser lesbar („Management-kompatibel“)• Diagramme weniger flexibel

• Zusätzliche Formeln nötig• „Cross-Tree-Constraints“

Feature-Diagramm vs. Formeln

3811/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Diagramme besser lesbar („Management-kompatibel“)• Diagramme weniger flexibel

• Zusätzliche Formeln nötig• „Cross-Tree-Constraints“

• Überführung von Diagramm zu Formel automatisierbar

Feature-Diagramm vs. Formeln

3911/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Diagramme besser lesbar („Management-kompatibel“)• Diagramme weniger flexibel

• Zusätzliche Formeln nötig• „Cross-Tree-Constraints“

• Überführung von Diagramm zu Formel automatisierbar• Es existieren äquivalente Diagramme für eine Formel

Feature-Diagramm vs. Formeln

4011/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Beispiel: FAME DBMS Core

4111/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Beispiel: Berkeley DB

4211/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Skalierbarkeit?

[Berger et al. 2013]

Linux Kernel mit 10.000+ Features?

4311/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Verschiedene Varianten und Erweiterungen• Kardinalitäten (wie in UML)

• Optional: [0,1]• Obligatorisch: [1,1]

• Feature Modelle mit Attributen• …

Diagramm-Varianten

[Benavides et al. 2010]

4411/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Analyse von Feature-Modellen

4511/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Fragen über das Modell

4611/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Ist das Modell konsistent?

• Ist eine Featureauswahl korrekt?

• Welche Features können nicht ausgewählt werden?

• Wie viele valide Produkte existieren?

• Sind zwei Modelle equivalent?

• …

Fragen über das Modell

4711/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Ist eine Featureauswahl valide?• {Root, Base, F1, F4}• {Root, F1, F3, F4}• {Root, Base, F2, F3}• {Root, Base, F1, F3, F4}

Beispiele

4811/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Ist eine Featureauswahl valide?• {Root, Base, F1, F4}• {Root, F1, F3, F4}• {Root, Base, F2, F3}• {Root, Base, F1, F3, F4}

• Ersetzen von Variablen in Formel• Wahr falls ausgewählt• Falsch falls nicht

• Formel wird wahr für valide Auswahl

Beispiele

4911/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Ist eine Featureauswahl valide?• {Root, Base, F1, F4}• {Root, F1, F3, F4}• {Root, Base, F2, F3}• {Root, Base, F1, F3, F4}

• Ersetzen von Variablen in Formel• Wahr falls ausgewählt• Falsch falls nicht

• Formel wird wahr für valide Auswahl

Beispiele

5011/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Existiert mindestens eine valide Variante?• Nutzen von SAT Solvern• Ist die Formel erfüllbar?

Beispiele

5111/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Existiert mindestens eine valide Variante?• Nutzen von SAT Solvern• Ist die Formel erfüllbar?

• Gibt es tote Features?• Können in keinem Produkt auftauchen• Keine erfüllbare Formel

Beispiele

5211/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Existiert mindestens eine valide Variante?• Nutzen von SAT Solvern• Ist die Formel erfüllbar?

• Gibt es tote Features?• Können in keinem Produkt auftauchen• Keine erfüllbare Formel

• Wie viele Varianten existieren?• Berechnung aller erfüllbaren Formeln• Sehr schnell zu aufwendig• Sinnvoll?

Beispiele

5311/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Existiert mindestens eine valide Variante?• Nutzen von SAT Solvern• Ist die Formel erfüllbar?

• Gibt es tote Features?• Können in keinem Produkt auftauchen• Keine erfüllbare Formel

• Wie viele Varianten existieren?• Berechnung aller erfüllbaren Formeln• Sehr schnell zu aufwendig• Sinnvoll?

• Was passiert bei einer Änderung des Modells?

Beispiele

5411/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Fragen über Code/Konfiguration

5511/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Warum kann ein Block Code nicht ausgewählt werden?• Fehler im Code?• Fehler im Modell?

Beispiele: Code

…#ifdef A

…#ifdef B

…#endif B…

#endif A…

5611/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Warum kann ein Block Code nicht ausgewählt werden?• Fehler im Code?• Fehler im Modell?

• Welche Feature-Module/Code-Blöcke werden nie kompiliert?

• Welche Features beeinflussen den Code auf welche Art?

Beispiele: Code

5711/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Warum kann ein Block Code nicht ausgewählt werden?• Fehler im Code?• Fehler im Modell?

• Welche Feature-Module/Code-Blöcke werden nie kompiliert?

• Welche Features beeinflussen den Code auf welche Art?

• Welche Features müssen noch selektiert werden?

• Welche Features können noch selektiert werden?

Beispiele: Konfiguration

5811/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Beispiele: Konfiguration in FeatureIDE

5911/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Beispiele: Konfiguration in FeatureIDE

Wählt (propagiert) automatisch Features auf Basis des Feature Modells

6011/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Beispiele: Konfiguration in FeatureIDE

Manuell gewähltes Feature

6111/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Beispiele: Konfiguration in FeatureIDE

Manuell gewähltes Feature

Automatisch gewähltes Feature

6211/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Beispiele: Konfiguration in FeatureIDE

Manuell gewähltes Feature

Automatisch gewähltes Feature

Automatisch exkludiertes Feature

6311/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Beispiele: Konfiguration in FeatureIDE

Manuell gewähltes Feature

Automatisch gewähltes Feature

Automatisch exkludiertes Feature

Manuelles Exkludieren ist nur im erweiterten Konfigurator möglich

6411/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Zusammenfassung

6511/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Motivation für Feature Modelle

• Industrielle Anwendung und Probleme

• Notation von Feature Modellen

• Analysen auf und mit Hilfe von Feature Modellen

Zusammenfassung

6611/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

• Arbeiten Sie sich in die Feature Modellierung mit FeatureIDE ein.Wiki: https://github.com/FeatureIDE/FeatureIDE/wikiInstallation etc.: https://featureide.github.io/(am Besten über Eclipse Marketplace/Install Button)

• Modellieren Sie ein Feature Diagramm für ihr Projekt (idealerweise aus Übung 2). Dabei sollten mindestens 15 Features dargestellt und in Beziehung zueinander gesetzt werden. Insbesondere sollen mindestens eine Gruppe (Oder, Alternative) und mindestens ein Cross-Tree-Constraint verwendet werden.

• Bestimmen Sie die Anzahl der validen Varianten, die in dem Modell definiert sind.

• Definieren Sie jeweils 2 Konfigurationen die valide und invalide sind.

• Zeigen Sie anhand der Formel des Feature Modells, warum eine der beiden Konfigurationen invalide ist. Erklären Sie, welche Abhängigkeiten im Modell dazu führen.

Übung 3

6711/12/2019Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien

Fragen