C4 Lightweight Software Architecture Description Method

Introduction

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.

_images/c4.png

The 4 C’s

The 4C’s

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).

Container

A container diagram shows the high-level technology choices, how responsibilities are distributed across them and how the containers communicate.

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.

Books

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

Book1 Book2