第一部分 基础知识 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 用例图 7
1.3.4 状态图 7
1.3.5 顺序图 8
1.3.6 活动图 9
1.3.7 协作图 10
1.3.8 构件图 11
1.3.9 部署图 11
1.4 其他特征 12
1.4.1 注释 12
1.4.2 关键字和构造型 12
1.5 UML2.0中的新图 13
1.5.1 组成结构图 13
1.5.2 交互纵览图 14
1.5.3 计时图 15
1.5.4 有创新也有保留的包图 15
1.6 为什么需要这么多种图 16
1.7 这不仅仅是一系列图 16
1.9 常见问题解答 17
1.8 小结 17
1.10 小测验和习题 18
1.10.1 小测验 18
1.10.2 习题 18
第2章 理解面向对象 20
2.1 无处不在的对象 20
2.2 一些面向对象的概念 22
2.2.1 抽象 22
2.2.2 继承 23
2.2.3 多态性 24
2.2.4 封装 24
2.2.5 消息传递 25
2.2.6 关联 26
2.2.7 聚集 27
2.3 意义 28
2.4 小结 29
2.5 常见问题解答 29
2.6 小测验和习题 30
第3章 运用面向对象 31
3.1 类的可视化表示 31
3.2 属性 32
3.3 操作 33
3.4 属性、操作和可视化表达 34
3.5 职责和约束 35
3.6 附加注释 36
3.7 类——应该做什么和如何识别它们 37
3.10 小测验和习题 39
3.10.1 小测验 39
3.9 常见问题解答 39
3.8 小结 39
3.10.2 习题 40
第4章 关系 41
4.1 关联 41
4.1.1 关联上的约束 42
4.1.2 关联类 43
4.1.3 链 43
4.2 多重性 43
4.3 限定关联 45
4.4 自身关联 45
4.5 继承和泛化 46
4.5.1 找出继承关系 47
4.6 依赖 48
4.5.2 抽象类 48
4.7 类图和对象图 49
4.8 小结 50
4.9 常见问题解答 51
4.10 小测验和习题 51
4.10.1 小测验 51
4.10.2 习题 51
第5章 聚集、组成、接口和实现 53
5.1 聚集 53
5.2 组成 54
5.3 组成结构图 54
5.4 接口和实现 55
5.5 接口和端口 58
5.5.1 可见性 58
5.6 小结 59
5.5.2 作用域 59
5.7 常见问题解答 60
5.8 小测验和习题 60
5.8.1 小测验 60
5.8.2 习题 60
第6章 介绍用例 61
6.1 什么是用例 61
6.2 用例的重要性 62
6.3 举例:饮料销售机 62
6.3.1 用例“买饮料” 62
6.3.2 其他用例 63
6.4 包含用例 64
6.5 扩展用例 65
6.8 常见问题解答 66
6.7 小结 66
6.6 开始用例分析 66
6.9 小测验和习题 67
6.9.1 小测验 67
6.9.2 习题 67
第7章 用例图 68
7.1 用例模型的表示法 68
7.1.1 回顾饮料销售机 69
7.1.2 跟踪场景中的步骤 69
7.2 用例之间关系的可视化表示 70
7.2.1 包含 70
7.2.2 扩展 71
7.2.3 泛化 72
7.4.1 理解领域 73
7.4 运用用例模型:举例 73
7.2.4 分组 73
7.3 用例图在分析过程中的作用 73
7.4.2 理解用户 74
7.4.3 理解用例 75
7.4.4 进一步深入 76
7.5 “清查存货” 77
7.5.1 结构元素 77
7.5.2 关系 77
7.5.3 分组 78
7.5.4 注释 78
7.5.5 扩展 78
7.5.6 其他 78
7.6 UML“大图” 78
7.9 小测验和习题 79
7.8 常见问题解答 79
7.7 小结 79
7.9.1 小测验 80
7.9.2 习题 80
第8章 状态图 81
8.1 什么是状态图 81
8.1.1 基本符号集 82
8.1.2 在状态图标中增加细节 82
8.1.3 增加转移的细节:事件和动作 83
8.1.4 增加转移的细节:保护条件 84
8.2 子状态 84
8.2.1 顺序子状态 84
8.2.2 并发子状态 85
8.4 UML 2.0中的新变化 86
8.3 历史状态 86
8.6 UML“大图” 87
8.5 为什么状态图很重要 87
8.7 小结 88
8.8 常见问题解答 89
8.9 小测验和习题 89
8.9.1 小测验 89
8.9.2 习题 89
第9章 顺序图 90
9.1 什么是顺序图 90
9.1.1 对象 90
9.1.2 消息 90
9.1.3 时间 91
9.2.1 类图 92
9.2 汽车和车钥匙 92
9.2.2 顺序图 93
9.3 饮料销售机 94
9.4 顺序图:一般顺序图 97
9.5 在消息序列中创建对象实例 98
9.6 帧化顺序图:UML2.0中的顺序图 100
9.6.1 交互事件 100
9.6.2 交互片段的组合 102
9.7 UML“大图” 103
9.8 小结 104
9.9 常见问题解答 104
9.10 小测验和习题 104
9.10.2 习题 105
9.10.1 小测验 105
10.1 什么是协作图 106
第10章 协作图 106
10.2 汽车和车钥匙 107
10.3 饮料销售机 110
10.4 创建对象 111
10.5 编号的一点注意事项 111
10.6 其他概念 112
10.6.1 发送给多对象的消息 112
10.6.2 返回结果 112
10.6.3 主动对象 113
10.6.4 同步 113
10.7 UML“大图” 114
10.10 小测验和习题 115
10.10.1 小测验 115
10.8 小结 115
10.9 常见问题解答 115
10.10.2 习题 116
第11章 活动图 117
11.1 基础:什么是活动图 117
11.1.1 判定 118
11.1.2 并发路径 118
11.1.3 信号 119
11.2 活动图的应用 119
11.3 泳道 120
11.4 混合图 122
11.5.1 一个活动的对象 123
11.5 UML2.0中的新概念 123
11.5.2 处理异常 124
11.5.3 活动的析构 124
11.5.4 标记时间并结束流程 125
11.5.5 特殊影响 126
11.6 对一个交互的纵览 127
11.7 UML“大图” 130
11.8 小结 130
11.9 常见问题解答 131
11.10 小测验和习题 132
11.10.1 小测验 132
11.10.2 习题 132
12.2 构件和接口 133
12.1 什么是构件 133
第12章 构件图 133
12.2.1 回顾接口 134
12.2.2 替换和复用 134
12.3 什么是构件图 135
12.3.1 在UML1.x和UML2.0中表示一个构件 135
12.3.2 接口表示法 136
12.3.3 黑盒和白盒 137
12.4 应用构件图 137
12.5 UML“大图”中的构件图 141
12.6 小结 142
12.7 常见问题解答 142
12.8.2 习题 143
12.8 小测验和习题 143
12.8.1 小测验 143
第13章 部署图 144
13.1 什么是部署图 144
13.2 应用部署图 146
13.2.1 家用计算机系统 146
13.2.2 令牌环网 147
13.2.3 ARCnet 148
13.2.4 细缆以太网 148
13.2.5 Ricochet无线网 149
13.3 UML“大图”中的部署图 150
13.6.2 习题 151
13.6.1 小测验 151
13.6 小测验和习题 151
13.5 常见问题解答 151
13.4 小结 151
第14章 理解包和UML语言基础 152
14.1 包图 152
14.1.1 包的作用 152
14.1.2 包之间的关系 153
14.1.3 合并包 154
14.2 层级 155
14.2.1 一个类比 156
14.2.2 继续 157
14.3 大胆深入 157
14.4 用包表示UML的底层结构 158
14.4.1 Core包 159
14.4.2 Profiles包 160
14.5 回到UML 162
14.5.1 又见4层结构 163
14.5.2 用包表示UML的上层结构 163
14.6 UML的扩展 165
14.6.1 构造型 165
14.6.2 图形构造型 166
14.6.3 约束 167
14.6.4 标记值 167
14.7 小结 167
14.8 常见问题解答 167
14.9.1 小测验 168
14.9.2 练习 168
14.9 小测验和习题 168
第15章 在开发过程中运用UML 169
15.1 开发过程方法学:传统的和现代的 169
15.1.1 传统的开发过程方法学 169
15.1.2 新的开发过程方法学 170
15.2 开发过程中必须做什么 170
15.3 GRAPPLE 171
15.4 RAD3:GRAPPLE的结构 172
15.4.1 需求收集 173
15.4.2 分析 174
15.4.3 设计 175
15.4.4 开发 176
15.4.5 部署 176
15.7 常见问题解答 177
15.6 小结 177
15.5 GRAPPLE总结 177
15.8 小测验和习题 178
第二部分 学习案例 181
第16章 学习案例介绍 181
16.1 从业务入手 181
16.2 用GRAPPLE开发过程解决问题 181
16.3 发现业务过程 182
16.3.1 招待一位顾客 182
16.3.2 准备饭菜 189
16.3.3 清理餐桌 190
16.4 吸取的经验教训 190
16.6 常见问题解答 191
16.5 小结 191
16.7 小测验和习题 192
16.7.1 小测验 192
16.7.2 习题 192
第17章 领域分析 193
17.1 分析业务过程会谈 193
17.2 开发初步类图 194
17.3 对类分组 195
17.4 形成关联 197
17.4.1 Customer参与的关联 197
17.4.2 Server参与的关联 199
17.4.3 Chef参与的关联 201
17.4.4 Busser参与的关联 201
17.4.5 Manager参与的关联 201
17.4.6 其他问题 202
17.5 形成聚集和组成 203
17.6 填充类的信息 204
17.6.1 Customer类 204
17.6.2 Employee类 204
17.6.3 Check类 206
17.7 有关模型的一些问题 206
17.7.1 模型词典 206
17.7.2 模型图的组织 206
17.8 吸取的经验教训 207
17.9 小结 207
17.10 常见问题解答 207
17.11 小测验和习题 207
17.11.2 习题 208
17.11.1 小测验 208
第18章 收集系统需求 209
18.1 开发系统的映像 211
18.2 收集系统需求 215
18.3 需求联合应用开发会议 215
18.4 结果 218
18.5 下一步该做什么 220
18.6 小结 220
18.7 常见问题解答 220
18.8 小测验和习题 221
18.8.1 小测验 221
18.8.2 习题 221
19.1 分析和描述用例 222
19.2 用例分析 222
第19章 开发用例 222
19.3 Server包 223
19.3.1 用例“Take an Order” 224
19.3.2 用例“Transmit the Order to the Kitchen” 224
19.3.3 用例“Change an Order” 225
19.3.4 用例“Track Order Status” 225
19.3.5 用例“Notify Chef about Party Status” 226
19.3.6 用例“Total Up a Check” 227
19.3.7 用例“Print a Check” 227
19.3.8 用例“Summon an Assistant” 228
19.3.9 其余的用例 229
19.4 系统中的构件 229
19.6 常见问题解答 230
19.5 小结 230
19.7 小测验和习题 231
19.7.1 小测验 231
19.7.2 习题 231
第20章 交互 232
20.1 系统中的工作部件 232
20.1.1 Server包 232
20.1.2 Chef包 233
20.1.3 Busser包 233
20.1.4 Assistant Server包 233
20.1.5 Assistant Chef包 233
20.2.1 用例“Take an Order” 234
20.2 系统中的交互 234
20.1.7 Coat-Check Clerk包 234
20.1.6 Bartender Chef包 234
20.2.2 用例“Change an Order” 236
20.2.3 用例“Track Order Status” 237
20.3 结论 238
20.4 小结 238
20.5 常见问题解答 239
20.6 小测验和习题 239
20.6.1 小测验 239
20.6.2 习题 240
第21章 设计外观、感觉和部署 241
21.1 GUI设计的一般原则 241
21.3 从用例到用户界面 243
21.2 用于GUI设计的JAD Session 243
21.4 用于GUI设计的UML图 245
21.5 描绘出系统的部署 246
21.5.1 网络 246
21.5.2 节点和系统部署图 247
21.6 下一步 248
21.7 听听项目的发起人怎么说 248
21.7.1 扩展销售区的地理范围 248
21.7.2 扩展餐馆的地理范围 249
21.8 小结 250
21.9 常见问题解答 250
21.10 小测验和习题 251
21.10.1 小测验 251
21.10.2 习题 251
22.1 参数化 252
第22章 理解设计模式 252
22.2 设计模式 254
22.3 职责链模式 255
22.3.1 职责链模式:餐馆领域 256
22.3.2 职责链模式:Web浏览器事件模型 257
22.4 我们自己的设计模式 258
22.5 使用设计模式的好处 260
22.6 小结 260
22.7 常见问题解答 261
22.8 小测验和习题 261
22.8.1 小测验 261
22.8.2 习题 261
23.1 回到餐馆 265
23.2 发明之母 265
第23章 嵌入式系统建模 265
第三部分 高级应用 265
23.3 研制GetAGrip 266
23.4 什么是嵌入式系统 268
23.5 嵌入式系统中的基本概念 268
23.5.1 时间 268
23.5.2 线程 268
23.5.3 中断 269
23.5.4 操作系统 270
23.6 对GetAGrip系统建模 272
23.6.1 类 272
23.6.2 用例 274
23.6.3 交互 274
23.6.5 整体部署 277
23.6.4 整体状态变化 277
23.7 锻炼肌肉 278
23.8 小结 278
23.9 常见问题解答 279
23.10 小测验和习题 279
23.10.1 小测验 279
23.10.2 习题 279
第24章 描绘UML的未来 280
24.1 在业务领域的扩展 280
24.2 从业务领域的扩展得到的经验 281
24.3 图形用户界面 281
24.3.1 连接到用例 281
24.3.2 GUI建模 282
24.4.1 专家系统的构件 283
24.4 专家系统 283
24.4.2 举例 285
24.4.3 知识库建模 286
24.5 Web应用 288
24.6 就写到这里吧 290
24.7 小结 290
24.8 常见问题解答 290
24.9 小测验和习题 291
24.9.1 小测验 291
24.9.2 习题 291
第四部分 附录 295
附录A 小测验答案 295
附录B UML建模工具 304
附录C UML图总结 322