
Home | C4 model
The C4 model is an easy to learn, developer friendly approach to software architecture diagramming: A set of hierarchical abstractions - software systems, containers, components, and code.
Introduction | C4 model
The C4 model was created as a way to help software development teams describe and communicate software architecture, both during up-front design sessions and when retrospectively documenting an …
Diagrams | C4 model
The C4 model is named after the core set of static structure diagrams: (system) context, containers, components, and code. The different levels of zoom allow you to tell different stories to different …
Abstractions | C4 model
The C4 model is an “abstraction-first” approach to diagramming software architecture, based upon abstractions that reflect how software architects and developers think about and build software. The …
Component diagram | C4 model
Component diagram Next you can zoom in and decompose a container to describe the components that reside inside it; including their responsibilities and the technology/implementation details. Example …
Container diagram | C4 model
In C4, a container is an application or a data store. For example, a server-side web application, a client-side single-page application, a desktop application, a mobile app, a database schema, a folder on a …
Tooling | C4 model
If your tool doesn’t support the C4 model natively “out of the box”, please provide a link to a guide that describes how to use your tool in conjunction with the C4 model.
FAQ | C4 model
Using C4 to describe libraries, frameworks and SDKs? The C4 model is really designed to model a software system, at various levels of abstraction. To document a library, framework or SDK, you …
System context diagram | C4 model
System context diagram A system context diagram is a good starting point for diagramming and documenting a software system, allowing you to step back and see the big picture. Draw a diagram …
Component | C4 model
The C4 model is about showing the runtime units (containers) and how functionality is partitioned across them (components), rather than organisational units such as Java JAR files, C# assemblies, DLLs, …