微信扫一扫,移动浏览光盘
简介
本书以UML为载体,将面向对象的分析设计思想巧妙地融入建模过程中
,通过贯穿全书的实例将软件系统开发过程中方方面面的知识有机地结合在
一起,用生动的语言和精彩的事例将复杂枯燥的软件过程讲解得津津有味。
全书分为准备篇、基础篇、进阶篇和总结篇四个部分。准备篇讲述面向
对象分析的一些基本概念,及学习建模需要了解的一些基本知识。基础篇对
UML的基础概念重新组织和归纳整理,进行扩展和讨论,引申出针对UML的这
些概念在面向对象方法中应用方法的思考。进阶篇以一个实例贯穿全篇,阐
述如何使用UML从头到尾地实施一个项目。总结篇针对在现实中经常遇到并
且较难掌握的问题进行深入的探讨,升华在前几篇学习到的知识。
本书可供正在学习编程、软件工程等知识,准备将来从事IT行业的读者
、正努力向设计师或系统分析员转变的技术人员及期望对软件分析设计更上
一层楼的设计人员学习和提高之用。
目录
目 录
大象希形
写给读者的话
关于本书
如何阅读本书
光盘使用说明
第一部分 准备篇——需要了解
第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
第二部分 基础篇——在学习中思考
第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
5.10.1 何时使用实施模型 151
第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
第三部分 进阶篇——在实践中思考
第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.6.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
1.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 提给读者的问题 372
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
第四部分 高级篇——在提炼中思考
第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
图目录
图1.1 传统型商务 4
图1.2 随需应变的商务 5
图1.3 对象组装 7
图1.4 面向对象的困难 9
图1.5 汽车的UML表述 13
图1.6 从现实世界到业务模型 15
图1.7 业务模型到概念模型 17
图1.8 从概念模型到设计模型 18
图1.9 面向对象分析设计的完整过程 20
图1.10 RUP的历史演进过程 21
图1.11 统一过程概述 22
图1.12 统一过程的最佳实践 26
图2.1 建模公式 29
图2.2 用例驱动视图 30
图2.3 统一过程一般抽象层次 32
图2.4 对象的独立性 34
图2.5 对象分析方法 36
图3.1 参与者 39
图3.2 参与者情况一 41
图3.3 参与者情况二 41
图3.4 参与者情况三 42
图3.5 参与者情况四 42
图3.6 业务工人的尴尬 44
图3.7 参与者、涉众、用户和角色的关系 46
图3.8 用例的构成 48
图3.9 填写取款单不是取款人的目的,因此不是用例 49
图3.10 后台监控和输入密码对参与者是没有意义的,因此不是用例 49
图3.11 ATM是没有吐钞的愿望的,因此不能驱动用例 49
图3.12 喝不能构成一个完整的事件,因此不能用来命名用例 49
图3.13 用例驱动 50
图3.14 获取用例准备工作 52
图3.15 描述事物的三种观点 55
图3.16 以完整目标作为用例 57
图3.17 以步骤作为用例 57
图3.18 网上购物系统——符合边界 60
图3.19 网上购物系统——超越边界 60
图3.20 业务用例实现 62
图3.21 概念用例 63
图3.22 寄信业务实体模型图 70
图3.23 领域包 72
图3.24 子系统包 72
图3.25 组织结构包 72
图3.26 层包 72
图3.27 设计类的版型 77
图3.28 实现关系 82
图3.29 精化关系 83
图3.30 分布式应用 86
图3.31 应用集成 86
图3.32 第三方系统 87
图3.33 SOA架构 87
图3.34 系统节点拓扑结构图示例 88
图3.35 部署模型图ATM示例 89
图4.1 业务用例视图之业务主角视角 91
图4.2 业务用例视图之业务视角 91
图4.3 业务用例实现视图 92
图4.4 借阅图书概念用例视图 93
图4.5 借阅图书系统用例视图 93
图4.6 系统用例实现视图 94
图4.7 概念层类图 95
图4.8 说明层类图 96
图4.9 实现层类图 96
图4.10 领域包图 97
图4.11 层次包图 97
图4.12 登机手续用例场景活动图示例 99
图4.13 组合活动 100
图4.14 对象交互活动图 101
图4.15 对象交互泳道图 102
图4.16 带角色职责的活动图 103
图4.17 图书生命周期状态图 105
图4.18 网上购买商品业务模型时序图 107
图4.19 购买商品概念模型时序图片断 109
图4.20 登录和查询事件流设计模型时序图片断 111
图4.21 网上购买商品业务模型协作图 112
图4.22 购买商品概念模型协作图片断 114
图4.23 登录和查询事件流设计模型协作图片断 114
图5.1 用例模型在统一过程中的地位 117
图5.2 三种用例模型的关系 118
图5.3 完整的业务用例模型 119
图5.4 完整的概念用例模型 123
图5.5 完整的用例模型 126
图5.6 领域模型推导 129
图5.7 用分析模型实现用例场景 132
图5.8 分析类获取结果 132
图5.9 分析模型的主要内容 134
图5.10 业务架构 137
图5.11 业务架构与业务用例模型、领域模型的关系 137
图5.12 软件层次广度视角架构图 138
图5.13 软件层次深度视角架构图 139
图5.14 立体化的架构 140
图5.15 设计模型的主要输入 143
图5.16 设计模型的主要内容 145
图5.17 推荐的设计模型用法 145
图5.18 组件定义 148
图5.19 实现组件 148
图5.20 实施模型示例一 150
图5.21 实施模型示例二 151
图6.1 业务建模工作流程 154
图6.2 业务建模活动集 155
图6.3 业务建模工件集 155
图6.4 系统建模工作流程 158
图6.5 系统建模活动集 160
图6.6 系统建模工件集 161
图6.7 分析设计工作流程 164
图6.8 定义备选架构 165
图6.9 改进备选架构 166
图6.10 分析行为 167
图6.11 设计非实时组件 168
图6.12 设计实时组件 169
图6.13 分析设计活动集 170
图6.14 分析设计工件集 170
图6.15 分析过程概要 171
图6.16 设计过程概要 172
图6.17 实施建模工作流程 173
图6.18 实施建模活动集 174
图6.19 实施建模工件集 175
图6.20 软件集成 175
图6.21 推荐的实施建模过程 176
图9.1 定义边界 204
图9.2 用电客户服务业务边界 205
图9.3 内部管理目标边界 206
图9.4 系统边界 207
图9.5 客户服务业务主角 212
图9.6 内部管理业务主角 214
图9.7 用电客户服务业务概要视图 220
图9.8 内部管理业务概要视图 223
图9.9 业务主角业务用例视图 225
图9.10 利用业务用例估算项目 227
图9.11 低压用电申请业务用例场景活动图 231
图9.12 高压用电申请业务用例场景活动图 232
图9.13 低压用电申请业务用例场景时序图 234
图9.14 低压用电申请业务用例场景协作图 235
图9.15 业务用例实现视图 238
图9.16 业务用例实现场景——申请登记实现 239
图9.17 业务模块领域包图 240
图9.18 问题领域基本情况 245
图9.19 申请永久用电业务对象图 248
图9.20 问题领域变量 248
图9.21 用户档案领域模型 249
图9.22 领域对象与业务对象之间的关系 250
图9.23 领域模型场景示例——编排抄表计划 251
图9.24 领域模型与用例模型的关系 253
图9.25 需求获取主要过程 271
图9.26 需求获取主要成果物 271
图10.1 概念模型的建立过程 275
图10.2 核心业务示例图 276
图10.3 挑选出的关键业务用例 277
图10.4 概念用例示例 278
图10.5 概念用例场景示例 279
图10.6 概念用例对象示例图 280
图10.7 分析类场景示例——创建申请单 281
图10.8 Client/Server架构示意图 282
图10.9 引入了工作流的架构示意图 283
图10.10 加入了工作流的分析类场景示例——创建申请单 284
图10.11 供电企业核心业务的结构化表示 288
图10.12 业务扩充的结构化表示一 289
图10.13 业务扩充的结构化表示二 289
图10.14 用户档案模型 290
图10.15 完整的核心业务架构 291
图10.16 构件集依赖关系 292
图10.17 面向对象的分析设计过程 295
图11.1 办理登机手续业务用例场景 300
图11.2 低压用电申请业务用例场景 303
图11.3 申请永久用电系统用例 304
图11.4 申请登记用例场景示例 306
图11.5 从业务需求到系统需求 308
图11.6 历史数据管理框架示例 312
图11.7 创建历史数据过程 313
图11.8 查询历史数据过程 313
图11.9 欠费业务规则类示例 315
图11.10 欠费业务规则实现示例 315
图11.11 交互规则管理库类图 316
图11.12 交互规则管理库实现图 317
图11.13 用例实现到系统用例关系图 319
图11.14 申请登记用例实现场景 321
图11.15 sur_申请登记用例实现 322
图11.16 批量申请登记用例实现场景 323
图11.17 sur_批量申请登记用例实现 325
图11.18 申请登记分析类图 326
图11.19 简单需求 329
图11.20 复杂需求 330
图11.21 没有软件架构设计的结果 330
图11.22 软件架构的内容 333
图11.23 用包图描述软件架构 334
图11.24 框架实现示意图 335
图11.25 查询数据架构实现示意图 336
图11.26 申请登记分析类图 339
图11.27 申请登记WEB层分析模型实现 340
图11.28 申请登记WEB层分析类图 341
图11.29 申请登记BusinessControl层实现 342
图11.30 申请登记BusinessControl层分析类图 343
图11.31 申请登记Entity层实现 343
图11.32 申请登记Entity层分析类图 344
图11.33 申请登记用例最终分析模型 344
图11.34 申请登记业务运行环境 350
图11.35 申请登记业务功能分布情况 350
图11.36 申请登记服务组件工作方式 351
图11.37 申请登记服务组件运行环境 352
图11.38 低压用电申请业务用例组件集 353
图11.39 组件实现关系图 354
图11.40 在Rose中为组件指定实现类 354
图11.41 用组件元素绘制程序包图 355
图11.42 用包元素绘制程序包图 355
图11.43 组件复用场景1——服务形式相同服务内容不同 356
图11.44 组件复用场景2——服务形式不同服务内容相同 357
图11.45 组件独立变化场景 357
图11.46 组件独立部署场景 358
图11.47 WPS环境下的组件安装和运行 359
图11.48 供电企业管理系统部署模型 362
图12.1 分析和设计的差别 364
图12.2 申请登记用例分析模型 366
图12.3 边界类映射到设计类示例 367
图12.4 控制类映射到设计类示例 368
图12.5 申请登记Web层设计模型 369
图12.6 申请登记Business层设计模型 370
图12.7 申请登记Business层设计类实现 371
图12.8 单个对象接口设计示例 375
图12.9 单个对象接口-->实现设计示例 376
图12.10 具有相似行为的对象接口设计示例 376
图12.11 无良好接口设计的层次交互 377
图12.12 采用门面模式后的层次交互 378
图12.13 基于行为模式的接口抽象策略 379
图12.14 基于服务的接口抽象策略 380
图12.15 基于使用方便目的的接口抽象策略 381
图12.16 自顶向下分包原则 384
图12.17 职能集中分包原则 385
图12.18 交叉依赖解决办法一 386
图12.19 交叉依赖解决办法二 386
图12.20 公共接口包 387
图12.21 项目各阶段的分包工作 388
图12.22 软件层次 389
图12.23 软件层次包设计示例 389
图12.24 业务模块包设计示例 390
图12.25 框架模块包设计示例 391
图12.26 代码包设计示例 391
图12.27 面向服务与面向对象包设计结合示例 393
图12.28 纯面向对象包设计示例 394
图13.1 生成java代码的相关菜单 397
图13.2 环境变量设置 397
图13.3 指定生成文件路径 398
图13.4 在Rose中编辑代码 399
图13.5 反向工程 400
图13.6 反向工程结果 400
图13.7 纵向分工开发模式(用例驱动) 403
图13.8 用例驱动项目计划 405
图13.9 纵向分工开发结果 406
图13.10 横向分工带来的层次独立性 408
图14.1 申请登记执行路径图 413
图14.2 测试因素分析 414
图15.1 线性思维 419
图15.2 系统思维 421
图15.3 线性思维下的系统分析设计结果 421
图15.4 系统思维下的分析设计结果 422
图15.5 SOA应用示例 424
图15.6 面向服务与用例驱动 425
图16.1 利用用例实现编制开发计划 429
图16.2 用例与可扩展架构 430
图17.1 抽象层次 432
图18.1 业务子系统与计算机子系统 437
图19.1 边界分析示例一 440
图19.2 边界分析示例二 441
图19.3 边界分析示例三 441
图19.4 边界分析示例四 442
图19.5 边界分析示例五 443
图19.6 边界分析示例六 443
图19.7 边界分析示例七 444
图19.8 边界意识决定设计好坏 444
图20.1 边界分析的接口形式 447
图20.2 用接口描述系统行为 448
图20.3 接口的实现方式选择 448
图21.1 SWTO分析 451
图21.2 读者视角 452
图21.3 图书馆视角 452
图21.4 图书管理员视角 453
图22.1 直接购买商品过程 456
图22.2 购买商品的第一种情形 457
图22.3 购买商品的第二种情形 457
图22.4 购买商品的第三种情形 458
图22.5 导购服务模式 459
图22.6 如何使用设计模式——基本实现 460
图22.7 简单工厂模式结构 461
图22.8 简单工厂模式实现 461
图22.9 抽象工厂模式结构 462
图22.10 抽象工厂实现 463
图22.11 生成器模式结构 463
图22.12 生成器模式实现 464
表目录
表5-1 业务用例模型工件的取舍参考 120
表8-1 电力营销系统涉众概要示例 187
表8-2 电力营销系统涉众简档示例 189
表8-3 电力营销系统用户概要示例 190
表8-4 电力营销系统用户简档示例 191
表8-5 电力营销系统消费者统计示例 192
表8-6 优先级矩阵示例 196
表8-7 需求调研迭代计划示例 197
表9-1 业务用例规约示例 236
表9-2 全局规则示例 257
表9-3 内禀规则示例 259
表9-4 非功能性需求——可靠性调研表 267
表9-5 非功能性需求——可用性调研表 268
表9-6 非功能性需求——有效性调研表 268
表9-7 非功能性需求——可移植性调研表 269
表11-1 用例规约示例 307
表14-1 “su_申请登记”用例场景规约 411
表14-2 测试场景 413
表14-3 测试矩阵 415
表14-4 设计测试例 416
表18-1 子系统划分要素 435
表18-2 利用DO矩阵划分子系统示例 438
大象希形
写给读者的话
关于本书
如何阅读本书
光盘使用说明
第一部分 准备篇——需要了解
第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
第二部分 基础篇——在学习中思考
第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
5.10.1 何时使用实施模型 151
第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
第三部分 进阶篇——在实践中思考
第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.6.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
1.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 提给读者的问题 372
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
第四部分 高级篇——在提炼中思考
第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
图目录
图1.1 传统型商务 4
图1.2 随需应变的商务 5
图1.3 对象组装 7
图1.4 面向对象的困难 9
图1.5 汽车的UML表述 13
图1.6 从现实世界到业务模型 15
图1.7 业务模型到概念模型 17
图1.8 从概念模型到设计模型 18
图1.9 面向对象分析设计的完整过程 20
图1.10 RUP的历史演进过程 21
图1.11 统一过程概述 22
图1.12 统一过程的最佳实践 26
图2.1 建模公式 29
图2.2 用例驱动视图 30
图2.3 统一过程一般抽象层次 32
图2.4 对象的独立性 34
图2.5 对象分析方法 36
图3.1 参与者 39
图3.2 参与者情况一 41
图3.3 参与者情况二 41
图3.4 参与者情况三 42
图3.5 参与者情况四 42
图3.6 业务工人的尴尬 44
图3.7 参与者、涉众、用户和角色的关系 46
图3.8 用例的构成 48
图3.9 填写取款单不是取款人的目的,因此不是用例 49
图3.10 后台监控和输入密码对参与者是没有意义的,因此不是用例 49
图3.11 ATM是没有吐钞的愿望的,因此不能驱动用例 49
图3.12 喝不能构成一个完整的事件,因此不能用来命名用例 49
图3.13 用例驱动 50
图3.14 获取用例准备工作 52
图3.15 描述事物的三种观点 55
图3.16 以完整目标作为用例 57
图3.17 以步骤作为用例 57
图3.18 网上购物系统——符合边界 60
图3.19 网上购物系统——超越边界 60
图3.20 业务用例实现 62
图3.21 概念用例 63
图3.22 寄信业务实体模型图 70
图3.23 领域包 72
图3.24 子系统包 72
图3.25 组织结构包 72
图3.26 层包 72
图3.27 设计类的版型 77
图3.28 实现关系 82
图3.29 精化关系 83
图3.30 分布式应用 86
图3.31 应用集成 86
图3.32 第三方系统 87
图3.33 SOA架构 87
图3.34 系统节点拓扑结构图示例 88
图3.35 部署模型图ATM示例 89
图4.1 业务用例视图之业务主角视角 91
图4.2 业务用例视图之业务视角 91
图4.3 业务用例实现视图 92
图4.4 借阅图书概念用例视图 93
图4.5 借阅图书系统用例视图 93
图4.6 系统用例实现视图 94
图4.7 概念层类图 95
图4.8 说明层类图 96
图4.9 实现层类图 96
图4.10 领域包图 97
图4.11 层次包图 97
图4.12 登机手续用例场景活动图示例 99
图4.13 组合活动 100
图4.14 对象交互活动图 101
图4.15 对象交互泳道图 102
图4.16 带角色职责的活动图 103
图4.17 图书生命周期状态图 105
图4.18 网上购买商品业务模型时序图 107
图4.19 购买商品概念模型时序图片断 109
图4.20 登录和查询事件流设计模型时序图片断 111
图4.21 网上购买商品业务模型协作图 112
图4.22 购买商品概念模型协作图片断 114
图4.23 登录和查询事件流设计模型协作图片断 114
图5.1 用例模型在统一过程中的地位 117
图5.2 三种用例模型的关系 118
图5.3 完整的业务用例模型 119
图5.4 完整的概念用例模型 123
图5.5 完整的用例模型 126
图5.6 领域模型推导 129
图5.7 用分析模型实现用例场景 132
图5.8 分析类获取结果 132
图5.9 分析模型的主要内容 134
图5.10 业务架构 137
图5.11 业务架构与业务用例模型、领域模型的关系 137
图5.12 软件层次广度视角架构图 138
图5.13 软件层次深度视角架构图 139
图5.14 立体化的架构 140
图5.15 设计模型的主要输入 143
图5.16 设计模型的主要内容 145
图5.17 推荐的设计模型用法 145
图5.18 组件定义 148
图5.19 实现组件 148
图5.20 实施模型示例一 150
图5.21 实施模型示例二 151
图6.1 业务建模工作流程 154
图6.2 业务建模活动集 155
图6.3 业务建模工件集 155
图6.4 系统建模工作流程 158
图6.5 系统建模活动集 160
图6.6 系统建模工件集 161
图6.7 分析设计工作流程 164
图6.8 定义备选架构 165
图6.9 改进备选架构 166
图6.10 分析行为 167
图6.11 设计非实时组件 168
图6.12 设计实时组件 169
图6.13 分析设计活动集 170
图6.14 分析设计工件集 170
图6.15 分析过程概要 171
图6.16 设计过程概要 172
图6.17 实施建模工作流程 173
图6.18 实施建模活动集 174
图6.19 实施建模工件集 175
图6.20 软件集成 175
图6.21 推荐的实施建模过程 176
图9.1 定义边界 204
图9.2 用电客户服务业务边界 205
图9.3 内部管理目标边界 206
图9.4 系统边界 207
图9.5 客户服务业务主角 212
图9.6 内部管理业务主角 214
图9.7 用电客户服务业务概要视图 220
图9.8 内部管理业务概要视图 223
图9.9 业务主角业务用例视图 225
图9.10 利用业务用例估算项目 227
图9.11 低压用电申请业务用例场景活动图 231
图9.12 高压用电申请业务用例场景活动图 232
图9.13 低压用电申请业务用例场景时序图 234
图9.14 低压用电申请业务用例场景协作图 235
图9.15 业务用例实现视图 238
图9.16 业务用例实现场景——申请登记实现 239
图9.17 业务模块领域包图 240
图9.18 问题领域基本情况 245
图9.19 申请永久用电业务对象图 248
图9.20 问题领域变量 248
图9.21 用户档案领域模型 249
图9.22 领域对象与业务对象之间的关系 250
图9.23 领域模型场景示例——编排抄表计划 251
图9.24 领域模型与用例模型的关系 253
图9.25 需求获取主要过程 271
图9.26 需求获取主要成果物 271
图10.1 概念模型的建立过程 275
图10.2 核心业务示例图 276
图10.3 挑选出的关键业务用例 277
图10.4 概念用例示例 278
图10.5 概念用例场景示例 279
图10.6 概念用例对象示例图 280
图10.7 分析类场景示例——创建申请单 281
图10.8 Client/Server架构示意图 282
图10.9 引入了工作流的架构示意图 283
图10.10 加入了工作流的分析类场景示例——创建申请单 284
图10.11 供电企业核心业务的结构化表示 288
图10.12 业务扩充的结构化表示一 289
图10.13 业务扩充的结构化表示二 289
图10.14 用户档案模型 290
图10.15 完整的核心业务架构 291
图10.16 构件集依赖关系 292
图10.17 面向对象的分析设计过程 295
图11.1 办理登机手续业务用例场景 300
图11.2 低压用电申请业务用例场景 303
图11.3 申请永久用电系统用例 304
图11.4 申请登记用例场景示例 306
图11.5 从业务需求到系统需求 308
图11.6 历史数据管理框架示例 312
图11.7 创建历史数据过程 313
图11.8 查询历史数据过程 313
图11.9 欠费业务规则类示例 315
图11.10 欠费业务规则实现示例 315
图11.11 交互规则管理库类图 316
图11.12 交互规则管理库实现图 317
图11.13 用例实现到系统用例关系图 319
图11.14 申请登记用例实现场景 321
图11.15 sur_申请登记用例实现 322
图11.16 批量申请登记用例实现场景 323
图11.17 sur_批量申请登记用例实现 325
图11.18 申请登记分析类图 326
图11.19 简单需求 329
图11.20 复杂需求 330
图11.21 没有软件架构设计的结果 330
图11.22 软件架构的内容 333
图11.23 用包图描述软件架构 334
图11.24 框架实现示意图 335
图11.25 查询数据架构实现示意图 336
图11.26 申请登记分析类图 339
图11.27 申请登记WEB层分析模型实现 340
图11.28 申请登记WEB层分析类图 341
图11.29 申请登记BusinessControl层实现 342
图11.30 申请登记BusinessControl层分析类图 343
图11.31 申请登记Entity层实现 343
图11.32 申请登记Entity层分析类图 344
图11.33 申请登记用例最终分析模型 344
图11.34 申请登记业务运行环境 350
图11.35 申请登记业务功能分布情况 350
图11.36 申请登记服务组件工作方式 351
图11.37 申请登记服务组件运行环境 352
图11.38 低压用电申请业务用例组件集 353
图11.39 组件实现关系图 354
图11.40 在Rose中为组件指定实现类 354
图11.41 用组件元素绘制程序包图 355
图11.42 用包元素绘制程序包图 355
图11.43 组件复用场景1——服务形式相同服务内容不同 356
图11.44 组件复用场景2——服务形式不同服务内容相同 357
图11.45 组件独立变化场景 357
图11.46 组件独立部署场景 358
图11.47 WPS环境下的组件安装和运行 359
图11.48 供电企业管理系统部署模型 362
图12.1 分析和设计的差别 364
图12.2 申请登记用例分析模型 366
图12.3 边界类映射到设计类示例 367
图12.4 控制类映射到设计类示例 368
图12.5 申请登记Web层设计模型 369
图12.6 申请登记Business层设计模型 370
图12.7 申请登记Business层设计类实现 371
图12.8 单个对象接口设计示例 375
图12.9 单个对象接口-->实现设计示例 376
图12.10 具有相似行为的对象接口设计示例 376
图12.11 无良好接口设计的层次交互 377
图12.12 采用门面模式后的层次交互 378
图12.13 基于行为模式的接口抽象策略 379
图12.14 基于服务的接口抽象策略 380
图12.15 基于使用方便目的的接口抽象策略 381
图12.16 自顶向下分包原则 384
图12.17 职能集中分包原则 385
图12.18 交叉依赖解决办法一 386
图12.19 交叉依赖解决办法二 386
图12.20 公共接口包 387
图12.21 项目各阶段的分包工作 388
图12.22 软件层次 389
图12.23 软件层次包设计示例 389
图12.24 业务模块包设计示例 390
图12.25 框架模块包设计示例 391
图12.26 代码包设计示例 391
图12.27 面向服务与面向对象包设计结合示例 393
图12.28 纯面向对象包设计示例 394
图13.1 生成java代码的相关菜单 397
图13.2 环境变量设置 397
图13.3 指定生成文件路径 398
图13.4 在Rose中编辑代码 399
图13.5 反向工程 400
图13.6 反向工程结果 400
图13.7 纵向分工开发模式(用例驱动) 403
图13.8 用例驱动项目计划 405
图13.9 纵向分工开发结果 406
图13.10 横向分工带来的层次独立性 408
图14.1 申请登记执行路径图 413
图14.2 测试因素分析 414
图15.1 线性思维 419
图15.2 系统思维 421
图15.3 线性思维下的系统分析设计结果 421
图15.4 系统思维下的分析设计结果 422
图15.5 SOA应用示例 424
图15.6 面向服务与用例驱动 425
图16.1 利用用例实现编制开发计划 429
图16.2 用例与可扩展架构 430
图17.1 抽象层次 432
图18.1 业务子系统与计算机子系统 437
图19.1 边界分析示例一 440
图19.2 边界分析示例二 441
图19.3 边界分析示例三 441
图19.4 边界分析示例四 442
图19.5 边界分析示例五 443
图19.6 边界分析示例六 443
图19.7 边界分析示例七 444
图19.8 边界意识决定设计好坏 444
图20.1 边界分析的接口形式 447
图20.2 用接口描述系统行为 448
图20.3 接口的实现方式选择 448
图21.1 SWTO分析 451
图21.2 读者视角 452
图21.3 图书馆视角 452
图21.4 图书管理员视角 453
图22.1 直接购买商品过程 456
图22.2 购买商品的第一种情形 457
图22.3 购买商品的第二种情形 457
图22.4 购买商品的第三种情形 458
图22.5 导购服务模式 459
图22.6 如何使用设计模式——基本实现 460
图22.7 简单工厂模式结构 461
图22.8 简单工厂模式实现 461
图22.9 抽象工厂模式结构 462
图22.10 抽象工厂实现 463
图22.11 生成器模式结构 463
图22.12 生成器模式实现 464
表目录
表5-1 业务用例模型工件的取舍参考 120
表8-1 电力营销系统涉众概要示例 187
表8-2 电力营销系统涉众简档示例 189
表8-3 电力营销系统用户概要示例 190
表8-4 电力营销系统用户简档示例 191
表8-5 电力营销系统消费者统计示例 192
表8-6 优先级矩阵示例 196
表8-7 需求调研迭代计划示例 197
表9-1 业务用例规约示例 236
表9-2 全局规则示例 257
表9-3 内禀规则示例 259
表9-4 非功能性需求——可靠性调研表 267
表9-5 非功能性需求——可用性调研表 268
表9-6 非功能性需求——有效性调研表 268
表9-7 非功能性需求——可移植性调研表 269
表11-1 用例规约示例 307
表14-1 “su_申请登记”用例场景规约 411
表14-2 测试场景 413
表14-3 测试矩阵 415
表14-4 设计测试例 416
表18-1 子系统划分要素 435
表18-2 利用DO矩阵划分子系统示例 438
大象——Thinking in UML
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
Video Player
×
Audio Player
×
pdf Player
×
亲爱的云图用户,
光盘内的文件都可以直接点击浏览哦
无需下载,在线查阅资料!