<?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">Quelltextannotationen für stilbasierte Ist-Architekturen</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Petra</forename><surname>Becker-Pechau</surname></persName>
							<affiliation key="aff0">
								<orgName type="department" key="dep1">Arbeitsbereich Softwaretechnik</orgName>
								<orgName type="department" key="dep2">WPS GmbH</orgName>
								<orgName type="institution">Universität Hamburg</orgName>
								<address>
									<addrLine>C1, Vogt-Kölln-Straße 30</addrLine>
									<postCode>22527</postCode>
									<settlement>Hamburg</settlement>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Quelltextannotationen für stilbasierte Ist-Architekturen</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">8DCBAFD430A865C86F54CFDACE8F408A</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>Langlebige Softwaresysteme müssen vielfach an sich ändernde Bedingungen angepasst werden. Dabei sollte jederzeit Klarheit über den aktuellen Zustand der Softwarearchitektur bestehen. Dieser Artikel präsentiert einen Ansatz, Quelltexte so mit Architekturinformationen anzureichern, dass die aktuelle Ist-Architektur alleine aus dem annotierten Quelltext extrahiert werden kann. Da Architekturstile die kontrollierte Evolution von Softwaresystemen unterstützen, betrachtet dieser Artikel stilbasierte Architekturen.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="de">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Motivation</head><p>Die Ist-Architektur von Softwaresystemen muss bekannt sein, um die Systeme kontrolliert ändern zu können. Nur, wenn die Ist-Architektur bekannt ist, kann sichergestellt werden, dass Änderungen sich an die geplante Architektur halten. Und nur, wenn die Ist-Architektur bekannt ist, können Entwicklungsteams ihre Systeme auf der abstrakteren Ebene der Architektur verstehen, kommunizieren und planen, ohne die Details des Quelltextes betrachten zu müssen. Doch die Ist-Architektur ist nicht eindeutig im Quelltext zu finden <ref type="bibr" target="#b14">[RH09]</ref>. Das Problem lässt sich anhand eines Beispiels verdeutlichen. • Wir zeigen auf, welche Anteile der Ist-Architektur aus dem Quelltext entnommen werden können und welche zusätzlichen Informationen benötigt werden (siehe Abschnitt 3).</p><note type="other">Unser</note><p>• Da Architekturstile für langlebige Softwaresysteme besonders relevant sind (siehe Abschnitt 2), diskutieren wir darüber hinaus, welche zusätzlichen Informationen für stilbasierte Ist-Architekturen notwendig sind (siehe Abschnitt 3).</p><p>• Wir zeigen, an welchen Stellen im Quelltext welche Architekturinformationen ein-gefügt werden müssen. (Abschnitt 4).</p><p>• Abschnitt 5 präsentiert eine beispielhafte Umsetzung mit Java-Annotations. Mit Hilfe eines Prototyps, der die stilbasierte Ist-Architektur von Softwaresystemen ermittelt, konnten wir die Machbarkeit unseres Ansatzes zeigen.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Hintergrund</head><p>Um den fachlichen Hintergrund zu verdeutlichen, diskutiert dieser Abschnitt die Bedeutung von Architekturstilen für langlebige Softwaresysteme und gibt einen kurzen Überblick über die grundlegenden Begriffe.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1">Bedeutung von Architekturstilen für langlebige Softwaresysteme</head><p>Architekturstile machen Aussagen darüber, wie Software-Architekturen prinzipiell strukturiert werden sollen <ref type="bibr" target="#b14">[RH09]</ref>.   • die Menge der Architekturelemente E,</p><p>• eine Relation B I ⊆ E × E, die die bestehende Abhängigkeitsbeziehung zwischen diesen Architekturelementen beschreibt (kurz "Ist-Beziehungen"),</p><p>• die Relation Z A ⊆ E ×A, mit der die Architekturelemente den Architekturelementarten zugeordnet werden. Diese Relation ist rechtseindeutig.</p><p>Darüber hinaus wird die Menge A der Architekturelementarten benötigt, um Z A definieren zu können. Die Architekturelementarten ergeben sich aus dem gewählten Architekturstil. Im oben genannten WAM-Stil beispielsweise stehen unter anderem die Architekturelementarten Werkzeug und Material zur Verfügung.</p><p>Stilbasierte Ist-Architekturen werden soweit möglich direkt aus dem Quelltext berechnet. Dafür wird die Quelltextstruktur benötigt. Diese umfasst Folgendes:</p><formula xml:id="formula_0">• die Menge der Quelltextelemente Q, • eine Relation B Q ⊆ Q × Q, die die bestehende Abhängigkeitsbeziehung zwischen diesen Quelltextelementen beschreibt.</formula><p>Die stilbasierte Ist-Architektur und die Quelltextstruktur hängen zusammen, indem die Quelltextelemente den Architekturelementen in der folgenden Relation zugeordnet werden: </p><formula xml:id="formula_1">• die Relation Z Q ⊆ Q × E legt</formula><formula xml:id="formula_2">(p, q) ∈ B Q ∧ (p, e) ∈ Z Q ∧ (q, f ) ∈ Z Q }.</formula><p>Das heißt, wenn zwei Quelltextelemente p und q in Beziehung stehen, gibt es eine Beziehung in der Ist-Architektur zwischen den Architekturelementen e und f, sofern p und e sowie q und f einander zugeordnet sind.</p><p>Die Zuordnungen Z Q und Z A sowie die Menge der Architekturelemente E müssen zusätzlich beschrieben werden, sie sind dem reinen Quelltext nicht zu entnehmen.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Ein Konzept zur Quelltextannotation</head><p>Dieser Abschnitt behandelt die Frage, wie Z Q , Z A und E durch Quelltextannotation beschrieben werden können. Betrachten wir unser Beispiel in Abbildung 3. Es gilt für das Architekturelement namens Patientenaufnehmer:</p><p>• (P atientenAuf nahmeT oolGui, P atientenauf nehmer) ∈ Z Q</p><p>• (P atientenAuf nahmeT ool, P atientenauf nehmer) ∈ Z Q</p><p>• (P atientenauf nehmer, W erkzeug) ∈ Z A Damit die Annotationen mit dem Quelltext einfach konsistent gehalten werden können, sollten sie in dem jeweils betroffenen Quelltextelement festgehalten werden. Das heißt in unserem Beispiel: in den beiden Klassen PatientenAufnahmeToolGui und PatientenAufnahmeTool wird die Information benötigt "diese Klasse gehört zu dem Werkzeug namens Patientenaufnehmer". Quelltextelemente werden annotiert mit dem zugehörigen Architekturelement und dessen Elementart. Formal dargestellt heißt das:</p><p>• annotiert werden alle Quelltextelemente q, für die gilt: ∃(q, e) ∈ Z Q .</p><p>• Die Annotation umfasst erstens das Architekturelement e, für das gilt: (q, e) ∈ Z Q ,</p><p>• und zweitens die Elementart a, für die gilt: (e, a) ∈ Z A .</p><p>In  • Wir betrachten Architekturen, die auf Architekturstilen beruhen. Solche stilbasierten Architekturen spielen insbesondere für langlebige Softwaresysteme eine große Rolle.</p><p>• Wir nutzen die bestehenden Annotationsmöglichkeiten der Programmiersprache Java, um zusätzliche Informationen über die statische Architektur in den Quelltext zu bringen. Dadurch können bestehende Systeme von unserem Ansatz profitieren, ohne auf eine andere Sprache umsteigen zu müssen.</p><p>Der Ansatz, den Quelltext mit Architekturinformationen anzureichern, bietet verschiedene Vorteile:</p><p>• Entwicklungsteams können auf diese Weise ihre Intention bezüglich der Architektur direkt bei der Entwicklung festhalten.</p><p>• Es ist ein pragmatischer Ansatz. Dadurch, dass die Architekturinformationen direkt im Quelltext festgehalten werden, wird es einfacher, die Konsistenz dieser Informationen zum Quelltext zu wahren.</p><p>• Entwicklungsumgebungen können erweitert werden, so dass dem Entwicklungsteam während der Programmierung eine Architektursicht auf den Quelltext gegeben wird.</p><p>Wir zeigen eine beispielhafte Umsetzung mit Java-Annotations. Wir haben einen Prototyp erstellt, den ArchitectureExtractor. Mit ihm wurden mehrere annotierte Quelltexte untersucht und erfolgreich die stilbasierten Ist-Architekturen extrahiert. Unser Prototyp beinhaltet bisher nur eine sehr einfache Darstellung der extrahierten Architektur, wir planen, einen entsprechenden ArchitectureViewer zu ergänzen und zu evaluieren, um eine gute Architektursicht direkt zum Programmierzeitpunkt zu bieten.</p><p>Unser Ansatz ist für statisch getypte Sprachen geeignet, da die Abhängigkeitsbeziehungen der Ist-Architektur durch statische Analyse aus dem Quelltext gewonnen werden. Wie andere Ansätze zur Quelltextannotation ist auch unser Ansatz darauf angewiesen, dass korrekt annotiert wird. Dass Entwickler tatsächlich ihre Intention in den Quelltext schreiben, lässt sich selbstverständlich nicht sicherstellen. Die im Abschnitt 6 vorgestellten verwandten Arbeiten diskutieren dieses Thema nicht. Wir vermuten jedoch, dass durch Werkzeugunterstützung fehlerhafte Annotationen reduziert werden könnten. Wird beispielsweise eine annotierte Klasse umbenannt oder durch Kopieren erzeugt, so könnte ein "Dirty-Flag" den Entwickler darauf hinweisen, dass die zugehörige Annotation möglicherweise überarbeitet werden muss. Hierfür planen wir, den ArchitectureExtractor in laufenden Projekten einzusetzen, um mögliche Fehlerquellen zu identifizieren und unterstützende Ansätze wie das Dirty-Flag zu evaluieren.</p><p>Die praktischen Untersuchungen haben gezeigt, dass nur einige Klassen als architekturrelevant eingestuft werden und annotiert werden müssen. Da die Annotationen die Intention der Entwickler beschreiben, liegt es bei ihnen, zu entscheiden, ob sie ein Quelltextelement annotieren, genauso, wie sie vorher entscheiden mußten, welche Kommentare sie schreiben. Fehlerhafte Annotationen können -genauso wie fehlerhafte Kommentare -nur durch zustätzliche Maßnahmen, wie beispielsweise Code-Reviews, aufgedeckt werden. Unser Ansatz bietet den Vorteil, dass die Architektur nicht manuell anhand der Quelltextkommentare verstanden werden muss, sondern automatisiert extrahiert werden kann.</p><p>Wir haben den hier präsentierten Ansatz bereits erweitert, um auch hierarchische Architekturen behandeln zu können. Wir planen, diesen erweiterten Ansatz weiter zu evaluieren und zu veröffentlichen.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Literatur</head><p>[AAA09] Marwan Abi-Antoun und Jonathan Aldrich. Static extraction of sound hierarchical runtime object graphs. In TLDI '09: Proceedings of the 4th international workshop on Types in language design and implementation, Seiten 51-64, New York, NY, USA, 2009. ACM.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head></head><label></label><figDesc>Abbildung 1: Klassendiagramm</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Stilbasierte</head><label></label><figDesc>Abbildung 4: Stilbasierte Software-Architektur (Beispiel) Architekturstile bewegen sich auf einer Metaebene zur Architektur, sie legen fest, aus welchen Architekturelementarten eine Architektur bestehen soll und definieren Regeln für Architekturelemente abhängig von ihrer Elementart. Um die stilbasierte Ist-Architektur zu ermitteln, müssen die Elementarten des zugehörigen Stils bekannt sein. Abbildung 5 zeigt ein Metamodell für stilbasierte Architekturen im Zusammenhang mit den Architekturelementarten. Formal verstehen wir unter einer stilbasierten Architektur eine Architektur, deren Architekturelemente einer Elementart zugeordnet sind.</figDesc><graphic coords="4,262.00,495.05,71.43,88.26" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head></head><label></label><figDesc>Abbildung 6 zeigt das gesamte Metamodell für die Quelltextstruktur und die stilbasierte Ist-Architektur. Alle Informationen dieses Metamodells werden benötigt, um die stilbasierte Ist-Architektur eines Softwaresystems zu berechnen.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head></head><label></label><figDesc>Abbildung 7: Definition der Java-Annotation für die Architekturelement-Art "Werkzeug"</figDesc><graphic coords="8,119.13,555.11,357.17,62.81" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head>•</head><label></label><figDesc>Ist die Architektur hingegen dokumentiert, so kann versucht werden, anhand der Dokumentation und des Quelltextes die Ist-Architektur zu rekonstruieren. In diesem Fall ist die Intention der Entwickler zumindest teilweise verfügbar. In der Praxis gibt es einige Stolpersteine. Es ist schwierig, die Dokumentation jederzeit konsistent zum Quelltext zu halten. Hinzu kommt, dass die Dokumentation meist informeller Natur ist, sie muss interpretiert werden. Stattdessen wird bereits bei der Entwicklung direkt im Quelltext vermerkt, wie die Quelltextelemente aus Architektursicht einzuordnen sind. Details stellen die Abschnitte 4 und 5 vor. Dieser Ansatz hat den Vorteil, dass die Intention der Entwickler direkt bei der Programmierung festgehalten wird. Natürlich ist auch hier nicht komplett sicherzustellen, dass immer korrekt annotiert wird, aber die Gefahr, dass die Architektur-Dokumentation und der Quelltext auseinanderlaufen, ist geringer. Informationen über den Entwurf in den Quelltext zu bringen, ist nicht vollständig neu, jedoch für Architekturinformationen noch nicht sehr verbreitet. Der Ansatz gewinnt jedoch an Bedeutung (siehe Abschnitt 6). Neu an unserem Ansatz ist, dass wir es ermöglichen, stilbasierte Ist-Architekturen aus annotiertem Quelltext zu extrahieren. Stilbasierten Ist-Architekturen helfen das System zu verstehen und weiterzuentwickeln, darüber hinaus dienen sie als Basis für Konformanzprüfungen [BP09]. Dieser Abschnitt enthält die formale Definition für stilbasierte Ist-Architekturen. Das Metamodell für stilbasierte Architekturen zeigt bereits die Abbildung 5. Der Begriff der stilbasierten Ist-Architektur wurde im Zusammenhang mit der stilbasierten Architekturprüfung [BP09] eingeführt. Die für diesen Artikel relevanten Aspekte werden hier kurz wiederholt. Formal umfasst eine stilbasierte Ist-Architektur folgende Mengen und Relationen:</figDesc><table><row><cell>3 Stilbasierte Ist-Architekturen</cell></row><row><cell>3.1 Formale Definition</cell></row></table><note>• Sind noch Mitglieder des Entwicklungsteams verfügbar, so können diese nach ihrer ursprünglichen Intention gefragt werden. Doch gerade bei langlebigen Softwaresystemen ist es unrealistisch zu erwarten, dass die Entwickler beispielsweise für jede Klasse noch wissen, zu welchem Architekturelement sie gehören sollte. Auch ist sich das Entwicklungsteam nicht immer einig. In der Praxis treten diese Ansätze meist gemischt auf. Wird beispielsweise die Ist-Architektur für eine Architektur-Konformanzprüfung benötigt, so müssen die zusätzlich zum Quelltext benötigten Informationen manuell im Prüfungswerkzeug beschrieben werden. Dies ist beispielsweise der Fall bei der Sotograph-Familie [BKL04], SonarJ 1 , Lattix [SJSJ05] und Bauhaus 2 . Sofern noch Mitglieder des Entwicklungsteams verfügbar sind, so wird die Prüfung sicherlich von einem Mitglied durchgeführt oder unterstützt. Vorhandene Dokumentation wird genutzt, die Quelltextkommentare werden gelesen und es werden manuelle Heuristiken anhand von Bezeichnern und Quelltextstruktur verwendet. Wird das weiterentwickelte System mit demselben Werkzeug später erneut geprüft, so kann die in das Werkzeug eingegebene Beschreibung wiederverwendet werden. Wurde die Architektur des Systems jedoch geändert oder erweitert, so muss gegebenenfalls auch die Beschreibung manuell geändert werden. Mit unserem Ansatz lassen sich stilbasierte Ist-Architekturen, wie in Abbildung 4, aus annotiertem Quelltext berechnen. Soll zu einem mit unserem Ansatz annotierten System die Ist-Architektur berechnet werden, so werden keine Heuristen benötigt, keine externe Dokumentation. Es ist nicht nötig, Mitglieder des Entwicklungsteams zu befragen.</note></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head></head><label></label><figDesc>Um die Machbarkeit des Ansatzes zu zeigen, haben wir den ArchitectureExtractor bisher für sechs Softwaresysteme verwendet, in der Größenordnung von 25.000 bis gut 100.000 LOC. Die Systeme folgten entweder dem WAM-Stil oder hatten einen speziell für das Projekt entworfenen, individuellen Stil. Die bereits existierenden Systeme wurden von einer projektexternen Person um Quelltextannotationen ergänzt. Die Person stützte sich dabei auf ihre guten Kenntnisse des Stils und auf Quelltextkommentare. Eine vollständige, externe Dokumentation der Architekturen existierte nicht, dazu waren die Architekturen zu feingranular, solch eine Dokumentation wäre zu schnell veraltet. Die Ergebnisse wurden mit WAM-Experten und Projektmitgliedern besprochen. Die befragten Personen bestätigten, dass die extrahierte Ist-Architektur aus ihrer Sicht hilfreich ist, da so ohne zusätzlichen Aufwand für externe Dokumentation ein Blick auf die Architektur ermöglicht wird, der sonst durch die Details des Quelltextes überdeckt wird. Die Quelltextannotationen verursachen nach unserer Einschätzung kaum zusätzlichen Aufwand, da vorher genau dieselben Informationen natürlichsprachlich dokumentiert werden mußten. Architekturinformation im Quelltext unterzubringen, wird in der letzten Zeit vermehrt gefordert. Koschke und Popescu beispielsweise vergleichen verschiedene Ansätze zur Architektur-Konformanzprüfung [KP07]. Dabei kommen sie zu der Überzeugung, dass es einfacher wäre, den Quelltext und die Architekturinformationen konsistent zu halten, wenn man Architekturelemente im Quelltext kennzeichnen könnte. Clements und Shaw schreiben, dass manche Architekturinformationen im Quelltext nicht zu finden sind und nennen Schichtenarchitekturen als Beispiel [CS09]. Sie beklagen, dass bestehende Architekturanalyse-Werkzeuge nicht adäquat seien, da sie sich auf Vermutungen über Architekturkonstrukte stützen müssen. Sie sind der Meinung, dass Architektur-Markierungen im Quelltext helfen würden. Diese Forschungsrichtung betrachten sie als eine der drei vielversprechendsten für Softwarearchitekturen. Keiner der im Folgenden präsentierten Ansätze betrachtet stilbasierte Architekturen. Unseres Wissens sind wir die ersten, die im Quelltext Architekturinformationen unterbringen, bei denen der Zusammenhang zum gewählten Architekturstil explizit hergestellt wird. Abi-Antoun und Aldrich extrahieren Objektgrafen durch statische Analyse aus speziell annotierten Quelltexten [AAA09]. Für die Annotationen nutzen sie Java-Generics. Direkt bei der Programmierung kann das Entwicklungsteam Architekturinformationen im Quelltext unterbringen. Die Autoren nennen als Vorteil, dass so der extrahierten Architektur die Intention des Entwicklungsteams zugrunde liegt und nicht eine beliebige Heuristik des genutzten Analyse-Werkzeugs. Genau das trifft auch für unseren Ansatz zu und ist der Hauptgrund, dass wir uns mit Quelltextannotationen beschäftigen. Im Gegensatz zu Abi-Antoun und Aldrich extrahieren wir jedoch keinen Objektgrafen, sondern betrachten die statische Sicht.Einer der mittlerweile älteren und mehrfach zitierten Ansätze, Quelltexte mit Architekturinformationen anzureichern, behandelt ebenfalls die Laufzeitsicht<ref type="bibr" target="#b13">[LR03]</ref>. Die Sprache Java wird um Subsysteme und Tokens erweitert. Eine Klasse kann einem Subsystem angehören, wenn ein Objekt erzeugt wird, so kann ihm ein Token gegeben werden. Lam und Rinard erzeugen mit Hilfe dieser Informationen Objektgrafen und ermitteln den Zusammenhang zwischen Subsystemen und Objekten. Sie heben hervor, dass ihre Modelle nicht manuell, sondern automatisch nur anhand des annotierten Quelltextes generiert werden und somit die Programmstruktur garantiert akkurat reflektieren.Aldrich beschäftigt sich, wie wir, mit der statischen Sicht von Softwarearchitekturen<ref type="bibr" target="#b1">[Ald08]</ref>. Er ergänzt die Sprache Java um sogenannte Komponenten-Klassen. Die Spracherweiterung ist eine Weiterentwicklung von ArchJava<ref type="bibr" target="#b0">[ACN02]</ref>. Komponenten-Klassen können Ports definieren, über die sie sich verbinden lassen. Sie können hierarchisch geschachtelt werden. Ein mit solchen Komponentenklassen strukturierter Quelltext kann auf bestimmte Architektureigenschaften geprüft werden. Im Gegensatz zu unserem Ansatz mit Java-Annotations ist es nicht möglich, normale Java-Klassen als Architekturelemente zu kennzeichnen. Zwar nimmt Aldrich als Beispiel eine Pipes-and-Filters-Architektur, Stilinformationen können mit seiner Spracherweiterung jedoch nicht annotiert werden.</figDesc><table><row><cell>6 Verwandte Arbeiten</cell></row></table><note>7 Zusammenfassung, Diskussion und AusblickDieser Artikel präsentiert einen Ansatz, der es erlaubt, stilbasierte Ist-Architekturen aus annotierten Quelltexten zu extrahieren. Einige Informationen über Ist-Architekturen lassen sich aus dem reinen Quelltext extrahieren. Doch nicht alle Architekturkonstrukte sind hier wiederzufinden, einige verschwinden, sobald ein Architekturentwurf in Quelltext umgesetzt wird. Damit Werkzeuge nicht darauf angewiesen sind, die Architekturkonstrukte im Quelltext zu "erraten", benötigen sie weitere Informationen, die wir durch Quelltextannotation hinzufügen. Neu an unserem Ansatz ist:</note></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">www.hello2morrow.com</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="2" xml:id="foot_1">www.bauhaus-stuttgart.de</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">ArchJava: Connecting Software Architecture to Implementation</title>
		<author>
			<persName><forename type="first">Jonathan</forename><surname>Aldrich</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Craig</forename><surname>Chambers Und</surname></persName>
		</author>
		<author>
			<persName><forename type="first">David</forename><surname>Notkin</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ICSE &apos;02: Proceedings of the 24th International Conference on Software Engineering</title>
				<meeting><address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2002">2002</date>
			<biblScope unit="page" from="187" to="197" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Using Types to Enforce Architectural Structure</title>
		<author>
			<persName><forename type="first">Jonathan</forename><surname>Aldrich</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">WICSA &apos;08</title>
				<meeting><address><addrLine>Washington, DC, USA</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE Computer Society</publisher>
			<date type="published" when="2008">2008</date>
			<biblScope unit="page" from="211" to="220" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Software Architecture in Practice</title>
		<author>
			<persName><forename type="first">Len</forename><surname>Bass</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Paul</forename><surname>Clements Und</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Rick</forename><surname>Kazman</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">SEI Series in Software Engineering</title>
				<meeting><address><addrLine>Reading, Mass</addrLine></address></meeting>
		<imprint>
			<publisher>Addison-Wesley</publisher>
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Sotograph -A Pragmatic Approach to Source Code Architecture Conformance Checking</title>
		<author>
			<persName><forename type="first">Walter</forename><surname>Bischofberger</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jan</forename><surname>Kühl Und</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Silvio</forename><surname>Löffler</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">EWSA 2004</title>
				<editor>
			<persName><forename type="first">F</forename><surname>Oquendo</surname></persName>
		</editor>
		<meeting><address><addrLine>Berlin Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer-Verlag</publisher>
			<date type="published" when="2004">2004</date>
			<biblScope unit="page" from="1" to="9" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<author>
			<persName><forename type="first">Petra</forename><surname>Becker-Pechau</surname></persName>
		</author>
		<title level="m">Angenommener Artikel auf der Informatik-Konferenz</title>
				<imprint>
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
	<note>Stilbasierte Architekturprüfung</note>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">The Golden Age of Software Architecture&quot; Revisited</title>
		<author>
			<persName><forename type="first">Paul</forename><surname>Clements</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Mary</forename><surname>Shaw</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Software</title>
		<imprint>
			<biblScope unit="volume">26</biblScope>
			<biblScope unit="issue">4</biblScope>
			<biblScope unit="page" from="70" to="72" />
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Exploiting style in architectural design environments</title>
		<author>
			<persName><forename type="first">David</forename><surname>Garlan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Robert</forename><surname>Allen Und</surname></persName>
		</author>
		<author>
			<persName><forename type="first">John</forename><surname>Ockerbloom</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">SIGSOFT &apos;94: Proceedings of the 2nd ACM SIGSOFT symposium on Foundations of software engineering</title>
				<meeting><address><addrLine>USA</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="1994">1994</date>
			<biblScope unit="page" from="175" to="188" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<title level="m" type="main">An Introduction to Software Architecture</title>
		<author>
			<persName><forename type="first">David</forename><surname>Garlan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Mary</forename><surname>Shaw</surname></persName>
		</author>
		<idno>Bericht CS-94- 166</idno>
		<imprint>
			<date type="published" when="1994">1994</date>
		</imprint>
		<respStmt>
			<orgName>Carnegie Mellon University</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<title level="m" type="main">Applied Software Architecture. Object technology series</title>
		<author>
			<persName><forename type="first">Christine</forename><surname>Hofmeister</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Robert</forename><surname>Nord Und</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Dilip</forename><surname>Soni</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2000">2000</date>
			<publisher>Addison-Wesley</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Analyzing architectural styles with alloy</title>
		<author>
			<persName><forename type="first">Jung</forename><surname>Soo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Kim</forename></persName>
		</author>
		<author>
			<persName><forename type="first">David</forename><surname>Garlan</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the ISSTA 2006 workshop on Role of software architecture for testing and analysis</title>
				<meeting>the ISSTA 2006 workshop on Role of software architecture for testing and analysis<address><addrLine>Portland, Maine</addrLine></address></meeting>
		<imprint>
			<publisher>ACM Press</publisher>
			<date type="published" when="2006">2006</date>
			<biblScope unit="page" from="70" to="80" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">A Comparison of Static Architecture Compliance Checking Approaches</title>
		<author>
			<persName><forename type="first">Jens</forename><surname>Knodel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Daniel</forename><surname>Popescu</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Sixth Working IEEE/IFIP Conference on Software Architecture (WICSA&apos;07)</title>
				<meeting>the Sixth Working IEEE/IFIP Conference on Software Architecture (WICSA&apos;07)</meeting>
		<imprint>
			<publisher>IEEE Computer Society</publisher>
			<date type="published" when="2007">2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">The 4+1 View Model of Architecture</title>
		<author>
			<persName><forename type="first">P</forename><surname>Kruchten</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Software</title>
		<imprint>
			<biblScope unit="volume">12</biblScope>
			<biblScope unit="issue">6</biblScope>
			<biblScope unit="page" from="42" to="50" />
			<date type="published" when="1995">1995</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<monogr>
		<author>
			<persName><forename type="first">Carola</forename><surname>Lilienthal</surname></persName>
		</author>
		<title level="m">Komplexität von Softwarearchitekturen -Stile und Strategien</title>
				<imprint>
			<publisher>Dissertation</publisher>
			<date type="published" when="2008">2008</date>
			<biblScope unit="page">7</biblScope>
		</imprint>
		<respStmt>
			<orgName>Universität Hamburg</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">A Type System and Analysis for the Automatic Extraction and Enforcement of Design Information</title>
		<author>
			<persName><forename type="first">Patrick</forename><surname>Lam</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Martin</forename><surname>Rinard</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 17th European Conference on Object-Oriented Programming</title>
				<meeting>the 17th European Conference on Object-Oriented Programming</meeting>
		<imprint>
			<date type="published" when="2003">2003</date>
			<biblScope unit="page" from="275" to="302" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<monogr>
		<author>
			<persName><forename type="first">Ralf</forename><surname>Reussner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Wilhelm</forename><surname>Hasselbring</surname></persName>
		</author>
		<title level="m">Handbuch der Software-Architektur</title>
				<meeting><address><addrLine>Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>verlag</publisher>
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
	<note>Jgg. 2. dpunkt</note>
</biblStruct>

<biblStruct xml:id="b15">
	<monogr>
		<author>
			<persName><forename type="first">Johannes</forename><surname>Siedersleben</surname></persName>
		</author>
		<title level="m">Moderne Softwarearchitektur: Umsichtig planen, robust bauen mit Quasar</title>
				<meeting><address><addrLine>Heidelberg</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
	<note>dpunkt.verlag</note>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Using dependency models to manage complex software architecture</title>
		<author>
			<persName><forename type="first">Neeraj</forename><surname>Sangal</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Ev</forename><surname>Jordan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Vineet</forename><surname>Sinha Und</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Daniel</forename><surname>Jackson</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 20th annual ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications</title>
				<meeting>the 20th annual ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications<address><addrLine>San Diego, CA, USA</addrLine></address></meeting>
		<imprint>
			<publisher>ACM Press</publisher>
			<date type="published" when="2005">2005</date>
			<biblScope unit="page" from="167" to="176" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<monogr>
		<title level="m" type="main">Object-Oriented Construction Handbook</title>
		<author>
			<persName><forename type="first">Heinz</forename><surname>Züllighoven</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2005">2005</date>
			<publisher>Morgan Kaufmann Publishers</publisher>
			<pubPlace>San Francisco</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

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