如何从Java代码生成UML图(尤其是序列图)?
如何从现有Java代码生成UML图(尤其是序列图)?
14个解决方案
249 votes
ObjectAid UML Explorer
是我用过的。 它可以从存储库轻松安装:
Name: ObjectAid UML Explorer
Location: http://www.objectaid.com/update/current
并生成相当不错的UML图:
网站描述:
ObjectAid UML Explorer与其他UML工具不同。 它用 UML表示法显示现有代码的图形表示 这是和文本编辑器一样准确和最新的 非常容易使用。 几个独特的功能使这成为可能:
您的源代码和库是显示的模型,它们不会反向设计为不同的格式。
如果您在Eclipse中更新代码,您的图表也会更新; 没有必要对源代码进行反向工程。
重构更新您的图表和源代码。 重命名字段或移动类时,图表只是反映了 变化而不会失去同步。
Eclipse工作区中的所有图表都会根据需要使用重构更改进行更新。 如果有必要,他们会检查你的 版本控制系统。
图表完全集成到Eclipse IDE中。 您可以将Java类从任何其他视图拖到图表上,并与图表相关 在适用的情况下,信息显示在其他视图中。
Thomas Ahle answered 2019-01-09T10:31:06Z
63 votes
编辑:如果你是一名设计师,那么Papyrus是你最好的选择它非常先进且功能齐全,但是如果你只是想要勾勒出一些UML图并且易于安装,那么ObjectAid非常酷,它不需要我刚安装的任何插件 它通过Eclipse-Java EE而且效果很好!
更新2013年10月11日
我的原始帖子是在2012年6月,很多东西已经改变了许多工具已经增长而其他工具没有。 由于我要回去做一些建模并得到一些回复,我决定再次安装纸莎草纸,并将再次研究其他可能的UML建模解决方案。 UML生成(具有同步功能)对于软件设计者而言对于普通开发人员来说非常重要。
我希望papyrus能够直接将逆向工程类转换为UML类图,如果逆向工程具有同步功能,那将是非常酷的,但不幸的是,papyrus项目充满了功能,我认为那里的开发人员已经有了很多东西。 你对纸莎草所采取的行动可能不会给你任何回应而且没有任何反应,但不管怎样,这都超出了这个问题的范围。
答案(2013年10月11日)
工具
下载纸莎草纸
转到帮助 - > 安装新软件......
在“使用:”下拉列表中,选择 - 所有可用站点 -
在过滤器中,键入纸莎草纸
安装完成后重启Eclipse
重复步骤1-3,这次安装Modisco
脚步
在你的java项目中(假设它被称为MyProject)创建一个文件夹,例如UML
右键单击项目名称 - > 发现 - > Discoverer - > 从java项目中发现Java和库存模型,将生成一个名为MyProject_kdm.xmi的文件。
右键单击项目名称文件 - > 新的 - > 纸莎草模型 - > 并称之为MyProject。
将三个生成的文件MyProject.di,MyProject.notation,MyProject.uml移动到UML文件夹
右键单击MyProject_kdm.xmi - > 发现 - > Discoverer - > 再次从KDM代码中发现UML模型,您将获得一个属性对话框,将序列化道具设置为TRUE以生成名为MyProject.uml的文件
将生成的生成的MyProject.uml移动到UML文件夹,Eclipse将询问您如果要替换它,请单击是。 我们在这里所做的是我们用生成的模型替换了一个空模型。
ALT + W - > 显示视图 - > 纸莎草纸 - > 模特探险家
在该视图中,您将在图片中找到您的课程
在视图中右键单击根模型 - > 新图
然后从视图开始抓取图表中的类
一些功能
显示类元素(变量,函数等)右键单击任何类 - > 过滤器 - > 显示/隐藏内容Voila !!
您可以使用Window中的默认友好颜色设置 - > pereferences - > 纸莎草纸 - > 类图
一个非常重要的设置是当您放下类时,安排右键单击类图中的任何空白区域,然后单击“全部排列”
可以将模型资源管理器视图中的箭头抓取到图表中以显示概括,实现等
完成所有这些后,您的设置将显示如下图表
据我所知,您需要手动导入任何新类,因此无法进行同步。
这就是全部,除非你真的需要,否则不要购买商品,纸莎草实际上是伟大而复杂的,而不是捐赠或其他东西。
免责声明:我与纸莎草纸人没有任何关系,事实上,我一开始并不喜欢纸莎草纸,直到我做了很多研究并且耐心地体验了它。 当我尝试其他免费工具时,我会再次回到这篇文章。
Ismail Marmoush answered 2019-01-09T10:35:07Z
42 votes
你的代码库是什么? Java还是C ++?
替代文字[http://www.soyatec.com/euml2/images/product_euml2_110x80.png]
eUML2 for Java是一个功能强大的UML建模器,专为Eclipse中的Java开发人员而设计。 免费版可用于商业用途。 它支持以下功能:
CVS和团队支持
专为具有多个可定制模型视图的大型项目而设计
Helios兼容
实时代码/模型同步
符合UML2.1并支持OMG XMI
JDK 1.4和1.5支持
商业版提供:
先进的逆向工程
强大的真正依赖性分析工具
UML配置文件和MDD
数据库工具
可定制的模板支持
prakash answered 2019-01-09T10:37:37Z
8 votes
PlantUML怎么样?它不适合逆向工程! 在编码之前,它是用于工程的。
Zamel answered 2019-01-09T10:38:00Z
5 votes
我开发了一个maven插件,既可以从CLI作为插件目标运行,也可以作为依赖项导入,并以编程方式使用解析器@see Main#main()来了解如何使用。
它递归地呈现所需包的PlantUML src代码,您可以根据需要手动编辑(希望您不会)。 然后,通过粘贴plantUML页面中的代码,或者通过下载工厂的jar,您可以将UML图表渲染为png图像。
在这里查看[https://github.com/juanmf/Java2PlantUML]
示例输出图:
任何贡献都非常受欢迎。 它有一组自定义输出的过滤器,但我还没有在插件CLI参数中公开这些过滤器。
重要的是要注意它不仅限于你的* .java文件,它也可以从maven依赖项中呈现UML图表src。 这对于理解您所依赖的库非常方便。 它实际上用反射检查编译的类,因此不需要源
成为第一个在GitHub上演的明星:P
juanmf answered 2019-01-09T10:39:06Z
4 votes
我建议使用Omondo的EclipseUML作为一般用法,虽然几个月前我确实遇到过一些问题,我的网络项目。 他们在某个时间点有一个免费版本,但据说不再推广。
如果您真的热衷于源代码中的逆向工程序列图,我建议使用jTracert。
就Eclipse项目本身而言,Eclipse UML2 Tools项目可能支持逆向工程,尽管我从未在实践中看到它的使用。
MoDisco(模型发现)项目Eclipse GMT项目似乎更清晰地实现了您的目标。 技术专用工具列表将是一个很好的起点。
Vineet Reynolds answered 2019-01-09T10:39:52Z
3 votes
我发现Green插件使用起来非常简单,并且可以从源代码生成类图。试试看 :)。只需将插件复制到插件目录即可。
pcmind answered 2019-01-09T10:40:15Z
3 votes
您也可以尝试使用netbeans UML建模器。 我用它来生成我在eclipse项目中使用的javacode。 您甚至可以在netbeans中导入eclipse项目,并使eclipse设置与netbeans项目设置保持同步。
我为eclipse尝试了几个UML建模器,但对它们并不满意。 他们要么不稳定,要么复杂,要么只是丑陋。;-)
Patrick Cornelissen answered 2019-01-09T10:40:44Z
2 votes
使用IntelliJ IDEA。 要生成类图选择包并按Ctrl + Alt + U:
默认情况下,它仅显示类名,而不显示所有依赖项。 要更改它:右键单击 - > 显示类别...和显示依赖项:
要生成依赖关系图(UML部署图)并使用maven查看 - > 工具Windows - > Maven项目并按Ctrl + Alt + U:
结果:
此外,还可以生成更多其他图表。 见文档。
Igor Rybak answered 2019-01-09T10:41:35Z
2 votes
您可以使用EclipseUML for Eclipse 3.5的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]
Live flash演示:[http://www.ejb3.org/reverse.swf]
EclipseUML Omondo是世界上最好的Java工具。 在这个实时的java同步市场中,只有eUML似乎与它竞争,但是eUML在代码中添加了模型标签,这真的非常非常糟糕,而且对我来说绝对不行。
UML GURU answered 2019-01-09T10:42:18Z
1 votes
以前曾经问过一些非常相似的东西。
到目前为止,我用于逆向工程和圆形跳闸的最佳工具java - > UML是Borland的Together。 它基于Eclipse(不仅仅是一个插件),而且效果很好。
serg10 answered 2019-01-09T10:42:48Z
1 votes
[http://www.zenuml.com]不直接从Java代码生成UML图,但其DSL类似于Java。 顺便说一句,我创建了zenuml :)
Xiao Peng - ZenUML.com answered 2019-01-09T10:43:11Z
0 votes
我建议PlantUML。 这个工具非常有用且易于使用。 PlantUML有一个Netbeans插件,你可以从你的java代码创建UML图。
你可以通过这种方法在netbeans中安装PlantUML插件:
Netbeans菜单 - > 工具 - > 插入
现在选择Available Plugins,然后找到PlantUML并安装它。
欲了解更多信息,请访问网站:www.plantuml.com
Masood answered 2019-01-09T10:44:04Z
0 votes
[http://uml-plugins.blogspot.com/]这是我们可以找到UML建模工具之间差异的地方,以便快速入门!除了那些,我注意到Intellij的SequenceDiagram插件也是一个不错的选择,请阅读该帖子以快速了解免费与商业和娱乐; 最好的选择。
srinivas y answered 2019-01-09T10:44:27Z