如何从Java代码生成UML图(尤其是序列图)?

How to generate UML diagrams (especially sequence diagrams) from Java code?

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


ObjectAid UML资源管理器

是我用的。它很容易从存储库安装:

1
2
Name:     ObjectAid UML Explorer
Location: http://www.objectaid.com/update/current

并生成相当不错的UML图:

Screenshot

网站说明:

The ObjectAid UML Explorer is different from other UML tools. It uses
the UML notation to show a graphical representation of existing code
that is as accurate and up-to-date as your text editor, while being
very easy to use. Several unique features make this possible:

  • Your source code and libraries are the model that is displayed, they are not reverse engineered into a different format.
  • If you update your code in Eclipse, your diagram is updated as well; there is no need to reverse engineer source code.
  • Refactoring updates your diagram as well as your source code. When you rename a field or move a class, your diagram simply reflects the
    changes without going out of sync.
  • All diagrams in your Eclipse workspace are updated with refactoring changes as appropriate. If necessary, they are checked out of your
    version control system.
  • Diagrams are fully integrated into the Eclipse IDE. You can drag Java classes from any other view onto the diagram, and diagram-related
    information is shown in other views wherever applicable.

编辑:
如果您是设计师,那么Papyrus是您的最佳选择,它非常先进并且功能齐全,但是如果您只想草绘一些UML图表并易于安装,那么ObjectAid会很酷,并且不需要我刚刚安装的任何插件它可以通过Eclipse-Java EE正常运行!

更新2013年10月11日

我最初的帖子是在2012年6月,很多事情已经改变,许多工具已经增长,而其他却没有。由于我将回过头来进行一些建模并获得一些回复,因此我决定再次安装纸莎草纸,并将再次研究其他可能的UML建模解决方案。 UML生成(具有同步功能)对于软件设计师而言并不重要,对普通开发人员而言确实很重要。

我希望纸莎草纸具有将逆向工程类转换为UML类图的直接方法,并且如果该反向工程具有同步功能,那将非常酷,但是不幸的是,纸莎草纸项目具有许多功能,并且我认为那里的开发人员已经手头很多您对纸莎草纸进行的操作可能不会给您任何回应,并且什么也不会发生,但这仍然超出了此问题的范围。

答案(2013年10月11日)

