|
Geleitworte |
6 |
|
|
Vorwort |
8 |
|
|
Danksagung |
10 |
|
|
Hinweise fu?r den Leser |
12 |
|
|
Inhaltsverzeichnis |
14 |
|
|
1 Grundlagen |
22 |
|
|
1.1 Warum Softwarearchitektur? |
23 |
|
|
1.2 Was ist Softwarearchitektur? |
25 |
|
|
1.2.1 Definition von Softwarearchitektur |
25 |
|
|
1.2.2 Ziele und Aufgaben von Softwarearchitektur |
32 |
|
|
1.2.3 Wodurch wird Softwarearchitektur beeinflusst? |
37 |
|
|
1.3 Bedeutung von Softwarearchitektur |
39 |
|
|
1.3.1 Symptome bei fehlender Softwarearchitektur |
41 |
|
|
1.4 Zusammenfassung |
42 |
|
|
2 Softwarearchitektur in der Organisationsstruktur |
44 |
|
|
2.1 Wechselwirkungen zwischen Architektur und Unternehmen |
44 |
|
|
2.2 Die Rolle des Softwarearchitekten |
46 |
|
|
2.2.1 Allgemeine Eigenschaften und Aufgaben |
48 |
|
|
2.2.2 Aufgaben im Entwicklungsprojekt |
50 |
|
|
2.2.3 Das Architekturteam |
58 |
|
|
2.3 Zusammenspiel von Softwarearchitektur und Projektmanagement |
62 |
|
|
2.3.1 Bedeutung von Softwarearchitektur für das Projektmanagement |
62 |
|
|
2.3.2 Das Führungsteam aus Projektleiter und Softwarearchitekt |
69 |
|
|
2.4 Zusammenfassung |
72 |
|
|
3 Vorgehen |
76 |
|
|
3.1 Überblick |
77 |
|
|
3.2 Vorbereitungen für den Entwurf |
79 |
|
|
3.2.1 Anforderungsanalyse |
80 |
|
|
3.2.2 Einflussfaktoren |
83 |
|
|
3.3 Iterativ, inkrementeller Entwurf, Dokumentation und Bewertung |
84 |
|
|
3.3.1 Der erste Architekturentwurf |
85 |
|
|
3.3.2 Iterativ, inkrementelles Ausbauen des Entwurfs |
87 |
|
|
3.4 Die Umsetzung der Architektur |
88 |
|
|
3.5 Zusammenfassung |
89 |
|
|
4 Einflussfaktoren |
90 |
|
|
4.1 Bedeutung von Einflussfaktoren |
90 |
|
|
4.2 Arten von Einflussfaktoren |
93 |
|
|
4.2.1 Organisatorische Faktoren |
93 |
|
|
4.2.2 Technologische Faktoren |
94 |
|
|
4.2.3 Produktfaktoren |
95 |
|
|
4.2.4 Flexibilität, Veränderbarkeit und Einfluss |
98 |
|
|
4.3 Spezifikation von Einflussfaktoren |
98 |
|
|
4.3.1 Identifizieren und Präzisieren der Faktoren |
99 |
|
|
4.3.2 Analyse der Faktoren |
103 |
|
|
4.3.3 Identifizieren von Architekturthemen und Entwickeln von Strategien |
105 |
|
|
4.4 Zusammenfassung |
108 |
|
|
5 Entwurf von Softwarearchitekturen |
110 |
|
|
5.1 Entwurfsumfeld und wichtige Begriffe |
111 |
|
|
5.1.1 Entwurfsziele |
111 |
|
|
5.1.2 Entwurf und Komplexität |
113 |
|
|
5.1.3 Vorleistungen |
114 |
|
|
5.1.4 Allgemeine Aktivitäten beim Entwurf |
116 |
|
|
5.1.5 Fünf Kriterien für einen korrekten Entwurf |
118 |
|
|
5.2 Fundamentale Entwurfsprinzipien |
121 |
|
|
5.2.1 Abstraktion |
122 |
|
|
5.2.2 Kapselung |
123 |
|
|
5.2.3 Modularität |
124 |
|
|
5.2.4 Hierarchie |
125 |
|
|
5.2.5 Konzeptuelle Integrität |
126 |
|
|
5.3 Komponenten und Schnittstellen |
127 |
|
|
5.3.1 Komponenten - Grundbausteine der Architektur |
127 |
|
|
5.3.2 Schnittstellen - Vertragswerk der Softwarearchitektur |
131 |
|
|
5.3.3 Techniken zur Adaption von Komponenten |
132 |
|
|
5.4 Entwurfsschritte und Heuristiken |
133 |
|
|
5.4.1 Konkrete Entwurfsschritte |
134 |
|
|
5.4.2 Heuristiken |
139 |
|
|
5.5 Zusammenfassung |
144 |
|
|
6 Dokumentation |
146 |
|
|
6.1 Bedeutung der Dokumentation |
147 |
|
|
6.2 Anforderungen an eine Dokumentation |
148 |
|
|
6.2.1 Allgemeine Anforderungen an eine Projektdokumentation |
149 |
|
|
6.2.2 Anforderungen an Architekturbeschreibungen |
151 |
|
|
6.3 Bestandteile einer Architekturdokumentation |
153 |
|
|
6.3.1 Sichten eines Systems |
153 |
|
|
6.3.2 Zusammenspiel der Sichten |
155 |
|
|
6.3.3 Beschreibung des Aufbaus und Hilfestellungen |
155 |
|
|
6.3.4 Zusammenfassung |
156 |
|
|
6.4 Architektursichten |
156 |
|
|
6.4.1 Kontextsicht |
158 |
|
|
6.4.2 Struktursicht |
159 |
|
|
6.4.3 Verhaltenssicht |
160 |
|
|
6.4.4 Abbildungssicht |
160 |
|
|
6.4.5 Sichten in der Literatur |
161 |
|
|
6.5 UML 2 als Notation für Architektursichten |
164 |
|
|
6.5.1 UML-Überblick |
164 |
|
|
6.5.2 Darstellungsmöglichkeiten für die Kontextsicht |
167 |
|
|
6.5.3 Darstellungsmöglichkeiten für die Struktursicht |
172 |
|
|
6.5.4 Darstellungsmöglichkeiten für die Verhaltenssicht |
175 |
|
|
6.5.5 Darstellungsmöglichkeiten für die Abbildungssicht |
185 |
|
|
6.5.6 Beschreibungsmöglichkeiten für weitere Architekturaspekte |
187 |
|
|
6.5.7 UML Erweiterungsmechanismen zur Konsistenzsicherung |
191 |
|
|
6.6 Zusammenfassung |
193 |
|
|
7 Bewertung |
194 |
|
|
7.1 Grundlagen der Architekturbewertung |
194 |
|
|
7.1.1 Allgemeines Vorgehen und Ergebnis |
196 |
|
|
7.1.2 Arten von Bewertungen und Zeitpunkt |
197 |
|
|
7.1.3 Der Faktor Erfahrung |
199 |
|
|
7.2 Bewertungsmethoden |
200 |
|
|
7.2.1 Fragetechniken |
201 |
|
|
7.2.2 Messtechniken |
202 |
|
|
7.2.3 Auf Erfahrung basierende Argumentation |
203 |
|
|
7.2.4 Kategorisierung der Bewertungsmethoden |
203 |
|
|
7.3 Szenariobasierte Bewertung |
205 |
|
|
7.3.1 ATAM |
205 |
|
|
7.3.2 ATAM-Phasen |
206 |
|
|
7.3.3 ATAM-Schritte |
211 |
|
|
7.4 Kosten und Nutzen |
216 |
|
|
7.4.1 Kosten |
217 |
|
|
7.4.2 Nutzen |
218 |
|
|
7.5 Zusammenfassung |
220 |
|
|
8 Die Toolbox des Softwarearchitekten |
222 |
|
|
8.1 Einführung |
222 |
|
|
8.1.1 Historie und derzeitiger Stand |
223 |
|
|
8.1.2 Vorteile und Aufbau unserer Toolbox |
224 |
|
|
8.1.3 Wie erwirbt der Architekt sein Wissen? |
226 |
|
|
8.2 Lösungsvorlagen und Methoden |
226 |
|
|
8.2.1 Anwendung von Architekturstilen |
227 |
|
|
8.2.2 Anwendung von Architekturmustern |
232 |
|
|
8.2.3 Anwendung von Entwurfsmustern |
238 |
|
|
8.3 Technologien und Werkzeuge |
246 |
|
|
8.3.1 Betriebssysteme und Programmiersprachen |
247 |
|
|
8.3.2 Bibliotheken, Komponenten und Frameworks |
248 |
|
|
8.3.3 Modellierung und Generierung |
251 |
|
|
8.3.4 Analyse und Rekonstruktion |
253 |
|
|
8.4 Zusammenfassung |
255 |
|
|
9 Fallbeispiel |
258 |
|
|
9.1 Projektbeschreibung |
258 |
|
|
9.2 Schrittweises Vorgehen zur Erstellung der Architektur |
259 |
|
|
9.3 Ausgangssituation |
261 |
|
|
9.4 Anforderungen und Use Cases |
262 |
|
|
9.5 Analysemodell |
264 |
|
|
9.6 Aufbau der Architekturdokumentation |
265 |
|
|
9.7 Architekturerstellung |
266 |
|
|
9.7.1 Spezifikation der Einflussfaktoren |
266 |
|
|
9.7.2 Entwurf und Dokumentation |
272 |
|
|
9.7.3 Umfangreiches Assessment |
279 |
|
|
9.8 Umsetzung der Architektur |
281 |
|
|
9.9 Zusammenfassung |
282 |
|
|
10 Softwarearchitektur im industriellen Maßstab |
286 |
|
|
10.1 Chronische Probleme der heutigen Softwareentwicklung |
287 |
|
|
10.1.1 Unnötige Freiheitsgrade bei Sprachen und Tools |
287 |
|
|
10.1.2 Schwerpunkt auf Einzelprojekten |
289 |
|
|
10.1.3 Ungenügendes Zusammenspiel von Komponenten |
289 |
|
|
10.2 Bahnbrechende Innovationen |
292 |
|
|
10.2.1 Innovationsfeld 1: Systematische Wiederverwendung |
292 |
|
|
10.2.2 Innovationsfeld 2: Modellgetriebene Entwicklung |
293 |
|
|
10.3 Komplexität und die Abstraktionslücke |
295 |
|
|
10.3.1 Arten von Komplexität in der Softwareentwicklung |
295 |
|
|
10.3.2 Die Abstraktionslücke |
296 |
|
|
10.3.3 Verkleinern der Abstraktionslücke |
297 |
|
|
10.4 Zusammenfassung |
298 |
|
|
11 Produktlinien für Software |
300 |
|
|
11.1 Was sind Produktlinien? |
300 |
|
|
11.1.1 Vom Softwaresystem zur Standardplattform |
301 |
|
|
11.1.2 Grundlegende Begriffe |
303 |
|
|
11.1.3 Wann sind Softwareproduktlinien sinnvoll? |
306 |
|
|
11.1.4 Softwareproduktlinien in drei Dimensionen |
312 |
|
|
11.1.5 Wiederverwendung als treibende Kraft |
313 |
|
|
11.2 Aktivitäten und Vorgehen |
316 |
|
|
11.2.1 Wesentliche Aktivitäten zum Betrieb einer Produktlinie |
316 |
|
|
11.2.2 Tätigkeiten des Softwarearchitekten |
318 |
|
|
11.2.3 Allgemeine Schritte zum Produktlinienentwurf |
320 |
|
|
11.2.4 Softwarebezogene Schritte zur Einführung |
321 |
|
|
11.3 Architektur und Software Engineering |
322 |
|
|
11.3.1 Aufgaben für Architekt und Softwareingenieur |
322 |
|
|
11.3.2 Komponenten - Grundbausteine der Produktlinie |
326 |
|
|
11.3.3 Objektorientierte Frameworks |
328 |
|
|
11.4 Technische und organisatorische Aufgaben |
331 |
|
|
11.4.1 Technische Aufgaben |
331 |
|
|
11.4.2 Organisatorische Aufgaben |
333 |
|
|
11.5 Zusammenfassung |
333 |
|
|
12 Modellbasierte Entwicklung mit MDA und DSLs |
336 |
|
|
12.1 Grundidee von MDA |
337 |
|
|
12.2 Konzepte |
339 |
|
|
12.2.1 Modelle |
339 |
|
|
12.2.2 Transformationen |
342 |
|
|
12.3 Metamodellierung |
344 |
|
|
12.3.1 Vier-Schichten-Modell der Metamodellierung |
345 |
|
|
12.4 Fallstudie |
347 |
|
|
12.4.1 Plattformunabhängiges Modell (PIM) |
347 |
|
|
12.4.2 Technische Lösung und Markierungen |
348 |
|
|
12.4.3 Transformation PIM zu PSM |
349 |
|
|
12.4.4 Plattformabhängiges Modell (PSM) |
350 |
|
|
12.4.5 Transformation PSM zu Code |
351 |
|
|
12.5 Alternative: Domänenspezifische Sprachen |
353 |
|
|
12.5.1 Grundidee der domänenspezifischen Sprachen |
353 |
|
|
12.5.2 Werkzeugunterstützung für DSLs |
355 |
|
|
12.5.3 Anwendungsfelder |
357 |
|
|
12.6 Zusammenfassung |
358 |
|
|
Literatur |
362 |
|
|
Index |
368 |
|