前言:
提起建模,每一位软件开发人员都不会生疏,但我们还是要给它一个明确的定义:建模是人类对客观世界和抽象事物之间联系的具体描述。在过去的软件开发中,程序员利用手工建模,既耗费了大量的时间和精力又无法对整个复杂系统全面准确的描述,以至于直接影响应用系统的开发质量和速度。而今,我们不再为建模苦恼。
Rational公司曾以Ada语言享誉世界,今天又以面向对象的可视化建模工具Rational ROSE博得了业界一片好评。正如美国《应用程序开发战略》Yourdou教授所评价的:“Rational Rose将对面向对象应用程序开发技术产生巨大影响;使大型开发项目的分析,建模、设计规范化了,……Rational公司已成为OO CASE(面向对象)界的Microsoft。”
Rational ROSE包括了一体化建模语言(UML),OOSE及OMT。其中一体化建模语言(UML)由Rational公司三位世界级面向对象技术专家Grady Booch,Ivar Jacobson和Jim Rumbaugh通过对早期面向对象研究和设计方法的进一步扩展而得来的,为可视化建模软件奠定了坚实的理论基础。
今天,Rational Rose作为Rational公司的又一个旗舰产品,由太平洋技术软件(中国)有限公司和美国Rational Software公司连手引入中国,通过共同建立的Rational(中国)有限公司向中国广大用户推荐,我们希望它能为提高中国计算机应用水平作出应有的贡献!
一、可视化:设计的要害所在
计算机技术的飞速发展创造了人类历史上新的奇迹,但是,随着现代软件工程的复杂程度不断提高,项目失败的可能性也相应的增加了。信息系统的专家们发现当他们面对越来越多的源代码的时候,脑海中系统模型及其内部的联系也越发混沌和模糊了。面对现代社会庞大而繁杂的信息事务,专家们渴望使信息变得简单易懂。
无论何种复杂程度的工程项目,设计都是从建模开始的,设计者通过创建模型和设计蓝图来描述系统的结构。比如说,电子工程设计人员使用惯用标记和示意图进行复杂的系统的最初设计,会计总是在表格上规划公司的财务蓝图,而行政治理人员则常使用组织流图这种可视化的方式来描述所治理的部门。
正是因为感到无法对整个复杂的系统全面地把握,所以我们需要建模。人对复杂性的熟悉是有局限性的,对程序员来说,仅仅几行源代码是不能对整个开发项目提供一个全面熟悉的,而模型则可以使设计者从全局上把握系统及其内部的联系,而不至于陷入每个模块的细节之中。
建模的意义重大,“分而治之”,这是一个古老而有效的概念。可以想象,当我们把非凡复杂而困难的问题细化分解之后,一次只是设法解决其中一个的时候,事情就轻易解决多了。模型的作用就是使复杂的信息关联简单易懂,它使我们轻易洞察复杂堆砌而成的原始数据背后的规律,并能有效地使我们将系统需求映射到软件结构上去。
1.1设计的三层结构
客户机/服务器体系结构的广泛使用预示了系统复杂化的发展趋势,为了解决这一问题,与之相应的三层结构方案(three-tiered)越来越得到了广泛的应用。
传统的两层结构不是“胖客户机”就是“胖服务器”,胖客户机结构将事务处理原则在用户端处理,胖服务器则将之与集成在数据库中,大量的数据流动为维护和编程带来了极大的困难,而且,其中包含的事务处理原则不能与其它应用共享。
三层结构方案是指由用户接口层、事务处理原则层和数据层的应用模型。与传统的两层结构相比,它有着更多的优点:
对应用结构任意一层做出修改时,只对其它层产生极小的影响。
固有的可塑性,三层既可共存于单机之中,也可根据需要相互分开。
公用代码数据库使事务处理规则在系统中共享。
1.2 新的挑战
新的解决方案也相应带来了新的挑战:
开发者必须采用新的思维方式划分和实现应用系统。
可重用的对象必须能被辨识和精炼。
必须决定如何把对象分配给组件和组件在网络(包括Internet)上如何分布。
应用程序必须不断地跟上业务需求的变化。
开发团体必须紧密配合开发应用程序。
基于组件的开发方式正在改变着应用项目的特性。
随着应用系统的开发变得不断复杂,即便是小的应用系统也包括多个分系统和多种组件,如何处理好复杂性的问题是关系到是否能够正确建立系统的要害。
好的软件结构和流程能够帮助开发者正确地解决这一问题,一个完好的结构可使开发过程飒爽流畅,并方便地随着需求的变化而改变。
二、什么是建模?
建模是使你逐层深入解决问题的方法:
确认应用系统的功能需求并为事务处理原则建模
对抽象的对象映射需求,辨认和提供设计模版并创建惯用的模版
分辨和设计对象或划分三层模型的服务
对软件的组成部分映射成对象并设计组件在网络上如何分布
以上工作写入白版文档,建模答应处理发生变化,通过建立抽象概念,设计者就可以有效地处理大型工程和复杂结构。建模建立起应用程序的客户和编程人员之间生动的联系。
三、用Rational ROSE实现建模
创建模型是帮助设计者实现任何复杂的工程项目的有力工具,在软件工程中,它能够把模型与实际应用紧密地联系起来。通过模型与代码之间的映射,可以直接为不同的程序开发环境生成系统结构的框架,通过建立模型和代码间的映射,可以确保代码改进时模型也随之更新了,而且通过模型与代码间的自动连接,建模工具可以确保良好的设计实施。
3.1 何时需要建模?
在应用开发的任何阶段进入建模工作都是有意义的,无可否认的是,在设计最初阶段,应将精力主要用于处理有关应用系统用途、为实现用途应采用何种编程环境,而不是考虑程序的细节,如在屏幕上的什么位置放置按钮等。
在项目开发的中期引入建模也是非常有意义的,Rational Rose既支持正向建模,同时也支持反向建模。Rose通过建立模型使开发人员把握程序开发的方向,准确完成需求分析中所要求的任务。
3.2 Rational ROSE的解决方案
Rational Rose产品为大型软件工程提供了可塑性和柔韧性极强的解决方案:
强有力的浏览器,用于查看模型和查找可重用的组件;
可定制的目标库或编码指南的代码生成机制;
既支持目标语言中的标准类型又支持用户自定义的数据类型;
保证模型与代码之间转化的一致性;
通过OLE连接,Rational Rose图表可动态连接到Microsoft Word中;
能够与Rational Visual Test、SQA Suite和SoDA文档工具无缝集成,完成软件生命周期中的全部辅助软件工程工作;
强有力的正/反向建模工作;
缩短开发周期;
降低维护成本
3.3 一体化建模语言
假如没有一个被普遍认可的国际标准,事情就会陷入混乱之中。Rational ROSE提供对工业标准标记的独家支持,其中包括一体化建模语言(UML),这一即将在工业界成为标准的面向对象建模语言。一体化建模语言(UML)正是为了适应企业级复杂开发中对重用、结构和扩展能力的严格要求而设计的建模语言。
一体化建模语言(UML)是早期面对对象研究和设计方法的进一步扩展,由世界级面向对象技术知名专家Grady Booch,Ivar Jacobson和Jim Rumbaugh对Booch标记、OOSE标记和OMT标记理论的研究基础上提出的,为可视化建模软件奠定了坚实的理论基础。一体化建模语言对建模语言提供了以下支持:
使用事件模型
类和对象模型
组件模型
分布处理模型
Rational Rose产品在支持UML的同时,也支持OOSE及OMT。
3.4 Raional ROSE对大型复杂项目的支持
Rational Rose支持绝大多数软件工程师常见的个人/公共工作平台。直至所编制软件共享之前,软件工程师都可以在个人工作平台修改自己的源代码和已建立的模型。
在公共平台,通过在配置治理和版本控制系统(CMVC),模型改变可以共享,换句话说,其他开发者可以观察和利用这些改变。
Rational ROSE能够与主要的CMVC工具集成,包括Rational Summit/CM,Microsoft SourceSafe,PVCS,ClearCase,SCCS以及CVS/RCS.
Rational ROSE也可以支持企业级数据库,同时支持Unisys的通用的存储库(UREP)和Microsoft的存储库。
Rational ROSE在支持框架结构的同时,还支持可重用类组件部分,将可重用基类放入公控单元整个团队或其他工作组就可以使用它们了。
四、Rational Rose系列产品
Rational Rose可视化开发工具与多种开发环境无缝集成,目前所支持的开发语言包括:Visual Basic、Java、PowerBuilder、C++、Ada、Smalltalk、Fort等。
Rational Rose的所有产品支持关系型数据库逻辑模型的生成,包括:Oracle 7、Sybase、SQL Server、Watcom SQL和ANSI SQL,其结果可用于数据库建模工具生成逻辑模型和概念模型,如:LogicWorks Erwin和Powersoft的S-Designor。
Rational Rose系列产品可以支持:
工业级的功用分析
存储库和个人工作平台
CORBA-2/IDL的正向工程
用户自由选择Booch’93,OMT和UML标记
扩充的接口答应Rational ROSE既充当OLE服务器又充当OLE控制器。
ROSE脚本是一种与VBA兼容的脚本语言并且兼容Rose API,答应你创建GUI,功能单元和全定制的报告以及控制其他应用。
支持的平台Windows 95、NT、Alpha NT、SGI、Solaris、AIX、Digital UNIX和HP-UX
五、一体化建模语言(UML)
一体化建模语言(Unified Modeling Language)是Rational软件公司世界级知名专家Grady Booch、Ivar Jacobson和Jim Rumbaugh三人联合开发成功的。开发过程中,得到了其他一些学术领先的方法论学者、软件厂商及众多用户的帮助和支持。在Booch标记法、OMT标记法及OOSE/Jacobson标记法得到广泛应用的基础上,UML将面向对象的分析设计技术又向前推进了一大步。
UML为应用程序建模语言提供了以下支持:
使用事件模型
使用事件模型已成为工业领域首选的分析技术。使用事件确定了商业运行过程中的商业规则和任务,非凡是解释了这些任务是怎样由一个应用程序系统来支持的。
使用事件技术满足了系统的功能要求,使用户能够将这些要求映射到对象模型中。
使用对象技术有效的架起了系统分析人员、用户及应用程序开发人员之间交流沟通的桥梁。
类和对象模型类和对象模型
商业对象确定了应用程序的结构基础,用户可以在应用领域里重复使用商业对象,也可以将商业对象从使用事件或应用领域中直接识别并提取出来。
UML既支持基类和对象模型,也支持高级的类和对象模型。通过一体化建模语言,用户可以用类模型来确定商业对象和应用程序结构,可以建立对象,作为类的实例来显示类是怎样活跃地交互作用并提供使用事件和应用行为的。对象模型确定各种各样的类所要求的行为,以确保使用事件和商业规则能得到正确的支持。
类模型确定商业对象和应用对象的结构细节,类奠定了代码生成和数据库定义生成的基础。
类的定义及其相互关系被集中在程序包中,以确定应用程序的结构。程序可能是成套的,其相互间的关系决定了应用程序的独立性及程序结构的易变性。
组件模型
组件模型是源代码的实际单元,也就是组成应用程序的可执行单元。类被分配到组件中,以提供可重复使用的应用程序结构部件。这些组件将为即插即用的应用程序结构奠定基础。
一体化建模语言中的重复使用在前期编译阶段和后期编译阶段都的到支持。前期的支持有可重复使用的类或架构,后期则有组件装配。
分布处理模型
处理模型可以模拟演示应用程序是如何被映射到一个分布处理结构中的。
各种网络拓扑结构都可以模拟出来,包括客户/服务器、三层结构、Internet/Intranet以及广域交流网络中拓扑结构的节点,以及这些节点是怎样相互连接、应用程序在网络中是怎样分布的。