Structurizr

Visualise

Create software architecture diagrams using code and static analysis techniques. Alternatively, you can create simple diagrams online with text.

techtribes.je diagrams

Static and dynamic diagrams are available, both of which are based upon the C4 model.

Document

The code doesn't tell the whole story. With Structurizr you can create lightweight supplementary documentation using Markdown.

Structurizr documentation screenshot

This lightweight yet structured implementation is aimed at software teams who want to take a more agile approach to documentation.

Explore

Explore the structure of your software architecture with a number of additional visualisations.

Component dependencies

Take a tour of Structurizr

Create diagrams using code

Structurizr does not provide an online "drag and drop" editor to create diagrams. Instead, you create a software architecture model using code and upload it via the web API. Here's a simple example using Java.

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...");
contextView.addAllSoftwareSystems();
contextView.addAllPeople();

Styles styles = viewSet.getConfiguration().getStyles();
styles.addElementStyle(Tags.SOFTWARE_SYSTEM).background("#1168bd").color("#ffffff");
styles.addElementStyle(Tags.PERSON).background("#08427b").color("#ffffff");

StructurizrClient structurizrClient = new StructurizrClient("key", "secret");
structurizrClient.putWorkspace(1234, workspace);

And here's the resulting diagram when you open it in Structurizr, where the layout of the diagrams can be modified online.

A simple diagram

In essence, Structurizr is an implementation of an architecture description language, a simple domain specific language to describe static structure, using code. There are open source client libraries on GitHub for Java and the .NET platform, which include static analysis features to help you extract components from your codebase. If you integrate this with your continuous integration/build process, your diagrams stay up to date.

See the About page for more information on "software architecture as code".

Get started with Java Get started with .NET

Create diagrams using text

Alternatively, if you just want to sketch something out, Structurizr Express lets you create a single software architecture diagram without writing code.

Structurizr Express screenshot

System Context diagram Container diagram Component diagram

Create documentation with Markdown

The code doesn't tell the whole story, so in addition to static and dynamic diagrams, Structurizr also provides support for lightweight supplementary technical documentation based upon the "software guidebook" from Simon Brown's Software Architecture for Developers book.

Structurizr documentation screenshot

The documentation is a collection of Markdown documents, one per section, which are rendered in the web browser. This Markdown content is uploaded in a workspace along with the software architecture model, which makes it easy to embed diagrams from that workspace.

Explorations

Once you have a model of your software system, extracted from your code using static analysis techniques, you can additionally visualise the model in a number of different ways. Structurizr provides some explorations to help you explore the elements and their relationships in the model.

Tree

Explore the software systems, containers and components defined in the model.

Blocks

View how responsibilities are partitioned across your software systems, containers and components.

Component size

View components ranked by size.

Component dependencies

Explore the afferent, efferent and cyclic dependencies between components.

Share

Share your software architecture models in public, or with selected people in private.

Embed

Embed your software architecture diagrams in web pages, wikis, etc.

Export

Export your software architecture diagrams to 300dpi PNG images, for printing or inclusion in slide decks.

Present

Present your software architecture diagrams using the full screen presentation mode.