SlideShare una empresa de Scribd logo
1 de 10
Descargar para leer sin conexión
Software Produktlinien
                                     ¨
                      Einfuhrung und Uberblick
                          ¨

                                Johannes Diemke

                              Universit¨t Oldenburg
                                       a
                            Department f¨r Informatik
                                         u
                                26111 Oldenburg



                                                      ¨
      Zusammenfassung Dieser Artikel soll einen Uberblick uber den Soft-
                                                                ¨
      ware Produktlinien Ansatz verschaffen. Zu diesem Zweck werden die
      grundlegenden Konzepte, Vorteile und Herausforderungen von Softwa-
      re Produktlinien beschrieben. Dazu wird der Begriff der systematischen
      Wiederverwendung eingef¨hrt. Darauf aufbauend folgt die g¨ngige De-
                                u                                  a
      finition von Software Produktlinien. Es wird auf die drei zentralen Pro-
      zesse Domain Engineering, Application Engineering und Management
      eingegangen. Des Weiteren werden Begriffe wie Produktraum, Systemar-
      tefakte und Variablit¨t im Zusammenhang mit Produktlinien erl¨utert.
                            a                                           a
      Schließlich wird die Produktlinienarchitektur betrachtet und der Softwa-
      re Produktlinien Ansatz bewertet.


1   Einfuhrung
        ¨

Die steigende Komplexit¨t und Gr¨ße zu entwickelnder Softwaresysteme ist ein
                          a         o
gegenw¨rtiges Problem der Software-Technik. Softwaresysteme sollen immer leis-
        a
tungsf¨higer, zuverl¨ssiger, komplexer, gleichzeitig aber immer g¨nstiger in Pro-
       a             a                                           u
duktion und Wartung sowie schneller in Entwicklung und Auslieferung werden.
Die systematische Wiederverwendung von Software erm¨glicht es diese scheinbar
                                                         o
unvereinbaren Ziele zu erreichen. Insbesondere hat sich gezeigt, dass gerade die
Entwicklung von Software Produktlinien einen der leistungsf¨higeren Ans¨tze
                                                               a             a
der systematischen Wiederverwendung darstellt [8].
    Die Realit¨t sieht jedoch anders aus. Der g¨ngige Ansatz zur Erstellung von
              a                                 a
Softwareprodukten in Unternehmen beruht meist darauf, f¨r jedes durchzuf¨h-
                                                            u                 u
rende Projekt ein eigenes Projektteam mit eigenem Budget zusammenzustel-
len, welches isoliert von den anderen Teams die Entwicklung beginnt. Dadurch
kommt es jedoch nicht selten zu mehrfacher und redundanter Durchf¨hrung   u
verschiedener Arbeiten der unterschiedlichen Projektteams. Genau dieser Pro-
blematik versucht der Software Produktlinien Ansatz entgegenzuwirken [9].
    Dieser Artikel beschreibt die grundlegenden Konzepte, Vorteile und Heraus-
forderungen von Software Produktlinien. Da der Software Produktlinien Ansatz
auf dem Konzept der systematischen Wiederverwendung beruht, wird in Ab-
schnitt 2 dieses zun¨chst eingef¨hrt und auf dessen Nutzen eingegangen. An-
                      a          u
schließend folgt in Abschnitt 3 nach einer einf¨hrenden Motivation die g¨ngige
                                                u                          a
Definition von Software Produktlinen. Der Abschnitt 3.1 behandelt die Syste-
martefakte, welche die Grundbausteine der Software Produktlinie darstellen. Ein
         ¨
kurzer Uberblick uber den Produktraum und dessen Beschreibung wird in Ab-
                  ¨
schnitt 3.2 gegeben. Abschnitt 3.3 beschreibt die Rolle der Variablit¨t in Soft-
                                                                     a
ware Produktlinien, M¨glichkeiten Variablit¨t mit Hilfe von Produkt×Feature-
                       o                    a
Tabellen und Feature-Graphen zu beschreiben und f¨hrt den Begriff des Varia-
                                                    u
tionspunkts ein. Daraufhin wird in Abschnitt 3.4 der grundlegende Unterschied
zwischen Softwarearchitekturen von Individualsoftware und Produktlinienarchi-
tekturen der sich zum großen Teil daraus ergibt, dass eine Produktlinienarchi-
tektur die Referenz f¨r alle Produkte der Produktline darstellt und gewisse Va-
                     u
riablit¨tsaspekte ber¨cksichtigt werden m¨ssen, beschrieben. Schließlich wird in
       a             u                    u
Abschnitt 3.5 auf die drei zentralen Prozesse Domain Engineering, Application
Engineering und Management eingegangen. Ein Fazit und eine abschließende
Bewertung des Software Produktlinien Ansatzes folgt in Abschnitt 4.


2   Systematische Wiederverwendung
Die Wiederverwendung ist ein schon lange verfolgter Ansatz, dessen Nutzen re-
lativ fr¨h auch f¨r die Software-Technik erkannt wurde. Bei diesem Ansatz wer-
        u        u
den, wie in den meisten anderen technischen Disziplinen, im Entwurfsprozess
vorgefertigte Komponenten, die schon in anderen Systemen getestet wurden, ge-
nutzt. Vorteile der Wiederverwendung sind geringere Entwicklungskosten, eine
h¨here Zuverl¨ssigkeit und eine beschleunigte Entwicklung. Um eine systema-
  o            a
tische Wiederverwendung zu erreichen, muss diese allerdings fr¨hzeitig in den
                                                                u
Entwurfsprozess mit einbezogen werden und richtig geplant sein [8].
    Zu diesem Zweck wurden im Laufe der Zeit eine Reihe von Konzepten entwi-
ckelt, welche von der Wiederverwendung einzelner Funktionen bis hin zu ganzen
Anwendungssystemen reichen. Das Konzept der Entwurfsmuster bietet beispiels-
weise dom¨nenunabh¨ngige und generische L¨sungsschemata f¨r wiederkehrende
           a          a                      o               u
Entwurfsprobleme. Mit den Referenzarchitekturen werden dom¨nenabh¨ngige
                                                                 a      a
und generische Softwarearchitekturen geboten. Die in den sp¨ten 90er Jahren
                                                              a
aufkommende komponentenbasierte Software-Technik konzentriert sich schließ-
lich darauf, Softwaresysteme aus abstrakten, lose gekoppelten und wiederver-
wendbaren Komponenten zu entwerfen [6].


3   Software Produktlinien
Einen ¨ußerst leistungsf¨higen Ansatz zur systematischen Wiederverwendung
        a                a
stellen die Software Produklinien, welche gelegentlich auch als Anwendungsfa-
milien bezeichnet werden, dar. Diesem Ansatz liegt zugrunde, dass sich Soft-
warehersteller h¨ufig auf spezielle Anwendungsdom¨nen spezialisieren und f¨r
                 a                                  a                       u
diese eine Reihe von Produktvarianten entwickeln. Produktvarianten haben aber
naturgem¨ß eine gemeinsame Grundstruktur und eine Vielzahl ¨hnlicher Eigen-
          a                                                    a
schaften. Dies zeichnet jedoch eine Produktfamilie aus. Ziel des Software Pro-
duktlinien Ansatzes ist es nun das vorhandene Wiederverwendungspotential ei-
ner Produktfamilie auszusch¨pfen, indem die dazu n¨tige Infrastruktur geschaf-
                             o                     o
fen wird [6].
    Da in einer Software Produktlinie jedes Produkt auch immer eine Produkt-
variante darstellt, sind die Begriffe Produkt und Produktvariante im Kontext
einer Produktlinie als synonym anzusehen. Im Folgenden wird eine Definition
von Software Produktlinien in Anlehnung an [7] gegeben. Dabei wird der bis-
her allgemein gehaltene Begriff der Produktvariante weiter auf Produktvarianten
von softwareintensiven Systemen eingegrenzt.
Definition 1. Eine Software Produktlinie (SPL) ist eine Menge von softwar-
eintensiven Systemen, die sich eine Reihe von Systemartefakten teilen, einer
speziellen Anwendungsdom¨ne angeh¨ren und eine gemeinsame systemspezifi-
                            a         o
sche Architektur besitzen. Jedes dieser Systeme ist auf die eine oder andere Art
spezialisiert, der gemeinsame Kern der Systeme wird jedoch jedesmal wiederver-
wendet.
    Der Software Produktlinien Ansatz erm¨glicht so f¨r eine spezielle Anwen-
                                              o         u
