第1章 什么是需求 1
1.1 需求收集与系统建模 3
1.2 敏捷软件开发 4
1.3 为什么需要收集需求 8
1.4 什么是需求 9
1.4.1 功能性需求 9
1.4.2 非功能性需求 9
1.4.3 限制条件 10
1.5 需求演进 10
1.6 模板 11
1.7 需求项框架 13
1.8 Volere需求过程 14
第2章 需求过程 15
2.1 敏捷指南 17
2.2 需求过程的上下文 18
2.3 需求过程 18
2.4 案例分析 19
2.5 网罗需求 21
2.6 为需求制作原型 23
2.7 场景 24
2.8 编写需求 24
2.9 质量关 25
2.10 对需求的复用 26
2.11 复查规格说明 27
2.12 迭代和增量过程 27
2.13 需求工作事后分析 28
2.14 定制需求过程 29
2.15 小结 30
第3章 项目启动 31
3.1 敏捷指南 33
3.2 IceBreaker项目 34
3.3 范围、风险承担者和目标 35
3.4 设定范围 35
3.4.1 感兴趣的领域 36
3.4.2 首次分析工作上下文范围 38
3.5 风险承担者 39
3.5.1 客户 41
3.5.2 顾客 42
3.5.3 用户:理解他们 43
3.6 其他风险承担者 44
3.6.1 顾问 45
3.6.2 管理者 45
3.6.3 主题事务专家 45
3.6.4 核心团队 45
3.6.5 检查人员 46
3.6.6 市场力量 46
3.6.7 法律专家 46
3.6.8 消极的风险承担者 46
3.6.9 业界标准制定者 46
3.6.10 公众意见 46
3.6.11 政府 47
3.6.12 特殊利益团体 47
3.6.13 技术专家 47
3.6.14 文化利益 47
3.6.15 相邻系统 47
3.7 发现风险承担者 48
3.8 目标:想达到什么目的 48
3.9 需求限制条件 52
3.9.1 解决方案限制条件 52
3.9.2 项目限制条件 53
3.10 命名惯例与定义 53
3.11 估算产品的成本 54
3.12 风险 55
3.13 继续还是终止 56
3.14 项目启动替代方案 57
3.15 小结 57
第4章 事件驱动的用例 59
4.1 敏捷指南 59
4.2 理解工作 59
4.3 用例及其范围 61
4.4 工作 62
4.5 工作的上下文范围 62
4.6 业务事件 64
4.7 业务事件和业务用例是好想法的原因 67
4.8 发现业务事件 68
4.9 业务用例 70
4.10 相邻系统的角色 71
4.10.1 主动的相邻系统 72
4.10.2 自治的相邻系统 74
4.10.3 合作的相邻系统 76
4.11 业务用例和产品用例 77
4.12 小结 80
第5章 网罗需求 82
5.1 敏捷指南 82
5.2 职责 83
5.3 网罗与业务用例 85
5.4 当前状况扮演的角色 86
5.5 做学徒 89
5.6 观察结构和模式 91
5.7 风险承担者访谈 92
5.8 找出工作的本质 94
5.9 解决正确的问题 97
5.10 创新的产品 98
5.11 业务用例研讨会 100
5.11.1 成果 101
5.11.2 场景 102
5.11.3 业务规则 102
5.12 创造性研讨会 102
5.13 头脑风暴 104
5.14 用户代表 105
5.15 思维图 107
5.16 墙纸 109
5.17 录像和照相 109
5.18 wiki、blog和论坛 110
5.19 文档考古学 111
5.20 其他需求收集技巧 113
5.20.1 家庭治疗 113
5.20.2 软系统和视角 114
5.21 确定产品应该是怎样的 114
5.22 技术是否重要 116
5.23 选择最佳网罗技巧 117
5.24 小结 119
第6章 场景和需求 120
6.1 敏捷指南 120
6.2 场景 121
6.3 正常用例场景 124
6.4 场景图示 126
6.5 可选情况 127
6.6 异常情况 128
6.7 假设场景 129
6.8 误用场景和负面场景 129
6.9 场景模板 131
6.10 产品用例场景 132
6.11 小结 134
第7章 功能性需求 135
7.1 敏捷指南 136
7.2 功能性需求 136
7.3 发现功能性需求 137
7.4 细节程度或粒度 139
7.5 异常和可选方式 140
7.6 避免二义性 141
7.7 技术需求 142
7.8 需求不是解决方案 143
7.9 需求分组 143
7.10 功能性需求的替代方式 144
7.11 小结 147
第8章 非功能性需求 148
8.1 敏捷指南 149
8.2 非功能性的需求 149
8.3 用例与非功能性需求 151
8.4 非功能性需求类型 151
8.5 观感需求:类型10 152
8.6 易用性和人性化需求:类型11 154
8.7 执行需求:类型12 157
8.8 操作和环境需求:类型13 158
8.9 可维护性和支持需求:类型14 160
8.10 安全性需求:类型15 160
8.10.1 保密性 161
8.10.2 可得性 161
8.10.3 完整性 161
8.10.4 审计 162
8.10.5 没有其他 162
8.11 文化和政策需求:类型16 163
8.12 法律需求:类型17 165
8.12.1 萨班-奥西利法案(Sarbanes-Oxley Act) 166
8.12.2 其他法律要求 166
8.12.3 标准 167
8.13 发现非功能性需求 167
8.13.1 用Blog记录需求 167
8.13.2 用例 167
8.13.3 模板 169
8.13.4 原型和非功能性需求 169
8.13.5 客户 170
8.14 不要编写解决方案 170
8.15 小结 171
第9章 验收标准 173
9.1 敏捷指南 173
9.2 验收需要标准的原因 174
9.3 测量的尺度 175
9.4 理由 176
9.5 非功能性需求的验收标准 177
9.5.1 产品是否失败 179
9.5.2 主观测试 179
9.5.3 观感需求 180
9.5.4 易用性和人性化需求 180
9.5.5 执行需求 181
9.5.6 可操作性需求 182
9.5.7 可维护性需求 182
9.5.8 安全性需求 183
9.5.9 文化和政策需求 183
9.5.10 法律需求 184
9.6 功能性需求的验收标准 184
9.7 用例和验收标准 185
9.8 项目目标的验收标准 186
9.9 解决方案限制条件的验收标准 186
9.10 小结 187
第10章 编写需求 189
10.1 敏捷指南 189
10.2 将潜在需求变成书面需求 191
10.3 知识与规格说明书 192
10.4 Volere需求规格说明书模板 193
10.5 第1部分——项目的目标 194
10.6 第2部分——客户、顾客和其他风险承担者 197
10.7 第3部分——产品的用户 198
10.8 第4部分——强制的限制条件 199
10.9 第5部分——命名惯例和定义 201
10.10 第6部分——相关事实和假定 202
10.11 第7部分——工作的范围 203
10.12 第8部分——产品的范围 204
10.13 需求项框架 204
10.13.1 白雪卡 205
10.13.2 自动化的需求工具 206
10.14 原子需求 206
10.14.1 需求编号 207
10.14.2 需求类型 207
10.14.3 事件/用例编号 207
10.14.4 描述 208
10.14.5 理由 208
10.14.6 来源 208
10.14.7 验收标准 208
10.14.8 顾客满意度和不满意度 208
10.14.9 优先级 209
10.14.10 冲突 210
10.14.11 支持材料 210
10.14.12 历史 210
10.15 编写需求规格说明 210
10.16 第9部分——功能性需求 211
10.17 非功能性需求 213
10.18 项目问题 214
10.19 第18部分——开放式问题 214
10.20 第19部分——立即可用的解决方案 215
10.21 第20部分——新问题 215
10.22 第21部分——任务 216
10.23 第22部分——迁移至新产品 216
10.24 第23部分——风险 216
10.25 第24部分——费用 217
10.26 第25部分——用户文档和培训 218
10.27 第26部分——后续版本需求 218
10.28 第27部分——解决方案的设想 219
10.29 小结 219
第11章 质量关 220
11.1 敏捷指南 221
11.2 需求质量 222
11.3 使用质量关 223
11.4 测试完整性 224
11.4.1 测试是否存在遗漏的部分 224
11.4.2 测试是否对所有风险承担者都有意义 225
11.5 测试可追踪性 226
11.6 统一使用术语 227
11.7 确定是否与目标相关 228
11.8 测试验收标准 230
11.9 确定在限制条件下是否可行 231
11.10 区分是需求还是解决方案 232
11.11 顾客价值 234
11.12 镀金需求 235
11.13 需求蔓延 235
11.14 实现质量关 238
11.15 小结 240
第12章 制作需求原型 241
12.1 敏捷指南 243
12.2 原型与事实 243
12.3 低保真原型 245
12.4 高保真原型 249
12.5 故事板 251
12.6 对象生命历史 252
12.7 原型循环 254
12.7.1 设计与构建 254
12.7.2 在用户环境中测试 255
12.7.3 分析结果 256
12.8 小结 257
第13章 复用需求 258
13.1 什么是复用需求 258
13.2 可复用需求的来源 260
13.3 需求模式 262
13.4 业务事件模式 263
13.4.1 事件响应的上下文 264
13.4.2 事件响应的处理 264
13.4.3 事件响应的数据 265
13.5 通过抽象形成模式 266
13.5.1 特定领域的模式 267
13.5.2 跨领域的模式 269
13.6 领域分析 270
13.7 复用的趋势 271
13.7.1 复用和对象 271
13.7.2 复用现在是否是一项工作 272
13.8 小结 273
第14章 复查需求规格说明 274
14.1 敏捷指南 275
14.2 复查规格说明书 275
14.3 审查 276
14.4 发现遗漏的需求 277
14.5 确定是否已发现所有的业务用例 277
14.6 顾客价值 283
14.7 排列需求优先级 284
14.7.1 影响优先级的因素 285
14.7.2 何时确定优先级 285
14.7.3 需求优先级等级 286
14.7.4 优先级电子表格 287
14.8 冲突的需求 288
14.9 二义性的规格说明 290
14.10 风险分析 290
14.10.1 项目驱动 291
14.10.2 项目限制条件 292
14.10.3 功能性需求 292
14.11 度量所需的工作量 292
14.12 小结 293
第15章 需求向何处去 294
15.1 调整需求过程 294
15.2 需求工具 296
15.3 工具对应目标 297
15.4 发布规格说明书 299
15.4.1 合同化文档 299
15.4.2 管理层总结 300
15.4.3 市场人员总结 300
15.4.4 用户复查 300
15.4.5 复查规格说明书 301
15.5 需求可追踪性 301
15.6 处理变化 304
15.6.1 变化的世界 305
15.6.2 需求反馈 306
15.7 需求事后分析 307
15.7.1 复查的内容 308
15.7.2 进行事后分析 308
15.7.3 事后分析报告 309
15.8 记事本 310
15.9 小结 310
附录A Volere需求过程模型 312
A.1 Volere需求过程模型 312
A.2 定义项目启动目标(过程说明1.1.1) 315
A.3 计划物质上的安排(过程说明1.1.2) 316
A.4 与参加者沟通(过程说明1.1.3) 316
A.5 确定产品目标(过程说明1.2.1) 317
A.6 确定工作上下文范围(过程说明1.2.2) 318
A.7 进行“第一刀”风险分析(过程说明1.2.3) 318
A.8 确定风险承担者(过程说明1.2.4) 319
A.9 分解工作上下文(过程说明1.2.5) 320
A.10 考虑“无事件(Non-event)”(过程说明1.2.6) 320
A.11 确定业务术语(过程说明1.2.7) 320
A.12 定义项目限制条件(过程说明1.2.8) 320
A.13 确定感兴趣的领域(过程说明1.2.9) 321
A.14 编写项目启动报告(过程说明1.3.1) 322
A.15 复查启动阶段成果(过程说明1.3.2) 322
A.16 跟进启动会议(过程说明1.3.3) 323
A.17 做出初步估计(过程说明1.3.4) 323
A.18 复查当前状况(过程说明2.1.1) 325
A.19 做用户的学徒(过程说明2.1.2) 325
A.20 确定本质需求(过程说明2.1.3) 325
A.21 需求头脑风暴(过程说明2.1.4) 326
A.22 用户访谈(过程说明2.1.5) 326
A.23 文档考古学(过程说明2.1.6) 327
A.24 制作需求录像带(过程说明2.1.7) 328
A.25 召开用例研讨会(过程说明2.1.8) 329
A.26 构建事件模型(过程说明2.1.9) 329
A.27 构建场景模型(过程说明2.1.10) 330
A.28 举行创造性研讨会(过程说明2.1.11) 330
A.29 研究相邻系统(过程说明2.2.1) 331
A.30 定义用例边界(过程说明2.2.2) 331
A.31 收集业务事件知识(过程说明2.3.1) 332
A.32 选择合适的网罗技术(过程说明2.3.2) 333
A.33 询问澄清问题(过程说明2.4) 334
A.34 确定潜在需求(过程说明3.1) 335
A.35 确定功能性需求(过程说明3.2) 335
A.36 确定组合需求(过程说明3.3) 336
A.37 将需求规范化(过程说明3.4) 336
A.38 将系统限制条件规范化(过程说明3.5) 336
A.39 确定非功能性需求(过程说明3.6) 336
A.40 编写功能性验收标准(过程说明3.7) 337
A.41 编写非功能性验收标准(过程说明3.8) 337
A.42 确定顾客价值(过程说明3.9) 338
A.43 确定依赖关系和冲突之处(过程说明3.10) 338
A.44 复查需求验收标准(过程说明4.1) 339
A.45 复查需求相关性(过程说明4.2) 340
A.46 复查需求的切实可行性(过程说明4.3) 340
A.47 识别镀金需求(过程说明4.4) 341
A.48 复查需求完整性(过程说明4.5) 341
A.49 计划制作原型(过程说明5.1) 342
A.50 构建低保真的原型(过程说明5.2.1) 342
A.51 构建高保真的原型(过程说明5.2.2) 343
A.52 与用户测试高保真的原型(过程说明5.3.1) 344
A.53 与用户测试低保真的原型(过程说明5.3.2) 345
A.54 确定新的需求和有变化的需求(过程说明5.3.3) 345
A.55 评估原型工作量(过程说明5.3.4) 345
A.56 进行单独的个人复查(过程说明6.1.1) 346
A.57 分别进行小组会议(过程说明6.1.2) 347
A.58 项目协调人复查事实(过程说明6.1.3) 348
A.59 举行事后复查会议(过程说明6.2.1) 348
A.60 得到事后分析报告(过程说明6.2.2) 349
A.61 确定过滤标准(过程说明6.3.1) 350
A.62 选择相关需求类型(过程说明6.3.2) 351
A.63 增加新的过滤标准(过程说明6.3.3) 351
A.64 确定遗漏的需求(过程说明7.1.1) 352
A.65 确定顾客价值评分(过程说明7.1.2) 352
A.66 确定需求的相互作用(过程说明7.1.3) 353
A.67 确定制作原型的机会(过程说明7.1.4) 353
A.68 发现遗漏的保管人需求(过程说明7.1.5) 354
A.69 寻找可能的风险(过程说明7.2.1) 355
A.70 量化每个风险(过程说明7.2.2) 355
A.71 确定估算输入信息(过程说明7.3.1) 356
A.72 针对事件估算工作量(过程说明7.3.2) 357
A.73 估算需求工作量(过程说明7.3.3) 357
A.74 设计需求规格说明书的形式(过程说明7.4.1) 358
A.75 汇编需求规格说明书(过程说明7.4.2) 359
A.76 需求过程模型中用到的术语 359
附录B Volere需求规格说明书模板 370
附录C 功能点计数简介 414
C.1 度量工作 414
C.2 功能点计数快速入门 415
C.2.1 工作上下文范围 416
C.2.2 工作存储的数据 416
C.2.3 业务用例 418
C.3 针对业务用例计算功能点 418
C.3.1 计算输入型业务用例 418
C.3.2 计算输出型业务用例 419
C.3.3 计算时间触发型业务用例 421
C.4 计算存储的数据 422
C.4.1 内部的存储数据 422
C.4.2 外部的存储数据 423
C.5 针对未知信息进行调整 424
C.6 功能点计数的下一步 425
附录D 项目社会关系分析模板 427
D.1 风险承担者图示模板 427
D.2 风险承担者分析模板 428
词汇表 431
参考文献 435