前两天找自动化工具,发现两个工具,叫dia2code和cpp2dia。两个都已经玩过了,还不错。这两个工具是基于UML的建模工具,和IBM Retional有异曲同工之妙,只是没有那么完整好用而已。

dia是一种矢量图编辑工具,其中包含了UML模块。不过只有UML图的建模工具是不完整的,dia2code可以将UML转换成多种语言的定义文件,其中包括了C++和java(我也就要这两种就够了)。画出关系图后,一条指令就可以自动生成代码框架,套用indent格式一把就可以拿来写了(java的话自然是eclipse)。美中不足的是,如果生成代码框架可以自动扩充就好了。例如当前我已经在某个框架上写了代码,然后发现要添加一个函数。难道还要重生成一遍,然后再Ctrl+C,Ctrl+V吗?回头估计要写一个程序来解决这个问题。

cpp2dia到是可以部分的解决这个问题。如果说dia2code是以UML模型为基础,cpp2dia就是以程序代码为基础。cpp2dia可以从代码中生成出dia模型来(当然,看名字就知道,只支持C++)。如果要添加函数,尽管修改代码,回头重新生成dia就是。不过这个毕竟不是比较完美的解决方案。

我做了一个测试。画了一个图形a.dia,然后用dia2code生成一堆框架。拿框架去套cpp2dia,结果出来一个output.dia。output.dia和a.dia拓朴结构一致,但是位置就差很多了(这也没办法)。最后用output.dia生成框架,生成结果和原来框架完全一致。

这两个工具的意义,在于编写代码的同时,可以清晰的看到代码的相互关系。代码写好了,文档也自然有了。UML图在手里面,代码自然也好写多了。同类的解决方案有IBM的Retional,Sun的JavaStudio,Microsoft的Visio,虽然都是要收费的,而且是白花花的银子啊~~~