dungsdom¨ne die Erstellung einer Reihe von softwareintensiven Systemen auf
           a
Basis einer Menge gemeinsam genutzter Systemartefakte, eines gemeinsamen
Produktionsprozesses und einer konsequenten Aufbau- und Ablauforganisation.
Die systematische Wiederverwendung der Systemartefakte wird dabei von An-
fang an in den Entwurfsprozess mit einbezogen. Die gemeinsam verwendeten
Systemartefakte beschr¨nken sich dabei nicht auf wiederverwendbare Software-
                         a
komponenten wie Abschnitt 3.1 zeigt.
    Der Software Produktlinien Ansatz kann durch eine Analogie zu traditionel-
len Industriebereichen wie der Autoindustrie veranschaulicht werden. So streben
Autohersteller die Erstellung einer Menge von Kraftfahrzeugen an und versuchen
dabei die Unterschiede der in den Fahrzeugen verwendeten Bauteile m¨glichst
                                                                        o
gering zu halten. Dies erm¨glicht ihnen eine breite Wiederverwendung von Kom-
                            o
ponenten. In dieser Analogie ist dann die Anwendungsdom¨ne die Erstellung von
                                                           a
Kraftfahrzeugen in der Autoindustrie, die zu erstellenden Produktvarianten sind
dann die im Produktportfolio vorhandenen Kraftfahrzeuge und die gemeinsam
genutzen Systemartefakte, die in den Fahrzeugen teilweise gemeinsam genutzten
Bauteile [3].
    Da sich der Software Produktlinien Ansatz jedoch nicht f¨r jede Menge von
                                                             u
Softwareprodukten eignet, ist vor der Entwicklung einer Produktlinie in einer
Machbarkeits- und Rentabilit¨tsanalyse gr¨ndlich zu pr¨fen, ob sich diese lang-
                               a            u            u
fristig finanziell rentiert und gen¨gend ¨hnliche Eigenschaften in der Produkt-
                                  u       a
menge vorhanden sind, die sich sinnvoll zu Systemartefakten abstrahieren und
in die Produktlinie integrieren lassen [6].
    Im Folgenden werden einige f¨r Softwareproduktlinien grundlegende Begriffe
                                  u
eingef¨hrt und anschließend in Zusammenhang gebracht.
       u

3.1   Systemartefakte
Konkrete Produktvarianten softwareintensiver Systeme werden im Produktlinien
Ansatz durch das Ausw¨hlen und Anpassen von Systemartefakten erzeugt. Sys-
                      a
temartefakte sind daher die Grundbausteine der Produktlinie zur Erstellung der
Softwareprodukte. Eine besondere Bedeutung kommt dabei den Softwarearchi-
tekturen (siehe Abschnitt 3.4) zu, die spezielle Systemartefakte darstellen, wel-
che erst eine Wiederverwendung und Organisation der anderen Systemartefakte
im Großen erm¨glichen. Weitere Systemartefakte sind die gemeinsam genutzten
                o
Features der Software Produktlinie. Dabei handelt es sich meistens um wie-
derverwendbare Softwarekomponenten, Subsysteme, Module, Frameworks oder
Plattformdienste [9]. Hier hat sich gezeigt, dass die komponentenbasierte Soft-
ware Entwicklung die Realisierung von Software Produktlinien vereinfacht [6].
Mindestens genauso wichtig wie die bisher genannten Artefakte sind jedoch Sys-
temartefakte in Form von Dokumenten, die Erfahrungen und das angesammelte
strategische Wissen der Anwendungsdom¨ne wiederspiegeln. Dazu geh¨ren Ge-
                                            a                            o
sch¨ftsmodelle, Anforderungszpezifikationen, Projektpl¨ne, Budgets, Testf¨lle,
   a                                                      a                   a
dom¨nenspezifische Muster sowie Prozesse und Richtlinien [7].
     a
    Jedes erstellte Systemartefakt ist ein Teil der Software Produktline und wird
in einem Artefaktkatalog inventarisiert. Die Systemartefakte, mit den f¨r ei-
                                                                            u
ne Porduktvariante produktspezifischen Entscheidungen, dienen, wie in Abbil-
dung 1 dargestellt, im Produktions-Prozess als Basis zur Erstellung neuer Pro-
duktvarianten. Dabei sind die Systemartefakte und die produktspezifischen Ent-
scheidungen die Eingaben des Produktions-Prozesses und die konkreten Pro-
duktvarianten die Ausgaben.



      Systemartefakte           Produktionsprozess             Produktvarianten




                                produktspezifische
                                 Entscheidungen


Abbildung 1. Systemartefakte als Basis zur Erstellung neuer Produktvarianten [9].




3.2     Produktraum

Der Produktraum definiert den Umfang einer Software Produktlinie. Dazu wer-
den die zu der Software Produktlinie geh¨renden Produktvarianten aufgelistet
                                          o
und beschrieben. Er wird, wie Abschnitt 3.5 noch zeigen wird, in der Scoping-
phase des Domain Engineering Prozess entwickelt.
    ¨
    Ublicherweise werden detailliert die Anforderungen und Unterschiede zwi-
schen den einzelnen Produktvarianten einer Software Produktlinie sowie funk-
tionale und nichtfunktionale Anforderungen, die diese Produkte an die Softwa-
re Produktlinie stellen, dokumentiert. Produkt×Feature-Tabellen helfen dabei
Gemeinsamkeiten zwischen den Softwareprodukten der Produktlinie zu identifi-
zieren. Featuregraphen werden dazu genutzt um Abh¨ngigkeiten zwischen ver-
                                                     a
schiedenen Features darzustellen [6]. Im folgenden Abschnitt 3.3 wird noch auf
die Verwendung von Featuregraphen anhand eines Beispiels eingegangen. Da-
zu muss jedoch zun¨chst der Begriff des Features im Zusammenhang mit der
                    a
Variablit¨t in Software Produktlinien eingef¨hrt werden.
         a                                  u


3.3   Variablit¨t
               a

Die Produktvarianten einer Software Produktlinie zeichnen sich durch eine Viel-
zahl gemeinsamer, unterschiedlicher und variierender Features aus. Aus diesem
Grund spielen bei der Entwicklung von Software Produktlinien insbesondere
Variablit¨tsaspekte eine ubergeordnete Rolle. Unter Variablit¨t wird im Allge-
         a               ¨                                    a
meinen die M¨glichkeit verstanden, Systeme oder Komponenten zu ¨ndern und
               o                                                    a
an individuelle Bed¨rfnisse anzupassen. Bei Produktlinien bezeichnet sie die Un-
                   u
terschiede der Produktvarianten und definiert den Rahmen in dem diese durch
Selektion von Systemartefakten individuell angepasst werden k¨nnen. Sie spielt
                                                               o
damit eine zentrale Rolle in der Produktlinienentwicklung und tritt in unter-
schiedlichster Form auf. Dies kann von der Unterst¨tzung mehrerer Betriebssys-
                                                  u
teme bis zur komplexen Anpassung von Systemartefakten reichen [6].
    Im Folgenden wird auf die Beschreibung der Variablit¨t des Produktraums
                                                          a
eingegangen und das Konzept des Variationspunkts eingef¨hrt.
                                                          u


Produktraum Variablit¨t Die Variablit¨t des Produktraums wird mit der
                            a                a
Hilfe von Feature×Produkt-Tabellen und Feature-Graphen dokumentiert. Fea-
tures beschreiben dabei Merkmale der Software Produktlinie, die Gemeinsamkei-
ten und Unterschiede der einzelnen Produktvarianten darstellen. Features lassen
sich dabei weiter klassifizieren in externe Features, notwendige Features und op-
tionale Features. Externe Features zeichnen sich dadurch aus, dass sie nicht Teil
des Produkts selbst sind, aber von diesem ben¨tigt werden. Notwendige Features
                                               o
sind grundlegende Features, ohne die das Produkt nicht funktionsf¨hig w¨re. Op-
                                                                  a       a
tionale Features bieten zus¨tzliche Funktionalit¨t, die zum Betrieb des Produkts
                            a                    a
nicht dringend notwendig ist. Feature×Produkt-Tabellen geben dabei Aufschluss
uber den Umfang der geplanten Produkte und deren Features. Feature-Graphen
¨
dokumentieren Abh¨ngigkeiten zwischen Features und deren Variablit¨t [6].
                     a                                                  a
    Abbildung 2 beschreibt den Produktraum einer Software Produktlinie zur
