<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Verteilte Evolution von Softwareproduktlinien: Herausforderungen und ein Lösungsansatz</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Klaus Schmid</string-name>
          <email>schmid@sse.uni-hildesheim.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Institut für Informatik, Universität Hildesheim</institution>
          ,
          <addr-line>Marienburger Platz 22, D-31141 Hildesheim</addr-line>
        </aff>
      </contrib-group>
      <abstract>
        <p>Die Evolution einzelner Systeme ist bereits relativ komplex, doch alle diese Probleme findet man potenziert in einer Produktlinienentwicklung. Zusätzlich zu den Einzelsystemproblemen treten weitere Schwierigkeiten hinzu. In diesem Beitrag gehen wir auf die Herausforderungen der Produktliniensituation ein und legen unser Augenmerk vor allem auf die Situation verteilter Evolution. Wir stellen einen möglichen Ansatz zur Lösung vor.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Einleitung</title>
      <p>•
Änderungen, die sich die Kunden der einzelnen Systeme wünschen, können
sich stark widersprechen, müssen aber in einer Produktlinie zusammengeführt
werden. Dies führt zu einer wesentlichen Komplexitätserhöhung.</p>
      <p>Die Lebensdauer einer Produktlinie ist – da sie viele Produkte umfasst – meist
deutlich länger als die eines einzelnen Produkts.</p>
      <p>Als eine weitere Schwierigkeit komm bei der Produktlinienentwicklung hinzu, dass
einzelne Produkte häufig einen Plattformcharakter haben. Das heißt, Kunden der
Produkte führen selbst Anpassungen durch, die dann wiederum zu einer besonderen
Produktvariante führen. Dabei entsteht die Schwierigkeit, dass das
produktlinienentwickelnde Unternehmen diese Produkte meist nicht kennt, die aufbauenden Produkte
sollten aber auch bei einer Aktualisierung der zugrundliegenden Produktlinienelemente
intakt bleiben.</p>
      <p>Der weitere Beitrag ist wie folgt strukturiert. Der nächste Abschnitt führt kurz die
Grundbegriffe für Produktlinienentwicklung ein und stellt das Problem der Evolution
näher da. In Abschnitt 3 skizzieren wir unseren Lösungsansatz und stellen wesentliche
Anforderungen dar, die er mit sich bringt. Eine abschließende Diskussion bietet
Abschnitt 4.</p>
    </sec>
    <sec id="sec-2">
      <title>2 Produktlinienevolution</title>
      <p>In diesem Abschnitt führen wir die wesentlichen Begriffe der Produktlinienentwicklung
ein und diskutieren die Herausforderungen der Produktlinienevolution genauer.</p>
      <sec id="sec-2-1">
        <title>2.1 Produktlinienentwicklung</title>
        <p>Die Grundidee einer Produktlinienentwicklung ist es eine Menge von Systemen
