UML 基础与 Rose 建模案例(第3版)

978-7-115-27389-5
作者: 吴建 韩建文 汪杰
译者:
编辑: 贾鸿飞

图书目录:

详情

本书在第2版的基础上,充分吸取了读者宝贵的反馈意见和建议,更新了部分内容。书中的基础部分,对软件工程思想、UML的相关概念等进行了详细的介绍;案例部分,则对UML建模的过程进行了剖析;附录中的内容则是为了便于读者查询。

图书摘要

UML基础与Rose建模案例(第3版)
●吴建 郑潮 汪杰 编著
人民邮电出版社

北京

前言

面向对象的建模语言出现在20世纪70年代,随着编程语言的多样化以及软件产品在更多领域的应用,当时的软件工程学者开始分析与设计新的软件方法论。在这期间出现了超过 50种的面向对象方法,对于这些不同符号体系的开发方法,软件设计人员和程序员往往很难找到完全适合他们的建模语言,而且这也妨碍了不同公司,甚至是不同项目开发组间的交流与经验共享。因此,有必要确立一款标准统一的、能被绝大部分软件开发和设计人员认可的建模语言, UML应运而生。1997年11月17日,UML1.1被OMG(对象管理组织)采纳,正式成为一款定义明确、功能强大、受到软件行业普遍认可、可适用于广泛领域的建模语言。

如今,UML已经成为面向对象软件系统分析设计的必备工具,也是广大软件系统设计人员、开发人员、项目管理员、系统工程师和分析员必须掌握的基础知识。

本书是《UML基础与Rose建模案例》的第3版。在第1版和第2版面市后的几年时间里,本书受到了广大读者的欢迎。许多热心读者向我们提出了宝贵的意见和建议;很多高校将第1版选作计算机或软件工程相关专业的教材,并在实践中总结出Rose建模方面的教学经验反馈给我们,在此向他们表示衷心的感谢。

本书在第2版的基础上做了较大改动,增加了许多新的内容,主要的特点如下。

扩充丰富了UML 知识,在UML1.4 的基础上,介绍了UML 2.0 的知识。

本版将以软件Rose 2007 结合UML 进行讲解,并进一步细化Rose 操作。

调整优化了书的整体结构,使得章节安排更加合理。

增加了大量的UML小案例以方便读者学习理解。

写法更加优化,表达更加清晰、循序渐进,通俗易懂。

修正了第2版中的一些错误。

为了方便教学使用,本书配备了教学大纲和课件,如果需要,可以访问人民邮电出版社的网站www.ptpress.com.cn获取,或者发E-mail至jiahongfei@ptpress.com.cn索取。

本书主要由吴建、郑潮和汪杰编写,为本书提供资料的还有韩建文、付冰、何贤辉、胡标、姜琴英、厉蒋和李功等。在编写过程中,我们力求精益求精,但本书难免存在一些不足之处,如果读者在学习中遇到问题,可以发E-mail到jiahongfei@ptpress.cn与我们联系。

编者

2012年1月

第1章 软件工程与UML概述

本章将对软件工程和UML进行简要的介绍,共分两节,每节介绍一个主题:软件工程概述、UML概述。通过对本章的阅读,读者可以对软件和UML有一个总体的认识。

1.1 软件工程概述

1.1.1 软件工程的发展历史

从20世纪60年代中期到70年代中期,软件行业进入了一个大发展时期。这一时期软件作为一种产品开始被广泛使用,同时出现了所谓的软件公司。这一时期的软件开发方法仍然沿用早期的自由软件开发方式。但是随着软件规模的急剧膨胀,软件的需求日趋复杂,软件的性能要求相对变高,随之而来的软件维护难度也越来越大,开发的成本相应增加,导致失败的软件项目比比皆是,这样的一系列问题导致了“软件危机”。

1968 年,前北大西洋公约组织的科技委员会召集了一批一流的程序员、计算机科学家以及工业界人士共商对策,通过借鉴传统工业的成功作法,他们主张通过工程化的方法开发软件来解决软件危机,并冠以“软件工程”(Software Engineering)这一术语。30 余年来,尽管软件行业的一些毛病仍然无法根治,但软件行业的发展速度却超过了任何传统工业,并未出现真正的软件危机。如今软件工程已成了一门学科。

软件工程是一门建立在系统化、规范化、数量化等工程原则和方法上的,关于软件开发各个阶段的定义、任务和作用的工程学科。软件工程包括两方面内容:软件开发技术和软件项目管理。软件开发技术包括软件开发方法学、软件工具和软件工程环境;软件项目管理包括软件度量、项目估算、进度控制、人员组织、配置管理和项目计划等。

1.1.2 软件工程的生命周期

软件开发是一套关于软件开发各阶段的定义、任务和作用的,建立在理论上的一门工程学科。它对解决“软件危机”,指导人们利用科学和有效的方法来开发软件,提高及保证软件开发的效率和质量起到了一定的作用。

经典的软件工程思想将软件开发分成以下5 个阶段:需求捕获(Requirement Capture)阶段、系统分析与设计(System Analysis and Design)阶段、系统实现(System Implementation)阶段、测试(Testing)阶段和维护(Maintenance)阶段。

(1)需求捕获(Requirement Capture)阶段

需求捕获阶段就是通常所说的开始阶段。实际上,真正意义上的开始阶段要做的是选择合适的项目——立项阶段。其实,软件工程中的许多关于思想的描述都是通俗易懂的。立项阶段,顾名思义,就是从若干个可以选择的项目中选择一个最适合自己的项目的阶段。这个选择的过程是至关重要的,因为它将直接决定整个软件开发过程的成败。通常情况下,要考虑几个主要的因素:经济因素(经济成本、受益等)、技术因素(可行性、技术成本等)和管理因素(人员管理、资金运作等)。

在立项之后,才真正进入了软件开发阶段(当然,这里所说的是广义的软件开发,狭义的软件开发通常指的是编码)。需求捕获是整个开发过程的基础,也直接影响着后面的几个阶段的进展。纵观软件开发从早期纯粹的程序设计到软件工程思想的萌发产生和发展的全过程,不难发现,需求捕获的工作量在不断增加,其地位也随之不断提升。这一点可以从需求捕获在整个开发过程中所占的比例(无论是时间、人力,还是资金方面)不断地提高上可以看出。

(2)系统分析与设计(System Analysis and Design)阶段

系统分析与设计包括分析和设计两个阶段,而这两个阶段是相辅相成、不可分割的。通常情况下,这一阶段是在系统分析员的领导下完成的,系统分析员不仅要有深厚的计算机硬件与软件的专业知识,还要对相关业务有一定的了解。系统分析通常是与需求捕获同时进行,而系统设计一般是在系统分析之后进行的。

(3)系统实现(System Implementation)阶段

系统实现阶段也就是通常所说的编码(Coding)阶段。在软件工程思想出现之前,这基本上就是软件开发的全部内容,而在现代的软件工程中,编码阶段所占的比重正在逐渐缩小。

(4)测试(Testing)阶段

测试阶段的主要任务是通过各种测试思想、方法和工具,使软件的 Bug 降到最低。微软(Microsoft)宣称他们采用零Bug发布的思想确保软件的质量,也就是说只有当测试阶段达到没有Bug时他们才将产品发布。测试是一项很复杂的工程。

(5)维护(Maintenance)阶段

在软件工程思想出现之前,这一阶段是令所有与之相关的角色头疼的。可以说,软件工程思想很大程度上是为了解决软件维护的问题而提出的。因为,软件工程有3大目的——软件的可维护性、软件的可复用性和软件开发的自动化,可维护性就是其中之一,而且软件的可维护性是复用性和开发自动化的基础。在软件工程思想得到迅速发展的今天,虽然软件的可维护性有了很大的提高,但目前软件开发中所面临的最大的问题仍是维护问题。每年都有许多软件公司因为无法承担对其产品的高昂的维护成本而宣布破产。

