Gatsby Logo

C4 Architecture

2019-06-15

“Big design up front is dumb, but doing no design up front is even dumber.” Dave Thomas

The C4 Model is a lightweight software architecture description method. It consists of a set of 4 diagrams that describe the static structure of a software system.

Overall, it strives for clarity and communication of the story, and follows Shneiderman's mantra:

Overview first, zoom and filter, then details-on-demand

It is not formal UML e.g. the UML actor stickman is deliberately not used as it causes confusion between a person or a system.

C4

The 4C's are:

  1. Context: A high-level diagram that sets the scene; including key system dependencies and people (actors/roles/personas/etc). Context diagrams are standard in software engineering (even if not used often).
  2. Container: A container diagram shows the high-level technology choices, how responsibilities are distributed across them and how the containers communicate.
  3. Component: For each container, a component diagram lets you see the key logical components and their relationships.
  4. Classes (or Code): This is optional and is the lowest level of detail.

CheatSheet

The CheatSheet gives a good summary of the C4 model and diagrams.

Video Presentation

See youtube video from NDC2017 conference by Simon Brown on C4 for visualisation.

Related Methods

There are a number of related models and templates:

4+1 model

C4 is inpsired by the 4+1 model for software architecture

ARC42

C4 can be combined with arc42 documentation template. The diagrams map as follows:

Arc42 C4
Context and Scope System Context diagram
Building Block View (level 1) Container diagram
Building Block View (level 2) Component diagram
Building Block View (level 3) Class diagram

Data-flow diagrams

Data-flow diagrams (DFD) (to desribe data activity) use a similar hierachical approach starting with the contextual DFD0. They use a multi-level numbering scheme

  • DFD0: 1
  • DFD1: 1.1., 1.2,
  • DFD2: 1.1.1, 1.1.2,

Books

These books, written by @simonbrown, are available to buy from https://leanpub.com/visualising-software-architecture.

Cover Title
[Software Architecture for Developers: Volume 1 - Technical leadership and the balance with Agility](https://leanpub.com/b/software-architecture) Software Architecture for Developers: Volume 1 - Technical leadership and the balance with Agility
[Software Architecture for Developers - Volume 2 - Visualise, document and explore your software architecture](https://leanpub.com/visualising-software-architecture) Software Architecture for Developers - Volume 2 - Visualise, document and explore your software architecture. (As at 2019-6-15 this book is 80% complete LAST UPDATED ON 2019-03-05). C4 is covered in this book.

C4 Plantuml VSCode

C4-PlantUML combines the benefits of PlantUML (an open source project that allows you to create UML diagrams automatically from a text description), and the C4 model for providing a simple way of describing and communicate software architectures. It also supports C4 PlantUML Snippets for Visual Studio Code