我有一个拥有数百万个SLOC,数百个模块和数千个接口依赖项的大型软件系统。基于StackOverflow中的早期问题,我已经能够开始发现这些接口依赖性实际上是什么。
现在的挑战是以有用的格式提供所有这些信息。数据位于SQL数据库中,因此构建报告很简单,但我需要一种方法来实际建模数据,以便用户轻松找到所需内容。
我尝试过像UML这样的标准解决方案,但最终会有如此多的依赖关系,以至于图表看起来像密集的蜘蛛网并且没用。现在我只有一个40,000行的Excel电子表格,但这不太实用。
有没有人有关于如何管理这些专业数据的想法或示例?我曾经想过试图破解doxygen(我喜欢javadoc风格的输出),但这似乎很多工作。
答案 0 :(得分:0)
如果它是一个考虑周全的系统,那么应该在子系统中相互关联的接口集群,但只有少数接口在子系统之间。
如果它不是一个很好的系统,那么它在任何表示中看起来都不会很漂亮,并且消除链接的表示会歪曲事实。
一种选择是修剪只有一个依赖的接口,这将是图的叶子。反复这样做会将系统侵蚀到具有最强链接节点的骨架。
您还可能需要执行拓扑排序,它将显示任何周期,并告诉您图层的位置。
我不赞成JavaDoc概述40,000个接口 - JavaDoc很适合在分层排列的库中查找,但它并不能很好地显示事物之间的联系。
答案 1 :(得分:0)
我认为在解决技术问题之前还有一些事情要做“我在哪种技术中创建文档”。
系统的真正知识和理解超出了实际的接口关系和模块结构。这是对整个系统的理解,以及它中各个部分如何为整体系统做出贡献。
我会按照以下方向前进:
1)首先,尝试从上到下理解系统。这意味着首先要了解模块的结构并从上到下创建它们的一些表示。 在此过程中,您可能会在当前Excel中不存在的模块上找到其他元数据。花时间添加它,在以后创建自动文档时最有用,因为它将反映系统结构的“非显而易见”知识。
2)编写一个简单的程序,从excel 生成一组 HTML文件。这将有助于您更轻松地浏览和导航信息,作为进一步调查的起点。我不会在开始时进入完全成熟的javadoc格式。从小处着手,根据需要分阶段演化程序\脚本。 在此过程中,您还会发现重构有意义的地方。
3)使用HTML的输出来研究几个模块的结构,并了解内部接口模式。是否有命名约定?重复的模式?您可以推断出的任何内容,并且在Excel中已经没有明确记录。
我会创建一些本地UML图表,但不会出现失控的大小 - 每个模块可能有几个UML。以不同的方式标记对外部模块的依赖关系。 (同样,自动化UML的生成也不会那么有用,它是在每个图表中手工挑选有意义的接口,这些接口将成为文档中最具启发性的UML。)
我认为一组HTML和UML的最终结果将是一个很好的最终结果。
答案 2 :(得分:0)
现在VSTS 2010 beta 1已经发布,现在可能是观看视频"Bottom-up" Design with Visual Studio Team System 2010 Architect的好时机。
您可能甚至想尝试使用测试版。它作为VM提供,因此对您的系统没有任何危险。此外,您可以使用架构工具而无需提交到平台,因为您只是尝试可视化代码,而不是开发更多代码。