如何从现有的Java代码生成UML图(特别是序列图)?
当前回答
到目前为止,我用过的最好的逆向工程工具和往返java -> UML是Borland's Together。它是基于Eclipse的(不仅仅是一个插件),而且工作得非常好。
其他回答
你的代码库是什么?Java还是c++ ?
eUML2 for Java is a powerful UML modeler designed for Java developper in Eclipse. The free edition can be used for commercial use. It supports the following features: CVS and Team Support Designed for large project with multiple and customizable model views Helios Compliant Real-time code/model synchronization UML2.1 compliant and support of OMG XMI JDK 1.4 and 1.5 support The commercial edition provides: Advanced reversed engineering Powerful true dependency analyze tools UML Profile and MDD Database tools Customizable template support
到目前为止,我用过的最好的逆向工程工具和往返java -> UML是Borland's Together。它是基于Eclipse的(不仅仅是一个插件),而且工作得非常好。
我是作者之一,所以答案可能有偏见。它是开源的(Apache 2.0),但是插件不是免费的。如果你克隆并在本地构建它,你就不需要付费。
在Intellij IDEA上,ZenUML可以从Java代码生成序列图。
请登录https://plugins.jetbrains.com/plugin/12437-zenuml-support查看
源代码:https://github.com/ZenUml/jetbrains-zenuml
我会推荐Omondo的EclipseUML作为一般使用,尽管几个月前我的web项目确实遇到了一些问题。他们曾经有过一个免费版本,但据说已经不再推广了。
如果你真的热衷于从源代码逆向工程序列图,我推荐jTracert。
就Eclipse项目本身而言,Eclipse UML2 Tools项目可能支持逆向工程,尽管我从未见过它在实践中的使用。
MoDisco(模型发现)项目Eclipse GMT项目似乎更清楚地实现了您的目标。特定于技术的工具列表将是一个很好的开始。
编辑: 如果你是一个设计师,那么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.
就是这样,除非你真的需要,否则不要购买商业产品,莎草纸实际上是很好的和复杂的,可以捐赠或其他东西。
免责声明:我和纸莎草人没有关系,事实上,我一开始并不喜欢纸莎草,直到我做了大量的研究,并耐心地体验了它。当我尝试其他免费工具时,我会再次回到这篇文章。
推荐文章
- 指定的子节点已经有一个父节点。你必须先在子对象的父对象上调用removeView() (Android)
- 对于一个布尔字段,它的getter/setter的命名约定是什么?
- 如何获得当前屏幕方向?
- 如何在Android中渲染PDF文件
- 如何计算一个元素在列表中出现的次数
- c++中类似于java的instanceof
- 我如何解决错误“minCompileSdk(31)指定在一个依赖的AAR元数据”在本机Java或Kotlin?
- 如何POST表单数据与Spring RestTemplate?
- Mockito中检测到未完成的存根
- 我应该如何复制字符串在Java?
- “while(true)”循环有那么糟糕吗?
- 这个方法签名中的省略号(…)是干什么用的?
- Java:如何测试调用System.exit()的方法?
- 带有返回类型的Java方法在没有返回语句的情况下编译
- Java“此语言级别不支持lambda表达式”