Vorwort | 6 |
Inhaltsverzeichnis | 10 |
Verzeichnis der Autoren | 16 |
1 Einleitung | 18 |
1.1 Ausgangslage und Zielsetzung des Buches | 19 |
1.2 Was ist Software-Architektur? | 25 |
1.3 Leser-Leitfaden | 28 |
1.3.1 Buchaufbau | 28 |
1.3.2 Zielpublikum | 32 |
1.3.3 Kapitelüberblick | 32 |
1.3.4 Kapitel im Detail | 35 |
2 Architektonischer Ordnungsrahmen | 40 |
2.1 Motivation | 41 |
2.2 Ordnungsrahmen im Überblick | 43 |
2.3 Architekturen und Architektur-Disziplinen ( WAS) | 47 |
2.4 Architektur-Perspektiven (WO) | 48 |
2.5 Architektur-Anforderungen (WARUM) | 49 |
2.6 Architektur-Mittel (WOMIT) | 50 |
2.7 Organisationen und Individuen (WER) | 53 |
2.8 Architektur-Vorgehen (WIE) | 54 |
3 Architekturen und Architektur-Disziplinen (WAS) | 56 |
3.1 Klassische Architektur als Ausgangspunkt | 57 |
3.2 Von der klassischen Architektur zur Software- Architektur | 61 |
3.3 Architektur und der Systemgedanke | 69 |
3.4 Architektur und die Bausteine eines Systems | 74 |
4 Architektur-Perspektiven (WO) | 82 |
4.1 Architektur-Ebenen | 83 |
4.1.1 Organisationsebene | 88 |
4.1.2 Systemebene | 90 |
4.1.3 Bausteinebene im Bereich Makro-Architektur | 90 |
4.1.4 Bausteinebene im Bereich Mikro-Architektur | 91 |
4.2 Architektur-Sichten | 92 |
4.2.1 Zachman-Framework | 101 |
4.2.2 Reference Model for Open Distributed Processing | 104 |
4.2.3 4+1-Sichten-Modell | 105 |
5 Architektur-Anforderungen (WARUM) | 108 |
5.1 Allgemeines | 109 |
5.2 Anforderungen im Überblick | 111 |
5.3 Anforderungen im Detail | 116 |
5.3.1 Organisationsanforderungen | 116 |
5.3.2 Systemanforderungen | 117 |
5.3.3 Bausteinanforderungen | 118 |
5.3.4 Laufzeitanforderungen | 119 |
5.3.5 Entwicklungszeitanforderungen | 120 |
5.3.6 Organisatorische Rahmenbedingungen | 122 |
5.4 Anforderungen im Architektur-Kontext | 123 |
6 Architektur-Mittel (WOMIT) | 128 |
6.1 Architektur-Prinzipien | 129 |
6.1.1 Prinzip der losen Kopplung | 131 |
6.1.2 Prinzip der hohen Kohäsion | 134 |
6.1.3 Prinzip des Entwurfs für Veränderung | 136 |
6.1.4 Separation-of-Concerns-Prinzip | 138 |
6.1.5 Information-Hiding-Prinzip | 141 |
6.1.6 Abstraktionsprinzipien | 144 |
6.1.7 Modularitätsprinzip | 146 |
6.1.8 Rückverfolgbarkeitsprinzip | 150 |
6.1.9 Selbstdokumentationsprinzip | 151 |
6.1.10 Inkrementalitätsprinzip | 151 |
6.1.11 Weitere Architektur-Prinzipien | 153 |
6.2 Grundlegende architektonische Konzepte | 153 |
6.2.1 Prozedurale Ansätze | 153 |
6.2.2 Objektorientierung | 156 |
6.2.3 Komponentenorientierung | 163 |
6.2.4 Meta-Architekturen und Reflection | 166 |
6.2.5 Generative Erzeugung von Systembausteinen | 168 |
6.2.6 Modellgetriebene Software-Entwicklung | 170 |
6.2.7 Aspektorientierung | 178 |
6.2.8 Wartung von Software-Architekturen | 182 |
6.3 Architektur-Stile | 186 |
6.4 Architektur-Muster | 190 |
6.4.1 Was ist ein Software-Muster? | 190 |
6.4.2 Beispiele für Muster | 194 |
6.4.3 Mustersprachen | 199 |
6.5 Referenzarchitekturen | 203 |
6.5.1 Definition und Bestandteile | 203 |
6.5.2 Einsatz und Vorteile von Referenzarchitekturen | 205 |
6.5.3 Anforderungen an Referenzarchitekturen | 205 |
6.5.4 Arten von Referenzarchitekturen | 206 |
6.5.5 Beispiel für eine Referenzarchitektur | 207 |
6.6 Architektur-Dokumentationsmittel | 212 |
6.6.1 Architektur-Metamodelle | 213 |
6.6.2 Unified Modeling Language (UML) | 214 |
6.6.3 Architecture Definition Languages (ADL) | 218 |
6.6.4 Domain Specific Languages (DSL) | 223 |
6.7 Architektur-Strukturen | 225 |
6.7.1 Zentralisierung gegenüber Dezentralisierung | 226 |
6.7.2 n-Tier-Architektur | 228 |
6.7.3 Rich Client gegenüber Thin Client | 230 |
6.7.4 Middleware-Architekturen | 232 |
6.7.5 Komponentenarchitekturen | 235 |
6.7.6 Serviceorientierte Architekturen | 238 |
6.7.7 Enterprise Service Bus | 239 |
6.7.8 P2P-Systeme | 240 |
6.8 Aktuelle Technologien in Software- Architekturen | 240 |
6.8.1 Middleware-Systeme | 241 |
6.8.2 Datenbanken und Persistenz von Geschäftsobjekten | 246 |
6.8.3 Datenaustausch und Datentransformation mit XML | 250 |
6.8.4 Dynamische Web-Seiten und Web-Application-Server | 253 |
6.8.5 Komponentenplattformen | 254 |
6.8.6 Web Services | 257 |
7 Organisationen und Individuen (WER) | 260 |
7.1 Allgemeines | 261 |
7.2 Organisationen | 264 |
7.3 Individuen | 270 |
7.4 Individuen und Gruppen | 272 |
7.5 Architektur und Entscheidungen | 276 |
7.6 Architekt als zentrale Rolle | 281 |
8 Architektur-Vorgehen (WIE) | 286 |
8.1 Architektonisches Vorgehen | 287 |
8.1.1 Entwicklungsprozess | 287 |
8.1.2 Architektonische Tätigkeiten | 290 |
8.1.3 Erstellen des Business Case | 293 |
8.1.4 Verstehen der Anforderungen | 295 |
8.1.5 Entwerfen der Architektur | 296 |
8.1.6 Umsetzen der Architektur | 301 |
8.1.7 Kommunizieren der Architektur | 304 |
8.2 Anwendungsszenario: Product Line Engineering | 310 |
8.2.1 Produktlinien und Software-Systemfamilien | 311 |
8.2.2 Realisierungstechnologien und Zusammenhang zu MDSD | 314 |
8.2.3 Erstellen des Business Case | 316 |
8.2.4 Verstehen der Anforderungen (Domänenanalyse) | 316 |
8.2.5 Entwerfen der Architektur (Domänendesign) | 319 |
8.2.6 Umsetzen der Architektur (Domänenimplementierung) | 320 |
8.2.7 Rollen und Aufgaben | 321 |
8.3 Anwendungsszenario: Enterprise Application Integration | 322 |
8.3.1 Erstellen des Business Case | 323 |
8.3.2 Verstehen der Anforderungen | 326 |
8.3.3 Entwerfen der Architektur | 334 |
8.3.4 Kommunizieren und Umsetzen der Architektur | 344 |
8.4 Anwendungsszenario: Anwendungsdienst | 345 |
8.4.1 Erstellen des Business Case für das System | 369 |
8.4.2 Verstehen der Anforderungen | 380 |
8.4.3 Entwerfen der Architektur | 390 |
8.4.4 Kommunizieren und Umsetzen der Architektur | 401 |
9 Risikofallmanagementsystem | 406 |
9.1 Zusammenfassung | 407 |
9.2 Architektur-Anforderungen (WARUM) | 408 |
9.2.1 Business Case | 408 |
9.2.2 Organisationsanforderungen | 409 |
9.2.3 Systemanforderungen | 414 |
9.2.4 Bausteinanforderungen | 418 |
9.3 Architekturen und Architektur-Disziplinen ( WAS) | 424 |
9.3.1 Disziplinen | 424 |
9.3.2 Entscheidungen zur Software-Architektur | 426 |
9.4 Architektur-Perspektiven (WO) | 428 |
9.4.1 Systemebene | 428 |
9.4.2 Bausteinebene | 429 |
9.5 Architektur-Mittel (WOMIT) | 433 |
9.5.1 Architektur-Prinzipien | 433 |
9.5.2 Grundlegende architektonische Konzepte | 435 |
9.5.3 Generative und generische Verfahren | 436 |
9.6 Organisationen und Individuen (WER) | 440 |
9.6.1 Organisation | 441 |
9.6.2 Individuen | 443 |
9.7 Architektur-Vorgehen (WIE) | 444 |
10 CRM-Kundendatenrepository | 446 |
10.1 Zusammenfassung | 447 |
10.2 Architektur-Anforderungen (WARUM) | 448 |
10.3 Organisationen und Individuen (WER) | 450 |
10.4 Architekturen und Architektur-Disziplinen ( WAS) | 452 |
10.5 Architektur-Perspektiven (WO) | 452 |
10.6 Architektur-Mittel (WOMIT) | 453 |
10.7 Architektur-Vorgehen (WIE) | 454 |
10.8 Ausgangssituation | 454 |
10.9 Anforderungen | 456 |
10.10 Architektonische Entscheidungen | 465 |
10.11 Logische Sicht | 469 |
10.12 Umsetzung ausgewählter Anforderungen | 475 |
10.13 Was hat die Architektur genutzt? | 485 |
11 Eingebettete Komponenteninfrastrukturen | 488 |
11.1 Zusammenfassung | 489 |
11.1.1 Architektur-Anforderungen (WARUM) | 490 |
11.1.2 Organisation und Individuen (WER) | 492 |
11.1.3 Architekturen und Architektur-Disziplinen (WAS) | 492 |
11.1.4 Architektur-Perspektiven (WO) | 493 |
11.1.5 Architektur-Mittel (WOMIT) | 493 |
11.1.6 Architektur-Vorgehen (WIE) | 494 |
11.2 Product Line Engineering | 496 |
11.2.1 Domain Scoping | 496 |
11.2.2 Variabilitätsanalyse und Domänenstrukturierung | 497 |
11.2.3 Kommunikationsparadigmen | 498 |
11.2.4 Container-Services | 501 |
11.2.5 Domänendesign | 502 |
11.2.6 Produktionsprozess | 504 |
11.3 Modelle | 506 |
11.3.1 Definition von Interfaces | 507 |
11.3.2 Definition von Komponenten und Ports | 509 |
11.3.3 Definition eines Systems | 510 |
11.3.4 Gesamtmodell | 514 |
11.3.5 Generator – Überblick | 514 |
11.4 Implementierung von Komponenten | 515 |
11.4.1 Abbildung auf Java | 516 |
11.4.2 Parsen und Zusammenführen des Gesamtmodells | 517 |
11.4.3 Pseudodeklarative Metamodellimplementierung | 521 |
11.5 Codegenerierung | 523 |
11.5.1 Referenzen | 523 |
11.5.2 Umsetzung der Protokollzustandsautomaten | 527 |
11.5.3 Generierung des Build Files | 528 |
11.6 Fachliche Kaskadierung | 529 |
11.6.1 Modellierungssprache | 529 |
11.6.2 Generierung | 531 |
11.7 Erfahrungen aus unserem Unternehmen | 531 |
Literaturverzeichnis | 534 |
Abkürzungsverzeichnis | 554 |
Index | 558 |