C4-Modell Übersicht
Das C4-Modell ist eine schlanke grafische Notationstechnik zur Modellierung der Architektur von Softwaresystemen. Erstellt von Simon Brown, bietet es eine Möglichkeit, Softwarearchitektur auf verschiedenen Abstraktionsebenen zu kommunizieren.
Warum C4?
Traditionelle Architekturdiagramme leiden oft unter:
- Inkonsistente Notation: Verschiedene Teams verwenden verschiedene Symbole
- Falsche Detailebene: Entweder zu abstrakt oder zu detailliert
- Veraltete Dokumentation: Diagramme spiegeln nicht die Realität wider
Das C4-Modell löst diese Probleme durch:
- Standardisierte Abstraktionsebenen: Vier klare Ebenen von hoch bis niedrig
- Einfache Notation: Leicht verständlich für technische und nicht-technische Zielgruppen
- Hierarchische Navigation: Hineinzoomen für mehr Details, herauszoomen für Kontext
Die Vier Ebenen
Ebene 1: Systemkontext
Das Systemkontext-Diagramm zeigt Ihr System als Box in der Mitte, umgeben von seinen Benutzern und anderen Systemen, mit denen es interagiert.
Zweck: Das große Bild zeigen - wie Ihr System in die Welt passt
Zielgruppe: Alle (technisch und nicht-technisch)
Enthält:
- Ihr Softwaresystem (zentral)
- Benutzer/Personas, die das System verwenden
- Externe Systeme, von denen Ihr System abhängt
Ebene 2: Container
Das Container-Diagramm zoomt in Ihr System hinein, um die technischen Bausteine auf hoher Ebene zu zeigen.
Zweck: Die wichtigsten Technologieentscheidungen zeigen und wie Verantwortlichkeiten verteilt sind
Zielgruppe: Technische Personen innerhalb und außerhalb des Entwicklungsteams
Enthält:
- Container (Anwendungen, Datenspeicher, etc.)
- Beziehungen zwischen Containern
- Verbindungen zu externen Systemen
Ebene 3: Komponente
Das Komponenten-Diagramm zoomt in einen Container hinein, um seine internen Komponenten zu zeigen.
Zweck: Zeigen, wie ein Container aus Komponenten aufgebaut ist und deren Verantwortlichkeiten
Zielgruppe: Softwarearchitekten und Entwickler
Enthält:
- Komponenten innerhalb eines Containers
- Beziehungen zwischen Komponenten
- Technologie-/Implementierungsentscheidungen
Ebene 4: Code
Das Code-Diagramm (optional) zeigt, wie eine Komponente implementiert ist.
Zweck: Details auf Code-Ebene für komplexe oder kritische Komponenten zeigen
Zielgruppe: Entwickler
Enthält:
- Klassen, Interfaces, Funktionen
- Vererbungs- und Implementierungsbeziehungen
- Design Patterns
C4 in Archyl
Archyl implementiert das C4-Modell mit diesen Funktionen:
Navigation
- Doppelklick auf ein beliebiges Element, um zur nächsten Ebene zu zoomen
- Verwenden Sie die Breadcrumbs, um nach oben zu navigieren
- Tastenkürzel für schnelle Navigation (← → ↑ ↓)
Elementtypen
Jede Ebene hat ihre eigenen Elementtypen:
| Ebene | Elementtypen |
|---|---|
| Systemkontext | System, Externes System, Person |
| Container | Container, Externer Container |
| Komponente | Komponente |
| Code | Klasse, Interface, Funktion |
Beziehungen
Beziehungen können zwischen Elementen auf jeder Ebene erstellt werden:
- Ziehen Sie von einem Element zum anderen
- Fügen Sie Labels hinzu, die die Interaktion beschreiben
- Geben Sie die verwendete Technologie an
Styling
Passen Sie das Erscheinungsbild Ihrer Diagramme an:
- Farben für verschiedene Elementtypen
- Benutzerdefinierte Icons
- Gruppierung mit Overlays
Best Practices
Beginnen Sie oben
Beginnen Sie immer mit dem Systemkontext-Diagramm. Es zwingt Sie, darüber nachzudenken:
- Wer nutzt Ihr System?
- Von welchen externen Systemen sind Sie abhängig?
- Was ist der Umfang Ihres Systems?
Halten Sie es einfach
Jedes Diagramm sollte auf eine einzelne Seite/einen Bildschirm passen. Wenn nicht:
- Teilen Sie in mehrere Diagramme auf
- Reduzieren Sie den Detailgrad
- Verwenden Sie die nächste Ebene für mehr Details
Verwenden Sie konsistente Namen
- Verwenden Sie klare, beschreibende Namen
- Folgen Sie den Namenskonventionen Ihres Teams
- Vermeiden Sie Abkürzungen, die nicht allgemein verstanden werden
Dokumentieren Sie Beziehungen
Beziehungen sind genauso wichtig wie Elemente:
- Fügen Sie immer Labels hinzu, die die Interaktion beschreiben
- Schließen Sie die Technologie/das Protokoll ein, wenn relevant
- Zeigen Sie die Richtung der Kommunikation
Nächste Schritte
- Systemkontext - Tieferer Einblick in Ebene 1
- Container-Diagramme - Tieferer Einblick in Ebene 2
- Komponenten-Diagramme - Tieferer Einblick in Ebene 3
- Beziehungen - Lernen Sie, Elemente zu verbinden