Live data from Hacker News

Ask HN: Visualizing software designs, especially of large systems (if at all)?

news.ycombinator.com

31–40 of 129 posts

Re: Ask HN: Visualizing software designs, especially of large systems (if at all)?

#32

UML is not a documentation tool, it´s a communication tool. It is a standardized way to communicate. It removes ambiguity. UML is the best way to manage, communicate and handle a large amounts of complexity. Most of the free UML tools are very basic and does not have traceability features (we can see many in the comments), and this is really a no-go if you want to understand large systems.

I agree with your view on UML, but now I'm curious what you consider documents to be for.

Re: Ask HN: Visualizing software designs, especially of large systems (if at all)?

#33
post #28

A nice talk at kubecon last year spoke about visualizing protocols and more complex multi-party exchanges. The suggestion it made was to look across module boundaries or microservice boundaries, while making a particular request. So I go to update a Project with a new Pipeline, and I find out that the project service talks to the pipeline service which then has to create resources for which it talks to various resour…

There are tools that help with visualising requests between services, provided the information is augmented with some extra observability data.

Most APM/distributed tracing products have ways of visualising distributed traces so we can see starting from a specific call which services were involved and how much time is spent in important operations (e.g. db, etc). Here's an example: https://www.datadoghq.com/product/apm/#end-to-end-tracing

Datadog builds this service map automatically for you from APM and RUM data: https://docs.datadoghq.com/tracing/visualization/services_ma...

AFAIK you can consume the data via API so you can build other visualisations on top of it if you don't want to stick with the flame chart or service map.

Since this is runtime information it won't be as comprehensive as static code analysis but it does show what's actually happening in the system.

disclaimer: I work for Datadog edit: add link to service map

Re: Ask HN: Visualizing software designs, especially of large systems (if at all)?

#35
For a small but complicated project I got thrown into a while ago, the only way for me to understand it was to print out all the source directly, vertically tape together the pages for a single file, and then lay them all out on a huge table. Then I took multicolored markers and started physically drawing out the call chains. I then I sers-toi the system, and also found an enraging bug: the system widely used the variables "blah_name" and "blah_id", including in many functions' parameters. Except, in one case, blah_id was passed in as blah_name and thenceforth became known as blah_name.

I don't know if an automated visualization system is possible, but you'll have to understand the whole thing before doing so. Pen and paper was the most expedient solution for me at the time.

Re: Ask HN: Visualizing software designs, especially of large systems (if at all)?

#36
I use what I call "UML Lite" (UML, without all the frou-frou). It's handy for illustrating points[0].

What I generally do, is start with what I call a "napkin sketch" (which can be UML-ish)[1], and try to avoid writing down too much stuff, in order to reduce "concrete galoshes"[2].

I try to use tools like Doxygen and Jazzy, to document the code, in an inline fashion[3]. Doxygen will generate a UML "Lite" diagram[4].

[0] https://littlegreenviper.com/miscellany/swiftwater/the-curio...

[1] https://littlegreenviper.com/miscellany/forensic-design-docu...

[2] https://littlegreenviper.com/miscellany/concrete-galoshes/

[3] https://littlegreenviper.com/miscellany/leaving-a-legacy/

[4] https://doxygen.nl/manual/diagrams.html

Re: Ask HN: Visualizing software designs, especially of large systems (if at all)?

#37
post #35

For a small but complicated project I got thrown into a while ago, the only way for me to understand it was to print out all the source directly, vertically tape together the pages for a single file, and then lay them all out on a huge table. Then I took multicolored markers and started physically drawing out the call chains. I then I sers-toi the system, and also found an enraging bug: the system widely used the var…

Sounds like something the type system should have caught!

Re: Ask HN: Visualizing software designs, especially of large systems (if at all)?

#38

This tool is good for making simple UML diagrams and even lets you do it with simplified syntax https://plantuml.com/ I'd say the big problem in visualizing big systems is that you can't usefully do it in one graph. For instance I worked on a system that had 2000+ database tables if you were going to make a diagram of that which shows everything it is going to take up a long wall. (This can be useful, but it is a big…

PlantUML with C4 and the additional cloud icons, is what I use

Re: Ask HN: Visualizing software designs, especially of large systems (if at all)?

#40

I'm a fan of https://www.ilograph.com/ . I've only used it for a few small things, but the author has good samples, including a diagram of ilograph itself - https://app.ilograph.com/demo.ilograph.Ilograph/Request .

This looks interesting :) Not sure about YAML, been burnt with OpenAPI, but it looks good.
Post reply on HN