Über unsMediaKontaktImpressum
Liam Bergh 25. Februar 2025

Pragmatisch, aber vielseitig: Architekturdokumentation mit C4

"Gibt's dazu Doku?" Wer hat das nicht schon mal gefragt, als es darum ging, sich in eine vorhandene Software einzuarbeiten, eine Änderung an einem älteren System zu planen oder schlichtweg einen Fehler zu finden? Oftmals ist die Antwort auf so eine Frage leider nicht: "Klar, hier ist unsere aktuelle Architektur-Doku." Wenn es überhaupt etwas Brauchbares gibt, dann ist es häufig eine Mischung verschiedenster Diagramme, oft genug unbeschriftet, unpräzise und nur mit Vorwissen zu verstehen. Die möglichen Varianten reichen von überladen bis abstrakt, aber sie alle haben eins gemeinsam: Der Informationsgewinn hält sich in Grenzen.

Davon hatte Simon Brown 2006 genug und entwickelte das Dokumentationsframework C4. Dieses baut auf einer hierarchischen Darstellung auf, die die Software-Architektur in mehrere Abstraktionsebenen mit steigendem Detailgrad unterteilt. Auf diese Weise bietet es eine strukturierte und leicht verständliche Methode zur Visualisierung und Dokumentation von Software-Architekturen und gestattet Entwicklerinnen und Architektinnen, unterschiedliche Perspektiven eines Systems gezielt darzustellen. Die so erstellte Dokumentation ermöglicht sowohl technischen als auch nicht-technischen Stakeholdern ein gemeinsames Verständnis über den Aufbau einer Software-Lösung.

Ein weiterer Fokus lag darauf, Diagramme besser verständlich zu machen. Um das zu erreichen, werden Elemente mit Beschreibungen versehen, außerdem enthält jedes Diagramm eine Legende, wodurch man nicht an eine bestimmte Notation gebunden ist und die benutzten Elemente im Diagramm für jeden nachvollziehbar sind.

Das alles macht C4 zu einem Ansatz, der dabei helfen kann, die Darstellung komplexer Systeme zu vereinfachen, die Architektur besser zu kommunizieren und die Dokumentation effizienter zu gestalten. Ein Ansatz, der in diesem Artikel näher beleuchtet werden soll und Entwicklerinnen, Software-Architektinnen und Projekt-Managerinnen eine effektive und praxisnahe Methode zur Architekturvisualisierung aufzeigen soll.

Software-Architektur dokumentieren: Herausforderungen

Software-Architektur zu dokumentieren ist in allen Lebensphasen der Software wichtig, vom ersten Entwurf über die Entwicklung bis hin zur Auslieferung beim Kunden. Anfangs ist es vor allem ein Mittel zur Planung und zur Darstellung von Ideen, später eine Unterstützung für Wartung und Erweiterung des bestehenden Produkts. Dabei müssen verschiedene Anforderungen erfüllt werden, was Herausforderungen mit sich bringt.

Dokumentation ist immer auch Kommunikation. Architekturdokumentation dient nicht nur als technisches Nachschlagewerk, sondern auch als Verständigungsmittel zwischen Teams. Unklare oder uneinheitliche Begriffe können Missverständnisse hervorrufen und die Zusammenarbeit erschweren. Gleichzeitig kann es schwierig sein, geeignete Standards und Tools zu finden, die für alle zugänglich sind. Die Wahl des richtigen Ansatzes ist entscheidend, damit die Dokumentation sowohl praktikabel als auch verständlich ist.

Eine der größten Hürden ist die Balance zwischen Detaillierungsgrad und Übersichtlichkeit. Eine zu detaillierte Dokumentation führt dazu, dass Informationen schwer zu finden sind, während bei einer zu oberflächlichen Beschreibung Relevantes nicht mitdokumentiert wird. Deshalb ist es entscheidend, sowohl den Informationsbedarf als auch das Vorwissen verschiedener Zielgruppen wie Entwicklungsteam, Projektleitung oder externe Stakeholder beim Erstellen der Dokumentation zu berücksichtigen.