gemeinsam aus einer Menge von Assets zu entwickeln, wobei eine möglichst hohe
Wiederverwendung erreicht werden soll. Dies kann einerseits erreicht werden indem die
Zusammensetzung der Komponenten für die einzelnen Systeme unterschiedlich ist. Zum
anderen können die Komponenten selbst wieder parametrisierbar sein, und schließlich
gibt es die Möglichkeit produktspezifischer Komponenten. Um diese Flexibilität zu
ermöglichen spielt in einer Produktlinienentwicklung die Softwarearchitektur eine
wesentliche Rolle. Sie beschreibt eine konfigurierbare Softwarearchitektur; die einzelnen
Systeme instanziieren diese, um zur jeweiligen Produktarchitektur zu gelangen. Die
Produktlinienarchitektur wird daher auch als Referenzarchitektur bezeichnet.
Von besonderer Bedeutung ist in einer Produktlinienentwicklung das
Variabilitätsmodell. Dieses Modell beschreibt, wie die verschiedenen Produkte variieren können, und
damit welche Eigenschaften von der Produktlinie insgesamt unterstützt werden. Das
Variabilitätsmodell nennt dabei die möglichen Ausprägungen von Eigenschaften und
definiert insbesondere Abhängigkeiten zwischen diesen Eigenschaften. Verschiedene
Arten von Variabilitätsmodellen sind gebräuchlich. Am häufigsten werden sogenannte
Featuremodelle [KC+90, RSP03, CHE05a] verwendet, aber auch Entscheidungsmodelle
[SJ04] werden genutzt. Da die Darstellung von Featuremodellen – insbesondere in der
Form von Featurebäumen – sich besonders gut zur Erläuterung eignet, nutzen wir diese
Darstellungsweise hier. Es gibt verschiedene Varianten auch dieser Notation. Hier
nutzen wir eine Variante, die sich weitestgehend auf FODA [KC+90] stützt (vgl.
Abbildung 1). Dieses Modell unterstützt die Dekomposition einer Produktlinie in ihre
Bestandteile, die Auszeichnung sogenannter optionaler Features (diese können</p>
        <p>Abbildung 1: Notation und Beispiel für einen Featurebaum
Bestandteil eines Produkts sein, müssen es aber nicht), sowie die Repräsentation von
Alternativen. Außerdem wird dabei die Abhängigkeit von Eigenschaften (requires)
dargestellt. Abbildung 1 stellt beispielhaft eine Produktlinie dar, in der jedes Produkt die
Eigenschaft A1 oder A2 (aber nicht beide) hat, Produkte die Eigenschaft B bzw. C haben
können, aber nicht müssen. Die Eigenschaft D ist verpflichtend. Die Abhängigkeit
zwischen A2 und C drückt aus, dass alle Produkte, die A2 enthalten auch C enthalten
müssen. Weiterhin können zu Features Parameterwerte gehören. Diese werden aber in
dieser Notation nicht graphisch dargestellt. Dies ist eine sehr einfache Variante der
Featuremodellierung; auch wollen wir hier nicht auf semantische Formalisierungen
(bspw. [SHT06]) eingehen, um die konzeptionelle Diskussion hier nicht unnötig
kompliziert zu machen.</p>
      </sec>
      <sec id="sec-2-2">
        <title>2.2 Evolution von Produktlinien</title>
        <p>Im Vergleich zu vielen anderen Aspekten der Produktlinienentwicklung gibt es bisher
noch relativ wenige Arbeiten zur Evolution von Produktlinien. Eine ausführliche
Diskussion möglicher Evolutionsschritte einer Produktlinie haben wir bereits an anderer
Stelle gegeben [SE07], wir wollen aus Platzgründen daher hier nur die wesentlichen
Ergebnisse zusammenfassen. Auslöser einer Produktlinienevolution (Change Requests)
kann man beispielsweise nach folgenden Kriterien kategorisieren:</p>
        <p>Granularität der Änderungen: wie viele Produkte werden von den Änderungen
betroffen?
•
•
o
o
o
o</p>
        <p>Anforderungsebene: einzelne Anforderungen werden verändert
Produktebene: die Menge der zu unterstützenden Produkte wird
verändert
Produktlinienebene: Änderungen haben Auswirkungen auf ganze
Produktgruppen
Arten von Änderungen: für jede der vorhergehenden Ebenen lassen sich nun
Änderungsoperationen benennen.</p>
        <sec id="sec-2-2-1">
          <title>Hinzufügen von Anforderungen oder Produkten</title>
          <p>Abbildung 2: Übersicht über mögliche Evolutionsschritte für Produktlinien [SE07].
o
o</p>
        </sec>
        <sec id="sec-2-2-2">
          <title>Entfernen von Anforderungen oder Produkten</title>
        </sec>
        <sec id="sec-2-2-3">
          <title>Modifizieren von Anforderungen oder Produkten</title>
          <p>Um die detaillierten Auswirkungen und Möglichkeiten zu verstehen (so macht
es bspw. einen Unterschied ob eine neue Alternative eingeführt wird oder zu
einer bestehenden Alternative eine neue Möglichkeit hinzugefügt wird), ist eine
genaue Betrachtung notwendig.
•</p>
          <p>Zu den aufgeführten Änderungstypen kommen noch Spezialformen, wie
