第1章 简介 1
1.1 结构化范型与面向对象范型 1
1.2 本书怎样组织 3
1.3 怎样阅读本书 5
1.4 你学到了些什么 5
第2章 面向对象:一种新的软件范型 7
2.1 面向对象潜在的优点 7
2.1.2 增加可扩展性 8
2.1.1 增加可复用性 8
2.1.3 改进质量 9
2.1.4 财务利益 9
2.1.5 增加项目成功机会 10
2.1.6 减少维护负荷 12
2.1.7 减少应用积压 13
2.1.8 可管理的复杂性 14
2.2 面向对象潜在的缺点 15
2.5 面向对象软件过程 17
2.4 现有的对象标准 17
2.3 对象技术会成为主流技术 17
2.6 你学到了些什么 20
2.7 复习题 21
第3章 收集需求:从本质用况到变例 23
3.1 组建需求建模团队 25
3.1.1 选择好的SME 28
3.1.2 选择出色的协调人员 29
3.1.3 选择出色的抄写员 29
3.2.1 会谈 30
3.2 基本需求收集技术 30
3.2.2 集体讨论 31
3.3 本质用况建模 33
3.3.1 一图胜千言:绘制用况图 33
3.3.2 确定参与者 35
3.3.3 编写用况文档 37
3.3.4 用况:本质用况和系统用况 38
3.3.5 确定用况 41
3.3.6 为不同的逻辑流程建模:活动的候选过程 45
3.4 本质用户界面原型 46
3.4.1 本质用户模型的例子 49
3.4.2 确保系统可用性 52
3.4.3 画出用户界面流程图 53
3.5 使用类职责协作卡进行领域建模 54
3.5.1 为CRC模型做准备 57
3.5.2 发现类 57
3.5.3 发现职责 61
3.5.4 定义协作者 62
3.5.5 排列CRC卡 65
3.5.6 CRC建模的优点与缺点 67
3.6 开发补充规范 70
3.6.1 确定业务规则 70
3.6.2 确定非功能需求和约束 71
3.7 确定变例 72
3.7.1 记录变例 73
3.8 组织建模房间的经验 74
3.7.2 变例的优点 74
3.9 需求技巧和技术 75
3.10 你学到了些什么 77
3.11 复习题 78
第4章 确定需求正确无误:需求确认技术 81
4.1 尽早测试、经常测试 82
4.2 用况情景测试 84
4.2.1 用况情景测试过程的步骤 85
4.2.2 创建用况情景 86
4.2.3 演练情景 88
4.2.4 用况情景测试的优点 92
4.2.5 用况情景测试的缺点 93
4.3 用户界面走查 93
4.4 需求评审 93
4.5 你学到了些什么 95
4.6 复习题 95
第5章 理解基础知识:面向对象的概念 97
5.1 新老概念 98
5.2 从结构化观点看待面向对象 99
5.3 对象和类 100
5.4 属性和方法 101
5.5 抽象、封装和信息隐藏 104
5.5.1 抽象 104
5.5.2 封装 104
5.5.3 信息隐藏 105
5.5.4 一个例子 105
5.5.5 为什么这很重要 105
5.6 继承 106
5.6.1 建立继承模型 107
5.6.2 继承技巧和技术 108
5.6.3 单一继承和多重继承 109
5.6.4 抽象类和具体类 111
5.7 关联 111
5.7.1 关联建模 112
5.7.2 怎样实现关联 114
5.8.1 聚合建模 115
5.8 聚合 115
5.8.2 聚合技巧与技术 116
5.9 协作 117
5.9.1 消息 117
5.9.2 协作技巧和技术 118
5.10 持久性 120
5.10.1 持久性技巧和技术 120
5.10.3 对象数据库 121
5.10.2 持久内存:对象空间 121
5.11 持久关联与临时关联 122
5.11.1 持久关联 122
5.11.2 临时关联:依赖 122
5.12 耦合 123
5.13 内聚 124
5.14 多态 125
5.14.1 一个例子:扑克游戏 125
5.14.2 大学里的多态 126
5.15 接口 127
5.16 组件 128
5.17 模式 129
5.18 你学到了些什么 130
5.19 复习题 130
第6章 确定构建内容:面向对象分析 131
6.1 系统用况建模 134
6.1.1 编写系统用况 134
6.1.2 在用况模型中复用:扩展关联、包含关联和继承 135
6.1.3 可以帮助理解用况建模的好东西 140
6.1.4 用况建模技巧和技术 141
6.2 顺序图:从用况到类 142
6.2.1 怎样绘制顺序图 147
6.2.2 为什么以及何时应该绘制顺序图 148
6.2.3 怎样归档顺序图 149
6.2.4 有助于了解顺序图的好东西 149
6.3 概念建模:类图 149
6.3.1 类、属性和方法建模 153
6.3.2 关联建模 156
6.3.3 依赖建模 157
6.3.4 通过继承在类间引入复用 158
6.3.5 聚合关联建模 160
6.3.6 关联类建模 161
6.3.7 归档类模型 162
6.3.8 概念类建模技巧 162
6.4 活动图 163
6.4.1 怎样绘制活动图 164
6.4.2 怎样归档活动图 165
6.5.1 确定用户需求 166
6.5 用户界面原型 166
6.5.2 构建原型 167
6.5.3 评估原型 167
6.5.4 决定是否要结束 167
6.5.5 有助于理解原型的好东西 168
6.5.6 原型技巧和技术 168
6.6 演化补充规范 169
6.7 有效应用分析模式 170
6.7.1 “业务实体”分析模式 170
6.7.2 “联系点”分析模式 171
6.7.3 模式的优点和缺点 172
6.8 用户文档 173
6.8.1 用户文档的类型 173
6.8.2 怎样写用户文档 174
6.9 用包组织模型 175
6.10 你学到了些什么 176
6.11 复习题 176
第7章 确定如何构建系统:面向对象设计 179
7.1 把模型层次化——类类型体系结构 182
7.1.1 用户界面层 184
7.1.2 控制器/处理层 185
7.1.3 业务/领域层 187
7.1.4 持久层 187
7.1.5 系统层 188
7.2 类建模 189
7.2.1 继承技术 190
7.2.2 关联与依赖技术 191
7.2.3 聚合与组合技术 194
7.2.4 在设计过程中为方法建模 195
7.2.5 在设计过程中为属性建模 202
7.2.6 在模型中引入接口 206
7.2.7 类建模设计技巧 209
7.3 有效应用设计模式 212
7.3.1 Singleton设计模式 212
7.3.3 有效应用模式的技巧 213
7.3.2 Facade设计模式 213
7.4 状态图建模 214
7.4.1 如何绘制状态图 216
7.4.2 什么时候以及为什么要绘制状态图 217
7.4.3 状态图和继承 218
7.5 协作建模 218
7.5.1 绘制协作图 220
7.5.2 协作与继承 220
7.5.3 什么时候该画协作图 221
7.6.1 如何开发组件模型 222
7.6 组件建模 222
7.6.2 实现组件 226
7.7 部署建模 226
7.7.1 如何开发部署模型 227
7.7.2 什么时候该生成部署图 228
7.8 关系持久性建模 229
7.8.1 键和对象标识符 229
7.8.2 把对象映射到关系数据库的一些基本知识 235
7.8.3 映射关联、聚合与组合 240
7.8.4 绘制持久模型 242
7.8.5 何时才应该开发持久模型 242
7.9 用户界面设计 243
7.9.1 用户界面设计原则 243
7.9.2 改善用户界面设计的技术 244
7.9.3 用户界面流程图 246
7.9.4 用户界面设计标准和准则 247
7.10 设计技巧 247
7.12 复习题 249
7.11 你学到了些什么 249
第8章 构建系统:面向对象编程 251
8.1 什么是编程 253
8.2 从设计到Java代码 255
8.2.1 用Java实现一个类 255
8.2.2 用Java声明实例属性 258
8.2.3 用Java实现实例方法 260
8.2.4 用Java实现静态方法和静态属性 261
8.2.5 实现构造器 264
8.2.6 用访问器封装属性 265
8.2.7 用Java实现继承 270
8.2.8 用Java实现接口 270
8.2.9 用Java实现关联、聚合与组合 274
8.2.10 实现依赖 280
8.2.11 用Java实现协作 281
8.2.12 实现业务规则 281
8.3 从设计到持久代码 282
8.3.1 实现持久代码的策略 282
8.3.2 定义与修改持久模式 283
8.3.3 创建、检索、更新、删除数据 284
8.3.4 实现关系数据库的行为 285
8.4 编程技巧 286
8.4.1 写出整洁代码的技术 287
8.4.2 编写高效文档的技术 289
8.4.3 其他因素 291
8.5 你学到了些什么 293
8.6 复习题 293
第9章 面向对象测试 295
9.1 消除对面向对象测试的误解 296
9.1.1 误解1:有了对象就可以少做点儿测试 296
9.1.2 误解2:结构化测试技术是充分的 297
9.1.3 误解3:测试用户界面是充分的 297
9.2 全生命周期面向对象测试 297
9.2.1 回归测试 298
9.2.2 质量保证 299
9.2.3 测试需求模型、分析模型和设计模型 299
9.2.4 测试源代码 302
9.2.5 整体测试系统 306
9.2.6 用户测试 308
9.3 从测试用例到缺陷 309
9.4 你学到了些什么 310
9.5 复习题 311
第10章 将它们装配在一起:软件过程 313
10.1 为什么面向对象开发会如此之不同 314
10.3 为什么会需要软件过程 315
10.2 什么是软件过程 315
10.4 从瀑布/顺序开发 317
10.5 ……到迭代开发 318
10.6 ……和增量开发 320
10.7 本书中给出的开发过程 321
10.8 面向对象软件过程的过程模式 323
10.9 统一过程 325
10.10 其他过程 326
10.10.1 极限编程 327
10.10.2 微软解决方案框架 329
10.10.3 OPEN过程 330
10.10.4 催化过程 331
10.11 何时使用对象 331
10.12 何时不使用对象 332
10.13 你学到了些什么 332
10.14 复习题 333
第11章 如何继续学习过程 335
11.1 P2K环境 335
11.1.2 使能技术 336
11.1.1 新的软件策略 336
11.1.3 领先的开发技术 337
11.1.4 现代软件过程 339
11.1.5 对象编程语言 340
11.1.6 Internet开发语言 341
11.2 适于特定职位的技能 342
11.2.1 业务分析员 342
11.2.4 持久建模员 343
11.2.3 对象建模员 343
11.2.2 IT高级经理 343
11.2.5 持久管理员 344
11.2.6 程序员 344
11.2.7 项目经理 344
11.2.8 质保工程师 344
11.2.9 软件架构师 345
11.2.10 测试工程师 345
11.3 继续整个学习过程 345
11.3.3 获得指导 346
11.3.1 参加介绍性的培训 346
11.3.2 获得第一手经验 346
11.3.4 以学习小组进行工作 347
11.3.5 阅读、阅读、再阅读 348
11.3.6 参加高级培训 348
11.4 你学到了些什么 348
11.5 告别演说 348
词汇表 349
参考文献 371