大象希形 2
写给读者的话 2
关于本书 2
如何阅读本书 2
光盘使用说明 2
第一部分 准备篇—需要了解 2
第1章 为什么需要UML 2
1.1 面向过程还是面向对象 2
1.1.1 面向过程方法 3
1.1.2 面向过程的困难 4
1.1.3 面向对象方法 6
1.1.4 面向对象的困难 8
1.2 UML带来了什么 10
1.2.1 什么是UML 10
1.2.2 统一语言 11
1.2.3 可视化 12
1.2.4 从现实世界到业务模型 14
1.2.5 从业务模型到概念模型 15
1.2.6 从概念模型到设计模型 17
1.2.7 面向对象的困难解决了吗 18
1.2.7.1 从现实世界到业务模型 18
1.2.7.2 从业务模型到概念模型 19
1.2.7.3 从概念模型到设计模型 19
1.3 统一过程简介 20
1.3.1 RUP是什么 20
1.3.2 RUP与UML 22
1.3.3 RUP与软件工程 23
1.3.4 RUP与最佳实践 25
1.3.5 RUP与本书 25
第2章 建模基础 27
2.1 建模 27
2.2 用例驱动 29
2.3 抽象层次 31
2.4 视图 32
2.5 对象分析方法 34
第二部分 基础篇—在学习中思考 38
第3章 UML核心元素 38
3.1 版型 38
3.2 参与者 39
3.2.1 基本概念 39
3.2.1.1 参与者位于边界之外 39
3.2.1.2 参与者可以非人 40
3.2.2 发现参与者 40
3.2.3 业务主角 42
3.2.4 业务工人 43
3.2.5 参与者与涉众的关系 44
3.2.6 参与者与用户的关系 45
3.2.7 参与者与角色的关系 45
3.2.8 参与者的核心地位 45
3.2.9 检查点 46
3.3 用例 47
3.3.1 基本概念 47
3.3.2 用例的特征 48
3.3.3 用例的粒度 50
3.3.4 用例的获得 52
3.3.5 用例和功能的误区 54
3.3.6 目标和步骤的误区 57
3.3.7 用例粒度的误区 59
3.3.8 业务用例 61
3.3.9 业务用例实现 62
3.3.10 概念用例 63
3.3.11 系统用例 64
3.3.12 用例实现 64
3.4 边界 65
3.4.1 边界决定视界 66
3.4.2 边界决定抽象层次 66
3.4.3 灵活使用边界 67
3.5 业务实体 68
3.5.1 业务实体的属性 68
3.5.2 业务实体的方法 69
3.5.3 获取业务实体 69
3.6 包 71
3.7 分析类 73
3.7.1 边界类 74
3.7.2 控制类 75
3.7.3 实体类 75
3.7.4 分析类的三高 76
3.8 设计类 77
3.8.1 类 78
3.8.2 属性 78
3.8.3 方法 78
3.8.4 可见性 78
3.9 关系 79
3.9.1 关联关系(association) 79
3.9.2 依赖关系(dependency) 80
3.9.3 扩展关系(extends ) 80
3.9.4 包含关系(include) 81
3.9.5 实现关系(realize) 81
3.9.6 精化关系(refine) 82
3.9.7 泛化关系(generalization) 83
3.9.8 聚合关系(aggregation) 83
3.9.9 组合关系(composition) 83
3.10 组件 84
3.10.1 完备性 85
3.10.2 独立性 85
3.10.3 逻辑性 85
3.10.4 透明性 85
3.10.5 使用组件 85
3.11 节点 87
3.11.1 分布式应用环境 88
3.11.2 多设备应用环境 88
第4章 UML核心视图 90
4.1 静态视图 90
4.1.1 用例图 90
4.1.1.1 业务用例视图 90
4.1.1.2 业务用例实现视图 92
4.1.1.3 概念用例视图 92
4.1.1.4 系统用例视图 92
4.1.1.5 系统用例实现视图 93
4.1.2 类图 94
4.1.2.1 概念层类图 95
4.1.2.2 说明层类图 95
4.1.2.3 实现层类图 95
4.1.3 包图 97
4.2 动态视图 97
4.2.1 活动图 98
4.2.1.1 用例活动图 98
4.2.1.2 对象活动图 101
4.2.1.3 泳道 101
4.2.1.4 业务场景建模 102
4.2.1.5 用例场景建模 103
4.2.2 状态图 104
4.2.3 时序图 106
4.2.3.1 业务模型时序图 106
4.2.3.2 概念模型时序图 109
4.2.3.3 设计模型时序图 110
4.2.4 协作图 110
4.2.4.1 业务模型协作图 112
4.2.4.2 概念模型协作图 113
4.2.4.3 设计模型协作图 113
第5章 UML核心模型 116
5.1 用例模型概述 116
5.2 业务用例模型 118
5.2.1 业务用例模型主要内容 120
5.2.2 业务用例模型工件的取舍 120
5.2.3 何时使用业务用例模型 121
5.3 概念用例模型 122
5.3.1 概念用例模型的主要内容 123
5.3.2 获得概念用例 124
5.3.3 何时使用概念用例模型 124
5.4 系统用例模型 125
5.4.1 系统用例模型的主要内容 125
5.4.2 获得系统用例 127
5.5 领域模型 128
5.6 分析模型 130
5.6.1 如何使用分析模型 131
5.6.2 分析模型的主要内容 133
5.6.3 分析模型的意义 134
5.7 软件架构和框架 135
5.7.1 软件架构 136
5.7.1.1 业务架构 136
5.7.1.2 软件架构 138
5.7.1.3 架构描述 139
5.7.2 软件框架 141
5.7.3 何时使用架构和框架 142
5.8 设计模型 142
5.8.1 设计模型的应用场合 143
5.8.2 设计模型的主要内容 144
5.8.3 从分析模型映射到设计模型 146
5.9 组件模型 147
5.9.1 何时使用组件模型 149
5.9.2 广义组件的用法 149
5.10 实施模型 150
第6章 统一过程核心工作流简介 152
6.1 业务建模工作流程 153
6.1.1 工作流程 153
6.1.2 活动集和工件集 153
6.1.3 业务建模的目标和场景 156
6.1.3.1 场景#1—组织图 156
6.1.3.2 场景#2—领域建模 156
6.1.3.3 场景#3—单业务多系统 156
6.1.3.4 场景#4—通用业务模型 157
6.1.3.5 场景#5—新业务 157
6.1.3.6 场景#6—修改 157
6.2 系统建模工作流程 157
6.2.1 工作流程 157
6.2.1.1 分析问题 158
6.2.1.2 理解涉众需求 158
6.2.1.3 定义系统 159
6.2.1.4 改进系统定义 159
6.2.1.5 管理系统规模 159
6.2.1.6 管理需求变更 159
6.2.2 活动集和工件集 160
6.2.2.1 前景 160
6.2.2.2 涉众请求 161
6.2.2.3 需求属性 162
6.2.2.4 软件需求规约 162
6.2.2.5 用例示意板 162
6.2.3 系统建模的目标 162
6.3 分析设计建模工作流程 163
6.3.1 工作流程 163
6.3.1.1 定义和改进架构 164
6.3.1.2 分析行为 165
6.3.1.3 设计组件(构件) 166
6.3.1.4 设计数据库 169
6.3.2 活动集和工件集 170
6.3.3 分析设计的目标 171
6.3.4 推荐的分析设计工作流程简介 171
6.4 实施建模工作流程 173
6.4.1 工作流程 173
6.4.2 活动集和工件集 174
6.4.3 推荐的实施建模工作流程 175
第7章 迭代式软件生命周期 179
第三部分 进阶篇—在实践中思考 182
第8章 准备工作 182
8.1 案例说明 182
8.2 了解问题领域 183
8.2.1 了解业务概况 183
8.2.2 整理业务目标 183
8.3 做好涉众分析 184
8.3.1 什么是涉众 184
8.3.2 发现和定义涉众 184
8.3.2.1 业主 185
8.3.2.2 业务提出者 185
8.3.2.3 业务管理者 185
8.3.2.4 业务执行者 186
8.3.2.5 第三方 186
8.3.2.6 承建方 186
8.3.2.7 相关的法律法规 186
8.3.2.8 用户 187
8.3.3 涉众分析报告 187
8.3.3.1 涉众概要 187
8.3.3.2 涉众简档 189
8.3.3.3 用户概要 190
8.3.3.4 用户简档 191
8.3.3.5 消费者统计 192
8.4 规划业务范围 193
8.4.1 规划业务目标 193
8.4.2 规划涉众期望 193
8.5 整理好你的思路 194
8.5.1 划分优先级 194
8.5.1.1 涉众优先级标准 195
8.5.1.2 期望优先级标准 195
8.5.1.3 优先级矩阵 195
8.5.2 规划需求层次 196
8.5.2.1 第一层次:业务架构 196
8.5.2.2 第二层次:业务流程 196
8.5.2.3 第三层次:工作细节 197
8.5.3 需求调研计划 197
8.6 客户访谈技巧 198
8.6.1 沟通的困难 198
8.6.2 沟通技巧 199
8.6.2.1 建立平等的对话平台 200
8.6.2.2 做足准备工作 200
8.6.2.3 以我为主 200
8.2.4 改变沟通策略 201
8.6.2.5 把握需求节奏 201
8.6.2.6 记录与反馈 201
8.7 提给读者的问题 202
第9章 获取需求 203
9.1 定义边界 203
9.1.1 盘古开天—从混沌走向清晰 203
9.1.2 现在行动:定义边界 204
9.1.3 进一步讨论 206
9.1.3.1 第一个讨论 206
9.1.3.2 第二个讨论 207
9.1.3.3 第三个讨论 208
9.1.4 提给读者的问题 209
9.2 发现主角 210
9.2.1 女娲造人—谁来掌管这个世界 210
9.2.2 现在行动:发现主角 210
9.2.2.1 第一个例子 211
9.2.2.2 第二个例子 211
9.2.3 进一步讨论 214
9.2.3.1 第一个讨论 214
9.2.3.2 第二个讨论 215
9.2.3.3 第三个讨论 215
9.2.3.4 第四个讨论 216
9.2.3.5 第五个讨论 216
9.2.4 提给读者的问题 217
9.3 获取业务用例 217
9.3.1 炎黄之治—从愚昧走向文明 217
9.3.2 现在行动:获取业务用例 218
9.3.2.1 第一个例子 218
9.3.2.2 第二个例子 221
9.3.2.3 第三个例子 224
9.3.3 进一步讨论 224
9.3.3.1 第一个讨论 224
9.3.3.2 第二个讨论 226
9.3.3.3 第三个讨论 226
9.3.4 提给读者的问题 228
9.4 业务建模 228
9.4.1 商鞅变法—强盛的必由之路 228
9.4.2 现在行动:建立业务模型 229
9.4.2.1 业务用例场景示例 229
9.4.2.2 业务用例规约示例 235
9.4.2.3 业务对象模型 237
9.4.2.4 业务用例实现视图 237
9.4.2.5 业务用例实现场景示例 238
9.4.2.6 包图 239
9.4.3 进一步讨论 240
9.4.3.1 第一个讨论 240
9.4.3.2 第二个讨论 241
9.4.3.3 第三个讨论 241
9.4.3.4 第四个讨论 242
9.4.3.5 第五个讨论 242
9.4.4 提给读者的问题 243
9.5 领域建模 243
9.5.1 风火水土—寻找构成世界的基本元素 243
9.5.2 现在行动:建立领域模型 244
9.5.2.1 提出领域问题 245
9.5.2.2 分析领域问题 246
9.5.2.3 建立领域模型 248
9.5.2.4 验证领域模型 250
9.5.2.5 领域建模归纳 250
9.5.3 进一步讨论 252
9.5.3.1 第一个讨论:为什么需要领域模型 252
9.5.3.2 第二个讨论:怎样选择问题领域 252
9.5.3.3 第三个讨论:领域模型与用例模型 253
9.5.3.4 第四个讨论:领域模型和设计模型 254
9.5.3.5 第五个讨论:领域模型要做到什么程度 254
9.5.4 提给读者的问题 255
9.6 提炼业务规则 255
9.6.1 牛顿的思考—揭穿苹果的秘密 255
9.6.2 现在行动:提炼业务规则 256
9.6.2.1 全局规则 256
9.6.2.2 交互规则 258
9.6.2.3 内察规则 258
9.6.2.4 分类业务规则的意义 258
9.6.3 进一步讨论 259
9.6.3.1 第一个讨论:需求管理和业务规则管理 259
9.6.3.2 第二个讨论:分类业务规则对于开发的意义 260
9.6.4 提给读者的问题 260
9.7 获取非功能性需求 261
9.7.1 非物质需求—精神文明是不可缺少的 261
9.7.2 现在行动:获取非功能性需求 262
9.7.2.1 可靠性 263
9.7.2.2 可用性 264
9.7.2.3 有效性 265
9.7.2.4 可移植性 266
9.7.3 进一步讨论 266
9.7.3.1 第一个讨论:如何采集非功能性需求 266
9.7.3.2 第二个讨论:如何记录非功能性需求 270
9.7.4 提给读者的问题 270
9.8 主要成果物 270
第10章 需求分析 273
10.1 关键概念分析 273
10.1.1 阿基米德杠杆—找到撬动地球的支点 273
10.1.2 现在行动:建立概念模型 274
10.1.2.1 获取概念用例 274
10.1.2.2 分析概念用例 278
10.1.2.3 建立概念模型 280
10.1.3 进一步讨论 285
10.1.3.1 第一个讨论:概念模型和领域模型 285
10.1.3.2 第二个讨论:软件架构的引入 285
10.1.4 提给读者的问题 286
10.2 业务架构 286
10.2.1 拼图游戏—我们也想造个世界 286
10.2.2 现在行动:建立业务架构 287
10.2.3 进一步讨论 292
10.2.3.1 第一个讨论:结构化设计方法和业务架构方法 292
10.2.3.2 第二个讨论:业务构件和业务实体 293
10.2.3.3 第三个讨论:业务架构和软件架构 294
10.2.3.4 第四个讨论:建模的价值 294
10.2.4 提给读者的问题 296
10.3 系统原型 296
第11章 系统分析 299
11.1 确定系统用例 299
11.1.1 开始规划—确定新世界的万物 299
11.1.2 现在行动:确定系统用例 301
11.1.3 现在行动:描述系统用例 305
11.1.4 进一步讨论 308
11.1.5 提给读者的问题 310
11.2 分析业务规则 310
11.2.1 设定规则—没有规矩不成方圆 310
11.2.2 现在行动:分析业务规则 311
11.2.3 提给读者的问题 318
11.3 用例实现 318
11.3.1 绘制蓝图—世界将这样运行 318
11.3.2 现在行动:实现用例 319
11.3.3 进一步讨论 324
11.3.4 提给读者的问题 328
11.4 软件架构和框架 329
11.4.1 设计架构—新世界的骨架 329
11.4.2 什么是软件架构 331
11.4.3 什么是软件框架 332
11.4.4 软件架构的基本构成 333
11.4.5 应用软件架构 336
11.4.6 提给读者的问题 337
11.5 分析模型 338
11.5.1 设计功能零件—让世界初步运转起来 338
11.5.2 现在行动:建立分析模型 338
11.5.3 进一步讨论 345
11.5.4 提给读者的问题 347
11.6 组件模型 348
11.6.1 设计功能部件—构建世界的基础设施 348
11.6.2 现在行动:建立组件模型 349
11.6.3 进一步讨论 355
11.6.4 提给读者的问题 360
11.7 部署模型 360
11.7.1 安装零部件—组装一个新世界 360
11.7.2 现在行动:建立部署模型 361
11.7.3 提给读者的问题 363
第12章 系统设计 364
12.1 系统分析与系统设计的差别 364
12.2 设计模型 365
12.2.1 按图索骥—为新世界添砖加瓦 365
12.2.2 现在行动:将分析模型映射到设计模型 366
12.2.3 进一步讨论 370
12.2.4 提给读者的问题3 72
12.3 接口设计 373
12.3.1 畅通无阻—构建四通八达的神经网络 373
12.3.2 现在行动:设计接口 374
12.3.3 进一步讨论 380
12.3.4 提给读者的问题 382
12.4 包设计 383
12.4.1 分工合作—组织有序世界才能更好 383
12.4.2 现在行动:设计包 388
12.4.3 进一步讨论 392
12.5 提给读者的问题 395
第13章 开发 396
13.1 生成代码 396
13.1.1 现在行动:生成代码 397
13.1.2 进一步讨论 401
13.2 分工策略 402
13.2.1 纵向分工策略 402
13.2.2 横向分工策略 407
13.2.3 选择适合你的开发分工策略 409
第14章 测试 410
14.1 质量保证—新世界需要稳健运行 410
14.2 设计和开发测试例 411
14.3 提给读者的问题 417
第四部分 高级篇—在提炼中思考 419
第15章 理解用例的本质 419
15.1 用例是系统思维 419
15.2 用例是面向服务的 423
15.3 善用用例方法 425
第16章 理解用例驱动 427
16.1 用例与项目管理 427
16.2 用例与可扩展架构 428
第17章 理解建模的抽象层次 431
17.1 再讨论抽象层次 431
17.1.1 层次高低问题 431
17.1.2 层次不交叉问题 432
17.2 如何决定抽象层次 432
17.3 抽象层次与UML建模的关系 433
第18章 划分子系统的问题 434
18.1 面向对象的子系统问题 434
18.2 UC矩阵还适用吗 434
18.3 如何划分子系统 435
第19章 学会使用系统边界 439
19.1 边界是面向对象的保障 439
19.2 利用边界来分析需求 439
19.2.1 边界分析示例一 440
19.2.2 边界分析示例二 442
19.3 边界意识决定设计好坏 444
第20章 学会从接口认知事物 446
20.1 怎样描述一件事物 446
20.2 接口是系统的灵魂 447
第21章 学会正确选择 449
21.1 屁股决定脑袋—学会综合权衡 449
21.2 理辩则明—学会改变视角 450
第22章 学会使用设计模式 455
22.1 如何学习设计模式 455
22.2 如何使用设计模式 459
附录 UML视图常用元素参考 466
图目录 471
表目录 479
后记 480