Erstellung mehrerer Varianten eines Mail-Clients mit der Hilfe eines Feature-
Graphen. Dazu wird eine zu der UML sehr ¨hnliche Notation verwendet, wel-
                                               a
che Konstrukte zur Auszeichnung von Kompositionen von Features, Optionalen
Features, OR- und XOR-Spezialisierungen von Features und externe Features
enth¨lt. In der Abbildung ist zu erkennen, dass ein Mail-Client eine Komposi-
     a
tion aus den Features TCP Connection, Type Message, Receive Message, Send
Message und Runtime Platform darstellt. Weiterhin ist ihr zu entnehmen, dass
das Receive Message Feature, welches zum Empfangen von E-Mails dient, uber  ¨
einer OR-Spezialisierung mit den Features Pop3 und IMAP verbunden ist. Dies
bedeutet, dass das Receive Message Feature das Pop3 oder aber das IMAP Fea-
ture zum Empfangen von E-Mails verwenden kann. Die Auszeichnung runtime“
                                                                     ”
weist darauf hin, dass die Wahl des tats¨chlich zu nutzenden Features zur Lauf-
                                          a
zeit entschieden wird. Der Abbildung ist außerdem zu entnehmen, dass die Run-
time Platform uber eine XOR-Spezialisierung mit den Features win32 und linux
                ¨
in Beziehung steht. Da die Beziehung weiterhin mit compiletime“ ausgezeichnet
                                                    ”
ist, bedeutet dies, dass ein Mail Client wahlweise Windows oder aber ein Linux-
                                                   ¨
Derivat nutzen kann, dies aber zum Zeitpunkt der Ubersetzung entschieden wer-
den muß. Eine detaillierte Beschreibung zur Erstellung von Feature-Graphen
wird in [5] und [4] gegeben. Orte im Feature-Graphen, an denen eine Entschei-
dung bez¨glich des zu nutzenden Features getroffen werden muss, werden auch
          u
Variationspunkte genannt und im folgenden Abschnitt n¨her erl¨utert.
                                                         a      a



                                                     Mail Client



   « external »          « external »
                                               Receive Message           Send Message       Runtime Platform
 TCP Connection         Type Message
                  runtime                                          runtime                                       compiletime

                                                                                                  « external »            « external »
    Signature                   Edit                   Pop3                  IMAP
                                                                                                     win32                   linux
                                           runtime
                                                                             or specialization        composition
   « external »             « external »
                                                 Internal Editor
        vi                    Emacs

                                                                             xor specialization       optional feature




Abbildung 2. Beschreibung eines Produktraums zur Erstellung eines Mail-Clients mit
Hilfe eines Feature-Graphen [4].




Variationspunkte Produkt- und systemumgebungsspezifische Variablit¨t wird
                                                                       a
durch so genannte Variationspunkte abgebildet. So werden variable und optio-
nale Features erst durch Variationspunkte m¨glich. Variationspunkte sind also
                                            o
Punkte im Entwicklungsablauf, an denen Entwurfsentscheidungen bez¨glich der
                                                                    u
Variablit¨t getroffen werden m¨ssen, um eine konkrete Variante eines Features
         a                     u
zu erhalten. Es muss also eine aus mehreren Entwurfsalternativen gew¨hlt wer-
                                                                     a
den. Wird eine aus mehreren Entwurfsalternativen gew¨hlt so wird dies auch
                                                       a
als das Binden von Variationspunkten bezeichnet. Das Binden von Variations-
punkten kann dabei zu unterschiedlichen Zeitpunkten stattfinden. Beispielsweise
kann das Binden w¨hrend des Architekturentwurfs, dem Feinentwurf, der Im-
                    a
                    ¨
plementierung, der Ubersetzung oder zur Laufzeit stattfinden [6].
3.4   Produktlinien Architektur

Eine explizit definierte Produktlinienarchitektur ist von zentraler Bedeutung f¨r
                                                                               u
die gesamte Produktlinieninfrastruktur. Sie stellt eine gemeinsame generische
Referenzarchitektur f¨r alle im Produktraum liegenden Softwareprodukte zur
                       u
Verf¨gung.
     u
     Konkrete Softwareprodukte leiten ihre Architektur von der Produktlinienar-
chitektur ab. Durch diese f¨r die gesamte Produktlinie g¨ltige Architektur kann
                            u                             u
f¨r alle Produkte die Erf¨llung von nichtfunktionalen Anforderungen, wie Perfor-
 u                       u
mance, Verf¨gbarkeit, Skalierbarkeit und Erweiterbarkeit leichter sichergestellt
             u
werden, da diese Aspekte zu großen Teilen durch die Architektur abgedeckt wer-
den [9]. Eine Besonderheit bei Referenzarchitekturen ist, dass produktspezifische
Anforderungen schon im Entwurf der Produktlinienarchitektur beachtet werden
m¨ssen, um eine m¨glichst generische Architektur, die f¨r alle Produkte nutz-
   u                 o                                     u
bar ist, zu schaffen. Wird dies nicht beachtet, so kann die Referenzarchitektur
im schlimmsten Fall produktspezifische Anforderungen unm¨glich machen. Ziel
                                                               o
ist es aber eine Produktlinienarchitektur zu entwickeln, welche den Anforderun-
gen der Softwareprodukte der gesamten Produktlinie gen¨gt. Des Weiteren wird
                                                          u
durch sie auch die Kommunikation zwischen den verschiedenen Interessengrup-
pen unterst¨tzt [3].
             u
     Eine Produktlinienarchitektur bietet verschiedene Variationsm¨glichkeiten
                                                                      o
hinsichtlich ihrer Konnektoren und Komponenten. Diese k¨nnen in verschiede-
                                                             o
nen Varianten angeboten werden. In der Architektur sollte explizit definiert sein,
welche Komponenten obligatorisch, optional und variabel sind und wie optiona-
le und variable Komponenten durch konkrete Komponenten instanziiert werden
k¨nnen. Dabei bezeichnet eine Konfiguration die konkrete Auswahl von Syste-
  o
martefakten die ein Softwareprodukt formen. Im Idealfall ist es f¨r konkrete Soft-
                                                                 u
wareprodukte m¨glich, direkt die Referenzarchitektur der Software Produktlinie
                  o
zu nutzen, indem Variationspunkte durch Selektion konkreter Komponenten in
der Architektur gebunden werden. Dazu ist es n¨tig standardisierte Schnittstel-
                                                  o
len zu schaffen. Im konkreten Fall k¨nnen Schnittstellen in der objektorientier-
                                     o
ten Programmierung durch Klassen implementiert werden. Variation kann dann
durch unterschiedliche Konfigurationen und das Ableiten von Klassen erfolgen.
     Bereiche der Referenzarchitektur, die nicht ge¨ndert werden, nutzen gemein-
                                                   a
same Komponenten. Es kann jedoch auch vorkommen, dass neben der Auswahl
konkreter Komponenten an den Variationspunkten die Architekrur selbst teil-
weise an die produktspezifischen Anforderungen angepasst werden muss [2].


3.5   Produktlinien Prozesse

Bei der Entwicklung von Software Produktlinien wird zwischen drei zentralen
und iterativen Prozessen, dem Domain Engineering, dem Application Enginee-
ring und dem Management unterschieden [9]. Auf diese drei Prozesse wird im
Folgenden genauer eingegangen.
Domain Engineering Das Domain Engineering stellt den zentralen Teilprozess
des Produktlinien Engineering dar. In ihm wird der Produktraum, die ben¨tig-
                                                                           o
te Infrastruktur und gemeinsame Funktionalit¨t in Form wiederverwendbarer
                                               a
Systemartefakte f¨r die zu erstellende Software Produktlinie einer spezifischen
                  u
Dom¨ne konzipiert und entwickelt. Das Domain Engineering l¨sst sich in die
     a                                                           a
drei Teilprozesse Dom¨nenanalyse & Scoping, Architekturentwurf und Imple-
                        a
mentierung unterteilen. Die Dom¨nenanalyse umfasst die Anforderungsanalyse
                                 a
f¨r die gesamte Produktlinie und dokumentiert die Gemeinsamkeiten und Un-
 u
terschiede aller geplanten Produktvarianten. In der Scopingphase werden alle
Informationen zu den geplanten Produktvarianten gesammelt, beschrieben und
in dem Produktraum festgehalten. Aus dem Wissen der Dom¨nenanalyse und
                                                               a
