Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung
Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Agenda Featureorientierte Programmierung (FOP) Produktlinienentwicklung Abgrenzung von OOP Abstrakte Sicht auf Refinements Large Scale Refinements Jak und FeatureC++
Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Featureorientierte Programmierung Schrittweise Erweiterung einer Software um neue Features (Stepwise Refinement) Feature: Für den Anwender wesentliche Funktionalität einer Software. Z.B.: Sortierung einer Liste Suche in einer Liste Beliebige weitere (doppelt verlinkt, synchronisiert, etc.) Anwender sucht sich gewünschte Features aus
Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Vergleich – Automobilbau Ähnliche Herangehensweise: Käufer sucht sich gewünschte Merkmale (Features) aus: Automatik- / Schaltgetriebe Klimaanlage Navigationssystem Zum Teil beliebig Kombinierbar z.B. Klimaanlage und Navigationssystem Zum Teil gegenseitig ausschließend z.B. Automatik- / Schaltgetriebe
Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Produktlinienentwicklung Automobilbau: Vielzahl möglicher Modelle erstellbar Produktlinie Anwendung auf Software Software Produktlinien Bsp.: Bibliothek von Container-Klassen (Liste, Array, etc.): Sortierung Suche Synchronisation etc. Umsetzung mit Hilfe von FOP
Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Wo ist das Problem? Problem: Was ist, wenn wir beide Eigenschaften wollen?
Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Wo ist das Problem? Problem: Was ist, wenn wir beide Eigenschaften wollen? Codereplikation
Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg OOP Abgrenzung von OOP
Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg FOPOOP Abgrenzung von OOP Schrittweise Erweiterung der Basisimplementierung durch Verfeinerungen (Refinements)
Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Abstrakte Sicht auf Refinements Features Refinements
Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Abstrakte Sicht auf Refinements Beliebige Merkmalskombinationen erstellbar Sortierte Liste
Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Large Scale Refinements Für Software Produktlinien Skalierung auf ganze Software (mehrere Klassen) notwendig Large Scale Refinements Gleichzeitige Erweiterung mehrerer Klassen Bsp.: Bibliothek von Container-Klassen Klassen (List, Array, etc.), werden um Features (Sortierung, Suche, etc.) erweitert.
Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Large Scale Refinements
Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Jak und FeatureC++ Jak: Umsetzung von FOP für Java Teil der AHEAD Toolsuite FeatureC++: Umsetzung von FOP für C++ Beide Ansätze basieren auf Codetransformation: Umwandlung des FOP Quelltextes (Jak, FeatureC++) in OOP Quelltext (Java, C++)
Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Liste mit FeatureC++ Basis: Herkömmliche Implementierung einer Liste mit OOP (C++)
Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Liste mit FeatureC++ Feature Sort Feature Base
Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Liste mit FeatureC++ Feature Base Feature Sort Methodenverfeinerung Super-Aufruf
Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Liste mit FeatureC++ Feature Base Neu eingeführte Methode Feature Sort
Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Feature Base Liste mit FeatureC++ Konfiguration durch Auswahl der benötigten Features in einer Datei Base Sort [SortedList.equation] Base Sort Find [SortFindList.equation] Feature Sort
Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Zusammenfassung FOP zur Entwicklung von Produktlinien: Analogie zu anderen Industriezweigen Software Produktlinie: Menge ähnlicher Programme, die erstellt werden können Erstellung einer konkreten Instanz einer Software entsprechend Auswahl notwendiger Features durch den Anwender Umsetzungen Jak als Teil von AHEAD FeatureC++