值得注意的是,软件工程主要讲述软件开发的道理,基本上是软件实践者的成功经验和失败教训的总结。软件工程的观念、方法、策略和规范都是朴实无华的,一般人都能领会,关键在于运用。不可以把软件工程方法看成是“诸葛亮的锦囊妙计”——在出了问题后才打开看看,而应该事先掌握,预料将要出现的问题,控制每个实践环节,防患于未然。

1.2 建模的目的

在软件界有这么一条真理:一个开发团队首要关注的不应是漂亮的文档、世界级的会议、响亮的口号或者华丽的源码,而是如何满足用户和项目的需要。

为了保证软件满足要求,开发组织必须深入到使用者中间了解对系统的真实需求;为了开发具有持久质量保证的软件,开发组织必须建立一个富有弹性的、稳固的结构基础;为了快速、高效地开发软件并使无用和重复开发最小化,开发组织必须具有精干的开发人员、正确的开发工具和合适的开发重点。为了实现以上要求,在对系统生存周期正确估计的基础上,开发组织必须具有能够适应商业和技术需求变化的健全的开发步骤。

建模是所有建造优质软件活动中的中心一环。本节主要介绍建模的优点、建模的重要性、建模中的4条原则和面向对象建模。

1.2.1 建模的重要性

1.一个揭示建模重要性的例子

如果你想给自己的爱犬盖个窝,开始的时候你的手头上有一堆木材、一些钉子、一把锤子、一把木锯和一把尺子。在开工之前只要稍微计划一下,你就可以几个小时之内,在没有任何人帮助的情况下盖好一座狗窝。只要它容得下你的爱犬、能遮风挡雨就可以了。就算差一点,只要你的狗不那么娇贵也是说得过去的。

如果你想为你的家庭建一座房子,开始的时候你的手头上也有一堆木材、一些钉子和一些基本的工具。但是这将要占用你很长的时间,因为你家庭成员的要求肯定要比你的狗高出很多。在这种情况下,除非你长期从事这项工作,否则最好在打地基之前好好地规划一下。首先,要为将要建造的房子设计一幅草图。如果想建造一座满足家庭需要的高质量的房屋,你需要画几张蓝图,考虑各个房间的用途以及照明取暖设备的布局。做好以上工作以后,你就可以对工时和工料做出合理的估计。尽管以人的能力可以独自盖一座房子,但是你会发现同其他人合作会更有效率,这包括请人帮忙或者买些半成品材料。只要坚持你的计划并且不超过时间和财力的限制,你的建造计划就成功了一多半。

如果你想建造一幢高档的写字楼,那么刚刚开始就准备好材料和工具是无比愚蠢的行为,因为你可能正在使用其他人的钱,而这些人将决定建筑物的大小、形状和样式。通常情况下,投资人甚至会在开工以后改变他们的想法,你需要做额外的计划,因为失败的代价巨大。你有可能只是很多个工作组之一,所以你的团队需要各种各样的图纸和模型以便同其他小组进行沟通。只要人员、工具配置得当,按照计划施工,你肯定会交付令人满意的工作。如果你想在建筑行业长久地干下去,你不得不在客户的需求和实际的建筑技术之间找到好的契合点。

2.软件的建模

许多软件开发组织总是像建造狗窝一样进行软件开发,而且他们还妄图开发出高质量的软件产品。这样的开发模式或许有些时候会奏效,有时候还可能开发出令用户赞叹的软件。但是,通常情况下都会失败。

如果你像盖房子或者盖写字楼一样开发软件,问题就不仅仅是写代码,而是怎么样写正确的代码和怎么样少写代码了。这就使得高质量的软件开发变成了一个结构、过程和工具相结合的问题。所以说,如果没有对结构、过程和工具加以考虑,所造成的失败是惨重的。每个失败的软件项目都有其特殊的原因,但是成功的项目在许多方面是相似的。软件组织获得成功的因素有很多,但是一个基本的因素就是对建模的使用。

3.模型的实质

那么模型究竟是什么?简而言之,模型是对现实的简化。

模型提供系统的蓝图,包含细节设计,也包含对系统的总体设计。一个好的模型包括重要的因素,而忽略不相干的细节。每一个系统可以从不同的方面使用不同的模型进行描述,因此每个模型都是对系统从语义上近似的抽象。模型可以是结构的、侧重于系统的组织,也可以是行为的、侧重于系统的动作。

4.建模的目标

建立模型可以帮助开发者更好地了解正在开发的系统。通过建模,要实现以下4个目标。

(1)便于开发人员展现系统。

(2)允许开发人员指定系统的结构或行为。

(3)提供指导开发人员构造系统的模板。

(4)记录开发人员的决策。

建模不是复杂系统的专利,小的软件开发也可以从建模中获益。但是,越庞大复杂的项目,建模的重要性越大。开发人员之所以在复杂的项目中建立模型,是因为没有模型的帮助,他们不可能完全地理解项目。

通过建模,人们可以每次将注意力集中在一点,这使得问题变得容易。这就是 Edsger Dijkstra提出的“分而治之”的方法:通过将问题分割成一系列可以解决的、较小的问题来解决复杂问题。

5.通用建模语言的必要性

对比项目的复杂度会发现,越简单的项目,使用规范建模的可能性越小。实际上,即便是最小的项目,开发人员也要建立模型,虽然说很不规范。开发者可以在一块黑板或者一小片纸上概略地描述一下系统的某个部分,团队可以使用 CRC(类-责任-协作者模型)卡片来验证设计的可行性。这些模型本身没有任何错误,只要有用就尽可能地使用。但是这种不正规的模型通常情况下很难被其他开发者所共享,因为太有个性色彩了。正因为这样,通用建模语言的存在成为必然。

每个项目都可以从建模中受益。甚至在自由软件领域,模型可以帮助开发小组更好地规划系统设计,更快地开发。所有受人关注的有用的系统都有一个随着时间的推移越来越复杂的趋势,如果不建立模型,那么失败的可能性就和项目的复杂度成正比。

1.2.2 建模四原则

在工程学科中,对模型的使用有着悠久的历史,人们从中总结出了4条基本的建模原则。

(1)选择建立什么样的模型对如何发现和解决问题具有重要的影响。换句话说,就是认真选择模型。正确的模型有助于提高开发者的洞察力,指导开发者找到主要问题;而错误的模型会误导开发者将注意力集中在不相关的问题上。

(2)每个模型可以有多种表达方式。假设你正在建一幢高楼,有时你需要一张俯视图,以使参观者有一个直观的印象;有时你又需要认真考虑最低层的设计,例如铺设自来水管或者电线。

相同的情况也会在软件模型中出现。有时你想要一个快速简单的、可实行的用户接口模型;其他时候你又不得不进入底层与二进制数据打交道。无论如何,使用者的身份和使用的原因是评判模型好坏的关键。分析者和最终的用户关心“是什么”,而开发者关心“怎么做”。所有的参与者都想在不同的时期、从不同的层次了解系统。

(3)最好的模型总是能够切合实际。一幢高楼的物理模型如果只有有限的几个数据,那么它不可能真实地反映现实的建筑;一架飞机的数学模型如果只考虑理想的飞行条件和良好的制造技术,那么很可能掩盖实际飞行中的致命缺陷。避免以上情况的最好办法就是让模型与现实紧密联系。所有的模型都是简化的现实,关键的问题是必须保证简化过程不会掩盖任何重要的细节。

(4)孤立的模型是不完整的。任何好的系统都是由一些几乎独立的模型拼凑出来的。就像建造一幢房子一样,没有一张设计图可以包括所有的细节。至少楼层平面图、电线设计图、取暖设备设计图和管道设计图是需要的。而这里所说的“几乎独立”是指每个模型可以分开来建立和研究,但是他们之间依然相互联系。就像盖房子一样,电线设计图可以独立存在,但是在楼层平面图甚至是管道图中仍然可以看到电线的存在。