beispielsweise die Veränderung der Auswahlmöglichkeiten, die Änderung von
Abhängigkeiten, usw.</p>
          <p>Eine Übersicht gibt Abbildung 2. Eine detaillierte Diskussion ist in [SE07] gegeben.</p>
        </sec>
      </sec>
      <sec id="sec-2-3">
        <title>2.3 Ein Beispiel zur Produktlinienevolution</title>
        <p>Als Grundlage zur Diskussion von Ansätzen zur Produktlinienevolution wollen wir hier
ein einfaches Beispiel einführen. Das entsprechende Featuremodell findet sich in
Abbildung 3. In Abbildung 3a ist ein einfaches Featuremodell für eine Produktlinie
(a) Ausgangssituation</p>
        <p>(b) Endsituation</p>
        <p>Abbildung 3: Ein einfaches Evolutionsbeispiel: Anfangs- und Endsituation
dargestellt, die zu einem Zeitpunkt t1 die Ausgangssituation darstellt. Nehmen wir jetzt
folgende Änderungsanforderungen an:
•
•</p>
        <p>Kunde 1 hätte gerne eine Erweiterung der Produktlinie um das Feature A2.
Damit es nur diesem Kunden zur Verfügung gestellt werden kann, wird dieses
als optionales Feature realisiert. (Wir behandeln hier zur Vereinfachung
produktspezifische /kundenspezifische Funktionalität wie Variabilitäten.)
Kunde 2 ist selbst in der Lage Anpassungen durchzuführen. Dies kann
beispielsweise der Fall sein, da ihm die Realisierung (soweit sie ihn betrifft) zur
Verfügung steht. Er erweitert die Alternative B4, B5 um eine weitere
Ausprägung B3. Diese erfordert jedoch die das Feature B2. Da diese
Erweiterung vom Kunden selbst durchgeführt wird, wird sie (und die
Abhängigkeit) dem Hersteller eventuell nie bekannt. Eine entsprechende
Situation gibt es beispielsweise in der Entwicklung für Standardsoftware.</p>
        <sec id="sec-2-3-1">
          <title>Nun gibt es weitere Änderungen:</title>
          <p>•</p>
          <p>Zum Zeitpunkt t2 wird B1 aus einem gemeinsamen Feature in ein optionales
Feature überführt. Nach Aussage des Variabilitätsmodells sollte dies keinerlei
Auswirkungen auf die anderen Features haben – und insbesondere auf die
möglichen Varianten. Da jedoch zum Zeitpunkt t1 B1 noch als verpflichtend
angenommen wurde, besteht eine gewisse Wahrscheinlichkeit, dass evtl.</p>
          <p>Abhängigkeiten nicht dokumentiert sind. Auch erfordert die Integration von
•
•
•
•
•</p>
          <p>Variabilitätsmechanismen weitergehende Implementierungsänderungen, die
ebenfalls andere Features beeinflussen können.</p>
          <p>Zum Zeitpunkt t3 wird schließlich B2 in B2´ überführt. Dies kann bspw. auf
Grund von Fehlerkorrekturen oder auf Basis ergänzender Anforderungen
notwendig werden. Da A3 abhängig ist von B2 kann dies natürlich
Auswirkungen auf A3 haben. Vor allem wenn diese nutzerseitig sichtbar sind,
kann dies dazu führen, dass dies nicht gewünscht wird. Schwieriger noch ist es
für die Ergänzung B4, da das Unternehmen, welches für die
Produktlinieninfrastruktur verantwortlich ist, nichts von B3 weiß, ist eine Überprüfung des
Gesamtresultats nicht möglich. Trotzdem ist unter allen Umständen zu
vermeiden, dass B3 nicht mehr funktionstüchtig ist.</p>
          <p>In der Praxis lassen sich angesichts dieser Schwierigkeiten nun verschiedene Ansätze zur
Produktlinienevolution beobachten:</p>
          <p>Der einfachste Weg ist: für jeden Kunden wird eine Kopie der Infrastruktur