工具

  • 下载纸莎草纸
  • 转到帮助->安装新软件...
  • 在[使用方式:]下拉式选单中,选取[所有可用的网站]
  • 在过滤器中,输入Papyrus
  • 安装完成后,重新启动Eclipse
  • 重复步骤1-3,这一次,安装Modisco
  • 脚步

  • 在您的Java项目中(假设它称为MyProject)创建一个文件夹,例如UML
  • 右键单击项目名称->发现-> Discoverer->从Java项目中发现Java和清单模型,将生成一个名为MyProject_kdm.xmi的文件。
    enter image description here
  • 右键单击项目名称文件->新建->纸莎草纸模型->并将其命名为MyProject。
  • 将三个生成的文件MyProject.di,MyProject.notation,MyProject.uml移动到UML文件夹
  • 再次右键单击MyProject_kdm.xmi->发现-> Discoverer->从KDM代码发现UML模型,您将看到一个属性对话框,将序列化道具设置为TRUE,以生成一个名为MyProject.uml的文件
    enter image description here

  • 将在根目录下生成的MyProject.uml移至UML文件夹,Eclipse将询问您是否要替换它,请单击yes。我们在这里所做的是用生成的模型替换了一个空模型。

  • ALT + W->显示视图->纸莎草纸->模型资源管理器

  • 在该视图中,您将找到图片中的类
    enter image description here

  • 在视图中,右键单击根模型->新图enter image description here

  • 然后开始从视图中获取类到图中

  • 一些功能

    • 显示类元素(变量,函数等)右键单击任何类->过滤器->显示/隐藏内容瞧!

    • 您可以从"窗口"->"首选项"->"纸莎草纸"->"类图"中获得默认的友好颜色设置

    • 一个非常重要的设置是"安排",当您放下课程时,他们会在狭窄的类图上的空白处单击鼠标右键,然后单击"全部安排"

    • 可以将模型资源管理器视图中的箭头抓到图中以显示概括,实现等

    • 毕竟,您的设置将显示如下图
      enter image description here

    • 据我所知,同步不可用,您需要手动导入任何新类。

    仅此而已,并且除非您真正需要它,否则不要购买商业产品,纸莎草纸实际上很棒,而且精巧而不是捐赠或其他东西。

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


    您的代码库是什么? Java还是C ++?

    alt text

    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

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

    在https://plugins.jetbrains.com/plugin/12437-zenuml-support上进行检查


    PlantUML呢?
    它不是用于逆向工程!!!在编写代码之前是为工程设计的。


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

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

    在这里查看https://github.com/juanmf/Java2PlantUML

    输出图示例:
    enter image description here

    任何贡献都值??得欢迎。它具有一组可自定义输出的过滤器,但我尚未在插件CLI参数中公开这些过滤器。

    重要的是要注意,它不仅限于* .java文件,它还可以从您的maven依赖项中呈现UML图src。这对于理解您所依赖的库非常方便。它实际上通过反射检查编译的类,因此不需要任何源

    成为第一个在GitHub上加注星标的人:P


    我会推荐Omondo的EclipseUML作为一般用法,尽管几个月前我的Web项目确实遇到了一些问题。他们在某个时间点有一个免费版本,但是据说不再推广了。

    如果您真的热衷于从源代码进行反向工程序列图,我建议您使用jTracert。

    就Eclipse项目本身而言,Eclipse UML2 Tools项目可能支持逆向工程,尽管我从未在实践中见过它的用途。

    MoDisco(模型发现)项目Eclipse GMT项目似乎在实现目标方面更加清晰。特定于技术的工具列表将是一个很好的起点。


    我发现Green插件非常易于使用,并可以从源代码生成类图。
    试试看 :)。
    只需将插件复制到您的插件目录即可。


    您也可以尝试netbeans UML建模器。我用它来生成我在Eclipse项目中使用的javacode。您甚至可以在Netbeans中导入Eclipse项目,并使Eclipse设置与NetBeans项目设置同步。

    我尝试了几个UML建模器来进行蚀,对它们不满意。它们要么不稳定,要么复杂,要么只是丑陋。 ;-)


    使用IntelliJ IDEA。要生成类图,请选择包并按Ctrl + Alt + Uenter image description here

    默认情况下,它仅显示类名,而不显示所有依赖项。要更改它:右键单击->显示类别...,然后显示依赖项:
    enter image description here

    要使用依赖关系图(UML部署图)并使用maven,请转到视图->工具Windows-> Maven项目,然后按Ctrl + Alt + U
    enter image description here

    结果:
    enter image description here

    也有可能生成更多其他图表。请参阅文档。


    您可以将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

    实时Flash演示:http://www.ejb3.org/reverse.swf

    EclipseUML Omondo是世界上针对Java的最佳工具。在这个实时的Java同步市场上,似乎只有eUML与它竞争,但是eUML在代码中添加了模型标签,这确实非常非常糟糕,对我来说绝对是个难题。


    到目前为止,我使用过的最好的逆向工程工具是Java-> UML双向传递,它是Borland的Together。它基于Eclipse(不仅是单个插件),而且效果很好。


    Java的另一个建模工具是我的网站GitUML。
    从存储在GitHub存储库中的Java或Python代码生成UML图。

    GitUML的一个关键思想是解决"文档"的问题之一:图表总是过时的。使用GitUML,当您使用git推送代码时,图会自动更新。

    浏览社区UML图,那里有一些Java设计模式。浏览流行的GitHub存储库,并可视化其中的架构和模式。

    diagram browser

    使用指向和单击创建图。没有拖放编辑器,只需单击要可视化的存储库树中的类:

    select the java classes you want to visualise

    基础技术基于PlantUML,这意味着您可以使用其他PlantUML标记来完善图表。


    我注意到Intellij的SequenceDiagram插件也是一个不错的选择。


    我建议PlantUML。该工具非常有用且易于使用。 PlantUML有一个Netbeans插件,您可以从Java代码创建UML图。

    您可以通过以下方法在Netbeans中安装PlantUML插件:

    Netbeans菜单->工具->插件

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

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


    推荐阅读

      linux安装强制命令行?

      linux安装强制命令行?,机器人,软件,工作,工业,系统,地址,电脑,生产,设计,状

      linux命令行安装应用?

      linux命令行安装应用?,软件,系统,名称,官网,在线,管理,工作,信息,命令,目录,l

      linux安装浏览器命令?

      linux安装浏览器命令?,官网,系统,平台,网站,管理,设备,咨询,工具,官方网站,

      linux安装sz命令?

      linux安装sz命令?,系统,软件,标准,服务,工作,工具,命令,位置,平台,百度,如何

      linux安装纯命令行?

      linux安装纯命令行?,软件,系统,发行,环境,基础,工作,工具,公司,终端,命令,如

      linux安装npm命令?

      linux安装npm命令?,证书,最新,档案,代理,信息,位置,系统,工程,命令,版本,ngin

      linux什么命令安装c?

      linux什么命令安装c?,系统,管理,工作,软件,在线,名字,传播,代码,工具,信息,li

      linux安装更新命令?

      linux安装更新命令?,软件,系统,项目,名称,管理,数据,网站,工作,官方网站,命

      linux安装dep命令?

      linux安装dep命令?,系统,软件,策略,管理,对比,时间,工具,名字,平台,代码,如何

      linux中本地安装命令?

      linux中本地安装命令?,软件,系统,官网,在线,百度,中心,官方网站,工具,信息,

      linux本地安装命令?

      linux本地安装命令?,软件,系统,工具,在线,数据,官网,环境,名称,命令,文件,lin

      linux下安装微信命令?

      linux下安装微信命令?,软件,系统,工具,官网,平台,近日,服务,认证,体系,官方

      linux下载安装包命令?

      linux下载安装包命令?,软件,系统,名称,位置,数据,名字,通讯,灵活,最新,管理,

      linux安装操作命令?

      linux安装操作命令?,系统,工作,地址,工具,服务,情况,信息,命令,最新,管理,lin

      linux安装源码命令?

      linux安装源码命令?,软件,管理,最新,灵活,官网,工具,系统,源码,命令,文件,如

      linux安装管理命令?

      linux安装管理命令?,软件,系统,工作,在线,基础,管理,命令,官网,工具,名称,lin

      linux命令安装新系统?

      linux命令安装新系统?,系统,软件,工作,管理,在线,电脑,信息,基础,发行,数据,L

      linux安装arp命令?

      linux安装arp命令?,地址,系统,时间,网络,信息,合法,有限,金山,数字,设备,Linu

      linux安装驱动命令行?

      linux安装驱动命令行?,系统,软件,平台,材料,电脑,位置,名称,下来,命令,内核,l

      linux防火墙安装命令?

      linux防火墙安装命令?,系统,服务,工具,状态,密码,情况,软件,管理,防火墙,网