1.2.3 面向对象建模

全世界的工程师建造了多种多样的模型,每一种模型建立的方式都是不同的,而且都有其侧重点。

在软件业中,建立模型的方法多种多样,两种最常用的方法是:基于算法方法建模和面向对象建模。

传统的软件开发采用基于算法的方法。在这种方法中,主要的模块是程序或者函数,这使得开发人员将注意力集中在控制流和将庞大的算法拆分成各个小块上。虽然说这种方法本身并没有错误,但是随着需求的变化和系统的增长,运用这种方法建立起来的系统很难维护。

现代的软件开发采用面向对象的方法。在这种方法中,主要的模块是对象或者类。对象通常是从问题字典或者方法字典中抽象出来的,类是对一组具有共同特点的对象的描述。每一个对象都有自己的标识、状态和行为。

比如考虑一个包含界面、中间层和数据库的简单的订货系统。在用户界面层上,有一些具体的对象,例如按钮、菜单以及对话框。在数据库中,也有一些具体的对象,例如包含客户、产品和订单信息的表。在中间层,存在如事务或交易的规则和客户、产品、订单等问题实体的高层视图。面向对象方法之所以是现在软件开发的主流,原因非常简单,因为它已经被证实在任何情况下都能很好的建模。而且,大多数现代的编程语言、操作系统和编程工具都是不同形式的面向对象的体现。

1.3 UML概述

1.3.1 UML 的历史

面向对象的分析与设计(OOA&OOD)方法的发展在20世纪80年代末至90年代中出现了一个高潮,UML(Unified Modeling Language,统一建模语言)是这个高潮的产物。它不仅统一了Booch、Rumbaugh和Jacobson的表示方法,而且在此基础上有了进一步的发展,并最终统一为大众所接受的标准建模语言。

公认的面向对象建模语言出现于20世纪70年代中期。从1989~1994年,其数量从不到10种增加到了50多种。在众多的建模语言中,语言的创造者努力宣传自己的产品,并在实践中不断完善。但是,使用面向对象方法的用户并不了解不同建模语言的优缺点及相互之间的差异,因而很难根据应用特点选择合适的建模语言,于是爆发了一场“方法大战”。20 世纪 90年代中期,一批新方法出现了,其中最引人注目的是Booch 1993、OOSE 和OMT-2 等。

Booch是面向对象方法最早的倡导者之一,他提出了面向对象软件工程的概念。1991年,他将以前面向Ada 的工作扩展到整个面向对象设计领域。Booch 1993 比较适合于系统的设计和构造。Rumbaugh等人提出了面向对象的建模技术(OMT)方法,采用了面向对象的概念,并引入各种独立于语言的表示符。这种方法用对象模型、动态模型、功能模型和用例模型共同完成对整个系统的建模,所定义的概念和符号可用于软件开发的分析、设计和实现的全过程,软件开发人员不必在开发过程的不同阶段进行概念和符号的转换。OMT-2 特别适用于分析和描述以数据为中心的信息系统。Jacobson于1994年提出了OOSE方法,其最大特点是面向用例(Use Case),并在用例的描述中引入了外部角色的概念。用例的概念是精确描述需求的重要武器,但用例贯穿于整个开发过程,包括对系统的测试和验证。OOSE比较适合支持商业工程和需求分析。此外,还有Coad/Yourdon 方法,即著名的OOA/OOD,它是最早的面向对象的分析和设计方法之一,该方法简单、易学,适合于面向对象技术的初学者使用,但由于该方法在处理能力方面的局限,目前已很少使用。

概括起来,首先,面对众多的建模语言,用户由于没有能力区别不同语言之间的差别,因此很难找到一种比较适合其应用特点的语言;其次,众多的建模语言实际上各有千秋;最后,虽然不同的建模语言大多雷同,但仍存在某些细微的差别,极大地妨碍了用户之间的交流。因此在客观上,有必要在精心比较不同的建模语言优缺点及总结面向对象技术应用实践的基础上,组织联合设计小组,根据应用需求,取其精华,去其糟粕,求同存异,统一建模语言。

1994年10 月,Grady Booch 和Jim Rumbaugh 首先将Booch 93 和OMT-2 统一起来,并于1995年10 月发布了第一个公开版本,称之为统一方法UM 0.8(Unitied Method)。1995 年秋, OOSE 的创始人Jacobson 加盟到这一工作中。经过Booch、Rumbaugh 和Jacobson 3 人的共同努力,于1996 年6 月和10 月分别发布了两个新的版本,即UML 0.9 和UML 0.91,并将UM重新命名为UML(Unified Modeling Language)。UML 的开发者倡议并成立了UML 成员协会,以完善、加强和促进UML的定义工作。当时的成员有DEC、HP、I-Logix、Itellicorp、IBM、ICON Computing、MCI Systemhouse、Microsoft、Oracle、Rational Software、TI 以及Unisys。UML 成员协会对UML 1.0 及UML 2.0 的定义和发布起了重要的促进作用。

1.3.2 UML 包含的内容

首先,UML融合了Booch、OMT和OOSE方法中的基本概念,而且这些基本概念与其他面向对象技术中的基本概念大多相同,因而,UML必然成为这些方法以及其他方法的使用者乐于采用的一种简单一致的建模语言;其次,UML不是上述方法的简单汇合,而是在这些方法的基础上广泛征求意见,集众家之长,几经修改而完成的,UML扩展了现有方法的应用范围;最后,UML是标准的建模语言,而不是标准的开发过程。

作为一种建模语言,UML的定义包括UML语义和UML表示法两个部分。

(1)UML语义

描述基于UML的精确元模型定义。元模型为UML的所有元素在语法和语义上提供了简单、一致和通用的定义性说明,使开发者能在语义上取得一致,消除了因人而异的表达方法所造成的影响。此外UML还支持对元模型的扩展定义。

(2)UML表示法

定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。这些图形符号和文本所表达的是应用级的模型,在语义上它是UML元模型的实例。

1.3.3 UML 的定义

UML是一种面向对象的建模语言。它的主要作用是帮助用户对软件系统进行面向对象的描述和建模(建模是通过将用户的业务需求映射为代码,保证代码满足这些需求,并能方便地回溯需求的过程);它可以描述这个软件从需求分析直到实现和测试的开发全过程。UML 通过建立各种联系,如类与类之间的关系、类/对象怎样相互配合实现系统的行为状态等(这些都称为模型元素),来组建整个结构模型。UML提供了各种图形,比如用例图、类图、时序图、协作图和状态图等,来把这些模型元素及其关系可视化,让人们可以清楚容易地理解模型,可以从多个视角来考察模型,从而更加全面地了解模型,这样同一个模型元素可能会出现在多个UML图中,不过都保持相同的意义和符号。

1.UML的组成

UML 由视图(View)、图(Diagram)、模型元素(Model Element)和通用机制(General Mechanism)等几个部分组成。

视图(View)是表达系统的某一方面特征的UML建模元素的子集;视图并不是图,它是由一个或多个图组成的对系统某个角度的抽象。在建立一个系统模型时,通过定义多个反映系统不同方面的视图,才能对系统做出完整、精确的描述。

图(Diagram)是模型元素集的图形表示,通常是由弧(关系)和顶点(其他模型元素)相互连接构成的。UML通常提供9种基本的图,把这几种基本图结合起来就可以描述系统的所有视图。

模型元素(Model Element)代表面向对象中的类、对象、接口、消息和关系等概念。UML中的模型元素包括事物和事物之间的联系,事物之间的关系能够把事物联系在一起,组成有意义的结构模型。常见的联系包括关联关系、依赖关系、泛化关系、实现关系和聚合关系。同一个模型元素可以在几个不同的UML图中使用,不过同一个模型元素在任何图中都保持相同的意义和符号。

