第一部分 UML 和 UP 介绍 1
第1章 什么是 UML ? 2
1.1 章节指示图 2
1.2 什么是 UML? 2
1.3 UML 的诞生 3
1.4 MDA - UML的未来 5
1.5 为什么“统一”? 6
1.6 对象和 UML 7
1.7 UML 结构 8
1.8 UML构造块 8
1.8.1 物件 9
1.8.2 关系 9
1.8.3 图 10
1.9 UML 公共机制 12
1.9.1 规格说明 12
1.9.2 修饰 13
1.9.3 公共分类 14
1.9.4 扩展机制 15
1.10 构架 18
1.11 我们已经学习了 19
第2章 什么是统一过程? 22
2.1 章节指示图 22
2.2 什么是 UP? 22
2.3 UP 的诞生 23
2.4 UP 和 RUP 25
2.5 为项目定制 UP 27
2.6 UP 公理 27
2.7 UP 是迭代和增量过程 28
2.7.1 迭代工作流 29
2.7.2 基线和增量 30
2.8 UP 结构 30
2.9 UP 阶段 31
2.9.1 初始 - 目标 31
2.9.2 初始 - 焦点 32
2.9.3 初始 - 里程碑:生命期目标 32
2.9.4 细化 - 目标 33
2.9.5 细化 - 焦点 33
2.9.6 细化 - 里程碑:生命期构架 34
2.9.7 构造 - 目标 34
2.9.8 构造 - 焦点 34
2.9.9 构造 - 里程碑:初始运作功能 35
2.9.10 移交 - 目标 35
2.9.11 移交 - 焦点 35
2.9.12 移交 - 里程碑:产品发布 36
2.10 我们已经学习了 36
第二部分 需求 38
第3章 需求工作流 39
3.1 章节指示图 39
3.2 需求工作流 39
3.3 软件需求 - 元模型 40
3.4 需求工作流细节 41
3.5 需求的重要性 43
3.6 定义需求 43
3.6.1 需求模型 44
3.6.2 形式良好的需求 44
3.6.3 功能性和非功能性需求 45
3.6.4 组织需求 45
3.6.5 需求属性 46
3.7 找出需求 48
3.7.1 需求抽取 48
3.7.2 访谈 50
3.7.3 问卷调查 51
3.7.4 需求会议 51
3.8 我们已经学习了 52
第4章 用例建模 55
4.1 章节指示图 55
4.2 用例建模 56
4.3 UP 活动:找出参与者和用例 56
4.3.1 主体(系统边界) 57
4.3.2 什么是参与者? 58
4.3.3 什么是用例? 60
4.3.4 项目词汇表 62
4.4 UP 活动:细化用例 64
4.5 用例规格说明 64
4.5.1 用例名称 65
4.5.2 用例 ID 66
4.5.3 简要描述 66
4.5.4 参与者 66
4.5.5 前置条件和后置条件 66
4.5.6 主流 67
4.5.7 建模附流 71
4.6 需求跟踪 74
4.7 何时适用用例建模 75
4.8 我们已经学习了 75
第5章 高级用例建模 79
5.1 章节指示图 79
5.2 参与者泛化 79
5.3 用例泛化 81
5.4 《include》 84
5.5 《extend》 85
5.5.1 扩展用例 87
5.5.2 多重插入片段 88
5.5.3 条件扩展 88
5.6 何时使用高级特征 89
5.7 书写用例的技巧 89
5.7.1 保持用例简短 90
5.7.2 关注什么,而不是如何 90
5.7.3 避免功能分解 91
5.8 我们已经学习了 92
第三部分 分析 95
第6章 分析工作流 96
6.1 章节指示图 96
6.2 分析工作流 96
6.3 分析制品 - 元模型 97
6.4 分析工作流细节 97
6.5 分析模型 - 经验法则 98
6.6 我们已经学习了 99
第7章 对象和类 101
7.1 章节指示图 101
7.2 什么是对象? 101
7.2.1 封装 103
7.2.2 消息机制 104
7.3 UML 对象符号 105
7.3.1 对象属性值 106
7.4 什么是类? 106
7.4.1 类和对象 108
7.4.2 对象实例化 109
7.5 UML 类符号 109
7.5.1 名称分栏 111
7.5.2 属性分栏 111
7.5.3 操作分栏 116
7.5.4 类构造型语法 120
7.6 范围 120
7.6.1 实例范围和类范围 121
7.6.2 范围决定访问 121
7.7 对象构造和销毁 122
7.7.1 构造函数 - 示例 ClubMember 类 123
7.7.2 析构函数 - 示例 ClubMember 类 124
7.8 我们已经学习了 124
第8章 找出分析类 129
8.1 章节指示图 129
8.2 UP 活动:分析用例 129
8.3 什么是分析类? 130
8.3.1 分析类剖析 131
8.3.2 如何产生良好的分析类? 133
8.3.3 分析类经验法则 134
8.4 找出类 136
8.4.1 使用名词/动词分析找出类 136
8.4.2 使用 CRC 分析找出类 137
8.4.3 采用RUP构造型找出类 139
8.4.4 从其它来源找出类 142
8.5 产生初步分析模型 143
8.6 我们已经学习了 144
第9章 关系 147
9.1 章节指示图 147
9.2 什么是关系? 147
9.3 什么是链接? 148
9.3.1 对象图 148
9.3.2 路径 150
9.4 什么是关联? 151
9.4.1 关联语法 152
9.4.2 多重性 153
9.4.3 导航性 157
9.4.4 关联和属性 159
9.4.5 关联类 161
9.4.6 受限关联 163
9.5 什么是依赖? 164
9.5.1 使用依赖 166
9.5.2 抽象依赖 167
9.5.3 授权依赖 169
9.6 我们已经学习了 170
第10章 继承和多态 174
10.1 章节指示图 174
10.2 泛化 174
10.2.1 类泛化 174
10.3 类继承 175
10.3.1 重载 176
10.3.2 抽象操作和类 177
10.3.3 抽象层次 178
10.3.4 多重继承 179
10.4 多态 179
10.4.1 多态示例 180
10.5 高级泛化 182
10.5.1 泛化集合 183
10.5.2 强类型 185
10.6 我们已经学习了 186
第11章 分析包 189
11.1 章节指示图 189
11.2 什么是包? 189
11.3 包和命名空间 191
11.4 嵌套包 192
11.5 包依赖 193
11.5.1 传递性 195
11.6 包泛化 196
11.7 构架分析 196
11.7.1 找出分析包 197
11.7.2 循环包依赖 199
11.8 我们已经学习了 199
第12章 用例实现 204
12.1 章节指示图 204
12.2 UP 活动:分析用例 204
12.3 什么是用例实现? 205
12.4 用例实现 - 元素 205
12.5 交互 206
12.6 生命线 206
12.7 消息 208
12.7.1 同步、异步和返回消息 209
12.7.2 创建和销毁消息 210
12.7.3 发现和丢失消息 210
12.8 交互图 211
12.9 顺序图 211
12.9.1 生命线和消息 212
12.9.2 激活 214
12.9.3 注释顺序图 214
12.9.4 状态常量和约束 215
12.10 组合区和操作符 216
12.10.1 采用 opt 和 alt 分支 218
12.10.2 采用 loop 和 break 迭代 220
12.11 通信图 222
12.11.1 迭代 223
12.11.2 分支 225
12.12 我们已经学习了 227
第13章 高级用例实现 231
13.1 章节指示图 231
13.2 交互重现 231
13.2.1 参数 233
13.2.2 门 234
13.3 接续 235
13.4 我们已经学习了 237
第14章 活动图 238
14.1 章节指示图 238
14.2 什么是活动图? 238
14.3 活动图与UP 239
14.4 活动 240
14.5 活动的语义 242
14.6 活动分区 243
14.7 动作节点 245
14.7.1 调用动作节点 247
14.7.2 接受时间事件的动作节点 248
14.8 控制节点 249
14.8.1 起始节点和终止节点 250
14.8.2 判决节点和汇合节点 250
14.8.3 派生节点和会聚节点 - 并发 252
14.9 对象节点 253
14.9.1 对象节点缓冲区的语义 254
14.9.2 用状态展示对象 255
14.9.3 活动参数 255
14.10 别针 257
14.11 我们已经学习了 258
第15章 高级活动图 262
15.1 章节指示图 262
15.2 连接器 262
15.3 可中断活动区 262
15.4 异常处理 263
15.5 扩展节点 264
15.6 发送信号和接受事件 266
15.7 流化 268
15.8 高级对象控制特性 269
15.8.1 输入和输出效果 269
15.8.2 《selection》 270
15.8.3 《transformation》 270
15.9 广播和广收 270
15.10 参数集合 271
15.11 《centralbuffer》节点 273
15.12 交互概图 273
15.13 我们已经学习了 274
第四部分 设计 278
第16章 设计工作流 279
16.1 章节指示图 279
16.2 设计工作流 279
16.3 设计制品 - 元模型 280
16.3.1 制品跟踪关系 282
16.3.2 需要维护两个模型吗? 282
16.4 设计工作流细节 284
16.5 UP活动:构架设计 284
16.6 我们已经学习了 285
第17章 设计类 287
17.1 章节指示图 287
17.2 UP活动:类设计 287
17.3 什么是设计类? 288
17.4 设计类剖析 289
17.5 形式良好的设计类 290
17.5.1 完整性和充分性 291
17.5.2 原始性 292
17.5.3 高内聚 292
17.5.4 低耦合 293
17.6 继承 294
17.6.1 聚合vs继承 294
17.6.2 多重继承 296
17.6.3 继承vs接口实现 297
17.7 模板类 297
17.8 嵌套类 299
17.9 我们已经学习了 300
第18章 精化分析关系 305
18.1 章节指示图 305
18.2 设计关系 305
18.3 聚合和组合 306
18.4 聚合语义 307
18.5 组合语义 309
18.5.1 组合与属性 310
18.6 如何精化分析关系? 311
18.7 一对一关联 312
18.8 多对一关联 312
18.9 一对多关联 313
18.10 列集 313
18.10.1 映射表 316
18.11 具体化关系 317
18.11.1 多对多关联 317
18.11.2 双向关联 318
18.11.3 关联类 319
18.12 结构化类的组合 319
18.12.1 结构化类元 319
18.12.2 结构化类 321
18.13 我们已经学习了 323
第19章 接口和组件 330
19.1 章节指示图 330
19.2 UP活动:子系统设计 330
19.3 什么是接口? 331
19.4 已供接口和必需接口 332
19.5 接口实现vs继承 334
19.6 端口 337
19.7 接口和基于组件的开发 338
19.8 什么是组件 339
19.9 组件构造型 341
19.10 子系统 342
19.11 发现接口 342
19.12 采用接口进行设计 343
19.12.1 外观模式 344
19.12.2 物理构架和分层模式 345
19.13 接口的优点和缺点 346
19.14 我们已经学习了 347
第20章 用例实现(设计) 352
20.1 章节指示图 352
20.2 UP活动:用例设计 352
20.3 用例实现(设计) 353
20.4 交互图(设计) 354
20.5 建模并发 356
20.5.1 活动类 356
20.5.2 顺序图中的并发 357
20.5.3 通信图中的并发 360
20.6 子系统交互 361
20.7 时序图 361
20.8 用例实现(设计)示例 364
20.9 我们已经学习了 366
第21章 状态机 368
21.1 章节指示图 368
21.2 状态机 368
21.2.1 行为状态机和协议状态机 369
21.2.2 状态机与类 370
21.3 状态机和UP 370
21.4 状态图 371
21.5 状态 373
21.5.1 状态语法 374
21.6 迁移 375
21.6.1 连接迁移 - 交叉伪状态 376
21.6.2 分支迁移 - 选择伪状态 377
21.7 事件 377
21.7.1 调用事件 378
21.7.2 信号事件 379
21.7.3 改变事件 380
21.7.4 时间事件 381
21.8 我们已经学习了 381
第22章 高级状态机 385
22.1 章节指示图 385
22.2 复合状态 385
22.2.1 简单复合状态 387
22.2.2 正交复合状态 388
22.3 子状态机状态 390
22.4 子状态机通信 391
22.5 历史 392
22.5.1 浅度历史 393
22.5.2 深度历史 394
22.6 我们已经学习了 394
第五部分 实现 396
第23章 实现工作流 397
23.1 章节指示图 397
23.2 实现工作流 397
23.3 实现制品 - 元模型 398
23.4 实现工作流细节 399
23.5 制品 399
23.6 我们已经学习了 399
第六部分 补充材料 401
第24章 部署 402
24.1 章节指示图 402
24.2 UP活动:构架实现 402
24.3 部署图 403
24.4 节点 404
24.5 制品 406
24.6 部署 409
24.7 我们已经学习了 410
第25章 OCL 介绍 412
25.1 章节指示图 412
25.2 什么是OCL? 412
25.3 为什么采用OCL? 413
25.4 OCL表达式语法 414
25.5 包语境和路径 415
25.6 表达式语境 416
25.7 OCL表达式类型 417
25.8 表达式主体 419
25.8.1 注释、关键字和优先级规则 419
25.8.2 OCL类型系统 420
25.8.3 原始类型 422
25.8.4 Tuple 425
25.8.5 中缀操作符 426
25.8.6 OCL列集 426
25.8.7 迭代操作 432
25.9 OCL导航 436
25.9.1 语境实例内导航 436
25.9.2 通过关联导航 437
25.9.3 通过多重关联导航 439
25.10 OCL表达式类型细节 440
25.10.1 inv: 440
25.10.2 pre:,post: 和 @pre 442
25.10.3 body: 444
25.10.4 init: 446
25.10.5 def: 446
25.10.6 let表达式 448
25.10.7 derive: 449
25.11 其它图中的OCL 450
25.11.1 交互图中的OCL 450
25.11.2 活动图中的OCL 452
25.11.3 状态图中的OCL 453
25.12 高级主题 454
25.12.1 关联类的双向导航 455
25.12.2 通过受限关联导航 456
25.12.3 继承的关联 457
25.12.4 OCL消息 459
25.13 我们已经学习了 461
附录 1 用例模型举例 468
A1.1 简介 468
A1.2 用例模型 468
A1.3 用例举例 469
附录 2 XML 和用例 474
A2.1 使用 XML 制作用例模版 474
A2.2 SUMR 474
参考书目 478