面向对象的软件建模工具应对软件系统的模型进行可视化、构造和文档化。一套面向对象的软件建模工具应该拥有特定的概念和表示方法,通过对建模人员进行过程性支持、辅助性建模外,还要安装规范生产相应的开发文档,尽可能多的生成代码。面向对象的软件建模工具应该具有以下功能:
绘图
存储
一致性检查
对模型进行组织
导航
写作支持
代码生成
逆向项目
集成
支持多种抽象层和开发过程
文档生成
脚本编程
在UML的发展中有很多工具被使用,其中比较有代表性的有Rational Rose、PowerDesigner等,这里对常用的4种工具加以介绍。
Rational Rose是Rational公司出品的一种面向对象的、使用统一建模语言的可视化建模工具。用于可视化建模和公司级水平软件应用的组件构造。Rose是直接从UML发展而诞生的设计工具,它的出现就是为了支持UML建模。
Rational Rose包括了统一建模语言(UML)、OOSE和OMT。其中统一建模语言(UML)由Rational公司三位世界级面向对象技术专家Grady Booch、Ivar Jacobson和Jim Rumbaugh通过对早期面向对象研究和设计方法的进一步扩展得来的,它为可视化建模软件奠定了坚实的理论基础。
Rational Rose是一个完全的,具有能满足所有建模环境(Web开发,数据建模,Visual Studio和 C++ )需求能力和灵活性的一套解决方案。Rose允许开发人员、项目经理、系统分析师和设计人员在软件开发周期内将需求和系统的体系架构转换成代码,提高生产效率,对需求和系统的体系架构进行可视化的理解和提练。通过在软件开发周期内使用同一种建模工具确保更快更好的创建满足客户需求的、可扩展的、灵活的并且可靠的应用系统。
Rational Rose的两个受欢迎的特征是它的提供反复式发展和来回旅程项目的能力。Rational Rose允许设计师利用反复发展(有时也叫进化式发展),因为在各个进程中新的应用能够被创建,通过把一个反复的输出变成下一个反复的输入(这和瀑布式发展形成对比,在瀑布式发展中,在一个用户开始尝试之前整个项目被从头到尾的完成)。然后,当开发者开始理解组件之间是如何相互作用并在设计中进行调整时,Rational Rose能够通过回溯和更新模型的其余部分来保证代码的一致性,从而展现出被称为 “ 来回旅程项目 ” 的能力,Rational Rose是可扩展的,可以使用下载附加项和第三方应用软件,它支持COM/DCOM (ActiveX),JavaBeans 和 Corba组件标准。
Rational Rose不是单纯的绘图工具,它专门支持UML的建模,有很强的校验功能,能检查出模型中的许多裸机错误,还支持多种语言的双向项目,特别是对当前比较流行的Java的支持非常好。Rose早期没有对数据库端建模的支持,但现在的版本中已经加入数据库建模的功能。它提供了一个叫 “ Data Modeler ” 的工具,利用它可以将对象模型转换成数据模型,也可以将现有的数据模型转换成对象模型,从而实现两者之间的同步。
具体来说,Data Modeler有以下功能:
① 将对象模型转换成数据模型,即将类映射到数据库的表,构成传统的E-R图;
② 将数据模型转换成对象模型;
③ 利用数据模型生成数据库DDL,也可以直接连接到数据库里,对数据库产生结果; ④ 从现有数据库或DDL文件里生成数据模型;
⑤ 将数据模型同DDL文件或现有数据库进行比较。
Rational Rose包含了多个版本:
① Rose Enterprise:支持用C++、Java、Visual Basic和Oracle生成代码,支持逆向工程; ② Rose Professional系列:可以用一种语言生成代码;
③ Rose Modeler:可以对系统生成模型,但不支持逆向工程,也不支持由模型转出代码。
Rational Rose 2003的企业版(Rose Enterprise)的设计窗口如图3.1所示。
图3.1 Rational Rose
作为一种建模工具,Rational Rose是影响面向对象应用程序开发领域发展的一个重要因素。Rational Rose自推出以来就受到了业界的瞩目,并一直引领着可视化建模工具的发展。越来越多的软件公司和开发团队开始或者已经采用Rational Rose,用于大型项目开发的分析、建模与设计等方面。
从使用的角度分析,Rational Rose易于使用,支持使用多种构件和多种语言的复杂系统建模;利用双向项目技术可以实现迭代式开发;团队管理特性支持大型、复杂的项目和大型且队员分散在各个不同地方的开发团队。同时,Rational Rose与微软Visual Studio系列工具中GUI的完美结合所带来的方便性,使得它成为绝大多数开发人员首选建模工具;Rose还是市场上第一个提供对基于UML的数据建模和Web建模支持的工具。此外,Rose还为其他 一 些领域提供支持,如用户定制和产品性能改进。
Rose主要是在开发过程中对各种语义、模块、对象以及流程、状态等的描述,主要体现在能够从各个方面和角度来分析和设计,使软件的开发蓝图更清晰,内部结构更明朗,但对数据库的开发管理和数据库端的迭代不是很理想。Rose现在已经退出市场,不过仍有一些公司在使用。IBM推出了Rational Software Architect来替代Rational Rose。
Microsoft Office Visio是微软公司出品的软件,Office Visio 提供了各种模板:业务流程的流程图、网络图、工作流图、数据库模型图和软件图,这些模板可用于可视化和简化业务流程、跟踪项目和资源、绘制组织结构图、映射网络、绘制建筑地图以及优化系统。
Visio有两个版本:Microsoft Office Visio Professional和 Microsoft Office Visio Standard。Office Visio Standard具备Office Visio Professional 包含的许多功能,但是Office Visio Professional还包含更多图表类型的模板以及若干项高级功能。
Visio原来仅仅是一种画图工具,能够用来描述各种图形(从电路图到房屋结构图),也是到Visio 2000才开始引进软件分析设计功能到代码生成的全部功能,它可以说是目前最能够用图形方式来表达各种商业图形用途的工具(对软件开发中的UML支持仅仅是其中很少的一部分)。
使用Office Visio,可以轻松地将流程、系统和复杂信息可视化。Office Visio 提供了特定工具来支持IT 和商务专业人员的不同图表制作需要。使用Office Visio Professional中的ITIL(IT基础设施库)模板和价值流图模板,可以创建种类更广泛的图表。使用预订义的Microsoft SmartShapes符号和强大的搜索功能可以找到合适的形状,而无论该形状是保存在计算机上还是网站上。
通过浏览简化的模板类别和使用大模板预览,在新增的 “ 入门 ” 窗口中查找所需的模板。使用 “ 入门 ” 窗口中新增的 “ 最近打开的模板”视图找到最近使用的模板。
在Office Visio Professional中,打开新的 “ 入门 ” 窗口和使用新的“示例”类别,可以更方便地查找新的示例图表。查看与数据集成的示例图表,为创建自己的图表获得思路,认识到数据为众多图表类型提供更多上下文的方式,以及确定要使用的模板。
无须绘制连接线便可连接形状,只需单击 一 次,Office Visio中新增的自动连接功能可以将形状连接、使形状均匀分布并使它们自动对齐。移动连接的形状时,这些形状会保持连接,连接线会在形状之间自动重排。
Microsoft Office Visio绘图和图表制作软件有助于IT和商务专业人员轻松地可视化、分析和交流复杂信息。它能够将难以理解的复杂文本和表格转换为一目了然的 Visio 图表。该软件通过创建与数据相关的 Visio图表(而不使用静态图片)来显示数据,这些图表易于刷新,并能够显著提高生产率。使用Office Visio 中的各种图表可了解、操作和共享企业内组织系统、资源和流程的有关信息。
Microsoft Office Visio Standard 2003的设计窗口如图3.2所示。
图3.2 Microsoft Office Visio
Visio与微软的Office产品的能够很好兼容,能够把图形直接复制或者内嵌到Word的文档中。但是对于代码的生成更多是支持微软的产品如VB、VC++、MS SQL Server等(这也是微软的传统),所以用于图形语义的描述比较方便,但是用于软件开发过程的迭代开发则显得力不从心。
PowerDesigner是Sybase公司的CASE工具集,使用它可以方便地对管理信息系统进行分析设计,它几乎包括了数据库模型设计的全过程。利用PowerDesigner可以制作数据流程图、概念数据模型、物理数据模型,可以生成多种客户端开发工具的应用程序,还可为数据仓库制作结构模型,也能对团队设备模型进行控制。它可与许多流行的数据库设计软件,例如:PowerBuilder、Delphi、VB等相互配合使用来缩短开发时间和使系统设计更优化。
PowerDesigner开始是对数据库建模而发展起来的一种数据库建模工具,直到7.0版才开始对面向对象开发的支持,后来又引入了对UML的支持。
PowerDesigner是Sybase的企业建模和设计解决方案,采用模型驱动方法,将业务与IT结合起来,可帮助部署有效的企业体系架构,并为研发生命周期管理提供强大的分析与设计技术。PowerDesigner 支持60多种数据库系统(RDBMS)/版本。PowerDesigner运行在Microsoft Windows平台上,并提供了Eclipse插件。
PowerDesigner的设计窗口如图3.3所示。
图3.3 PowerDesigner
由于PowerDesigner侧重点不同,它对数据库建模的支持非常好,支持了90%左右的数据库,但对UML建模使用的各种图的支持比较不尽人意,虽然在近几个版本上有所加强但使用它来进行UML开发的并不是很普遍,很多人都是用它来做数据库建模。但不可否认的是使用UML分析,PowerDesigner可以生成代码,并对Sybase的PowerBuilder、C++、Java、VB、C#有很好的支持。
StarUML(简称SU)是一款开放源码的UML开发工具,由韩国公司主导开发出来的,可以直接到StarUML网站下载。
StarUML是一种创建UML类图,生成类图和其他类型的统一建模语言(UML)图表的工具。StarUML是一个开源项目,发展快、灵活、可扩展性强。
(1)可绘制UML中的常用图
UML 2.0分为两大类:结构图(Structure Diagram)和行为图(Behavior Diagram)共13种图。结构图用于对系统的静态结构建模,包括类图、组合结构图、构件图、部署图、对象图和包图;行为图用于对系统的动态行为建模,包括实例图、交互图(顺序图、通信图、交互概览图、定时图)、活动图和状态机图。StarUML可支持除对象图、包图、定时图和交互预览图之外的其他11种图的绘制。
(2)完全免费
StarUML是一套开放源码的软件,不仅免费自由下载,连代码都免费开放。
(3)多种格式
StarUML遵守UML的语法规则,不支持违反语法的动作。
(4)双向工程
无论是把设计模型转换成代码,还是把代码转换为设计模型,都是一项非常复杂的工作。正向和逆向工程这两方面结合在一起,定义为双向工程。双向工程提供了一种机制,它使系统架构或者设计模型与代码之间进行双向交换。
① 正向工程把设计模型转换为代码框架,开发者不需要编写类、属性、方法代码。一般情况下,开发人员将系统设计细化到一定的级别,然后应用正向工程。
② 逆向工程是指把代码转换成设计模型。在迭代开发周期中,一旦某个模型作为迭代的 一 部分被修改,采用正向工程把新的类、方法、属性加入代码;同时,一旦某些代码被修改,采用逆向工程,将修改后的代码转换为设计模型。
StarUML可以依据类图的内容生成Java、C++、C#代码,也能够读取Java、C++、C#代码反向生成类图。逆向工程有两个主要用途,其一是就有的源码反转成图之后,可以构建UML模型的方式继续将新的设计添加上去;另一种用途是想要解析源码时,可以通过反转的类图来理解,不再需要查看一行又一行的代码,这将节省大量的时间和精力。
(5)支持XMI(XML-based Metadata Interchange)
StarUML接受XMI 1.1、1.2和1.3版的导入导出。XMI是一种以XML为基础的交换格式,用以交换不同开发工具所生成的UML模型。
(6)导入Rose文件
StarUML可以读取Rational Rose生成的文件,让原先Rose的用户可以转而使用免费的StarUML。早期,Rational Rose是市场占有率最高的UML开发工具,同时也是相当昂贵的工具。由于Rational Rose非常闻名,后来让IBM给收购了。
(7)支持模式
支持23种GoF模式(Pattern),以及3种EJB模式。GoF模式出自于Erich Gamma等4人合著的Design Patterns : Elements of Reusable Object-Oriented Software一书,其中列出了23种软件模式,可解决软件设计上的特定问题。StarUML也支持3种常用的EJB模式,分别为EntityEJB、MessageDrivenEJB、SessionEJB。
StarUML设计窗口如图3.4所示。
图3.4 StarUML