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


当前回答

PlantUML怎么样? 这不是逆向工程!!这是在编码之前的工程设计。

其他回答

编辑: 如果你是一个设计师,那么Papyrus是你最好的选择,它非常先进,功能齐全,但如果你只是想绘制一些UML图和易于安装,那么ObjectAid是非常酷的,它不需要任何插件,我只是在Eclipse-Java EE上安装了它,工作得很好!


2013年10月11日更新

我最初的帖子是在2012年6月发布的,很多事情都发生了变化,许多工具已经发展起来,而其他工具没有。因为我要回去做一些建模,也得到一些回复,我决定再次安装papyrus,并将再次研究其他可能的UML建模解决方案。UML生成(带有同步特性)对软件设计人员来说并不重要,对普通开发人员来说却很重要。

我希望papyrus有直接的方法将类逆向工程到UML类图,如果逆向工程有同步功能,那将是超级酷的,但不幸的是,papyrus项目充满了功能,我认为开发人员已经有了很多,因为你在papyrus上做的许多操作可能不会给你任何响应,只是什么都没有发生,但这已经超出了这个问题的范围。

答案(2013年10月11日)

工具

下载纸莎草 去帮助->安装新软件… 在Work with:下拉菜单中,选择—All Available Sites— 在过滤器中,输入Papyrus 安装完成后重新启动Eclipse 重复步骤1-3,这一次,安装Modisco

步骤

In your java project (assume it's called MyProject) create a folder e.g UML Right click over the project name -> Discovery -> Discoverer -> Discover Java and inventory model from java project, a file called MyProject_kdm.xmi will be generated. Right click project name file --> new --> papyrus model -> and call it MyProject. Move the three generated files MyProject.di , MyProject.notation, MyProject.uml to the UML folder Right click on MyProject_kdm.xmi -> Discovery -> Discoverer -> Discover UML model from KDM code again you'll get a property dialog set the serialization prop to TRUE to generate a file named MyProject.uml Move generated MyProject.uml which was generated at root, to UML folder, Eclipse will ask you If you wanted to replace it click yes. What we did in here was that we replaced an empty model with a generated one. ALT+W -> show view -> papyrus -> model explorer In that view, you'll find your classes like in the picture In the view Right click root model -> New diagram Then start grabbing classes to the diagram from the view

一些功能

To show the class elements (variables, functions etc) Right click on any class -> Filters -> show/hide contents Voila !! You can have default friendly color settings from Window -> pereferences -> papyrus -> class diagram one very important setting is Arrange when you drop the classes they get a cramped right click on any empty space at a class diagram and click Arrange All Arrows in the model explorer view can be grabbed to the diagram to show generalization, realization etc After all of that your settings will show diagrams like Synchronization isn't available as far as I know you'll need to manually import any new classes.

就是这样,除非你真的需要,否则不要购买商业产品,莎草纸实际上是很好的和复杂的,可以捐赠或其他东西。

免责声明:我和纸莎草人没有关系,事实上,我一开始并不喜欢纸莎草,直到我做了大量的研究,并耐心地体验了它。当我尝试其他免费工具时,我会再次回到这篇文章。

我开发了一个maven插件,它既可以作为插件目标从CLI运行,也可以作为依赖项导入,并以编程方式使用解析器,@see Main# Main()来了解如何运行。

它递归地呈现所需包的PlantUML src代码,如果需要,您可以手动编辑(希望您不会)。然后,通过将代码粘贴到plantUML页面中,或者通过下载plant的jar,您可以将UML图呈现为png图像。

点击https://github.com/juanmf/Java2PlantUML查看

示例输出图:

欢迎任何捐助。它有一组自定义输出的过滤器,但我还没有在插件的CLI参数中公开这些过滤器。

值得注意的是,它并不局限于您的*.java文件,它也可以从maven依赖项中渲染UML图。这对于理解您所依赖的库非常方便。它实际上检查带有反射的已编译类,因此不需要源

成为第一个在GitHub上的明星:P

我是作者之一,所以答案可能有偏见。它是开源的(Apache 2.0),但是插件不是免费的。如果你克隆并在本地构建它,你就不需要付费。

在Intellij IDEA上,ZenUML可以从Java代码生成序列图。

请登录https://plugins.jetbrains.com/plugin/12437-zenuml-support查看

源代码:https://github.com/ZenUml/jetbrains-zenuml

使用IntelliJ IDEA。要生成类图,选择package并按Ctrl + Alt + U:

默认情况下,它只显示类名,而不显示所有依赖项。要更改它:右键单击->显示类别…和显示依赖项:

要生成依赖关系图(UML部署图),使用maven go View -> Tool Windows -> maven Projects,并按Ctrl + Alt + U:

结果:

此外,还可以生成更多其他图表。见文档。

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

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

Netbeans菜单->工具->插件

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

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