Starke Effektive Softwarearchitekturen
10. überarbeitete Auflage 2024
ISBN: 978-3-446-47909-8
Verlag: Hanser, Carl
Format: PDF
Kopierschutz: 1 - PDF Watermark
Ein praktischer Leitfaden
E-Book, Deutsch, 369 Seiten
ISBN: 978-3-446-47909-8
Verlag: Hanser, Carl
Format: PDF
Kopierschutz: 1 - PDF Watermark
- Architekturmuster
- Technische Konzepte
- Architekturanalyse und -bewertung
- Dokumentation von Architekturen
- Modernisierung bestehender Systeme
- Beispiele realer Softwarearchitekturen
- iSAQB Curriculum
- Neu in der 10. Auflage: C4, Cloud, DataContracts
- Ihr exklusiver Vorteil: E-Book inside beim Kauf des gedruckten Buches
Softwarearchitekt*innen müssen komplexe fachliche und technische Anforderungen an IT-Systeme umsetzen und sie müssen diese Systeme durch nachvollziehbare Strukturen flexibel und erweiterbar gestalten.
Dieser Praxisleitfaden zeigt Ihnen, wie Sie Softwarearchitekturen effektiv und systematisch entwickeln können. Gernot Starke unterstützt Sie mit konkreten praktischen Tipps aus seiner Erfahrung.
Sie finden Antworten auf zentrale Fragen:
- Welche Aufgaben gehören zur Softwarearchitektur?
- Wie kann ich beim Entwurf vorgehen?
- Wie kommuniziere und dokumentiere ich Softwarearchitekturen?
- Wie helfen Architekturmuster?
- Wie analysiere und bewerte ich Softwarearchitekturen?
- Wie setze ich Persistenz, grafische Benutzeroberflächen, Geschäftsregeln, Integration, Verteilung, Fehlerbehandlung und andere Konzepte ein?
- Was muss ich über Domain-Driven Design, arc42, Microservices, C4 und die Cloud wissen?
- Wie verbessere ich bestehende Systeme?
Dr. Gernot Starke stellt sich seit vielen Jahren der Herausforderung, die Architektur großer Systeme effektiv zu gestalten. Zu seinen Kunden zählen mittlere und große Unternehmen aus den Branchen Finanzdienstleistung, Logistik, Handel, Telekommunikation und dem öffentlichen Bereich. Er ist Mitgründer von arc42 und iSAQB sowie Fellow der innoQ. Gernot lebt in Köln.
Autoren/Hrsg.
Weitere Infos & Material
1;Inhalt;7
2;1Einleitung;13
2.1;1.1?Softwarearchitekt:innen;17
2.2;1.2?Effektiv, agil und pragmatisch;18
2.3;1.3?Wer sollte dieses Buch lesen?;21
2.4;1.4?Wegweiser durch das Buch;22
2.5;1.5?Webseite zum Buch;23
2.6;1.6?Weiterführende Literatur;23
2.7;1.7?Danksagung;24
3;2Softwarearchitektur: Grundlagen und?Aufgaben;25
3.1;2.1?Was ist Softwarearchitektur?;26
3.1.1;2.1.1?System;26
3.1.2;2.1.2?Komponenten;27
3.1.3;2.1.3?Beziehungen;27
3.1.4;2.1.4?Umgebung;28
3.1.5;2.1.5?Komponenten + Beziehungen = Strukturen;28
3.1.6;2.1.6?Prinzipien (synonym: Konzepte);29
3.1.7;2.1.7?Entwurf und Evolution;30
3.2;2.2?Architekturentscheidungen;31
3.3;2.3?Die Aufgaben von Softwarearchitekt:innen;34
3.3.1;2.3.1?Anforderungen klären;35
3.3.2;2.3.2?Drei Kategorien von Entwurfsentscheidungen;36
3.3.3;2.3.3?Architektur kommunizieren und dokumentieren;36
3.3.4;2.3.4?Umsetzung begleiten: Von Goldstücken und Missverständnissen;37
3.3.5;2.3.5?Architektur analysieren und bewerten;37
3.4;2.4?Rolle von Softwarearchitekt:innen: Wer?macht’s?;38
3.4.1;2.4.1?Monarchie;39
3.4.2;2.4.2?Architekt:in im Team;40
3.4.3;2.4.3?Architekturagent:innen;41
3.4.4;2.4.4?Demokratie oder: Team-Architektur;43
3.5;2.5?Architekturen entstehen (meist) iterativ;44
3.6;2.6?Weiterführende Literatur;46
4;3Anforderungen klären;47
4.1;3.1?Was ist Kernaufgabe oder Ziel des?Systems?;47
4.2;3.2?Relevante Stakeholder ermitteln;48
4.3;3.3?Welche Kategorie von System?;49
4.4;3.4?Fachdomäne klären;50
4.5;3.5?Qualitätsanforderungen klären;51
4.6;3.6?Externe Nachbarsysteme: Kontextabgrenzung;56
4.7;3.7?Einflussfaktoren und Randbedingungen ermitteln;57
5;4Entwurf: Grundlagen, Methoden und Muster;59
5.1;4.1?Grundlagen, Prinzipien und Heuristiken;60
5.1.1;4.1.1?Grundlagen des Entwurfs;60
5.1.2;4.1.2?Prinzipien;63
5.1.2.1;4.1.2.1?Lose (geringe) Kopplung;63
5.1.2.2;4.1.2.2?Hohe Kohäsion;65
5.1.2.3;4.1.2.3?Trenne Verantwortlichkeiten/Belange;66
5.1.2.4;4.1.2.4?Modularisierung;67
5.1.2.5;4.1.2.5?Abstraktion, Kapselung und das Geheimnisprinzip;67
5.1.2.6;4.1.2.6?Hohe Konsistenz;67
5.1.2.7;4.1.2.7?Keine zyklischen Abhängigkeiten;68
5.1.2.8;4.1.2.8?SOLID-Prinzipien des objektorientierten Entwurfs;69
5.1.3;4.1.3?Heuristiken;74
5.2;4.2?Entwurfsmethoden;78
5.2.1;4.2.1?Domain-Driven Design (Entwurf nach Fachlichkeit);79
5.2.2;4.2.2?Quality-Driven Software Architecture;84
5.2.3;4.2.3?Top-down und Bottom-up;91
5.2.4;4.2.4?Sichtenbasierter Entwurf;92
5.2.4.1;4.2.4.1?Sichten in der Softwarearchitektur;93
5.2.4.2;4.2.4.2?Entwurf der Kontextabgrenzung;94
5.2.4.3;4.2.4.3?Entwurf der Bausteinsicht;95
5.2.4.4;4.2.4.4?Entwurf der Laufzeitsicht;95
5.2.4.5;4.2.4.5?Entwurf der Verteilungssicht;96
5.3;4.3?Schnittstellen entwerfen;96
5.3.1;4.3.1?Anforderungen an Schnittstellen;98
5.3.2;4.3.2?Worauf müssen Sie achten?;98
5.3.3;4.3.3?Tipps zum Entwurf von Schnittstellen;99
5.4;4.4?Architekturmuster (Patterns);100
5.4.1;4.4.1?Schichten (Layer);100
5.4.2;4.4.2?Ports-und-Adapter;103
5.4.3;4.4.3?Client-Server;106
5.4.4;4.4.4?Microservices;106
5.4.5;4.4.5?Pipes und Filter;114
5.4.6;4.4.6?Batch-Pattern;116
5.4.7;4.4.7?Repository;117
5.4.8;4.4.8?Blackboard;118
5.4.9;4.4.9?Command Query Responsibility Segregation (CQRS);119
5.4.10;4.4.10?Broker;121
5.4.11;4.4.11?Peer-to-Peer;122
5.4.12;4.4.12?Ereignisbasierte Systeme – Event Systems;123
5.4.12.1;4.4.12.1?Ungepufferte Event Systems;124
5.4.12.2;4.4.12.2?Message- oder Event-Queues;124
5.4.12.3;4.4.12.3?Message-Service;125
5.4.13;4.4.13?Model-View-Controller;126
5.4.14;4.4.14?Presentation Model;127
5.4.15;4.4.15?REST-Architektur;129
5.4.16;4.4.16?Adapter;131
5.4.17;4.4.17?Stellvertreter (Proxy);132
5.4.18;4.4.18?Fassade;133
5.4.19;4.4.19?Beobachter (Observer);134
5.5;4.5?Weiterführende Literatur;135
6;5Architekturen kommunizieren, dokumentieren und?modellieren;137
6.1;5.1?Warum kommunizieren und?dokumentieren;138
6.2;5.2?Anforderungen an Architekturdokumentation;140
6.3;5.3?Effektiv dokumentieren;141
6.3.1;5.3.1?Tipps für bessere Architekturdiagramme;143
6.4;5.4?Bestandteile von Architekturdokumentation;150
6.4.1;5.4.1?Kontextabgrenzung: Vogelperspektive;150
6.4.2;5.4.2?Bausteinsicht: Code-im-Großen;152
6.4.3;5.4.3?Schnittstellen: Die Brücken zwischen Welten;155
6.4.4;5.4.4?Laufzeitsicht: Was geschieht wann?;156
6.4.5;5.4.5?Verteilungssicht: Zusammenhang zur technischen Infrastruktur;157
6.4.6;5.4.6?Querschnittliche Konzepte;158
6.4.7;5.4.7?Entscheidungen;160
6.5;5.5?Architekturdokumentation mit arc42;162
6.5.1;5.5.1?Aufbau von arc42;162
6.5.2;5.5.2?arc42 Canvas: Dokumentation kompakt;164
6.6;5.6?Notationen zur Modellierung: UML,?C4?und?andere;166
6.6.1;5.6.1?UML Kurzeinführung;167
6.6.2;5.6.2?C4 Kurzeinführung;171
6.6.3;5.6.3?Weitere Notationen für Softwarearchitektur;176
6.7;5.7?Werkzeuge zur Dokumentation;177
6.8;5.8?Weiterführende Literatur;180
7;6Analyse und Bewertung von Softwarearchitekturen;181
7.1;6.1?Qualitative Architekturbewertung;184
7.2;6.2?Quantitative Bewertung durch Metriken;191
7.3;6.3?Werkzeuge zur Bewertung;193
8;7 Technische und querschnittliche Konzepte;195
8.1;7.1?Persistenz;198
8.1.1;7.1.1?Motivation;198
8.1.2;7.1.2?Einflussfaktoren und Entscheidungskriterien;201
8.1.2.1;7.1.2.1?Art der zu speichernden Daten;202
8.1.2.2;7.1.2.2?Konsistenz und Verfügbarkeit (ACID, BASE oder CAP);203
8.1.2.3;7.1.2.3?Zugriff und Navigation;204
8.1.2.4;7.1.2.4?Deployment und Betrieb;205
8.1.3;7.1.3?Lösungsmuster;205
8.1.3.1;7.1.3.1?Persistenzschicht;205
8.1.3.2;7.1.3.2?DAO: Eine Miniatur-Persistenzschicht;208
8.1.4;7.1.4?Bekannte Risiken und Probleme;209
8.1.5;7.1.5?Weitere Themen zu Persistenz;210
8.1.6;7.1.6?Data Contracts: Daten als Schnittstelle;214
8.1.7;7.1.7?Zusammenhang zu anderen Themen;216
8.1.8;7.1.8?Praktische Vertiefung;218
8.1.9;7.1.9?Weiterführende Literatur;219
8.2;7.2?Geschäftsregeln;219
8.2.1;7.2.1?Motivation;219
8.2.2;7.2.2?Funktionsweise von Regelmaschinen;222
8.2.3;7.2.3?Kriterien pro & kontra Regelmaschinen;224
8.2.4;7.2.4?Mögliche Probleme;225
8.2.5;7.2.5?Weiterführende Literatur;226
8.3;7.3?Integration;227
8.3.1;7.3.1?Motivation;227
8.3.2;7.3.2?Typische Probleme;229
8.3.3;7.3.3?Lösungskonzepte;230
8.3.4;7.3.4?Entwurfsmuster zur Integration;234
8.3.5;7.3.5?Zusammenhang mit anderen Themen;234
8.3.6;7.3.6?Weiterführende Literatur;235
8.4;7.4?Verteilung;236
8.4.1;7.4.1?Motivation;236
8.4.2;7.4.2?Typische Probleme;236
8.4.3;7.4.3?Lösungskonzept;236
8.4.4;7.4.4?Konsequenzen und Risiken;237
8.4.5;7.4.5?Zusammenhang mit anderen Themen;238
8.4.6;7.4.6?Weiterführende Literatur;238
8.5;7.5?Kommunikation;238
8.5.1;7.5.1?Motivation;239
8.5.2;7.5.2?Entscheidungsalternativen;239
8.5.3;7.5.3?Grundbegriffe der Kommunikation;239
8.5.4;7.5.4?Weiterführende Literatur;243
8.6;7.6?Grafische Oberflächen (GUI);243
8.6.1;7.6.1?Motivation;243
8.6.2;7.6.2?Einflussfaktoren und Entscheidungskriterien;243
8.6.3;7.6.3?GUI-relevante Architekturmuster;246
8.6.4;7.6.4?Struktur und Ergonomie von Benutzeroberflächen;246
8.6.5;7.6.5?Bekannte Risiken und Probleme;248
8.6.6;7.6.6?Zusammenhang zu anderen Themen;250
8.7;7.7?Sicherheit;250
8.7.1;7.7.1?Motivation – Was ist IT-Sicherheit?;250
8.7.2;7.7.2?Sicherheitsziele;251
8.7.3;7.7.3?Lösungskonzepte;253
8.7.4;7.7.4?Security Engineering mit Patterns;260
8.7.5;7.7.5?Weiterführende Literatur;261
8.8;7.8?Protokollierung;261
8.8.1;7.8.1?Typische Probleme;262
8.8.2;7.8.2?Lösungskonzept;263
8.8.3;7.8.3?Zusammenhang mit anderen Themen;263
8.9;7.9?Ausnahme- und Fehlerbehandlung;264
8.9.1;7.9.1?Motivation;264
8.9.2;7.9.2?Fehlerkategorien schaffen Klarheit;266
8.9.3;7.9.3?Muster zur Fehlerbehandlung;268
8.9.4;7.9.4?Mögliche Probleme;269
8.9.5;7.9.5?Zusammenhang mit anderen Themen;270
8.9.6;7.9.6?Weiterführende Literatur;271
8.10;7.10?Skalierbarkeit;271
8.10.1;7.10.1?Skalierungsstrategien;271
8.10.2;7.10.2?Elastizität;272
8.10.3;7.10.3?Scale-Up-Strategie;272
8.10.4;7.10.4?Vertikale Scale-Out-Strategie;272
8.10.5;7.10.5?Horizontale Scale-Out-Strategie;273
8.10.6;7.10.6?Der Strategiemix;273
8.10.7;7.10.7?Allgemeine Daumenregeln;274
8.10.8;7.10.8?CPU-Power;274
8.10.9;7.10.9?GPU-Power;274
8.10.10;7.10.10?RAIDs, SANs und andere Speichersysteme;275
8.10.11;7.10.11?Bussysteme für die Speicheranbindung;275
8.10.12;7.10.12?Geringere Bandbreite im Netz;276
8.11;7.11?Container und die Cloud;276
8.11.1;7.11.1?Was bedeutet „Cloud“?;277
8.11.2;7.11.2?Virtuelle Maschinen (VMs) und Container;279
8.11.3;7.11.3?Von Monolithen in die Cloud;281
8.11.4;7.11.4?Was Sie noch über die Cloud wissen sollten…;284
8.11.5;7.11.5?Weiterführende Literatur;286
8.12;7.12?Weitere spannende Themen;286
9;8Systematische Verbesserung und?Evolution;289
9.1;8.1?Wege in den Abgrund;291
9.2;8.2?Systematisch verbessern;292
9.3;8.3?Bewährte Praktiken und Muster;296
9.4;8.4?Analyse: Probleme identifizieren;297
9.5;8.5?Evaluate: Probleme und Maßnahmen bewerten;299
9.6;8.6?Improve: Verbesserungsmaßnahmen planen und durchführen;300
9.6.1;8.6.1?Maxime für Verbesserungsprojekte;300
9.6.2;8.6.2?Kategorien von Verbesserungsmaßnahmen;300
9.7;8.7?Crosscutting: phasenübergreifende?Praktiken;304
9.8;8.8?Mehr zu aim42?;305
9.9;8.9?Weiterführende Literatur;305
10;9Beispiele von Softwarearchitekturen;307
10.1;9.1?Beispiel: Datenmigration im Finanzwesen;308
10.2;9.2?Beispiel: Kampagnenmanagement im CRM;325
11;10iSAQB Curriculum;351
11.1;10.1?Standardisierte Lehrpläne für?Softwarearchitektur;352
11.1.1;10.1.1?Grundlagenausbildung und Zertifizierung Foundation-Level;352
11.1.2;10.1.2?Fortgeschrittene Aus- und Weiterbildung (Advanced-Level);353
11.2;10.2?iSAQB-Foundation-Level-Lehrplan;353
11.2.1;10.2.1?Können, Wissen und Verstehen;354
11.2.2;10.2.2?Voraussetzungen und Abgrenzungen;354
11.2.3;10.2.3?Struktur des iSAQB-Foundation-Lehrplans;355
11.2.4;10.2.4?Zertifizierung gemäß iSAQB;355
11.3;10.3?Beispielfragen zur Foundation-Level-Prüfung;356
12;Literatur;361
13;Stichwortverzeichnis;365