
本书面向的读者是那些希望掌握运用UML进行软件开发的关键技能和技巧的学生和开发者。读者将学习使用适当的UML模型、过程、技术和工具进行面向对象分析、设计和实现。本书的配套光盘是Visual Paradigm for UML(VP-UML)共享版,这是一款获奖的CASE工具,它可以让读者迅速将所学理论转化为实践。
作者提出了名为视图校正技术(View Alignment Techniques,VAT)的建模与分析技术,它可以帮助软件开发者创建开发方法。本书还描述了活动分析技术(Activity Analysis Approach,A3),它特别适合于交互密集型系统的开发
前 言
现在计算机科学专业和软件工程专业的学生都必须选取像面向对象分析与设计或者面向对象软件工程之类的课程作为本科学业的一部分。但是,尽管市面上已经有各种各样的面向对象技术方面的图书,但是似乎缺少一本内容全面、能够涵盖整个软件开发过程的教科书:从建模、分析到实现,也就是从理论到实践。因此,学生们对面向对象这项强大技术的认识常常是不完整的,最糟糕的是一些学生甚至对它有非常大的误解。
导致这个现象的原因可能归咎于以下几个因素。第一,UML表示法非常丰富,很多学生不知道如何系统地使用它们。第二,统一过程没有规定在不同条件下需要什么模型;实际上一些模型甚至工作流只是可选的。第三,市面上的相关图书没有提供完整地涵盖整个开发生命周期的实用内容,学生在将所学理论应用到实际环境中时会遇到麻烦。第四,没有一个统一的方法能够应用于任意类型的问题。学生甚至从业者往往倾向于遵循某种“经过验证的”方法学,但最终他们都会发现这些方法学根本不能用于他们的系统。
最基本的问题是很多学生和从业者不知道软件开发方法有3个关键元素:过程、表示法和技术,以及应该如何将其系统地加以应用,以一种系统化的方式有效地利用开发系统(环境)提供的便利。大多数讨论UML的图书都只关注表示法,也可能会有少量关于统一过程的内容。很多关于UML的图书都包含了软件工具,但是这些工具只能用来演示如何能够将软件开发过程自动化。软件厂商通常只在他们的手册中讨论自己的工具,可以理解的是,他们会对自己所采用的技术有所偏好。但是,很多产品与UML标准并不兼容。
本书的起因是由于需要一本涵盖整个软件开发生命周期的书,它能够在构建大型系统所涉及的各个步骤中为学生和从业者提供指导。读者可能来自不同的开发阶段,从建模与分析阶段到实现阶段,通过使用CASE工具VP-UML,他们将体会到“从图到代码”功能的威力。每章都有一个小型案例研究,这可以帮助读者理解在实践中如何应用这些知识。我们还提出了视图校正技术(View Alignment Techniques,VAT)框架,它可以为不同类型应用的方法定制提供便利。基于VAT框架,我们将描述活动分析方法(Activity Analysis Approach,AAA),它特别适合于交互密集型系统的开发。在本书中,软件开发的实用方面将通过一个获奖的CASE工具VP-UML得到演示。
我们的梦想是使大型软件系统的开发成为一个简单容易的任务。我相信所提出的VAT框架将有助于从业者和学生建立他们自己的方法学,以适合各自的需要,从而使失败和恐惧远离系统开发。
目 录
第1章 引论 1
1.1 概论 1
1.2 本章要点 1
1.3 软件工程方法 2
1.4 可视化建模 4
1.5 软件开发方法 5
1.6 表示、过程、技术和工具 7
1.7 内容组织 10
1.8 本章小结 10
第2章 结构建模与分析 11
2.1 概论 11
2.2 本章要点 11
2.3 对象 11
2.3.1 对象的含义 11
2.3.2 对象类型 12
2.4 类和实例 13
2.5 结构建模技术 15
2.5.1 命名类 16
2.5.2 类之间的关系 16
2.5.3 继承 17
2.5.4 继承的性质 17
2.5.5 关联关系 19
2.5.6 聚合关系 22
2.6 结构建模示例 25
2.7 结构建模的UML
表示法小结 26
2.8 结构分析技术 27
2.8.1 如何获取类 27
2.8.2 保持模型简单 28
2.8.3 使用结构分析过程中的
启发式法 28
2.8.4 生成领域模型和分析 29
2.9 领域建模和分析过程 30
2.9.1 概论 30
2.9.2 开发领域模型 30
2.10 结构建模和分析过程中
的技巧和提示 41
2.11 使用VP-UML进行领域
建模和分析 42
2.12 本章小结 52
2.13 习题 52
第3章 用例建模与分析 54
3.1 概论 54
3.2 本章要点 54
3.3 需求获取 54
3.4 用例建模技术 55
3.5 用例模型示例 59
3.6 用例分析技术 61
3.6.1 进行用例分析 61
3.6.2 用例建模的UML
表示法小结 61
3.6.3 使用关系组织用例 62
3.6.4 编写用例文档 66
3.6.5 优选用例 69
3.7 用例建模与分析过程 69
3.7.1 概论 69
3.7.2 开发用例模型 71
3.7.3 开发初始用例模型 71
3.7.4 识别主要参与者 71
3.7.5 邮购案例研究 72
3.8 使用用例建模分析中的
技巧和提示 80
3.9 使用VP-UML进行用例
建模和分析 83
3.10 本章小结 108
3.11 习题 108
第4章 动态建模与分析 109
4.1 概论 109
4.2 本章要点 109
4.3 场景建模技术 109
4.3.1 常用的UML交互图符号 110
4.3.2 顺序图 112
4.3.3 协作图 116
4.4 场景建模示例 118
4.5 使用状态图动态建模技术 121
4.6 使用活动图动态建模技术 124
4.7 动态分析技术 126
4.7.1 细化描述用例的技巧 126
4.7.2 关注对外部系统
行为的建模 127
4.7.3 关注子系统之间的通信 127
4.7.4 开发可重用的MVC 129
4.8 动态建模与分析过程 132
4.8.1 概论 132
4.8.2 开发动态模型的步骤 132
4.9 动态建模与分析的
技巧和提示 139
4.10 使用VP-UML进行动态
建模与分析 144
4.11 本章小结 166
4.12 习题 166
第5章 UML规范实现 168
5.1 概论 168
5.2 本章要点 168
5.3 介绍 168
5.4 实现类图 169
5.4.1 单个类 169
5.4.2 包 170
5.4.3 继承 171
5.4.4 关联关系 172
5.4.5 聚合与组合 177
5.5 使用关系型数据库实现
持久化类 177
5.5.1 单个类 178
5.5.2 “一对多”关联关系 178
5.5.3 “多对多”关联关系 179
5.5.4 受限“多对多”关联关系 180
5.5.5 N元关联关系 181
5.5.6 泛化关系 182
5.6 实现活动图 185
5.7 实现状态图 187
5.7.1 实现一个简单的状态图 188
5.7.2 实现一个具有顺序子
状态的状态图 190
5.8 实现交互图 191
5.9 电梯控制系统 192
5.9.1 场景1 193
5.9.2 场景2 196
5.10 本章小结 200
5.11 习题 201
第6章 VAT和方法定制 202
6.1 概论 202
6.2 本章内容 202
6.3 软件开发方法 203
6.3.1 软件开发方法组件 203
6.3.2 使用软件开发方法的好处 205
6.4 为何传统软件方法不能
创造奇迹 206
6.5 UML和软件方法 207
6.6 面向对象方法应用中
的障碍 208
6.7 当前的面向对象开发方法 210
6.7.1 表示法 210
6.7.2 统一过程 211
6.7.3 技术 212
6.7.4 可溯性和模型一致性 216
6.7.5 方法定制的需求 216
6.8 VAT 217
6.8.1 数据流图和实体关系图
之间的连接元素 218
6.8.2 顺序图和类图之间的
连接元素 219
6.8.3 VAT原则 219
6.8.4 VAT架构 224
6.8.5 应用VAT 225
6.9 使用VAT创建和定制方法 230
6.10 案例研究 234
6.10.1 方法创建过程的
7个步骤 235
6.10.2 业务工作流总结 241
6.10.3 转换到下一个
工作流需求 242
6.10.4 转换到下一个
工作流分析 244
6.10.5 转换到下一个
工作流设计 248
6.10.6 方法路标图 251
6.11 本章小结 251
6.12 习题 251
第7章 案例研究:运用活动
分析技术 252
7.1 概论 252
7.2 本章要点 252
7.3 案例研究 252
7.4 业务建模 253
7.5 需求 255
7.5.1 领域分析(用例级) 255
7.5.2 用例分析 255
7.6 分析 259
7.7 设计 262
7.8 使用VP-UML运用活动
分析方法 268
7.8.1 业务建模 268
7.8.2 需求 270
7.8.3 分析 277
7.8.4 设计 281
7.9 本章小结 287
附录A VP-UML入门 288
A.1 安装 288
A.1.1 系统需求 288
A.1.2 系统安装 289
A.2 VP-UML环境 290
A.3 图的处理 291
A.4 创建图元素 293
A.5 资源中心界面 294
A.6 图元素属性 295
A.7 子图 296
A.8 代码生成 297
A.9 文本分析 301
A.10 生成报告 303
A.11 导入模型或者图 304
附录B UML基础 307
附录C 第5章电梯控制系统
的实现代码 313
参考文献 327