Gernot Starke
Effektive Softwarearchitekturen
Ein praktischer Leitfaden
Inhalt
6
Vorwort
14
Vorwort zur siebten Auflage
15
1 Einleitung
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
2 Architektur 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
3 Vorgehen 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
4 Entwurf: 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? Fachlich motivierter Entwurf: Domain-Driven Design
99
4.3.2? Der WAM-Ansatz
102
4.3.3? Quality-Driven Software Architecture
104
4.3.4? Top-down und Bottom-up
112
4.4? Schnittstellen entwerfen
113
4.4.1? Anforderungen an Schnittstellen
114
4.4.2? Worauf müssen Sie achten?
115
4.4.3? Tipps zum Entwurf von Schnittstellen
116
4.5? Architekturstile und -muster
117
4.5.1? Datenflussarchitekturstil
118
4.5.1.1? Architekturstil Batch-Sequentiell
118
4.5.1.2? Architekturstil Pipes und Filter
119
4.5.2? Datenzentrierter Architekturstil
122
4.5.2.1? Repository
122
4.5.2.2? Blackboard
123
4.5.3? Hierarchische Architekturstile
124
4.5.3.1? Master-Slave
124
4.5.3.2? Schichten (Layer)
125
4.5.3.3? Architekturstil Ports-und-Adapter
128
4.5.4? Architekturstile verteilter Systeme
131
4.5.4.1? Client-Server
132
4.5.4.2? Command Query Responsibility Segregation
132
4.5.4.3? Broker
134
4.5.4.4? Peer-to-Peer
135
4.5.5? Ereignisbasierte Systeme – Event Systems
136
4.5.5.1? Ungepufferte Event-Kommunikation
137
4.5.5.2? Message- oder Event-Queue-Architekturen
137
4.5.5.3? Message-Service-Architekturen
138
4.5.6? Interaktionsorientierte Systeme
139
4.5.6.1? Model-View-Controller
139
4.5.6.2? Presentation Model
140
4.5.7? Weitere Architekturstile und -muster
143
4.6? Entwurfsmuster
145
4.6.1? Entwurf mit Mustern
145
4.6.2? Adapter
146
4.6.3? Beobachter (Observer)
147
4.6.4? Dekorierer (Decorator)
148
4.6.5? Stellvertreter (Proxy)
149
4.6.6? Fassade
150
4.6.7? Zustand (State)
151
4.7? Weiterführende Literatur
152
5 Kommunikation und Dokumentation von Architekturen
154
5.1? Architekten müssen kommunizieren und dokumentieren
155
5.2? Effektive Architekturdokumentation
157
5.2.1? Anforderungen an Architekturdokumentation
157
5.2.2? Regeln für gute Architekturdokumentation
160
5.3? Typische Architekturdokumente
163
5.3.1? Zentrale Architekturbeschreibung
164
5.3.2? Architekturüberblick
167
5.3.3? Dokumentationsübersicht
167
5.3.4? Übersichtspräsentation der Architektur
167
5.3.5? Architekturtapete
168
5.4? Sichten
168
5.4.1? Sichten in der Softwarearchitektur
169
5.4.2? Vier Arten von Sichten
171
5.4.3? Entwurf der Sichten
173
5.5? Kontextabgrenzung
175
5.5.1? Elemente der Kontextabgrenzung
175
5.5.2? Notation der Kontextabgrenzung
176
5.5.3? Entwurf der Kontextabgrenzung
176
5.6? Bausteinsicht
177
5.6.1? Elemente der Bausteinsicht
181
5.6.2? Notation der Bausteinsicht
182
5.6.3? Entwurf der Bausteinsicht
183
5.7? Laufzeitsicht
184
5.7.1? Elemente der Laufzeitsicht
185
5.7.2? Notation der Laufzeitsicht
186
5.7.3? Entwurf der Laufzeitsicht
187
5.8? Verteilungssicht
187
5.8.1? Elemente der Verteilungssicht
188
5.8.2? Notation der Verteilungssicht
188
5.8.3? Entwurf der Verteilungssicht
189
5.9? Dokumentation von Schnittstellen
190
5.10? Dokumentation technischer Konzepte
193
5.11? Werkzeuge zur Dokumentation
193
5.12? TOGAF zur Architekturdokumentation
195
5.13? Weiterführende Literatur
196
6 Modellierung für Softwarearchitekten
198
6.1? Modelle als Arbeitsmittel
198
6.1.1? Grafische oder textuelle Modellierung
200
6.2? UML?2 für Softwarearchitekten
201
6.2.1? Die Diagrammarten der UML?2
202
6.2.2? Die Bausteine von Architekturen
204
6.2.3? Schnittstellen
205
6.2.4? Die Bausteinsicht
206
6.2.5? Die Verteilungssicht
208
6.2.6? Die Laufzeitsicht
210
6.2.7? Darum UML
213
6.2.8? Darum nicht UML
214
6.3? Tipps zur Modellierung
214
6.4? Weiterführende Literatur
215
7 Technische Konzepte und typische Architekturaspekte
216
7.1? Persistenz
220
7.1.1? Motivation
220
7.1.2? Einflussfaktoren und Entscheidungskriterien
223
7.1.2.1? Art der zu speichernden Daten
224
7.1.2.2? Konsistenz und Verfügbarkeit (ACID, BASE oder CAP)
225
7.1.2.3? Zugriff und Navigation
227
7.1.2.4? Deployment und Betrieb
227
7.1.3? Lösungsmuster
228
7.1.3.1? Persistenzschicht
228
7.1.3.2? DAO: Eine Miniatur-Persistenzschicht
232
7.1.4? Bekannte Risiken und Probleme
233
7.1.5? Weitere Themen zu Persistenz
234
7.1.6? Zusammenhang zu anderen Aspekten
238
7.1.7? Praktische Vertiefung
239
7.1.8? Weiterführende Literatur
240
7.2? Geschäftsregeln
241
7.2.1? Motivation
241
7.2.2? Funktionsweise von Regelmaschinen
244
7.2.3? Kriterien pro & kontra Regelmaschinen
246
7.2.4? Mögliche Probleme
247
7.2.5? Weiterführende Literatur
248
7.3? Integration
248
7.3.1? Motivation
248
7.3.2? Typische Probleme
250
7.3.3? Lösungskonzepte
251
7.3.4? Entwurfsmuster zur Integration
255
7.3.5? Konsequenzen und Risiken
256
7.3.6? Zusammenhang mit anderen Aspekten
258
7.3.7? Weiterführende Literatur
259
7.4? Verteilung
259
7.4.1? Motivation
259
7.4.2? Typische Probleme
260
7.4.3? Lösungskonzept
260
7.4.4? Konsequenzen und Risiken
262
7.4.5? Zusammenhang mit anderen Aspekten
262
7.4.6? Weiterführende Literatur
262
7.5? Kommunikation
263
7.5.1? Motivation
263
7.5.2? Entscheidungsalternativen
263
7.5.3? Grundbegriffe der Kommunikation
263
7.5.4? Weiterführende Literatur
267
7.6? Grafische Oberflächen (GUI)
269
7.6.1? Motivation
269
7.6.2? Einflussfaktoren und Entscheidungskriterien
269
7.6.3? GUI-relevante Architekturmuster
271
7.6.4? Struktur und Ergonomie von Benutzeroberflächen
272
7.6.5? Bekannte Risiken und Probleme
273
7.6.6? Zusammenhang zu anderen Aspekten
275
7.7? Geschäftsprozess-Management: Ablaufsteuerung im Großen
276
7.7.1? Workflow-Sprachen
278
7.7.2? Vorhersagbarkeit
281
7.7.3? Zweck der Ablaufsteuerung
282
7.7.4? Lösungsansätze
284
7.7.5? Integration von Workflow-Systemen
287
7.7.6? Mächtigkeit von WfMS
288
7.7.7? Weiterführende Literatur
288
7.8? Sicherheit
289
7.8.1? Motivation – Was ist IT-Sicherheit?
289
7.8.2? Sicherheitsziele
290
7.8.3? Lösungskonzepte
292
7.8.4? Security Engineering mit Patterns
299
7.8.5? Weiterführende Literatur
300
7.9? Protokollierung
301
7.9.1? Typische Probleme
301
7.9.2? Lösungskonzept
302
7.9.3? Zusammenhang mit anderen Aspekten
303
7.9.4? Weiterführende Literatur
303
7.10? Ausnahme- und Fehlerbehandlung
304
7.10.1? Motivation
304
7.10.2? Fehlerkategorien schaffen Klarheit
306
7.10.3? Muster zur Fehlerbehandlung
308
7.10.4? Mögliche Probleme
309
7.10.5? Zusammenhang mit anderen Aspekten
310
7.10.6? Weiterführende Literatur
311
7.11? Skalierbarkeit
311
7.11.1? Was bedeutet Skalierbarkeit?
311
7.11.2? Skalierungsstrategien
312
7.11.3? Elastizität
312
7.11.4? Scale-Up-Strategie
312
7.11.5? Vertikale Scale-Out-Strategie
313
7.11.6? Horizontale Scale-Out-Strategie
313
7.11.7? Der Strategiemix
313
7.11.8? Allgemeine Daumenregeln
314
7.11.9? CPU-Power
315
7.11.10? GPU-Power
315
7.11.11? RAIDs, SANs und andere Speichersysteme
315
7.11.12? Bussysteme für die Speicheranbindung
316
7.11.13? Geringere Bandbreite im Netz
316
8 Bewertung von Softwarearchitekturen
318
8.1? Qualitative Architekturbewertung
321
8.2? Quantitative Bewertung durch Metriken
328
8.3? Werkzeuge zur Bewertung
330
8.4? Weiterführende Literatur
331
9 Systematische Verbesserung und Evolution
332
9.1? Wege in den Abgrund
334
9.2? Systematisch verbessern
335
9.3? Bewährte Praktiken und Muster
338
9.4? Analyse: Probleme identifizieren
340
9.5? Evaluate: Probleme und Maßnahmen bewerten
342
9.6? Improve: Verbesserungsmaßnahmen planen und durchführen
343
9.6.1? Maxime für Verbesserungsprojekte
343
9.6.2? Kategorien von Verbesserungsmaßnahmen
343
9.7? Crosscutting: phasenübergreifende Praktiken
347
9.8? Mehr zu aim42?
348
9.9? Weiterführende Literatur
348
10 Serviceorientierte Architekturen (SOA) und Microservices
350
10.1? Was ist SOA?
351
10.2? So funktionieren Services
356
10.3? SOA in der Praxis
357
10.4? SOA und Softwarearchitektur
360
10.5? Microservices
360
10.6? Weiterführende Literatur
365
11 Enterprise-IT?Architektur
366
11.1? Wozu Architekturebenen?
367
11.2? Aufgaben von Enterprise-Architekten
368
11.2.1? Management der Infrastrukturkosten
368
11.2.2? Management des IS-Portfolios
369
11.2.3? Definition von Referenzarchitekturen
370
11.2.4? Weitere Aufgaben
372
11.3? Weiterführende Literatur
374
12 Beispiele von Softwarearchitekturen
376
12.1? Beispiel: Datenmigration im Finanzwesen
377
12.2? Beispiel: Kampagnenmanagement im CRM
394
13 Werkzeuge für Softwarearchitekten
426
13.1? Kategorien von Werkzeugen
426
13.2? Typische Auswahlkriterien
429
14 iSAQB Curriculum
432
14.1? Standardisierte Lehrpläne für Softwarearchitekten
433
14.1.1? Grundlagenausbildung und Zertifizierung Foundation-Level?
433
14.1.2? Fortgeschrittene Aus- und Weiterbildung (Advanced-Level)
434
14.2? Können, Wissen und Verstehen
435
14.3? Voraussetzungen und Abgrenzungen
435
14.4? Struktur des iSAQB?Foundation?Level?Lehrplans
436
14.5? Zertifizierung nach dem iSAQB?Lehrplan
439
15 Nachwort: Architektonien
440
15.1? In sechs Stationen um die (IT-)Welt
440
15.2? Ratschläge aus dem architektonischen Manifest
443
16 Literatur
448
Stichwortverzeichnis
452
© 2009-2024 ciando GmbH