Chapter 2 (Feature Oriented Software Product Lines) Flashcards
Was ist eine Softwareproduktlinie?
Eine Softwareproduktlinie ist eine Menge von Programmvarianten (Softwareprodukten)
- die auf ein gemeinsames Marktsegment (Domäne) zugeschnitten sind
- auf Basis einer gemeinsamen Plattform implementiert sind mit dem Ziel der Wiederverwendung von gemeinsamen Software-Artefakten.
- Erweiterung einer Produktfamilie um eine strukturierte Beschreibung der Gemeinsamkeiten und Unterschiede zwischen den Produktvarianten anhand ihrer Produktkonfiguration.
Was ist eine Produktfamilie?
Menge gleichartiger Software-Produkte, die unter dem gleichen Produktnamen zusammengefasst sind.
Was ist eine Produktkonfiguration?
Sammlung von Produktparameterwerten, die ein maßgeschneidertes Produkt bezeichen.
Was ist eine Produktvariante?
Sammlung von Softwareengineering Artefakten, assoziiert mit einer Produktkonfiguration.
Was ist ein Produkt?
Software Implementierung einer Produktvariante anhand einer Produktkonfiguration.
Was bezeichnet die Domain?
Programme einer Produktlinie sind zugeschnitten auf ein Anwendungsgebiet (Automotive Systems, Information Systems, Operating Systems…)
Anwendungsgebiet -> Domäne
Innerhalb der Domäne werden relevante Domain-Features aus der Menge alle Belange sämtlicher Stakeholder identifiziert.
Unterschied zwischen Belange und Features?
Concern: Belang = Jedwede Problemstellung (Einflussfaktor bei der Produktentwicklung), die von Interesse ist.
Feature = Problemstellung, die eine besondere Bedeutung in einer Domäne hat, Konfigurationsoption für den Kunden.
Was ist ein feature?
Features repräsentieren die für die Produktdiversifizierung relevanten Anforderungen, Gemeinsamkeiten/Unterschiede von Produkten einer Domäne -> Es gibt Belange die keine Features sind. Ein Feature ist eine Domänen-Abstraktion und dient als Mittel zur Kommunikation zwischen Stakeholdern. -> Ergebnis der Domänen-Analyse.
=> Inkrement von Programmfunktionalität
Was ist Feature-Oriented Software Development?
Idee: Feature als ganzheitliches Abstraktionskonzept.
Feature als Domänen-Abstraktion im Problemraum der Anwendungsdomäne -> Spezifikation von Produktkonfiguration (Featureauswahl als Eingabe für die Produktkofiguration)
Feature als Implementierungskonzept im Lösungsraum der Produktlinie -> Spezifikation von Produktvarianten (Featureauswahl als Eingabe für die Programmgenerierung)
Was ist der klassische Software Lebenszyklus?
Requirements -> Design -> Implementation -> Verification -> Maintenance
Erklären Sie Domain Engineering
Auf der Domain Engineering Ebene haben wir Design for Reuse: Domänenwissen -> [Domain Analyse] -> domain model -> [Domain Design] -> architectures -> Domainimplementierung
Auf der Applicationengineering ebene : Verbraucherbedürfnisse -> [Anforderungsanalyse] -> features -> [Designanalyse] -> Produktkonfiguration -> [Integration und test] -> Produkt
Herausforderung = Features sind crosscutting concerns und Features interagieren
Was ist mass customization?
Erzeugung von Waren [Artikel] und Dienstleistungen auf die Bedürfnisse einzelner Kunden mit in der Nähe von Massenproduktionseffizienz erfüllen.
Welche Ansätze zur Einführung von Produktlinien gibt es?
Proaktives Vorgehensmodell: Man baut die Software von 0 auf. Man weiß alles über Domäne.
• Ähnlich dem Wasserfall Ansatz für Einzelsysteme
• Geeignet, wenn die Voraussetzungen für die Menge der Produkte benötigt,
sich bis zum fernen Horizont, sind klar definiert und stabil
• Erfordert erheblich mehr Aufwand im Vorfeld, aber das stark abfällt, sobald die Produktionslinie komplett ist.
Reaktives Vorgehensmodell: Man hat Produkte und lagert erst die Gemeinsamkeiten als Core features aus.
• Inkrementelle Ansatz
• Geeignet, wenn die Anforderungen für neue Produkte in der Produktionslinie sind etwas unberechenbar
• Ermöglicht eine rasche Annahme der Mass Customization, da eine minimale Anzahl von Produkten muss im Voraus eingearbeitet werden
Extraktives Vorgehensmodell:• Angewandte wenn eine bestehende Sammlung von kundenspezifischen Systemen wiederverwendet werden kann
• Die meisten geeignet, wenn die Sammlung von Systemen hat eine erhebliche Menge an Gemeinsamkeit und auch im Einklang Unterschiede zwischen ihnen
• Nicht notwendig, um die Extraktion von allen bereits bestehenden Systeme auf einmal durchführen