文档能力是一个工程师必不可少的基础能力,而高质量的文档往往伴随着高质量的图表。”A picture is worth a thousand words”,复杂的概念,逻辑,想法往往能够用图表清晰而生动地表达。一张好的图表离不开制作人的大脑对思维的描述,但同样离不开制作人所使用的工具。好的工具,让同样的事情事半功倍。我是一个工具爱好者,即便手头上有一个称心的锤子,我也会继续探索,寻求更好的钉钉子的利器。
我最初接触的图表工具是word。从word 97开始,其内置的绘图能力就非常不错,能满足一般的应用。它的优势是简单易用,如果你使用word,那么不需要再切换到其它工具绘制,然后插入到word中。
接触visio,源自于word绘图时,可用的组件太少。因此如果想要提高绘图的效率,visio就成了软件工程师们的最佳选择。丰富的组件库,各种各样的图表支持,和word的无缝对接,是visio的强项。如果说visio最大的缺点,那可能就是无法在linux [1] 和osx下运行。我周围的工程师们使用linux/osx的不少,但在绘图这事上,他们只好借助virtualbox这样的虚拟机工具,让windows下的visio重见天日。
三年前我把工作环境完全切换至mbp/osx后,经历了很长一段时间无法好好绘图的尴尬,我尝试过虚拟机的方案,但来回切换着实让人烦躁;后来我发现了omnigraffle,才结束了对visio的依依不舍。omnigraffle是osx下绘图的神器,各种各样的stencils满足你的几乎一切需求。有很长一段时间,做wireframe我都在使用它。bootstrap流行的年代,第三方的bootstrap stencils立刻跟进,满足我这个非处女座的小小处女座情节。
omnigraffle甚至可以打开visio制作的图表,这对visio迁移过来的用户是一大福音。然而,使用它的最大障碍是价格。普通版六百多人民币就足以吓倒一片人,更别说pro了。visio的话,公司可以申请安装正版软件,osx下就郁闷了,申请了两次,请求均被驳回。郁闷,只好离它而去。
NOTE
了解我的人应该知道,前面的所见即所得的工具都是铺垫,下面出现的几款工具,才是真正的肉戏。:)
和omnigraffle同步使用的,是graphviz。简单的语法,强大的绘图能力,还有跟sphinx [2] 的结合能力,使其一度是我的最爱。
描述一个这样的状态机:
我最喜欢用graphviz绘制的图表,除了状态机外,还有数据结构和函数调用关系。这里有个数据结构的例子:
起初极其不适应 —— 要在80列的限制下用ascii表达图形,那是多么困难的一件事!后来,我渐渐习惯了这种表达方式,它让你抛弃一切花里胡哨,只关注最重要的部分。更重要的是,不要小看这种格式,它也能够被转换成「真正的」图形,被用在其它场合(比如说word里),这种转换工具就是ditaa。下图是ditaa将上图中的ascii图表转换后的样子:
描述它的语言并不复杂,对着图应该很快能看懂:
plantuml,正如其名称,支持几乎所有的uml图,常画uml的童鞋有福了。比如class图:
更美妙的是,plantuml还集成了ditaa和graphviz,让你可以用各自的语法在plantuml下绘图,大有一统江湖之势。
和ditaa类似,plantuml也是一个sourceforge的项目,请访问:http://plantuml.sourceforge.net/。
我现在已经在自己的工作中全线使用asciidoctor + plantuml了,你呢会如何选择/p>
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!