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

Preview:

Citation preview

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

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

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

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

Marko RosenmüllerUniversität Magdeburg 603.05.2007

Produktlinien und Featureorientierte Programmierung

Wo ist das Problem?

Problem: Was ist, wenn wir beide Eigenschaften wollen?

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

Marko RosenmüllerUniversität Magdeburg 803.05.2007

Produktlinien und Featureorientierte Programmierung

OOP

Abgrenzung von OOP

Marko RosenmüllerUniversität Magdeburg 903.05.2007

Produktlinien und Featureorientierte Programmierung

FOPOOP

Abgrenzung von OOP

Schrittweise Erweiterung der Basisimplementierung durch Verfeinerungen (Refinements)

Marko RosenmüllerUniversität Magdeburg 1003.05.2007

Produktlinien und Featureorientierte Programmierung

Abstrakte Sicht auf Refinements

Features

Refinements

Marko RosenmüllerUniversität Magdeburg 1103.05.2007

Produktlinien und Featureorientierte Programmierung

Abstrakte Sicht auf Refinements

Beliebige Merkmalskombinationen erstellbar

Sortierte Liste

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.

Marko RosenmüllerUniversität Magdeburg 1303.05.2007

Produktlinien und Featureorientierte Programmierung

Large Scale Refinements

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

Marko RosenmüllerUniversität Magdeburg 1503.05.2007

Produktlinien und Featureorientierte Programmierung

Liste mit FeatureC++

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

Marko RosenmüllerUniversität Magdeburg 1603.05.2007

Produktlinien und Featureorientierte Programmierung

Liste mit FeatureC++

Feature Sort

Feature Base

Marko RosenmüllerUniversität Magdeburg 1703.05.2007

Produktlinien und Featureorientierte Programmierung

Liste mit FeatureC++

Feature Base

Feature Sort

Methodenverfeinerung

Super-Aufruf

Marko RosenmüllerUniversität Magdeburg 1803.05.2007

Produktlinien und Featureorientierte Programmierung

Liste mit FeatureC++

Feature Base

Neu eingeführte Methode

Feature Sort

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

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

Recommended