erzeugt. Dies vermeidet Abhängigkeiten zwischen Änderungen für
unterschiedliche Kunden. Jedoch hat dies zur Folge, dass jede Infrastrukturänderung,
die für alle Kunden relevant ist, mehrfach realisiert werden muss. Aus diesem
Grund wird dieser Ansatz manchmal auch als nicht zum Produktlinienkonzept
kompatibel aufgefasst. Im Fall von Kunde 2 wäre auch nach wie vor offen, ob
seine eigenen Ergänzungen (B3) noch funktionstüchtig sind, wenn er eine
Produktbasis erhält, die B2´ enthält.</p>
          <p>Ein weiterer Ansatz ist der Versuch alle Evolution in der Produktlinie zu
realisieren. Dies hat jedoch auch wesentliche Folgen. So können Ergänzungen
wie die von Kunde 2 nicht mehr durchgeführt werden, ohne dass dies dem
Hersteller bekannt ist. Dies heißt auch, dass sobald ein Kunde eine
Fehlerkorrektur in einer Funktionalität übernehmen will, er in allen Features die
aktuellste Version übernehmen muss.</p>
          <p>Dies sind nur Beispiele: insgesamt haben heutige Evolutionsänsätze eine Menge von
Schwierigkeiten. Beispiele sind:</p>
          <p>Kunden möchten manche Erweiterungen und Veränderungen der Infrastruktur
nicht mitmachen. Diese können bspw. durch Änderungen für andere Kunden
oder durch allgemeine Evolutionsentscheidungen auftreten. Diese Trennung ist
nicht möglich.</p>
          <p>Die Integration in die Infrastruktur ist komplexer als eine
Einzelsystemänderung. Diese zusätzliche Zeit steht manchmal nicht zur Verfügung; eine
Anpassung muss manchmal speziell für einen Kunden erfolgen.</p>
          <p>Kunden haben spezielle Anpassungen für ihr System erhalten, diese sollen
natürlich auch bei aktualisierten Versionen noch unterstützt werden.
•
•
•
•
•
•</p>
          <p>Die Entwicklung findet verteilt statt (evtl. Firmenübergreifend). Dadurch gibt es
keine einheitliche Sicht auf die Produktlinie.</p>
          <p>..</p>
          <p>Dies sind nur einige Beispiele für Herausforderungen im Bereich der
Produktlinienevolution.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3 Lösungsansatz</title>
      <p>In diesem Abschnitt wollen wir die Grundlagen für einen Evolutionsansatz, der die oben
beschriebenen Probleme mindert oder sogar löst skizzieren. Wesentliche Charakteristika
dabei sind:</p>
      <p>Eine Abbildung der Produktlinienevolution auf Produktlinienvariabilität wird
vorgenommen. Das heißt, das Variabilitätsmodell deckt alle Varianten ab, auch
die von früheren Plattformversionen. Variabilitäten können erst entfernt
werden, wenn keine entsprechenden Produkte mehr im Feld sind.</p>
      <p>Um das Problem der Zeitverzögerung durch die Integration in die Infrastruktur
zu lösen, kann zuerst lediglich das Variabilitätsmodell integriert werden,
während die Realisierung als getrennte Version verbleibt. In weiteren Schritten
kann dann eine tiefere Integration erfolgen.1
Verschiedene Kunden (oder Entwicklungspartner) haben eventuell nur Zugriff
auf einzelne Ausschnitte des Gesamtmodells (inklusive des
Variabilitätsmodells). Trotzdem betrachten wir alle Bestandteile eines solchen verteilten
Variabilitätsmodells als ein (virtuelles) Variabilitätsmodell.</p>
      <p>In der Aktualisierung von Systemen werden minimale Änderungen angestrebt
