Tools for software diagrams



I need to draw/build some diagrams for my master’s thesis and I tried using Visio 2016 but I didn’t really like the way the program works and how the diagrams look. I always see these conference talks and presentations where people show really nice diagrams of software data flows and architectures so I was wondering if anyone has suggestions of tools to do this kind of work? :smiley:


My tools of choice are the following:

  • Pen
  • Paper
  • Scanner


No, to be honest, when I have to prepare some slides, I do use LaTeX and Beamer, so it feels quite natural to also use TikZ for figures in the slides.

Most of my co-students which prefer to use PowerPoint, use Powerpoints internal stuff to have the graphs/charts flashy, animated and annoying…

So as usual, the tools you are able to choose here, do deeply depend on the tool(s) you already use as fixpoint in your workflow and how well you are experienced with them.


For data flows you could use (also great for general app design).

For talks and presentations, how about something like


Yes, I’ve been thinking about using Prezi for my thesis’s presentation :smiley: I’ve seen some really great presentation done with it.

I’m going to look at Sketchapp. Thanks!

EDIT: Oh it’s Mac only :angry:


@sashaafm Haven’t really used much of it but VIsualParadigm looks good to me. I dunno if that is what you are looking for. They have a community edition


I use edraw max to draw whatever diagrams from scratch.
Would be nice to have some tool which generates the diagrams from source code.


I believe Visual Paradigm (or was it another tool?) does this for Java.


oh yes,
i know for java (and c# and prob many more popular languages) there are tools,
was thinking about a tool for elixir.


You’ve got Observer and Visualixir


I always used OmniGraffle. Anyway I’ll have to take a look to some tools in this thread.


Not sure if this will fit your bill, but if by software diagrams you meant UML, take a look at Mermaid. The charts are created via a syntax that is very similar to PlantUML (aka: you don’t “draw” your charts, you describe them).

Since they are text based, both PlantUML and Mermaid can be embedded in your version control.

The differences are that PlantUML is built on GraphViz and supports more UML diagrams, but is uglier looking, while Mermaid is built with D3 and supports online rendering and CSS.

Compared to Visio/Powerpoint, the main downside is that you have to keep things standardized (or set up a bunch of special CSS classes if using Mermaid ;))


I’ve made some nice diagrams with lucidchart.


Looks like you are on Windows. Not really for diagrams but if you want to use something different than Microsoft Powerpoint there is also Microsoft Sway which is a bit less boring.



I have been using Diagram Tool to create and draw flowchart or diagram in word, excel or PowerPoint…
Give a try to this All in One Diagram Tool


I use


I’m just now trying to learn elixir and trying to map the KV tutorial to UML. I’m finding elixir to not be object oriented in the sense of creating (even via reverse engineering) UML diagrams from popular tools. It just does not line up to the old “is a”, “has a” and uses paradigm utilized by UML. Perhaps I just have not caught on yet.


Technically Erlang/Elixir is more true to OOP than Java/C++ and those diagrams represent. The disconnect is that is a and has a are not original OOP terms but bolted on to C++ (and thus Java and others) as a work-around for their poor implementation of OOP.


@Salgare There are two kinds of diagrams that are very useful in Elixir:

The first are the hierarchical UML-diagrams you might know from Object-Oriented programming language. In Elixir, Erlang and other Actor-Model based languages, these are not used to show a class-inheritance hierarchy (as we don’t have classes) or data-relationships-hierarchy (as data and code is separated in functional programming languages), but to show the hierarchy of a so-called Supervision Tree. This is a hierarchy of Processes (lightweight threads) that talk to each other. The different kind of lines show what process instantiated what other process, and if a connection is a link (bi-directional) or monitor (single-direction).

These diagrams are very useful, and show what happens when a crash occurs in some part of your program.

The other type of diagrams are sequence diagrams of messages going back-and-forth, as message-passing is the (only!) way that processes can talk to each other in Elixir.


When visio doesnt work out. The best solution is to use a UML diagram tool with the latest UML version which is 2.5.1. Creately UML Diagram Tool is a good option. There are many templates and examples to be used freely as well.


You can use I use it for both wireframes and diagrams. Off topic I’m currently developing a tool for this but design for software teams.