1. Einleitung
Kapitel 1 beschreibt die tragische Geschichte eines (Architektur-)Desasters.
2. Softwarearchitektur: Grundlagen und Aufgaben
Kapitel 2 definiert die Grundlagen der Softwarearchitektur. Sie lernen, was Architektur und Architekt:innen sind, und erfahren wichtige Konzepte wie Systeme, Komponenten, Beziehungen und Prinzipien. Zudem erfahren Sie, welche Aufgaben Softwarearchitekt:innen haben und wie ihre Rolle und Entscheidungsprozesse gestaltet sind.
3. Anforderungen klären
Kapitel 3 beschreibt die wesentlichen Aktivitäten zur Klärung der Anforderungen bei der Architekturentwicklung. Sie lernen, wie Sie relevante Stakeholder ermitteln, Systeme kategorisieren, die Fachdomäne und Qualitätsanforderungen klären sowie Einflussfaktoren und Randbedingungen identifizieren.
4. Entwurf: Grundlagen, Methoden und Muster
Kapitel 4 konzentriert sich auf die Grundlagen des Entwurfs von Softwarearchitekturen. Sie erfahren, welche Prinzipien und Heuristiken es gibt, lernen verschiedene Entwurfsmethoden kennen und erhalten Anleitungen zur Gestaltung von Schnittstellen. Außerdem entdecken Sie verschiedene Architekturmuster und deren Anwendung in der Softwareentwicklung.
5. Architekturen kommunizieren, dokumentieren und modellieren
Kapitel 5 widmet sich der Kommunikation und Dokumentation von Softwarearchitekturen. Sie erhalten Tipps für eine effektive Dokumentation und lernen verschiedene Sichten zur Darstellung von Architekturen kennen. Zusätzlich lernen Sie das arc42-Template und verschiedene Notationen zur Modellierung, wie UML und C4, kennen.
6. Analyse und Bewertung von Softwarearchitekturen
Kapitel 6 zeigt Ihnen Methoden zur qualitativen und quantitativen Bewertung von Softwarearchitekturen. Sie lernen, wie Sie Werkzeuge zur Bewertung anwenden und die Ergebnisse interpretieren können.
7. Technische und querschnittliche Konzepte
Kapitel 7 bietet Ihnen einen umfassenden Überblick über technische und querschnittliche Konzepte in der Softwarearchitektur. Sie lernen, wie Sie Themen wie Persistenz, Geschäftsregeln, Integration, Verteilung, Kommunikation, Sicherheit, grafische Oberflächen, Protokollierung, Ausnahme- und Fehlerbehandlung sowie Skalierbarkeit und Cloud-Technologien in Ihre Architektur integrieren.
8. Systematische Verbesserung und Evolution
Kapitel 8 erklärt Ihnen systematische Verbesserungs- und Evolutionsprozesse für Softwarearchitekturen. Sie lernen bewährte Praktiken und Muster kennen, erfahren Methoden zur Problemanalyse und -bewertung und erhalten Einblicke in verschiedene Kategorien von Verbesserungsmaßnahmen. Außerdem entdecken Sie phasenübergreifende Praktiken und weiterführende Literatur.
9. Beispiele von Softwarearchitekturen
Kapitel 9 präsentiert Ihnen Beispiele von Softwarearchitekturen. Sie beleuchten spezifische Anwendungsfälle wie Datenmigration im Finanzwesen und Kampagnenmanagement im CRM und zeigen Ihnen praxisnahe Lösungen und Best Practices auf.
10. iSAQB Curriculum
Kapitel 10 stellt Ihnen die standardisierten Lehrpläne für Softwarearchitektur des iSAQB vor. Sie erfahren mehr über die Grundlagen- und Fortbildungsausbildung, die Struktur des iSAQB-Foundation-Level-Lehrplans sowie Beispielprüfungsfragen für die Foundation-Level-Zertifizierung.
11. Literatur und Quellen
Ausführliche Literaturhinweise und weiterführende Quellen.
eins
1.1 Softwarearchitekt:innen
1.2 Effektiv, agil und pragmatisch
1.3 Wer sollte dieses Buch lesen?
1.4 Wegweiser durch das Buch
1.5 Webseite zum Buch
1.6 Weiterführende Literatur
1.7 Danksagung
zwei
2.1 Was ist Softwarearchitektur?
2.1.1 System
2.1.2 Komponenten
2.1.3 Beziehungen
2.1.4 Umgebung
2.1.5 Komponenten + Beziehungen = Strukturen
2.1.6 Prinzipien (synonym: Konzepte)
2.1.7 Entwurf und Evolution
2.2 Architekturentscheidungen
2.3 Die Aufgaben von Softwarearchitekt:innen
2.3.1 Anforderungen klären
2.3.2 Drei Kategorien von Entwurfsentscheidungen
2.3.3 Architektur kommunizieren und dokumentieren
2.3.4 Umsetzung begleiten: Von Goldstücken und Missverständnissen
2.3.5 Architektur analysieren und bewerten
2.4 Rolle
2.4.1 Monarchie
2.4.2 Architekt:in im Team
2.4.3 Architekturagent:innen
2.4.4 Demokratie oder: Team-Architektur
2.5 Architekturen entstehen (meist) iterativ
2.6 Weiterführende Literatur
drei
3.1 Was ist Kernaufgabe oder Ziel des Systems?
3.2 Relevante Stakeholder ermitteln
3.3 Welche Kategorie von System?
3.4 Fachdomäne klären
3.5 Qualitätsanforderungen klären
3.6 Externe Nachbarsysteme: Kontextabgrenzung
3.7 Einflussfaktoren und Randbedingungen ermitteln
vier
4.1 Grundlagen, Prinzipien und Heuristiken
4.1.1 Grundlagen des Entwurfs
4.1.2 Prinzipien
4.1.2.1 Lose (geringe) Kopplung
4.1.2.2 Hohe Kohäsion
4.1.2.3 Trenne Verantwortlichkeiten/Belange
4.1.2.4 Modularisierung
4.1.2.5 Abstraktion, Kapselung und das Geheimnisprinzip
4.1.2.6 Hohe Konsistenz
4.1.2.7 Keine zyklischen Abhängigkeiten
4.1.2.8 SOLID-Prinzipien des objektorientierten Entwurfs
4.1.3 Heuristiken
4.2 Entwurfsmethoden
4.2.1 Domain-Driven Design (Entwurf nach Fachlichkeit)
4.2.2 Quality-Driven Software Architecture
4.2.3 Top-down und Bottom-up
4.2.4 Sichtenbasierter Entwurf
4.2.4.1 Sichten in der Softwarearchitektur
4.2.4.2 Entwurf der Kontextabgrenzung
4.2.4.3 Entwurf der Bausteinsicht
4.2.4.4 Entwurf der Laufzeitsicht
4.2.4.5 Entwurf der Verteilungssicht
4.3 Schnittstellen entwerfen
4.3.1 Anforderungen an Schnittstellen
4.3.2 Worauf müssen Sie achten?
4.3.3 Tipps zum Entwurf von Schnittstellen
4.4 Architekturmuster (Patterns)
4.4.1 Schichten (Layer)
4.4.2 Ports-und-Adapter
4.4.3 Client-Server
4.4.4 Microservices
4.4.5 Pipes und Filter
4.4.6 Batch-Pattern
4.4.7 Repository
4.4.8 Blackboard
4.4.9 Command Query Responsibility Segregation (CQRS)
4.4.10 Broker
4.4.11 Peer-to-Peer
4.4.12 Ereignisbasierte Systeme – Event Systems
4.4.12.1 Ungepufferte Event Systems
4.4.12.2 Message- oder Event-Queues
4.4.12.3 Message-Service
4.4.13 Model-View-Controller
4.4.14 Presentation Model
4.4.15 REST-Architektur
4.4.16 Adapter
4.4.17 Stellvertreter (Proxy)
4.4.18 Fassade
4.4.19 Beobachter (Observer)
4.5 Weiterführende Literatur
fuenf
5.1 Warum kommunizieren und dokumentieren
5.2 Anforderungen an Architekturdokumentation
5.3 Effektiv dokumentieren
5.3.1 Tipps für bessere Architekturdiagramme
5.4 Bestandteile von Architekturdokumentation
5.4.1 Kontextabgrenzung: Vogelperspektive
5.4.2 Bausteinsicht: Code-im-Großen
5.4.3 Schnittstellen: Die Brücken zwischen Welten
5.4.4 Laufzeitsicht: Was geschieht wann?
5.4.5 Verteilungssicht: Zusammenhang zur technischen Infrastruktur
5.4.6 Querschnittliche Konzepte
5.4.7 Entscheidungen
5.5 Architekturdokumentation mit arc42
5.5.1 Aufbau von arc42
5.5.2 arc42 Canvas: Dokumentation kompakt
5.6 Notationen zur Modellierung: UML, C4 und andere
5.6.1 UML Kurzeinführung
5.6.2 C4 Kurzeinführung
5.6.3 Weitere Notationen für Softwarearchitektur
5.7 Werkzeuge zur Dokumentation
5.8 Weiterführende Literatur
sechs
6.1 Qualitative Architekturbewertung
6.2 Quantitative Bewertung durch Metriken
6.3 Werkzeuge zur Bewertung
sieben
7.1 Persistenz
7.1.1 Motivation
7.1.2 Einflussfaktoren und Entscheidungskriterien
7.1.2.1 Art der zu speichernden Daten
7.1.2.2 Konsistenz und Verfügbarkeit (ACID, BASE oder CAP)
7.1.2.3 Zugriff und Navigation
7.1.2.4 Deployment und Betrieb
7.1.3 Lösungsmuster
7.1.3.1 Persistenzschicht
7.1.3.2 DAO: Eine Miniatur-Persistenzschicht
7.1.4 Bekannte Risiken und Probleme
7.1.5 Weitere Themen zu Persistenz
7.1.6 Data Contracts: Daten als Schnittstelle
7.1.7 Zusammenhang zu anderen Themen
7.1.8 Praktische Vertiefung
7.1.9 Weiterführende Literatur
7.2 Geschäftsregeln
7.2.1 Motivation
7.2.2 Funktionsweise von Regelmaschinen
7.2.3 Kriterien pro & kontra Regelmaschinen
7.2.4 Mögliche Probleme
7.2.5 Weiterführende Literatur
7.3 Integration
7.3.1 Motivation
7.3.2 Typische Probleme
7.3.3 Lösungskonzepte
7.3.4 Entwurfsmuster zur Integration
7.3.5 Zusammenhang mit anderen Themen
7.3.6 Weiterführende Literatur
7.4 Verteilung
7.4.1 Motivation
7.4.2 Typische Probleme
7.4.3 Lösungskonzept
7.4.4 Konsequenzen und Risiken
7.4.5 Zusammenhang mit anderen Themen
7.4.6 Weiterführende Literatur
7.5 Kommunikation
7.5.1 Motivation
7.5.2 Entscheidungsalternativen
7.5.3 Grundbegriffe der Kommunikation
7.5.4 Weiterführende Literatur
7.6 Grafische Oberflächen (GUI)
7.6.1 Motivation
7.6.2 Einflussfaktoren und Entscheidungskriterien
7.6.3 GUI-relevante Architekturmuster
7.6.4 Struktur und Ergonomie von Benutzeroberflächen
7.6.5 Bekannte Risiken und Probleme
7.6.6 Zusammenhang zu anderen Themen
7.7 Sicherheit
7.7.1 Motivation – Was ist IT-Sicherheit?
7.7.2 Sicherheitsziele
7.7.3 Lösungskonzepte
7.7.4 Security Engineering mit Patterns
7.7.5 Weiterführende Literatur
7.8 Protokollierung
7.8.1 Typische Probleme
7.8.2 Lösungskonzept
7.8.3 Zusammenhang mit anderen Themen
7.9 Ausnahme- und Fehlerbehandlung
7.9.1 Motivation
7.9.2 Fehlerkategorien schaffen Klarheit
7.9.3 Muster zur Fehlerbehandlung
7.9.4 Mögliche Probleme
7.9.5 Zusammenhang mit anderen Themen
7.9.6 Weiterführende Literatur
7.10 Skalierbarkeit
7.10.1 Skalierungsstrategien
7.10.2 Elastizität
7.10.3 Scale-Up-Strategie
7.10.4 Vertikale Scale-Out-Strategie
7.10.5 Horizontale Scale-Out-Strategie
7.10.6 Der Strategiemix
7.10.7 Allgemeine Daumenregeln
7.10.8 CPU-Power
7.10.9 GPU-Power
7.10.10 RAIDs, SANs und andere Speichersysteme
7.10.11 Bussysteme für die Speicheranbindung
7.10.12 Geringere Bandbreite im Netz
7.11 Container und die Cloud
7.11.1 Was bedeutet „Cloud“?
7.11.2 Virtuelle Maschinen (VMs) und Container
7.11.3 Von Monolithen in die Cloud
7.11.4 Was Sie noch über die Cloud wissen sollten
7.11.5 Weiterführende Literatur
7.12 Weitere spannende Themen
acht
8.1 Wege in den Abgrund
8.2 Systematisch verbessern
8.3 Bewährte Praktiken und Muster
8.4 Analyse: Probleme identifizieren
8.5 Evaluate: Probleme und Maßnahmen bewerten
8.6 Improve: Verbesserungsmaßnahmen planen und durchführen
8.6.1 Maxime für Verbesserungsprojekte
8.6.2 Kategorien von Verbesserungsmaßnahmen
8.7 Crosscutting: phasenübergreifende Praktiken
8.8 Mehr zu aim42
8.9 Weiterführende Literatur
neun
9.1 Beispiel: Datenmigration im Finanzwesen
9.2 Beispiel: Kampagnenmanagement im CRM
zehn
10.1 Standardisierte Lehrpläne für Softwarearchitektur
10.1.1 Grundlagenausbildung und Zertifizierung Foundation-Level
10.1.2 Fortgeschrittene Aus- und Weiterbildung (Advanced-Level)
10.2 iSAQB-Foundation-Level-Lehrplan
10.2.1 Können, Wissen und Verstehen
10.2.2 Voraussetzungen und Abgrenzungen
10.2.3 Struktur des iSAQB-Foundation-Lehrplans
10.2.4 Zertifizierung gemäß iSAQB
10.3 Beispielfragen zur Foundation-Level-Prüfung