@startuml !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml Person(contributor, "Contributor", "Developer improving or extending MetroSim") System_Ext(metroweb, "MetroWeb", "Web-based user interface and Web API") System_Boundary(metrosim, "MetroSim") { Container(initializer, "Initializer", "Python", "Computes data needed by the simulator from raw input data") Container(simulator, "Simulator", "Python", "Iteratively simulates trips until convergence is reached") ContainerDb(files, "I/O Files", "CSV", "Input and output files") } Rel(initializer, files, "Reads raw input data, writes pre-processed data") Rel(simulator, files, "Reads raw and pre-processed input data, writes output data") Rel(contributor, initializer, "Runs / Develops") Rel(contributor, simulator, "Runs / Develops") Rel(contributor, files, "Writes raw input data") Rel(metroweb, initializer, "Runs") Rel(metroweb, simulator, "Runs") Rel(metroweb, files, "Writes raw input data") SHOW_DYNAMIC_LEGEND() @enduml