Gernot Starke
Effektive Softwarearchitekturen
Ein praktischer Leitfaden
Inhalt
6
Vorwort
14
Vorwort zur siebten Auflage (2015)
15
Vorwort zur achten 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? 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
5 Kommunikation 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
6 Modellierung 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
7 Technische 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
8 Bewertung 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
9 Systematische 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
10 Microservices
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
11 Enterprise-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
12 Beispiele von Softwarearchitekturen
374
12.1? Beispiel: Datenmigration im Finanzwesen
375
12.2? Beispiel: Kampagnenmanagement?im?CRM
392
13 Werkzeuge für Softwarearchitekten
422
13.1? Kategorien von Werkzeugen
422
13.2? Typische Auswahlkriterien
426
14 iSAQB 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
15 Nachwort: Architektonien
436
15.1? In sechs Stationen um die (IT-)Welt
436
15.2? Ratschläge aus dem architektonischen Manifest
439
16 Literatur
444
Stichwortverzeichnis
448
© 2009-2024 ciando GmbH