在我的公司内部,我们有许多分布式系统,由不同的开发团队维护。 跟踪这些系统之间的依赖关系和通信变得越来越困难:
- 绘制单个图表是不可能的,因为复杂程度太高。
- 在 Gliffy 或 Visio 等工具中生成的静态图表很快就会过时。
理想的情况是某种分层图表软件,我可以单击一个"系统"(实际上可以对应于整个开发团队)并"放大"到代表该系统中组件的其他图表。 此外,理想情况下,这将是一个"实时"图,其中的进程提供动态拓扑信息。
有谁知道任何应用程序/库(最好是Java)满足其中一个或两个要求?
我想您希望拥有一个像电影中所示的系统,能够概述整个系统架构并向下钻取各个组件。这似乎是一个商业解决方案,但是您可以从中获得一些想法。
我假设您已经知道/使用以下工具:
- 可靠性计
- JDepend - 在这里你可以过滤要在图表上显示的包,并自动验证依赖规则
- 声纳图 - 商业工具。允许向下钻取依赖项关系图
就数据可视化而言:
- D3.js - 用于数据可视化的出色库。您可以轻松创建可缩放的图表:示例 1、示例 2
- 图形可视化 - 图形可视化软件
- JGraph - @MadProgrammer提到
为了获得自动更新的图,您可以在代码中添加自定义 Java 注释。使用这些注释,您可以标记一些重要的组件和通信接口以及一些元数据。然后,您可以编写一个简单的解析器,它将生成 GraphViz 或 d3 的输出.js您将拥有所需的文档。
我们使用yFiles库来可视化网络拓扑和UML图。使用它创建交互式"向下钻取"图非常容易。一个复杂的系统可以被文件夹节点隐藏,可以随时打开/关闭。基于某个节点生成新的图形/图表听起来也很合理。它带有详细的文档和大量演示代码。
不过有一个缺点。它带有商业许可证(您必须付费),除非您是学术研究人员。
免责声明:我不是yFiles的开发人员,也不隶属于他们。