This GitHub repository is a collection of tooling to help you visualise, document and explore the software architecture of a software system. In summary, it allows you to create a software architecture model based upon Simon Brown's "C4 model" using Java code, and then export that model to be visualised using tools such as:
- Structurizr: a web-based service to render web-based software architecture diagrams and supplementary Markdown/AsciiDoc documentation. Diagrams can be viewed online directly or by embedding them in Atlassian Confluence.
- PlantUML: a tool to create UML diagrams using a simple textual domain specific language.
- graphviz: a tool to render directed graphs using the DOT format.
As a simple example, the following Java code can be used to create a software architecture model to describe a user using a software system.
Workspace workspace = new Workspace("My model", "This is a model of my software system.");
Model model = workspace.getModel();
Person user = model.addPerson("User", "A user of my software system.");
SoftwareSystem softwareSystem = model.addSoftwareSystem("Software System", "My software system.");
user.uses(softwareSystem, "Uses");
ViewSet viewSet = workspace.getViews();
SystemContextView contextView = viewSet.createSystemContextView(softwareSystem, "context", "A simple example of a System Context diagram.");
contextView.addAllSoftwareSystems();
contextView.addAllPeople();If using Structurizr, the end-result, after adding some styling and positioning the diagram elements, is a system context diagram like this:
- Building from source
- Binaries
- Basic concepts
- Getting started
- API Client
- Styling elements
- Styling relationships
- Corporate branding
- Hiding relationships
- Extracting components from your codebase
- Components and supporting types
- The Spring PetClinic example
- Dynamic views
- Client-side encryption
- Documentation
- Graphviz and DOT
- PlantUML