通用机制(General Mechanism)用于表示其他信息,比如注释、模型元素的语义等。另外,UML 还提供扩展机制(Extension Mechanism),使UML能够适应一个特殊的方法/过程、组织或用户。

UML是用来描述模型的,通过模型来描述系统的结构或静态特征,以及行为或动态特征。

为方便起见,用视图来划分系统各个方面,每一个视图描述系统某一方面的特征。这样一个完整的系统模型就由许多视图来共同描述。

UML中的视图大致可以分为如下5种。

(1)用例视图(Use Case View),强调从用户的角度看到的或需要的系统功能,是被称为“参与者”的外部用户所能观察到的系统功能的模型图。

(2)逻辑视图(Logical View),展现系统的静态或结构组成及特征,也称为结构模型视图(Structural Model View)或静态视图(Static View)。

(3)并发视图(Concurrency View),体现了系统的动态或行为特征,也称为行为模型视图(Behavioral Model View)或动态视图(Dynamic View)。

(4)组件视图(Component View),体现了系统实现的结构和行为特征,也称为实现模型视图(Implementation Model View)。

(5)配置视图(Deployment View),体现了系统实现环境的结构和行为特征,也称为环境模型视图(Environment Model View)或物理视图(Physical View)。

视图是由图组成的,UML提供了9种不同的图。

(1)用例图(Use Case Diagram),描述系统功能。

(2)类图(Class Diagram),描述系统的静态结构。

(3)对象图(Object Diagram),描述系统在某个时刻的静态结构。

(4)时序图(Sequence Diagram),按时间顺序描述系统元素间的交互。

(5)协作图(Collaboration Diagram),按照时间和空间顺序描述系统元素间的交互和它们之间的关系。

(6)状态图(State Diagram),描述了系统元素的状态条件和响应。

(7)活动图(Activity Diagram),描述了系统元素的活动。

(8)组件图(Component Diagram),描述了实现系统的元素的组织。

(9)配置图(Deployment Diagram),描述了环境元素的配置,并把实现系统的元素映射到配置上。

提示:在UML 2.0中,将会提供13种图,本书将会在附录A中介绍。

2.UML的建模机制

UML有两套建模机制:静态建模机制和动态建模机制。静态建模机制包括用例图、类图、对象图、包、组件图和配置图。动态建模机制包括消息、状态图、时序图、协作图、活动图。

对于本节中的诸多概念,读者暂时只需了解即可,在后面的章节中将会结合实例进行详细的介绍。

1.3.4 UML 的应用领域

UML的目标是以面向对象图的方式来描述任何类型的系统。其中最常用的是建立软件系统的模型,但它同样可以用于描述非软件领域的系统,如机械系统、企业机构或业务过程,以及处理复杂数据的信息系统、具有实时要求的工业系统或工业过程等。

总之,UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行建模。此外,UML适用于系统开发过程中从需求规格描述到系统完成后测试的不同阶段。在需求分析阶段,可以用用例来捕获用户需求。通过用例建模,描述对系统感兴趣的外部角色及其对系统(用例)的功能要求。分析阶段主要关心问题域中的主要概念(如抽象、类和对象等)和机制,需要识别这些类以及它们相互间的关系,并用UML类图来描述。为实现用例,类之间需要协作,这可以用UML动态模型来描述。在分析阶段,只对问题域的对象(现实世界的概念)建模,而不考虑定义软件系统中技术细节的类(如处理用户接口、数据库、通信和并行性等问题的类)。这些技术细节将在设计阶段引入,设计阶段将为构造阶段提供更详细的规格说明。

编程(构造)是一个独立的阶段,其任务是用面向对象编程语言将来自设计阶段的类转换成实际的代码。在用UML建立分析和设计模型时,应尽量避免考虑把模型转换成某种特定的编程语言。因为在早期阶段,模型仅仅是理解和分析系统结构的工具,过早考虑编码问题十分不利于建立简单、正确的模型。

UML模型还可作为测试阶段的依据。系统通常需要经过单元测试、集成测试、系统测试和验收测试。不同的测试小组使用不同的UML图作为测试依据:单元测试使用类图和类规格说明;集成测试使用部件图和协作图;系统测试使用用例图来验证系统的行为;验收测试由用户进行,以验证系统测试的结果是否满足在需求捕获阶段所确定的需求。

第2章 Rational Rose使用

本章主要介绍建模工具Rational Rose 2007 的安装以及使用。

2.1 Rational Rose 概论

无论何种复杂程度的工程项目,设计都是从建模开始的,设计者通过创建模型和设计蓝图来描述系统的结构。比如,电子工程设计人员使用惯用标记和示意图进行复杂系统的最初设计,会计总是在表格上规划公司的财务蓝图,而行政管理人员则常使用组织流图这种可视化的方式来描述所管理的部门。

建模的意义重大,“分而治之”是一个古老而有效的概念。可以想象,把特别复杂而困难的问题细化分解之后,一次只是设法解决其中一个,事情就变得容易多了。模型的作用就是使复杂的信息关联简单易懂,它使使用者容易洞察复杂的原始数据背后的规律,并能有效地将系统需求映射到软件结构上去。

2.1.1 常用UML建模工具

工欲善其事必先利其器,有了好的建模理论必须要有好的建模工具。当前很多工具都能够实现UML建模,下面简单介绍一些常用的建模工具。

(1)StarUML(简称SU)是一种生成类图和其他类型的统一建模语言(UML)图表的工具。StarUML是一个开源项目之一,发展快、灵活、可扩展性强。

(2)ArgoUML是一个用于绘制UML图的应用软件,它用Java构造,并遵守开源的BSD协议。因为它本身由Java构建的缘故,所以ArgoUML能运行在任何支持Java的平台上。

(3)Frame UML 是一个免费的 UML 工具,支持 UML 2.x。可以在 Windows 2000/XP/Vista/Windows 7中运行,支持12 种图,但不包括对象图,因为对象图可以使用其他图替代。

(4)UMLet是一个开放源代码轻量级UML建模工具。UMLet 能够快速建模,并且能够导出各种格式如SVG、JPG、PDF 以及LaTeX-friendly EPS。可在Windows、OS X、Linux 上单独运行,或者以使用Eclispe插件的方式运行。

(5)Papyrus UML 是一个开放源代码基于Eclipse 环境的UML 2.x 建模工具。

(6)Rational Rose 建模工具。

Rational Rose 是由美国的Rational公司开发的一种面向对象的可视化建模工具。利用这个工具,可以建立用UML描述的软件系统模型,而且可以自动生成和维护C++、Java、Visual Basic和Oracle等语言和系统的代码。2002年,Rational软件公司被IBM公司收购,Rational成为IBM的第五大品牌。

随着软件的不停发展,目前Rational Rose 已经发展了多个版本。其中最新版本为Rational Software Architect(RSA)。但是该软件体积比较庞大,同时对机器要求比较高,本书将以Rational Rose 2007 版本作为本书的教学软件(该版本支持UML 2.x),在此版本之前使用比较广泛的是Rational Rose 2003 版本,读者可以根据需要来选择安装。

2.1.2 Rational Rose的优势

1.保证模型和代码高度一致

Rose可以真正意义上地实现正向、逆向和双向工程。在正向工程中,Rose可以为模型生成相应的代码;在逆向工程中,Rose 可以从用户原来的软件系统导出该系统的模型;而在双向工程中,Rose可以真正实现模型和代码之间的循环工程,从而保证模型与代码的高度一致,并通过保护开关使得用户在双向工程中不会丢失或覆盖已经开发出的任何代码。

2.支持多种语言

Rose 本身能够支持的语言包括:C++、Visual C++、Java、Smalltalk、Ada、Visual Basic、PowerBuilder和Forte,也能够为CORBA 应用产生接口定义语言IDL 和为数据库应用产生数据库描述语言DDL。

