Visualising software architecture with the C4 model, with Simon Brown

Visualising software architecture with the C4 model, with Simon Brown

Discount for all Devoxx Greece 2024 Attendees

Combine conference + workshop

and get the best out of them

Register now

Description

This hands-on, 1-day workshop focuses on the visualisation and communication of software architecture using the C4 model. The core of this workshop can be based upon a simple case study (my “Financial Risk System” architecture kata) or your own software systems. This workshop will give you some pragmatic, practical, and lightweight techniques that you can apply to your work the very next day. You’ll learn why most software architecture diagrams are meaningless, how to critique them, how to fix them and how to use the C4 model to create a simple yet powerful set of developer-friendly diagrams to describe software architecture.

Who should attend

This workshop is targeted at software developers and architects, but anybody involved in the development of software will benefit from an improved way to understand and communicate software architecture – from product owners and testers, through to operations and infrastructure engineers.

What will you learn

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 hands-on workshop explores the visual communication of software architecture, and is based upon years of experience 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 workshop is based upon the “C4 model“, which Simon 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 structureruntime and deployment diagrams are all covered, so you’ll be able to tell different stories to different audiences.

The course outline is as follows:

  • [10:00 – 10:15] Introduction
  • [10:15 – 11:30] Software diagramming exercise 1
  • [11:30 – 12:00] Break
  • [12:00 – 13:00] Review and feedback
    • Diagramming anti-patterns and typical problems
    • The “model-code gap”
  • [13:00 – 14:00] Lunch
  • [14:00 – 15:00] C4 model – core diagrams
    • Abstractions and creating a shared vocabulary with a ubiquitous language
    • An overview of the C4 model
    • Notation and tips for better diagrams
    • System Context diagrams
    • Container diagrams
    • Component diagrams
  • [15:00 – 16:30] Software diagramming exercise 2
  • [16:30 – 17:00] Break
  • [17:00 – 17:30] C4 model – supplementary diagrams
    • C4 and UML
    • System Landscape diagrams
    • Dynamic diagrams
    • Deployment diagrams
    • Frequently asked questions
  • [17:30 – 17:45] Tooling
    • Diagrams vs models
    • Structurizr DSL demo
  • [17:45 – 18:00] Discussion, questions and wrap-up

​Prerequisites

None

About the instructor

Simon Brown 

Simon is an independent consultant specialising in software architecture. He is the author of “Software Architecture for Developers” (a developer-friendly guide to software architecture, technical leadership and the balance with agility), the creator of the C4 model for visualising software architecture, and the creator of the Structurizr tooling. Simon is a regular speaker at international software development conferences, and travels the world to help organisations visualise their software architecture.