

But a general purpose diagramming tool can't enforce this, because it doesn't know what a "container" or "component" is. For example, the C4 model says, "don't put components on a container diagram". UML, ArchiMate, and the C4 model all have rules about what you can and can't do. Now what? The tool can't guide you towards creating a good software architecture diagram, because it doesn't know that's what you're trying to do.

Some people really like the freedom that general purpose diagramming tools give you, but this freedom is exactly what gets most people into trouble. Because these tools don't know that you're trying to create a software architecture diagram, they can't really help you do that. Open up a diagram file in a text editor, and you'll see what I mean. The domain specific language of general purpose diagramming tools is basically "boxes and lines". For software architecture diagrams though, my recommendation is no, for a few reasons. It's "diagrams as text".īut you might be wondering, what about general purpose diagramming tools such as Visio, draw.io/, LucidChart, Gliffy, OmniGraffle, etc? Should they be used for creating software architecture diagrams? For the record, I want to say that these are all great tools and, like many other people, I do use them myself. Software architecture diagrams - which tool should we use? looks at how to generate software architecture diagrams with PlantUML, Mermaid, WebSequenceDiagrams, and Structurizr, all via the tooling agnostic, and open source, Structurizr DSL. "Which diagramming tool should we use?" is a question I'm asked frequently.
