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
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
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