您好,欢迎来到聚文网。 登录 免费注册
UML 2与ROSE建模从入门到精通

UML 2与ROSE建模从入门到精通

  • 字数: 557000
  • 装帧: 简装
  • 出版社: 清华大学出版社
  • 作者: 李 波 史江萍 杨弘平 吕海华 代 钦
  • 出版日期: 2016-06-01
  • 商品条码: 9787302437994
  • 版次: 1
  • 开本: 其他
  • 页数: 336
  • 出版年份: 2016
定价:¥69 销售价:登录后查看价格  ¥{{selectedSku?.salePrice}} 
库存: {{selectedSku?.stock}} 库存充足
{{item.title}}:
{{its.name}}
精选
编辑推荐
软件的发展至今已经有近60年的历史。面向对象技术开始有深入的研究并广泛地应用也近40年了,已经成为软件开发中分析、设计、实现的主流方法和技术。40年来,在面向对象技术发展的同时,面向对象技术的各种软件设计工具、规范等也获得了较大发展。其中,很重要的一个面向对象的建模技术的成果就是统一建模语言(Uniffed Modeling Language,UML)的出现。
本书基于使用很广泛、工具很齐全的UML 2.0版本,并以Rose 2007为建模工具,对UML建模语言及其系统建模过程进行了详细讲解。内容安排紧凑,案例实用。
内容简介
UML是以面向对象图形的方式来描述任何类型的系统,应用领域很好广泛,其中很常用的是建立软件系统的模型。本书以Rose 2007为建模工具全面讲解了UML 2.0的基本概念和建模方法。
全书分为14章,分别讲解了用例图、类图、对象图、顺序图、通信图、状态机图、活动图、构件图、部署图、包图、组合结构图、定时图和交互概览图等,并介绍了RUP过程开发模型。很后安排了4个实战案例,汽车租赁系统、新闻中心管理系统、BBS论坛系统和数码录音机系统,通过这4个案例全面而系统地详解UML建模与设计。
本书面向软件工程师、系统架构师、系统分析员、硬件工程师及其他系统设计人员,同时也适合高等院校和培训学校软件相关专业的师生学习系统建模时参考使用。
作者简介
李波,博士。从事软件工程及其相关工作多年,编写书籍教材多部,包括《JSP网络编程学习笔记》《Android4.x从入门到精通》《UML基础、建模与设计实战》《PowerDesigner15系统分析与建模实战》《Android 5从入门到精通》等。
目录
目   录