dem Scoping wird in der Architekturentwurfsphase eine Produktlinienarchitek-
tur entworfen, aus der die Architekturen der konkreten Produktvarianten ab-
geleitet werden. In der Implementierungsphase werden die Systemartefakte, die
auch als Core Assets bezeichnet werden, konzipiert, entwickelt und anschließend
in der Produktlinien-Infrastruktur archiviert. Zus¨tzlich wird in dieser Phase
                                                  a
in einem Produktionsplan festgehalten, wie die einzelnen Produktvarianten aus
den Systemartefakten zu konstruieren sind [6]. Ziel des Domain Engineering ist
es, dem Application Engineering Prozess eine technische und organisatorische
Plattform zur Verf¨gung zu stellen, welche die Erstellung von Produktvarian-
                    u
ten der Anwendungsdom¨ne durch Verwendung systematisch wiederverwendba-
                          a
rer Systemartefakte unterst¨tzt. Dazu werden die einzelnen Systemartefakte der
                            u
Plattform genau auf die Produktlinie zugeschnitten und f¨r eine hohe Wieder-
                                                          u
verwendbarkeit ausgelegt, so dass sie sich mit geringem Aufwand miteinander
kombinieren lassen [3].



Application Engineering Das Application Engineering bezeichnet den Teil-
prozess des Produktlinien Engineering, in dem einzelne Instanzen der Software
Produktlinie, also konkrete Produktvarianten, durch das Ausw¨hlen und An-
                                                                 a
passen der von der Plattform zur Verf¨gung gestellten Systemartefakte und dem
                                      u
Implementieren systemspezifischer Komponenten, erzeugt werden [6]. Im Ideal-
fall entstehen neue Produktvarianten der Plattform durch das Zusammenbau-
en nach einem Produktionsplan. Der Schwerpunkt wird so vom Programmieren
zum Integrieren verlagert [3]. F¨r jede Produktvariante werden die Phasen Sys-
                                u
temanalyse, Systementwurf, Systemimplementierung und Systemtest durchlau-
fen. In der Systemanalyse werden die softwaresystemspezifischen Anforderungen,
die sich von denen der Produktlinie unterscheiden, ermittelt. Im Systementwurf
wird die konkrete Systemarchitektur der Produktvariante durch Ableitung von
der Produktlinienarchitektur entwickelt. Bei der Systemimplementierung wird
schließlich durch Ausw¨hlen der Systemartefakte die konkrete Produktvariante
                       a
erstellt. Die Anforderungen eines konkreten Softwaresystems k¨nnen wiederum
                                                               o
dazu f¨hren, dass der Domain Engineering Prozess angestoßen wird um die Platt-
       u
form der Software Produktlinie entsprechend anzupassen und gegebenenfalls um
weitere Systemartefakte zu erweitern [7].
Management Das Management ist der zentrale Teilprozess des Produktlinien
Engineering, der die beiden anderen Prozesse unterst¨tzt und koordiniert. Hier
                                                     u
wird zwischen technischem und organisatorischem Management unterschieden.
Das technische Management uberwacht die Entwicklung der Systemartefakte
                               ¨
und der konkreten Produktvarianten. Es stellt sicher, dass alle Prozesse gem¨ß
                                                                             a
den Vorgaben durchgef¨hrt werden. Dagegen ist das organisatorische Manage-
                       u
ment f¨r die Planung, Priorisierung und Verteilung der Ressourcen zust¨ndig. Es
       u                                                              a
legt weiterhin die grundlegende Unternehmensstrategie fest. Ein gut gef¨hrtes
                                                                         u
Management ist von entscheidender Bedeutung f¨r die erfolgreiche Umsetzung
                                                 u
einer Software Produktlinie [7, 9].
    Abbildung 3 zeigt die drei zentralen Prozesse und ihre Interaktion bei der
Entwicklung von Software Produktlinien.



            Domain Engineering
                Process




        Prozesse
       Richtlinien
       Architektur      Anforderungen           Product Line Management
       Infrastruktur    Neue Artefakte                   Process

       Werkzeuge
      Komponenten




           Application Engineering
                                                        Produkte
                   Process



Abbildung 3. Die drei zentralen Prozesse Domain Engineering, Application Enginee-
ring und Management bei der Entwicklung von Software Produktlinien [9].




4   Fazit
Die Einf¨hrung von Software Produktlinien ist ein vielversprechender Ansatz zur
        u
Reduktion der Entwicklungskosten, Erh¨hung der Produktzuverl¨ssigkeit und
                                         o                        a
Produktqualit¨t sowie einer beschleunigten Entwicklung [6]. Die Komplexit¨t der
             a                                                           a
Einf¨hrung, des Aufbaus und des Betriebs einer Software Produktlinie in einem
    u
Unternehmen stellt aber eine große H¨rde f¨r die Aussch¨pfung des vorhande-
                                      u     u             o
nen Wiederverwendungspotentials einer Produktfamilie dar. Es ist viel Zeit und
eine hohe Vorabinvestition n¨tig, um eine Produktlinie erfolgreich einzuf¨hren.
                             o                                            u
W¨hrend der Aufbauphase einer Produktline wirft diese n¨mlich zun¨chst keine
   a                                                       a          a
Ertr¨ge ab, sondern f¨hrt sogar zu h¨heren Kosten. Aus den besagten Gr¨nden
     a                u                o                                  u
scheitern viele Unternehmen bei dem Versuch eine Produktlinie einzuf¨hren,u
selbst wenn die Andwendungsdom¨ne und die Produktvarianten pr¨destiniert
                                     a                                a
f¨r die Entwicklung einer Produktlinie sind. Ein Grund ist meistens das Fehlen
 u
eines klar definierten Vorgehensmodells f¨r die Entwicklung einer Software Pro-
                                           u
duktlinie. Ben¨tigt wird also eine ganzheitliche Methode, die ein klar definiertes
               o
Vorgehensmodell zur Entwicklung einer Produktline bereitstellt, denn der Soft-
ware Produktlinien Ansatz ist zun¨chst nur ein Konzept. Eine vielversprechende
                                    a
ganzheitliche Methode zum erfolgreichen Aufbau, Betrieb, Einsatz und Wartung
einer Software Produktline definiert beispielsweise das vom Fraunhofer Institut
entwickelte PuLSE (Product Line Software Engineering) [1]. Ist eine Produktfa-
milie jedoch erst einmal etabliert, treten die genannten Nachteile immer mehr in
den Hintergund und die Vorteile, wie h¨here Softwarequalit¨t, h¨here Produkti-
                                         o                   a    o
vit¨t und k¨rzere Entwicklungszeiten kommen zum Vorschein [2].
   a        u


Literatur

[1] M. Anastasopoulos, C. Atkinson, and D. Muthig. A Concrete Method for
    Developing and Applying Product Line Architectures.
[2] K. B¨llert.
          o         Objektorientierte Entwicklung von Software-Produktlinien
    zur Serienfertigung von Software-Systemen, 2002.        URL http://www.
    db-thueringen.de/servlets/DocumentServlet?id=1158.
[3] P. Clements and L. Northrop. Software Product Lines: Practices and Patterns
    (The SEI Series in Software Engineering). Addison-Wesley Professional,
    2001. ISBN 0201703327.
[4] J. V. Gurp, J. Bosch, and M. Svahnberg. On the notion of variability in
    software product lines. In WICSA ’01: Proceedings of the Working IEEE/I-
    FIP Conference on Software Architecture (WICSA’01), page 45, Washing-
    ton, DC, USA, 2001. IEEE Computer Society. ISBN 0-7695-1360-3. doi:
    http://dx.doi.org/10.1109/WICSA.2001.948406.
[5] K. C. Kang, S. G. Cohen, J. A. Hess, W. E. Novak, and A. S. Peterson.
    Feature-Oriented Domain Analysis (FODA) Feasibility Study. Technical re-
    port, Software Engineering Institute, Carnegie Mellon University, Pittsburgh,
    Pennsylvania 15213, 1990.
[6] R. Reussner and W. Hasselbring. Handbuch der Software-Architektur.
    Dpunkt Verlag, 2006. ISBN 3898643727.
[7] Software Engineering Institute. Product Lines, 2007. URL http://www.
    sei.cmu.edu/productlines/. Stand: 31.12.2007.
[8] I. Sommerville. Software Engineering. Pearson Studium, 2007. ISBN
    3827372577.
[9] R. Zacharias. Produktlinien: Der n¨chste Schritt in Richtung Software-
                                           a
    Industrialisierung. Javamagazin, (3.07):69–79, 2007.

Más contenido relacionado

Más de Johannes Diemke