(ein Kunde erhält ein Update, das nur die Änderungen enthält, die für den
Kunden notwendig sind). Das heißt auf Artefaktebene sollen kleine (nicht
notwendigerweise formal minimale) Change-Sets identifizierbar sein.
1 Dies kann dann als Integration über das Versionsmanagement gesehen werden, ein Ansatz der von
Produktlinienwerkzeugen wie GEARS [GEARS] gar als einzigem Ansatz unterstützt wird. Jedoch wird dort
die spätere Integration nicht explizit unterstützt.</p>
      <sec id="sec-3-1">
        <title>3.1 Charakteristika des Ansatzes</title>
        <p>Eine solche Vorgehensweise erfordert es zu einer einzelnen Variation die notwendigen
Artefakte zuzuordnen. Nur so können die einzelnen Auslieferungen auf die jeweils
notwendigen Artefakte beschränkt werden. Eine solche Menge von ein Feature (bzw.
eine Featureänderung realisierenden Artefakten) bezeichnen wir als Featurebundle.
Dabei ist es notwendig die Verbindung zwischen den Variabilitäten und den jeweiligen
Lebenszyklusmodellen zu beachten, bzw. zu etablieren. Dies wird in Abbildung 4
dargestellt: das Variabilitätsmodell tritt als Konfigurationsmodell auf und beschreibt die
Anpassung der weiteren Modelle, um jeweils spezifische Produkte abzuleiten. So
werden Instanzen in einheitlicher Weise beschrieben, bei denen Anforderungen,
Architektur, Implementierung und Tests jeweils zu einer bestimmten Systeminstanz
gehören.</p>
        <p>Wollen wir nun eine Modularisierung beschreiben, um zu ermöglichen, dass Kunden
ihre eigenen Anpassungen durchführen (oder diese von Dienstleistern durchführen
lassen), so ist es notwendig, dass Variabilitätsmodell und Artefaktmodelle
(Anforderungen, .., Test) in gleicher Weise modularisiert werden. Wir definieren also:</p>
        <sec id="sec-3-1-1">
          <title>Ein Featurebundle besteht aus:</title>
          <p>•
•
•
•
•</p>
          <p>Einem Variabilitätsmodellfragment
Allen dazugehörigen (also durch das Variabilitätsmodellfragment) beeinflussten
Anforderungen
Allen dazugehörigen Architekturelementen
Allen dazugehörigen Implementierungselementen (bspw. neue Realisierungen
für die durch die Architekturelemente betroffenen Komponenten)</p>
          <p>Allen dazugehörigen Qualitätssicherungsmodelle (u.a., Tests)
Das heißt ein Featurebundle beschreibt einen Querschnitt durch die Produktlinie, der alle
zu einem Feature gehörenden Artefaktelemente umfasst.</p>
          <p>Ein Featureset fasst alle Featurebundles, die zu einem Zeitpunkt für einen Kunden
relevant sind, zusammen. Eine solche Menge von Änderungen kann auch nur relativ zu
einer bestimmten Version einer Produktlinie interpretiert werden. Diese Version
bezeichnen wir deshalb auch als Basis. Ein Featureset beschreibt damit eine Ergänzung
oder Veränderung der Produktlinie um zuvor nicht vorhandene Eigenschaften. Dabei
können neue Variabilitäten nur zu dem Zweck eingeführt werden, um die für einen
Kunden relevanten Eigenschaften abzudecken.</p>
          <p>Um die Bedürfnisse verteilter Entwicklung im Allgemeinen und der kundenspezifischen
