译者序 1
前言 1
第一部分 UML和UP介绍 1
第1章 什么是UML 1
1.1 章节指示图 1
目录 1
1.2 什么是UML 3
1.3 UML的诞生 3
1.4 MDA——UML的未来 4
1.5 为什么“统一” 6
1.6 对象和UML 6
1.7 UML结构 6
1.8.2 关系 7
1.8 UML构造块 7
1.8.1 物件 7
1.8.3 图 8
1.9 UML公共机制 9
1.9.1 规格说明 10
1.9.2 修饰 10
1.9.3 公共分类 11
1.9.4 扩展机制 12
1.10 构架 14
1.11 小结 15
第2章 什么是统一过程 17
2.1 章节指示图 17
2.3 UP的诞生 18
2.2 什么是UP 18
2.4 UP和RUP 20
2.5 为项目定制UP 21
2.6 UP公理 21
2.7 UP是迭代和增量过程 22
2.7.1 迭代工作流 22
2.7.2 基线和增量 23
2.8 UP结构 23
2.9 UP阶段 25
2.9.1 初始——目标 25
2.9.2 初始——焦点 25
2.9.3 初始——里程碑:生命期目标 25
2.9.4 细化——目标 25
2.9.7 构造——目标 26
2.9.8 构造——焦点 26
2.9.5 细化——焦点 26
2.9.6 细化——里程碑:生命期构架 26
2.9.9 构造——里程碑:初始运作功能 27
2.9.10 移交——目标 27
2.9.11 移交——焦点 27
2.9.12 移交——里程碑:产品发布 28
2.10 小结 28
第二部分 需求 29
第3章 需求工作流 29
3.1 章节指示图 29
3.3 软件需求——元模型 31
3.2 需求工作流 31
3.4 需求工作流细节 32
3.5 需求的重要性 34
3.6 定义需求 34
3.6.1 需求模型 34
3.6.2 形式良好的需求 34
3.6.3 功能性和非功能性需求 35
3.6.4 组织需求 35
3.6.5 需求属性 36
3.7 找出需求 37
3.7.1 需求抽取 37
3.7.2 访谈 38
3.8 小结 39
3.7.3 问卷调查 39
3.7.4 需求会议 39
第4章 用例建模 41
4.1 章节指示图 41
4.2 用例建模 43
4.3 UP活动:找出参与者和用例 43
4.3.1 主体(系统边界) 44
4.3.2 什么是参与者 44
4.3.3 什么是用例 45
4.3.4 项目词汇表 47
4.4 UP活动:细化用例 48
4.5 用例规格说明 48
4.5.1 用例名称 49
4.5.2 用例ID 50
4.5.3 简要描述 50
4.5.4 参与者 50
4.5.5 前置条件和后置条件 50
4.5.6 主流 50
4.5.7 建模附流 54
4.6 需求跟踪 57
4.7 何时适用用例建模 57
4.8 小结 58
第5章 高级用例建模 60
5.1 章节指示图 60
5.2 参与者泛化 61
5.3 用例泛化 62
5.4 《include》 65
5.5 《extend》 67
5.5.1 扩展用例 68
5.5.2 多重插入片段 69
5.5.3 条件扩展 70
5.6 何时使用高级特征 70
5.7 书写用例的技巧 71
5.7.1 保持用例简短 71
5.7.2 关注“什么”,而不是“如何” 71
5.7.3 避免功能分解 72
5.8 小结 73
6.1 章节指示图 75
6.2 分析工作流 75
第6章 分析工作流 75
第三部分 分析 75
6.3 分析制品——元模型 76
6.4 分析工作流细节 77
6.5 分析模型——经验法则 77
6.6 小结 78
第7章 对象和类 80
7.1 章节指示图 80
7.2 什么是对象 82
7.2.1 封装 83
7.2.2 消息机制 84
7.3 UML对象符号 84
7.4 什么是类 85
7.3.1 对象属性值 85
7.4.1 类和对象 86
7.4.2 对象实例化 87
7.5 UML类符号 87
7.5.1 名称分栏 88
7.5.2 属性分栏 89
7.5.3 操作分栏 91
7.5.4 类构造型语法 94
7.6 范围 94
7.6.1 实例范围和类范围 95
7.6.2 范围决定访问 95
7.7 对象构造和销毁 95
7.7.1 构造函数——示例ClubMember类 96
7.8 小结 97
7.7.2 析构函数——示例ClubMember类 97
第8章 找出分析类 100
8.1 章节指示图 100
8.2 UP活动:分析用例 102
8.3 什么是分析类 102
8.3.1 分析类剖析 103
8.3.2 如何产生良好的分析类 104
8.3.3 分析类经验法则 105
8.4 找出类 105
8.4.1 使用名词/动词分析找出类 106
8.4.2 使用CRC分析找出类 107
8.4.3 采用RUP构造型找出类 108
8.4.4 从其他来源找出类 109
8.5 产生初步分析模型 110
8.6 小结 111
第9章 关系 113
9.1 章节指示图 113
9.2 什么是关系 115
9.3 什么是链接 115
9.3.1 对象图 115
9.3.2 路径 116
9.4 什么是关联 117
9.4.1 关联语法 117
9.4.2 多重性 118
9.4.3 导航性 121
9.4.4 关联和属性 122
9.4.5 关联类 124
9.5 什么是依赖 125
9.4.6 受限关联 125
9.5.1 使用依赖 126
9.5.2 抽象依赖 127
9.5.3 授权依赖 128
9.6 小结 129
第10章 继承和多态 132
10.1 章节指示图 132
10.2 泛化 133
10.2.1 类泛化 133
10.3 类继承 133
10.3.1 覆写 134
10.3.3 抽象层次 135
10.3.2 抽象操作和类 135
10.3.4 多重继承 136
10.4 多态 136
10.4.1 多态示例 136
10.5 高级泛化 138
10.5.1 泛化集合 138
10.5.2 强类型 139
10.6 小结 141
第11章 分析包 143
11.1 章节指示图 143
11.2 什么是包 143
11.3 包和命名空间 145
11.4 嵌套包 145
11.5 包依赖 146
11.6 包泛化 147
11.5.1 传递性 147
11.7 构架分析 148
11.7.1 找出分析包 149
11.7.2 循环包依赖 149
11.8 小结 150
第12章 用例实现 153
12.1 章节指示图 153
12.2 UP活动:分析用例 155
12.3 什么是用例实现 156
12.4 用例实现——元素 156
12.6 生命线 157
12.7 消息 157
12.5 交互 157
12.7.1 同步、异步和返回消息 158
12.7.2 创建和销毁消息 159
12.7.3 发现和丢失消息 159
12.8 交互图 159
12.9 顺序图 160
12.9.1 生命线和消息 160
12.9.2 激活 162
12.9.3 注释顺序图 163
12.9.4 状态常量和约束 163
12.10 组合区和操作符 164
12.10.1 采用opt和alt分支 166
12.10.2 采用loop和break迭代 168
12.11 通信图 170
12.11.1 迭代 171
12.11.2 分支 172
12.12 小结 173
第13章 高级用例实现 176
13.1 章节指示图 176
13.2 交互重现 176
13.2.1 参数 178
13.2.2 门 179
13.3 接续 181
13.4 小结 182
第14章 活动图 183
14.1 章节指示图 183
14.2 什么是活动图 183
14.3 活动图与UP 184
14.4 活动 185
14.5 活动的语义 186
14.6 活动分区 188
14.7 动作节点 189
14.7.1 调用动作节点 190
14.7.2 接受时间事件的动作节点 191
14.8 控制节点 192
14.8.1 初始节点和终止节点 192
14.8.2 判决节点和汇合节点 192
14.8.3 派生节点和会聚节点——并发 193
14.9 对象节点 194
14.9.1 对象节点缓冲区的语义 194
14.9.3 活动参数 195
14.9.2 用状态展示对象 195
14.11 小结 197
14.10 别针 197
第15章 高级活动图 200
15.1 章节指示图 200
15.2 连接器 202
15.3 可中断活动区 202
15.4 异常处理 202
15.5 扩展节点 203
15.6 发送信号和接受事件 204
15.7 流化 206
15.8 高级对象流特性 206
15.8.1 输入和输出效果 206
15.9 广播和广收 207
15.8.2 《selection》 207
15.8.3 《transformation》 207
15.10 参数集合 208
15.11 《centralBuffer》节点 209
15.12 交互概图 210
15.13 小结 211
第四部分 设计 213
第16章 设计工作流 213
16.1 章节指示图 213
16.2 设计工作流 213
16.3 设计制品——元模型 214
16.3.1 制品跟踪关系 215
16.3.2 需要维护两个模型吗 216
16.4 设计工作流细节 217
16.5 UP活动:构架设计 218
16.6 小结 218
第17章 设计类 220
17.1 章节指示图 220
17.2 UP活动:类设计 221
17.3 什么是设计类 222
17.4 设计类剖析 223
17.5 形式良好的设计类 223
17.5.1 完整性和充分性 224
17.5.2 原始性 224
17.5.3 高内聚 225
17.5.4 低耦合 225
17.6.1 聚合与继承 226
17.6 继承 226
17.6.2 多重继承 227
17.6.3 继承与接口实现 227
17.7 模板类 228
17.8 嵌套类 229
17.9 小结 230
第18章 精化分析关系 233
18.1 章节指示图 233
18.2 设计关系 235
18.3 聚合和组合 235
18.4 聚合语义 236
18.5 组合语义 237
18.6 如何精化分析关系 238
18.5.1 组合与属性 238
18.7 一对一关联 239
18.8 多对一关联 239
18.9 一对多关联 240
18.10 列集 240
18.10.1 映射表 240
18.11 具体化关系 242
18.11.1 多对多关联 242
18.11.2 双向关联 243
18.11.3 关联类 244
18.12 结构化类的组合 244
18.12.1 结构化类元 244
18.12.2 结构化类 245
18.13 小结 247
第19章 接口和组件 252
19.1 章节指示图 252
19.2 UP活动:子系统设计 254
19.3 什么是接口 254
19.4 已供接口和必需接口 255
19.5 接口实现与继承 257
19.6 端口 260
19.7 接口和基于组件的开发 261
19.8 什么是组件 261
19.9 组件构造型 262
19.10 子系统 262
19.12 采用接口进行设计 263
19.11 发现接口 263
19.12.1 外观模式 264
19.12.2 物理构架和分层模式 264
19.13 接口的优点和缺点 265
19.14 小结 266
第20章 用例实现(设计) 269
20.1 章节指示图 269
20.2 UP活动:用例设计 271
20.3 用例实现(设计) 272
20.4 交互图(设计) 272
20.5 建模并发 274
20.5.1 活动类 274
20.5.2 顺序图中的并发 276
20.5.3 通信图中的并发 278
20.6 子系统交互 279
20.7 时序图 279
20.8 用例实现(设计)示例 282
20.9 小结 284
第21章 状态机 288
21.1 章节指示图 288
21.2 状态机 290
21.2.1 行为状态机和协议状态机 290
21.2.2 状态机与类 291
21.3 状态机和UP 291
21.4 状态图 291
21.5 状态 292
21.6 迁移 293
21.5.1 状态语法 293
21.6.1 连接迁移——交叉伪状态 294
21.6.2 分支迁移——选择伪状态 295
21.7 事件 296
21.7.1 调用事件 296
21.7.2 信号事件 297
21.7.3 改变事件 298
21.7.4 时间事件 299
21.8 小结 299
第22章 高级状态机 301
22.1 章节指示图 301
22.2 复合状态 301
22.2.1 简单复合状态 302
22.2.2 正交复合状态 304
22.3 子状态机状态 306
22.4 子状态机通信 307
22.5 历史 308
22.5.1 浅度历史 308
22.5.2 深度历史 309
22.6 小结 310
第五部分 实现 311
第23章 实现工作流 311
23.1 章节指示图 311
23.2 实现工作流 311
23.3 实现制品——元模型 312
23.4 实现工作流细节 313
23.6 小结 314
23.5 制品 314
第24章 部署 315
24.1 章节指示图 315
24.2 UP活动:构架实现 315
24.3 部署图 316
24.4 节点 317
24.5 制品 318
24.6 部署 321
24.7 小结 322
第六部分 补充材料 325
第25章 OCL介绍 325
25.1 章节指示图 325
25.4 OCL表达式语法 327
25.3 为什么采用OCL 327
25.2 什么是OCL 327
25.5 包语境和路径名 329
25.6 表达式语境 329
25.7 OCL表达式类型 330
25.8 表达式主体 331
25.8.1 注释、关键字和优先级规则 331
25.8.2 OCL类型系统 332
25.8.3 原始类型 333
25.8.4 Tuple 335
25.8.5 中缀操作符 335
25.8.6 OCL列集 335
25.8.7 迭代操作 340
25.9.2 通过关联导航 343
25.9 OCL导航 343
25.9.1 语境实例内导航 343
25.9.3 通过多重关联导航 345
25.10 OCL表达式类型细节 346
25.10.1 inv: 346
25.10.2 pre:、post:和@pre 347
25.10.3 body: 348
25.10.4 init: 349
25.10.5 def: 349
25.10.6 let表达式 350
25.10.7 derive: 351
25.11.1 交互图中的OCL 352
25.11 其他图中的OCL 352
25.11.2 活动图中的OCL 354
25.11.3 状态图中的OCL 354
25.12 高级主题 356
25.12.1 关联类的双向导航 356
25.12.2 通过受限关联导航 357
25.12.3 继承的关联 357
25.12.4 OCL消息 359
25.13 小结 360
附录1 用例模型举例 365
附录2 XML和用例 370
参考书目 376
索引 378