Inhalt | 6 |
Vorwort | 14 |
Vorwort zur siebten Auflage (2015) | 15 |
Vorwort zur achten Auflage | 15 |
1Einleitung | 16 |
1.1?Softwarearchitekten | 20 |
1.2?Effektiv, agil und pragmatisch | 21 |
1.3?Wer sollte dieses Buch lesen? | 24 |
1.4?Wegweiser durch das Buch | 25 |
1.5?Webseite zum Buch | 27 |
1.6?Weiterführende Literatur | 27 |
1.7?Danksagung | 28 |
2Architektur und?Architekten | 30 |
2.1?Was ist Softwarearchitektur? | 31 |
2.1.1?Darum Softwarearchitektur! | 35 |
2.2?Die Aufgaben von Softwarearchitekten | 36 |
2.3?Wie entstehen Architekturen? | 41 |
2.4?In welchem Kontext steht Architektur? | 44 |
2.5?Weiterführende Literatur | 47 |
3Vorgehen bei der Architekturentwicklung | 48 |
3.1?Informationen sammeln | 52 |
3.2?Anforderungen klären | 53 |
3.2.1?Was ist die Kernaufgabe des Systems? | 53 |
3.2.2?Welche Kategorie von System? | 54 |
3.2.3?Wesentliche Qualitätsanforderungen ermitteln | 54 |
3.2.4?Relevante Stakeholder ermitteln | 59 |
3.2.5?Fachlichen und technischen Kontext ermitteln | 60 |
3.3?Einflussfaktoren und Randbedingungen ermitteln | 62 |
3.4?Entwerfen und kommunizieren | 68 |
3.5?Umsetzung begleiten | 69 |
3.6?Lösungsstrategien entwickeln | 70 |
3.7?Weiterführende Literatur | 72 |
4Entwurf: Grundlagen, Methoden und Muster | 74 |
4.1?Grundlagen | 76 |
4.1.1?Grundsätze des Entwurfs (Maxime) | 77 |
4.1.2?Prinzipien | 80 |
4.1.3?SOLID-Prinzipien des objektorientierten Entwurfs | 86 |
4.1.3.1?Offen-Geschlossen-Prinzip | 86 |
4.1.3.2?Liskov-Substitutionsprinzip (LSP) | 88 |
4.1.3.3?Interface Segregation Principle (ISP) | 89 |
4.1.3.4?Dependency Inversion Principle (DIP) | 91 |
4.2?Heuristiken | 94 |
4.3?Entwurfsmethoden | 99 |
4.3.1?Domain-Driven Design (Entwurf nach Fachlichkeit) | 99 |
4.3.2?Der WAM-Ansatz | 104 |
4.3.3?Quality-Driven Software Architecture | 106 |
4.3.4?Top-down und Bottom-up | 114 |
4.4?Schnittstellen entwerfen | 115 |
4.4.1?Anforderungen an Schnittstellen | 116 |
4.4.2?Worauf müssen Sie achten? | 117 |
4.4.3?Tipps zum Entwurf von Schnittstellen | 118 |
4.5?Architekturstile und -muster | 119 |
4.5.1?Datenflussarchitekturstil | 120 |
4.5.1.1?Architekturstil Batch-Sequentiell | 120 |
4.5.1.2?Architekturstil Pipes und Filter | 121 |
4.5.2?Datenzentrierter Architekturstil | 124 |
4.5.2.1?Repository | 124 |
4.5.2.2?Blackboard | 125 |
4.5.3?Hierarchische Architekturstile | 126 |
4.5.3.1?Master-Slave | 126 |
4.5.3.2?Schichten (Layer) | 127 |
4.5.3.3?Architekturstil Ports-und-Adapter | 130 |
4.5.4?Architekturstile verteilter Systeme | 133 |
4.5.4.1?Client-Server | 134 |
4.5.4.2?Command Query Responsibility Segregation | 134 |
4.5.4.3?Broker | 136 |
4.5.4.4?Peer-to-Peer | 137 |
4.5.5?Ereignisbasierte Systeme – Event Systems | 138 |
4.5.5.1?Ungepufferte Event-Kommunikation | 139 |
4.5.5.2?Message- oder Event-Queue-Architekturen | 139 |
4.5.5.3?Message-Service-Architekturen | 140 |
4.5.6?Interaktionsorientierte Systeme | 141 |
4.5.6.1?Model-View-Controller | 141 |
4.5.6.2?Presentation Model | 142 |
4.5.7?Weitere Architekturstile und -muster | 145 |
4.6?Entwurfsmuster | 147 |
4.6.1?Entwurf mit Mustern | 147 |
4.6.2?Adapter | 148 |
4.6.3?Beobachter (Observer) | 149 |
4.6.4?Dekorierer (Decorator) | 150 |
4.6.5?Stellvertreter (Proxy) | 151 |
4.6.6?Fassade | 152 |
4.6.7?Zustand (State) | 153 |
4.7?Weiterführende Literatur | 154 |
5Kommunikation und?Dokumentation von Architekturen | 156 |
5.1?Architekten müssen kommunizieren und?dokumentieren | 157 |
5.2?Effektive Architekturdokumentation | 159 |
5.2.1?Anforderungen an Architekturdokumentation | 159 |
5.2.2?Regeln für gute Architekturdokumentation | 161 |
5.3?Typische Architekturdokumente | 164 |
5.3.1?Zentrale Architekturbeschreibung | 165 |
5.3.2?Architekturüberblick | 168 |
5.3.3?Dokumentationsübersicht | 168 |
5.3.4?Übersichtspräsentation der Architektur | 168 |
5.3.5?Architekturtapete | 169 |
5.4?Sichten | 169 |
5.4.1?Sichten in der Softwarearchitektur | 170 |
5.4.2?Vier Arten von Sichten | 172 |
5.4.3?Entwurf der Sichten | 174 |
5.5?Kontextabgrenzung | 176 |
5.5.1?Elemente der Kontextabgrenzung | 176 |
5.5.2?Notation der Kontextabgrenzung | 177 |
5.5.3?Entwurf der Kontextabgrenzung | 177 |
5.6?Bausteinsicht | 178 |
5.6.1?Elemente der Bausteinsicht | 182 |
5.6.2?Notation der Bausteinsicht | 183 |
5.6.3?Entwurf der Bausteinsicht | 184 |
5.7?Laufzeitsicht | 185 |
5.7.1?Elemente der Laufzeitsicht | 186 |
5.7.2?Notation der Laufzeitsicht | 187 |
5.7.3?Entwurf der Laufzeitsicht | 188 |
5.8?Verteilungssicht | 188 |
5.8.1?Elemente der Verteilungssicht | 189 |
5.8.2?Notation der Verteilungssicht | 189 |
5.8.3?Entwurf der Verteilungssicht | 190 |
5.9?Dokumentation von Schnittstellen | 191 |
5.10?Dokumentation technischer Konzepte | 194 |
5.11?Werkzeuge zur Dokumentation | 194 |
5.12?TOGAF zur Architekturdokumentation | 196 |
5.13?Weiterführende Literatur | 198 |
6Modellierung für Softwarearchitekten | 200 |
6.1?Modelle als Arbeitsmittel | 200 |
6.1.1?Grafische oder textuelle Modellierung | 202 |
6.2?UML?2 für Softwarearchitekten | 203 |
6.2.1?Die Diagrammarten der UML?2 | 204 |
6.2.2?Die Bausteine von Architekturen | 206 |
6.2.3?Schnittstellen | 207 |
6.2.4?Die Bausteinsicht | 208 |
6.2.5?Die Verteilungssicht | 210 |
6.2.6?Die Laufzeitsicht | 212 |
6.2.7?Darum UML | 215 |
6.2.8?Darum nicht UML | 216 |
6.3?Tipps zur Modellierung | 216 |
6.4?Weiterführende Literatur | 217 |
7Technische Konzepte und typische Architekturaspekte | 218 |
7.1?Persistenz | 222 |
7.1.1?Motivation | 222 |
7.1.2?Einflussfaktoren und Entscheidungskriterien | 225 |
7.1.2.1?Art der zu speichernden Daten | 226 |
7.1.2.2?Konsistenz und Verfügbarkeit (ACID, BASE oder CAP) | 227 |
7.1.2.3?Zugriff und Navigation | 229 |
7.1.2.4?Deployment und Betrieb | 229 |
7.1.3?Lösungsmuster | 230 |
7.1.3.1?Persistenzschicht | 230 |
7.1.3.2?DAO: Eine Miniatur-Persistenzschicht | 234 |
7.1.4?Bekannte Risiken und Probleme | 235 |
7.1.5?Weitere Themen zu Persistenz | 236 |
7.1.6?Zusammenhang zu anderen Aspekten | 240 |
7.1.7?Praktische Vertiefung | 241 |
7.1.8?Weiterführende Literatur | 242 |
7.2?Geschäftsregeln | 243 |
7.2.1?Motivation | 243 |
7.2.2?Funktionsweise von Regelmaschinen | 246 |
7.2.3?Kriterien pro & kontra Regelmaschinen | 248 |
7.2.4?Mögliche Probleme | 249 |
7.2.5?Weiterführende Literatur | 250 |
7.3?Integration | 250 |
7.3.1?Motivation | 250 |
7.3.2?Typische Probleme | 252 |
7.3.3?Lösungskonzepte | 253 |
7.3.4?Entwurfsmuster zur Integration | 257 |
7.3.5?Konsequenzen und Risiken | 258 |
7.3.6?Zusammenhang mit anderen Aspekten | 260 |
7.3.7?Weiterführende Literatur | 261 |
7.4?Verteilung | 261 |
7.4.1?Motivation | 261 |
7.4.2?Typische Probleme | 262 |
7.4.3?Lösungskonzept | 262 |
7.4.4?Konsequenzen und Risiken | 264 |
7.4.5?Zusammenhang mit anderen Aspekten | 264 |
7.4.6?Weiterführende Literatur | 264 |
7.5?Kommunikation | 265 |
7.5.1?Motivation | 265 |
7.5.2?Entscheidungsalternativen | 265 |
7.5.3?Grundbegriffe der Kommunikation | 265 |
7.5.4?Weiterführende Literatur | 269 |
7.6?Grafische Oberflächen (GUI) | 271 |
7.6.1?Motivation | 271 |
7.6.2?Einflussfaktoren und Entscheidungskriterien | 271 |
7.6.3?GUI-relevante Architekturmuster | 273 |
7.6.4?Struktur und Ergonomie von Benutzeroberflächen | 274 |
7.6.5?Bekannte Risiken und Probleme | 275 |
7.6.6?Zusammenhang zu anderen Aspekten | 277 |
7.7?Geschäftsprozess-Management: Ablaufsteuerung im Großen | 278 |
7.7.1?Workflow-Sprachen | 280 |
7.7.2?Vorhersagbarkeit | 283 |
7.7.3?Zweck der Ablaufsteuerung | 284 |
7.7.4?Lösungsansätze | 286 |
7.7.5?Integration von Workflow-Systemen | 289 |
7.7.6?Mächtigkeit von WfMS | 290 |
7.7.7?Weiterführende Literatur | 290 |
7.8?Sicherheit | 291 |
7.8.1?Motivation – Was ist IT-Sicherheit? | 291 |
7.8.2?Sicherheitsziele | 292 |
7.8.3?Lösungskonzepte | 294 |
7.8.4?Security Engineering mit Patterns | 301 |
7.8.5?Weiterführende Literatur | 302 |
7.9?Protokollierung | 303 |
7.9.1?Typische Probleme | 303 |
7.9.2?Lösungskonzept | 304 |
7.9.3?Zusammenhang mit anderen Aspekten | 305 |
7.9.4?Weiterführende Literatur | 305 |
7.10?Ausnahme- und Fehlerbehandlung | 306 |
7.10.1?Motivation | 306 |
7.10.2?Fehlerkategorien schaffen Klarheit | 308 |
7.10.3?Muster zur Fehlerbehandlung | 310 |
7.10.4?Mögliche Probleme | 311 |
7.10.5?Zusammenhang mit anderen Aspekten | 312 |
7.10.6?Weiterführende Literatur | 313 |
7.11?Skalierbarkeit | 313 |
7.11.1?Was bedeutet Skalierbarkeit? | 313 |
7.11.2?Skalierungsstrategien | 314 |
7.11.3?Elastizität | 314 |
7.11.4?Scale-Up-Strategie | 314 |
7.11.5?Vertikale Scale-Out-Strategie | 315 |
7.11.6?Horizontale Scale-Out-Strategie | 315 |
7.11.7?Der Strategiemix | 315 |
7.11.8?Allgemeine Daumenregeln | 316 |
7.11.9?CPU-Power | 317 |
7.11.10?GPU-Power | 317 |
7.11.11?RAIDs, SANs und andere Speichersysteme | 317 |
7.11.12?Bussysteme für die Speicheranbindung | 318 |
7.11.13?Geringere Bandbreite im Netz | 318 |
8Bewertung von Softwarearchitekturen | 320 |
8.1?Qualitative Architekturbewertung | 323 |
8.2?Quantitative Bewertung durch Metriken | 330 |
8.3?Werkzeuge zur Bewertung | 332 |
8.4?Weiterführende Literatur | 333 |
9Systematische Verbesserung und Evolution | 334 |
9.1?Wege in den Abgrund | 336 |
9.2?Systematisch verbessern | 337 |
9.3?Bewährte Praktiken und Muster | 340 |
9.4?Analyse: Probleme identifizieren | 342 |
9.5?Evaluate: Probleme und Maßnahmen bewerten | 344 |
9.6?Improve: Verbesserungsmaßnahmen planen und durchführen | 345 |
9.6.1?Maxime für Verbesserungsprojekte | 345 |
9.6.2?Kategorien von Verbesserungsmaßnahmen | 345 |
9.7?Crosscutting: phasenübergreifende Praktiken | 349 |
9.8?Mehr zu aim42? | 350 |
9.9?Weiterführende Literatur | 350 |
10Microservices | 352 |
10.1?Was sind Microservices? | 353 |
10.2?Warum Microservices? | 353 |
10.3?Eigenschaften von Microservices | 354 |
10.4?Microservices und die Organisation | 356 |
10.5?Für welche Systeme eignen sich Microservices? | 357 |
10.6?Herausforderungen bei Microservices | 357 |
10.6.1?Überblick über viele Services behalten | 358 |
10.6.2?Microservices effektiv entwickeln | 358 |
10.6.3?Service Discovery | 359 |
10.6.4?UI-Integration | 360 |
10.6.5?Dezentralisierte Daten | 360 |
10.6.6?Versionierung von Microservices | 361 |
10.6.7?Laufzeitumgebungen und Infrastruktur verwalten | 362 |
10.7?Beispiele für Microservices | 362 |
10.8?Weiterführende Literatur | 362 |
11Enterprise-IT?Architektur | 364 |
11.1?Wozu Architekturebenen? | 365 |
11.2?Aufgaben von Enterprise-Architekten | 366 |
11.2.1?Management der Infrastrukturkosten | 366 |
11.2.2?Management des IS-Portfolios | 367 |
11.2.3?Definition von Referenzarchitekturen | 368 |
11.2.4?Weitere Aufgaben | 370 |
11.3?Weiterführende Literatur | 372 |
12Beispiele von Softwarearchitekturen | 374 |
12.1?Beispiel: Datenmigration im Finanzwesen | 375 |
12.2?Beispiel: Kampagnenmanagement?im?CRM | 392 |
13Werkzeuge für Softwarearchitekten | 422 |
13.1?Kategorien von Werkzeugen | 422 |
13.2?Typische Auswahlkriterien | 426 |
14iSAQB Curriculum | 428 |
14.1?Standardisierte Lehrpläne für?Softwarearchitekten | 429 |
14.1.1?Grundlagenausbildung und Zertifizierung Foundation-Level | 429 |
14.1.2?Fortgeschrittene Aus- und Weiterbildung (Advanced-Level) | 430 |
14.2?Können, Wissen und Verstehen | 431 |
14.3?Voraussetzungen und Abgrenzungen | 431 |
14.4?Struktur des iSAQB?Foundation?Level?Lehrplans | 432 |
14.5?Zertifizierung nach dem iSAQB?Lehrplan | 435 |
15Nachwort: Architektonien | 436 |
15.1?In sechs Stationen um die (IT-)Welt | 436 |
15.2?Ratschläge aus dem architektonischen Manifest | 439 |
16Literatur | 444 |
Stichwortverzeichnis | 448 |