Ein weiteres Problem ist, die Dokumentation kontinuierlich aktuell zu halten. Vor allem in agilen Entwicklungsprozessen kommt es regelmäßig vor, dass sich Anforderungen oder Teile der Architektur ändern, wodurch die Dokumentation schnell veralten kann, wenn sie nicht regelmäßig angepasst wird. Für diese Pflege wird jedoch häufig keine Zeit eingeplant und sie ist Vielen lästig, weswegen sie oftmals gar nicht oder zumindest nicht ausreichend erledigt wird. Daraus ergeben sich Inkonsistenzen zwischen der Dokumentation und der tatsächlichen Implementierung und am Ende ist die Dokumentation wertlos, egal, wie viel Arbeit irgendwann mal hineingeflossen ist.

Nicht selten muss die Dokumentation als Erstes dran glauben, wenn Zeit oder Budget knapp sind.

Klassische Ansätze wie UML (Unified Modeling Language) oder FMC (Fundamental Modeling Concepts) haben ihre Stärken in der präzisen Modellierung spezifischer Aspekte von Software-Architekturen, stoßen jedoch bei Entwicklungsprozessen, die lean oder agil sind, an ihre Grenzen. Sie bieten beispielsweise eine Vielzahl von Diagrammtypen, die jedoch oft nicht alle in einem Projekt benötigt werden. Dies führt zu erhöhtem Arbeits- und Pflegeaufwand und unnötiger Komplexität, die die Dokumentation unübersichtlich macht. Des Weiteren werden für die Diagramme umfangreiche Notationen verwendet, die für Personen ohne entsprechende Kenntnisse schwer verständlich sind, was wiederum die Kommunikation zwischen dem Entwicklungsteam und dem Management erschwert.

Nicht selten muss die Dokumentation als Erstes dran glauben, wenn Zeit oder Budget knapp sind, da ihr Nutzen zuweilen nicht erkannt oder als gering eingeschätzt wird. Damit Dokumentation einen echten Mehrwert darstellt und nicht zum Selbstzweck wird, ist ein strukturierter Ansatz erforderlich, der nicht nur pflegeleicht ist, sondern die Informationen auch für unterschiedliche Zielgruppen zugänglich macht.

C4 in der Software-Architektur: Was genau ist das?

Das C4-Framework wurde von Simon Brown entwickelt, um die Visualisierung von Software-Architektur zu vereinfachen und verständlicher zu machen. Es hat seine Wurzeln in UML und dem 4+1-Sichtenmodell und wurde mit dem Ziel erstellt, einen Kompromiss zwischen schwergewichtigen klassischen Methoden und informellen Skizzen zu finden, die oft unzureichend sind. Mit C4 wollte er einen Ansatz schaffen, der die Pflege der Dokumentation vereinfacht und gleichzeitig die Diagramme verständlicher für alle Zielgruppen macht.

Die Idee von C4 fußt auf mehreren Grundannahmen:

  • Abstraktion ist wichtiger als Notation
  • Diagramme müssen die Realität widerspiegeln.
  • Verschiedene Zielgruppen brauchen verschiedene Informationen.

Modellierungsansatz: Abstraktion ist wichtiger als Notation

Die Aussage "Abstraktion ist wichtiger als Notation" mag im ersten Moment wie ein Seitenhieb gegen klassische Modellierungsansätze wirken, ist aber nicht so gemeint. Eine einheitliche Notation ist nichts Schlechtes und kann definitiv bei der Kommunikation helfen. Die Erfahrung in der Realität zeigt jedoch, dass Ansätze, die eine strikte Notation vorgeben, oft nicht genutzt werden. Stattdessen verwenden Viele beim Erstellen von Diagrammen ihre ganz eigene Notation, meistens mit Entlehnungen aus gängigen Standards, aber eben doch nicht ganz nach Standard. Diese individuelle Notation erlaubt es, die Komplexität selbst zu bestimmen, ganz nach dem Motto "So detailliert wie nötig, so einfach wie möglich." Das Problem damit ist jedoch, dass unter den fehlenden Standards auch der Informationsgehalt leidet. Manche Diagramme platzen vor Details und sind unübersichtlich, andere Diagramme sind so minimalistisch, dass sie im Grunde allgemeingültig sind.

