<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="de">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Verteilte Evolution von Softwareproduktlinien: Herausforderungen und ein Lösungsansatz</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author role="corresp">
							<persName><forename type="first">Klaus</forename><surname>Schmid</surname></persName>
							<email>schmid@sse.uni-hildesheim.de</email>
							<affiliation key="aff0">
								<orgName type="department">Institut für Informatik</orgName>
								<orgName type="institution">Universität Hildesheim</orgName>
								<address>
									<addrLine>Marienburger Platz 22</addrLine>
									<postCode>D-31141</postCode>
									<settlement>Hildesheim</settlement>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Verteilte Evolution von Softwareproduktlinien: Herausforderungen und ein Lösungsansatz</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">88D41B827D069A6236EF96F9DCBE0583</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T23:31+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><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></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="de">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Einleitung</head><p>Im Laufe der letzten 10-15 Jahre ist die Entwicklung von Software in Form einer Produktlinie für die meisten Unternehmen zum Normalfall der Softwareentwicklung geworden. Das heißt, eine Menge von Systemen wird in integrierter Weise mit Hilfe gemeinsamer Komponenten entwickelt. Dies geschieht vor allem, um die Entwicklungszeit zu verkürzen und die Kosten zu verringern <ref type="bibr" target="#b6">[LSR07,</ref><ref type="bibr" target="#b3">CN01]</ref>. Betrachtet man also das Problem der Softwareevolution und insbesondere der Legacy Systeme aus dem Blickwinkel der softwareentwickelnden Organisationen, so macht es Sinn das Problem im Zusammenhang mit der Evolution von Produktlinien insgesamt zu betrachten.</p><p>Das Problem der Produktlinienevolution ist aus den folgenden Gründen eine echte Obermenge der Evolution von Einzelsystemen:</p><p>• Es umfasst alle Problematiken der Evolution von Einzelsystemen, den jedes einzelne System kann jeweils zum Legacy-System werden.</p><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>Auf Grund dieser Herausforderungen gibt es aktuell noch keine zufriedenstellenden Lösungen für die Produktlinienevolution.</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></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Produktlinienevolution</head><p>In diesem Abschnitt führen wir die wesentlichen Begriffe der Produktlinienentwicklung ein und diskutieren die Herausforderungen der Produktlinienevolution genauer.  • Zu den aufgeführten Änderungstypen kommen noch Spezialformen, wie beispielsweise die Veränderung der Auswahlmöglichkeiten, die Änderung von Abhängigkeiten, usw.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1">Produktlinienentwicklung</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2">Evolution von Produktlinien</head><note type="other">Im</note><p>Eine Übersicht gibt Abbildung 2. Eine detaillierte Diskussion ist in [SE07] gegeben. • 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></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.3">Ein Beispiel zur Produktlinienevolution</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Als Grundlage zur Diskussion von</head><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></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Lösungsansatz</head><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.<ref type="foot" target="#foot_0">1</ref> </p><p>• 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.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1">Charakteristika des Ansatzes</head><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. 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><p>Ein Featurebundle besteht aus:</p><p>• Einem Variabilitätsmodellfragment</p><p>• Allen dazugehörigen (also durch das Variabilitätsmodellfragment) beeinflussten Anforderungen</p><p>• Allen dazugehörigen Architekturelementen • Welche Arten der Zerlegung von Variabilitätsmodellen sollen unterstützt werden?</p><p>•  </p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>o</head><label></label><figDesc>Abbildung 1: Notation und Beispiel für einen Featurebaum</figDesc><graphic coords="3,124.92,152.28,347.04,86.76" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>•</head><label></label><figDesc>Abbildung 4: Beziehung zwischen Variabilitätsmodell und Entwicklungsartefakten</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head></head><label></label><figDesc>Abbildung 5: Variabilitätsmodell mit Feature Bundles</figDesc><graphic coords="10,166.02,192.42,65.34,68.40" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0"><head></head><label></label><figDesc></figDesc><graphic coords="4,126.54,148.86,342.44,258.84" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head></head><label></label><figDesc>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.</figDesc><table /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head></head><label></label><figDesc>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.</figDesc><table><row><cell>werden. Das</cell></row><row><cell>Variabilitätsmodell nennt dabei die möglichen Ausprägungen von Eigenschaften und</cell></row><row><cell>definiert insbesondere Abhängigkeiten zwischen diesen Eigenschaften. Verschiedene</cell></row><row><cell>Arten von Variabilitätsmodellen sind gebräuchlich. Am häufigsten werden sogenannte</cell></row><row><cell>Featuremodelle [KC+90, RSP03, CHE05a] verwendet, aber auch Entscheidungsmodelle</cell></row><row><cell>[SJ04] werden genutzt. Da die Darstellung von Featuremodellen -insbesondere in der</cell></row><row><cell>Form von Featurebäumen -sich besonders gut zur Erläuterung eignet, nutzen wir diese</cell></row><row><cell>Darstellungsweise hier. Es gibt verschiedene Varianten auch dieser Notation. Hier</cell></row><row><cell>nutzen wir eine Variante, die sich weitestgehend auf FODA [KC+90] stützt (vgl.</cell></row><row><cell>Abbildung 1). Dieses Modell unterstützt die Dekomposition einer Produktlinie in ihre</cell></row><row><cell>Bestandteile, die Auszeichnung sogenannter optionaler Features (diese können</cell></row></table><note>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</note></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head></head><label></label><figDesc>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 Zum Zeitpunkt t 3 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.</figDesc><table><row><cell>(a) Ausgangssituation</cell></row><row><cell>(b) Endsituation</cell></row><row><cell>Nun gibt es weitere Änderungen:</cell></row><row><cell>• Zum Zeitpunkt t 2 wird B1 aus einem gemeinsamen Feature in ein optionales</cell></row><row><cell>Feature überführt. Nach Aussage des Variabilitätsmodells sollte dies keinerlei</cell></row><row><cell>Auswirkungen auf die anderen Features haben -und insbesondere auf die</cell></row><row><cell>möglichen Varianten. Da jedoch zum Zeitpunkt t 1 B1 noch als verpflichtend</cell></row><row><cell>angenommen wurde, besteht eine gewisse Wahrscheinlichkeit, dass evtl.</cell></row><row><cell>Abhängigkeiten nicht dokumentiert sind. Auch erfordert die Integration von</cell></row></table><note>Abbildung 2: Übersicht über mögliche Evolutionsschritte für Produktlinien<ref type="bibr" target="#b8">[SE07]</ref>.dargestellt, die zu einem Zeitpunkt t 1 die Ausgangssituation darstellt. Nehmen wir jetzt folgende Änderungsanforderungen an: • 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. Abbildung 3: Ein einfaches Evolutionsbeispiel: Anfangs-und Endsituation Variabilitätsmechanismen weitergehende Implementierungsänderungen, die ebenfalls andere Features beeinflussen können. • In der Praxis lassen sich angesichts dieser Schwierigkeiten nun verschiedene Ansätze zur Produktlinienevolution beobachten: • 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. • 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. Dies sind nur Beispiele: insgesamt haben heutige Evolutionsänsätze eine Menge von Schwierigkeiten. Beispiele sind:</note></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_3"><head></head><label></label><figDesc>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.</figDesc><table /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_4"><head></head><label></label><figDesc>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.</figDesc><table><row><cell>Wie lässt sich eine Modularisierung (im Sinne einer Kapselung) der</cell></row><row><cell>Variabilitätsmodelle herstellen?</cell></row><row><cell>Die Kapselung und Zerlegung von Teilkonfigurationsmodellen ist heute in der Praxis</cell></row><row><cell>bereits bei Installations-und Updatewerkzeugen gebräuchlich. Jedoch wurde dies bisher</cell></row><row><cell>nur beschränkt theoretisch behandelt [SK09]. Da einzelne Systembestandteile von unter-</cell></row><row><cell>schiedlichen Entwicklungsorganisationen geliefert werden, wird dies oft nicht als</cell></row><row><cell>Produktlinienentwicklung wahrgenommen, jedoch kann ein solches Konfigurations-</cell></row><row><cell>problem weitestgehend einer verteilten Produktlinienentwicklung gleich gesetzt werden.</cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">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.</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<author>
			<persName><surname>Der Autor Möchte Hr</surname></persName>
		</author>
		<author>
			<persName><surname>Dr</surname></persName>
		</author>
		<author>
			<persName><surname>Hübner</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Hr. Keunecke und Hr. Brummermann für anregende Diskussion und die Darlegung der grundsätzlichen Evolutionsproblematik danken</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Formalizing cardinality-based feature models and their specialization</title>
		<author>
			<persName><forename type="first">K</forename><surname>Czarnecki</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Helsen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">U</forename><surname>Eisenecker</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Software Process: Improvement and Practice</title>
		<imprint>
			<biblScope unit="volume">10</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="7" to="29" />
			<date type="published" when="2005">2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Staged configuration through specialization and multi-level configuration of feature models</title>
		<author>
			<persName><forename type="first">K</forename><surname>Czarnecki</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Helsen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">U</forename><surname>Eisenecker</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Software Process Improvement and Practice</title>
		<imprint>
			<biblScope unit="volume">10</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="143" to="169" />
			<date type="published" when="2005">2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<title level="m" type="main">Software Product Lines: Practices and Patterns</title>
		<author>
			<persName><forename type="first">P</forename><surname>Clements</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Northrop</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2001">2001</date>
			<publisher>Addison-Wesley</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Supporting the Evolution of Product Line Architectures with Variability Model Fragments</title>
		<author>
			<persName><forename type="first">D</forename><surname>Dhungana</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Neumayer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Gruenbacher</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Rabiser</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Seventh Working IEEE/IFIP Conference on Software Architecture (WICSA</title>
				<imprint>
			<date type="published" when="2008">2008. 2008</date>
			<biblScope unit="page" from="327" to="330" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<title level="m" type="main">Feature-Oriented Domain Analysis (FODA) Feasibility Study</title>
		<author>
			<persName><forename type="first">K</forename><surname>Kang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Cohen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Hess</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Novak</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Peterson</surname></persName>
		</author>
		<idno>CMU/SEI-90-TR-21</idno>
		<imprint>
			<date type="published" when="1990">1990</date>
		</imprint>
		<respStmt>
			<orgName>Software Engineering Institute</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Technical Report</note>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<title level="m" type="main">Product Lines in Action</title>
		<author>
			<persName><forename type="first">F</forename><surname>Van Der Linden</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Schmid</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Rommes</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2007">2007</date>
			<publisher>Springer Verlag</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Modeling variability for object-oriented product lines</title>
		<author>
			<persName><forename type="first">M</forename><surname>Riebisch</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Streitferdt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Pashov</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ECOOP Workshops</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2003">2003</date>
			<biblScope unit="volume">3013</biblScope>
			<biblScope unit="page" from="165" to="178" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">A Requirements-Based Taxonomy of Software Product Line Evolution</title>
		<author>
			<persName><forename type="first">K</forename><surname>Schmid</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Eichelberger</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Third International ERCIM Symposium on Software Evolution (Software Evolution</title>
				<meeting>the Third International ERCIM Symposium on Software Evolution (Software Evolution</meeting>
		<imprint>
			<date type="published" when="2007-10">2007. Oktober 2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Model-Based Implementation of Meta-Variability Constructs: A Case Study using Aspects, Second International Workshop on Variability Modeling of Soft-ware-Intensive Systems</title>
		<author>
			<persName><forename type="first">K</forename><surname>Schmid</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Eichelberger</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ICB-Research Report No</title>
		<idno type="ISSN">1860- 2770</idno>
		<imprint>
			<biblScope unit="volume">22</biblScope>
			<biblScope unit="page" from="63" to="71" />
			<date type="published" when="2008">2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">A Customizable Approach to Full Lifecycle Variability Management</title>
		<author>
			<persName><forename type="first">K</forename><surname>Schmid</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>John</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Science of Computer Programming</title>
		<imprint>
			<biblScope unit="volume">53</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="259" to="284" />
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">An Analysis of Existing Software Configuration Systems</title>
		<author>
			<persName><forename type="first">K</forename><surname>Schmid</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Kröher</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Third International Workshop on Dynamic Software Product Lines (DSPL 2009) at the Software Product Line Conference</title>
				<imprint>
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Feature Diagrams: A Survey and a Formal Semantics</title>
		<author>
			<persName><forename type="first">P</forename><surname>Schobbens</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Heymans</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Trigaux</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">14th Requirements Engineering Conference (RE&apos;06)</title>
				<imprint>
			<date type="published" when="2006">2006</date>
			<biblScope unit="page" from="139" to="148" />
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
