如何从现有的Java代码生成UML图(特别是序列图)?


当前回答

我推荐PlantUML。这个工具非常有用,很容易使用。PlantUML有一个Netbeans插件,你可以用你的java代码创建UML图。

在netbeans中安装PlantUML插件的方法如下:

Netbeans菜单->工具->插件

现在选择可用插件,然后找到PlantUML并安装它。

更多信息请访问网站:www.plantuml.com

其他回答

我会推荐Omondo的EclipseUML作为一般使用,尽管几个月前我的web项目确实遇到了一些问题。他们曾经有过一个免费版本,但据说已经不再推广了。

如果你真的热衷于从源代码逆向工程序列图,我推荐jTracert。

就Eclipse项目本身而言,Eclipse UML2 Tools项目可能支持逆向工程,尽管我从未见过它在实践中的使用。

MoDisco(模型发现)项目Eclipse GMT项目似乎更清楚地实现了您的目标。特定于技术的工具列表将是一个很好的开始。

到目前为止,我用过的最好的逆向工程工具和往返java -> UML是Borland's Together。它是基于Eclipse的(不仅仅是一个插件),而且工作得非常好。

ObjectAid UML Explorer

是我用的。它很容易从存储库安装:

Name:     ObjectAid UML Explorer
Location: http://www.objectaid.com/update/current

并生成相当不错的UML图:

网站描述:

The ObjectAid UML Explorer is different from other UML tools. It uses the UML notation to show a graphical representation of existing code that is as accurate and up-to-date as your text editor, while being very easy to use. Several unique features make this possible: Your source code and libraries are the model that is displayed, they are not reverse engineered into a different format. If you update your code in Eclipse, your diagram is updated as well; there is no need to reverse engineer source code. Refactoring updates your diagram as well as your source code. When you rename a field or move a class, your diagram simply reflects the changes without going out of sync. All diagrams in your Eclipse workspace are updated with refactoring changes as appropriate. If necessary, they are checked out of your version control system. Diagrams are fully integrated into the Eclipse IDE. You can drag Java classes from any other view onto the diagram, and diagram-related information is shown in other views wherever applicable.

有一个名为binarydoc的免费工具,它可以从Java方法的字节码(而不是源代码)生成UML序列图或控制流图(CFG)。

下面是为java方法java.net.AbstractPlainSocketImpl.getInputStream生成的示例图binarydoc:

方法控制流图:

方法的UML序列图:

您可以使用Eclipse 3.5的EclipseUML的30天评估版本:http://www.uml2.org/eclipse-java-galileo-SR2-win32_eclipseUML2.2_package_may2010.zip 这不是最新的3.6版本,但是非常好,并且不需要您购买它来进行测试和逆向工程。

反向工程:http://www.forum-omondo.com/documentation_eclipseuml_2008/reverse/reverse/reverse_engineering_example.html

现场flash演示:http://www.ejb3.org/reverse.swf

EclipseUML Omondo是世界上最好的Java工具。在这个实时java同步市场上,似乎只有eUML可以与之竞争,但是eUML在代码中添加了模型标签,这真的非常非常糟糕,对我来说是一个绝对的失败。