Bei C4 kann die Notation frei gewählt werden, dafür muss jedes Diagramm über eine Überschrift, eine Legende und jedes Element über eine Beschreibung verfügen. Auf diese Weise sind die Diagramme für jeden verständlich – auch für einen selbst, wenn man nach ein paar Monaten nochmal einen Blick darauf werfen möchte.

Darüber hinaus gibt es bei C4 gemeinsame Abstraktionen und ein eindeutiges Vokabular dafür. Die wichtigsten Begriffe sind "Software-System", "Container" und "Component". Ein Software-System bietet einem User, menschlich oder nicht, einen Mehrwert. Bei "Container" denken Viele direkt an Docker, der Begriff hat aber nichts mit den Docker-Containern zu tun! Beim Container handelt es sich gewissermaßen um die nächsttiefere Abstraktionsebene, ein Software-System setzt sich aus Containern zusammen. Ein Container kann beispielsweise eine Applikation oder ein Datenspeicher sein, vor allem aber kann er einzeln deployt werden. Ein Container besteht aus Components, die nächste Ebene. Eine Component ist eine Gruppierung von verwandten Funktionalitäten, die sich häufig hinter einem Interface befinden.

C4-Elemente im Überblick

  • Person: Stellt eine menschliche Benutzerin des Software-Systems dar, z. B. (UML-)Akteure, Rollen oder Personen.
  • Software-System: Höchste Abstraktionsebene; beschreibt etwas, das seinen Benutzerinnen einen Mehrwert bietet, unabhängig davon, ob diese Menschen sind oder nicht. In vielen Fällen ist ein Software-System "im Besitz" eines einzelnen Entwicklungsteams.
  • Container: Nicht Docker! Ein Container repräsentiert eine Anwendung oder einen Datenspeicher. Ein Container muss ausgeführt werden, damit das gesamte Software-System funktioniert. Ein Container ist im Wesentlichen ein Kontext oder eine Grenze, innerhalb derer Code ausgeführt oder Daten gespeichert werden. Enthält Informationen über die verwendete Technologie wie Framework und Sprache.
  • Components: Bausteine, aus denen ein Container besteht, beispielsweise eine Gruppe von verwandten Funktionalitäten, die hinter einer Schnittstelle gebündelt sind. Enthält Informationen zu dem benutzten Framework oder Entwurfsmuster und wie es angewendet wurde.
  • Beziehung: Verbindung zwischen zwei Elementen. Immer unidirektional und mit Beschriftung. Beziehungen zwischen Containern (in der Regel stellen diese die Kommunikation zwischen Prozessen dar) sollten über eine explizit gekennzeichnete Technologie/ein Protokoll verfügen.

Diagramme müssen die Realität widerspiegeln

Dass Diagramme die Realität wiedergeben sollen, ist einleuchtend; Dokumentation, die nicht mit der Realität übereinstimmt, ist nicht hilfreich. Ein gewisser Verlust ist jedoch unabdingbar, da die Dokumentation eine Zusammenfassung der Informationen sein soll. George Fairbanks verwendete in seinem Buch "Just Enough Software Architecture" den Begriff "Model-Code Gap", um die Diskrepanz zwischen Codebasis und den daraus erzeugten Diagrammen zu bezeichnen.

Was genau bedeutet das?
Man stelle sich eine Codebasis vor, die dann in Form von Diagrammen dokumentiert wird. Nun gibt man einer Person, die die originale Codebasis nicht kennt, die Diagramme und bittet sie, nur auf Basis der Diagramme eine neue Codebasis zu erzeugen. Die Abweichungen der beiden Codebasen voneinander sind gewissermaßen das "Model-Code Gap". Waren die Diagramme aussagekräftig, die Informationen gut verständlich und eindeutig und die Darstellungen vollständig, werden die Codebasen nicht allzu sehr voneinander abweichen. Sind die Diagramme jedoch abstrakt, unstrukturiert und schwer verständlich, kann die Abweichung beliebig groß werden.

