UML 建模工具:Rose UML 与 PowerDesigner PDM
Rose 和 PowerDesigner 虽然都是 UML 建模工具,但在使用中还是有着明显的区别的,这里主要对 Rose 与 PowerDesigner 两款 UML 建模工具进行简单的对比,来体验二者有什么不同。
一、发展路线
Rose 主要是 UML 面向对象建模,而后再向数据库建模发展。
PowerDesigner 最初是一个纯粹的数据库 UML 建模工具,后来才向面向对象建模、业务逻辑建模及需求分析建模发展。
Rose 常常给人的印象还是只是面向对象分析设计的工具,而 PowerDesigner 给人的印象则是数据库UML建模工具上。其实,现在的 Rose 和 PowerDesigner 都即可以进行数据库建模,也可以进行面向对象建模,只是侧重点不一样。
二、区别
1.模型组织
Rose将数据库模型和对象模型放在一起,在进行数据表模型设计时,没有特性化的东西。而PowerDesigner将两者分开。PowerDesinger可以通过模型转换工具进行数据库建模和面向对象模型的相互转换。但Rose不能将对象转换为表,也不能将表转换为对象。
2.两款UML建模工具对模型和语言的支持
对设计模型的支持力度和广度
PowerDesigner对对象模型和数据库建模两者的支持力度已经大抵相等,此外,还支持概念模型、业务模型、需求模型、XML模型、信息流模型、自由模型的分析设计。不过对后面这几个模型的支持比较初级,而且在实际的应用中,这些模型用得也比较少,PowerDesigner的突出亮点还是在数据库建模和对象模型的设计上。
对于数据库模型,PowerDesigner支持20余种数据库,对于同一数据库的不同版本还提供单独的支持,以便在设计数据库模型时,提供数据库和版本相关的设计。对于面向对象模型,PowerDesigner支持11种主流语言,为对Java5.0提供单独的支持。
Rose基本上可以说是一个对象模型设计工具,对数据库模型的支持相对粗糙,内嵌的只支持Oracle8数据库,对其他数据库设计的支持需要通过安装插件的方式获得,且对数据库物理存储参数等较细粒度的内容支持得比较粗糙。Rose的对象模型主要支持Java、VC和VB三种语言。
对Java语言的支持
Rose对Java语言的支持更好,不但为不同版本的JDK提供了支持(不过Rose2003还不支持JDK5.0),还为Java具体产品及设计模式(如EJB、Corba、Servlet,GOF设计模式等)提供了内嵌性的支持,这些支持直接反应在Rose的主菜单上。正因为如此,使Rose背上的沉重的历史负担,如EJB和Corba这种语言级的东西是易变且不断更新的,如何在这些具体产品的地位和影响已经降低时,对其作出割舍而又保证版本的兼容性,是摆在设计者面前的难题。
PowerDesigner仅提供语言级对象设计的支持,不涉及语言内部的具体产品。其次因为它的设计工作区是和具体的模型类型及语言细分类相关的,而非在主菜单中直接提供支持,所以PowerDesigner在升级时显得更加从容一些。
3.两款UML建模工具输入和输出功能的比较
(1)反向工程
从将程序代码转换为设计模型的逆向工程功能上看,Rose更象一个IDE,它会对需要逆向工程操作的程序代码进行深度语义检查,如果存在诸如程序代码引用了类库之外的类,反向工程将失败。在Rose中完成模型设计后导出为IDE所用的代码,IDE编码调整后又逆向工程到Rose。理念很美,深具吸引力,但是在实现中,往往很少有开发团队会这样做。一般CASE工具只是在分析设计阶段使用,甚至很大比例的设计师仅把它当成画图的工具
PowerDesigner仅对需逆向工程的程序代码进行浅度语法检查,这种浅度语法检查不涉及包,类之间的关联,仅对诸如类名是否和类文件名匹配,是否少了“}”等语法性的内容进行检查。即便存在错误,PowerDesigner也允许你忽略错误,继续进行逆向工程操作,这种宽松的限制带来了很大的便利。。
(2)文档导出功能
PowerDesigner对文档导出提供了精细的控制,你可以对文档所包含的内容项进行设置,还可以对内容项的格式进行设置。PowerDesinger还提供了常用的导出模板,用户也可以自己定义模板。通过模板可以迅速完成设计模型文档的导出工作。
而Rose没有导出模板的概念,更不能对导出项和格式进行设置,你只能按Rose的系统内置的方式进行模型文档的发布。
(3)代码导出
在导出设计模型的代码时,PowerDesigner提供了精细的控制,不但可以进行对象级别,还可以进行代码级别的控制,而Rose没有提供代码导出的控制,也只能按其系统内部设置的方式导出代码。
(4)生成测试数据
PowerDesigner可为数据表生成批量的测试数据,而且你还可以制定测试数据的生成规则。这个功能给初期项目的开发测试带来很大的便利。Rose中没有提供类似的功能。