同时,还有超过150个的Rose-Link软件厂商为Rose提供对其他语言和领域的支持。这也从一个侧面反映出Rose在OOA和OOD领域应用的广泛性。

为了最大程度地给Rose用户提供便利和实惠,Rose将产品划分成企业版和专家版,用户可以根据自己在开发语言方面的需要灵活选择不同的版本。

3.为团队开发提供强有力的支持

Rose提供了两种方式来支持团队开发:一种是采用SCM(软件配置管理)的团队开发方式;另一种是没有SCM情况下的团队开发方式。这两种方式为用户提供了极大的灵活性,用户可以根据开发的规模和开发人员数目以及资金情况等选择一种方式进行团队开发。

一般情况下,建议用户采用具有SCM的团队开发方式,这样能够在配置管理工具对大规模并行团队开发的良好支持下进行模型的开发,同时也利于模型版本的管理,为将来模型的重用奠定坚实的基础。

进行大规模并行团队开发时,Rose不仅支持SCM工具对整个模型进行管理,而且用户可以将模型中的包映射成控制单元,并使用SCM工具管理这些控制单元,而每个控制单元本身可以分派给不同的开发人员进行并行开发。

Rose与ClearCase和SourceSafe(微软产品)等SCM工具实现内部集成,只要遵守微软版本控制系统的标准 API-SCC(源代码控制),API 的任何版本控制系统均可以集成到 Rose中作为配置管理工具。

总之,Rational Rose 在团队开发方面的优势有以下几点:

(1)支持模型的团队并行开发。模型在Rose中可以被分解成控制单元,进行相应的版本控制。

(2)通过虚拟路径映射机制支持模型文件或控制单元在工作空间中的移动或复制。

(3)通过与标准版本控制系统的集成,支持团队管理多个不同项目的模型。

(4)提供一个可视化的分辨工具,支持归并功能并可报告控制单元间的差异。

(5)与Microsoft Repository 有很好的集成,支持将Rose 模型发布到Microsoft Repository中,以方便另一建模工具将此模型输入,从而增加了模型的可重用性。

(6)由于提供了在 Rational Rose 中增加框架的功能,使得团队能够重用在早期建模工作中开发的众多设计模型。

4.支持UML

Rational麾下拥有三位面向对象技术的大师:Grady Booch、James Rumbaugh、Ivar Jacobson,由他们共同创造的UML统一了面向对象的建模方法,消除了对象建模的差别。作为面向对象开发的行业标准语言,UML 是唯一可以在UNIX 和Windows 平台上共用的标准语言。

5.支持模型的Internet发布

Rose的Internet Web Publisher 能够创建一个基于Web 的Rose模型的HTML 版本,使得其他人员能够通过标准的浏览器如IE浏览器或者Chrome来浏览该模型。

6.生成使用简单且定制灵活的文档

Rose 本身提供了直接产生模型文档的功能,但是如果利用 Rational 文档生成工具 SoDA提供的模型文档模板就可以轻松自如地自动生成OOA和OOD阶段所需的各种重要文档。值得注意的是,无论是Rose自身还是SoDA所产生的文档均为Word文档,并且在Rose中可以直接启动SoDA,而SoDA与Word是完全无缝集成的。

7.支持关系型数据库的建模

利用Rose 能够进行数据库的建模。Rose 能够为ANSI、Oracle、SQL Server、Sybase、Watcom等支持标准DDL的数据库自动生成数据描述语言DDL。Rose与ErWin之间也能够紧密集成,并且能够相互导出另一方的模型。另外,Rose还能够实现Oracle的正向和逆向工程,使得用户能够从Oracle的关系Schema中产生对象模型,并可以进一步扩展该对象模型以使用Oracle8的对象能力;可视化已有的关系数据库;方便已有商业对象的发现和合成;保护在已有关系数据库领域的投资,同时尽享对象建模和开发带给应用的所有好处。

2.2 Rational Rose安装前的准备

(1)安装Rose 需要Windows 2000/Windows XP/Windows 7 或以上版本。如果是Windows 2000 则要确认已经安装了Server Pack 2。

(2)安装Rose,必须先得到Rose的安装包。建议购买Rational公司的正版软件,Rational现已被IBM收购,读者可以从www.ibm.com获取相关信息。

2.3 Rational Rose的安装

本节将介绍Rose 的安装和使用。我们将以Rational Rose 2007 版本作为例子,如果读者目前使用的是Rose 2003 也没有关系,因为两者的操作基本一样。

2.3.1 安装前的准备

安装前,需要准备好计算机、操作系统以及安装盘。目前的计算机配置基本上都能满足Rose的安装需求。本书的运行环境如下:

(1)计算机:某品牌笔记本电脑;

(2)操作系统:Windows XP;

(3)Rose 版本:Rational Rose 2007。

2.3.2 安装步骤

(1)双击启动Rational Rose 2007 的安装程序,进入安装向导界面,如图2-1 所示。在该图上面会让用户选择安装选项。

图2-1 Rational Rose 2007安装启动界面

(2)单击【Install IBM Rational Rose Enterprise Edition】按钮,进入如图2-2 所示的界面,在该界面中软件提示需要进行系统升级(主要是安装引擎InstallShield比较老,需要升级,如果版本较新则不需要进行升级)。

图2-2 提示进行InstallShield 升级

(3)单击【是】按钮,系统在进行短暂的升级后进入如图2-3所示的界面,该界面是安装向导。

(4)在图2-3中单击【下一步】按钮,进入选择部署方式界面。如图2-4所示。该界面中,用户可以选择“Enterprise deployment”进行网络安装,也可以选择“Desktop Installation From CD Image”来进行本地桌面安装。这里选择“Desktop Installation From CD Image”进行本地桌面安装。

图2-3 安装向导
图2-4 选择安装方式

(5)在图2-4中单击【下一步】按钮,进入安装向导界面,如图2-5所示。该界面提示马上要安装Rational Rose 企业版。

(6)在图2-5中单击【Next】按钮,进入安装注意事项界面,如图2-6所示。

图2-5 安装向导
图2-6 安装注意事项

(7)在图2-6中单击【Next】按钮,进入软件许可证协议界面,如图2-7所示。这里只要选择【接受】即可。

(8)在图2-7中单击【接受】按钮,进入设置安装路径界面,如图2-8所示。读者可以单击【Change】按钮选择安装路径(建议采用默认路径)。

(9)设置完安装路径后,在图2-8中单击【Next】按钮,进入自定义安装选项界面,如图2-9所示。读者可以根据实际需要进行选择。这里笔者按照默认设定进行安装。

(10)在图2-9中单击【Next】按钮,进入开始安装界面,如图2-10所示。

(11)在图2-10中单击【Install】按钮,开始复制文件,如图2-11所示。

(12)系统安装完毕,完成安装界面如图2-12所示。(注意:安装的时候可能会提示重新启动计算机,读者选择重新启动即可。)

图2-7 接受许可协议
图2-8 设置安装路径
图2-9 自定义安装选项
图2-10 开始安装
图2-11 复制文件
图2-12 安装完成

(13)单击【Finish】按钮后,会弹出注册对话框,要求用户对软件进行注册,如图 2-13所示。用户应该根据实际情况选择注册方式。如笔者采用的是“Import a Rational License File”导入一个注册文件的方式来注册的,选择后单击【下一步】按钮。

(14)系统弹出导入文件对话框,如图2-14所示。

注:系统提供了多种注册方式供用户选择。建议读者购买正版软件,如果是试用版本,则不用注册。

图2-13 软件注册
图2-14 选择注册文件

(15)首先单击【Browse】按钮选择注册文件,然后单击【Import】按钮导入文件。系统会弹出一个确认导入的对话框,如图2-15所示。在图2-15中单击【Import】按钮完成导入并注册成功。

