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.[1][2] 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
BearbeitenDas 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[3] und ein 2018 veröffentlichter Artikel[4] machten die aufkommende Technik populär.[1]
Übersicht
BearbeitenDas C4 model dokumentiert die Architektur eines Software-Systems, durch mehrere Sichten[5], welche die Dekomposition des Systems in Container und Komponenten, die Beziehungen zwischen diesen Elementen, und gegebenenfalls die Beziehung zu den Benutzern des Systems veranschaulichen.[3]
Die Sichten sind entsprechend ihrer hierarchischen Ebene organisiert:[2][3]
- 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.[6]
Siehe auch
BearbeitenEinzelnachweise
Bearbeiten- ↑ a b Fundamentals of software architecture: an engineering approach. O'REILLY MEDIA, 2019, ISBN 978-1-4920-4342-3, S. 293: "some standard are emerging for diagramming software architecture (such as software architect Simon Brown's C4 model or The Open Group Archimate standard)"
- ↑ a b Software Architecture with Spring 5. 0 : Design and Architect Highly Scalable, Robust, and High-Performance Java Applications. Packt Publishing Ltd., 2018, ISBN 978-1-78899-673-0, S. 41–44.
- ↑ a b c Simon Brown: The C4 model for visualising software architecture. In: c4model.com. Abgerufen am 22. August 2020 (englisch).
- ↑ Simon Brown: The C4 Model for Software Architecture. In: InfoQ. 25. Juni 2018, abgerufen am 22. August 2020 (englisch).
- ↑ Design it! : from programmer to software architect. Raleigh, North Carolina, ISBN 978-1-68050-345-6.
- ↑ The Conflict Between Agile and Architecture: Myth or Reality? In: resources.sei.cmu.edu. Software Engineering Institute of Carnegie Mellon University, abgerufen am 22. August 2020 (englisch).
Weblinks
Bearbeiten- Offizielle Website (englisch)