C4 model
# C4 model

Das C4 model (C4-Modell, C4 steht für context, containers, components, and code) ist eine schlanke grafische Notationstechnik zur Modellierung der Architektur von Softwaresystemen. Es basiert auf der strukturellen Zerlegung eines Systems in Container und Komponenten und stützt sich auf bestehende Modellierungstechniken wie der Unified Modelling Language (UML) und Entity Relation Diagrams (ERD) für die detailliertere Zerlegung der einzelnen Architekturbausteine.

## Geschichte

Das C4 model wurde vom Softwarearchitekten Simon Brown zwischen 2006 und 2011 auf Grundlage der Unified Modelling Language (UML) und des 4+1 Sichtenmodells entwickelt. Die Einrichtung einer offiziellen Website unter Creative Commons Lizenz und ein 2018 veröffentlichter Artikel machten die aufkommende Technik populär.

## Übersicht

Das C4 model dokumentiert die Architektur eines Software-Systems, durch mehrere Sichten, welche die Dekomposition des Systems in Container und Komponenten, die Beziehungen zwischen diesen Elementen, und gegebenenfalls die Beziehung zu den Benutzern des Systems veranschaulichen.
Die Sichten sind entsprechend ihrer hierarchischen Ebene organisiert:
* Context diagrams (Kontext-Diagramme – Ebene 1): Zeigen den Umfang eines Systems sowie seine Beziehung zu Benutzern und anderen Systemen.
* Container diagrams (Container-Diagramme – Ebene 2): Zerlegen ein System in miteinander verbundene Container. Ein Container stellt dabei eine Anwendung oder einen Datenspeicher dar.
* Component diagrams (Komponenten-Diagramme – Ebene 3): Zerlegen Container in zusammenhängende Komponenten und setzen die Komponenten mit anderen Containern und Systemen in Beziehung.
* Code diagrams (Quelltext-Diagramme – Ebene 4): Liefern zusätzliche Details über den Entwurf der Architekturelemente, die auf Code abgebildet werden können. Das C4 model stützt sich auf dieser Ebene auf bestehende Notationen wie der Unified Modelling Language (UML), Entity Relation Diagrams (ERD) oder von integrierten Entwicklungsumgebungen (IDE) erzeugte Diagramme.
Für die ersten drei Ebenen verwendet das C4 model fünf grundlegende Diagrammelemente:
* Personen
* Softwaresysteme
* Container
* Komponenten
* Beziehungen
Die Technik macht keine Vorschriften für das Layout, die Form, die Farbe und den Stil dieser Elemente. Stattdessen empfiehlt das C4 model die Verwendung einfacher Diagramme, die auf verschachtelten Boxen basieren, um das interaktive, gemeinsame Zeichnen zu erleichtern. Die Technik fördert auch bewährte Modellierungspraktiken wie die Angabe eines Titels und einer Legende für jedes Diagramm sowie eine klare und eindeutige Beschriftung, um das Verständnis durch die Zielgruppe zu erleichtern.
Das C4 model erleichtert die kollaborative visuelle Architekturentwicklung und die evolutionäre Architektur im Kontext agiler Teams, in denen formalere Dokumentationsmethoden und ein Architekturentwurf im Vorfeld nicht erwünscht sind.