Ein essenzieller Bestandteil des C4-Ansatzes, der dabei hilft, das Model-Code Gap möglichst gering zu halten, ist die Einbeziehung von Technologie-Entscheidungen in die Diagramme. Zu wissen, welche Sprache, welches Framework, welche Protokolle verwendet wurden, würde die Unterschiede bei unseren zwei fiktiven Codebasen schon massiv verringern. Deswegen ist es bei C4 nicht nur möglich, sondern geboten, diese technischen Informationen in die Diagramme einzufügen, allerdings mit einem Augenmerk auf die Zielgruppen.

Verschiedene Zielgruppen brauchen verschiedene Informationen

Womit wir beim letzten Punkt angelangt wären: Verschiedene Zielgruppen benötigen verschiedene Informationen. Wie bereits erwähnt, sind technische Details prinzipiell wichtig, jedoch nicht für jede Zielgruppe relevant. Genauso verhält es sich auch mit Feinheiten der Architektur und Implementierungsdetails.

Die Lösung von C4 für dieses Problem ist gleichzeitig auch namensgebend: Es gibt vier Abstraktionsebenen, von einem groben Überblick bis hin zu Details auf Code-Ebene, die auch zunehmend mehr technische Details enthalten. Die oberste Ebene und damit das erste Diagramm ist das "System-Context-Diagramm", das ein Software-System in seinem Kontext darstellt, das heißt, es zeigt alle Personen und Software-Systeme, die mit diesem Software-System interagieren. Als Nächstes gibt es das "Container-Diagramm", welches alle Container eines Software-Systems zeigt und wie diese miteinander, aber auch mit anderen Software-Systemen und Personen interagieren. An dritter Stelle ist das "Component-Diagramm", dass alle Components eines Containers darstellt und wie sie untereinander, mit anderen Containern desselben Software-Systems und anderen Software-Systemen und Personen interagieren. Zu guter Letzt gibt es noch das Code-Diagramm, das den Code innerhalb einer Component dokumentiert. In den meisten Fällen ist es nicht sinnvoll, diese Diagramme für Dokumentationszwecke zu erstellen, da sie den größten Pflegeaufwand haben und bei Bedarf von der Entwicklungsumgebung generiert werden können.

Neben diesen "Standard-Diagrammen" gibt es noch einige Diagramme, die später hinzugefügt wurden und die Architekturdokumentation sinnvoll erweitern beziehungsweise ergänzen. Es gibt das "System-Landscape-Diagramm" und wie der Name schon vermuten lässt, handelt es sich hierbei um eine Übersicht der gesamten Systemlandschaft. Außerdem gibt es das "Dynamic-Diagramm", eine vereinfachte Version des UML-Kommunikationsdiagramms, und das "Deployment-Diagramm", eine vereinfachte Version des UML-Deployment-Diagramms.

C4-Diagramme im Überblick

System-Context-Diagramm 

  • Inhalt: Personen, Software-Systeme
  • Ziel: Zeigt das Software-System im Kontext seiner Umgebung. Es stellt die Interaktionen des Systems mit Benutzern und anderen Software-Systemen dar.
  • Zielgruppe: Primär Management, Projektleitung, Produktmanagement, Kundinnen und andere Beteiligte ohne technischen Hintergrund, die ein allgemeines Verständnis des Software-Systems benötigen. Sekundär Systemadministration, Entwicklerinnen, Software-Architektinnen und andere Beteiligte mit technischem Hintergrund, die einen groben Überblick brauchen.
  • Best Practices: Auf den Kontext des ausgewählten Systems beschränken. Die Besonderheiten oder Abhängigkeiten anderer beteiligter Systeme gehören hier nicht hin, sondern in die Dokumentation dieser Systeme. Außerdem gilt: Details sind hier nicht wichtig; Technologien, Protokolle usw. sind Informationen für niedrigere Ebenen.

