The C4 software architecture model

The "C4 model" is a simple hierarchical way to think about the static structures of a software system in terms of containers, components and classes (or code).

A software system is made up of one or more containers (web applications, mobile apps, standalone applications, databases, file systems, etc), each of which contains one or more components, which in turn are implemented by one or more classes.

Visualising this hierarchy is then done by creating a collection of System Context, Container, Component and (optionally) Class diagrams. Structurizr is an implementation of the System Context, Container and Component diagrams.

More information

See Model for details about the static building blocks (software systems, containers and components), and Static diagrams for some examples of diagrams that Structurizr allows you to create. In addition, the following resources are recommended if you're looking for more information about visualising software architecture and the C4 model.

This is a recording of Simon Brown's keynote at the nCrafts conference in Paris, France during May 2016. This talk explores the visual communication of software architecture based upon his experience of working with software development teams across the globe. It looks at what is commonplace today, the importance of creating a shared vocabulary, diagram notation, the value of creating a model plus how to use tooling and static analysis techniques to automate diagram generation.

Software Architecture for Developers: Volumes 1 & 2

This is Simon Brown's Software Architecture for Developers (Volume 2) ebook, which is available on Leanpub. It's a short guide to creating a shared vocabulary and simple software architecture diagrams using the C4 software architecture model.

Simple Sketches for Diagramming Your Software Architecture

This is a short article written for Voxxed that summarises the C4 model.