插图目录 xxii
第3版前言 xxvi
第1版前言 xxix
序 xxxi
为什么要花时间学UML xxxiii
本书结构 xxxiii
第3版的变化 xxxiv
致谢 xxxv
第1章 简介 1
1.1 UML是什么 1
1.2 使用UML的方式 2
1.3 UML诞生史 9
1.4 表示法和元模型 11
1.5 UML图 13
1.6 什么是合法的UML 16
1.7 UML的含义 18
1.8 仅有UML是不够的 18
1.9 何处开始UML 20
1.10 更多资料 20
第2章 开发过程 23
2.1 迭代和瀑布过程 24
2.2 预测性和自适应计划 28
2.3 敏捷过程 30
2.4 Rational统一过程 31
2.5 为项目裁剪过程 32
2.6 为过程裁剪UML 36
2.6.1 需求分析 36
2.6.2 设计 37
2.6.3 文档 39
2.6.4 理解遗留代码 40
2.7 选择开发过程 40
2.8 更多资料 41
第3章 类图:基础 43
3.1 性质 44
3.1.1 属性 45
3.2.2 关联 46
3.2 多重性 47
3.3 性质的编程解释 48
3.4 双向关联 51
3.5 操作 54
3.6 泛化 56
3.7 注解符和注释 57
3.8 依赖 58
3.9 约束规则 61
3.10 何时使用类图 64
3.11 更多资料 65
第4章 序列图 67
4.1 创建和删除参与者 71
4.2 循环、条件等 72
4.3 同步和异步调用 76
4.4 何时使用序列图 77
第5章 类图:进阶概念 81
5.1 关键词 81
5.2 责任 83
5.3 静态操作和属性 83
5.4 聚合和组合 84
5.5 派生性质 85
5.6 接口和抽象类 86
5.7 只读和冻结 91
5.8 引用对象和值对象 91
5.9 限定关联 93
5.10 分类和泛化 94
5.11 多重和动态分类 95
5.12 关联类 97
5.13 模板(参数化)类 101
5.14 枚举 103
5.15 主动类 103
5.16 可见性 104
5.17 消息 105
第6章 对象图 107
6.1 何时使用对象图 108
第7章 包图 109
7.1 包和依赖 111
7.2 包的分解 114
7.3 实现包 115
7.4 何时使用包图 116
7.5 更多资料 117
第8章 部署图 119
8.1 何时使用部署图 121
第9章 用例 123
9.1 用例的内容 124
9.2 用例图 127
9.3 用例的级别 128
9.4 用例和特性(或故事) 129
9.5 何时使用用例 129
9.6 更多资料 130
第10章 状态机图 131
10.1 内部活动 133
10.2 活动状态 134
10.3 超状态 135
10.4 并发状态 136
10.5 实现状态图 137
10.6 何时使用状态图 140
10.7 更多资料 141
第11章 活动图 143
11.1 分解一个动作 146
11.2 分区 147
11.3 信号 149
11.4 令牌 150
11.5 流和边 151
11.6 针脚和变换 152
11.7 扩展区域 153
11.8 流结束 155
11.9 结合规格 156
11.10 其他更多内容 157
11.11 何时使用活动图 157
11.12 更多资料 158
第12章 通信图 159
12.1 何时使用通信图 161
第13章 组合结构 163
13.1 何时使用组合结构 165
第14章 组件图 167
14.1 何时使用组件图 169
第15章 协作 171
15.1 何时使用协作 173
第16章 交互概述图 175
16.1 何时使用交互概述图 175
第17章 时间图 177
17.1 何时使用时间图 179
附录A UML版本之间的变化 181
A.1 对UML的修订 181
A.2 《UML精粹》中的变化 182
A.3 从UML1.0到1.1的变化 184
A.3.1 类型和实现类 184
A.3.2 完整和不完整的鉴别器约束 185
A.3.3 组合 185
A.3.4 不可变和冻结 185
A.3.5 序列图上的返回 185
A.3.6 术语“角色”的使用 186
A.4 从UML 1.2(和1.1)到1.3(和1.5)的变化 186
A.4.1 用例 186
A.4.2 活动图 187
A.5 从UML 1.3到1.4的变化 188
A.6 从UML 1.4到1.5的变化 189
A.7 从UML 1.x到UML 2.0 189
A.7.1 类图:基础(第3章) 190
A.7.2 序列图(第4章) 190
A.7.3 类图:概念(第5章) 190
A.7.4 状态机图(第10章) 191
A.7.5 活动图(第11章) 191
参考文献 193
索引 199
插图目录
图1.1 UML元模型的小片段 13
图1.2 UML图形类型分类 15
图1.3 Wiki的一部分的非正式屏幕流图(http://c2.com/cgi/wiki) 19
图3.1 一个简单的类图 44
图3.2 展示订单的性质为属性 46
图3.3 展示订单的性质为关联 46
图3.4 双向关联 51
图3.5 使用动词短语命名关联 52
图3.6 注解符用做一个或多个图形元素的注释 58
图3.7 依赖的例子 59
图4.1 一张中央控制的序列图 68
图4.2 分布控制的序列图 70
图4.3 创建和删除参与者 72
图4.4 交互框 73
图4.5 旧习惯表达控制逻辑 75
图4.6 CRC卡样例 78
图5.1 在类图中展示责任 83
图5.2 静态表示法 84
图5.3 聚合 84
图5.4 组合 85
图5.5 time period内的派生属性 86
图5.6 接口和抽象类的Java例子 88
图5.7 小球-球窝表示法 89
图5.8 老的带依赖的棒棒糖表示法 89
图5.9 使用棒棒糖表示法在序列图中展示多态 90
图5.10 限定关联 93
图5.11 多重分类 96
图5.12 关联类 98
图5.13 提升关联类为完整的类 98
图5.14 关联类的细微差别(角色不应该是关联类) 99
图5.15 用一个类表达瞬时关系 100
图5.16 为关联使用 ?temporal? 关键词 100
图5.17 模板类 101
图5.18 绑定元素(版本1) 102
图5.19 绑定元素(版本2) 102
图5.20 枚举 103
图5.21 主动类 104
图5.22 带消息的类 105
图6.1 Party组合结构的类图 107
图6.2 展示Party实例的对象图 108
图7.1 在图上展示包的方式 110
图7.2 企业应用包图 112
图7.3 把图7.2分离成两个部分 114
图7.4 被其他包实现的包 115
图7.5 在客户包中定义一个需求接口 116
图8.1 部署图实例 120
图9.1 用例文本实例 125
图9.2 用例图 127
图10.1 一个简单的状态机图 132
图10.2 一个文本域的typing(输入中)状态的内部事件展示 134
图10.3 带活动的状态 135
图10.4 带有嵌套子状态的超状态 136
图10.5 并发正交状态 137
图10.6 处理图10.1状态转换的C#嵌套switch 138
图10.7 图10.1的状态模式实现 139
图11.1 一个简单的活动图 144
图11.2 一张次级的活动图 146
图11.3 修改图11.1的活动为调用图11.2的活动 147
图11.4 活动图上的分区 148
图11.5 活动图上的信号 149
图11.6 发送和接收信号 150
图11.7 展示边的4种方式 152
图11.8 流上的变换 153
图11.9 扩展区域 154
图11.10 扩展区域中的单个动作的速记 154
图11.11 活动中的流结束 155
图11.12 结合规格 156
图12.1 中央控制的通信图 160
图12.2 嵌套小数编号的通信图 160
图13.1 展示TV Viewer及其接口的两种方式 163
图13.2 组件的内部视图(来自Jim Rumbaugh的例子) 164
图13.3 带多个端口的组件 165
图14.1 组件的表示法 167
图14.2 组件图例子 168
图15.1 带角色类图的协作 172
图15.2 拍卖协作的序列图 172
图15.3 协作发生 173
图15.4 展示JUnit(junit.org)中模式使用的非标准方式 174
图16.1 交互概述图 176
图17.1 展示状态为线的时间图 178
图17.2 展示状态为区域的时间图 178