1 11/12/2019 Gunter Saake, Jacob Krüger | Einführung in Softwareproduktlinien Grundlagen der Softwareproduktlinien: 3. Feature Modelle Wintersemester 2019/20 Gunter Saake, Jacob Krüger
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