Container-Diagramm 

  • Inhalt: Personen, Software-Systeme, Container
  • Ziel: Beschreibt die Architektur auf Container-Ebene, wie Anwendungen, Datenbanken oder Dienste innerhalb des Systems interagieren.
  • Zielgruppe: Primär Systemadministration, Entwicklerinnen, Software-Architektinnen und andere Beteiligte mit technischem Hintergrund, die das technische Setup verstehen müssen. Sekundär Projektleitung, Produktmanagement und andere nicht-technische Beteiligte, die einen tieferen Einblick in die technischen Details wünschen.
  • Best Practices: Ab diesem Level sind technische Details besonders wichtig, daher gilt, dass hier Informationen wie verwendete Technologien, Protokolle, Frameworks etc. aufgeführt werden. Informationen über die Infrastruktur selbst gehören hier allerdings nicht hin, diese sind in einem Deployment-Diagramm besser aufgehoben.

Component-Diagramm

  • Inhalt: Personen, Software-Systeme, Container, Components
  • Ziel: Zeigt, wie ein einzelner Container intern in Components zerlegt ist und wie diese zusammenarbeiten.
  • Zielgruppe: Entwicklerinnen, Software-Architektinnen und andere technische Beteiligte, die an der Implementierung arbeiten.
  • Best Practices: Nur erstellen, wenn es sinnvoll und die Detailtiefe gegeben ist. Technische Informationen sind hier ebenfalls wichtig, werden also genau wie im Container-Diagramm hinzugefügt.

Code-Diagramm 

  • Inhalt: UML oder andere Darstellungsformen für Code
  • Ziel: Geht auf die Implementierungsdetails einzelner Components ein, zum Beispiel in Form eines Klassendiagramms.
  • Zielgruppe: Personen, die direkt am Code arbeiten.
  • Best Practices: Eine Erstellung dieser Diagramme ist oft nicht notwendig, da sie bei Bedarf von der IDE erzeugt werden können. Sollten nur erstellt werden, wenn es wirklich notwendig, die Software sehr langlebig und die Erstellung automatisiert ist.

Weitere Diagramme

System-Landscape-Diagramm 

  • Inhalt: Personen, Software-Systeme
  • Ziel: Zeigt die gesamte Systemlandschaft. Es stellt die Interaktionen mit Benutzern, externen Systemen und anderen Schnittstellen dar und gibt einen grundlegenden Überblick über die Systemlandschaft.
  • Zielgruppe: Technische und nicht-technische Beteiligte, die ein allgemeines Verständnis der Systemlandschaft benötigen.
  • Best Practices: Gerade für größere Systemlandschaften sehr sinnvoll. Sollte nicht zu sehr ins Detail gehen, sondern einen allgemeinen Überblick ermöglichen, enthält daher nur Personen und Software-Systeme als Elemente.

Dynamic-Diagramm

  • Inhalt: Software-Systeme, Container, Components
  • Ziel: Hilfreich, wenn man abbilden will, wie die Elemente zur Laufzeit miteinander interagieren.
  • Zielgruppe: Abhängig vom gezeigten Scope; sowohl technische als auch nicht-technische Beteiligte.
  • Best Practices: Nur bei Bedarf erstellen, um einen komplexen Ablauf darzustellen oder wiederkehrende Muster zu dokumentieren.

Deployment-Diagramm

  • Inhalt: Deployment Environments, Deployment Nodes, Software System Instances, Container Instances, Infrastructure Nodes
  • Ziel: Stellt dar, wo eine Instanz eines Software-Systems/Containers ausgeführt wird, z. B. physische, virtualisierte oder Container-Infrastruktur.
  • Zielgruppe: Primär Systemadministration, Software-Architektinnen und Personen, die für die Infrastruktur verantwortlich
    sind. Sekundär Entwicklerinnen und andere technische Beteiligte, die einen Überblick über die Runtime-Umgebung brauchen.
  • Best Practices: Dieses Diagramm enthält alle wichtigen Informationen zur Infrastruktur. Eine konkrete Benennung der genutzten Technik, Geräte und Technologie ist ebenso wichtig wie das Dokumentieren der Adressen von Endpunkten.

