Der nachfolgende Text wurden mit KI erstellt und kann Fehler enthalten. Fehler gefunden? Bei GitHub editieren
Kernaussagen
- Architektur heißt für Alexander von Zitzewitz innere Struktur: Komponenten, erlaubte Kommunikationsrichtungen, Interfaces, geschachtelt wie in einem UML-Komponentendiagramm
- Eine gute Struktur steht auf zwei Säulen: eine möglichst zyklenfreie Abhängigkeitsstruktur und ein Architekturmodell
- Kleine Zyklen sind harmlos, große Zyklen mit 20 bis 1.000 Elementen zerstören die Modularisierung und bilden den Big Ball of Mud
- Hibernate und Cassandra funktionieren trotz Zyklen aus über 1.000 Klassen, aber niemand kann sich schnell einarbeiten
- Technical Friction statt technische Schulden: Die Zyklen entstehen unbewusst, weil weder Entwickler noch Compiler sie beim Einbau einer Abhängigkeit sehen
- KI verstärkt, was sie vorfindet: Eine Stanford-Studie fand die größten Produktivitätsgewinne bei der besten Softwarestruktur, in schlechtem Code braucht Claude mehr Tokens
- Ohne Werkzeug analysiert die KI Abhängigkeiten per Grep, weil sie kein internes Dependency-Modell hat; auch das Language Server Protocol löst keine Abhängigkeiten auf
- Ein MCP-Server mit Dependency-Modell ist die Quelle der Wahrheit und beantwortet vor der ersten Zeile Code, ob eine Kante erlaubt ist und ob sie einen Zyklus erzeugt
- ArchUnit prüft erst nach dem Codieren und beschreibt Verbote statt eines Modells; Sprachmittel wie public und private oder Java-Module reichen nicht aus
- Zyklen löst man inkrementell: zwei Kanten schneiden, Claude das Refactoring geben, Tests laufen lassen, nächster Schritt
Behandelte Fragen
- Was bedeutet Architektur, wenn Alexander von Zitzewitz von Struktur spricht?
- Warum sind große Zyklen ein Problem, wenn Projekte wie Hibernate damit erfolgreich sind?
- Brauche ich noch Architektur, wenn die KI den Code schreibt und pflegt?
- Was sind gute Beispiele für strukturierte Software?
- Wie findet man in einem Big Ball of Mud die Kanten, die man schneiden muss?
- Kann die KI Zyklen selbst auflösen, und wo braucht sie deterministisches Tooling?
- Wie sagt man Claude, womit es entfernte Kanten ersetzen soll, ohne Funktionalität zu brechen?
- Warum reicht eine Regeldefinition in CLAUDE.md nicht?
- Was sieht der MCP-Server bei dynamischen Sprachen und Reflection nicht?
- Hilft der Ansatz nur im Greenfield oder auch bei Modernisierung und Legacy?
Glossar
- Big Ball of Mud: Ein Zyklus aus vielen Klassen über Schichten und Komponenten hinweg, in dem die Architektur erodiert ist
- Zyklenfreiheit: Abhängigkeiten laufen nur in eine Richtung; Voraussetzung, um Komponenten herauslösen und ersetzen zu können
- Technical Friction: Alexanders Begriff für unbewusst entstandene Strukturprobleme, im Gegensatz zur bewusst aufgenommenen technischen Schuld
- Exploration View: Darstellung in Sonargraph, die Elemente untereinander anordnet und Abhängigkeiten als Bögen zeichnet; wenige Bögen auf der rechten Seite zeigen, wo man schneiden muss
- Virtual Refactoring: Simulation in Sonargraph, was passiert, wenn eine Kante entfernt wird, mit Aufgabenbeschreibung für die Umsetzung
- Dependency Inversion: Pattern, mit dem ein Interface die Richtung einer Abhängigkeit umdreht und so Zyklen aufbricht
- Architektur-DSL: Textuelle Sprache aus Artefakten, Include-Mustern, Relaxed Layering und Interfaces, die beschreibt, welche Komponenten auf welche zugreifen dürfen
- MCP-Server: Werkzeug, das einem KI-Agenten deterministische Funktionen bereitstellt, hier das Dependency-Modell und die Architekturprüfung
Erwähnte Technologien und Werke
- Sonargraph: Produktfamilie von hello2morrow für statische Analyse mit Schwerpunkt auf Architektur und Metriken, in der Folge an Gradle gezeigt
- Zügel: MCP-Server von hello2morrow für Python, Java und C#, der Dependency-Modell und Architektur-DSL für KI-Agenten bereitstellt
- Dependometer: Frühes Architektur-Tool, das Alexander um 2000 für BMW gebaut hat
- Claude und Claude Code: Anthropics LLM und Coding-Agent, mit denen die Experimente der Folge liefen
- ArchUnit: Java-Bibliothek, die Architekturregeln als Tests prüft
- Spring Framework, Gradle, Hibernate, Apache Cassandra, jPOS: Open-Source-Projekte, deren Struktur Alexander analysiert hat
- Language Server Protocol (LSP): Protokoll für Editor-Funktionen, dem die Abhängigkeitsauflösung fehlt
- Stanford-Studie zur KI-Produktivität: Beobachtung von 120.000 Entwicklern mit im Schnitt zehn Prozent Produktivitätsgewinn