Hacker News new | ask | show | jobs
by EgoIsMyFriend 1240 days ago
i know people are upvoting this because it got open sourced but i'm wondering if anyone actually uses UML outside of university classes i attended? if anyone would give his experience i would appreciate it
11 comments

We make extensive use of sequence diagrams using PlantUML at my work. We don't rigorously adhere to the correct UML arrow types and so on, instead preferring it as a fast way to clearly communicate data flow over time. The fact that it's in a text format means it can be conveniently edited and stored in source control.

I've had less success with component diagrams to represent our systems because the layout engine in PlantUML is (or used to be) quite limited. This resulted in diagrams that didn't communicate the system as well as if I manually drew boxes and lines.

There is a fantastic plugin for Jetbrains IDEs that generates the diagrams in real time which is great for fast feedback, and can be used for driving out diagrams while presenting video calls.

Overall, my conclusion is that you can pick the parts that are useful to you and the people you communicate ideas with.

We're in the same boat with component diagrams, where the layout engine is insufficient. What did you choose to do for alternatives?
I found using groups, colors and direction hints gets mostly around the issues. Enough that the benefits outweigh the downsides of switching to something else (that doesn't get source control, requires separate edit/export steps etc).

   group sys { 
      one -down-> two
   }
> There is a fantastic plugin for Jetbrains IDEs that generates the diagrams in real time which is great for fast feedback, and can be used for driving out diagrams while presenting video calls.

That's exactly how I use it!

> We make extensive use of sequence diagrams using PlantUML at my work. We don't rigorously adhere to the correct UML arrow types and so on, instead preferring it as a fast way to clearly communicate data flow over time. The fact that it's in a text format means it can be conveniently edited and stored in source control.

Similar situation, Github now supports rendering Mermaid (https://github.blog/2022-02-14-include-diagrams-markdown-fil...) but I'm yet to give it a try.

Sure! Docs-As-Code with PlantUML and in our case Sphinx (AsciiDoctor is just as good, in our case Sphinx-Needs moved the needle) is a nice low effort "persist your architecture ideas in the repo" solution. You can check that every PR has a piece of documentation and design coming with the new feature. We're getting more from being in- to semi-formal and not trying to use UML as a programming language.
I have absolutely used it for designing before building complex things and documenting complex things after they've been built. At the design phase, I find it's useful to iterate on high-level UML to anticipate the architectural challenges that lay ahead vs iterating on implementation when I've already found myself in the weeds. If you peruse AWS documentation you'll see UML diagrams of all kinds right through it. And you're probably very familiar with sequence diagrams if you do anything network or concurrency related.
Software level design documentation in aerospace make extensive use of UML (my shop even use PlantUML). Sequence diagrams in particular are quite useful.

People often find that level of documentation a bit redundant if you have access to the code, but if you're pressed for time and the diagrams actually describe the crucial parts it can be a huge timesaver when you have to fix something in a 10 year old component.

Yeah, UML overall is a bit overengineered, but sequence diagrams can be incredibly useful.
I have been involved in many teams where we used PlantUML for sequence diagrams, which are specially helpful to explain a complex process.

To me, I have saw considerable performance improvements when sharing sequence diagrams to devs that are not very familiar with a project or its domain.

Unfortunately, sometimes it is complicated to understand when a diagram is worth it because while an experienced dev can find something obvious, an less experienced one can struggle on that for a while.

EDIT: I forgot mentioning that these diagrams were super helpful when presenting solutions to technical customers/partners, instead of preparing a PoC, we could just create the diagrams to explain the proposal flows.

On a small project I used sequence diagrams to document a custom Api/data flow, so that another team (different company) had a reference for implementing the client to my (bespoke) JSON/REST server.

I frequently draw simplified architecture and data/entity diagrams that tend to be "mostly" UML.

Generally on a whiteboard while discussing design/architecture - rarely do they end up as permanent artifacts/documentation.

TL;DR: Not the UML you're taught in school, but check out C4 Model https://c4model.com/

--

Pure UML is pretty rare in my experience, and most likely used only in very strict environment that don't change often (security, airplanes,...).

UML concepts and diagrams however are extremely useful to collaborate on complex systems or flows. However people don't tend to make good diagrams, unless they're very restrictive. I find that sequence diagrams are usually the ones with the best quality out there because you have to adhere to a strict (and rather simple) représentation.

For things that are not flows-like I would recommend using the C4 Model https://c4model.com/ :

- It provides a simple and constrained way to describe systems and their interactions.

- The first two levels are the most useful IMO as they provide a lot of information, while being rather static over time. Level 3 and 4 typically require frequent changes as your code evolves.

I hated I'll with a passion before, but in my actual job it would provide a better pivot point to explain structure and protocols compared to a GitHub issue in plain text. Ironic.
I use selective UML concepts to express my designs. My current tool of choice so far is StarUML which also lets me export the designs as nice looking HTML
I've used plantUML for state/timing/sequence diagrams in the digital logic space
At first, I read this as "plant-based UML". I was expecting it to be a vegan option.