Ask HN: A modern-looking UML diagram tool?
I've been going back to UML to try to tame some of my design/notes for my projects. Is there something that generates some more modern looking UML diagrams out there?
I've been going back to UML to try to tame some of my design/notes for my projects. Is there something that generates some more modern looking UML diagrams out there?
- It uses a human readable text-based file format renderable via the PlantUML jar. Friendly to CLI and git.
- The diagrams are stylable, should you wish to style them.
- There's a PlantUML Integration IntelliJ plugin that's easy to use for preview/rendering[2]
- Overall simple to use, but I imagine it can as robust as you want it to be. For example, the IntelliJ plugin Sketch.it automatically generates PlantUML diagrams from Java source code[3], and the source code for how it works is available on BitBucket if you want to know how it works[4]
I've seen other people suggest Mermaid.JS[5] before, but I haven't used it so I can't say how it is. [1]: http://plantuml.com
[2]: https://plugins.jetbrains.com/plugin/7017-plantuml-integration/
[3]: https://plugins.jetbrains.com/plugin/10387-sketch-it-
[4]: https://bitbucket.org/pmesmeur/sketch.it/src/develop/
[5]: https://mermaidjs.github.ioEdited to remove example that still produces scroll bar on non-maximized windows (and mobile).
The VSCode one[0] is good too
0 - https://marketplace.visualstudio.com/items?itemName=jebbs.pl...
However, Lucidcharts has a better UI in that I can build diagrams after in LC than Draw.io. https://www.lucidchart.com/pages/
LC is paid if you need more than 1 chart (who doesn't?). But Draw.io is free. LC is also web-based and is cross-platform.
I've heard OmniGraffle is also excellent (never used it myself) but it only works on OSX/iOS: https://www.omnigroup.com/omnigraffle/
Since then using draw.io, yed and Inkscape.
it's also SO much more than just UML. I have found SO many uses for it.
On the whole I like OmniGraffle, but I _hate_ the curves that it draws. If I use it to make a diagram, I have to spend so much time making the curved lines between shapes not look like shit.
It does not support all the diagrams yet, but it's completely themable and you can code away your diagrams like you would with dot/graphviz.
It integrates well into any Markdown tool, Gitlab integrated it about a year ago so it's natively available in Gitlab flavored Markdow.
I use Plantuml myself and I find that I regularly have to fight with the layout engine to get diagrams to looks the way I want them too.
But I think PlantUML is more capable.
https://www.yworks.com/products/yed
Favorite feature: automatically reorganize the chart according to your preferences/constraints (e.g. fewer line intersections, hub-spoke, hierarchical, etc)
It has some weird defaults though, eg the "create node on click" is weird. Turn that off :-)
It has lovely alignment features, making it super easy to make clear diagrams. It doesn't align things to a grid, but to surrounding nodes/edges in a really nice way. Try putting two nodes besides one another, and then a third one next to it. It'll auto-align the spacing so the three boxes are evenly spaced.
Thanks for the kind words. One note: yEd does have grid snapping (look for the grid-like icon in the toolbar or View > Grid). Personally, though, I rarely need the grid, as the normal snapping features work rather well for quickly making things line up or the same size. Also, automatic layout takes care of many alignment needs :-)
There's also Tools > Snap to Grid for a one-time grid snapping operation of everything (or a selection). Didn't even know that one existed until now.
Compliment the team for a great app! Inventing great UX isn't trivial and you guys aced it.
We do have a more modern web-based graph editor: https://www.yworks.com/yed-live/ It may lack features you need, as the idea was a less cluttered and more modern UI, not to bring over everything and the kitchen sink.
As far as yEd Desktop goes, Java becomes an increasingly unattractive platform for desktop development, with Swing showing varying degrees of brokenness on different platforms and Java releases. The new hotness right now seems to be to either get working printing or working High-DPI support, but not both in the same Java release.
It's due for a minor UI overhaul, though, and this may come in the future. We probably cannot and won't completely restructure yEd's UI (such things also serve well to piss off long-time users).
Personally, I'm still hoping for Microsoft to see the need for a good cross-platform managed-code UI toolkit. Perhaps they're open to funding or adopting Avalonia. But perhaps that's just me being open to rewriting an aging Java application in C# ;-)
And being aware of component libraries like JGoodies (http://www.jgoodies.com/).
I have used yEd for hardware diagrams as well, although I still haven't found a great way to draw out busses of signals between nodes (to be clear I haven't found anything besides manual drawing which works!)
http://docs.yworks.com/yfiles/doc/developers-guide/figures/c...
For shareable web editing, LucidChart or Draw.io.
For quick easy text markup, PlantUML or Mermaid.
I have not found any UML tool that's pretty, shareable, round-trippable, and has easy text markup.
Demo of PlantUML: https://github.com/joelparkerhenderson/demo_plantuml.
You know, there are lots of people selling snake-oil, drawing boxes and arrows that make you feel good, but ultimately have no real meaning. If something is really meaningful you should be able to express it in mathematics. - Leslie Lamport
... via https://github.com/globalcitizen/taoup
If you need to visualize, take more precise states as a basis and take a look at graphviz[0]. If you need to model multi-agent systems, use mscgen[1] to draw Message Sequence Charts.
I use it for sequence charts as well by using sublabels (not sure what they're really called), usually I don't care so much about the sequence but where the choke points in this giant pile of steaming enterprise are:
SomeObject[label="<someMethod1> someMethod1 | <someMethod2> someMethod2"];
Foo -> SomeObject:someMethod2;From the UMLet web page:
> UMLet is a free, open-source UML tool with a simple user interface: draw UML diagrams fast, build sequence and activity diagrams from plain text, export diagrams to eps, pdf, jpg, svg, and clipboard, share diagrams using Eclipse, and create new, custom UML elements. UMLet runs stand-alone or as Eclipse plug-in on Windows, OS X and Linux.
UMLetino runs UMLet in a web browser. Refer to the UMLet FAQ and sample diagrams for help. http://www.umletino.com/umletino.html
Also draw.io templates and a set of Visio templates ( https://github.com/pihalve/c4model-visio-stencil ) that can be imported into Lucidcharts as well. There is also some web based tools (see bottom of C4 website).
A very small niche and well done as a beautiful native Mac app.
also, i see it as primarily useful for generating ASCII diagrams for inserting into source code or docs. If you don't care about that tools like OmniGraffle do a much better job.
It doesn't support standard UML diagrams but between sketch mode [1] [2] and icons [3] you may be pleasantly surprised. I personally use it to map out Kumu's own internal application structure and flows.
Full disclosure: I am the lead developer and cofounder of Kumu.
[1]: https://www.youtube.com/watch?v=wX3kbCyOamQ (Gene Bellinger's intro to Kumu's sketch mode)
[2]: https://www.youtube.com/watch?v=AFOz67co0yA (Benjamin Mosior sketching wardley maps in Kumu)
[3]: https://docs.kumu.io/guides/icons.html (Kumu docs on Font Awesome support)
UML Diagramming Software for Windows: https://www.ilovefreesoftware.com/29/featured/free-uml-desig...
Online UML Digaramming Tools: https://www.ilovefreesoftware.com/22/webware/free-websites-t...
If you don't mind paying for something and want something that looks great visually, I would recommend Lucid Chart [2]
[1]: https://draw.io
[1] https://avdi.codes/tools-for-turning-descriptions-into-diagr...
(I make GoJS, a diagramming library, but it presumes nothing about "looks", which can be modified arbitrarily)
For more advanced diagrams I use Enterprise Architect (https://www.sparxsystems.eu/).
And what for do you need UML (and what type diagrams)?
For example, IDEA products for Java has some tools for class diagrams
MS visio is nice too as tool for just painting UML
But main problem with UML - synchronization with code base
draw.io is a free tool both available online at https://www.draw.io/ or you can download a desktop version from https://github.com/jgraph/drawio-desktop/releases. Quite fast and good.