第1章  UML概述 1
1.1  什么是UML 1
1.2  UML的发展历程 2
1.3  UML的特点 3
1.4  UML的组成 3
1.4.1  UML中的事物 3
1.4.2  UML中的关系 5
1.4.3  UML的图 6
1.5  UML的视图 12
1.5.1  用例视图 13
1.5.2  逻辑视图 13
1.5.3  并发视图 13
1.5.4  组件视图 13
1.5.5  部署视图 13
1.6  系统开发阶段 14
1.7  小  结 15
1.8  习  题 15
第2章  面向对象技术和建模基础 16
2.1  面向对象的基本概念 16
2.1.1  面向对象方法 17
2.1.2  对象 18
2.1.3  类 19
2.1.4  封装 20
2.1.5  继承 21
2.1.6  多态 22
2.1.7  消息 23
2.2  面向对象开发 24
2.2.1  系统调查和需求分析 24
2.2.2  面向对象分析方法 25
2.2.3  面向对象设计方法 26
2.3  软件建模概述 27
2.3.1  软件建模的概念 27
2.3.2  软件建模的用途 27
2.3.3  软件建模的优点 28
2.4  小  结 28
2.5  习  题 29
第3章  UML建模工具简介 30
3.1  常用UML建模工具 31
3.1.1  Visio 31
3.1.2  PowerDesigner 33
3.1.3  StarUML 34
3.1.4  Rational Rose 34
3.2  IBM Rational Rose Enterprise Edition 2007的安装 37
3.2.1  安装IBM Rational Rose Enterprise Edition 2007 37
3.2.2  插件程序的安装 40
3.3  使用Rational Rose建模 40
3.3.1  Rational Rose可视化环境组成 41
3.3.2  Rose模型、视图与图 42
3.4  Rose建模的基本操作 43
3.4.1  新建Rose模型 44
3.4.2  打开Rose模型 45
3.4.3  创建Rose框图 45
3.5  双向工程 52
3.5.1  正向工程 52
3.5.2  逆向工程 56
3.6  小  结 57
3.7  习  题 58
第4章  用例和用例图 59
4.1  用例和用例图的概念 59
4.1.1  参与者 61
4.1.2  用例 62
4.1.3  用例描述 64
4.2  用例之间的可视化表示 65
4.2.1  包含关系 65
4.2.2  扩展关系 66
4.2.3  泛化关系 67
4.2.4  分组关系 67
4.3  用例图建模技术及应用 67
4.3.1  识别出系统中的角色和用例 68
4.3.2  区分用例优先次序 72
4.3.3  构建用例图模型 73
4.4  超市进销存管理系统用例图模型构建实例 74
4.5  小  结 78
4.6  习  题 78
第5章  类图和对象图 79
5.1  类图和对象图概述 79
5.1.1  类图的概述 79
5.1.2  对象图的概述 82
5.1.3  接口 84
5.1.4  抽象类 84
5.2  类之间的关系 85
5.2.1  依赖关系 85
5.2.2  泛化关系 87
5.2.3  关联关系 87
5.2.4  实现关系 92
5.3  类图的建模技术及应用 93
5.3.1  类图的建立过程 93
5.3.2  类的识别方法 94
5.3.3  类图分析实例 96
5.4  小  结 105
5.5  习  题 106
第6章  顺序图和通信图 107
6.1  顺序图 107
6.1.1  顺序图概述 107
6.1.2  顺序图的组成元素 108
6.1.3  消息的语法格式 116
6.1.4  顺序图的建模技术及应用 117
6.2  通信图 124
6.2.1  通信图概述 124
6.2.2  通信图的基本内容 125
6.2.3  通信图建模技术及应用 128
6.2.4  顺序图与通信图的比较 132
6.3  小  结 133
6.4  习  题 134
第7章  状态机图和活动图 135
7.1  状态机图 135
7.1.1  状态机图概述 135
7.1.2  状态机图的基本元素 137
7.1.3  状态 137
7.1.4  转换 140
7.1.5  状态机图的建模技术及应用 142
7.2  活动图 145
7.2.1  活动图概述 145
7.2.2  活动图的基本元素 146
7.2.3  动作状态 146
7.2.4  活动状态 147
7.2.5  转移 147
7.2.6  分支 147
7.2.7  分叉和汇合 148
7.2.8  泳道 148
7.2.9  对象流 149
7.2.10  活动图的建模技术及应用 150
7.2.11  状态机图和活动图的比较 156
7.3  小  结 156
7.4  习  题 156
第8章  构件图和部署图 158
8.1  构件图 158
8.1.1  构件图概述 158
8.1.2  组件(Component) 160
8.1.3  接口(Interface) 161
8.1.4  关系(Relationship) 162
8.1.5  使用构件图对系统建模及应用 163
8.2  部署图 166
8.2.1  部署图概述 166
8.2.2  节点(Node) 166
8.2.3  组件(Component) 168
8.2.4  关系(Relationship) 169
8.2.5  部署图的系统建模及应用 169
8.3  小  结 173
8.5  习  题 174
第9章  包图、组合结构图、定时图和交互概览图 175
9.1  包  图 175
9.1.1  包图概述 175
9.1.2  包之间的关系 176
9.1.3  包图的建模技术及应用 177
9.2  组合结构图 178
9.2.1  组合结构图概述 178
9.2.2  基本元素 178
9.2.3  组合结构图的建模技术及应用 178
9.3  定时图 179
9.3.1  定时图概述 179
9.3.2  基本元素 179
9.3.3  定时图的建模技术及应用 179
9.4  交互概览图 181
9.4.1  交互概览图概述 181
9.4.2  基本元素 182
9.4.3  交互概览图的建模技术及应用 182
9.5  小  结 185
9.6  习  题 185
第10章  统一软件过程RUP 186
10.1  RUP简介 186
10.1.1  什么是RUP过程 186
10.1.2  RUP的特点 187
10.2  RUP工作流程 189
10.2.1  业务建模 190
10.2.2  需求分析 190
10.2.3  分析与设计 190
10.2.4  实现 190
10.2.5  测试 190
10.2.6  部署 190
10.2.7  配置和变更管理 191
10.2.8  项目管理 191
10.2.9  环境 191
10.2.10  统一软件开发过程RUP裁剪 191
10.3  RUP的十大要素 191
10.3.1  开发前景 191
10.3.2  达成计划 192
10.3.3  标识和减少风险 192
10.3.4  分配和跟踪任务 192
10.3.5  检查商业理由 193
10.3.6  设计组件构架 193
10.3.7  对产品进行增量式的构建和测试 193
10.3.8  验证和评价结果 193
10.3.9  管理和控制变化 193
10.3.10  提供用户支持 194
10.4  Rose在RUP模型中的应用 194
10.4.1  可视化建模 194
10.4.2  Rose介绍 194
10.4.3  Rose建模与RUP 195
10.4.4  Rose建模与RUP应用实例 196
10.5  小  结 199
10.6  习  题 200
第11章  汽车租赁系统 201
11.1  系统需求分析 201
11.1.1  汽车租赁系统的需求分析 201
11.1.2  功能模块图 202
11.2  用例图设计建模 204
11.2.1  汽车租赁系统中的用例图简述 204
11.2.2  与客户有关的用例图 204
11.2.3  与系统维护人员有关的用例图 205
11.2.4  与技术人员有关的用例图 206
11.3  类图设计建模 207
11.4  顺序图 209
11.4.1  汽车租赁系统中的数据流和相应顺序图 209
11.4.2  与客户有关的事件流和顺序图 209
11.4.3  与系统维护人员有关的事件流和顺序图 213
11.4.4  与技术人员有关的事件流和用例图 217
11.5  通信图设计建模 220
11.5.1  汽车租赁系统中的通信图 220
11.5.2  与客户有关的通信图 220
11.5.3  与技术人员有关的通信图 222
11.5.4  与系统维护人员有关的通信图 223
11.6  活动图 225
11.6.1  系统中的活动图 225
11.6.2  与客户有关的活动图 226
11.6.3  与系统维护人员有关的活动图 229
11.6.4  与技术人员有关的活动图 232
11.7  状态机图设计建模 233
11.8  部署图设计建模 235
第12章  新闻中心管理系统 237
12.1  系统需求说明 237
12.1.1  新闻中心管理系统的需求分析 237
12.1.2  新闻中心管理系统的功能模块 238
12.1.3  UML对系统需求分析的支持 240
12.1.4  利用UML模型构造软件体系结构 240
12.2  系统的用例图 241
12.3  系统中的类图 243
12.4  系统的顺序图 246
12.5  系统的通信图 249
12.6  系统状态机图 250
12.7  系统的活动图 252
12.8  系统的配置和实现 253
12.9  系统的部署图 253
12.10  生成Java代码 254
12.11  逆向工程的实现 260
第13章  BBS论坛系统 262
13.1  BBS论坛系统的需求分析 262
13.1.1  系统的功能需求 263
13.1.2  前台功能模块 265
13.1.3  后台功能模块 267
13.2  BBS论坛系统的UML建模 270
13.2.1  BBS论坛系统的用例图 270
13.2.2  BBS论坛系统的顺序图 274
13.2.3  BBS论坛系统的通信图 292
13.2.4  BBS论坛系统的状态机图 300
13.2.5  BBS论坛系统的活动图 301
13.3  BBS论坛系统中的类及相互关系 308
13.3.1  BBS论坛系统中的类 308
13.3.2  类之间的关系图 312
13.4  BBS论坛系统中的配置和部署 313
13.4.1  构件图的建立 313
13.4.2  部署图的建立 313
第14章  数码录音机系统 314
14.1  数码录音机系统的需求分析 314
14.1.1  外部事件 315
14.1.2  数码录音机系统的用例图 317
14.1.3  用例场景 318
14.2  数码录音机系统中的对象和类图 319
14.2.1  数码录音机系统中的对象 319
14.2.2  数码录音机系统中的类图 320
14.3  数码录音机系统的状态图 326
14.4  数码录音机系统的系统架构 328
14.5  数码录音机系统的协作图 330
14.6  数码录音机系统详细设计 333
14.6.1  硬件的对象建模 333
14.6.2  音频压缩算法 333
14.6.3  使用直接内存访问通道 333
14.6.4  硬件资源分配 335
14.6.5  内存分配 335
14.7  数码录音机系统实现 336
14.8  小  结 336
摘要
    第8章  构件图和部署图

    对面向对象系统的物理方面建模时使用两种图,一种是构件图,一种是部署图。
    构件图是表示组件类型的组织以及各种组件之间依赖关系的图。构件图通过对组件间依赖关系的描述来估计对系统组件的修改给系统可能带来的影响。构件图用于描述系统中软件的构成,但没有描述系统中与硬件有关的构成情况。
    部署图则用于描述系统硬件的物理拓扑结构以及在此结构上运行的软件。部署图可以显示计算节点的拓扑结构、通信路径、节点上运行的软件、软件包含的逻辑单元(对象、类等)。部署图是描述任何基于计算机的应用系统(特别是基于Internet和Web的分布式计算系统)的物理配置的有力工具。

    本章重点理解实现视图的相关概念,掌握构件图和部署图的基本概念、掌握构件图和部署图的应用:逻辑部署和物理部署,并在简单的系统中应用构件图和部署图。
    8.1  构件图
    8.1.1  构件图概述
    在对软件建模的过程中,可以使用用例图来表示系统的功能,使用类图来描述业务中的事物,使用活动图、交互图、状态机图来对系统动态行为建模。在完成这些设计后,分析人员就需要将这些逻辑设计图转化成实际的事物,如可执行文件、源代码、应用程序库等。在此过程中,有些组件必须重新建立,而有些组件则可以进行复用。现代软件开发是基于组件的,这种开发方式对群组开发尤为重要。因此,可以使用构件图来可视化物理组件以及它们之间的关系,并描述其构造细节。
    构件图是对面向对象系统的物理方面建模时使用的两种图之一(另一种图是部署图),用于描述软件组件以及组件之间的组织和依赖关系。软件组件是软件系统的一个物理单元,作为一个或多个类的软件实现,组件驻留在计算机中。组件提供和其他组件之间的接口。在UML 1.x 中,数据文件、表格、可执行文件、文档和动态链接库等都被定义为组件。实际上,建模者习惯把这些东西划分为部署组件(deployment component)、工作产品组件(work product component)和执行组件(execution component)。UML 2.0 则统称它们为工件(artifact), 也就是系统使用或产生的一段信息。组件定义了一个系统的功能,就好像一个组件是一个或多个类的实现一样,工件(如果它是可执行的话)是一个组件的实现。构件图有利于:
    (1)帮助客户理解很终的系统结构。
    (2)使开发工作有一个明确的目标。
    (3)帮助开发组的其他人员理解系统。
    (4)复用软件组件。
    关于复用软件组件是十分重要的,特别是在当今快节奏的商业竞争中,你建造的系统发挥功能越快,在竞争中获得的利益就越多。如果在开发一个系统中所构造的组件能够在开发另一个系统中被复用,那么就越有利于获得这种竞争利益。在建立组件模型的工作上花费一些努力有助于复用。
    当处理组件的时候,必须处理组件的接口。对象对其他对象和外部世界隐藏了内部信息。这被称作封装(encapsulation)或信息隐藏(information-hiding)。对象必须提供对外部世界的窗口,以便让其他对象(也可能是人)能够通过这个窗口请求这个对象执行它的操作。这个“窗口”就是对象的接口(interface)。接口是一组操作,是一个类提供给其他类的一组操作。它使你能够访问一个类的行为,并执行相关的操作。可以认为接口是只有操作的一个类,类中没有定义属性。接口既可用于概念建模也可用于物理实体建模。类的接口和软件实体(组件)的接口是相同的概念。对建模者来说,这就意味着类的接口表示方式和组件的接口表示方式接近相同,尽管UML的表示符号集对类和组件的表示符号做了区分,但是概念接口和物理实体接口的表示符号接近相同。关于组件和接口,一个重要的结论是只能通过组件的接口来使用组件中定义的操作。与类和类的接口相同,组件和组件的接口之间的关系也叫做实现。还有一个重要的结论:组件可以让它的接口被其他组件使用,以使其他组件可以使用这个组件中定义的操作。换句话说,一个组件可以访问另一个组件中所定义的服务。可以这样说,提供服务的组件呈现了一个提供的接口(provided interface),访问服务的组件使用了所需的接口(required interface)。接口在组件复用和组件替换中是一个很好重要的概念。可以用一个组件替换另一个组件,只要新组件符合旧组件的接口。
    这里举一个来自电脑领域的例子。几年前,我的靠前部电脑出了故障无法启动,检查发现是电源出了问题,修理部很快就从另外一部电脑上找来了拆下的型号类似的电源替换原来的电源,之所以能够这么做,是因为新的电源恰好能够和电脑的其他部件协同工作,尽管它是设计用在另外一部接近不同的电脑中的。这个例子也可以很好地说明复用。你可以在一个系统中复用另一个系统的组件,只要新系统能够通过组件接口很好地访问复用的组件。如果你能够对一个组件接口进行细化,以至于众多的其他组件都能够访问它,你就可以在整个企业的开发项目中来复用这个组件。如果模型中的组件接口信息恰好可用的话,对于试图替代和复用一个组件的开发者来说,工作就简单得多了。否则,开发者还必须花费时间来逐步完成编码过程。
    构件图用于静态建模,是表示组件类型的组织以及各种组件之间依赖关系的图。 构件图通过对组件间依赖关系的描述来估计对系统组件的修改给系统可能带来的影响。
    构件图的组成元素包括组件(component)、接口(interface)和关系(relationship),还可以包括包(package)和子系统(subsystem)。接下来的几个小节将对这些元素做详细介绍。
    8.1.2  组件(Component)
    1. 组件的基本概念和图形表示
    组件是系统中遵从一组接口且提供实现的一个物理部件,通常指开发和运行时类的物理实现。组件常用于对可分配的物理单元建模,这些物理单元包含模型元素,并具有身份标识和明确定义的接口,它具有很广泛的定义,以下的一些内容都可以被认为是组件:程序源代码、子系统、动态链接库等。组件的图形表示法是把组件画成带有两个标签的矩形。每一个组件都必须有一个专享的名称(name)。
    构件图的主图标是一个左侧附有两个小矩形的大矩形框。组件的名字位于构件图标的中央,名字本身是一个文本字符串。如图8.1所示。

    图8.1  UML 中的组件图标
    如果组件属于一个包,你可以在组件名称的前面加上包名,还可以在另外一个隔开区域里绘出组件的操作,即该操作可以驻留在组件中,图8.2 示意了这种情况。

    图8.2  在组件图标中增加信息
    2. 组件的类型
    组件可以分为以下三种类型:
    (1)实施组件(Deployment Component):实施组件是构成一个可执行系统必要和充分的组件,如动态链接库(DLL)、二进制可执行体(EXE)、ActiveX控件和JavaBean组件等。
    (2)工作产品组件(Work Product Component):这类组件主要是开发过程的产物,包括创建实施组件的源代码文件及数据文件,这些组件并不是直接地参加可执行系统,而开发过程中的工作产品,用于产生可执行系统。
    (3)执行组件(Execution Component):这类组件是作为一个正在执行的系统的结果而被创建的,如由DLL实例化形成的COM+对象。
    3. 组件与类的异同
    一般来说组件在许多方面都与类相同:二者都有名称;都可以实现一组接口;都可以参与依赖、泛化和关联关系;都可以被嵌套;都可以有实例;都可以参与交互。但是组件和类之间也有一些显著的差别:
    (1)类表示逻辑抽象,而组件表示存在于计算机中的物理抽象。简言之,组件是可以存在于可实际运行的计算机上的,而类不可以。
    (2)组件表示的是物理模块而不是逻辑模块,与类处于不同的抽象级别。组件是一组其他逻辑元素的物理实现(如类及其协作关系),而类仅仅只是逻辑上的概念。
    (3)类可以直接拥有属性和操作;而一般情况下,组件仅拥有只能通过其接口访问的操作。这表明虽然组件和类都可以实现一个接口,但是组件的服务一般只能通过其接口来访问。
    8.1.3  接口(Interface)
    接口是一组用于描述类或组件的一个服务的操作,它是一个被命名的操作的集合,与类不同,它不描述任何结构(因此不包含任何属性),也不描述任何实现(因此不包括任何实现操作的方法)。每个接口都有一个专享的名称。
    组件的接口可以分为两种类型。
    (1)导出接口(export interface):即为其他组件提供服务的接口,一个组件可以有多个导出接口。
    (2)导入接口(import interface):在组件中所用到的其他组件所提供的接口,称为导入接口,一个组件可以使用多个导入接口。
    组件和组件的接口可以采用两种表示法。一种表示方法是将接口用一个矩形来表示,矩形中包含了与接口有关的信息。接口与实现接口的组件之间用一条带空心三角形箭头的虚线连接,箭头指向接口(如图8.3 所示)。

    图8.3  矩形接口及实现
    图8.4 是另一种表示法。可以用一个小圆圈来代表接口,用实线和组件连接起来。在这种语境中,实线代表的是实现关系。图中的组件名称是Dictionary(字典)。该组件向外提供两个接口,即两个服务Spell-check(拼写检查)、Synonyms(同义词)。

    图8.4  圆圈接口及实现
    除了实现关系以外,还可以在图中表示出依赖关系即组件和它用来访问其他组件的接口之间的关系。依赖关系用一个带箭头的虚线表示。可以在一张图中同时表示出实现和依赖关系。图8.5中使用了 “球窝”符号。这里的“球”代表了提供的接口,“窝”代表了所需的接口。图中“Planner(计划者)”构件向外提供一个“update(更新)”接口服务。同时,该构件要求外部接口提供一个“Reservations(预订)”服务。

    图8.5  接口的实现和依赖关系
    8.1.4  关系(Relationship)
    关系是事物之间的联系,在面向对象的建模中,很重要的关系是依赖、泛化、关联和实现,但构件图中使用很多的是依赖和实现关系。
    依赖关系是指组件依赖外部提供的服务(由组件到接口)。构件图中的依赖关系使用虚线箭头表示。如图8.6所示。

    图8.6  依赖关系的图示
    实现关系是指组件向外提供的服务。实现关系使用实线表示。实现关系多用于组件和接口之间。组件可以实现接口。如图8.7所示。

    图8.7  实现关系的图示
    8.1.5  使用构件图对系统建模及应用
    1. 构件图建模及绘图的步骤
    使用构件图建模可按照下列步骤进行:
    对系统中的组件建模;
    定义相关组件提供的接口;
    对它们间的关系建模;
    对建模的结果进行精化和细化。
    构件图是用来反映代码的物理结构。从构件图中,您可以了解各软件组件(如源代码文件或动态链接库)之间的编译器和运行时依赖关系。使用构件图可以将系统划分为内聚组件并显示代码自身的结构。
    根据静态结构设计中所得到的包图和类图进行分析,图书管理系统由图书管理系统界面、业务逻辑处理组件、数据库访问组件和数据库组成。
    系统构件图如图8.8所示。

    图8.8  系统构件图
    如图8.9所示,将整个“在线酒店预订子系统”作为一个构件,考虑其对外接口并确定子系统对外的接口。显然它首先需要提供用户界面;其次还需要与加盟的酒店系统连接,完成预订工作,即提供了接入和输出接口。

    图8.9  酒店预订系统接口建模
    图8.10显示如何确定子组件和接口,显然要有一个组件来实现用户界面,一个组件来完成与酒店系统的连接和预订,另外还应该有一个负责将用户的需求与酒店的供给进行匹配的“调度程序”子组件。

    图8.10  酒店预订系统建模子组件示意图
    2. 构件图的几种使用方式
    构件图用于对系统的静态实现视图建模,这种视图主要支持系统部件的配置管理。通常可以按下列4种方式之一来使用构件图:
    (1)对源代码建模
    采用当前大多数面向对象编程语言,将使用集成化开发环境来分割代码,并将源代码存储到文件中。可以使用构件图来为这些文件的配置建模,并设置配置管理系统。
    对源代码建模,要遵循如下的策略:
    l 识别出感兴趣的相关源代码文件的集合,并把它们建模为组件。
    l 对于较大的系统,利用包(文件夹)对其进行分组。
    l 通过约束来表示源代码的版本号、作者和很后修改日期等信息,利用工具管理这个标记值。
    l 用依赖关系来表示这些文件间编译的依赖关系 ,箭头指向为谁依赖谁。利用工具帮助产生并管理这些关系。
    例如,图8.11中有5个源代码文件。文件signal.h是一个头文件,标记显示了版本号的值。这个头文件被其他两个文件(interp.cpp和signal.cpp)引用,这两个.cpp文件都是体文件,其中一个文件(interp.cpp)有一个到另一个头文件(iraq.h)的编译依赖关系,而device.cpp又有一个到interp.cpp的编译依赖关系。有了这个图,跟踪变化的影响就容易多了。例如源代码文件signal.h发生了变化将需要重新编译signal.cpp、interp.cpp以及device.cpp这3个文件。该图也显示了irq.h文件将不受影响。

    图8.11  对源代码建模
    (2)对可执行体的发布建模
    软件的发布是交付给内部或外部用户的相对完整而且一致的组件系列。在组件的语境中,一个发布注重交付一个运行系统所必须的部分。当用构件图对发布建模时,其实是在对构成软件的物理部分(即部署组件)所做的决策进行可视化、详述和文档化。
    对可执行程序的结构建模要遵循如下策略:
    l 首先识别你想建模的构件集合。
    l 考虑集合中各构件的不同类型。
    l 对这个集合中的每个构件,分析它们之间的关系。
    例如,图8.12中体现了callcenter.exe对sh_ttsu.dll和shp_a3.dll这两个库的依赖。

    图8.12  对可执行体的发布建模
    (3)对物理数据库建模
    可以把物理数据库看作模式(schema)在比特世界中的具体实现。实际上模式提供了对较为信息的应用程序编程接口(API),物理数据库模型表示了这些信息在关系型数据库的表中或者在面向对象数据库的页中的存储。可以用构件图表示这些以及其他种类的物理数据库。
    (4)对可适应的系统建模
    某些系统是相对静态的,其组件进入现场、参与执行,然后离开。另外一些系统则是较为动态的,其中包括一些为了负载均衡和故障恢复而进行迁移的可移动的代理或组件。可以将构件图与对行为建模的UML的一些图结合起来表示这类系统。
    8.2  部署图
    8.2.1  部署图概述
    部署图(deployment diagram)用于静态建模,是表示运行时过程节点(node)结构、组件实例及其对象结构的图。展示了第8.1节构件图中所提到的组件如何在系统硬件上部署,以及各个硬件部件如何相互连接。UML部署图显示了基于计算机系统的物理体系结构。它可以描述计算机,展示它们之间的连接,以及驻留在每台机器中的软件。每台计算机用一个立方体来表示,立方体之间的连线表示这些计算机之间的通信关系。图8.13是部署图的一个例子。

    图8.13  部署图
    部署图可以显示计算节点的拓扑结构、通信路径、节点上运行的软件、软件包含的逻辑单元(对象、类等)。部署图是描述任何基于计算机的应用系统(特别是基于Internet和Web的分布式计算系统)的物理配置的有力工具。
    构成部署图的元素主要是节点(node)、组件(component)和关系(relationship)。下面将分别进行介绍。
    8.2.2  节点(Node)
    节点是存在于运行时并代表一项计算资源的物理元素,一般至少拥有一些内存,而且通常具有处理能力。它一般用于对执行处理或计算的资源建模,通常具有如下两方面内容:能力(如基本内存、计算能力和二级存储器)和位置(在所有必需的地方均可得到)。
    在UML 1.x中,节点被划分为两种类型:处理器(processor)和设备(device)。处理器是能够执行软件组件、具有计算能力的节点。设备是不能执行软件组件的外围硬件,没有计算能力的节点,通常是通过其接口为外界提供某种服务,例如打印机、扫描仪等都是设备。尽管这种区分并没有在UML 1.x 中形式化,但是它很有用。
    在UML 2.0中用立方体来表示一个节点(与UML 1.x 例图一样)。UML 2.0正式地把一个设备定义为一个执行工件(artifact)的节点。为节点起一个名字,并添加关键字<>来指明节点类型,尽管一般不需要这样做。图8.14显示了一个节点。

    图8.14  在UML中表示一个节点
    图8.15展示了对于在一个节点上部署的工件的3种建模方式。


    图8.15  对于在一个节点上部署的组件的3 种建模方式
    连接两个立方体的一条线,表示了两个节点相连。一个连接不一定要是一段电线或电缆。也可以表示红外线或者通过卫星的无线连接。图8.16 给出了节点间连接的例子。

    图8.16  表示节点间的连接
    UML 2.0对工件的强调带来了一系列和工件相关的概念,其中的一个就是部署说明(deployment specification),也就是一个组件为另一个组件提供参数。一些调制解调器的连接过程中需要初始化命令,这就是一个典型的部署说明的例子。在这个例子中,部署说明就是一个字符串,用来设定调制解调器的某个属性的值。图8.17示意了如何对一个部署说明建模。

    图8.17  表示一个部署说明,以及它和它所参数化的组件的关系
    8.2.3  组件(Component)
    部署图中还可以包含组件,这里所指的组件就是第8.1节中介绍的构件图中的基本元素,它是系统可替换的物理部件。
    节点和组件的关系可以归纳为以下两点:
    (1)组件是参与系统执行的事物,而节点是执行组件的事物。简单地说就是组件是被节点执行的事物,如假设节点是一台服务器,则组件就是其上运行的软件。
    (2)组件表示逻辑元素的物理模块,而节点表示组件的物理部署。这表明一个组件是逻辑单元(如类)的物理实现,而一个节点则是组件被部署的地点。一个类可以被一个或多个组件实现,而一个组件也可以部署在一个或多个节点上。


    8.2.4  关系(Relationship)
    部署图中也可以包括依赖、泛化、关联及实现关系。
    部署图中的依赖关系使用虚线箭头表示。它通常用在部署图中的组件和组件之间,组件依赖外部提供的服务(由组件到接口)。图8.18示意了依赖关系。

    图8.18  依赖关系图示
    实现关系是节点内组件向外提供服务,其表示符号是一条实线。关联关系是体现节点间通信关联,其表示符号也是一条实线。如图8.19所示。

    图8.19  实现关系和关联关系符号
    8.2.5  部署图的系统建模及应用
    部署图用于对系统的静态部署视图建模。这种视图主要用来解决构成物理系统的各组成部分的分布、提交和安装。有些开发的系统不需要部署图,比如开发的软件是将运行在一台机器上而且只和该机器上已由宿主操作系统管理的标准设备(如键盘)相互作用,就不必要设计部署图。如果软件交互设备是物理地分布在多个处理器上的,则使用部署图有助于思考系统中软件到硬件的映射。
    1. 部署图的系统建模方式
    对系统静态部署视图建模时,通常将以下列三种方式之一使用部署图。
    (1)对嵌入式系统建模
    嵌入式系统是软件密集的硬件集合,其硬件与物理世界相互作用。嵌入式系统包括控制设备(如马达、 传动装置和显示器)的软件,又包括由外部的刺激(如传感器输入、运动和温度变化)所控制的软件。可以用部署图对组成一个嵌入式系统的设备和处理器建模。嵌入式系统的部署图建模的策略为:识别对于你的系统而言专享的设备和节点;重点在于对处理器和设备之间的关系建模;可以考虑对处理器和设备采用更直观的图标。图8.20为一个嵌入式部署图示例。

    图8.20  嵌入式部署图示例
    (2)对客户/服务器系统建模
    客户/服务器系统是一种常用的体系结构,它注重于将在客户机上的系统的用户界面和在服务器的系统较为数据清晰地分开。它要求对客户/服务器间的网络连接及系统中的软件组件在节点上的物理分布做出决策。可以用部署图对这种客户/服务器系统的拓扑结构建模。当开发的软件要运行在多台计算机上时,就必须决定如何将软件组件以合理的方式部署在各个节点。其中客户机/服务器结构就是一种典型的分布式系统模型,它包含三层B/S结构、两层C/S结构。图8.21为客户/服务器系统部署图的应用。

    图8.21  客户/服务器系统部署图
    一个UML部署图描述系统的软件如何映射到将要执行它们的硬件上,用来显示系统中软件和硬件的物理架构,是一个运行时的硬件节点以及在这些节点上运行的软件的静态结构模型。图书管理系统的部署图如图8.22所示。

    图8.22  图书管理系统的部署图
    (3)对全分布式系统建模
    广泛意义上的分布式系统通常是由多级服务器构成。这种系统中一般存在着多种版本的软件组件,其中的一些版本的软件组件甚至可以在节点间迁移。构造这样的系统,需要对系统拓扑结构的不断变化做出决策。可以用部署图可视化系统的当前拓扑结构及组件的分布情况,并推断拓扑结构变化的影响。
    绘制系统部署图可以参照以下步骤进行:
    对系统中的节点建模。
    对节点间的关系建模。
    对节点中的组件建模,这些组件来自构件图。
    对组件间的关系建模。
    对建模的结果进行精化和细化。
    2. 部署图的几个应用实例
    (1)实例层部署图
    实例层部署图描述各节点和它们之间的连接。图8.23中的关系是各个节点之间存在的通信关系。

    图8.23  实例层部署图
    (2)描述层部署图
    描述层部署图表示了系统中的各节点和每个节点包含的组件。
    图8.24中包括的各种关系如下:
    l 通信链关系(不带箭头的直线):TicketServe(票服务器)与Kiosk(信息厅)之间存在一对多的通信关联,与SalesTerminal(售票终端)也存在一对多的通信关联。
    l 依赖关系 (带箭头的虚线):TicketSeller(售票)构件依赖CreditCardCharges(信用卡付款)构件和TicketDB(票数据库)构件提供的服务。
    图中顾客购票的情景说明如下:
    顾客通过位于Kiosk节点的顾客接口控件进行购票的操作,该顾客接口组件的购票操作依赖于处于TicketServer节点上的售票组件提供的服务,售票组件要完成售票操作,又要依赖统一节点上信用卡付款组件提供的付款服务和票数据库构件。

    图8.24  描述层部署图图标
    图中各节点的组件说明如下:
    l 节点TicketServer上的组件:CreditCardChargers/ManagerInterface/TicketSeller/TicketDB。
    l 节点Kiosk上的组件:CustomerInterface。
    l 节点SalesTerminal上的组件:ClerInterface。
    (3)细缆以太网
    细缆以太网是目前很流行的一种网络。计算机与网络电缆之间通过一个叫做T型连接器(T-connector)的连接设备连接。一个网段可以通过一个中继器(repeater)加入到另一个网段中。中继器是一种能够将接收到的信号放大、整形后再转发出去的网络连接设备。图8.25显示了为一个细缆以太网建模。

    图8.25  细缆以太网的部署图
    8.3  小  结
    构件图用于静态建模,是表示组件类型的组织以及各种组件之间依赖关系的图。构件图通过对组件间依赖关系的描述来估计对系统组件的修改给系统可能带来的影响。部署图是用来为面向对象系统的物理实现建模的图。部署图描述了节点和运行在其上的组件的配置,它用来模拟系统的静态部署实现。
    本章介绍了组件的定义以构成组件的要素,对组件、组件关系进行了详细的讲解。对使用构件图建模适用领域进行了说明,并对很为常见的两种场景即可执行程序结构建模、源代码建模进行了举例说明。还介绍了部署图语义和功能,通过实例讲解了部署图的应用。
    开发构件图:此场景中程序员们是主力,需要画出构件关系。
    制定部署计划:部署图在构件后,系统协作与集成、节点驻留何种构件等,图里要处处注释清楚。
    8.5  习  题
    1.(    )是系统中遵从一组接口且提供实现的一个物理部件,通常指开发和运行时类的物理实现。
    A.部署图    B.类
    C.接口    D.构件
    2.构件图用于对系统的静态实现视图建模,这种视图主要支持系统部件的配置管理,通常可以分为4种方式来完成,下面(    )不是其中之一。
    A.对源代码建模    B.对事物建模
    C.对物理数据库建模    D.对可适应的系统建模
    3.(    )是可复用的,提供明确接口完成特定功能的程序代码块。
    A.模块    B.函数
    C.用例    D.软件构件
    4.构件图展现了一组组件之间的组件和依赖。它专注于系统的(    )实现图。
    A.动态    B.静态
    C.基础    D.实体
    5.(    )是用于把元素组织成组的通用机制。
    A.包    B.类
    C.接口    D.组件
    6.(    )是一组用于描述类或组件的一个服务的操作。
    A.包    B.节点
    C.接口    D.组件
    7.(    )是被节点执行的事物。
    A.包    B.组件
    C.接口    D.节点

蜀ICP备2024047804号

Copyright 版权所有 © jvwen.com 聚文网