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, desktop 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 to purchase from Leanpub as an ebook in PDF, EPUB and MOBI formats. It's a short guide to visualising, documenting and exploring your software architecture.

Simple Sketches for Diagramming Your Software Architecture

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

And here is a one-page cheat sheet (downloadable as an A3 poster in PDF format) that summarises how to visualise software architecture using the C4 model.

A summary of the C4 model and tips for visualising software architecture