是否有任何工具可以检测代码中的架构和设计模式?

时间:2011-05-24 14:59:52

标签: java eclipse design-patterns architecture

我们的团队正在使用几乎不存在的文档对应用程序进行逆向工程。我们想要检测是否使用了架构或设计模式。您可能会理解这个应用程序很大,因此手动查看对我们来说没有意义。

这个应用程序是用Java编写的,我们使用Eclipse for IDE,因此它可能是Eclipse的插件。

我们已经找到了一些工具,比如“设计模式检测相似性评分”,但效果并不好。

那么,这样的工具确实存在吗?

4 个答案:

答案 0 :(得分:4)

如果你有应用程序的源代码,你很可能重新设计它,而不是逆向工程。 (后者意味着从机器或字节码中恢复某种更高级别的代码)。

无论如何,你想了解应用程序,即在你的脑海中构建它的心智模型。我担心自动工具对此没什么帮助。在代码中获取假定模式的列表有什么用?它会帮助您更好地理解代码实际上做什么 为什么?特别是考虑到遗留代码中滥用模式的可能性很高: - (

最后,你需要开始阅读代码。但这里有another similar thread,这有望帮助完成接管遗留应用程序的艰巨任务。

答案 1 :(得分:1)

我不相信这种工具存在,因为那会非常复杂。另一种方法可能是生成类似UML图的东西。这应该给出代码的抽象,这可以帮助您识别设计模式。

答案 2 :(得分:0)

我怀疑是否有用于检测代码中的模式或设计的工具

Code Bubbles可以大大帮助逆向工程,当它最终出来时!

最近,我发现使用代码覆盖工具来识别在启动特定用户/系统操作时调用代码的哪些部分非常有用。这不是工具的设计目标,而是越来越多地发现它比其他方法更有效。 (如果需要,可以在此处发布详细链接)

下一个最好的方法是使用诸如MaintainJ之类的工具来跟踪代码执行。这篇link文件接近(当作者谈论方面时)和各种其他方法,并且已经尝试了所有这些,我已经解决了这个问题。

答案 3 :(得分:-1)

您是否尝试在代码库上运行javadoc?这会让你知道代码的结构(或缺少它)。如果你真的很幸运,评论中可能会提到设计模式。

还有很多其他工具可用于发现类层次结构 - ClassCycle,Macker,JDepend等。

我认为自动检测设计模式非常困难,因为设计模式有很大的变化范围。