1. C4 Lightweight Software Architecture Description Method

1.1. Introduction

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, C4 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.

Tip

Multiple independent views of a system are better than just one view.

PlantUML sequence diagrams can give a good dynamic view of a system. Similar to C4, they can start at the top level, and zoom into the details in different diagrams.

../_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.

1.2. CheatSheet

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

1.3. Video Presentation

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