图2-15 确认导入

2.4 Rational Rose使用介绍

Rational Rose 是菜单驱动式的应用程序,可以通过工具栏使用其常用工具。它的界面分为3个部分:Browser窗口、Diagram窗口和Document窗口。Browser窗口用来浏览、创建、删除和修改模型中的模型元素;Diagram窗口用来显示和创作模型的各种图;而Document窗口则用来显示和书写各个模型元素的文档注释。

2.4.1 Rational Rose主界面

启动Rational Rose 2007 后,出现如图2-16 所示的启动界面。

图2-16 启动界面

启动界面消失后,进入到Rational Rose 2007 的主界面,首先弹出如图2-17所示的对话框。这个对话框用来设置启动的初始动作,分为【New】(新建模型)、【Existing】(打开现有模型)和【Recent】(最近打开模型)3个选项卡。

第1个选项卡是【New】,如图2-17所示,用来选择新建模型时所采用的模板。目前Rational Rose 2007 版本所支持的模板有J2EE(Java 2 Enterprise Edition,Java 2 平台企业版),J2SE(Java 2 Standard Edition,Java 2 平台标准版)的1.2、1.3和1.4 版,JDK(Java Development Kit,Java开发工具包)的jdk-116 版和jdk-12 版,JFC(Java Fundamental Classes,Java 基础类库)的jdk-11版,Oracle8-datatypes(Oracle-8 的数据类型),Rational Unified Process(即RUP,Rational统一过程),VB6 Standard(VB6 标准程序),VC6 ATL(VC6 Active Templates Library,VC6 活动模板库)的3.0 版,以及VC6 MFC(VC6 Microsoft Fundamental Classes,VC6 基础类库)的3.0版。

图2-17 “新建模型”选项

为了建造新的模型,必须选择一个与将要建造的系统的目标和结构相对应的模板,而新的模型将用所选模板定义的一组模型元素进行初始化。如果想查看某个模板的描述,选中此模板,然后单击【Details】按钮。如果想新建一个不使用模板的模型,单击【Cancel】按钮,这样一个只含有默认内容的空白的新模型就建好了。如果想创建一个新的模板,选择【Make New Framework】模板,进入如图2-18所示的创建模板界面,至于如何创建模板,由于篇幅有限,这里就不作介绍。

图2-18 创建模版

图2-17所示的第2个选项卡是【Existing】。若想打开一个已经存在的模型,浏览对话框左侧的列表,逐级找到要打开的模型文件所在的文件夹,再从右侧的列表中选出该模型文件,单击【Open】按钮或者双击模型图标即可,如图2-19所示。如果当前已经有模型存在,Rational Rose 将首先关闭当前的模型。如果当前的模型中包含了未保存的改动,系统会弹出一个对话框询问是否要保存对当前模型的改动。

第3个选项卡是【Recent】,如图2-20所示。在这个界面,可以选择打开一个最近打开过的模型文件。只要找到相应的模型,单击【Open】按钮或者双击图标即可。如果当前已经有模型被打开,在打开新的模型之前,Rose 会先关闭当前的模型。如果当前的模型中包含了未保存的改动,系统会弹出一个对话框询问是否保存对当前模型的改动。

图2-19 “打开现有模型”选项
图2-20 “最近打开模型”选项

由于暂时不需要任何模版,只需要新建一个空白的新模型,故在图2-17中单击【Cancel】按钮,这样就显示出了Rational Rose 的主界面,如图2-21 所示。

图2-21 Rational Rose的主界面

由图2-21 可以看到,Rational Rose 的主界面由标题栏、菜单栏、工具栏、工作区和状态栏组成。默认的工作区又由3个部分组成,左方是模型管理和文档区,右方是主要的编辑绘制区,而下方是日志区。下面就对各组成部分做简单说明。

1.标题栏

标题栏用来显示当前正在编辑的模型名称,由于此时的空模型刚刚新建,还没有被保存,所以标题栏上显示为untitled(未命名的),如图2-22所示。

图2-22 标题栏

2.菜单栏

菜单栏包含了所有可以进行的操作,一级菜单有【File】(文件)、【Edit】(编辑)、【View】(视图)、【Format】(格式)、【Browse】(浏览)、【Report】(报告)、【Query】(查询)、【Tools】(工具)、【Add-Ins】(插入)、【Window】(窗口)和【Help】(帮助),如图2-23所示。本小节将简要介绍一下各级菜单(在本书的附录中将会详细列出所有菜单项的说明)。

图2-23 菜单栏

3.工具栏

Rose中有两个工具栏:标准工具栏(Standard)和编辑区工具栏(Toolbox)。

标准工具栏包含任何图都可以使用的选项。在默认的情况下,标准工具栏从左到右依次分为7组,如图2-24所示。表2-1显示了这些操作的详细信息。

图2-24 标准工具栏
表2-1 标准工具栏图标

编辑区工具栏位于工作区内,如图2-25所示(编辑区工具栏按钮将会在使用过程中介绍)。

图2-25 编辑区工具栏

所有的工具栏都可以定制。

Rose操作:

要定制工具栏,在菜单栏中选择【Tools】→【Options】命令,然后选择【Toolbars】标签,如图2-26 所示。在【Standard Toolbar】复选框中可以选择显示或隐藏标准工具栏;在【Diagram toolbar】复选框中可以选择显示或隐藏编辑区工具栏。

标准工具栏包含了最常用的一些操作,用户也可以根据自己的需要自行添加或删除标准工具栏中的按钮。

Rose操作:

单击图2-26所示的【Customize toolbars】属性区下的【Standard】按钮,或者右键单击标准工具栏,在弹出菜单中选择【Customize】命令,都可看到图2-27所示的对话框。在对话框中选择相应的按钮并单击【添加→】或【←删除】按钮,即可添加或删除标准工具栏中的按钮。

图2-26 Options 对话框
图2-27 自定义工具栏

提示:其他编辑工具栏一样可以进行自定义按钮设置,原理类似。读者还可以通过选择【View】→【Toolbars】→【Configure】菜单命令来进行工具栏设置。

4.工作区

(1)工作区分为3个部分,左边的部分是浏览器和文档区,如图2-28所示。其中上方是浏览器,下方是文档区。

浏览器是层次结构,组成树形视图样式,用于在Rose模型中迅速漫游。浏览器可以显示模型中的所有元素名称,包括用例、关系、类和组件等,每个模型元素可能又包含其他元素。利用浏览器用户可以:增加模型元素(参与者、用例、类、组件、图等);浏览现有的模型元素;浏览现有的模型元素之间的关系;移动模型元素;更名模型元素;将模型元素添加到图中;将文件或者URL链接到模型元素上;将模型元素组成包;访问模型元素的详细规范;打开图。

图2-28 浏览器和文档区

浏览器中有4 个视图:Use Case View(用例视图)、Logical View(逻辑视图)、Component View(组件视图)和Deployment View(配置视图)。表2-2 列出了每个视图及其中所包含的模型元素。

表2-2 Rational Rose中的视图
续表

要隐藏浏览器可以鼠标右键单击浏览器空白区域,从弹出的菜单中选择【Hide】,即可隐藏浏览器。或者选择菜单栏选项【View】→【Browser】,Rose就会显示或者隐藏浏览器。

文档区用于为Rose模型元素建立文档,如对浏览器中的每一个参与者写一个简要定义,只要在文档区输入这个定义即可。将文档加入类中时,从文档区输入的所有内容都将显示为所产生的代码的注释。当在浏览器或者编辑区中选择不同的模型元素的时候,文档区会自动更新显示所选元素的文档。

(2)主要编辑区如图2-29所示。在主要编辑区中,可以打开模型中的任意一张图,并利用左边的工具栏对图进行浏览和修改。如果修改图中的模型元素,Rose 会自动更新浏览器。同样,通过浏览器改变元素时,Rose也会自动更新相应的图。这样Rose就可以保证模型的一致性。编辑区左侧的编辑区工具栏按钮随着每种UML图而改变。

