能很多程序员喜欢用Viso(window下)或OmniGraffle(Mac 下)绘制UML图。但你用过 PlantUtml 之后,你可能会觉得其他工具简直“弱爆了”!。Viso或OmniGraffle 这类工具的确更灵活,绘制系统结构图的时候更有优势,但在绘制UML方面(不太关心样式的情况下),他们和 PlantUML比起来效率就低很多。PlantUML 完全使用代码方式绘图,更符合程序员的习惯,让逻辑表述更清晰,更易于修改。
官方网址:plantuml.com
图片来源 wikimedia
核心的使用方式就是“名称”加“箭头”,官方的入门文档也只有两段话:
编写绘图代码文件,如:sequenceDiagram.txt
@startuml
Alice -> Bob: test
@enduml
运行命令生成图片,会自动生成名为 sequenceDiagram.png 文件
java -jar plantuml.jar sequenceDiagram.txt
So Easy!,用PlantUML绘制UML图就是这么简单,形象你用Viso之类的工具需要拖拽多久?用代码方式简单明了,几秒钟搞定。
当然这里使用命令行方式生成图片未免有些笨拙,后面会介绍跟好用的工具。
时序图:
更多例子参考官方网址
用例图:
更多例子参考官方文档
类图:
更多例子参考官方文档
活动图/流程图
更多例子参考官方文档
组件图
更多例子参考官方文档
状态图
更多例子参考官方文档
对象图
更多例子参考官方文档
PlantUML 的强大之处在于不只能绘制UML,还能绘制更多:
复杂的数学公式:
更多例子参考官方文档
表格:
更多例子参考官方文档
Graphviz/DOT
可以使用 Graphviz/DOT 语法绘图:
图表:
更多例子参考官方文档
使用图标
更多例子参考官方文档
XEarth 地图图片
更多例子参考官方文档
向 史蒂夫·乔布斯 和 斯蒂夫·盖瑞·沃兹尼亚克 致敬!真正的hacker应该做的事情!
来源地址:点这里
ASCII Art
PlantUML还可将绘图代码绘制成 ASCII ART 形式:
来源地址:点这里
还可以将ASCII ART 转成图片形式:
来源地址:点这里
数独游戏
来源地址:点这里
手绘风格
来源地址:点这里
来源地址:点这里
非常强大,单不挂代理国内访问会比较慢,工具引了几个google的js文件,国内访问不了只能等到超时才行。
非常简单的工具,截图:
但是可以生成一个可引用的图片地址:
也是一个非常简单的编辑器,有预发高亮功能。
其他官方推荐在线编辑器
有些是收费的。
参考:官方文档
PlantUML 可集成的IDE工具非常多,几乎主流编辑器都支持:
参考:官方文档
下面仅用Eclipse举例
安装 Graphviz/DOT 官方网址:https://graphviz.org/download/ Mac可以用brew install graphviz
安装
安装PlantUML Eclipse扩展: 更新地址(Eclipse 4 ):http://basar.idi.ntnu.no/svn/tdt4100/anonymous/trunk/updatesite/
配置Graphviz Path 设置->PlantUML->Graphviz Path
打开PlantUML view window -> show view -> PlantUML
试用 对于已有的Java文件,PlantUML 可以自动绘制出类图:
普通UML绘制试用txt文件即可:
参考:官方文档
如果你觉得用别人的在线服务,以及别人的图片地址不够安全或稳定。PlantUML 官方也提供自建Web服务的套件,基于 Java 和 Tomcat。参考:官方文档
自建效果参考 PlantUML Web Server
参考:官方文档
本地IDE工具,略重,截图:
和 PlantUML类似,也是通过代码绘制图形,样式比较美观,功能没有 PlantUML丰富,截图:
完全在线的图例编辑工具,可绘制的类型非常丰富,相当于在线的Viso。
国产在线图例编辑工具
收费。
UMLet (UMLet - Free UML Tools for fast UML diagrams)
基于 Java 的UML IDE,比较轻量简单,界面不是很好看。
WebSequenceDiagrams(WebSequenceDiagrams - Draw sequence diagrams online in seconds)
专门绘制时序图的在线图例编辑器,基于代码语法的,有关键字提示功能,类似PlantUML,部分功能免费。
一个绘制时序图的前端js框架,收费。
另一个绘制时序图的前端js框架,开源免费,有手绘风格。
类似 PlantUML 的绘图工具,基于代码绘制,非常轻量级,有点简陋。
另一个强大的基于代码的绘图工具,不过PlantUML已经可以集成他的功能了。参考:Integration of Dot diagrams
一个比较不错的前端js UML框架。样式也比较美观。
一个小众基于代码的UML绘制工具,功能比较少。
可以通过URL参数绘制UML图形。收费。