2010-JOGL-08-Torus-Knoten
2010-JOGL-08-Torus-Knoten2010-JOGL-08-Torus-Knoten
2010-JOGL-08-Torus-KnotenJohannes Diemke
 
2010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt052010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt05Johannes Diemke
 
2010-JOGL-06-Licht-und-Material
2010-JOGL-06-Licht-und-Material2010-JOGL-06-Licht-und-Material
2010-JOGL-06-Licht-und-MaterialJohannes Diemke
 
2010-JOGL-05-Transformationen
2010-JOGL-05-Transformationen2010-JOGL-05-Transformationen
2010-JOGL-05-TransformationenJohannes Diemke
 
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-RemovalJohannes Diemke
 
2010-JOGL-02-Einfuehrung
2010-JOGL-02-Einfuehrung2010-JOGL-02-Einfuehrung
2010-JOGL-02-EinfuehrungJohannes Diemke
 
2010-JOGL-01-Organisation
2010-JOGL-01-Organisation2010-JOGL-01-Organisation
2010-JOGL-01-OrganisationJohannes Diemke
 
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)Johannes Diemke
 
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)Johannes Diemke
 
Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)Johannes Diemke
 
Theory Exploration (Vortrag)
Theory Exploration (Vortrag)Theory Exploration (Vortrag)
Theory Exploration (Vortrag)Johannes Diemke
 
Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)Johannes Diemke
 
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010
Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010Johannes Diemke
 
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)Johannes Diemke
 
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: ScrumAgile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: ScrumJohannes Diemke
 
Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)Johannes Diemke
 

Más de Johannes Diemke (17)

2010-JOGL-08-Torus-Knoten
2010-JOGL-08-Torus-Knoten2010-JOGL-08-Torus-Knoten
2010-JOGL-08-Torus-Knoten
 
2010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt052010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt05
 
2010-JOGL-06-Licht-und-Material
2010-JOGL-06-Licht-und-Material2010-JOGL-06-Licht-und-Material
2010-JOGL-06-Licht-und-Material
 
2010-JOGL-05-Transformationen
2010-JOGL-05-Transformationen2010-JOGL-05-Transformationen
2010-JOGL-05-Transformationen
 
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
 
2010-JOGL-02-Einfuehrung
2010-JOGL-02-Einfuehrung2010-JOGL-02-Einfuehrung
2010-JOGL-02-Einfuehrung
 
2010-JOGL-01-Organisation
2010-JOGL-01-Organisation2010-JOGL-01-Organisation
2010-JOGL-01-Organisation
 
Boost C++ Libraries
Boost C++ LibrariesBoost C++ Libraries
Boost C++ Libraries
 
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
 
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
 
Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)
 
Theory Exploration (Vortrag)
Theory Exploration (Vortrag)Theory Exploration (Vortrag)
Theory Exploration (Vortrag)
 
Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)
 
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010
Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010
 
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
 
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: ScrumAgile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
 
Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)
 