(3)日志区如图2-30所示,在日志区里记录了对模型所做的所有重要动作。

图2-29 主要编辑区
图2-30 日志区

5.状态栏

状态栏显示了一些提示和当前所用的语言,如图2-31所示。

图2-31 状态栏

上面分区域介绍了 Rational Rose 的主界面,详细的界面说明,将在后续的章节中结合实际操作具体说明。

2.4.2 Rational Rose中的四个视图

Rose 模型中有4 个视图:Use Case View (用例视图)、Logical View(逻辑视图)、Component View(组件视图)和Deployment View(配置视图)。每个视图针对不同的对象,具有不同的作用。下面简要介绍一下这四个视图。

1.Use Case View(用例视图)

用例视图包括系统中的所有参与者、用例和用例图,还可能包括一些时序图或协作图。用例视图是系统中与实现无关的视图,它只关注系统功能的高层形状,而不关注系统的具体实现方法。图2-32是一个订单系统中的用例视图。

用例视图包括的模型元素如表2-3所示。

图2-32 用例视图
表2-3 用例视图中的模型元素
续表

2.Logical View(逻辑视图)

逻辑视图关注系统如何实现用例中提出的功能,提供系统的详细图形,描述组件之间如何关联。另外,逻辑视图还包括需要的特定类、类图和状态图。利用这些细节元素,开发人员可以构造系统的详细信息。图2-33是一个订单系统中的逻辑视图。

图2-33 逻辑视图

逻辑视图包括的模型元素如表2-4所示。

表2-4 逻辑视图中的模型元素

3.Component View(组件视图)

组件视图包含模型代码库、可执行文件、运行库和其他组件的信息。组件是代码的实际模块。在Rose中,组件和组件图在组件视图中显示,如图2-34所示。组件视图显示代码模块之间的关系(演示的案例是通过Visual Basic 来开发系统的,所以显示的是和Visual Basic 相关的组件视图)。

组件视图包括的模型元素如表2-5所示。

表2-5 组件视图中的模型元素
续表

4.Deployment View(配置视图)

配置视图关注系统的实际配置,可能与系统的逻辑结构有所不同。例如,系统可能使用三层逻辑结构,但配置可能是两层的。配置视图还要处理其他问题,如容错、网络带宽、故障恢复和相应时间等。图2-35显示了配置视图。

图2-34 组件视图
图2-35 配置视图

配置视图包括的模型元素如表2-6所示。

表2-6 配置视图中的模型元素

Rose操作:

2.4.3 使用Rational Rose建模

1.创建模型

Rose操作:

(1)在菜单栏中选择【File】→【New】,或者单击标准工具栏中的【New】按钮;

(2)在弹出的图2-17所示的对话框中,选择要用的模板,单击【Ok】按钮。如果不使用模板,单击【Cancel】按钮;

如果选择使用模板,Rose 会自动装入此模板的默认包、类和组件。模板提供了每个包中的类和接口,各有相应的属性和操作。通过创建模板,可以收集类与组件,然后在这个基础上设计和建立多个系统。如果单击【Cancel】按钮,则表示创建一个空项目,用户需要从头开始创建模型。

2.保存模型

Rational Rose 的保存与其他应用程序类似。可以通过菜单栏或者工具栏来实现。

Rose操作:

(1)保存模型。通过选择菜单栏【File】→【Save】或者标准工具栏的【Save】按钮,可以保存系统建模。如果是初次保存的模型会弹出图2-36所示的对话框,找到相应的目录,填好文件名后单击【保存】按钮即可。如果想将模型保存到另一个文件中,选择菜单选项【File】→【Save As】,在弹出的另存模型的对话框中(如图2-36 所示),操作如上。

(2)保存日志。鼠标单击日志窗口,激活日志窗口,如图2-37所示。通过菜单栏【File】→【Save Log As】或者用鼠标右键单击日志窗口,在弹出的菜单栏中选择【Save Log As】来保存。系统会弹出一个对话框,让用户选择将日志保存到哪个文件中,如图2-37所示。

图2-36 另存模型对话框
图2-37 自动保存日志对话框

3.导出与导入模型

面向对象机制的一大优势就是重用技术。重用不仅适用于代码,也适用于模型。Rose 支持导出与导入模型和模型元素操作。

(1)导出模型

选择菜单项【File】→【Export Model】,弹出图2-38所示的对话框,输入导出文件名(.ptl)即可。

图2-38 导出模型对话框

(2)导出包

Rose操作:

从类图中选择要导出的包,选择菜单项【File】→【Export <包名> Package】,弹出图2-39所示的对话框,输入导出文件名(.ptl)即可。

图2-39 导出包对话框

(3)导出类

Rose操作:

从类图中选择要导出的类,选择菜单项【File】→【Export <类名>】,弹出图2-40 所示的对话框,输入导出的文件名(.ptl)即可。

(4)导入模型、包或类

Rose操作:

选择菜单项【File】→【Import】,弹出图 2-41 所示的对话框,从中选出要导入的文件名,供选择的文件类型有:.ptl、.mdl、.cat、.sub。

图2-40 导出类对话框
图2-41 导入对话框

4.发布模型

可以把Rose建立的模型发布到网络上,使得其他相关人员都能够浏览模型。

Rose操作:

(1)选择菜单栏的【Tools】→【Web Publisher】选项,在弹出的图2-42 所示的对话框中选择要发布的模型视图和包。

(2)从图2-42的Selections区域中选择要发布的模型视图和包。

(3)设定细节内容(即【level of Detail】单选框)。如图2-42所示,该单选框内有3 个选项:【Documentation Only】(只发布文档)、【Intermediate】(中间层)和【Full】(全部)。选项【Documentation Only】是把要发布的细节的数量限制在对不同模型元素的注释之内,不包括如操作、属性和关系等的细节或者细节链接。而【Intermediate】选项允许用户发布所有在模型元素规范中定义的细节,但是不包括在细节表或者语言(如Java、C++等)表之内的细节。【Full】选项允许用户发布大部分完整的有用的细节,包括在模型元素细节表中的信息。

(4)选择发布模型的符号(即【Notation】单选框)。Rose提供了3种选择:【Booch】、【OMT】和【UML】,用户可以根据自己的需要进行选择。

UML结合了Booch、OMT、和Jacobson方法的优点,统一了符号体系,并从其他的方法和工程实践中吸收了许多经过实际检验的概念和技术,因此模型中提供了对其他方法的支持。

(5)选择是否发布继承项目、属性、关联和文档包等内容。

(6)在HTML Root File Name 文本框中输入发表模型的根文件名。

(7)如果要选择图形文件格式,在图2-42中点击【Diagrams】按钮,出现图2-43所示的窗口。有三种格式类型可以选择:Windows Bitmaps(BMP)、Portable Network Graphics (PNG)和JPEG,也可以选择不发布任何图。

(8)准备好后,单击【Publish】按钮。Rose会创建发布模型的所有Web页面。

(9)如果需要,可以单击【Preview】按钮浏览发布的模型。

图2-42 发布界面
图2-43 选择图形文件格式

5.使用控制单元

Rose 通过使用控制单元支持多用户的并行开发。Rose 中的控制单元可以是Use Case View (用例视图)、Logical View(逻辑视图)或Component View(组件视图)中的任何包。此外,对Deployment View(配置视图)和Model Properties(模型特性)也可以进行控制。在控制一个单元时,这个单元中的所有模型元素存放在独立于模型其他部分的文件中。这样独立文件可以利用支持SCC 的版本控制工具进行控制,例如Rational ClearCase、Microsoft SourceSafe 和Rose自带的基本工具。要创建和管理控制单元,鼠标右键单击要控制的包并选择【Units】选项,如图2-44所示。