Entwicklung durch Dritte im Besonderen abzudecken, gehen wir davon aus, dass das
Gesamtmodell im Sinne der Kombination von Basis vereinigt mit der Menge aller
Bundles in keiner Entwicklungsorganisation vollständig vorliegen muss. Derartige
Verteilungsaspekte spielen heute bereits in der praktischen Produktlinienentwicklung
eine große Rolle, doch wurde dies im Bereich der Variabilitätsmodellierung
weitestgehend ignoriert. Nur wenige Arbeiten berücksichtigen die Möglichkeit zur
Fragmentierung von Featuremodellen – und selbst diese gehen davon aus, dass zu einem
bestimmten Zeitpunkt eine vollständige Integration des Variabilitätsmodells hergestellt
wird (bspw. [DN+08]). In Bezug auf das in Abschnitt 2.3 dargestellte Beispiel würde
dies bedeuten, dass die Ergänzung, die von Kunde 2 eigenständig durchgeführt wird als
eigenständiges Variabilitätsmodellfragment vorliegt. Dieses würde dann beschreiben: es
findet eine Ergänzung einer bestimmten Alternative um eine Ausprägung B3 statt. Diese
ist dabei abhängig von B2, welches aber nicht weiter definiert wird, da es nicht von der
Kundenorganisation realisiert wird. Wenn nun ein aktualisiertes Featureset des
Herstellers beim Kunden eintrifft, dann kann eine Integration stattfinden und das
resultierende Modell auf Konsistenz geprüft werden.</p>
          <p>Abbildung 4: Beziehung zwischen Variabilitätsmodell und Entwicklungsartefakten</p>
          <p>A2
A3</p>
          <p>B2
2
B3</p>
          <p>B4</p>
          <p>B5</p>
          <p>C1</p>
          <p>C2</p>
          <p>C3</p>
          <p>Abbildung 5: Variabilitätsmodell mit Feature Bundles</p>
        </sec>
      </sec>
      <sec id="sec-3-2">
        <title>3.2 Modularisierung des Variabilitätsmodells</title>
        <p>Bei der oben beschriebenen Vorgehensweise ist eine Modularisierung des
Variabilitätsmodells wesentlich, da nur so eine Unabhängigkeit einzelner Änderungen voneinander
sichergestellt werden kann. Im Grunde geht es hier um die gleiche Problematik, die wir
auch aus anderen Bereichen der Realisierung kennen: nur durch eine geeignete
Modularisierung kann eine leichte Änderbarkeit erreicht werden. Dies gilt um so mehr,
wenn die Evolution (wie im Beispiel) verteilt erfolgen muss. Um die Modularisierung
von Variabilitätsmodellen weiter zu untersuchen, sind zwei Fragen besonderes relevant:
•
•</p>
        <p>Welche Arten der Zerlegung von Variabilitätsmodellen sollen unterstützt
werden?
Wie lässt sich eine Modularisierung (im
Variabilitätsmodelle herstellen?</p>
        <sec id="sec-3-2-1">
          <title>Sinne einer</title>
        </sec>
        <sec id="sec-3-2-2">
          <title>Kapselung) der</title>
          <p>Die Kapselung und Zerlegung von Teilkonfigurationsmodellen ist heute in der Praxis
bereits bei Installations- und Updatewerkzeugen gebräuchlich. Jedoch wurde dies bisher
nur beschränkt theoretisch behandelt [SK09]. Da einzelne Systembestandteile von
unterschiedlichen Entwicklungsorganisationen geliefert werden, wird dies oft nicht als
Produktlinienentwicklung wahrgenommen, jedoch kann ein solches
Konfigurationsproblem weitestgehend einer verteilten Produktlinienentwicklung gleich gesetzt werden.
Neben einem eigenen Namensbereich ist bei einer Modularisierung vor allem wichtig
Import- und Exportschnittstellen zu definieren. Eine Import-Schnittstelle definiert
welche Teile des Basismodells bzw. darunterliegender Featurebundels genutzt werden
sollten, eine Exportschnittstelle definiert die möglichen Variabilitäten, sowie die Punkte
an denen zusätzliche Erweiterungen möglich sind (wie dies bspw. Eclipse mittels
Extensionpoints tut). Dies erlaubt eine beliebige Kombination mehrerer
Teilfeaturemodell, wobei die Konsistenz überprüfbar bleibt.</p>
        </sec>
      </sec>
      <sec id="sec-3-3">
        <title>3.3 Modularisierung der Artefaktmodelle</title>
        <p>Die wohl größere Herausforderung stellt die Modularisierung der Artefaktmodelle dar.
