【问题标题】:Rendering UML diagrams from text files [closed]从文本文件中渲染 UML 图 [关闭]
【发布时间】:2010-09-16 17:20:53
【问题描述】:

是否有任何好的工具或工具链允许从文本源文件创建 .svg 格式的 UML 图像? 这个问题的原因是我想自动生成这些图像,以避免必须手动创建和更新这组图像。

【问题讨论】:

    标签: automation uml svg


    【解决方案1】:

    我在这里创建了一个接受文本模型描述作为输入的工具列表:

    http://modeling-languages.com/uml-tools-textual-notations-define-uml-models/

    【讨论】:

    • 网页上SQL关键字大写正常吗? (我猜它们是 SQL 关键字,但我不确定。)
    • 不是,我在 UML 工具的主页面中解决了这个问题。为什么会发生这种情况我仍然不完全确定
    【解决方案2】:

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

    你有这个作为 confluenze 的插件

    【讨论】:

    • PlantUML 可作为独立的 Java 应用程序使用,也有用于 a bunch of wikis, editors and IDEs 的插件版本。默认情况下,它似乎会生成 png 文件,但可以使用适当的标志输出到 svg。
    • PlantUML 的绝对 +1,尤其是序列图 - 比 UMLGraph 中的 pic 宏要少得多,小 GUI 应用程序会在每次保存时自动更新并显示您的图表,并且错误消息是更有帮助。
    【解决方案3】:

    UMLGraph 是一个用于从基于文本的描述生成 UML 图(主要是类图和序列图)的程序。它旨在与 java 源代码一起使用,但经过一些更改,C++ 样式的源代码也可以按照this blog entry 的描述使用。

    引自 UMLGraph 网站:

    GNU plotutils pic2plot 程序可以 然后将序列图处理为 创建 PNG、PNM、(伪)GIF、SVG、 AI、Postscript、CGM、FIG、PCL、HPGL、 Regis 或 TEK 绘图。

    【讨论】:

    • 对序列图进行了尝试;发现它非常挑剔(序列图是用 pic 宏完成的,而不是 Java - 我可以让样本工作,但我自己的宏尽管据我所知是有效的但失​​败了),并且样本输出看起来很糟糕位图或 SVG(在带有 pic2plot 2.6 的 Ubuntu 14.04 上)。对于序列图,我会避免......
    • 您应该结帐zenuml.com。在线将文本即时转换为序列图。
    【解决方案4】:

    还有另一个称为JS Sequence Diagrams 的工具,允许从简单文本生成UML 序列图。

    它使用underscore.js 和Raphaël 来构建图表。

    它是经过简化的 BSD 许可的,源代码可在 GitHub 获得

    【讨论】:

      【解决方案5】:

      我知道这是一个旧线程,但我仍然想再分享一个我认为非常有用且用户友好的工具:https://www.websequencediagrams.com/

      这是一个在线工具,可让您立即启动并运行。

      它还具有各种开箱即用的漂亮布局。
      这里有两个例子:

      【讨论】:

        【解决方案6】:

        Enterprise Architect 在从源代码(各种语言)以及数据库或其他来源自动创建图表方面做得很好。

        【讨论】:

          【解决方案7】:

          对于序列图,我真的很喜欢 Mscgen。输入简单的文本格式,输出可爱的图表。

          “Mscgen 是一个小程序,它解析消息序列图描述并生成 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"];
          }
          

          产生这样的输出:

          【讨论】:

            【解决方案8】:

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

            【讨论】:

            【解决方案9】:

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

            恕我直言,这种方法没有得到足够的宣传或牵引。完整的往返源分析很困难,而且在许多情况下,对于简单的设计对话或快速文档来说,“工作量太大”。企业工具中布局的复杂性使除了最大的文档之外的所有人都无法使用它们。而敏捷则因价格太高而遭受无文档的困扰。

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

            【讨论】:

              猜你喜欢
              • 2015-09-15
              • 2017-12-17
              • 2011-06-27
              • 1970-01-01
              • 1970-01-01
              • 2020-06-19
              • 2013-12-15
              • 1970-01-01
              • 2021-11-04
              相关资源
              最近更新 更多