A few months ago, I decided to take my software development skills to the next level by getting into Software Architecture. I had worked on several projects before, but I realized that understanding how to structure and design scalable, maintainable software was just as important as writing clean code.
I started by exploring fundamental best practices, principles, and methodologies in software architecture. I also contacted some experienced Software Architects over Slack and Reddit communities, asking them about the tools they use daily. The deeper I dug, the clearer it became that choosing the right tools is necessary for any architect. From diagramming system components to modeling infrastructure, the right tools make architectural decisions more structured and effective.
To use what I had learned, I chose to use open-source tools to design a fintech application. During the process, I concluded that there isn't a single best tool for software architecture. The kind of architecture you're working on, your role, and the size of your organization will all affect the tools you need. For a small SaaS application, a solo developer may use code-first, lightweight tools, whereas an enterprise architect creating distributed systems may need formal modeling frameworks.
I also figured out several logical categories of software architecture tools based on job stories. Those include modeling and diagramming, design and analysis, cloud architecture design, collaboration and documentation, code analysis & visualization, and testing. While I focus primarily on modeling tools, these broader clusters help capture the full range of architectural needs.
For software architects, diagramming is essential for understanding system components, data flows, and infrastructure.
With that in mind, I’ve compiled a list of tools that I find the most useful and accessible. I leaned toward tools that help with visualizing, documenting, and structuring architectures. Let's get started.
Graphviz is the first tool on our list because several modeling and diagramming tools extend and use it in some way. It is a software that provides a code-based approach to generating graph modeling diagrams.
NOTE: The words text-based and code-based will be used interchangeably in the article. They mean the same thing- using some form of grammar to draw diagrams and models. Another note is that code-based diagram generation makes it easy to add version control and integrate CI/CD into your diagram/model creation process.
Why should architects care about graph visualization? Many applications, especially large ones, are highly interconnected with many dependencies, microservices, APIs, third-party integrations, etc. To clearly understand these interconnections and their relationships, architects need to map them visually. Graphviz provides an efficient way to define and render these graphs.
I view Graphviz as a tool meant for extensibility and being used as a base component for other modelling tools. For graph connections though, I find it easy to use diagram-based tools with drag-and-drop features to draw them.
Following Graphviz, the next tool on our list is PlantUML. This is a browser-based diagramming tool that enables architects to create diagrams using simple text-based syntax.
To get better diagrams, I would recommend changing the rendering engines because at times different engines may render slightly different diagrams.
The next tool on our list is D2. Declarative Diagramming (D2) is a code-based diagramming tool created by Terrastruct. It streamlines the process of creating and maintaining diagrams by allowing you to:
I like the depth of D2's documentation and the user-friendliness that comes with it. The diagrams rendered are also great with fine and smooth finishes. However, it is not a standalone tool like a software since it is a language. Unless you are using its playground or CLI, you will need to integrate it for intuitiveness.
Gaphor is a UML 2 compliant modeling software that implements UML, SysML, and RAAML standards and includes support for the C4 model making it usable for different architectural needs.
It is better suited for those who put standard-compliance first. Also, since it is a standalone software, updates from the maintainers would not be immeadiate like browser-based tools because they will need downloading for them to get the latest versions.
Mermaid is a browser-based diagramming tool that transforms text-based definitions into dynamic visuals. It lets you write diagrams in a Markdown-like syntax that can be rendered instantly and dynamically.
Its key features include:
For those architects who want a tool that has established itself integration-wise, then Mermaid is the better option. Those coming from a JavaScript background would also love it.
As system architectures grow in complexity, Enterprise Architecture frameworks like TOGAF and modeling languages like ArchiMate become essential. But how can architects create clear, structured models without expensive proprietary tools? One open-source solution I found out is Archi. This is an ArchiMate modeling software designed for enterprise architects and organizations of all sizes without the high costs of proprietary software.
Some of Archi's features include:
For Linux users, you may find some user interface issues using this software as pointed out in the Downloads page. To update it, you might also need to uninstall the version that you have- I am not sure if this will sit well with you. The user guide is also in a PDF file, meaning architects risk following an outdated guide if they had downloaded the PDF file.
Another tool that prides itself in Enterprise architecture modeling is Modelio. It supports multiple industry standards, making it an excellent choice for working across different domains, from software design to enterprise architecture.
With Modelio, architects can:
The documentation, the website, and the GitHub code are not updated regularly, so I would deduce that it's not a tool to rely on your enterprise architecture needs.
At times, you may not require a rigid UML modeling tool. A straightforward yet powerful diagramming tool like Diagrams.net is a good choice. It integrates with cloud platforms, popular apps, and version control systems. It also offers security-first design and advanced collaboration features.
While this tool is great for UML diagrams, it doesn’t stop there. You can also create other diagram types like flowcharts, mind maps, etc.
Some of its features include:
The collaboration feature is only found in the production version and not the GitHub version as pointed out in the project's README.
This tool has a lot of features and it is a best fot for someone who wants to play around with many features in their diagramming workflows. I loved this tool the most 🙂.
Excalidraw is another tool on our list. It is a lightweight browser-based whiteboarding tool architects can use to sketch and brainstorm modeling ideas. Its style gives the impression of the sketches being drawn by the hand. Some reasons that would make you choose Excalidraw include its:
It is easier to get started with but not for generating solid architecture diagrams.
tldraw in a similar way to Excalidraw and the two bear the same features, so we won't talk about tldraw's features. However, one feature of tldraw is its SDK. The SDK can be used by developers to integrate the whiteboard into applications. Since this article is meant for software architects, we won't dive into the SDK.
My parting shot about it is the same as that for Excalidraw- it is only supposed to be used for brainstorming.
Finishing off this list at number 11 is Cerbos Policy Decision Point (PDP). Cerbos PDP stands apart from the rest in that while all the other tools focus on diagramming and visualization, Cerbos PDP serves a different purpose. It provides an open-source authorization solution that can be up and running in minutes. I think that when designing software architectures, having secure access control is as important as defining system components and data flows.
So with Cerbos PDP, you can:
Wrapping this listicle is this side-by-side table comparison of the key features contained by these tools. The table may assist you in making a choice of the tool you would want to use for your architecture requirements. Of course, there are many more awesome open-source tools that software architects can leverage. But let’s save those for the next article.
Tool | Code/Text-based | Drag-and-drop-based | Built-in collaboration support | Browser-based |
---|---|---|---|---|
Graphviz | Yes | No | No | No |
PlantUML | Yes | No | No | Yes |
D2 | Yes | Only in the playground | No | No (Only the playground) |
Gaphor | No | Yes | No | No |
Mermaid | Yes | No | Yes | Yes |
Archi | No | Yes | No | No |
Modelio | Yes | Yes | No | No |
Diagrams.net | No | Yes | Yes | Yes |
Excalidraw | No | Yes | Yes | Yes |
tldraw | No | Yes | No | Yes |
Book a free Policy Workshop to discuss your requirements and get your first policy written by the Cerbos team
Join thousands of developers | Features and updates | 1x per month | No spam, just goodies.