20
03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Embed Size (px)

Citation preview

Page 1: 03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

03.05.2007 Marko Rosenmüller

Universität Magdeburg 1

Software Produktlinien und Featureorientierte Programmierung

Page 2: 03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Marko RosenmüllerUniversität Magdeburg 203.05.2007

Produktlinien und Featureorientierte Programmierung

Agenda

Featureorientierte Programmierung (FOP) Produktlinienentwicklung Abgrenzung von OOP Abstrakte Sicht auf Refinements Large Scale Refinements Jak und FeatureC++

Page 3: 03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Marko RosenmüllerUniversität Magdeburg 303.05.2007

Produktlinien und Featureorientierte Programmierung

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

Page 4: 03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Marko RosenmüllerUniversität Magdeburg 403.05.2007

Produktlinien und Featureorientierte Programmierung

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

Page 5: 03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Marko RosenmüllerUniversität Magdeburg 503.05.2007

Produktlinien und Featureorientierte Programmierung

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

Page 6: 03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Marko RosenmüllerUniversität Magdeburg 603.05.2007

Produktlinien und Featureorientierte Programmierung

Wo ist das Problem?

Problem: Was ist, wenn wir beide Eigenschaften wollen?

Page 7: 03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Marko RosenmüllerUniversität Magdeburg 703.05.2007

Produktlinien und Featureorientierte Programmierung

Wo ist das Problem?

Problem: Was ist, wenn wir beide Eigenschaften wollen?

Codereplikation

Page 8: 03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Marko RosenmüllerUniversität Magdeburg 803.05.2007

Produktlinien und Featureorientierte Programmierung

OOP

Abgrenzung von OOP

Page 9: 03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Marko RosenmüllerUniversität Magdeburg 903.05.2007

Produktlinien und Featureorientierte Programmierung

FOPOOP

Abgrenzung von OOP

Schrittweise Erweiterung der Basisimplementierung durch Verfeinerungen (Refinements)

Page 10: 03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Marko RosenmüllerUniversität Magdeburg 1003.05.2007

Produktlinien und Featureorientierte Programmierung

Abstrakte Sicht auf Refinements

Features

Refinements

Page 11: 03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Marko RosenmüllerUniversität Magdeburg 1103.05.2007

Produktlinien und Featureorientierte Programmierung

Abstrakte Sicht auf Refinements

Beliebige Merkmalskombinationen erstellbar

Sortierte Liste

Page 12: 03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Marko RosenmüllerUniversität Magdeburg 1203.05.2007

Produktlinien und Featureorientierte Programmierung

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.

Page 13: 03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Marko RosenmüllerUniversität Magdeburg 1303.05.2007

Produktlinien und Featureorientierte Programmierung

Large Scale Refinements

Page 14: 03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Marko RosenmüllerUniversität Magdeburg 1403.05.2007

Produktlinien und Featureorientierte Programmierung

Jak und FeatureC++

Jak: Umsetzung von FOP für Java Teil der AHEAD Toolsuite http://www.cs.utexas.edu/users/schwartz/ATS.html

FeatureC++: Umsetzung von FOP für C++ http://wwwiti.cs.uni-magdeburg.de/iti_db/fcc/

Beide Ansätze basieren auf Codetransformation: Umwandlung des FOP Quelltextes (Jak, FeatureC++) in OOP Quelltext

(Java, C++)

Page 15: 03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Marko RosenmüllerUniversität Magdeburg 1503.05.2007

Produktlinien und Featureorientierte Programmierung

Liste mit FeatureC++

Basis: Herkömmliche Implementierung einer Liste mit OOP (C++)

Page 16: 03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Marko RosenmüllerUniversität Magdeburg 1603.05.2007

Produktlinien und Featureorientierte Programmierung

Liste mit FeatureC++

Feature Sort

Feature Base

Page 17: 03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Marko RosenmüllerUniversität Magdeburg 1703.05.2007

Produktlinien und Featureorientierte Programmierung

Liste mit FeatureC++

Feature Base

Feature Sort

Methodenverfeinerung

Super-Aufruf

Page 18: 03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Marko RosenmüllerUniversität Magdeburg 1803.05.2007

Produktlinien und Featureorientierte Programmierung

Liste mit FeatureC++

Feature Base

Neu eingeführte Methode

Feature Sort

Page 19: 03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Marko RosenmüllerUniversität Magdeburg 1903.05.2007

Produktlinien und Featureorientierte Programmierung

Feature Base

Liste mit FeatureC++

Konfiguration durch Auswahl der benötigten Features in einer Datei

BaseSort

[SortedList.equation]

BaseSortFind

[SortFindList.equation]

Feature Sort

Page 20: 03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Marko RosenmüllerUniversität Magdeburg 2003.05.2007

Produktlinien und Featureorientierte Programmierung

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++