C4-Framework und Diagrams as Code 2.0

Zusätzlich zum C4-Framework wollte Simon Brown auch den Diagrams-as-Code-Ansatz erweitern. "Diagrams as Code" ist angelehnt an den Begriff "Docs as Code" und bezeichnet die Idee, Diagramme als Code zu schreiben und wie Softwarecode zu behandeln: Die Dokumentation wird genauso wie der Code versioniert, geprüft und deployt. Durch Entwicklertools wie Git, CI/CD-Pipelines und Code-Reviews wird die Erstellung, Aktualisierung und Veröffentlichung von Dokumentationen effizienter und konsistenter. Auf diese Weise macht man Dokumentation zu einem integralen Bestandteil des Entwicklungsprozesses, wodurch sie den gleichen Workflow wie Code durchläuft und von Qualitätsprüfungen, Freigaben und automatisierten Schritten genauso profitiert.

Bezogen auf Architekturdokumentation bedeutet das, dass die Diagramme nicht mit einem grafischen Tool erstellt werden, sondern in einer Domain Specific Language oder Programmiersprache beschrieben und anschließend gerendert werden. Das Problem dabei ist allerdings, dass die Diagramme oftmals nicht intelligent miteinander verknüpft sind, sodass Änderungen an der Architektur in der Regel an mehreren Stellen händisch eingepflegt werden müssen. Das erhöht nicht nur die Fehleranfälligkeit, sondern auch den Arbeitsaufwand und somit die Hürde, die Dokumentation stetig aktuell zu halten. Dazu kommt, dass die fertig erstellten Diagramme oftmals nicht gut zu verstehen sind, weil sie als unzusammenhängende Bilder, oft ohne Überschrift oder Legende, in die Doku eingefügt werden, was eine Einordnung in den Gesamtkontext erschwert.

Der "Diagrams-as-Code-2.0"-Ansatz erweitert das ursprüngliche Konzept, indem Darstellung und Inhalt getrennt werden. Statt der einzelnen Diagramme beschreibt man direkt die Architektur selbst in einer DSL und definiert dann, welche Diagramme erzeugt werden sollen. Die grafische Darstellung der Diagramme passiert getrennt von der Definition des Inhaltes und kann beliebig angepasst werden, es wird kein Standard vorgegeben. Das ist von Vorteil, da es in einem Projekt häufig Beteiligte gibt (oft mit nicht-technischem Hintergrund), die mit gängigen Standards wie UML nicht in der Tiefe vertraut sind. Vordefinierte Standards sind außerdem oftmals sehr komplex und blähen dadurch die Dokumentation unnötig auf. Durch die separate Definition der grafischen Darstellung ist es möglich, sich etwas zu definieren, das für den eigenen Anwendungsfall gut geeignet ist. Dieser Ansatz gestattet es, Änderungen an der Architektur ohne großen Aufwand in die Dokumentation zu übernehmen, da immer nur eine Codebasis gepflegt werden muss, in der die Architektur beschrieben wird.

Mithilfe von Tools wie Structurizr oder Structurizr Site Generatr können die Diagramme direkt als vollständige html-Seite erzeugt werden, die die miteinander verlinkten Diagramme enthält, sodass die Beziehungen zwischen den einzelnen Diagrammen schnell klar werden. Diese Tools erzeugen außerdem automatisch eine Legende für jedes Diagramm und binden vorhandene Überschriften ein. Alles das macht die Dokumentation gerade für Personen ohne Vorwissen über die Software deutlich zugänglicher.

Software-Architektur auf den diesjährigen IT-Tagen

