Softwareproduktlinien
Transcription
Softwareproduktlinien
Softwareproduktlinien Teil 2: Entwicklungsprozess und Variabilitätsmodellierung Sven Apel (Universität Passau) Christian Kästner (Universität Marburg) Gunter Saake (Universität Magdeburg) 1 Agenda Produktlinien Was ist ein Feature? Domain Engineering vs. Application Engineering Feature-Modellierung 2 Produktlinien A software product line (SPL) is a set of software-intensive systems that share a common, managed set of features satisfying the specific needs of a particular market segment or mission and that are developed from a common set of core assets in a prescribed way. Software Engineering Institute Carnegie Mellon University 3 Produktlinien Eine Menge von Programmvarianten (SoftwareProdukten), ...die auf ein gemeinsames Marktsegment (Domäne) zugeschnitten sind ...mit dem Ziel der Wiederverwendung von gemeinsamen Software-Artefakten z. B. Datenbank-Produktlinie für eingebettete Systeme 4 Domäne Die Programme einer Produktlinie sind zugeschnitten auf ein Anwendungsgebiet Dieses Anwendungsgebiet wird als Domäne bezeichnet Horizontale Domänen Abrechnungen, Lagerverwaltung, Flugbuchung Vertikale Domänen 5 Numerische Algorithmen, Netzwerktreiber, GUIs, Datenbanken Was ist ein Feature? (deutsch Merkmal) Domänenabstraktion Features repräsentieren Anforderungen, Gemeinsamkeiten bzw. Unterschiede von Programmvarianten Mittel zur Kommunikation zwischen Stakeholdern Dient zur Spezifikation von Varianten Feature-Auswahl als Eingabe für die Programmgenerierung Aber: es gibt auch Belange, die keine Features sind 6 Belang vs. Feature Belang (siehe spätere Kapitel) Jedwede Problemstellung, die von Interesse ist Feature Problemstellung, die eine besondere Bedeutung in einer Domäne hat Konfigurationsoption Belange 7 Features Features in Datenbanken Transaktionsverwaltung Log & Recovery Schreibzugriff Persistenz / In-Memory Seitenverdrängungsstrategien LRU / LFU / Clock /... Sortierverfahren Datentypen variabler Länge Gruppieren, Aggregation Windows / Unix / NutOS / TinyOS / … 8 Entwicklung einer Produktlinie Entwicklung einer Produktlinie statt einzelner Anwendungen Produktlinie deckt Anforderungen der ganzen Domäne ab Abweichung vom klassischen Entwicklungsprozess und Lebenszyklus Unterscheidung in 9 Domain Engineering Application Engineering Software Lebenszyklus – Klassisch 10 Domain Engineering [...] is the activity of collecting, organizing, and storing past experience in building systems [...] in a particular domain in the form of reusable assets [...], as well as providing an adequate means for reusing these assets (i.e., retrieval, qualification, dissemination, adaptation, assembly, and so on) when building new systems. K. Czarnecki and U. Eisenecker 11 Application and Domain Engineering 12 Entwicklungsaufwand Aufwand/Kosten Konventionelle Entwicklung Produktlinienentwicklung 1 13 2 3 4 … # Produkte Scoping Eingrenzung der Domäne Welche Features sind relevant/sollen entwickelt werden Oft wirtschaftliche Entscheidung [Schmid 2002] 14 Exkurs: Ansätze zur Einführung von Produktlinien Es gibt drei übliche Ansätze eine Software Produktlinie zu erstellen / einzuführen Proaktives Vorgehensmodell Reaktives Vorgehensmodell Extraktives Vorgehensmodell Für alle Implementierungsformen Auswahl anhand betrieblicher Gesichtspunkte (Kosten, Risiko, Chancen, ...) 15 Exkurs: Proaktives Vorgehensmodell SPL neu entwerfen und implementieren; wie bisher besprochen Komplette Domänenanalyse zu Beginn Kann die normale Entwicklung für mehrere Monate unterbrechen, bis SPL auf dem Stand der bestehenden Produkte ist Hohe Kosten und hohes Risiko Gut wenn Anforderungen wohl-definiert sind 16 [Krueger 2002] 17 Exkurs: Reaktives Vorgehensmodell Analog zu Spiralmodell oder Extreme Programming Implementiert zuerst wenige Variationen; fügt inkrementell weitere hinzu Geeignet, wenn benötigte Varianten nicht komplett im voraus bekannt, und für unvorhergesehene Änderungen Kleinere Projektgröße, geringere initiale Kosten; weniger Ressourcenbindung, schnellere Ergebnisse Später evtl. Umstrukturierungen nötig 18 [Krueger 2002] 19 Exkurs: Extraktives Vorgehensmodell Nutzt eine oder mehrere bestehende Anwendungen (legacy application) als Basis Extrahiert daraus Features und erzeugt so Varianten Geeignet für den schnellen Wechsel von traditionellen Anwendungen zu Produktlinien Relativ geringer Ressourcenaufwand und Risiko Sehr anspruchsvoll für Werkzeuge und Sprachen, da Zerlegung einer Anwendung, die nicht als SPL entworfen wurde 20 [Krueger 2002] 21 Feature-Modellierung Beschreibung der Features einer Domäne Zur Visualisierung und Kommunikation Ein Feature-Modell beschreibt… die elementaren Abstraktionen einer Domäne und deren Beziehungen die Menge der Programme einer Produktlinie Ein Feature-Diagramm visualisiert Features und deren Beziehungen 22 Gültige Feature-Auswahl? Transaktionsverwaltung Log & Recovery Schreibzugriff Persistenz / In-Memory Seitenverdrängungsstrategien LRU / LFU / Clock /... Sortierverfahren Datentypen variabler Länge Gruppieren, Aggregation Windows / Unix / NutOS / TinyOS / … 23 24 Feature-Modell - Beispiel 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 Sechs mögliche Produkte 25 {Basis, Win}, {Basis, Unix}, {Basis, Win, Write}, {Basis, Unix, Write}, {Basis, Win, Write, Txn}, {Basis, Unix, Write, Txn} Feature-Modell als aussagenlogischer Ausdruck Variable für jedes Feature (wahr wenn ausgewählt) Formel beschreibt Feature-Modell Formel wahr für gültige Feature-Auswahl Basis (Unix Win ) (Unix Win ) (Txn Write ) Erlaubt automatische Überprüfung, und Aufzählen der gültigen Varianten (SAT, BDD, …) 26 Feature-Diagramm Graphische Darstellung Hierarchische Struktur Kinder: optional, obligatorisch, oder, alternativ Features in Blättern optional alternativ (genau 1) 27 obligatorisch oder (min 1) Feature-Diagramm vs. Formeln Besser lesbar als Formel (“Management-kompatibel”) Weniger flexibel extra Formeln möglich Übersetzung „Diagramm Formel” automatisierbar 30 Beispiel – FAME DBMS (Core) 31 Feature-Modell eines Speichermanagers GUIDSL-Format Speichern des Feature-Diagramms als Grammatik Pr: Feature1 Nesting Feature4::_Pr; Nesting: Feature2 Feature3::_Nesting; Pr: [Feature1] [Feature2] Feature3 ::_ Pr : Select+ :: _Pr ; Select : Feature1 | Feature2 ; %% Feature1 implies Feature2; 36 HowTo: http://www.cs.utexas.edu/users/dsb/fopdocs/guidsl.html Feature-Diagramm – Varianten Viele verschiedene Varianten in der Literatur, z. B. Innere Knoten als Features Mandatory/Optional in Oder/Alternative-Gruppen Implies/Excludes Pfeile Konvertierungen i.d.R. möglich implies 37 Konfiguration einer Variante FeatureIDE 38 GUIDSL FeatureIDE 39 Entwurf und Implementierung von Features Nach der Feature-Modellierung folgt der Entwurf und die Implementierung... Feature-Modell Wiederverwendbare Implementierungsartefakte Application Eng. Domain Eng. Feature-Auswahl 40 Generator Fertiges Program Zusammenfassung Produktlinien als Konzept zur systematischen Wiederverwendung Entwicklung teilt sich in Domain Engineering und Application Engineering Features repräsentieren Domänenkonzepte Programme einer Produktlinie haben gemeinsame Features Feature-Modelle in beschreiben Features und ihre Abhängigkeiten… …und werden zur Konfiguration benutzt 41 Ausblick Nächste Kapitel handeln von Methoden, Techniken und Werkzeugen zur Implementierung von Produktlinien 42 Literatur I K. Kang, S. Cohen, J. Hess, W. Novak, and A. Peterson. Feature-Oriented Domain Analysis (FODA) Feasibility Study. Technical Report CMU/SEI-90-TR-21, SEI,1990. [Frühe Ideen zur Domänenanalyse mit Feature-Modellen] K. Czarnecki and U. Eisenecker. Generative Programming: Methods, Tools, and Applications. Addison-Wesley, 2000. [Umfassende Beschreibung von Domain Engineering, Feature-Diagrammen und deren Normalisierung] 43 Literatur II D. Batory. Feature Models, Grammars, and Propositional Formulas, In Proc. of Software Product Line Conference (SPLC), 2005 Allgemeine Bücher zu Produktlinien: 44 P. Clements, L. Northrop, Software Product Lines : Practices and Patterns, Addison-Wesley, 2002 K. Pohl, G. Böckle, F. van der Linden, Software Product Line Engineering: Foundations, Principles, and Techniques, Springer, 2005