⚡ Tl;dr
- Software architecture tools can be categorized into three groups, modelling tools, diagrams as code and diagramming tools.
- Modelling and diagrams as code tools are better suited for long-term documentation, while diagramming tools are better for quick one-off sketches.
- Modelling and diagrams as code have more structure and require more setup, while diagramming tools are more generic but require less thinking.
🚀 Let’s kick-off
Diagramming software architecture provides several benefits to how we communicate complexity. Well-thought-out diagrams give engineering teams an enhanced understanding of the design and plan for future development whilst identifying potential issues.
Below are a few examples of modelling and diagramming tools in particular categories that we’ve found suitable for software architecture.
📦 Visual modelling tools
Modelling is best for long-term system design docs and requires some setup work. Reusable objects and relationships are stored in the model, which keeps all your diagrams up to date.
1️⃣ IcePanel
IcePanel is a graphical web-based SaaS tool for collaboratively modelling software architectures using the C4 model.
Pricing: Free and paid options.
Best for agile development teams looking for a lightweight collaborative tool to model and document their software architectures.
Features:
- Interactive diagrams that are zoomable into increasing levels of technical detail.
- Agile modelling for drawing diagrams and creating models at the same time.
- View different perspectives by overlaying additional metadata onto existing diagrams (tags).
- Flows for overlaying and communicating sequences of messages onto existing diagrams.
- Link objects to resources in reality, such as source control or cloud resources.
2️⃣ Enterprise Architect
Enterprise architect by Sparx Systems is a graphical desktop application for modelling business, IT and software systems.
Pricing: Paid.
Best for large enterprises that need to create models for a wide range of industry standards.
Features:
- Analysis, design, implementation, test and maintenance models.
- UML, SysML and BPMN standards.
- High performance to load extremely large models in seconds.
- Dynamic model simulations are written in Javascript.
- Source code roundtrip for many popular languages, including C, C++, Java, PHP, Python and Visual Basic.
- Complete traceability from requirements, analysis and design models to implementation and deployment.
3️⃣ Archi
Archi is a graphical desktop application for modelling and creating ArchiMate models and sketches.
Pricing: Free and open source.
Best for individuals looking to create models using the ArchiMate language without spending a budget on expensive tooling.
Features:
- The latest version of the ArchiMate 5.6 language.
- Create ArchiMate elements, relationships, views and viewpoints.
- Hints view to help you understand the ArchiMate language.
- Visualizer for showing relationships, sketch view and canvas modelling.
🧑💻 Diagrams as code tools
Diagrams as code involve writing your model objects, relationships and diagrams using a markup language which can be checked into source control. These often include auto-layout capabilities.
1️⃣ Mermaid
Mermaid.js is a diagram-as-code tool that lets you create diagrams using markdown-style syntax. Mermaid was built to make diagramming easier and more embedded with existing dev tools.
Pricing: Free and open-source.
Best for technical people who want to generate and keep documentation close to the actual code.
Features:
- Simple UI to create diagrams with a live editor.
- Support for many diagram types (UML, Gantt, C4 model, mind maps, charts).
- Lots of integrations to store diagrams alongside source code.
- LLMs are well-trained on Mermaid.
2️⃣ PlantUML
PlantUML is a tool that allows you to write diagrams such as sequence, object, component, use case, class diagrams and more.
Pricing: Free.
Best for technical people who want the flexibility of creating many different diagram types and checking them into source control.
Features:
- Diagrams are defined using a simple and intuitive text language.
- C4 plugin
- Sequence diagram
- Use case diagram
- Class diagram
- Object diagram
- Activity diagram
- Component diagram
- Deployment diagram
3️⃣ Ilograph
Ilograph allows interactive diagrams to be drawn using YAML with auto layout, changing the view when you want to see different perspectives.
Pricing: Free and paid.
Best for semi-technical people who want a web-based solution for visualizing diagrams written as code.
Features:
- Side-by-side code editing
- Auto layout of diagram objects
- Dynamic layout to change diagrams depending on perspective
- Diagram sequences to show use cases within diagrams
🖼️ Diagramming tools
Diagramming is best for quick sketches in conversation and experimentation of ideas. They are easy to make but often thrown away and difficult to keep up to date.
1️⃣ Diagrams.net
Diagrams.net (formerly draw.io) is a collaborative online diagramming tool with an offline desktop app for added security.
Pricing: Free and open source.
Best for teams who want to ensure data security by storing their diagrams in a secure or offline location.
Features:
- Real-time collaboration.
- Offline desktop app.
- Store diagrams locally in the browser.
- Storage in Google Drive, Sharepoint, OneDrive, GitHub, GitLab, Dropbox or Notion.
- Support for UML, C4, ArchiMate, BPMN and SysML shapes.
- AWS, Azure, GCP, Cisco and Kubernetes icon packs.
2️⃣ Lucidchart
Lucidchart is a collaborative diagramming tool with templating and shape types to create many diagram types, such as flow charts, process flows, mind maps and more.
Pricing: Free and paid.
Best for teams collaborating on quick and flexible diagrams.
Features:
- Real-time collaboration to work with your team
- Connect to data
- Integrate with other tools in your stack
- Templates to help guide you
- A learning campus to learn what you can do with the tool
3️⃣ Miro
Miro is a collaborative whiteboarding tool with templating and team-based tooling to help facilitate workshops.
Pricing: Free and paid.
Best for teams collaborating on diagrams and facilitating workshops.
Features:
- Real-time editing on an interactive whiteboard
- Mouse over collaboration to see who’s viewing your diagram
- Workshop facilitation tools such as timers and voting
- Community-made templating
- AI-assisted workflows
4️⃣ Eraser.io (bonus)
Eraser is a hybrid drag-and-drop + diagram-as-code tool.
Pricing: Free and paid.
Best for teams looking to create quick and shareable architecture diagrams with code.
Features
- AI-generated diagrams
- Code diagrams that update in real-time
- Design and technical docs UI
- Integrations (Confluence, Notion, VScode, GitHub
- API
🏁 To wrap up
There are many software architecture tools out there to choose from, and it’s important to consider the reasons you’re creating a visual of your architecture in the first place. If it is simply to visualize an idea of a potential solution, we’d recommend using something quick like a diagramming tool, but expect it to be not so useful long term.
If you’re looking to create an artifact that others will refer to for a significant period, we’d recommend using a modelling tool. The reason a modelling tool is more beneficial long term is that you can push changes across all diagrams by simply updating the model, vs with a diagramming tool, you’ll have to hunt down every instance of that object to keep the design in sync.
Stay chill 🧊