Aotb2019 Visualising Software Architecture With The c4 Model
Aotb2019 Visualising Software Architecture With The c4 Model
@simonbrown
Simon Brown
Independent consultant specialising in software architecture,
plus the creator of the C4 model and Structurizr
@simonbrown
Do you use UML?
In my experience, optimistically,
Off-peak electricity
Peak electricity
Hallway
Water out
Water in
Stairs Bathroom Bed2 Bed3
good communication
There are many different audiences for diagrams
and documentation, all with different interests
(software architects, software developers, operations and support staff, testers,
Product Owners, project managers, Scrum Masters, users, management,
business sponsors, potential customers, potential investors, …)
When drawing software
architecture diagrams,
think like a software developer
A common set of abstractions
is more important
than a common notation
Software System
Overview first
2. Containers
The overall shape of the architecture and technology choices.
A model of the
Static
Data
(entity relationship
model etc…
static structure
forms the basis
diagrams) (software systems,
containers, components
andclasses)
and code)
Infrastructure
for other views
Deployment
(physical, virtual,
(mapping of containers
containerised hardware;
to infrastructure)
firewalls, routers, etc)
Example
(Internet Banking System)
Level 1
Container diagram
Level 3
Component diagram
Level 4
Class diagram
Notation
Titles
Short and meaningful, include the diagram type,
numbered if diagram order is important; for example:
[Person]
techtribes.je is the only way to keep up
to date with the IT, tech and digital
Anybody on the web.
sector in Jersey and Guernsey, Channel
Islands.
Kafka
[Container]
Microservice B Microservice D
Sends messages to Sends messages to
[Container] [Container]
Microservice B Microservice D
[Container] Sends order creation messages to [Container]
[via Kafka topic Y]
Trade data
General
Elements
Do you understand the type of every element? (i.e. the level of abstraction; e.g. software Yes No
system, container, etc)
Where applicable, do you understand the technology choices associated with every Yes No
element?
Do you understand the meaning of all acronyms and abbreviations used? Yes No