Live data from Hacker News

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

news.ycombinator.com

51–60 of 129 posts

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

#51
All three companies I have been at make heavy use of architecture diagrams, though their rules and prevalence vary from team to team. In fact I can't imagine a high functioning software organization taking a project from requirements gathering to production support without having ever made an architecture diagram.

However, teams usually do not follow any hard rules like UML. A box with text, a connecting line, and a grouping border can all mean anything, and the subtleties of their actual implementation are still trapped in the lines of code and minds of architects.

I would definitely recommend drawing diagrams of systems you create or work with. If there is not one at work, and you're struggling to grasp the big picture, start making one yourself. Start with the pieces you know and put in ambiguous boxes for the pieces you know exist but don't know what they do. I do this even for solo side projects when they have more than one physically-separated component. This will help you catch bad logic and inefficiencies early, and find the best implementations for new features down the road.

I have used draw.io (now diagrams.net), LucidChart, Microsoft Visio, and they all get the job done. I'll recommend the first one as it's the most open.

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

#53

I love the open source diagrams.net (previously draw.io). I save the files as editable SVG so I can include them directly in markdown READMEs. I use diagrams both to help me design and to show during demos

You mean https://app.diagrams.net/

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

#55

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

I had to do a double take, there was a similar question couple of weeks ago [0].

I was blown away by the idea behind C4 when I first saw the presentation. I think what's missing is the tooling. I use C4 PlantUML do document my architecture designs.. what I'd really love though is a google maps style interface where I can zoom in or out of the current level I'm at. That'd be a game changer. Then you can really describe and understand the system.

The original presentation, in fact, used the google maps interface to illustrate the idea where you're first looking at a continent, then you zoom in to the city and finally the street level.

If you are using C4 right now, how do you compose the various level of architecture and navigate around them?

[0] https://news.ycombinator.com/item?id=31370268

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

#56

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 very cool. It looks similar to the C4 model, where you can have nested components of arbitrary depth ("containers" in C4 parlance).

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

#57

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 .

I use Ilograph pretty heavily both for documenting existing systems and designing new systems. The paradigm of “everything has context” makes diagrams much easier to understand.

I have even used it to render infrastructure diagrams of actual production systems (clusters, load balancers, etc)

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

#59
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…

I use pen and paper as well, but rather than print out all the source code, I write down the call stack. A calls B calls C, etc. along with the line numbers of the call. Much easier than printing out the source and you still have the IDE niceties like go to definition, find in source, etc.

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

#60
One technique that improved my process a lot, particularly for system-level problems, is swim lane diagrams. I worked with someone that created them for _everything_, and at first it irritated the crap out of me because for some things I felt it took longer to write the diagram than to write the code. But, when things are complicated it is so helpful to see a process overview with minimal path ambiguity.
Post reply on HN