C4 system context diagrams using PlantUML

Recreating the diagrams described in Ch. 4 ‘Model your architecture’ of Creating software with modern diagramming by Ashley Peacock, using PlantUML

See Software design diagrams using PlantUML for the other posts in the series.


Users & software systems and how they interact

@startuml
!include <C4/C4_Container>

Person(User, "Premium Member", "A user of the website who has purchased a subscription")
System(LS, "Listings service", "Serves web pages displaying title listings to the end user")

Rel(User, LS, "Views titles, searches titles, and reviews titles using")
@enduml

System context diagram, minimal

Add some ancillary software systems

@startuml
!include <C4/C4_Container>

Person(User, "Premium Member", "A user of the website who has purchased a subscription")
System(LS, "Listings service", "Serves web pages displaying title listings to the end user")
System(TS, "Title service", "Provides an API to retrieve title information")
System(RS, "Review service", "Provides an API to retrieve and submit reviews")
System(SS, "Search service", "Provides an API to search for titles")

Rel(User, LS, "Views titles, searches titles, and reviews titles using")
Rel(LS, TS, "Retrieves title information from")
Rel(LS, RS, "Retrieves from and submits reviews to")
Rel(LS, SS, "Searches for titles using")
@enduml

System context diagram, all participants

Add title. Change background colour of supporting systems to grey.

@startuml
skinparam monochrome false

!include <C4/C4_Container>
title Listings service C4 model: System context

Person(User, "Premium Member", "A user of the website who has purchased a subscription")
System(LS, "Listings service", "Serves web pages displaying title listings to the end user")
System(TS, "Title service", "Provides an API to retrieve title information") #DimGray;line:Gray
System(RS, "Review service", "Provides an API to retrieve and submit reviews") #DimGray;line:Gray
System(SS, "Search service", "Provides an API to search for titles") #DimGray;line:Gray

Rel(User, LS, "Views titles, searches titles, and reviews titles using")
Rel(LS, TS, "Retrieves title information from")
Rel(LS, RS, "Retrieves from and submits reviews to")
Rel(LS, SS, "Searches for titles using")
@enduml

System context diagram, completed