Entsprechend Abbildung 4 sollten alle Artefakte ebenso modularisiert werden, wie das
Variabilitätsmodell. Die Modularisierung von Implementierungen und von Architekturen
ist heutzutage vergleichsweise gut verstanden. Die Modularisierung von Anforderungen
wurde bisher jedoch noch weniger behandelt. Zwar werden Anforderungen regelmäßig
in Teilprojekten und –aufgaben zerlegt, jedoch entspricht diese Form der Zerlegung
meist nicht direkt einer architektonischen Zerlegung.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4 Diskussion</title>
      <p>In diesem Aufsatz sind wir auf die Problematik der Evolution von Softwareproduktlinien
eingegangen. Während alle „klassischen“ Probleme der Systementwicklung auftreten,
kommen zusätzliche Probleme durch die Abhängigkeiten zwischen den Produkten hinzu.
Auf diesen Aspekten lag hier ausschließlich der Fokus. Wir haben in diesem Aufsatz vor
allem versucht einige Herausforderungen der Produktlinienevolution herauszuarbeiten
und ein Konzept zur verbesserten Evolution darzustellen. Dieses Konzept beruht
insbesondere darauf, dass es das Variabilitätsmodell selbst zur Grundlage des
Evolutionsmanagements macht.</p>
      <p>Viele Aspekte dieses Konzepts müssen durch weitergehende Forschungsarbeiten noch
bearbeitet werden. Als wesentliche Fragen seien hier nur beispielhaft genannt:
•
•
•
•
•</p>
      <p>Wie lassen sich Variabilitätsmodelle geeignet in Module zerlegen, so dass eine
Kombination einfach möglich ist und eine gute Kapselung gegeben ist.</p>
      <p>Welche Anforderungen an den Aufbau (Semantik) solcher Module sind zu
stellen, um die Kombinierbarkeit von Modulen sicher zu stellen.</p>
      <p>o
o</p>
      <sec id="sec-4-1">
        <title>Lokale Identifikation von globalen Erfüllbarkeitsproblemen</title>
      </sec>
      <sec id="sec-4-2">
        <title>Richtlinien zur Erstellung von Variabilitätsmodulen</title>
        <p>Wie lässt sich eine entsprechende Modularisierung auf (PlugIn-)Architekturen
abbilden, so dass eine gute Evolvierbarkeit gegeben ist.</p>
        <p>Wie lassen sich Modularisierungen von Anforderungen gestalten. Wie sehen
Schnittstellen solcher Module aus?</p>
        <p>Entsprechend die Modularisierung von Tests
