Softwarearchitektur für gewachsene Systeme
Bestehende Architekturen rekonstruieren, stabilisieren und evolutionär weiterentwickeln
01 Intro
Bei gewachsenen Systemen entspricht die reale Architektur häufig weder der
ursprünglichen Dokumentation noch dem gewünschten Zielbild. Abhängigkeiten
haben sich verschoben, Grenzen sind erodiert und technische Entscheidungen
wurden unter unterschiedlichen Rahmenbedingungen getroffen.
Der Kurs behandelt Architektur deshalb nicht als Neuentwurf auf der grünen
Wiese, sondern als Arbeit an einem existierenden System. Die Teilnehmer
rekonstruieren Ist-Architekturen, identifizieren strukturelle Probleme und
entwickeln realistische Schritte zu einer besser beherrschbaren
Architektur.
Kurs-ID
SWE-010
Dauer
3 Tage
Format
Präsenz · Live Online · Inhouse
Vorkenntnisse
Erfahrung in Softwareentwicklung und grundlegendes Verständnis von Softwarearchitektur
02 Trainingsprogramm
Inhalte
Architektur im gewachsenen System
- geplante Architektur
- reale Architektur
- Architekturdrift
- Erosion
- Constraints
- technische Schulden
Ist-Architektur rekonstruieren
- Code
- Module
- Build-Struktur
- Abhängigkeiten
- Laufzeit
- Dokumentation
Abhängigkeiten analysieren
- statische Abhängigkeiten
- Laufzeitabhängigkeiten
- Zyklen
- Kopplung
- gemeinsame Daten
- Dependency Graphs
Grenzen untersuchen
- Module
- Komponenten
- fachliche Grenzen
- technische Grenzen
- Verantwortlichkeiten
- Boundary Erosion
Architekturprobleme erkennen
- Big Ball of Mud
- Layer Violations
- Distributed Monolith
- Shared Database
- God Components
- unklare Ownership
Qualitätsziele für die Weiterentwicklung
- Änderbarkeit
- Testbarkeit
- Deployability
- Performance
- Zuverlässigkeit
- Priorisierung
Zielbilder entwickeln
- realistische Zielarchitektur
- Modularisierung
- Ports and Adapters
- fachliche Grenzen
- Services
- Trade-offs
Architektur schrittweise verändern
- Architectural Refactoring
- Branch by Abstraction
- Strangler Fig
- Adapter
- Facades
- Feature Flags
Datenarchitektur entkoppeln
- Shared Database
- Schema Ownership
- Zugriff kapseln
- Replikation
- Migration
- Übergangslösungen
Architektur absichern
- Architekturtests
- Dependency Rules
- Fitness Functions
- Continuous Integration
- Reviews
- technische Governance
Evolutionäre Architektur
- kleine Entscheidungen
- Feedback
- Optionen offenhalten
- irreversible Entscheidungen
- Architekturmetriken
- Dokumentation
Architektur-Sanierungsprojekt
- Ist-Architektur visualisieren
- Probleme identifizieren
- Qualitätsziele definieren
- Zielbild entwickeln
- Übergangsschritte planen
- Architekturregeln festlegen
03 Durchführung
Rahmen und Organisation
Dauer
3 Tage
Durchführung
Präsenz oder Live Online, vorzugsweise als Inhouse-Schulung
Schwerpunkt
Inhouse-Schulungen für Unternehmen und Teams
Sprache
Deutsch, englische Fachbegriffe und Dokumentation
Unterlagen
Kursunterlagen, Beispiele und Übungsaufgaben
Technik
Eigener Rechner für die praktischen Übungen
Inhouse-Schulungen
Die eigene Systemarchitektur kann als Grundlage für Rekonstruktion und
Sanierungsplanung dienen.
04 Zielgruppe
Für wen ist der Kurs gedacht?
Softwarearchitekten, Senior-Entwickler und technische Leads, die bestehende
Architekturen weiterentwickeln müssen.
Voraussetzungen
Praktische Softwareentwicklung und grundlegende Architekturkenntnisse.
05 Lernziele
Was Sie nach dem Kurs können
Die Teilnehmer können reale Architekturen rekonstruieren,
Architekturdefizite analysieren, realistische Zielbilder entwickeln und
strukturelle Veränderungen schrittweise absichern.
06 FAQ
Häufige Fragen
Worin unterscheidet sich der Kurs von den Architekturgrundlagen?
Der Grundlagenkurs vermittelt Architekturprinzipien und Entwurf. Hier ist der Ausgangspunkt ausdrücklich eine bereits vorhandene, gewachsene Architektur mit ihren Constraints.
Wie grenzt sich der Kurs gegen die Legacy-Modernisierung ab?
Der Modernisierungskurs behandelt ein Legacy-System insgesamt. Hier liegt der Schwerpunkt auf dessen architektonischen Strukturen und deren evolutionärer Veränderung.
Geht es um die Migration zu Microservices?
Nur wenn Microservices für das konkrete Problem sinnvoll sind. Eine saubere Modularisierung kann die bessere Zielarchitektur sein.