第一部分 基本概念和背景知识 3
第l章 关于组件化技术软件工程 3
1.1 什么是好系统 3
1.2 我们拥有好系统吗 4
1.2.1 问题 4
1.2.2 灾难性故障 5
1.2.3 一个又一个的承诺 6
1.3 好系统是什么样的 6
5.3.1 操作 6
PANEL6.2 构造型 8
1.3.1 封装低耦合 8
1.3.2 抽象高内聚 10
1.3.4 基于组件的设计可插入性 12
1.4 如何构造好的系统 12
1.5 小结 13
2.1 什么是对象 15
第2章 对象概念 15
2.1.1 举例 16
2.1.2 消息 17
2.1.3 接口 17
2.1.4 类 18
2.2 与上一章目标的关系 20
2.3 继承 22
2.4 多态性与动态绑定 23
2.5 小结 25
第3章 用例方法介绍 27
3.1 问题提出 27
3.1.1 需求澄清 27
3.1.2 用例(use case)模型 28
3.2 范围界定和迭代 30
3.3 标识类 32
3.4 类间关系 33
3.5 系统中的交互 35
PANEL3.1 契约设计1 37
3.5.1 系统中的变化状态图 39
3.5.2 进一步的工作 39
PANEL3.2 持久性 40
3.7 讨论题 41
3.6 小结 41
第4章 开发过程 43
4.1 术语定义 43
4.1.1 模型与建模语言 44
4.1.2 过程与质量 45
4.2 开发过程 45
4.2.1 有统一的方法学吗 47
4.2.2 使用UML的过程 48
4.3 系统、设计、建模与图 50
4.4 小结 51
第5章 类模型基础 55
5.1.1 好的类模型具备的条件 55
第二部分 UML语言详述 55
5.1 标识对象和类 55
5.1.2 如何建立良好的类模型 56
5.1.3 什么样的实体是类 58
5.1.4 现实世界对象与它们的系统表示 58
5.2 关联 59
5.3 属性和操作 61
5.3.2 属性 62
5.4 泛化 63
PANEL5.1 按照约定2设计替代性 63
5.4.2 实现泛化继承 65
5.4.1 使用英语检查是否存在泛化 65
5.5 开发中的类模型 66
5.6 CRC卡 67
5.6.1 建立CRC卡 67
5.6.2 在开发设计中使用CRC卡技术 67
5.6.3 CRC卡的例子 68
5.6.4 重构 69
5.7 小结 69
5.8 讨论题 69
第6章 类模型的进一步讨论 71
6.1 关联的进一步讨论 71
6.1.1 聚合与组合 71
6.1.2 角色 73
6.1.3 导航性 73
6.1.4 限定关联 75
6.1.5 导出关联 76
6.1.6 约束 77
PANEL6.1 OCL对象约束语言 79
6.1.7 关联类 79
6.2 类的进一步讨论 80
6.2.1 接口 81
6.2.2 抽象类 83
PANEL6.3 特性与标记值 83
6.3 参数化类 84
6.4 依赖 85
6.5 组件和包 85
6.6 可见性,保护性 85
6.7 小结 86
第7章 用例模型要点 87
7.1 执行者详述 89
7.2 用例详述 91
7.3 系统边界 91
7.4 用例的使用 92
7.4.1 用于需求捕获过程中的用例 92
7.4.2 开发过程中的用例 93
7.5 用例可能存在的问题 94
PANEL7.1 用例驱动开发吗? 95
7.6 小结 95
7.7 讨论问题 96
第8章 用例模型的深人讨论 97
8.1 用例之间的关系 97
8.1.1 用例重用《include》 97
8.1.2 组件和用例 99
8.2 泛化 101
8.1.3 分离出不同的行为《extend》 101
8.3 执行者与类 103
8.4 小结 104
8.5 讨论问题 104
第9章 交互图要点 105
9.1 协同 106
9.2 协同图中的交互 107
9.3 顺序图 109
PANEL9.1 消息应走向哪里?Demeter定理 110
9.4 高级特征 111
9.4.1 从对象发往对象自身的消息 111
9.4.2 隐匿行为细节 112
9.4.3 返回值 113
9.4.4 对象的生成和删除 114
9.4.5 时序 116
9.5.3 描述如何使用一个组件 117
9.5.2 描述一个设计模式如何工作 117
9.5 交互图的其他用途 117
9.5.1 说明一个类如何提供一个操作 117
9.6 小结 118
第10章 交互图高级讨论 119
10.1 类交互图 119
10.1.1 条件行为 119
10.1.2 迭代 121
10.2 并发 123
10.3 小结 126
第11章 状态图和活动图要素 127
11.1 状态图 127
11.1.1 意外消息 129
11.1.2 抽象程度 129
11.1.3 状态、转移、事件 130
11.1.4 动作 130
11.1.5 警戒门限 132
PANEL11.1 用状态图设计类 133
11.2 活动图 134
11.3 小结 136
第12章 深人研究状态图和活动图 137
12.1 其他类型的事件 137
12.2 其他类型的动作 138
12.3 深入研究状态图 139
12.4 状态图中的并发性 140
12.5 小结 141
第13章 实现图 143
13.1 组件模型 143
PANELl3.1 总结分类器和实例 145
13.2 配置模型 146
13.2.1 物理层 146
13.2.2 在硬件上配置软件 147
13.3 小结 148
PANEL13.2 项目中的配置模型 148
第14章 包、子系统和模型 149
14.1 包 149
14.2 子系统 153
14.3 模型 154
14.4 小结 154
第三部分 用例学习 157
第15章 CS4管理 157
15.1 用例学习 157
15.1.1 类模型 160
15.1.2 动态特性 161
15.1.4 活动图 162
15.2 讨论 162
15.1.3 状态图 162
第16章 点棋盘游戏 165
16.1 研究范围和初步分析 166
16.1.1 Noughts和Crosses游戏(TicTacToe) 166
16.1.2 Chess(国际象棋)游戏 167
16.2 交互动作 170
16.3 进一步研究框架 172
16.4 状态 174
16.5 讨论题 175
第17章 离散事件仿真 177
17.1 需求 177
17.2 类模型的轮廓 179
17.3 用例 181
17.3.1 create model 小结 181
17.4 基于仿真过程的标准机制 182
17.3.4 run a model小结 182
17.3.2 observe behavior 小结 182
17.3.3 collect statistics 小结 182
17.5 关联和导航 183
17.6 详细的类 186
17.6.1 类Scheduler 186
17.6.2 类ActiveEntity 187
17.6.3 类PassiveEntity 188
17.6.4 类Resource 188
17.7 类Report 190
17.8 类Statistic 191
17.9 构造一个完整的仿真模型 192
17.10 有关哲学家用餐问题 192
18.1 重用的实用性 197
18.1.1 什么可以被重用,如何重用 197
第18章 重用组件与模式 197
第四部分 实践应用 197
PANEL18.1 什么是一个真正的组件?这是个有争议的问题! 198
18.1.2 为什么重用 199
18.1.3 为什么重用很困难 200
18.1.4 哪些组件是真正可重用的 201
18.1.5 如何创建自己的组件 202
18.1.6 重用在面向对象中有什么不同之处 202
18.2 设计模式 203
18.2.1 例子Facade 205
18.2.2 UML和模式 206
18.3 框架 207
18.4 小结 207
第19章 产品质量验证、确认与测试 209
19.1 关于质量的概述 209
19.3 验证 210
19.2.3 进一步的参考资料 210
19.2 如何获取高质量 210
19.2.2 关注过程 210
19.2.1 关注产品质量 210
19.4 确认 211
19.5 测试 212
19.5.1 选择并实施测试 214
19.5.2 面向对象所特有的问题 215
19.5.3 为什么测试经常完成得很差 217
19.6 评审及检查 217
19.7 小结 219
第20章 过程质量管理、团队与质量保证 221
20.1 管理 221
20.1.1 项目管理 222
20.1.2 评估迭代式开发的项目 223
20.1.3 基于开发的组件管理 224
20.1.4 人员管理 224
20.2 团队 225
20.3 领导能力 226
20.4 质量保证 227
20.4.1 迭代式开发项目的质量保证 228
20.4.2 整体质量管理 229
PANEL20.1 质量保证反面的案例 229
20.5 进一步阅读的资料 230
20.6 小结 230
20.7 讨论问题 230
参考文献 233
索引 237