图2-44 控制单元

(1)创建控制单元

Rose操作:

右键单击要控制的包,选择菜单中的【Units】→【Control <package>】。在弹出的图2-45所示的对话框中,输入控制单元的文件名即可。

图2-45 创建控制单元

提示:此时浏览器中的图标上用文件夹的页面符号表示控制该包。

(2)卸载控制单元

Rose操作:

要卸载控制单元,首先右键单击要卸载的单元,然后选择菜单中的【Units】→【Unload <包名> Package】即可。

提示:此时从浏览器中删除包项目表示从模型中删除。

(3)卸载视图中的所有控制单元

Rose操作:

右键单击视图,选择菜单中的【Units】→【Unload Subunits of <view>】即可。

(4)重装控制单元

Rose操作:

右键单击要重装的单元,选择菜单中的【Units】→【Reload <包名> Package】,看到弹出图2-46所示的对话框,从中选择要装入的控制单元即可。

图2-46 重装控制单元

(5)取消单元的控制

Rose操作:

首先要确认已经装入了该控制单元。右键单击要取消控制的单元,选择菜单中的【Units】→【Uncontrol <package>】即可。

提示:控制单元中的文件并不会从计算机上删除。

(6)对控制单元写保护

如果希望在任何时候都可以浏览但不能修改项目,可以对控制单元写保护。

Rose操作:

右键单击要写保护的单元,选择菜单中的【Units】→【Write Protect <包名> Package】即可。如果允许写入控制单元,右键单击要允许写入的包,选择菜单中的【Units】→【Write Enable <包名> Package】即可。

6.使用模型集成器

Rose 中的Model Integrator(模型集成器)可以比较和合并多个Rose 模型。这个功能在多个设计人员共同开发时十分有用。每个人可以独立工作,最后再将所有的模型集成到一起。

比较模型时,Rose会显示模型之间的区别。比较步骤如下。

Rose操作:

(1)首先,选择菜单栏选项【Tools】→【Model Integrator】,弹出图2-47所示的窗口。

(2)在菜单中选择【File】→【Contributors】项。

(3)在弹出的对话框(如图2-48所示)中按省略号按钮选择第一个Rose模型进行比较。

(4)按【New】按钮(图2-48所示对话框的右上方左起第一个按钮)增加其他Rose模型。

(5)选择其他文件,直到选择了全部要比较的文件。

(6)按【Compare】按钮即可显示模型之间的差别,如图2-49所示。

(7)按【Merge】按钮就是合并模型。模型集成器会合并文件。如果遇到冲突,窗口的右下角会出现一条消息,告知用户尚未解决的项目数。可以使用工具栏按钮【Previous Conflict】和【Next Conflict】移动到冲突处。

(8)解决完所有的冲突之后,就可以保存新模型了。

图2-47 模型集成器
图2-48 比较模型对话框
图2-49 模型之间的差别

7.在Rose模型元素中增加文件与URL

Rose模型包含着系统的大量信息,但是有些时候某些文档在Rose模型之外,如需求文档、版本声明和测试脚本等。可以将这些文件链接到Rose模型中的特定元素。例如,将Word文件链接到浏览器窗口的层次之后,只要在浏览器中双击文件名,就可以启动Word和装入文件。以下就是将文件链接到Rose模型中的步骤:

Rose操作:

(1)右键单击浏览器中的模型元素,如【Use Case View】、【Logical View】等。

(2)在弹出菜单中选择【New】→【File】命令,弹出图2-50所示的对话框。

(3)在对话框中选择相应的文件。

将URL链接到Rose模型中的步骤与将文件链接到Rose模型中的步骤相似:

Rose操作:

(1)右键单击浏览器中的模型元素。

(2)在弹出菜单中选择【New】→【URL】,在该模型元素的下方会出现一个URL的图标,如图2-52所示。

(3)右键单击该URL图标,选择【Rename】可以修改URL,如图2-51所示。

图2-50 添加文件链接
图2-51 添加URL链接

要删除文件或URL,只要在浏览器中右键单击文件名或URL并在弹出菜单中选择【Delete】命令即可。

提示:这个删除操作只删除Rose模型与文件之间的链接,而不会从系统中删除文件。

2.4.4 UML 图设计

图设计是Rose 使用的核心内容,这里通过Use Case(用例图)做简要的介绍,具体设计步骤可参考后续章节的内容。

1.创建Use Case

Rose操作:

(1)右键单击浏览器中的【Use Case View】包。

(2)在弹出的菜单中选择【New】→【Use Case Diagram】命令,如图2-52 所示。

(3)输入图的名称,如图2-53所示。

(4)双击新创建的图将其打开。

图2-52 新建用例界面
图2-53 输入图名称

2.打开Use Case

从浏览器中的视图中选中需要打开的Use Case 图,双击将其打开。

此操作也可以通过菜单实现,步骤如下。

Rose操作:

(1)选择菜单【Browse】→【Use Case Diagram】,在弹出对话框中进行选择,如图2-54所示。

(2)在【Package】(包)列表中选择图所在的包。

(3)在【UseCase Diagrams】列表框中选择所要打开的图。

(4)单击【OK】按钮打开。

3.删除图

Rose操作:

(1)在Rose浏览器中右键单击欲删除的图。

(2)在弹出菜单中单击【Delete】并确定,如图2-55所示。

图2-54 【Select Use Case Diagram】对话框
图2-55 删除图操作

4.Use Case 设计

新建一个Use Case 图以后,可以在图2-56 所示的设计页面中设计Use Case图。图中左侧是Use Case 的工具栏,右侧是进行图形化建模的面板。

接下来可以进行Use Case 的设计工作,像通常使用的图形设计界面一样,工具栏上的元素可以随意拖放到设计窗口中,如图2-57所示。

图2-56 用例绘制界面
图2-57 用例角色新建界面

5.Use Case 编辑

视图中的元素可以方便地进行复制、剪切以及删除等操作。

(1)编辑元素

Rose操作:

如果要删除视图中的元素,用鼠标选中,直接按 Delete 键即可删除。或者右键单击该元素,在弹出菜单中选择【Edit】→【Delete】命令,即可删除。

每次窗口中删除的元素,其实没有被真正删除,必须在浏览器窗口中通过右键菜单才能删除,如图2-58所示。

用户也可以直接鼠标右键单击要删除的元素,在弹出菜单中选择【Edit】→【Delete from Model】命令彻底删除,如图2-59所示。

通过快捷键Ctrl+D删除更为方便快捷。

图2-58 元素删除界面
图2-59 彻底删除元素

从菜单中可以看到用户可以通过【Cut】命令剪切、【Copy】命令复制、【Paste】命令粘贴,同时还可以进行【Undo】撤销和【Redo】重做等操作。

(2)元素格式设定

除了以上基本操作之外,还可以对视图中的元素的显示属性进行设定。用户可以通过右键单击选定元素,然后在弹出菜单中选择【Format】菜单,如图2-60所示。

图2-60 编辑元素属性

从图中的菜单可以看到,可以通过【Alignment】菜单来调整对齐元素位置、【Font Size】菜单设定字体大小、【Font】菜单设定字体、【Line Color】菜单设定线条颜色、【Fill Color】菜单设定填充颜色。

有关Rose的更详细操作,本书将会在后面章节中通过实例来介绍。

相关图书

现代软件工程:如何高效构建软件
现代软件工程:如何高效构建软件
UML基础、案例与应用(第3版)(修订版)
UML基础、案例与应用(第3版)(修订版)
持续交付:发布可靠软件的系统方法(英文版)
持续交付:发布可靠软件的系统方法(英文版)
团队软件过程(修订版)
团队软件过程(修订版)
掌握需求过程(第3版)
掌握需求过程(第3版)
术以载道——软件过程改进实践指南
术以载道——软件过程改进实践指南

相关文章

相关课程