如何从现有的Java代码生成UML图(特别是序列图)?
你的代码库是什么?Java还是c++ ?
eUML2 for Java是一个为Java开发人员设计的功能强大的UML建模器 在Eclipse中。免费版可用于商业用途。它 支持以下特性: CVS和团队支持 专为大型项目与多个和可定制的模型视图 赫利俄斯的 实时代码/模型同步 UML2.1兼容并支持OMG XMI JDK 1.4和1.5支持 商业版提供: 高级逆向工程 强大的真正依赖分析工具 UML概要和MDD 数据库工具 可定制的模板支持
商业版提供:
高级逆向工程
到目前为止,我用过的最好的逆向工程工具和往返java -> UML是宝蓝的在一起。它是基于Eclipse的(不仅仅是一个插件),而且工作得非常好。
我建议一般使用来自Omondo的EclipseUML,尽管几个月前我的web项目确实遇到了一些问题。他们曾经有过一个免费版本,但据说已经不再推广了。
如果你真的热衷于从源代码逆向工程序列图,我会推荐jTracert。
就Eclipse项目本身而言,Eclipse UML2工具项目可能支持逆向工程,尽管我从未见过它在实践中的使用。
MoDisco(模型发现)项目Eclipse GMT项目似乎更清楚地实现了您的目标。特定于技术的工具列表将是一个很好的开始。
您也可以尝试使用netbeans UML建模器。我用它来生成我在eclipse项目中使用的javcode。您甚至可以在netbeans中导入eclipse项目,并保持eclipse设置与netbeans项目设置同步。
我尝试了几个用于eclipse的UML建模器,但都不满意。它们要么不稳定,要么复杂,要么丑陋不堪。: -)
PlantUML怎么样? 这不是逆向工程!!
您可以使用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在代码中添加了模型标签,这真的非常非常糟糕,对我来说是一个绝对的失败。
是我用的。它很容易从存储库中installed:
Name: ObjectAid UML Explorer Location: http://www.objectaid.com/update/current
并生成相当不错的UML图:
ObjectAid UML资源管理器不同于其他UML工具。它使用 UML符号,以显示现有代码的图形表示 这与您的文本编辑器一样准确和最新,同时 非常容易使用。 您的源代码和库是显示的模型,它们不是反向工程成不同的格式。 如果您在Eclipse中更新代码,您的图也会更新;没有必要对源代码进行反向工程。 重构更新您的图表以及您的源代码。当您重命名字段或移动类时,您的图只是反映 Eclipse工作区中的所有关系图都会根据需要进行重构。如有必要,他们被签出您的 版本控制系统。 图表完全集成到Eclipse IDE中。您可以将Java类从任何其他视图拖到图上,并与图相关 如果适用,信息将显示在其他视图中
2013年10月11日更新
我最初的帖子是在2012年6月发布的,很多事情都发生了变化,许多工具已经发展起来,而其他工具没有。因为我要回去做一些建模,也得到一些回复,我决定再次安装papyrus,并将再次研究其他可能的UML建模解决方案。UML生成(带有同步特性)对软件设计人员来说并不重要,对普通开发人员来说却很重要。
我希望papyrus有直接的方法将类逆向工程到UML类图,如果逆向工程有同步功能,那将是超级酷的,但不幸的是,papyrus项目充满了功能,我认为开发人员已经有了很多,因为你在papyrus上做的许多操作可能不会给你任何响应,只是什么都没有发生,但这已经超出了这个问题的范围。
这个问题的答案(2013年10月11日)
工具
步骤
右键单击MyProject_kdm。再次从KDM代码中发现UML模型,您将得到一个属性对话框,将序列化道具设置为TRUE以生成一个名为MyProject.uml的文件
Move生成MyProject。如果你想要替换它,Eclipse会问你,点击是。我们在这里所做的是用一个生成的模型替换一个空模型。
ALT+W ->显示视图->纸莎草->模型资源管理器
在视图中右键单击根模型->新建图表 .
然后开始从视图中抓取类到图中
一些功能
要显示类元素(变量,函数等)右键单击任何类->过滤器->显示/隐藏内容瞧!!
您可以从窗口->首选项->纸莎草->类图中获得默认友好的颜色设置
一个非常重要的设置是Arrange当你删除类时,它们会在类图的任何空白位置上右键单击,然后单击全部安排
模型资源管理器视图中的箭头可以被抓取到图中以显示泛化、实现等
之后,您的设置将显示如下图表
据我所知,同步是不可用的,您需要手动导入任何新类。
就是这样,除非你真的需要,否则不要购买商业产品,莎草纸实际上是很好的和复杂的,可以捐赠或其他东西。
免责声明:我和纸莎草人没有关系,事实上,我一开始并不喜欢纸莎草,直到我做了大量的研究,并耐心地体验了它。当我尝试其他免费工具时,我会再次回到这篇文章。
我推荐PlantUML。这个工具非常有用,很容易使用。PlantUML有一个Netbeans插件,你可以用你的java代码创建UML图。
在netbeans中安装PlantUML插件的方法如下:
Netbeans菜单->工具->插件
现在选择可用插件,然后找到PlantUML并安装它。
更多信息请访问网站:www.plantuml.com
我开发了一个Maven插件,可以从CLI运行作为插件目标,或者作为依赖项导入并以编程方式使用解析器,@see Main#main()来获得如何运行的想法。
@see Main#main()
它递归呈现PlantUML所需包的src代码,你可以手动编辑如果需要(希望你不会)。然后,通过将代码粘贴到plantUML页面中,或者通过下载plant的jar,您可以将UML图呈现为png图像。
看看这里https://github.com/juanmf/Java2PlantUML
输出图示例: < / p >
欢迎任何捐助。它有一组自定义输出的过滤器,但我还没有在插件的CLI参数中公开这些过滤器。
值得注意的是,它并不局限于您的*.java文件,它也可以从maven依赖项中渲染UML图。这对于理解您所依赖的库非常方便。它实际上检查带有反射的已编译类,因此不需要源
成为第一个在GitHub上的明星:P
使用IntelliJ IDEA。要生成类图,选择package并按Ctrl + Alt + U:
默认情况下,它只显示类名,不显示所有依赖项。要更改它:右键单击->显示类别…和显示依赖项: < / p > 要生成依赖关系图(UML部署图),使用maven go View -> Tool Windows -> maven Projects,并按Ctrl + Alt + U: < / p > < p >结果: < / p >
此外,还可以生成更多其他图表。看到文档。
我是作者之一,所以答案可能有偏见。它是开源的(Apache 2.0),但是插件不是免费的。如果你克隆并在本地构建它,你就不需要付费。
去https://plugins.jetbrains.com/plugin/12437-zenuml-support看看吧
源代码:https://github.com/ZenUml/jetbrains-zenuml
我注意到Intellij的SequenceDiagram插件也是一个不错的选择。
GitUML的一个关键思想是解决“文档化”的一个问题:图总是过时的。使用GitUML,当您使用git推送代码时,图表会自动更新。
浏览社区UML图,有一些Java设计模式。浏览流行的GitHub存储库,并可视化其中的架构和模式。
使用指向和单击创建图表。没有拖放编辑器,只需点击你想要可视化的存储库树中的类:
.
底层技术是基于PlantUML的,这意味着您可以使用额外的PlantUML标记来改进您的图表。
有一个名为binarydoc的免费的工具,它可以从Java方法的bytecode(而不是源代码)生成UML Sequence Diagram或Control Flow Graph (CFG)。
bytecode
UML Sequence Diagram
Control Flow Graph
CFG
下面是为java方法java.net.AbstractPlainSocketImpl.getInputStream生成的示例图binarydoc:
java.net.AbstractPlainSocketImpl.getInputStream