Dies deutet nur einen kleinen Ausschnitt der Vielzahl von Fragestellungen an, die im
Zusammenhang mit einem solchen Ansatz zu lösen sind. Im Rahmen der Diskussion
haben wir auch versucht aufzuzeigen, dass die Nutzung von Produktlinienkonzepten wie
Variabilitätsmodellierung, Meta-Variabilität, usw. helfen kann eine systematische
Evolution von Produktlinien auch im verteilten Fall zu unterstützen.
Der Autor möchte Hr. Dr. Hübner, Hr. Keunecke und Hr. Brummermann für anregende
Diskussion und die Darlegung der grundsätzlichen Evolutionsproblematik danken.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Literaturverzeichnis</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [CHE05a]
          <string-name>
            <given-names>K.</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Helsen</surname>
          </string-name>
          , and
          <string-name>
            <given-names>U.</given-names>
            <surname>Eisenecker</surname>
          </string-name>
          ,
          <article-title>Formalizing cardinality-based feature models and their specialization</article-title>
          ,
          <source>in Software Process: Improvement and Practice</source>
          , vol.
          <volume>10</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>7</fpage>
          -
          <lpage>29</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [CHE05b]
          <string-name>
            <given-names>K.</given-names>
            <surname>Czarnecki</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Helsen</surname>
          </string-name>
          , and
          <string-name>
            <given-names>U.</given-names>
            <surname>Eisenecker</surname>
          </string-name>
          ,
          <article-title>Staged configuration through specialization and multi-level configuration of feature models</article-title>
          ,
          <source>Software Process Improvement and Practice</source>
          , vol.
          <volume>10</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>143</fpage>
          -
          <lpage>169</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [CN01]
          <string-name>
            <given-names>P.</given-names>
            <surname>Clements</surname>
          </string-name>
          and
          <string-name>
            <given-names>L.</given-names>
            <surname>Northrop</surname>
          </string-name>
          ,
          <source>Software Product Lines: Practices and Patterns</source>
          , AddisonWesley,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [DN+08]
          <string-name>
            <given-names>D.</given-names>
            <surname>Dhungana</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Neumayer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Gruenbacher</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Rabiser</surname>
          </string-name>
          ,
          <article-title>Supporting the Evolution of Product Line Architectures with Variability Model Fragments</article-title>
          ,
          <source>Seventh Working IEEE/IFIP Conference on Software Architecture (WICSA</source>
          <year>2008</year>
          ), pp.
          <fpage>327</fpage>
          -
          <lpage>330</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [KC+90]
          <string-name>
            <given-names>K.</given-names>
            <surname>Kang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Cohen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hess</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Novak</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Peterson</surname>
          </string-name>
          .
          <article-title>Feature-Oriented Domain Analysis (FODA) Feasibility Study</article-title>
          .
          <source>Technical Report CMU/SEI-90-TR-21</source>
          , Software Engineering Institute,
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <surname>[LSR07] F. van der Linden</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          <string-name>
            <surname>Schmid</surname>
            , and
            <given-names>E.</given-names>
          </string-name>
          <string-name>
            <surname>Rommes</surname>
          </string-name>
          . Product Lines in Action. Springer Verlag,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <string-name>
            <surname>[RSP03] M. Riebisch</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Streitferdt</surname>
            ,
            <given-names>and I. Pashov</given-names>
          </string-name>
          ,
          <article-title>Modeling variability for object-oriented product lines</article-title>
          .
          <source>in ECOOP Workshops, LNCS 3013</source>
          . Springer, pp.
          <fpage>165</fpage>
          -
          <lpage>178</lpage>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [SE07]
          <string-name>
            <given-names>K.</given-names>
            <surname>Schmid</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Eichelberger</surname>
          </string-name>
          .
          <source>A Requirements-Based Taxonomy of Software Product Line Evolution, Proceedings of the Third International ERCIM Symposium on Software Evolution (Software Evolution</source>
          <year>2007</year>
          ),
          <year>Oktober 2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [SE08]
          <string-name>
            <given-names>K.</given-names>
            <surname>Schmid</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Eichelberger</surname>
          </string-name>
          .
          <article-title>Model-Based Implementation of Meta-Variability Constructs: A Case Study using Aspects</article-title>
          , Second International Workshop on Variability Modeling of
          <article-title>Soft-ware-</article-title>
          <string-name>
            <surname>Intensive</surname>
            <given-names>Systems</given-names>
          </string-name>
          ,
          <source>ICB-Research Report No. 22, ISSN 1860- 2770, Seiten 63-71</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [SJ04]
          <string-name>
            <given-names>K.</given-names>
            <surname>Schmid</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I. John. A Customizable</given-names>
            <surname>Approach to Full Lifecycle Variability Management</surname>
          </string-name>
          ,
          <source>Science of Computer Programming</source>
          , Vol.
          <volume>53</volume>
          , No. 3,
          <string-name>
            <surname>Seite</surname>
            <given-names>259</given-names>
          </string-name>
          <source>-284</source>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [SK09]
          <string-name>
            <given-names>K.</given-names>
            <surname>Schmid</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Kröher</surname>
          </string-name>
          .
          <source>An Analysis of Existing Software Configuration Systems. Third International Workshop on Dynamic Software Product Lines (DSPL 2009) at the Software Product Line Conference</source>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [SHT06]
          <string-name>
            <given-names>P.</given-names>
            <surname>Schobbens</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Heymans</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Trigaux</surname>
          </string-name>
          ,
          <article-title>Feature Diagrams: A Survey and a Formal Semantics</article-title>
          .
          <source>14th Requirements Engineering Conference (RE'06)</source>
          , pp.
          <fpage>139</fpage>
          -
          <lpage>148</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>