如何从Java代码生成UML图(特别是序列图)
我如何从现有的Java代码生成UML图(特别是序列图)?
ObjectAid UML资源管理器
是我用过的 它可以从存储库轻松安装 :
Name: ObjectAid UML Explorer Location: http://www.objectaid.com/update/current
并生成相当不错的UML图:
网站描述:
ObjectAid UML Explorer与其他UML工具不同。 它使用UML符号来显示现有代码的图形表示,它与您的文本编辑器一样精确和最新,同时非常易于使用。 几个独特的功能使这成为可能:
- 您的源代码和库是显示的模型,它们不会被反向设计为不同的格式。
- 如果你在Eclipse中更新你的代码,你的图表也会更新; 没有必要对源代码进行逆向工程。
- 重构更新您的图表以及您的源代码。 当您重命名字段或移动课程时,您的图表只是简单地反映更改而不会失去同步。
- 您的Eclipse工作区中的所有图表都会根据适当的重构更改进行更新。 如有必要,他们会从您的版本控制系统中检出。
- 图完全集成到Eclipse IDE中。 您可以将Java类从任何其他视图拖动到该图上,并在适用的情况下在其他视图中显示与图相关的信息。
编辑:如果你是一个设计师,然后纸莎草纸是你最好的选择它是非常先进的功能,但如果你只是想勾画出一些uml图和简单的安装,那么ObjectAid是相当酷,它不需要任何插件只是将它安装在Eclipse-Java EE上,并且效果很好!
更新2013年10月11日
我原来的帖子是在2012年6月,很多东西已经改变,许多工具已经增长,其他的没有。 由于我回去做一些建模,也得到了一些答复,我决定再次安装纸莎草纸,并将再次调查其他可能的uml建模解决方案。 Uml代(具有同步功能)对于软件设计师而言并不重要,但对于普通的开发人员来说非常重要。
我希望纸莎草纸可以直接将逆向工程类转换成UML类图,如果逆向工程具有同步功能,这将是非常酷的,但不幸的是,纸莎草纸项目充满了特性,我认为开发人员已经有了很多,你对纸莎草纸做的行动可能不会给你任何回应,只是没有任何反应,但是这已经超出了这个问题的范围。
答案 (2013年10月11日)
工具
- 下载纸莎草纸
- 转到帮助 – >安装新软件…
- 在“ 使用:”下拉菜单中,选择“ 所有可用站点”
- 在过滤器中,输入纸莎草纸
- 安装完成后,重新启动Eclipse
- 重复步骤1-3,这次安装Modisco
脚步
- 在你的Java项目(假设它叫做MyProject)创建一个文件夹,例如UML
- 右键单击项目名称 – >发现 – >发现者 – >从Java项目发现Java和库存模型,将生成一个名为MyProject_kdm.xmi的文件。
- 右键单击项目名称文件 – >新建 – >纸莎草纸模型 – >并将其命名为MyProject。
- 将三个生成的文件MyProject.di,MyProject.notation,MyProject.uml移动到UML文件夹
-
右键单击MyProject_kdm.xmi – >发现 – >发现者 – >从KDM代码发现UML模型再次你会得到一个属性对话框设置序列化道具为TRUE生成一个名为MyProject.uml的文件
-
将生成的根目录生成的MyProject.uml移到UML文件夹,Eclipse会问你如果你想替换它,点击是。 我们在这里做的是我们用一个生成的模型替换了一个空模型。
-
ALT + W – >显示视图 – >纸莎草纸 – >模型浏览器
-
在这个视图中,你会发现你的类像图片
-
在视图中右键单击根模型 – >新建图
-
然后开始从视图中抓取类到图中
一些功能
-
显示类的元素(变量,函数等)右键单击任何类 – > Filters – >显示/隐藏内容Voila!
-
您可以从Window – > pereferences – > papyrus – >类图中使用默认的友好颜色设置
-
一个非常重要的设置是安排,当你放下他们得到拥挤的班级,右键单击班级图上的任何空白处,然后点击排列全部
-
模型资源管理器视图中的箭头可以被抓到图上以显示泛化,实现等
-
毕竟你的设置会显示图表
-
由于同步不可用据我所知,您将需要手动导入任何新的类。
就是这样,除非你真的需要它,否则不要购买商业产品,纸莎草纸实际上是伟大而复杂的,而不是捐赠什么的。
免责声明:我跟纸莎草纸没有任何关系,事实上我起初不喜欢纸莎草,直到我做了大量的研究,并且经历了一些耐心。 当我尝试其他免费工具时,会再次回到这个帖子。
你的代码库是什么? Java还是C ++?
替代文字http://www.soyatec.com/euml2http://img.dovov.comproduct_euml2_110x80.png
eUML2 for Java是为Eclipse中的Java开发人员设计的功能强大的UML建模器。 免费版可以用于商业用途。 它支持以下功能:
- CVS和团队支持
- 专为具有多个可定制模型视图的大型项目而设计
- 符合Helios
- 实时代码/模型同步
- 符合UML2.1并支持OMG XMI
- JDK 1.4和1.5支持
商业版提供:
先进的逆向工程
- 强大的真正的依赖分析工具
- UML配置文件和MDD
- 数据库工具
- 可定制的模板支持
PlantUML如何? 这不是反向工程! 在编码之前是用于工程的。
我建议从Omondo的EclipseUML一般用法,虽然我几个月前用我的web项目遇到了一些问题。 他们有一个时间点的免费版本,但是据说不再提升。
如果你真的热衷于从源代码反向工程序列图,我会推荐jTracert 。
就Eclipse项目本身而言, Eclipse UML2 Tools项目可能支持逆向工程,尽管我从来没有在实践中看到它的使用。
MoDisco (模型发现)项目Eclipse GMT项目似乎更清晰地实现您的目标。 技术特定的工具列表将是一个很好的开始。
你也可以试试netbeans UML建模器。 我用它来生成我在eclipse项目中使用的javacode。 你甚至可以在netbeans中导入eclipse项目,并保持eclipse设置与netbeans项目设置同步。
我尝试了几个用于eclipse的UML建模器,并不满意它们。 他们要么不稳定,复杂,要么就是丑陋。 😉
我发现绿色插件使用非常简单,并从源代码生成类图。 试一试 :)。 只需将插件复制到您的插件目录。
我开发了一个maven插件,既可以作为插件目标从CLI运行,也可以作为依赖项导入,并以编程方式使用解析器@see Main#main()
获取有关如何实现的想法。
它递归地呈现所需包的PlantUML src代码,如果需要可以手动编辑(希望不会)。 然后,通过在plantUML页面上粘贴代码,或者通过下载植物的jar,可以将UML图表渲染为png图像。
看看这里https://github.com/juanmf/Java2PlantUML
示例输出图:
任何贡献都是值得欢迎的。 它有一组自定义输出的过滤器,但是我没有在插件的CLI参数中公开这些过滤器。
需要注意的是,它不仅限于你的* .java文件,它也可以从你的maven依赖项中呈现UML图src。 这对了解你所依赖的库非常方便。 它实际上检查编译类与反射,所以没有源需要
成为第一个在github上出演的人:P
您可以使用EclipseUML的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
现场Flash演示: http : //www.ejb3.org/reverse.swf
EclipseUML Omondo是Java世界中最好的工具。 只有eUML似乎与他在这个活的Java同步市场上竞争,但eUML在代码中添加模型标签,这实际上是非常非常糟糕的,对于我来说是绝对不行的。
之前曾经有人问过类似的东西。
到目前为止,我已经用于逆向工程的最好的工具了,而Java的Round→UML就是Borland的Together 。 它基于Eclipse(而不仅仅是一个插件),真的很好。
使用IntelliJ IDEA。 要生成类图选择包并按下Ctrl + Alt + U :
默认情况下,它只显示类名,而不是所有的依赖项。 要改变它:右键单击 – >显示类别…和显示依赖关系:
为了生成依赖关系图(UML部署图),你使用Maven去查看 – >工具窗口 – > Maven项目并按下Ctrl + Alt + U :
结果:
也可以生成更多的其他图表。 见文件 。
我建议PlantUML。 这个工具非常有用且易于使用。 PlantUML有一个Netbeans插件,您可以从您的Java代码创建UML图。
你可以通过这个方法在netbeans中安装PlantUML插件:
Netbeans菜单 – >工具 – >插件
现在选择Available Plugins,然后找到PlantUML并安装它。
欲了解更多信息,请访问网站:www.plantuml.com
http://www.zenuml.com不直接从Java代码生成UML图,但其DSL是类Java的。; 顺便说一句,我创建zenuml 🙂