The C4 model for visualising software architecture by Simon Brown

Learn about the C4 model for software architecture visualization - a simple, hierarchical approach using Context, Containers, Components & Code diagrams to communicate design.

Key takeaways
  • The C4 model consists of 4 hierarchical levels of diagrams: Context, Containers, Components, and Code, mapping to different levels of abstraction in software architecture

  • C4 is notation-independent - you can use any shapes or colors as long as they are defined in a key/legend and remain consistent

  • The model emphasizes adding descriptive text in diagram boxes to explain responsibilities and key features, rather than just naming components

  • Static structure diagrams form the core of C4, showing the architecture at different zoom levels, while dynamic diagrams can show runtime behavior

  • Technology choices should be included in diagrams since they represent architecturally significant decisions that are hard to change later

  • Common abstraction levels are more valuable than enforcing a specific notation - focus on clear communication over notation rules

  • For large systems, create multiple focused diagrams rather than trying to show everything in one complex diagram

  • Automatic generation from code is recommended for the lower levels (components/code) to maintain accuracy

  • The model helps bridge the gap between high-level architecture models and actual code implementation

  • The top two levels (Context and Containers) are most commonly used and are suitable for all stakeholders, while lower levels target technical audiences