如何从现有的Java代码生成UML图(尤其是序列图)?
如何从现有的Java代码生成UML图(尤其是序列图)?
Answers:
是我用的。它很容易从存储库安装:
Name: ObjectAid UML Explorer
Location: http://www.objectaid.com/update/current
并生成相当不错的UML图:
ObjectAid UML Explorer与其他UML工具不同。它使用UML表示法来显示现有代码的图形表示形式,该表示形式与文本编辑器一样准确和最新,同时非常易于使用。几个独特的功能使之成为可能:
- 您的源代码和库是所显示的模型,它们没有经过反向工程设计成其他格式。
- 如果您在Eclipse中更新代码,则图也将更新。无需反向工程源代码。
- 重构会更新您的图表以及源代码。重命名字段或移动类时,图仅反映更改而不会不同步。
- Eclipse工作区中的所有图都将根据需要进行重构更改,以进行更新。如有必要,它们将从您的版本控制系统中签出。
- 图已完全集成到Eclipse IDE中。您可以将Java类从任何其他视图拖到图上,并且与图相关的信息在适用的其他视图中显示。
An error occurred while installing the items session context was:(profile=epp.package.java, phase=org.eclipse.equinox.internal.p2.engine.phases.Install, operand=null --> [R]com.objectaid.uml 1.1.3, action=). Failed to prepare partial IU: [R]com.objectaid.uml 1.1.3.
编辑:如果您是设计师,那么Papyrus是您的最佳选择,它非常先进并且具有很多功能,但是,如果您只是想勾勒出一些UML图并且易于安装,那么ObjectAid 非常酷,并且不需要任何插件刚刚通过Eclipse-Java EE安装了它,效果很好!
更新2013年10月11日
我最初的帖子是在2012年6月,很多事情已经改变,许多工具已经增长,而其他却没有。由于我将回过头来进行一些建模并获得一些回复,因此我决定再次安装纸莎草纸,并将再次研究其他可能的UML建模解决方案。UML生成(具有同步功能)对于软件设计师而言并不重要,对普通开发人员而言确实很重要。
我希望纸莎草纸具有将逆向工程类转换为UML类图的简单方法,并且如果该反向工程具有同步功能,那将非常酷,但是不幸的是,纸莎草纸项目具有许多功能,并且我认为那里的开发人员已经手头很多您对纸莎草纸进行的操作可能不会给您任何回应,并且什么也不会发生,但这仍然超出了此问题的范围。
答案(2013年10月11日)
工具类
脚步
再次右键单击MyProject_kdm.xmi->发现-> Discoverer->再次从KDM代码发现UML模型,您将看到一个属性对话框,将序列化道具设置为TRUE,以生成名为MyProject.uml的文件
将在根目录下生成的MyProject.uml移到UML文件夹中,Eclipse将询问您是否要替换它,单击yes。我们在这里所做的是用生成的模型替换了一个空模型。
ALT + W->显示视图->纸莎草纸->模型资源管理器
在该视图中,您将找到图片中的类
在视图中右键单击根模型->新图
然后开始从视图中获取类到图中
一些功能
显示类元素(变量,函数等)右键单击任何类->过滤器->显示/隐藏内容瞧!
您可以从Window-> pereferences-> papyrus-> class diagram中获得默认的友好颜色设置
一个非常重要的设置是“ 安排”,当您放下课程时,他们会在狭窄的位置单击鼠标右键,然后单击“全部安排”
可以将模型资源管理器视图中的箭头抓到图中以显示概括,实现等
毕竟,您的设置将显示如下图
据我所知,同步不可用,您需要手动导入任何新类。
仅此而已,并且除非您真正需要它,否则不要购买商业产品,纸莎草纸实际上很棒,而且精巧而不是捐赠或其他东西。
免责声明:我与纸莎草纸的人没有关系,实际上,我一开始不喜欢纸莎草纸,直到我进行了大量研究并耐心地进行了研究。当我尝试其他免费工具时,将再次回到这篇文章。
您的代码库是什么?Java还是C ++?
eUML2 for Java是为Eclipse中的Java开发人员设计的功能强大的UML建模器。免费版可用于商业用途。它支持以下功能:
- CVS和团队支持
- 专为具有多个可自定义模型视图的大型项目而设计
- 符合Helios
- 实时代码/模型同步
- 符合UML2.1并支持OMG XMI
- JDK 1.4和1.5支持
商业版提供:
先进的逆向工程
- 强大的真实依赖分析工具
- UML配置文件和MDD
- 数据库工具
- 可定制的模板支持
我是作者之一,因此答案可能有偏见。它是开源的(Apache 2.0),但该插件不是免费的。如果您在本地克隆和构建它,则不必(显然)需要付费。
在Intellij IDEA上,ZenUML可以从Java代码生成序列图。
在https://plugins.jetbrains.com/plugin/12437-zenuml-support上进行检查
如何PlantUML?它不是用于逆向工程!!!在编写代码之前是为工程设计的。
我开发了一个maven插件,既可以从CLI运行作为插件目标,也可以作为依赖项导入,并以编程方式使用解析器,@see Main#main()
以获取有关如何实现的想法。
它递归地呈现所需软件包的PlantUML src代码,您可以根据需要手动进行编辑(希望您不会)。然后,通过将代码粘贴到plantUML页面中,或通过下载plant的jar,可以将UML图呈现为png图像。
在这里查看https://github.com/juanmf/Java2PlantUML
任何贡献都值得欢迎。它具有一组可自定义输出的过滤器,但我尚未在插件CLI参数中公开这些过滤器。
重要的是要注意,它不仅限于* .java文件,它还可以从您的maven依赖项中呈现UML图src。这对于理解您所依赖的库非常方便。它实际上通过反射检查编译的类,因此不需要任何源
成为第一个在GitHub上加星标的人:P
我会推荐Omondo的EclipseUML作为一般用法,尽管几个月前我的Web项目确实遇到了一些问题。他们在某个时间点有一个免费版本,但是据说不再推广了。
如果您真的热衷于从源代码进行逆向工程序列图,我建议您使用jTracert。
就Eclipse项目本身而言,Eclipse UML2 Tools项目可能支持逆向工程,尽管我从未在实践中见过它的用途。
该MoDisco(模型发现)项目的Eclipse项目GMT似乎是在实现自己的目标更清晰。该技术的具体工具清单将是开始的好地方。
您也可以尝试netbeans UML建模器。我用它来生成我在Eclipse项目中使用的javacode。您甚至可以将eclipse项目导入netbeans中,并使eclipse设置与netbeans项目设置同步。
我尝试了几种UML建模器来进行日食,对它们不满意。它们要么不稳定,要么复杂,要么只是丑陋。;-)
使用IntelliJ IDEA。要生成类图,请选择包并按Ctrl+ Alt+ U:
默认情况下,它仅显示类名,而不显示所有依赖项。要更改它:右键单击->显示类别...,然后显示依赖项:
要使用依赖关系图(UML部署图)并使用maven,请转到视图->工具窗口-> Maven项目,然后按Ctrl+ Alt+ U:
也有可能生成更多其他图表。请参阅文档。
您可以使用EclipseUM的EclipseUM 30天评估版(适用于Eclipse 3.5):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在代码中添加了模型标签,这确实非常非常糟糕,对我来说绝对是个难题。
到目前为止,我使用过的最好的逆向工程工具是java- > UML 双向传递,它是Borland的Together。它基于Eclipse(不仅是单个插件),而且效果很好。
我注意到Intellij的SequenceDiagram插件也是一个不错的选择。
有一个名为binarydoc的免费工具,可以从Java方法的(而不是源代码)生成或()。UML Sequence Diagram
Control Flow Graph
CFG
bytecode
这是为Java方法java.net.AbstractPlainSocketImpl.getInputStream生成的示例图binarydoc:
java.net.AbstractPlainSocketImpl.getInputStream
:java.net.AbstractPlainSocketImpl.getInputStream
: