第一部分 引言 3
第1章 需求问题 3
1.1 软件开发的目标 3
1.2 有关数据 3
1.3 项目成功和失败的根本原因 4
1.4 小结 8
第2章 需求管理简介 9
2.1 定义 9
2.2 需求管理技术的应用 10
2.3 路线图 11
2.4 小结 13
第3章 需求和软件生命周期 14
3.1 传统软件过程模型 14
3.2 迭代方法 17
3.3 迭代模型中的需求 19
3.4 小结 19
第4章 软件团队 21
4.1 把软件开发作为一种团队活动 21
4.2 个例研究 23
4.3 小结 24
第二部分 团队技能之一——分析问题 29
第5章 问题分析的五个步骤 29
5.1 第一步:在问题定义上达成共识 30
5.2 第二步:理解根本原因——问题背后的问题 31
5.3 第三步:确定涉众和用户 33
5.4 第四步:定义解决方案系统的边界 34
5.5 第五步:确定解决方案将受的约束 36
5.7 展望 38
5.6 小结 38
第6章 业务建模 40
6.1 业务建模的目的 40
6.2 使用软件工程技术进行业务建模 41
6.3 从业务模型到系统模型 43
6.4 何时使用业务建模 43
6.5 小结 44
6.6 展望 44
第7章 软件密集型系统的系统工程 45
7.1 什么是系统工程? 45
7.2 系统工程中的需求分配 47
7.3 个例研究:HOLIS的系统工程 51
7.4 小结 57
7.5 团队技能之一的小结 57
8.1 启发的障碍 61
第三部分 团队技能之二——理解用户和涉众的需要 61
第8章 需求启发的挑战 61
8.2 小结 63
第9章 产品或系统的特性 64
9.1 涉众和用户需要 64
9.2 特性 64
9.3 小结 67
第10章 面谈 68
10.1 与背景无关问题 68
10.2 解决方案背景的问题 69
10.3 真实的时刻:面谈 69
10.4 编辑“需要”数据 71
10.5 关于问卷调查的注解 72
10.6 小结 73
11.1 加速决策过程 74
第11章 需求专题讨论会 74
11.2 准备专题讨论会 75
11.3 安排日程 77
11.4 举行专题讨论会 78
11.5 小结 80
第12章 自由讨论和意见精简 81
12.1 现场自由讨论 81
12.2 意见精简 83
12.3 基于万维网的自由讨论 85
12.4 个例研究:HOLIS需求专题讨论会 86
12.5 小结 89
第13章 情节串联板制作 90
13.1 情节串联板的类型 90
13.2 情节串联板做什么 91
13.3 情节串联板的工具和技术 92
13.4 情节串联板的几点提示 93
13.5 小结 93
13.6 团队技能之二的小结 96
第四部分 团队技能之三——定义系统 99
第14章 用例入门 99
14.1 用例的好处 99
14.2 用例基础 100
14.3 逐步构建用例模型 102
14.4 关于用例、情节串联板和用户接口设计 105
14.5 个例研究:HOLIS的用例 108
14.6 小结 110
第15章 组织需求信息 111
15.1 组织复杂硬件和软件系统的需求 112
15.2 组织产品系列的需求 113
15.4 个例研究:组织HOLIS的需求 114
15.3 关于“未来”需求 114
15.6 展望 115
15.5 小结 115
第16章 前景文档 116
16.1 前景文档的组成 116
16.2 δ前景文档 119
16.3 小结 121
第17章 产品管理 122
17.1 产品主管的职责 122
17.2 软件产品公司的产品经理 123
17.3 产品经理的主要活动 124
17.4 支持活动 131
17.5 小结 133
17.6 团队技能之三的小结 133
18.1 项目范围的问题 137
第五部分 团队技能之四——管理范围 137
第18章 确立项目范围 137
18.2 难题 139
18.3 需求基线 139
18.4 设定优先级 140
18.5 评估工作量 141
18.6 加入风险因素 142
18.7 缩小范围 143
18.8 个例研究:HOLIS的范围管理 144
18.9 小结 147
第19章 管理客户 148
19.1 促使客户管理他们的项目范围 148
19.2 交流结果 148
19.4 管理基线 149
19.3 与客户协商 149
19.5 小结 150
19.6 团队技能之四的小结 151
第六部分 团队技能之五——细化系统定义 155
第20章 软件需求——严格的定义 155
20.1 透视软件需求 155
20.2 用例和软件需求之间的关系 156
20.3 特性和软件需求之间的关系 157
20.4 需求的两难问题:“做什么”与“怎么做” 157
20.5 更多有关需求与设计的讨论 159
20.6 需求的洽谈特性描述 160
20.7 小结 161
20.8 展望 161
21.1 用例是如何演变的 162
21.2 用例的范围 162
第21章 细化用例 162
21.3 个例研究:简单用例剖析 163
21.4 扩展用例 168
21.5 在其他用例中引入用例 169
21.6 小结 170
21.7 展望 170
第22章 开发补充规格说明 171
22.1 补充规格说明的作用 171
22.2 在补充规格说明中表达功能性需求 171
22.3 探索非功能性需求 172
22.4 理解设计约束 174
22.5 确定其他需求 176
22.6 把补充规格说明链接到用例 177
22.7 补充规格说明的模板 177
22.9 展望 179
22.8 小结 179
23.1 找到“最佳击球点” 180
第23章 关于歧义性和确切性 180
23.2 玛丽有只小羊羔 182
23.3 消除歧义的技术 184
23.4 小结 185
第24章 说明需求的技术性方法 186
24.1 伪代码 187
24.2 有限状态机 187
24.3 决策树和决策表 189
24.4 活动图 189
24.5 实体联系模型 190
24.6 小结 191
24.7 团队技能之五小结 191
25.1 把需求直接映射到设计和编码 195
第七部分 团队技能之六——构建正确的系统 195
第25章 从用例到实现 195
25.2 在设计模型中实现用例 199
25.3 从设计到实现 201
25.4 小结 202
25.5 展望 202
第26章 从用例到测试用例 203
26.1 测试人员的角度:关于大黑盒的思考 203
26.2 用例是测试用例吗? 204
26.3 公共测试名词 204
26.4 测试工件的关系 204
26.5 测试用例的作用 205
26.6 用例场景 205
26.7 从用例得到测试用例:四步过程 206
26.8 管理测试覆盖 210
26.9 用例的黑盒测试和白盒测试 210
26.10 小结 211
第27章 跟踪需求 212
27.1 软件开发中跟踪的作用 212
27.2 跟踪关系 213
27.3 通用的跟踪模型 214
27.4 使用跟踪工具 221
27.5 在没有跟踪工具条件下进行 221
27.6 小结 222
第28章 管理变更 223
28.1 为什么需求会变更? 223
28.2 外部因素 223
28.3 内部因素 224
28.4 “我们已经遇到了敌人,敌人就是我们自己” 225
28.5 管理变更的过程 226
28.6 需求配置管理 231
28.7 小结 233
28.8 展望 234
第29章 在迭代开发过程中评估需求质量 235
29.1 软件项目质量 235
29.2 在迭代开发中评估质量 236
29.3 需求工件集合 237
29.4 完成评估 238
29.5 需求的质量评估清单 239
29.6 小结 243
29.7 团队技能之六的小结 244
29.8 展望 244
30.1 利用有效的需求实践降低需求风险 251
第八部分 开始 251
第30章 敏捷需求方法 251
30.2 方法论设计的目标 252
30.3 文档是达到目的的手段 253
30.4 极限需求方法 254
30.5 敏捷需求方法 256
30.6 稳健需求方法 257
30.7 小结 259
第31章 需求管理的方案 260
31.1 选择自己的需求方法 260
31.2 现在开始下一次发布! 263
第九部分 附录 266
附录A HOLIS工件 266
A.1 个例的背景 266
A.2 团队技能1:分析问题 267
A.3 团队技能2:理解用户的需要 270
A.4 团队技能3:定义系统 274
附录B 前景文档模板 286
附录C 用例规格说明模板 293
附录D 补充规格说明模板 296
附录E Rational统一过程中的需求管理 300
E.1 Rational统一过程的结构 300
E.2 Rational统一过程中的需求管理 301
E.3 过程集成 308
附录F SEI-CMM和ISO 9000:2000中的需求管理 309
F.1 SEI-CMM中的需求管理 309
F.2 ISO 9000中的需求管理 312
参考文献 315