Software Produktlinien: Einführung und Überblick (Ausarbeitung)

  • 1. Software Produktlinien ¨ Einfuhrung und Uberblick ¨ Johannes Diemke Universit¨t Oldenburg a Department f¨r Informatik u 26111 Oldenburg ¨ Zusammenfassung Dieser Artikel soll einen Uberblick uber den Soft- ¨ ware Produktlinien Ansatz verschaffen. Zu diesem Zweck werden die grundlegenden Konzepte, Vorteile und Herausforderungen von Softwa- re Produktlinien beschrieben. Dazu wird der Begriff der systematischen Wiederverwendung eingef¨hrt. Darauf aufbauend folgt die g¨ngige De- u a finition von Software Produktlinien. Es wird auf die drei zentralen Pro- zesse Domain Engineering, Application Engineering und Management eingegangen. Des Weiteren werden Begriffe wie Produktraum, Systemar- tefakte und Variablit¨t im Zusammenhang mit Produktlinien erl¨utert. a a Schließlich wird die Produktlinienarchitektur betrachtet und der Softwa- re Produktlinien Ansatz bewertet. 1 Einfuhrung ¨ Die steigende Komplexit¨t und Gr¨ße zu entwickelnder Softwaresysteme ist ein a o gegenw¨rtiges Problem der Software-Technik. Softwaresysteme sollen immer leis- a tungsf¨higer, zuverl¨ssiger, komplexer, gleichzeitig aber immer g¨nstiger in Pro- a a u duktion und Wartung sowie schneller in Entwicklung und Auslieferung werden. Die systematische Wiederverwendung von Software erm¨glicht es diese scheinbar o unvereinbaren Ziele zu erreichen. Insbesondere hat sich gezeigt, dass gerade die Entwicklung von Software Produktlinien einen der leistungsf¨higeren Ans¨tze a a der systematischen Wiederverwendung darstellt [8]. Die Realit¨t sieht jedoch anders aus. Der g¨ngige Ansatz zur Erstellung von a a Softwareprodukten in Unternehmen beruht meist darauf, f¨r jedes durchzuf¨h- u u rende Projekt ein eigenes Projektteam mit eigenem Budget zusammenzustel- len, welches isoliert von den anderen Teams die Entwicklung beginnt. Dadurch kommt es jedoch nicht selten zu mehrfacher und redundanter Durchf¨hrung u verschiedener Arbeiten der unterschiedlichen Projektteams. Genau dieser Pro- blematik versucht der Software Produktlinien Ansatz entgegenzuwirken [9]. Dieser Artikel beschreibt die grundlegenden Konzepte, Vorteile und Heraus- forderungen von Software Produktlinien. Da der Software Produktlinien Ansatz auf dem Konzept der systematischen Wiederverwendung beruht, wird in Ab- schnitt 2 dieses zun¨chst eingef¨hrt und auf dessen Nutzen eingegangen. An- a u schließend folgt in Abschnitt 3 nach einer einf¨hrenden Motivation die g¨ngige u a
  • 2. Definition von Software Produktlinen. Der Abschnitt 3.1 behandelt die Syste- martefakte, welche die Grundbausteine der Software Produktlinie darstellen. Ein ¨ kurzer Uberblick uber den Produktraum und dessen Beschreibung wird in Ab- ¨ schnitt 3.2 gegeben. Abschnitt 3.3 beschreibt die Rolle der Variablit¨t in Soft- a ware Produktlinien, M¨glichkeiten Variablit¨t mit Hilfe von Produkt×Feature- o a Tabellen und Feature-Graphen zu beschreiben und f¨hrt den Begriff des Varia- u tionspunkts ein. Daraufhin wird in Abschnitt 3.4 der grundlegende Unterschied zwischen Softwarearchitekturen von Individualsoftware und Produktlinienarchi- tekturen der sich zum großen Teil daraus ergibt, dass eine Produktlinienarchi- tektur die Referenz f¨r alle Produkte der Produktline darstellt und gewisse Va- u riablit¨tsaspekte ber¨cksichtigt werden m¨ssen, beschrieben. Schließlich wird in a u u Abschnitt 3.5 auf die drei zentralen Prozesse Domain Engineering, Application Engineering und Management eingegangen. Ein Fazit und eine abschließende Bewertung des Software Produktlinien Ansatzes folgt in Abschnitt 4. 2 Systematische Wiederverwendung Die Wiederverwendung ist ein schon lange verfolgter Ansatz, dessen Nutzen re- lativ fr¨h auch f¨r die Software-Technik erkannt wurde. Bei diesem Ansatz wer- u u den, wie in den meisten anderen technischen Disziplinen, im Entwurfsprozess vorgefertigte Komponenten, die schon in anderen Systemen getestet wurden, ge- nutzt. Vorteile der Wiederverwendung sind geringere Entwicklungskosten, eine h¨here Zuverl¨ssigkeit und eine beschleunigte Entwicklung. Um eine systema- o a tische Wiederverwendung zu erreichen, muss diese allerdings fr¨hzeitig in den u Entwurfsprozess mit einbezogen werden und richtig geplant sein [8]. Zu diesem Zweck wurden im Laufe der Zeit eine Reihe von Konzepten entwi- ckelt, welche von der Wiederverwendung einzelner Funktionen bis hin zu ganzen Anwendungssystemen reichen. Das Konzept der Entwurfsmuster bietet beispiels- weise dom¨nenunabh¨ngige und generische L¨sungsschemata f¨r wiederkehrende a a o u Entwurfsprobleme. Mit den Referenzarchitekturen werden dom¨nenabh¨ngige a a und generische Softwarearchitekturen geboten. Die in den sp¨ten 90er Jahren a aufkommende komponentenbasierte Software-Technik konzentriert sich schließ- lich darauf, Softwaresysteme aus abstrakten, lose gekoppelten und wiederver- wendbaren Komponenten zu entwerfen [6]. 3 Software Produktlinien Einen ¨ußerst leistungsf¨higen Ansatz zur systematischen Wiederverwendung a a stellen die Software Produklinien, welche gelegentlich auch als Anwendungsfa- milien bezeichnet werden, dar. Diesem Ansatz liegt zugrunde, dass sich Soft- warehersteller h¨ufig auf spezielle Anwendungsdom¨nen spezialisieren und f¨r a a u diese eine Reihe von Produktvarianten entwickeln. Produktvarianten haben aber naturgem¨ß eine gemeinsame Grundstruktur und eine Vielzahl ¨hnlicher Eigen- a a schaften. Dies zeichnet jedoch eine Produktfamilie aus. Ziel des Software Pro- duktlinien Ansatzes ist es nun das vorhandene Wiederverwendungspotential ei-
  • 3. ner Produktfamilie auszusch¨pfen, indem die dazu n¨tige Infrastruktur geschaf- o o fen wird [6]. Da in einer Software Produktlinie jedes Produkt auch immer eine Produkt- variante darstellt, sind die Begriffe Produkt und Produktvariante im Kontext einer Produktlinie als synonym anzusehen. Im Folgenden wird eine Definition von Software Produktlinien in Anlehnung an [7] gegeben. Dabei wird der bis- her allgemein gehaltene Begriff der Produktvariante weiter auf Produktvarianten von softwareintensiven Systemen eingegrenzt. Definition 1. Eine Software Produktlinie (SPL) ist eine Menge von softwar- eintensiven Systemen, die sich eine Reihe von Systemartefakten teilen, einer speziellen Anwendungsdom¨ne angeh¨ren und eine gemeinsame systemspezifi- a o sche Architektur besitzen. Jedes dieser Systeme ist auf die eine oder andere Art spezialisiert, der gemeinsame Kern der Systeme wird jedoch jedesmal wiederver- wendet. Der Software Produktlinien Ansatz erm¨glicht so f¨r eine spezielle Anwen- o u dungsdom¨ne die Erstellung einer Reihe von softwareintensiven Systemen auf a Basis einer Menge gemeinsam genutzter Systemartefakte, eines gemeinsamen Produktionsprozesses und einer konsequenten Aufbau- und Ablauforganisation. Die systematische Wiederverwendung der Systemartefakte wird dabei von An- fang an in den Entwurfsprozess mit einbezogen. Die gemeinsam verwendeten Systemartefakte beschr¨nken sich dabei nicht auf wiederverwendbare Software- a komponenten wie Abschnitt 3.1 zeigt. Der Software Produktlinien Ansatz kann durch eine Analogie zu traditionel- len Industriebereichen wie der Autoindustrie veranschaulicht werden. So streben Autohersteller die Erstellung einer Menge von Kraftfahrzeugen an und versuchen dabei die Unterschiede der in den Fahrzeugen verwendeten Bauteile m¨glichst o gering zu halten. Dies erm¨glicht ihnen eine breite Wiederverwendung von Kom- o ponenten. In dieser Analogie ist dann die Anwendungsdom¨ne die Erstellung von a Kraftfahrzeugen in der Autoindustrie, die zu erstellenden Produktvarianten sind dann die im Produktportfolio vorhandenen Kraftfahrzeuge und die gemeinsam genutzen Systemartefakte, die in den Fahrzeugen teilweise gemeinsam genutzten Bauteile [3]. Da sich der Software Produktlinien Ansatz jedoch nicht f¨r jede Menge von u Softwareprodukten eignet, ist vor der Entwicklung einer Produktlinie in einer Machbarkeits- und Rentabilit¨tsanalyse gr¨ndlich zu pr¨fen, ob sich diese lang- a u u fristig finanziell rentiert und gen¨gend ¨hnliche Eigenschaften in der Produkt- u a menge vorhanden sind, die sich sinnvoll zu Systemartefakten abstrahieren und in die Produktlinie integrieren lassen [6]. Im Folgenden werden einige f¨r Softwareproduktlinien grundlegende Begriffe u eingef¨hrt und anschließend in Zusammenhang gebracht. u 3.1 Systemartefakte Konkrete Produktvarianten softwareintensiver Systeme werden im Produktlinien Ansatz durch das Ausw¨hlen und Anpassen von Systemartefakten erzeugt. Sys- a
  • 4. temartefakte sind daher die Grundbausteine der Produktlinie zur Erstellung der Softwareprodukte. Eine besondere Bedeutung kommt dabei den Softwarearchi- tekturen (siehe Abschnitt 3.4) zu, die spezielle Systemartefakte darstellen, wel- che erst eine Wiederverwendung und Organisation der anderen Systemartefakte im Großen erm¨glichen. Weitere Systemartefakte sind die gemeinsam genutzten o Features der Software Produktlinie. Dabei handelt es sich meistens um wie- derverwendbare Softwarekomponenten, Subsysteme, Module, Frameworks oder Plattformdienste [9]. Hier hat sich gezeigt, dass die komponentenbasierte Soft- ware Entwicklung die Realisierung von Software Produktlinien vereinfacht [6]. Mindestens genauso wichtig wie die bisher genannten Artefakte sind jedoch Sys- temartefakte in Form von Dokumenten, die Erfahrungen und das angesammelte strategische Wissen der Anwendungsdom¨ne wiederspiegeln. Dazu geh¨ren Ge- a o sch¨ftsmodelle, Anforderungszpezifikationen, Projektpl¨ne, Budgets, Testf¨lle, a a a dom¨nenspezifische Muster sowie Prozesse und Richtlinien [7]. a Jedes erstellte Systemartefakt ist ein Teil der Software Produktline und wird in einem Artefaktkatalog inventarisiert. Die Systemartefakte, mit den f¨r ei- u ne Porduktvariante produktspezifischen Entscheidungen, dienen, wie in Abbil- dung 1 dargestellt, im Produktions-Prozess als Basis zur Erstellung neuer Pro- duktvarianten. Dabei sind die Systemartefakte und die produktspezifischen Ent- scheidungen die Eingaben des Produktions-Prozesses und die konkreten Pro- duktvarianten die Ausgaben. Systemartefakte Produktionsprozess Produktvarianten produktspezifische Entscheidungen Abbildung 1. Systemartefakte als Basis zur Erstellung neuer Produktvarianten [9]. 3.2 Produktraum Der Produktraum definiert den Umfang einer Software Produktlinie. Dazu wer- den die zu der Software Produktlinie geh¨renden Produktvarianten aufgelistet o und beschrieben. Er wird, wie Abschnitt 3.5 noch zeigen wird, in der Scoping- phase des Domain Engineering Prozess entwickelt. ¨ Ublicherweise werden detailliert die Anforderungen und Unterschiede zwi- schen den einzelnen Produktvarianten einer Software Produktlinie sowie funk- tionale und nichtfunktionale Anforderungen, die diese Produkte an die Softwa- re Produktlinie stellen, dokumentiert. Produkt×Feature-Tabellen helfen dabei
  • 5. Gemeinsamkeiten zwischen den Softwareprodukten der Produktlinie zu identifi- zieren. Featuregraphen werden dazu genutzt um Abh¨ngigkeiten zwischen ver- a schiedenen Features darzustellen [6]. Im folgenden Abschnitt 3.3 wird noch auf die Verwendung von Featuregraphen anhand eines Beispiels eingegangen. Da- zu muss jedoch zun¨chst der Begriff des Features im Zusammenhang mit der a Variablit¨t in Software Produktlinien eingef¨hrt werden. a u 3.3 Variablit¨t a Die Produktvarianten einer Software Produktlinie zeichnen sich durch eine Viel- zahl gemeinsamer, unterschiedlicher und variierender Features aus. Aus diesem Grund spielen bei der Entwicklung von Software Produktlinien insbesondere Variablit¨tsaspekte eine ubergeordnete Rolle. Unter Variablit¨t wird im Allge- a ¨ a meinen die M¨glichkeit verstanden, Systeme oder Komponenten zu ¨ndern und o a an individuelle Bed¨rfnisse anzupassen. Bei Produktlinien bezeichnet sie die Un- u terschiede der Produktvarianten und definiert den Rahmen in dem diese durch Selektion von Systemartefakten individuell angepasst werden k¨nnen. Sie spielt o damit eine zentrale Rolle in der Produktlinienentwicklung und tritt in unter- schiedlichster Form auf. Dies kann von der Unterst¨tzung mehrerer Betriebssys- u teme bis zur komplexen Anpassung von Systemartefakten reichen [6]. Im Folgenden wird auf die Beschreibung der Variablit¨t des Produktraums a eingegangen und das Konzept des Variationspunkts eingef¨hrt. u Produktraum Variablit¨t Die Variablit¨t des Produktraums wird mit der a a Hilfe von Feature×Produkt-Tabellen und Feature-Graphen dokumentiert. Fea- tures beschreiben dabei Merkmale der Software Produktlinie, die Gemeinsamkei- ten und Unterschiede der einzelnen Produktvarianten darstellen. Features lassen sich dabei weiter klassifizieren in externe Features, notwendige Features und op- tionale Features. Externe Features zeichnen sich dadurch aus, dass sie nicht Teil des Produkts selbst sind, aber von diesem ben¨tigt werden. Notwendige Features o sind grundlegende Features, ohne die das Produkt nicht funktionsf¨hig w¨re. Op- a a tionale Features bieten zus¨tzliche Funktionalit¨t, die zum Betrieb des Produkts a a nicht dringend notwendig ist. Feature×Produkt-Tabellen geben dabei Aufschluss uber den Umfang der geplanten Produkte und deren Features. Feature-Graphen ¨ dokumentieren Abh¨ngigkeiten zwischen Features und deren Variablit¨t [6]. a a Abbildung 2 beschreibt den Produktraum einer Software Produktlinie zur Erstellung mehrerer Varianten eines Mail-Clients mit der Hilfe eines Feature- Graphen. Dazu wird eine zu der UML sehr ¨hnliche Notation verwendet, wel- a che Konstrukte zur Auszeichnung von Kompositionen von Features, Optionalen Features, OR- und XOR-Spezialisierungen von Features und externe Features enth¨lt. In der Abbildung ist zu erkennen, dass ein Mail-Client eine Komposi- a tion aus den Features TCP Connection, Type Message, Receive Message, Send Message und Runtime Platform darstellt. Weiterhin ist ihr zu entnehmen, dass das Receive Message Feature, welches zum Empfangen von E-Mails dient, uber ¨ einer OR-Spezialisierung mit den Features Pop3 und IMAP verbunden ist. Dies
  • 6. bedeutet, dass das Receive Message Feature das Pop3 oder aber das IMAP Fea- ture zum Empfangen von E-Mails verwenden kann. Die Auszeichnung runtime“ ” weist darauf hin, dass die Wahl des tats¨chlich zu nutzenden Features zur Lauf- a zeit entschieden wird. Der Abbildung ist außerdem zu entnehmen, dass die Run- time Platform uber eine XOR-Spezialisierung mit den Features win32 und linux ¨ in Beziehung steht. Da die Beziehung weiterhin mit compiletime“ ausgezeichnet ” ist, bedeutet dies, dass ein Mail Client wahlweise Windows oder aber ein Linux- ¨ Derivat nutzen kann, dies aber zum Zeitpunkt der Ubersetzung entschieden wer- den muß. Eine detaillierte Beschreibung zur Erstellung von Feature-Graphen wird in [5] und [4] gegeben. Orte im Feature-Graphen, an denen eine Entschei- dung bez¨glich des zu nutzenden Features getroffen werden muss, werden auch u Variationspunkte genannt und im folgenden Abschnitt n¨her erl¨utert. a a Mail Client « external » « external » Receive Message Send Message Runtime Platform TCP Connection Type Message runtime runtime compiletime « external » « external » Signature Edit Pop3 IMAP win32 linux runtime or specialization composition « external » « external » Internal Editor vi Emacs xor specialization optional feature Abbildung 2. Beschreibung eines Produktraums zur Erstellung eines Mail-Clients mit Hilfe eines Feature-Graphen [4]. Variationspunkte Produkt- und systemumgebungsspezifische Variablit¨t wird a durch so genannte Variationspunkte abgebildet. So werden variable und optio- nale Features erst durch Variationspunkte m¨glich. Variationspunkte sind also o Punkte im Entwicklungsablauf, an denen Entwurfsentscheidungen bez¨glich der u Variablit¨t getroffen werden m¨ssen, um eine konkrete Variante eines Features a u zu erhalten. Es muss also eine aus mehreren Entwurfsalternativen gew¨hlt wer- a den. Wird eine aus mehreren Entwurfsalternativen gew¨hlt so wird dies auch a als das Binden von Variationspunkten bezeichnet. Das Binden von Variations- punkten kann dabei zu unterschiedlichen Zeitpunkten stattfinden. Beispielsweise kann das Binden w¨hrend des Architekturentwurfs, dem Feinentwurf, der Im- a ¨ plementierung, der Ubersetzung oder zur Laufzeit stattfinden [6].
  • 7. 3.4 Produktlinien Architektur Eine explizit definierte Produktlinienarchitektur ist von zentraler Bedeutung f¨r u die gesamte Produktlinieninfrastruktur. Sie stellt eine gemeinsame generische Referenzarchitektur f¨r alle im Produktraum liegenden Softwareprodukte zur u Verf¨gung. u Konkrete Softwareprodukte leiten ihre Architektur von der Produktlinienar- chitektur ab. Durch diese f¨r die gesamte Produktlinie g¨ltige Architektur kann u u f¨r alle Produkte die Erf¨llung von nichtfunktionalen Anforderungen, wie Perfor- u u mance, Verf¨gbarkeit, Skalierbarkeit und Erweiterbarkeit leichter sichergestellt u werden, da diese Aspekte zu großen Teilen durch die Architektur abgedeckt wer- den [9]. Eine Besonderheit bei Referenzarchitekturen ist, dass produktspezifische Anforderungen schon im Entwurf der Produktlinienarchitektur beachtet werden m¨ssen, um eine m¨glichst generische Architektur, die f¨r alle Produkte nutz- u o u bar ist, zu schaffen. Wird dies nicht beachtet, so kann die Referenzarchitektur im schlimmsten Fall produktspezifische Anforderungen unm¨glich machen. Ziel o ist es aber eine Produktlinienarchitektur zu entwickeln, welche den Anforderun- gen der Softwareprodukte der gesamten Produktlinie gen¨gt. Des Weiteren wird u durch sie auch die Kommunikation zwischen den verschiedenen Interessengrup- pen unterst¨tzt [3]. u Eine Produktlinienarchitektur bietet verschiedene Variationsm¨glichkeiten o hinsichtlich ihrer Konnektoren und Komponenten. Diese k¨nnen in verschiede- o nen Varianten angeboten werden. In der Architektur sollte explizit definiert sein, welche Komponenten obligatorisch, optional und variabel sind und wie optiona- le und variable Komponenten durch konkrete Komponenten instanziiert werden k¨nnen. Dabei bezeichnet eine Konfiguration die konkrete Auswahl von Syste- o martefakten die ein Softwareprodukt formen. Im Idealfall ist es f¨r konkrete Soft- u wareprodukte m¨glich, direkt die Referenzarchitektur der Software Produktlinie o zu nutzen, indem Variationspunkte durch Selektion konkreter Komponenten in der Architektur gebunden werden. Dazu ist es n¨tig standardisierte Schnittstel- o len zu schaffen. Im konkreten Fall k¨nnen Schnittstellen in der objektorientier- o ten Programmierung durch Klassen implementiert werden. Variation kann dann durch unterschiedliche Konfigurationen und das Ableiten von Klassen erfolgen. Bereiche der Referenzarchitektur, die nicht ge¨ndert werden, nutzen gemein- a same Komponenten. Es kann jedoch auch vorkommen, dass neben der Auswahl konkreter Komponenten an den Variationspunkten die Architekrur selbst teil- weise an die produktspezifischen Anforderungen angepasst werden muss [2]. 3.5 Produktlinien Prozesse Bei der Entwicklung von Software Produktlinien wird zwischen drei zentralen und iterativen Prozessen, dem Domain Engineering, dem Application Enginee- ring und dem Management unterschieden [9]. Auf diese drei Prozesse wird im Folgenden genauer eingegangen.
  • 8. Domain Engineering Das Domain Engineering stellt den zentralen Teilprozess des Produktlinien Engineering dar. In ihm wird der Produktraum, die ben¨tig- o te Infrastruktur und gemeinsame Funktionalit¨t in Form wiederverwendbarer a Systemartefakte f¨r die zu erstellende Software Produktlinie einer spezifischen u Dom¨ne konzipiert und entwickelt. Das Domain Engineering l¨sst sich in die a a drei Teilprozesse Dom¨nenanalyse & Scoping, Architekturentwurf und Imple- a mentierung unterteilen. Die Dom¨nenanalyse umfasst die Anforderungsanalyse a f¨r die gesamte Produktlinie und dokumentiert die Gemeinsamkeiten und Un- u terschiede aller geplanten Produktvarianten. In der Scopingphase werden alle Informationen zu den geplanten Produktvarianten gesammelt, beschrieben und in dem Produktraum festgehalten. Aus dem Wissen der Dom¨nenanalyse und a dem Scoping wird in der Architekturentwurfsphase eine Produktlinienarchitek- tur entworfen, aus der die Architekturen der konkreten Produktvarianten ab- geleitet werden. In der Implementierungsphase werden die Systemartefakte, die auch als Core Assets bezeichnet werden, konzipiert, entwickelt und anschließend in der Produktlinien-Infrastruktur archiviert. Zus¨tzlich wird in dieser Phase a in einem Produktionsplan festgehalten, wie die einzelnen Produktvarianten aus den Systemartefakten zu konstruieren sind [6]. Ziel des Domain Engineering ist es, dem Application Engineering Prozess eine technische und organisatorische Plattform zur Verf¨gung zu stellen, welche die Erstellung von Produktvarian- u ten der Anwendungsdom¨ne durch Verwendung systematisch wiederverwendba- a rer Systemartefakte unterst¨tzt. Dazu werden die einzelnen Systemartefakte der u Plattform genau auf die Produktlinie zugeschnitten und f¨r eine hohe Wieder- u verwendbarkeit ausgelegt, so dass sie sich mit geringem Aufwand miteinander kombinieren lassen [3]. Application Engineering Das Application Engineering bezeichnet den Teil- prozess des Produktlinien Engineering, in dem einzelne Instanzen der Software Produktlinie, also konkrete Produktvarianten, durch das Ausw¨hlen und An- a passen der von der Plattform zur Verf¨gung gestellten Systemartefakte und dem u Implementieren systemspezifischer Komponenten, erzeugt werden [6]. Im Ideal- fall entstehen neue Produktvarianten der Plattform durch das Zusammenbau- en nach einem Produktionsplan. Der Schwerpunkt wird so vom Programmieren zum Integrieren verlagert [3]. F¨r jede Produktvariante werden die Phasen Sys- u temanalyse, Systementwurf, Systemimplementierung und Systemtest durchlau- fen. In der Systemanalyse werden die softwaresystemspezifischen Anforderungen, die sich von denen der Produktlinie unterscheiden, ermittelt. Im Systementwurf wird die konkrete Systemarchitektur der Produktvariante durch Ableitung von der Produktlinienarchitektur entwickelt. Bei der Systemimplementierung wird schließlich durch Ausw¨hlen der Systemartefakte die konkrete Produktvariante a erstellt. Die Anforderungen eines konkreten Softwaresystems k¨nnen wiederum o dazu f¨hren, dass der Domain Engineering Prozess angestoßen wird um die Platt- u form der Software Produktlinie entsprechend anzupassen und gegebenenfalls um weitere Systemartefakte zu erweitern [7].
  • 9. Management Das Management ist der zentrale Teilprozess des Produktlinien Engineering, der die beiden anderen Prozesse unterst¨tzt und koordiniert. Hier u wird zwischen technischem und organisatorischem Management unterschieden. Das technische Management uberwacht die Entwicklung der Systemartefakte ¨ und der konkreten Produktvarianten. Es stellt sicher, dass alle Prozesse gem¨ß a den Vorgaben durchgef¨hrt werden. Dagegen ist das organisatorische Manage- u ment f¨r die Planung, Priorisierung und Verteilung der Ressourcen zust¨ndig. Es u a legt weiterhin die grundlegende Unternehmensstrategie fest. Ein gut gef¨hrtes u Management ist von entscheidender Bedeutung f¨r die erfolgreiche Umsetzung u einer Software Produktlinie [7, 9]. Abbildung 3 zeigt die drei zentralen Prozesse und ihre Interaktion bei der Entwicklung von Software Produktlinien. Domain Engineering Process Prozesse Richtlinien Architektur Anforderungen Product Line Management Infrastruktur Neue Artefakte Process Werkzeuge Komponenten Application Engineering Produkte Process Abbildung 3. Die drei zentralen Prozesse Domain Engineering, Application Enginee- ring und Management bei der Entwicklung von Software Produktlinien [9]. 4 Fazit Die Einf¨hrung von Software Produktlinien ist ein vielversprechender Ansatz zur u Reduktion der Entwicklungskosten, Erh¨hung der Produktzuverl¨ssigkeit und o a Produktqualit¨t sowie einer beschleunigten Entwicklung [6]. Die Komplexit¨t der a a Einf¨hrung, des Aufbaus und des Betriebs einer Software Produktlinie in einem u Unternehmen stellt aber eine große H¨rde f¨r die Aussch¨pfung des vorhande- u u o nen Wiederverwendungspotentials einer Produktfamilie dar. Es ist viel Zeit und
  • 10. eine hohe Vorabinvestition n¨tig, um eine Produktlinie erfolgreich einzuf¨hren. o u W¨hrend der Aufbauphase einer Produktline wirft diese n¨mlich zun¨chst keine a a a Ertr¨ge ab, sondern f¨hrt sogar zu h¨heren Kosten. Aus den besagten Gr¨nden a u o u scheitern viele Unternehmen bei dem Versuch eine Produktlinie einzuf¨hren,u selbst wenn die Andwendungsdom¨ne und die Produktvarianten pr¨destiniert a a f¨r die Entwicklung einer Produktlinie sind. Ein Grund ist meistens das Fehlen u eines klar definierten Vorgehensmodells f¨r die Entwicklung einer Software Pro- u duktlinie. Ben¨tigt wird also eine ganzheitliche Methode, die ein klar definiertes o Vorgehensmodell zur Entwicklung einer Produktline bereitstellt, denn der Soft- ware Produktlinien Ansatz ist zun¨chst nur ein Konzept. Eine vielversprechende a ganzheitliche Methode zum erfolgreichen Aufbau, Betrieb, Einsatz und Wartung einer Software Produktline definiert beispielsweise das vom Fraunhofer Institut entwickelte PuLSE (Product Line Software Engineering) [1]. Ist eine Produktfa- milie jedoch erst einmal etabliert, treten die genannten Nachteile immer mehr in den Hintergund und die Vorteile, wie h¨here Softwarequalit¨t, h¨here Produkti- o a o vit¨t und k¨rzere Entwicklungszeiten kommen zum Vorschein [2]. a u Literatur [1] M. Anastasopoulos, C. Atkinson, and D. Muthig. A Concrete Method for Developing and Applying Product Line Architectures. [2] K. B¨llert. o Objektorientierte Entwicklung von Software-Produktlinien zur Serienfertigung von Software-Systemen, 2002. URL http://www. db-thueringen.de/servlets/DocumentServlet?id=1158. [3] P. Clements and L. Northrop. Software Product Lines: Practices and Patterns (The SEI Series in Software Engineering). Addison-Wesley Professional, 2001. ISBN 0201703327. [4] J. V. Gurp, J. Bosch, and M. Svahnberg. On the notion of variability in software product lines. In WICSA ’01: Proceedings of the Working IEEE/I- FIP Conference on Software Architecture (WICSA’01), page 45, Washing- ton, DC, USA, 2001. IEEE Computer Society. ISBN 0-7695-1360-3. doi: http://dx.doi.org/10.1109/WICSA.2001.948406. [5] K. C. Kang, S. G. Cohen, J. A. Hess, W. E. Novak, and A. S. Peterson. Feature-Oriented Domain Analysis (FODA) Feasibility Study. Technical re- port, Software Engineering Institute, Carnegie Mellon University, Pittsburgh, Pennsylvania 15213, 1990. [6] R. Reussner and W. Hasselbring. Handbuch der Software-Architektur. Dpunkt Verlag, 2006. ISBN 3898643727. [7] Software Engineering Institute. Product Lines, 2007. URL http://www. sei.cmu.edu/productlines/. Stand: 31.12.2007. [8] I. Sommerville. Software Engineering. Pearson Studium, 2007. ISBN 3827372577. [9] R. Zacharias. Produktlinien: Der n¨chste Schritt in Richtung Software- a Industrialisierung. Javamagazin, (3.07):69–79, 2007.