第1部分 基础知识 1
第1章 UML基础 1
1.1 什么是UML 1
1.2 UML的基本组成 1
1.3 UML的发展历史 3
1.3.1 面向对象的开发方法 3
1.3.2 实现统一 4
1.3.3 实现标准化 5
1.4 UML的目标 6
1.5 UML概念范围 6
1.6 UML的应用领域 8
1.6.1 UML在不同类型系统中的应用 8
1.6.2 UML在软件开发不同阶段的应用 8
1.7 UML未涉及的领域 9
1.8 UML与Booch、OMT、OOSE以及其他建模方法的比较 10
1.9 本章小结 10
第2章 面向对象技术 12
2.1 概述 12
2.2 程序设计范型 12
2.3 抽象在问题求解中的作用 13
2.4 面向对象的抽象原理 14
2.4.1 数据抽象 15
2.4.2 行为共享 16
2.4.3 进化 16
2.4.4 正确性 17
2.5 对象和类 17
2.6 对象的生命周期 18
2.6.1 对象的创建 19
2.6.2 对象的使用 19
2.6.3 对象的销毁 19
2.7 面向对象的核心特征 19
2.7.1 封装 19
2.7.2 类层次 21
2.7.3 继承 22
2.7.4 多继承 23
2.7.5 多态性 24
2.7.6 动态联编 25
2.8 面向对象的优点 26
2.8.1 用户需求分析 26
2.8.2 软件设计 26
2.8.3 软件构造 26
2.8.4 软件维护 28
2.8.5 软件使用 28
2.8.6 软件项目管理 29
2.9 本章小结 29
第3章 运用面向对象的思想 30
3.1 类 30
3.2 定义一个类 30
3.3 类的属性 31
3.4 类的操作 33
3.5 重载操作 35
3.6 属性和操作的可视性 35
3.7 类属性和类操作 36
3.8 抽象操作和类 37
3.9 实用程序 37
3.10 参数化类 38
3.11 本章小结 39
第4章 UML语言 40
4.1 UML语言中的标准元素 40
4.2 UML中的符号和图形 45
4.3 模型 46
4.3.1 模型的概念 46
4.3.2 模型的用途 46
4.3.3 模型的层次结构 48
4.3.4 模型的内容 49
4.4 通用机制 51
4.4.1 修饰 51
4.4.2 笔记 52
4.4.3 规格说明 52
4.5 扩展机制 52
4.5.1 概述 52
4.5.2 版类 52
4.5.3 标记值 53
4.5.4 约束 54
4.6 本章小结 55
第2部分 UML静态建模 56
第5章 UML用例圈 56
5.1 概述 56
5.2 执行者(actor) 57
5.2.1 什么是执行者 57
5.2.2 如何确定一个执行者 57
5.2.3 执行者和执行者之间的关系 58
5.3 用例(Use Case) 59
5.3.1 什么是用例 59
5.3.2 用例的特征 60
5.3.3 用例之间的关系 60
5.3.4 用例关系的比较 64
5.3.5 用例的描述 65
5.3.6 对用例进行测试 66
5.3.7 用例的使用误区 67
5.3.8 如何构造用例过程 69
5.3.9 如何创建有用的用例 72
5.4 使用用例捕获需求 73
5.4.1 概述 73
5.4.2 是需求有利于回顾 74
5.4.3 什么是Use Cases 74
5.4.4 Use Cases的说明 75
5.4.5 Use Cases的图形符号 76
5.4.6 Use Cases应用当中的复杂性和危险 77
5.4.7 需求捕获和系统复杂性 77
5.4.8 Use Cases的适用性 78
5.4.9 总结 78
5.5 本章小结 80
第6章 类图 80
6.1 一般化 80
6.1.1 普通一般化 81
6.1.2 受限一般化 86
6.2 关联结构 88
6.2.1 关联在UML中的表示 88
6.2.2 普通关联 90
6.2.3 递归关联 92
6.2.4 多向关联 92
6.2.5 限制关联 93
6.2.6 或关联 94
6.2.7 有序关联 94
6.2.8 关联类 95
6.3 整体和部分关联 95
6.3.1 组成 96
6.3.2 聚集 97
6.4 本章小结 99
第7章 包图 101
7.1 概述 101
7.2 包的基本意义 101
7.2.1 包的语义和表示 101
7.2.2 创建包的作用 102
7.2.3 创建包的原则 102
7.3 包间的依赖 103
7.4 包间的访问和引入依赖 104
7.5 包的模型和子模型 104
7.6 本章小结 104
第8章 构件图和配置图 106
8.1 构件图 106
8.1.1 什么是构件 106
8.1.2 构件与对象的相似性和区别 106
8.1.3 应用构件图 107
8.1.4 构件的内部设计 112
8.1.5 轻量和重量构件 116
8.1.6 构件的优点和缺点 117
8.2 配置图 119
8.2.1 什么是节点 119
8.2.2 应用配置图 119
8.3 本章小结 120
第3部分 UML动态建模 122
第9章 消息 122
9.1 消息定义 122
9.2 消息结构 122
9.3 消息参数 123
9.4 消息中的对象角色 124
9.5 消息的类型 126
9.5.1 报告消息 126
9.5.2 询问消息 126
9.5.3 祈使消息 126
9.6 UML中的消息类型 126
9.7 本章小结 127
第10章 交互图 128
10.1 概述 128
10.2 协作的概念 128
10.3 交互的概念 129
10.4 顺序图 129
10.4.1 顺序图的组成 129
10.4.2 顺序图的应用 130
10.4.3 顺序图的例子:电话拨号 134
10.4.4 正确认识顺序图 137
10.5 协作图 137
10.5.1 协作图的交互意义 139
10.5.2 协作 139
10.5.3 消息流 140
10.5.4 流 141
10.5.5 链接 142
10.5.6 协作图的使用 142
10.5.7 协作图与顺序图 143
10.5.8 模板 143
10.6 本章小结 144
第11章 活动图 145
11.1 活动图的组成 146
11.1.1 活动图介绍 146
11.1.2 活动图的组成要素 147
11.1.3 泳道 150
11.1.4 对象 151
11.1.5 信号 151
11.1.6 动作和转移 152
11.2 活动图的应用 153
11.2.1 运用活动图进行商业建模 154
11.2.2 第一次入学的UML活动图 155
11.2.3 活动图与循序图的搭配 156
11.2.4 建立相关房客退房的资讯系统 157
11.3 本章小结 159
第12章 状态图 161
12.1 状态 161
12.1.1 消息 161
12.1.2 状态 162
12.1.3 状态机视图 162
12.1.4 状态的种类 162
12.2 状态机 165
12.3 事件 165
12.3.1 调用事件 166
12.3.2 改变事件 166
12.3.3 信号事件 166
12.3.4 时间事件 167
12.4 转换 167
12.4.1 外部转换 168
12.4.2 触发器事件 168
12.4.3 监护条件 169
12.4.4 完成转换 169
12.4.5 动作 169
12.4.6 状态改变 170
12.4.7 嵌套状态 170
12.4.8 入口和出口动作 170
12.4.9 内部转换 170
12.5 状态图之间的消息传递 171
12.5.1 子状态 171
12.5.2 历史指示器 173
12.6 本章小结 173
第4部分 UML高级应用 174
第13章 运用UML建模的过程 174
13.1 软件工程的过程概念 174
13.2 评价软件过程 175
13.3 Rational的统一过程和软件开发的几个经验 178
13.4 过程的空间 180
13.5 时间维阶段和迭代 180
13.5.1 开始阶段 180
13.5.2 细节阶段 181
13.5.3 构造阶段 182
13.5.4 过渡阶段 183
13.5.5 迭代 184
13.6 过程的静态结构 184
13.6.1 工人、活动和产品 184
13.6.2 工作流程 185
13.7 UML建模的核心工作流程 186
13.7.1 商业建模 187
13.7.2 需求 187
13.7.3 分析和设计 188
13.7.4 实现 188
13.7.5 测试 189
13.7.6 展开 189
13.7.7 项目管理 189
13.7.8 配置和变化管理 189
13.7.9 环境 190
13.8 在过程中使用UML的方法 190
13.8.1 以架构为中心 190
13.8.2 用例驱动 191
13.8.3 UML对迭代开发过程的支持 191
13.8.4 UML的图与工作流程和模型之间的关系 192
13.9 在小型软件开发组织中使用CMM的一个例子 193
13.9.1 介绍 193
13.9.2 小组织和小项目 194
13.9.3 解释CMM 195
13.9.4 滥用CMM 198
13.9.5 结论 199
13.10 本章小结 199
第14章 UML的设计模式 201
14.1 模式的概念 201
14.2 使用设计模式的原因 202
14.3 模式的类别 203
14.4 模式的组成元素 205
14.5 模式的质量 206
14.6 一个简单的模式例子:代理模式 207
14.7 UML对模式的支持 208
14.7.1 参数化协作 209
14.7.2 对使用模式的建议 210
14.7.3 模式和用例之间的联系 211
14.8 应用设计模式进行系统设计 212
14.8.1 应用设计模式的主要活动 212
14.8.2 实例化和标识模式的步骤 212
14.9 模式选择举例:评估项目 213
14.9.1 实例化模式:“存储商业对象类型”模式 213
14.9.2 标识模式候选过程控制的例子 214
14.10 模式应用举例 216
14.10.1 同一个图的多个视图 217
14.10.2 删除、取消删除和重做 221
14.10.3 用户可定义的复杂的复合形状 222
14.10.4 形状选择 228
14.10.5 使编辑器可扩展 231
14.11 本章小结 233
第15章 类型一致性 235
15.1 类与类型 235
15.2 类型一致性原则 236
15.2.1 抗变性和协变性原则 237
15.2.2 抗变性和协变性的例子 237
15.2.3 图解抗变性与协变性 240
15.2.4 类型一致性必要条件综述 241
15.3 本章小结 242
第16章 UML实例——图书馆 243
16.1 需求分析 243
16.2 系统分析 243
16.2.1 需求分析 244
16.2.2 域分析 245
16.3 系统设计 247
16.3.1 体系设计 247
16.3.2 详细设计 248
16.3.3 用户接口设计 252
16.3.4 实现 253
16.3.5 测试和开发 254
16.4 本章小结 254
第17章 使用UML设计数据库应用 261
17.1 介绍 261
17.2 构映射到表 261
17.2.1 标识(identity) 261
17.2.2 域(属性类型) 262
17.2.3 类 262
17.2.4 关联 263
17.2.5 泛化 266
17.2.6 参考完整性 266
17.2.7 索引 269
17.2.8 范式 269
17.2.9 摘要 269
17.3 把功能映射到SQL命令 269
17.4 RDBMS的OO扩展 270
17.5 本章小结 272
附录 UML术语汇总 273