C4 Diagrams

For a long time UML was the preferable way to document software, but over time, especially with the agile movement, its usage started to decline.

Some of the reasons why this happened is that the diagram is too complex to write and that it is difficult to show to show to non-tech people. To solve this issues the C4 diagram was created.

C4 Diagrams are divided to four levels of abstraction, they are:

  1. System Context Diagram - Shows the big picture, focusing on the systems and peoples interaction
  2. Container Diagram - It shows one of these systems from level one with more details. This level will describe mostly the deployable parts of the system (eg. Frontend application, Backend, Databases) and the interactions they have internally and externally
  3. Component Diagram - Decompose the containers to show their building blocks, responsibilities, technology choices and interactions.
  4. Code Diagram - It is not recomended to go to this level. Ideally it would be auto generated from the code using an IDE or UML tool.

This is an example of a C1 level Diagram

A System Context diagram

For more details on who to write diagrams this site has a deeper definition - https://c4model.com/