第1章 UML介绍 1
目录 1
1.1 UML概述 3
1.1.1 方法之战 3
1.1.2 UML方法 5
1.1.3 UML的认可 6
1.1.4 OMG标准 6
1.2 方法和建模语言 7
1.3 面向对象软件开发 8
1.4 UML的用途 9
1.4.1 不同类型的系统 9
1.4.2 业务工程 10
1.5 系统开发阶段 10
1.5.1 需求分析阶段 10
1.5.4 编码阶段 11
1.5.5 测试阶段 11
1.5.2 分析阶段 11
1.5.3 设计阶段 11
第2章 UML概述 13
2.1 视图 14
2.1.1 用例视图 15
2.1.2 逻辑视图 16
2.1.3 组件视图 16
2.1.4 并发视图 17
2.1.5 部署视图 17
2.2 图 17
2.2.1 用例图 18
2.2.2 类图 18
2.2.3 对象图 19
2.2.4 状态图 20
2.2.5 顺序图 21
2.2.6 协作图 22
2.2.7 活动图 23
2.2.8 组件图 24
2.2.9 部署图 25
2.3 模型元素 26
2.4 通用机制 27
2.4.1 修饰 27
2.4.2 注解 28
2.4.3 规格说明 28
2.5 扩展UML 30
2.5.1 构造型 30
2.5.2 标记值 31
2.5.3 约束 31
2.6 用UML建模 32
2.7 工具 36
2.7.1 绘图支持 38
2.7.2 模型存储库 39
2.7.3 导航 40
2.7.4 多用户支持 41
2.7.5 代码生成 41
2.7.6 逆向工程 42
2.7.7 工具集成 43
2.7.8 模型互换 45
2.8 本章小结 45
第3章 用例建模 47
3.1 用例图 49
3.2 系统 50
3.3 参与者 51
3.3.1 发现参与者 52
3.3.3 参与者之间的关系 53
3.3.2 UML中的参与者 53
3.4 用例 55
3.4.1 发现用例 56
3.4.2 UML中的用例 56
3.4.3 用例之间的关系 57
3.5 描述用例 59
3.6 测试用例 62
3.6.1 排练用例 63
3.7 实现用例 63
3.8 本章小结 67
第4章 类、对象及它们的关系 69
4.1 类和对象 69
4.2 类图 71
4.2.1 发现类 72
4.2.3 属性部分 73
4.2.2 名称部分 73
4.2.4 操作部分 76
4.2.5 使用简单类型 80
4.3 关系 80
4.4 关联 81
4.4.1 标准关联 81
4.4.2 对象图 84
4.4.3 递归关联 85
4.4.4 关联中的角色 88
4.4.5 限定关联 89
4.4.6 或关联 90
4.4.7 有序关联 91
4.4.8 关联类 92
4.4.9 三元关联 93
4.4.10 聚合 93
4.5 泛化 98
4.5.1 标准泛化关系 99
4.5.2 受约束的泛化关系 106
4.6 依赖和精化关系 108
4.7 约束和导出(规则) 110
4.8 接口 113
4.9 包 115
4.10 模板 119
4.11 模型质量 120
4.11.1 什么是好模型 121
4.11.2 模型与它的目的匹配吗 121
4.11.3 模型协作 122
4.11.4 模型复杂性 122
4.12 本章小结 123
第5章 动态建模 125
5.1 对象(消息)之间的交互 126
5.2.1 状态和转换 128
5.2 状态图 128
5.2.2 事件 136
5.3 在状态图之间发送消息 142
5.3.1 子状态 143
5.3.2 历史指示器 144
5.4 顺序图 146
5.4.1 一般形态和实例形态 146
5.4.2 并发对象 149
5.4.3 定义迭代和约束的标签 149
5.4.4 创建和销毁对象 151
5.4.5 递归 152
5.5 协作图 152
5.5.1 消息流 153
5.5.2 链接 156
5.5.3 对象的生命期 156
5.5.4 使用协作图 157
5.6 活动图 159
5.6.1 动作和转换 160
5.6.2 泳道 163
5.6.3 对象 164
5.6.4 信号 165
5.6.5 使用活动图进行业务建模 166
5.7 本章小结 168
第6章 高级动态建模:实时系统 171
6.1 面向对象和实时系统 173
6.2 实时概念 175
6.2.1 主动类和主动对象 176
6.2.2 通信 179
6.2.3 同步 184
6.2.4 在Java中实现并发和同步 187
6.3 在UML中实时建模 189
6.3.1 状态图 193
6.3.2 顺序图 195
6.3.3 协作图 197
6.3.4 活动图 199
6.3.5 组件图和部署图 200
6.4 适应到实时系统 202
6.4.1 实时系统建模要特别注意的一些问题 203
6.5 处理相关问题 205
6.6 本章小结 208
第7章 物理体系结构 211
7.1 逻辑体系结构 214
7.2 物理体系结构 215
7.2.1 硬件 217
7.2.2 软件 218
7.3 组件图 219
7.3.1 编译时组件 222
7.3.2 链接时组件 223
7.3.3 运行时组件 223
7.4 部署图 224
7.4.1 节点 225
7.4.2 连接 226
7.4.3 组件 226
7.4.4 对象 227
7.5 节点的复杂建模 229
7.6 将组件分配到节点 230
7.7 本章小结 232
第8章 扩展UML 235
8.1 语义核心概念 236
8.2 标记值和特性 244
8.2.1 用于元素的标记值 245
8.2.2 用于类型、实例、操作和属性的标记值 246
8.2.3 用于模型元素和组件的标记值 248
8.2.4 定义自己的标记值 248
8.3 约束 249
8.3.1 用于泛化的约束 250
8.3.2 用于关联的约束 252
8.3.3 用于关联角色的约束 252
8.3.4 用于消息、链接角色和对象的约束 254
8.3.5 定义自己的约束 256
8.4 构造型 258
8.4.1 用于类型的构造型 259
8.4.2 用于依赖的构造型 262
8.4.3 用于组件的构造型 265
8.4.4 用于注解的构造型 266
8.4.5 用于简单类型的构造型 266
8.4.6 用于泛化的构造型 267
8.4.8 用于类的构造型 268
8.4.7 用于包的构造型 268
8.4.9 用于操作的构造型 271
8.4.10 用于主动类的构造型 271
8.4.11 定义自己的构造型 273
8.5 本章小结 276
第9章 设计模式和UML 277
9.1 概述 278
9.1.1 “Gang of Four”模式 280
9.1.2 代理模式 280
9.2 UML中的建模模式 283
9.2.1 参数化协作 285
9.2.2 在图中显示模式 287
9.3 模式和用例 289
9.4 本章小结 290
第10章 使用UML的过程 291
10.1.1 过程上下文 292
10.1 定义和理解软件工程过程 292
10.1.2 过程用户 293
10.1.3 过程步骤 294
10.1.4 过程评估 296
10.2 UML过程的基础 297
10.2.1 用例驱动系统 297
10.2.2 以体系结构为中心 298
10.2.3 迭代 299
10.2.4 增量 300
10.3 传统的面向对象方法 302
10.3.1 需求分析 303
10.3.2 分析 304
10.3.3 设计 306
10.3.4 实现 308
10.3.5 测试 309
10.4 Rational Objectory Process 310
10.4.1 生命周期 311
10.4.2 初始 312
10.4.3 细化 313
10.4.4 构造 313
10.4.5 移交 314
10.4.6 与传统过程的比较 314
10.5 过程工具 315
10.6 本章小结 317
第11章 开始应用UML 321
11.1 转换到UML 321
11.1.1 升级Booch方法 321
11.1.2 升级OMT方法 333
11.2 一个通用升级方法 341
11.3 建模会议、工具和技术 342
第12章 案例学习 347
12.1 需求 348
12.2 分析 349
12.2.1 需求分析 350
12.2.2 问题域分析 352
12.3 设计 356
12.3.1 体系结构设计 357
12.3.2 详细设计 358
12.3.3 用户界面设计 365
12.4 实现 368
12.5 测试和实施 378
12.6 本章小结 379
12.7 练习 379
12.7.1 分析练习 380
12.7.2 设计和构造练习 381
可视化图符 383
术语表 401