最近需要画UML图,从网上找了几个工具软件,比较了一下,发现各有优缺点。画UML图的工具大致可以分为两类,一类是专业的绘图工具,带了画UML的功能,如Visio、Dia;另一类是专门用来制作UML图的,如ArgoUML和Rose,通常都有根据UML图直接生成代码。
如果只是简单的画下,这几个工具都够用,但是如果对细节要求严格一些,则都有不足的地方。如果以R.Martin的《敏捷软件开发》中的UML图为标准,则用这几款软件都无法严格做出其中的图形。当然对于Visio、Dia这样的绘图工具,还可以一点一点用基本图形拼出来,但这就烦了一点。例如在序列图(sequence diagram)里,一个调用除了有消息名以外,还可以有返回值,用一个带箭头的小圈表示,这个在上面的几个工具里都没有直接提供的。
当然不能因为没找到完美的工具就不画UML图了,最终还是选了最新版的Diav0.96.1。虽然画出来的图显得粗糙了点,但UML的一些基本的图形都有,而且集中在一个面板里,不像Visio分了好几个区,找个图形还要到处点。在生成类图之类的时候点开属性也没有Rose、Visio、ArgoUML那样一大堆属性摆在你面前,让你选也不好,不选也不好。说到底还是因为反正这些工具都不能完全满足我,那干脆选个最简单的。当然还有一个原因是我比较偏爱开源软件,虽然我不会去改它的代码,但人家好歹是跨平台的。几年前的一个Dia版本在我的电脑上运行老是死掉,现在这个用了几天了,也没什么问题,看来稳定性提升了一些。
昨天在知乎看到大神推荐了一款在线画图神器ProcessOn,可以在线花很多种图,完成很多工作,顿时有种相见恨晚的感觉。
另外还看过几个工具,没试过。Gaphor看上去很美,又是用Python开发的,但是我没办法让它在windows下跑起来,于是也只有流口水的份了。Graphviz也可以用来画UML图,不过功能有限,只见过有人用它画类图,而且我只想要一个可视化的UML绘图工具,不想在思考软件结构的时候又去考虑怎么用dot语言描述出一个UML图形的问题。
这里列出了很多UML工具,有兴趣的可以自己去看看:
http://en.wikipedia.org/wiki/ListofUML_tools
http://plg.uwaterloo.ca/~migod/uml.html