Externally indexed torrent
If you are the original uploader, contact staff to have it moved to your account
Textbook in PDF format
A guide to visualising your software architecture with the C4 model.
This book focusses on the visual communication and documentation of software architecture, based upon a collection of ideas and techniques that thousands of people across the world have found useful. The core of this is my C4 software architecture model and the software guidebook. You'll also find discussion about notation, the various uses for diagrams, the value of creating a model and tooling.
I’m very much a visual person. I like being able to visualise a problem before trying to find a solution. Describe a business process to me and I’ll sketch up a summary of it. Talk to me about a business problem and I’m likely to draw a high-level domain model. Visualising the problem is a way for me to ask questions and figure out whether I’ve understood what you’re saying. I also like sketching out solutions to problems, again because it’s a great way to get everything out into the open in a way that other people can understand quickly.
The way teams built software started to change, with things like diagramming and documentation being thrown away alongside big design up front. I remember seeing a number of software development teams reducing the quantity of diagrams and documentation they were creating. In fact, I was often the only person on the team who really understood UML well enough to create diagrams with it.
Of course, the Unified Modelling Language (UML), a standardised notation for communicating the design of software systems, still lives on. However, while you can argue about whether UML offers an effective way to communicate software architecture or not, that’s often irrelevant because many teams have already thrown out UML or simply don’t know it.
The C4 model
With a shared vocabulary in mind, we can now move on to draw some diagrams at varying levels of abstraction to visualise the static structure of a software system. I call this the “C4 model” (System) Context, Containers, Components and Code.
1. System Context: A System Context diagram provides a starting point, showing how the software system in scope fits into the world around it.
2. Containers: A Container diagram zooms into the software system in scope, showing the high-level technical building blocks (containers) and how they interact.
3. Components: A Component diagram zooms into an individual container, showing the components inside it.
4. Code: A code (e.g. UML class) diagram can be used to zoom into an individual component, showing how that component is implemented.
This book was formerly called "The Art of Visualising Software Architecture", and now additionally includes information about documentation