Diagramming

Our industry’s current bias towards [agile] software delivery practices has led to a preference for use of lightweight diagramming tools to create visual representations of [system designs], over the production of detailed models.

Diagrams are often used to communicate ideas and concepts to a wider audience, including non-technical stakeholders, rather than as a pure development tool.

The [domain language] of diagramming tools is "boxes and arrows". This makes diagraming tools relatively easy to use. The barriers to entry are much lower than for proper modeling tools like StarUML. But this simplicity has some trade-offs:

  • With diagrams, you can’t enforce the same level of consistency in naming and relationships between components as you can with proper models.

  • You can’t validate, in an automated way, that diagrams are a correct representation of the code they document.

  • You can’t query diagrams (eg. "show me all the dependencies of component X").

  • You can’t auto-generate code from diagrams.

  • Maintaining diagrams as the code changes is a more manual, and therefore more error-prone, process compared to maintaining models. For example, if you change the name of a class in the code, you will probably have to change it in several places in the diagrams, too. In a model, you should need to change the names of things in only one place.

Diagrams tend to be stored in either binary formats (such as images) or heavyweight plain-text formats that are difficult to diff. For these reasons, it is harder to maintain diagrams under version control systems like Git. But this is true of many modeling tools, too.

Diagramming tools

Drag-and-drop diagramming tools

Drag-and-drop diagramming tools include:

  • ConceptDraw Diagram — Previously known as ConceptDraw Pro, this is a proprietary, general-purpose diagramming desktop application.

  • Dia — Free and open-source general-purpose diagramming tool, with a similar interface to GIMP and Inkscape.

  • Diagrams.net (formerly Draw.io) — Popular free web app, that’s also available as an Electron-based cross-platform desktop application. It is also available as a plugin for other applications including Atlassian Confluence and Jira, and Visual Studio Code.

  • Gliffy — Easy-to-use web-based diagramming application, supporting collaborative editing and a large number of diagram types.

  • JetUML — Free and open-source UML diagramming tool. Supports a limited set of UML diagrams. Saves diagrams to a JSON schema, and exports to a variety of image formats.

  • Lucidchart — Popular diagramming software-as-a-service.

  • OmniGraffle — Mac-only diagramming tool and lightweight general-purpose drawing tool.

  • SmartDraw — Another general-purpose diagramming and visualization software-as-a-service.

  • UMLet — A flyweight, free and open-source UML drawing tool. Available as a standalone cross-platform application, or an Eclipse plugin, and more recently as an extension to VS Code. It’s also available as a free-to-access web app called UMLetino.

  • Visio — Collaborative diagramming tool. Accessible via Microsoft 365 commercial subscriptions only (not available via personal subscriptions).

  • yEd — Free (but proprietary) cross-platform desktop and online diagramming tool. Loads and saves diagrams from/to GraphML. Desktop version requires a local JRE.

Diagrams-as-code solutions

Diagrams-as-code solutions are becoming increasingly popular as the plain-text syntax can be version controlled and maintained alongside the source code they document.

See diagrams-as-code for a list of solutions.

Other diagramming tools

  • Abacus — Enterprise architecture tool that includes diagramming capabilities.

  • Aplas — Commercial "software mapping" tool.

  • Arcentry — Cloud architecture diagramming tool.

  • Cacoo by Nulab — Web-based collaborative whiteboards.

  • CaseComplete — Requirements management tool to create use case diagrams, GUI wireframes, and user journey flowcharts.

  • Cloudcraft — Cloud architecture diagramming tool.

  • Cloudockit — Cloud architecture diagramming tool.

  • CloudSkew — Cloud architecture diagramming tool.

  • Cloudviz — Cloud architecture diagramming tool.

  • Creately — General-purpose whiteboard tool that supports a wide range of standard diagram types.

  • Excalidraw — Free online lines-and-boxes drawing tool. Supports Mermaid, and also available as JavaScript libraries for integration into other applications.

  • Figma FigJam — Brainstorming and collaboration tool that includes diagramming capabilities.

  • gg — Free web-based charting tool.

  • Hava — Automatically creates visual representations of your cloud architecture, by dynamically integrating with your AWS, Azure, or GCP account.

  • Holori — Cloud infrastructure planning tool, includes diagramming for AWS, Azure, and GCP.

  • Hyperglance — Cloud architecture diagramming tool.

  • Isoflow — Network diagrams.

  • Miro — Web-based whiteboard tool that includes diagramming capabilities.

  • Mural — Web-based whiteboard tool that includes diagramming capabilities.

  • Revision — Niche online diagramming software-as-a-service.

  • Sketchboard — Web-based collaborative whiteboards.

  • Whimsical — Web-based collaborative whiteboards.