本文和打击重点讨论一下选择UML建模工具的几个标准,只有掌握了选择的标准才能在使用过程中选择正确的,合适的工具,节省不少时间。
选择一种UML建模工具
以下标准用于评估一种UML工具。当然,除了已被列出的以外,可以用这些标准来评估的产品还很多,但如果你想选择最好的,请花时间按照清单对产品作测试。如果你特别重视某项标准而在清单中没有列出,请告诉我们。
信息仓储支持
对于一个大项目,信息仓储(Repository)对在开发人员之间共享组件设计是必要的。两个以上的开发人员可以共享同一模型的的组件,甚至可以通过在适当级别上定义所有权和共享权来合作进行单一组件的开发。信息仓储通常用提供数据共享和并发控制等特性的数据库来实现。通过提供锁定和只读访问,信息仓储允许一个开发人员拥有整个模型而其他人对该模型及其组件只读访问,或者将这些组件结合到自己的设计中。重要的是:这种工具应该允许你从另一个模型只引入你所需要的组件而不必引入整个模型。
构造信息仓储的另一个令人感兴趣的方法是利用项目的源代码,使用源码控制系统来提供并发控制。这种方法的好处是在源码和模型之间有更高级别的同步,另一个好处是更除去了另一个数据源--别忘了,如果你为信息仓储使用了数据库,你必须对各种存储数据分别备份并完成在模型、信息仓储和源代码之间的三方同步,而不止是在代码和模型之间的两方同步。
有了UML建模工具对信息仓储的支持,对任何组件的修改将被自动传播到所有引入该组件的设计。
双向工程
对源代码(Java,C++,CORBAIDL)的正向和逆向工程的能力是一项复杂的需求,不同厂商在不同程度上成功地支持这一点。对正向和逆向工程这两方面的成功结合,定义为双向工程。
正向工程在第一次从模型产生代码时非常有用,这将为你节省许多用于编写类、属性、方法代码的琐碎工作的时间。
在以前没有模型存在的情况下,将代码转换成模型;或者在迭代结束,重新同步模型和代码时,逆向工程非常有用。
在一个迭代开发周期中,一旦一个模型作为迭代的一部分被修改,另一轮的正向工程应允许所有加入该模型的新的类、方法、属性的代码被更新。这个步骤通常不被开发者采用,因为许多工具在这个过程中没有办法管理源代码,问题在于源代码中不只包含与模型有关的信息。工具必须精于对在新一轮正向工程之前已有的源代码进行重新构造。
至少,UML建模工具应成功支持一开始的正向工程和全过程的逆向工程。同样,UML建模工具对纯Java语言的逆向工程的支持应该毫无问题。一定要针对你自己的源代码确认这一点,因为我们见到过优秀的工具在对Java的一些特性如内联类(innerclasses)等进行逆向工程时失败了,每一次进行逆向工程时,你不得不把讨厌的代码注释掉----确实非常痛苦。
HTML文档化
对象UML建模工具应能为对象模型及其组件无缝地产生HTML文档。HTML文档提供对象模型的静态视图,以便开发者通过浏览器迅速查询而不需要加载UML建模工具本身。另外,通过产生HTML文档,所需UML建模工具的许可证(licenses)会因减去那些对模型只需要有只读权限的人而减少。
HTML文档应包括模型中每个图形的一张位图,并允许通过超链接浏览整个模型。产生HTML文档所需的时间应是合理的。现在许多产品在不同程度上成功支持这一点。再说一遍,你必须亲自测试这个特性,在特征表上有打勾并不能保证成功支持。
完全UML1.3支持
虽然许多工具声称完全支持UML1.3,实际上,这是一项复杂的需求,一些工具并不能做到广告所声称的完全支持。至少应支持的图表有:用例图(UseCasediagrams),类图(Classdiagrams),协作图(Collaborationdiagrams),顺序图(Sequencediagrams),包图(Packagediagrams),状态图(Statediagrams)。
【编辑推荐】