第一部分 基础知识 3
第1章 UML简介 3
1.1 在纷繁复杂中寻求解决问题的办法 3
1.2 UML的诞生 4
1.3 UML的组成 5
1.3.1 类图 5
1.3.2 对象图 6
1.3.3 用例图 6
1.3.4 状态图 7
1.3.5 顺序图 7
1.3.6 活动图 9
1.3.7 协作图 9
1.3.8 构件图 9
1.3.9 部署图 10
1.4 其他特征 10
1.4.1 包 10
1.4.2 注释 11
1.4.3 构造型 11
1.5 为什么需要这么多种图 11
1.6 小结 12
1.7 常见问题解答 12
1.8 小测验和习题 13
1.8.1 小测验 13
1.8.2 习题 13
第2章 理解面向对象 14
2.1 无处不在的对象 14
2.2 一些概念 16
2.2.1 抽象 16
2.2.2 继承 16
2.2.3 多态性 17
2.2.4 封装 18
2.2.5 消息传递 19
2.2.6 关联 19
2.2.7 聚集 21
2.3 意义 22
2.4 小结 22
2.5 常见问题解答 23
2.6 小测验和习题 23
第3章 运用面向对象思想 24
3.1 类的可视化表示 24
3.2 属性 25
3.3 操作 26
3.4 属性、操作和可视化表达 27
3.5 职责和约束 28
3.6 附加注释 30
3.7 类——应该做什么和如何识别它们 30
3.8 小结 32
3.9 常见问题解答 32
3.10 小测验和习题 33
3.10.1 小测验 33
3.10.2 习题 33
第4章 关系 34
4.1 关联 34
4.1.1 关联上的约束 35
4.1.2 关联类 36
4.1.3 链 36
4.2 多重性 37
4.3 限定关联 38
4.4 自身关联 39
4.5 继承和泛化 39
4.5.1 找出继承关系 40
4.5.2 抽象类 41
4.6 依赖 41
4.7 小结 42
4.8 常见问题解答 42
4.9 小测验和习题 42
4.9.1 小测验 43
4.9.2 习题 43
第5章 聚集、组成、接口和实现 44
5.1 聚集 44
5.1.1 聚集上的约束 45
5.2 组成 45
5.3 语境 46
5.4 接口和实现 47
5.4.1 可见性 48
5.4.2 作用域 49
5.5 小结 49
5.6 常见问题解答 50
5.7 小测验和习题 50
5.7.1 小测验 50
5.7.2 习题 50
第6章 介绍用例 52
6.1 什么是用例 52
6.2 用例的重要性 53
6.3 举例:饮料自动销售机 53
6.3.1 用例:“买饮料” 53
6.3.2 其他用例 54
6.4 包含用例 55
6.5 扩展用例 55
6.6 开始用例分析 55
6.7 小结 56
6.8 常见问题解答 56
6.9 小测验和习题 57
6.9.1 小测验 57
6.9.2 习题 57
第7章 用例图 58
7.1 用例模型的表示法 58
7.1.1 回顾饮料销售机 59
7.1.2 跟踪场景中的步骤 59
7.2 用例之间的可视化表示 60
7.2.1 包含 60
7.2.2 扩展 61
7.2.3 泛化 61
7.2.4 分组 62
7.3 用例图在开发过程中的作用 62
7.4 运用用例模型:举例 63
7.4.1 理解领域 63
7.4.2 理解用户 63
7.4.3 理解用例 64
7.4.4 进一步深入 64
7.5 “清查存货” 66
7.5.1 结构元素 67
7.5.2 关系 67
7.5.3 分组 67
7.5.4 注释 67
7.5.5 扩展 67
7.5.6 其他 68
7.6 UML“大图” 68
7.7 小结 69
7.8 常见问题解答 69
7.9 小测验和习题 69
7.9.1 小测验 69
7.9.2 习题 70
第8章 状态图 71
8.1 什么是状态图 71
8.1.1 符号集 72
8.1.2 在状态图标中增加细节 72
8.1.3 增加转移的细节:事件和动作 73
8.1.4 增加转移的细节:监视条件 74
8.2 子状态 74
8.2.1 顺序子状态 75
8.2.2 并发子状态 75
8.3 历史状态 76
8.4 消息和信号 76
8.5 为什么状态图很重要 77
8.6 UML“大图” 78
8.7 小结 78
8.8 常见问题解答 79
8.9 小测验和习题 79
8.9.1 小测验 79
8.9.2 习题 80
第9章 顺序图 81
9.1 什么是顺序图 81
9.1.1 对象 81
9.1.2 消息 81
9.1.3 时间 82
9.2 图形用户界面(GUI) 82
9.2.1 交互序列 83
9.2.2 顺序图 83
9.2.3 用例 84
9.3 饮料自动销售机:实例顺序图和一般顺序图 84
9.3.1 实例顺序图 84
9.3.2 一般顺序图 85
9.4 在消息序列中创建对象实例 87
9.5 表示自身调用 89
9.6 UML“大图” 89
9.7 小结 90
9.8 常见问题解答 90
9.9 小测验和习题 90
9.9.1 小测验 90
9.9.2 习题 91
第10章 协作图 92
10.1 什么是协作图 92
10.2 图形用户界面(GUI) 93
10.3 饮料销售机 94
10.4 创建对象 96
10.5 其他概念 96
10.5.1 发送给多对象的消息 97
10.5.2 返回结果 97
10.5.3 主动对象 98
10.5.4 同步 98
10.6 UML大图 99
10.7 小结 99
10.8 常见问题解答 100
10.9 小测验和习题 100
10.9.1 小测验 100
10.9.2 习题 100
第11章 活动图 101
11.1 什么是活动图 101
11.1.1 判定 102
11.1.2 并发路径 102
11.1.3 信号 102
11.2 活动图的应用 103
11.2.1 操作:Fibs 103
11.2.2 过程:创建一个文档 104
11.3 泳道 106
11.4 混合图 107
11.5 UML大图 109
11.6 小结 110
11.7 常见问题解答 111
11.8 小测验和习题 111
11.8.1 小测验 111
11.8.2 习题 111
第12章 构件图 112
12.1 什么是构件 112
12.2 构件和接口 112
12.2.1 替换和重用 113
12.3 构件的类型 113
12.4 什么是构件图 114
12.4.1 构件的表示法 114
12.4.2 接口的表示法 115
12.5 应用构件图 116
12.5.1 带一个Java Applet的Web页面 116
12.5.2 带ActiveX控件的Web页面 117
12.5.3 PowerToys 118
12.6 UML“大图”中的构件图 119
12.7 小结 120
12.8 常见问题解答 120
12.9 小测验和习题 120
12.9.1 小测验 120
12.9.2 习题 120
第13章 部署图 122
13.1 什么是部署图 122
13.2 应用部署图 124
13.2.1 家用计算机系统 124
13.2.2 令牌环网 125
13.2.3 ARCnet 126
13.2.4 细缆以太网 126
13.2.5 Metricom公司的Ricochet无线网 127
13.3 UML“大图”中的部署图 128
13.4 小结 129
13.5 常见问题解答 129
13.6 小测验和习题 129
13.6.1 小测验 129
13.6.2 习题 129
第14章 理解UML语言基础 131
14.1 UML的组成结构 131
14.2 元模型层 132
14.2.1 基础包 133
14.2.2 行为元素包 134
14.2.3 模型管理包 135
14.3 UML的扩展 135
14.4 构造型 135
14.4.1 依赖 136
14.4.2 分类 136
14.4.3 类 137
14.4.4 泛化 137
14.4.5 包 137
14.4.6 构件 137
14.4.7 用于其他UML元素的构造型 137
14.4.8 图形构造型 138
14.5 约束 138
14.6 标签值 139
14.7 小结 139
14.8 常见问题解答 139
14.9 小测验和习题 140
第15章 在开发过程中运用UML 141
15.1 开发过程方法学:传统的和现代的 141
15.1.1 传统的开发过程方法学 141
15.1.2 新的开发过程方法学 142
15.2 开发过程中必须做什么 142
15.3 GRAPPLE 143
15.4 RAD3:GRAPPLE的结构 144
15.5 需求收集 145
15.5.1 发现业务过程 145
15.5.2 领域分析 145
15.5.3 识别协作系统 146
15.5.4 发现系统需求 146
15.5.5 将结果提交给客户 146
15.6 分析 146
15.6.1 理解系统的用法 147
15.6.2 充实用例 147
15.6.3 细化类图 147
15.6.4 分析对象状态变化 147
15.6.5 定义对象之间的交互 147
15.6.6 分析与协作系统的集成 147
15.7 设计 147
15.7.1 开发和细化对象图 148
15.7.2 开发构件图 148
15.7.3 制定部署计划 148
15.7.4 设计和开发用户界面原型 148
15.7.5 测试设计 148
15.7.6 开始编制文档 148
15.8 开发 148
15.8.1 编制代码 148
15.8.2 测试代码 149
15.8.3 构建用户界面和用户界面到代码的连接及测试 149
15.8.4 完成文档 149
15.9 部署 149
15.9.1 编制备份和恢复计划 149
15.9.2 在硬件上安装最终系统 149
15.9.3 测试安装后的系统 149
15.9.4 庆祝 149
15.10 GRAPPLE总结 149
15.11 小结 150
15.12 常见问题解答 150
15.13 小测验和习题 151
第二部分 学习案例 155
第16章 学习案例介绍 155
16.1 用GRAPPLE开发过程解决问题 155
16.2 发现业务过程 156
16.2.1 招待一位顾客 156
16.2.2 准备饭菜 162
16.2.3 清理餐桌 164
16.3 吸取的经验教训 165
16.4 小结 166
16.5 常见问题解答 166
16.6 小测验和习题 167
16.6.1 小测验 167
16.6.2 习题 167
第17章 领域分析 168
17.1 分析业务过程会谈 168
17.2 开发初步类图 169
17.3 对类分组 171
17.4 形成关联 173
17.4.1 Customer参与的关联 173
17.4.2 Server参与的关联 175
17.4.3 Chef参与的关联 177
17.4.4 Busser参与的关联 178
17.4.5 Manager参与的关联 178
17.4.6 其他问题 179
17.5 形成聚集和组成 179
17.6 填充类的信息 180
17.6.1 Customer类 181
17.6.2 Employee类 181
17.6.3 Check类 182
17.7 有关模型的一些问题 183
17.7.1 模型词典 183
17.7.2 模型图的组织 183
17.8 吸取的经验教训 183
17.9 小结 184
17.10 常见问题解答 184
17.11 小测验和习题 184
17.11.1 小测验 184
17.11.2 习题 185
第18章 收集系统需求 186
18.1 开发系统的映像 186
18.2 收集系统需求 192
18.3 需求联合应用开发会议 193
18.4 结果 195
18.5 下一步该做什么 198
18.6 小结 198
18.7 常见问题解答 198
18.8 小测验和习题 198
18.8.1 小测验 198
18.8.2 习题 199
第19章 开发用例 200
19.1 分析和描述用例 200
19.2 用例分析 200
19.3 Server包 201
19.3.1 用例“Take an Order” 202
19.3.2 用例“Transimit the Order to the Kitchen” 202
19.3.3 用例“Change an Order” 203
19.3.4 用例“Track Order Status” 203
19.3.5 用例“Notify Chef about Party Status” 204
19.3.6 用例“Total Up a Check” 205
19.3.7 用例“Print a Check” 205
19.3.8 用例“Summon an Assistant” 206
19.3.9 其余的用例 206
19.4 系统中的构件 207
19.5 小结 207
19.6 常见问题解答 208
19.7 小测验和习题 208
19.7.1 小测验 208
19.7.2 习题 208
第20章 交互和状态变化 209
20.1 系统中的工作部件 209
20.1.1 Server包 209
20.1.2 Chef包 210
20.1.3 Busser包 210
20.1.4 Assitant Server包 210
20.1.5 Assitant Chef包 210
20.1.6 Bartender Chef包 210
20.1.7 Coat-Check Clerkf包 211
20.2 系统中的交互 211
20.2.1 用例“Take an Order” 211
20.2.2 用例“Change an Order” 213
20.2.3 用例“Track Order Status” 215
20.3 结论 215
20.4 小结 216
20.5 常见问题解答 216
20.6 小测验和习题 216
20.6.1 小测验 217
20.6.2 习题 217
第21章 设计外观、感觉和部署 218
21.1 GUI设计的一般原则 218
21.2 用于GUI设计的JAD Session 219
21.3 从用例到用户界面 220
21.4 用于GUI设计的UML图 222
21.5 描绘出系统的部署 223
21.5.1 网络 224
21.5.2 节点和系统部署图 224
21.6 下一步 225
21.7 听听项目的发起人怎么说 226
21.7.1 扩展销售区的地理范围 226
21.7.2 扩展餐馆的地理范围 227
21.8 小结 228
21.9 常见问题解答 228
21.10 小测验和习题 229
21.10.1 小测验 229
21.10.2 习题 229
第22章 理解设计模式 230
22.1 参数化 230
22.2 设计模式 232
22.3 职责链模式 232
22.3.1 职责链模式:餐馆领域 233
22.3.2 职责链模式:Web浏览器事件模型 235
22.4 我们自己的设计模式 236
22.5 使用设计模式的好处 238
22.6 小结 238
22.7 常见问题解答 239
22.8 小测验和习题 239
22.8.1 小测验 239
22.8.2 习题 239
第三部分 高级应用 243
第23章 嵌入式系统建模 243
23.1 发明之母 243
23.2 研制GetAGrip 244
23.3 什么是嵌入式系统 245
23.4 嵌入式系统中的基本概念 246
23.4.1 时间 246
23.4.2 线程 246
23.4.3 中断 247
23.4.4 操作系统 248
23.5 对GetAGrip系统建模 250
23.5.1 类 250
23.5.2 用列 251
23.5.3 交互 252
23.5.4 整体状态变化 254
23.5.5 整体部署 255
23.6 锻炼肌肉 255
23.7 小结 256
23.8 常见问题解答 256
23.9 小测验和习题 256
23.9.1 小测验 256
23.9.2 习题 257
第24章 描绘UML的未来 258
24.1 在企业领域的扩展 258
24.2 从企业领域的扩展得到的经验 259
24.3 图形用户界面 259
24.3.1 连接到用例 260
24.3.2 GUI建模 260
24.4 专家系统 261
24.4.1 专家系统的构件 261
24.4.2 举例 263
24.4.3 知识库建模 264
24.5 Web应用 266
24.6 就写到这里吧 268
24.7 小结 268
24.8 常见问题解答 268
24.9 小测验和习题 269
24.9.1 小测验 269
24.9.2 习题 269
附录 273
附录A 小测验答案 273
附录B UML建模工具 281
附录C UML图总结 288