Spannende Vorträge und Workshops zum Thema Software-Architektur erwarten Euch auch auf den IT-Tagen, der Jahreskonferenz von Informatik Aktuell. Die IT-Konferenz findet jedes Jahr im Dezember in Frankfurt statt – dieses Jahr vom 08.-11.12.

Integration mit anderen Dokumentationsmethoden

Der Schwerpunkt des C4-Frameworks liegt auf der Visualisierung von Software-Architektur, was ein wichtiger Bestandteil einer guten Architekturdokumentation ist. Andere wesentliche Aspekte sind allerdings nicht im Fokus von C4 und müssen anderweitig dokumentiert werden. Hier soll kurz darauf eingegangen werden, wie andere Dokumentationsmethoden mit C4 verknüpft werden können.

Einer Architektur liegen in der Regel Entscheidungen zugrunde, die aufgrund verschiedener Abwägungen getroffen wurden. Die Gründe für diese Entscheidungen lassen sich aber aus der Architektur selbst nicht ableiten. Um sie trotzdem zu dokumentieren, gibt es beispielsweise ADRs (Architecture Decision Records), in denen für jede Architekturentscheidung festgehalten wird, welche Faktoren zu beachten sind und was die Gründe für eine bestimmte Designentscheidung waren. Nutzt man den Structurizr, der auch den "Diagrams-as-Code-2.0"-Ansatz unterstützt, ist es mit einem einfachen Befehl möglich, ADRs als Markdown- oder AsciiDoc-Dateien anzuhängen. ADRs können zu einem Container, einem Software-System oder allgemein einem Workspace hinzugefügt werden.

Daneben gibt es weitere Aspekte, die eine Software-Architektur-Dokumentation abdecken muss, beispielsweise Anforderungen, Einschränkungen, Risiken und Qualitätsanforderungen. Alles das sind jedoch Aspekte, die bei C4 keine Betrachtung finden. Eine gute Ergänzung kann hier beispielsweise arc42 sein, ein Template für Software-Architektur-Dokumentation. Die verschiedenen C4-Diagramme können wie folgt in den Kapiteln des arc42-Templates eingefügt werden:

  • Kapitel "Context & Scope": System-Context-Diagramm
  • Kapitel "Building Block View": Container-Diagramm (Level 1), Component-Diagramm (Level 2)
  • Kapitel "Runtime View": Dynamic-Diagramm
  • Kapitel "Deployment View": Deployment-Diagramm

Der schlanke Dokumentations-Ansatz ACC (Architecture Communication Canvas) lässt sich ebenfalls mit C4 kombinieren, hier würde in das Feld "Components/Modules" das Container-Diagramm kommen. Falls notwendig, können auch noch einzelne Component-Diagramme hinzugefügt werden.

C4: Zusammenfassung und Fazit

Das C4-Framework bietet einen strukturierten, aber simplen Ansatz zur Visualisierung von Software-Architektur, der sich unabhängig von Technologien, Programmiersprachen oder Werkzeugen anwenden lässt. Durch die klare Definition fester Abstraktionsebenen wird die Kommunikation erleichtert, was die Lesbarkeit und den Nutzen der Dokumentation erhöht. Dieser hierarchische Aufbau von C4 ermöglicht verschiedene Sichten auf die Architektur, die unterschiedliche technische Tiefe haben und damit sowohl für technische als auch nicht-technische Zielgruppen informativ und schnell verständlich sind.

Ein weiterer Vorteil ist, dass das C4-Framework nicht nur für Docs as Code ausgelegt ist, sondern mit Diagrams as Code 2.0 einen Ansatz verfolgt, der eine einfache Pflege und Aktualisierung der Dokumentation ermöglicht und die Option zur Automatisierung oder Teil-Automatisierung offen lässt. Das alles macht C4 zu einer Methode, die gut an unterschiedliche Projektanforderungen anpassbar ist und auf jeden Fall in Erwägung gezogen werden sollte, wenn es darum geht, Software-Architektur zu dokumentieren.

Autor
Das könnte Sie auch interessieren
Kommentare (0)

Neuen Kommentar schreiben