Ein sauberes, nachhaltiges und erweiterbares Softwaredesign ist die Grundlage professioneller Softwareentwicklung - ob Sie bereits als Softwareentwickler oder -entwicklerin tätig sind, oder sich noch in Ausbildung oder Studium befinden.
In diesem umfassenden Handbuch vermittelt Kristian Köhler praxisnah und modern, wie sich die klassischen Patterns auf der Code-Ebene mit Ansätzen auf Architektur- bzw. Strukturebene verbinden lassen. So erfahren Sie alles über gutes Softwaredesign, wie es in der modernen Softwareentwicklung tatsächlich angewendet wird. Ergänzt wird das Buch durch diverse Code-Beispiele, Best Practices und typische Kontexte, die es als Lehr- und Nachschlagewerk unabdingbar machen.
Aus dem Inhalt:
- Clean Code & Clean Architecture
- Domain Driven Design
- Microservice-Pattern
- Entwurfsmusterbeschreibungen
- Prinzipien für gutes Softwaredesign
- Dokumentation
- Erzeugungs-, Struktur-, Verhaltens-, Architektur- und Datenmuster
- Anwendungsorganisation
- Systemarchitekturmuster
- Cloud-native Patterns
Inhaltsverzeichnis
Materialien zum Buch . . . 11
1. Einleitung . . . 13
1. 1 . . . Programmierparadigmen . . . 16
1. 2 . . . Was sind Design-Patterns und wie sind sie entstanden? . . . 26
1. 3 . . . Was sind Softwarearchitektur und Softwaredesign? . . . 31
1. 4 . . . Die Evolution in der Softwareentwicklung und -architektur . . . 38
2. Prinzipien für gutes Softwaredesign . . . 65
2. 1 . . . Grundkonzepte der objektorientierten Programmierung . . . 66
2. 2 . . . Clean-Code-Prinzipien . . . 78
2. 3 . . . Die SOLID-Prinzipien . . . 114
2. 4 . . . Information Hiding . . . 138
2. 5 . . . Inversion of Control und Dependency Injection . . . 139
2. 6 . . . Separation of Concerns und Aspektorientierung . . . 141
2. 7 . . . Mit Unit-Tests die Qualität sicherstellen . . . 145
3. Sourcecode und Dokumentation der Softwareentwicklung . . . 151
3. 1 . . . Kommentare im Sourcecode . . . 152
3. 2 . . . Dokumentation der Softwarearchitektur . . . 166
3. 3 . . . UML zur Darstellung von Software . . . 179
3. 4 . . . C4 Model zur Darstellung von Softwarearchitektur . . . 190
3. 5 . . . Doc-as-Code . . . 199
4. Softwaremuster . . . 207
4. 1 . . . Factory-Method/Fabrikmethode . . . 208
4. 2 . . . Builder/Erbauer . . . 217
4. 3 . . . Strategy/Strategie . . . 227
4. 4 . . . Chain of Responsibility/Zuständigkeitskette . . . 235
4. 5 . . . Command/Kommando . . . 244
4. 6 . . . Observer/Beobachter . . . 256
4. 7 . . . Singleton/Einzelstück . . . 266
4. 8 . . . Adapter/Wrapper . . . 274
4. 9 . . . Iterator . . . 284
4. 10 . . . Composite/Kompositum . . . 292
4. 11 . . . Der Begriff der Anti-Patterns . . . 300
5. Softwarearchitektur, -stile und -Patterns . . . 307
5. 1 . . . Die Rolle des Softwarearchitekten . . . 308
5. 2 . . . Softwarearchitekturstile . . . 311
5. 3 . . . Stile zur Anwendungsorganisation und Codestruktur . . . 330
5. 4 . . . Patterns für die Unterstützung der Architekturstile . . . 345
6. Kommunikation zwischen Services . . . 369
6. 1 . . . Stile der Anwendungskommunikation . . . 371
6. 2 . . . Resilience Patterns . . . 379
6. 3 . . . Messaging Patterns . . . 413
6. 4 . . . Patterns zur Schnittstellenversionierung . . . 438
7. Patterns und Konzepte für verteilte Anwendungen . . . 449
7. 1 . . . Konsistenz . . . 450
7. 2 . . . Das CAP-Theorem . . . 451
7. 3 . . . Das PACELC-Theorem . . . 453
7. 4 . . . Eventual Consistency . . . 454
7. 5 . . . Stateless Architecture Pattern . . . 457
7. 6 . . . Database per Service Pattern . . . 463
7. 7 . . . Optimistic Locking Pattern . . . 466
7. 8 . . . Saga Pattern -- das Verteilte-Transaktionen-Pattern . . . 475
7. 9 . . . Transactional Outbox Pattern . . . 480
7. 10 . . . Event Sourcing Pattern . . . 486
7. 11 . . . Command Query Responsibility Segregation Pattern . . . 492
7. 12 . . . Distributed Tracing Pattern . . . 498
Index . . . 509