从文本文件生成UML图表

29

有没有好的工具或工具链可以根据文本源文件创建 .svg 格式的 UML 图像?我提出这个问题的原因是想要自动化生成这些图像,避免手动创建和更新这组图像。

9个回答

23

网页上打印的 SQL 关键字都是大写的,这正常吗?(我猜它们是 SQL 关键字,但我不确定。) - leemes
这不是问题,我已经在那里引用的主要UML工具页面中修复了它。为什么会发生这种情况,我仍然不完全确定。 - Jordi Cabot

13

PlantUML是一个很好的工具,可以将文本转换为标准化的UML图表。

你可以将其作为Confluence插件使用。


2
PlantUML可作为独立的Java应用程序使用,也有插件版本适用于一堆维基、编辑器和IDE。默认情况下,它似乎会生成png文件,但可以通过适当的标志输出到svg。 - Alan
3
对于PlantUML,尤其是序列图,我给予明确的支持。相比于UMLGraph中的图片宏,PlantUML更加简单易用,它有一个小GUI应用程序,每次保存后自动更新并显示您的图表,而且错误信息也更容易理解。 - Adrian

12

UMLGraph 是一个从基于文本描述的源代码生成UML图(主要是类图和序列图)的程序。它旨在与Java源代码一起使用,但是经过一些改动,也可以使用C ++风格的源代码,如此博客文章所述。

从UMLGraph网站中的引用:

GNU plotutilspic2plot程序可以处理序列图以创建PNG,PNM,(伪)GIF,SVG,AI,Postscript,CGM,FIG,PCL,HPGL,Regis或TEK图形。


1
尝试过这个来绘制序列图;发现它非常棘手(序列图是用pic宏完成的,而不是Java - 我可以让示例运行起来,但是我的宏尽管我认为是有效的,却失败了),而且示例输出以位图或SVG的形式看起来很糟糕(使用pic2plot 2.6在Ubuntu 14.04上)。对于序列图,我会避免使用它... - Adrian
你应该查看http://www.zenuml.com。它是一个在线将文本转换为序列图的工具,可以即时完成转换。 - Devs love ZenUML

4

还有一个工具叫做JS Sequence Diagrams,可以从简单的文本生成UML序列图。

它使用underscore.jsRaphaël构建图表。

它是简化的BSD许可证,并且源代码可在GitHub上获得。


2
我知道这是一个老旧的帖子,但我想分享一个我认为非常有用且用户友好的工具:https://www.websequencediagrams.com/ 这是一个在线工具,可以让您立即上手。
它还具有各种漂亮的默认布局。以下是其中两个示例: enter image description here

1

企业架构师在自动创建图表方面做得非常出色,可以从源代码(使用各种语言)以及数据库或其他来源中创建图表。


1

对于序列图,我非常喜欢Mscgen。简单的文本格式输入,美丽的图表输出。

"Mscgen是一个小型程序,解析Message Sequence Chart描述并将PNG、SVG、EPS或服务器端图像映射(ismaps)作为输出" -http://www.mcternan.me.uk/mscgen/

例如,以下是输入形式:

# MSC for some fictional process
msc {
  hscale = "2";

  a,b,c;

  a->b [ label = "ab()" ] ;
  b->c [ label = "bc(TRUE)"];
  c=>c [ label = "process(1)" ];
  c=>c [ label = "process(2)" ];
  ...;
  c=>c [ label = "process(n)" ];
  c=>c [ label = "process(END)" ];
  a<<=c [ label = "callback()"];
  ---  [ label = "If more to run", ID="*" ];
  a->a [ label = "next()"];
  a->c [ label = "ac1()\nac2()"];
  b<-c [ label = "cb(TRUE)"];
  b->b [ label = "stalled(...)"];
  a<-b [ label = "ab() = FALSE"];
}

产生的输出如下所示:

Sequence diagram for a fictional process


0

如果你喜欢JS序列图,你也应该看看UMLet,它有类似的前提(能够通过文本定义图表,类似于graphviz描述),并让工具找出图形和位置。

在我看来,这种方法还没有得到足够的宣传或关注。完整的往返源代码分析是困难的,在许多情况下,“对于简单的设计对话或快速文档编写来说,工作量太大”。企业工具中的布局复杂性阻止了除最大的文档之外的所有文档使用它们。而敏捷开发则因为代价太高而缺乏文档。

出于这些原因,我希望看到更多的工具采用这种方法。


0

免费的UML工具JUDE允许从Java源代码创建UML图。我不知道它是否适用于其他语言。


嗨Jorn,JUDE现在被称为“Astah”(http://astah.net/editions/professional),可以使用免费插件(http://astah.net/features/plugins)从Java源代码和C++和C#创建图表。 - Satomi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接