Hierarchical / linked diagrams

476 Views Asked by At

Within my company we have numerous distributed systems, which are maintained by different developer teams. It becomes increasingly difficult to track the dependencies and communication between these systems:

  • Drawing a single diagram is impossible as the level of complexity is too high.
  • Static diagrams produced in tools like Gliffy or Visio quickly become out of date.

The ideal would be some kind of hierarchical diagram software, whereby I can click on a "system" (that could in fact correspond to an entire dev. team) and "zoom in" to other diagrams representing the components in that system. Also, ideally this would be a "live" diagram with processes providing topology information on-the-fly.

Does anyone know of any applications / libraries (preferably in Java) that fulfill one or both of these requirements?

2

There are 2 best solutions below

0
On

I guess you would like to have a system like shown in the movie with the ability to give an overview of the overall system architecture and drill-down to the individual components. This seems to be a commercial solution, however you can gain some ideas from them.

I assume you already know/use the following tools:

  • Dependometer
  • JDepend - here you can filter the packages to be displayed on diagrams and have automatic verification of dependency rules
  • SonarGraph - commercial tool. Allows drill-down on dependency diagrams

As far as data visualization is concerned:

  • d3.js - awesome library for data visualization. You can easily create zoom-able diagrams: example 1, example 2
  • GraphViz - graph visualization software
  • JGraph - mentioned by @MadProgrammer

In order to have diagrams, which are updated automatically you could add custom java annotations to your code. With these annotations you would mark some of the important components and communication interfaces along with some metadata. Then you can write a simple parser, which will produce output for GraphViz or d3.js and you'd have the desired documentation.

0
On

We use yFiles libraries in order to visualize network topologies and UML diagrams. It's quite easy to create interactive "drill-down" diagrams with it. A complex system can be hidden by a folder node, that can be opened/closed at any time. Spawning a new graph/diagram based o some node sounds plausible too. It comes with detailed documentation and lots of demo code.

There's a downside though. It comes with a commercial license (you have to pay for it) unless you are an academic researcher.

Disclaimer: I'm not a developer of yFiles and am not affiliated with them.