O'Reilly logo
live online training icon Live Online training

Visualizing software architecture with the C4 Model

Simon Brown

It's very likely that the majority of the software architecture diagrams you've seen are a confused mess of boxes and lines. Following the publication of the Manifesto for Agile Software Development in 2001, teams have abandoned UML, discarded the concept of modelling and instead place a heavy reliance on conversations centered around incoherent whiteboard diagrams or shallow "Marketecture" diagrams created with Visio. Moving fast and being agile requires good communication, yet software development teams struggle with this fundamental skill. A good set of software architecture diagrams are priceless for aligning a team around a shared vision and for getting new-joiners productive fast.

This training course explores the visual communication of software architecture and is based upon a decade of my experiences working with software development teams large and small across the globe. We'll look at what is commonplace today, the importance of creating a shared vocabulary, diagram notation, and the value of creating a lightweight model to describe your software system. The core of this training course is the "C4 model", which I created as a way to help software development teams describe and communicate software architecture, both during up-front design sessions and when retrospectively documenting an existing codebase. It's a way to create maps of your code, at various levels of detail. Static structure, runtime and deployment diagrams are all covered, so you'll be able to tell different stories to different audiences. We'll wrap up the course by looking at the tooling landscape and diagram automation to keep your diagrams in sync with your source code.

What you'll learn-and how you can apply it

  • How to use the C4 model to describe the static structure of a software system.
  • How to draw System Context, Container and Component diagrams to describe static structure.
  • How to supplement the static structure diagrams with dynamic and deployment diagrams.
  • How to review software architecture diagrams.
  • The tooling options available to help you create software architecture diagrams.

This training course is for you because...

You're a software developer, especially those currently in, or aspiring to be, a software architect/tech lead.

Prerequisites

  • Some experience of building software within a team environment would be helpful, although not essential.

About your instructor

  • Simon is an independent consultant specializing in software architecture, and the author of "Software Architecture for Developers" (a developer-friendly guide to software architecture, technical leadership and the balance with agility). He is also the creator of the C4 software architecture model, which is a simple approach for creating maps of your code. Simon is a regular speaker at international software development conferences and travels the world to help organizations visualize and document their software architecture.

Schedule

The timeframes are only estimates and may vary according to how the class is progressing

Software architecture diagramming problems and anti-patterns (35 minutes)

  • In this segment we’ll look at what you’ll commonly see when people talk about software architecture diagrams, and the problems associated with the typical “just use a whiteboard” approach.
  • Break + Q&A (10 minutes)

The C4 model (35 minutes)

  • In this segment we’ll look at the C4 model, from the perspective of creating a shared vocabulary to describe the static structure of a software system, and the respective core diagrams (System Context, Containers, Components and Code).
  • Break + Q&A (10 minutes)

Supplementary diagrams and notation (35 minutes)

  • In this segment we’ll look at how to use dynamic and deployment diagrams to supplement the C4 model, along with some tips related to notation, to ensure that your diagrams make sense.
  • Break + Q&A (10 minutes)

Tooling (35 minutes)

  • In this segment we’ll look at the tooling options available for creating software architecture diagrams; from general purpose diagramming tools to modelling tools, and everything in between.
  • Q&A (10 minutes)