第Ⅰ部分 概览:全景图 3
第1章 软件需求方法简史 3
1.1 背景:软件过程模型几十年 3
1.2 预言性的瀑布式过程 5
1.2.1 瀑布模型存在的问题 6
1.2.2 瀑布模型中的需求:铁三角 6
1.2.3 然而,瀑布模型仍然与我们同在 8
1.3 迭代式与增量式过程 9
1.3.1 螺旋模型 10
1.3.2 快速应用开发(RAD) 10
1.3.3 统一软件过程(RUP) 11
1.3.4 迭代式过程的需求管理 12
1.4 适应(敏捷)过程 13
1.4.1 敏捷宣言 13
1.4.2 极限编程(XP) 15
1.4.3 Scrum 16
1.5 敏捷需求管理从根本上不同 17
1.5.1 告别铁三角 18
1.5.2 敏捷通过增量式价值交付优化投资回报率 19
1.6 企业级适应性过程 21
1.7 精益软件运动简介 21
1.7.1 精益软件之屋 23
1.7.2 软件需求的系统视图 29
1.7.3 看板:另一种软件方法的兴起 30
1.8 小结 31
第2章 敏捷需求全景图 33
2.1 解读全景图 35
2.2 全景图:团队层面 36
2.2.1 敏捷团队 37
2.2.2 敏捷团队中的角色 38
2.2.3 迭代 40
2.2.4 用户故事与团队待办事项 41
2.3 全景图:项目集层面 42
2.3.1 发布和潜在可交付增量(PSI) 42
2.3.2 愿景、特性与项目集待办事项 43
2.3.3 制定发布计划 44
2.3.4 路线图 45
2.3.5 产品管理 45
2.4 全景图:项目组合层面 46
2.4.1 投资主题 47
2.4.2 篇章和项目组合待办事项 47
2.4.3 架构跑道 48
2.5 小结 48
第3章 团队的敏捷需求 49
3.1 介绍团队层面 49
3.1.1 为什么要讨论团队 49
3.1.2 消除职能筒仓 52
3.2 敏捷团队的角色与职责 53
3.2.1 产品负责人 53
3.2.2 Scrum/Agile Master 54
3.2.3 开发人员 54
3.2.4 测试人员 55
3.2.5 团队/项目集的其他角色 56
3.3 用户故事和团队待办事项 57
3.3.1 待办事项 57
3.3.2 用户故事 58
3.3.3 用户故事基础知识 59
3.3.4 任务 59
3.4 验收测试 60
3.5 单元测试 62
3.6 小结 63
第4章 项目集的敏捷需求 65
4.1 介绍项目集层面 65
4.2 组织大规模的敏捷团队 66
4.2.1 特性团队与组件团队 67
4.2.2 系统团队 73
4.2.3 发布管理团队 75
4.2.4 产品管理 76
4.3 愿景 76
4.4 特性 77
4.4.1 新特性构成项目集待办事项 78
4.4.2 特性的测试 79
4.5 非功能需求 80
4.5.1 非功能需求作为对待办事项的约束 80
4.5.2 测试非功能需求 81
4.6 敏捷发布火车 82
4.6.1 发布与潜在可交付增量 82
4.6.2 制定发布计划 83
4.7 路线图 84
4.8 小结 85
第5章 项目组合的敏捷需求 87
5.1 介绍项目组合层面 87
5.2 投资主题 88
5.3 项目组合管理团队 89
5.4 篇章和项目组合待办事项 90
5.5 篇章、特性和故事 91
5.6 架构跑道和架构篇章 92
5.6.1 实现架构篇章 94
5.6.2 架构跑道:项目组合、项目集和团队 94
5.7 小结 95
5.8 完整的企业需求管理信息模型 96
第Ⅱ部分 团队的敏捷需求 103
第6章 用户故事 103
6.1 概述 103
6.1.1 用户故事概述 104
6.1.2 用户故事帮助架起开发人员和客户之间的沟通桥梁 105
6.1.3 用户故事不是需求说明书 106
6.2 用户故事的形式 106
6.2.1 卡片、对话与确认 107
6.2.2 用户故事的语调 107
6.2.3 用户故事的细节 109
6.2.4 用户故事的验收标准 109
6.3 良好用户故事中的INVEST 110
6.3.1 独立性 110
6.3.2 可协商……而且经过协商 111
6.3.3 有价值 112
6.3.4 可估算 114
6.3.5 小型 114
6.3.6 可测试 116
6.4 分割用户故事 117
6.5 故事穿刺 120
6.5.1 技术穿刺和功能穿刺 120
6.5.2 对故事穿刺的指导原则 121
6.6 使用索引卡片建模故事 122
6.7 小结 123
第7章 干系人、用户表征和用户体验 125
7.1 干系人 125
7.1.1 系统干系人 126
7.1.2 项目干系人 126
7.1.3 干系人的声音:产品负责人 127
7.1.4 干系人的介入程度 127
7.1.5 打造干系人信任 128
7.1.6 干系人互动 128
7.2 识别干系人 129
7.2.1 识别项目干系人 129
7.2.2 识别系统干系人 130
7.2.3 系统干系人的分类 131
7.2.4 理解系统干系人的需求 132
7.2.5 干系人/产品负责人团队 132
7.3 用户表征 133
7.3.1 主要和次要用户表征 133
7.3.2 通过用户故事角色建模发现用户表征 133
7.4 敏捷与用户体验开发 136
7.4.1 用户体验的问题 136
7.4.2 用户界面开发的低保真选项 136
7.4.3 用户体验穿刺 137
7.4.4 用户体验集中开发 137
7.4.5 分布式、有治理的用户界面开发模型 138
7.5 小结 139
第8章 敏捷估算与速率 141
8.1 概述 141
8.1.1 有办法解决不合常理之处 142
8.1.2 目标是相同的:更可靠的估算 142
8.2 为什么要估算?估算的商业价值 143
8.3 估算范围与故事点 144
8.4 理解故事点:一个练习 145
8.4.1 练习部分1:相对估算 145
8.4.2 练习部分2:使用计划扑克估算实际工作 146
8.4.3 我们应该在估算上花多少时间 149
8.4.4 一则寓言的估算警示:故事中的故事 150
8.4.5 使用在线计划扑克进行分布式估算 151
8.5 一种替代技术:桌面相对估算 152
8.6 从范围估算到团队速率 153
8.7 关于相对估算模型的告诫 154
8.8 从速率到进度和成本 156
8.8.1 进度估算 156
8.8.2 成本估算 156
8.9 理想程序员人天估算法 157
8.10 一种混合模型 159
8.11 小结 160
第9章 迭代、待办事项、吞吐量和看板 161
9.1 迭代:敏捷的心跳 161
9.1.1 迭代长度 162
9.1.2 迭代模式:计划、执行、评审和回顾 163
9.1.3 团队待办事项 163
9.1.4 迭代计划 164
9.1.5 迭代承诺 166
9.1.6 执行迭代 170
9.1.7 追踪与调整 171
9.1.8 评审与回顾 174
9.1.9 特性预览 176
9.2 待办事项、精益与吞吐量 176
9.2.1 待办事项成熟度,精益和利特尔法则 178
9.2.2 博客故事:构造良好的产品待办事项是否会降低团队的敏捷性 178
9.2.3 利特尔法则与敏捷团队的待办事项 179
9.2.4 运用利特尔法则提高敏捷性并缩减面市时间 180
9.2.5 读者的反响 183
9.2.6 通过控制待办事项的队列长度管理吞吐量 185
9.3 软件看板制度 187
9.3.1 看板制度的属性 187
9.3.2 看板的业务类别 188
9.4 小结 189
第10章 验收测试 191
10.1 在关于敏捷需求的书中为什么要讨论测试 191
10.2 敏捷测试概述 193
10.3 什么是验收测试 195
10.4 良好的故事验收测试的特征 196
10.4.1 它们测试的是良好的用户故事 197
10.4.2 它们是相对无歧义的并且测试所有场景 197
10.4.3 它们持久存在 198
10.5 验收测试驱动开发ATDD 198
10.6 验收测试模板 200
10.7 自动化验收测试 202
10.8 单元测试和组件测试 204
10.8.1 单元测试 205
10.8.2 组件测试 207
10.9 小结 207
第11章 产品负责人的作用 209
11.1 这是一个新角色吗 209
11.2 产品负责人和产品经理双重角色的观点 210
11.2.1 名称游戏:产品负责人的角色/头衔试验 214
11.2.2 我们的结论:采取双重角色 215
11.3 产品负责人在企业中的职责 216
11.3.1 管理待办事项 216
11.3.2 准时制故事细化 219
11.3.3 驱动迭代 221
11.3.4 技术债和价值流的问题 224
11.3.5 共同制定发布计划 226
11.4 优秀产品负责人的五种基本特质 227
11.5 与产品经理协作 229
11.6 产品负责人瓶颈:临时产品负责人、产品负责人代理、产品负责人团队 230
11.6.1 产品负责人代理 230
11.6.2 产品负责人团队 230
11.7 在企业中培养产品负责人角色 231
11.7.1 TradeStation科技公司 231
11.7.2 CSG Systems公司 232
11.7.3 Symbian软件有限公司 233
11.7.4 Discount Tire 233
11.8 小结 234
第12章 需求发现工具箱 235
12.1 需求工作坊 236
12.1.1 为工作坊做准备 237
12.1.2 设立议程 239
12.1.3 运行工作坊 239
12.2 头脑风暴 240
12.2.1 创意生成 241
12.2.2 创意收敛 243
12.2.3 创意的优先级排列 244
12.3 访谈与调查 246
12.3.1 与上下文无关的提问 247
12.3.2 有解决方案上下文的提问 247
12.3.3 真相时刻:访谈 248
12.3.4 汇总需求数据 248
12.3.5 对调查表的说明 249
12.4 用户体验原型 250
12.5 组建产品委员会 252
12.6 竞争性分析 253
12.7 客户变更请求系统 255
12.8 用例建模 256
12.9 小结 256
第Ⅲ部分 项目集的敏捷需求 261
第13章 愿景、特性和路线图 261
13.1 愿景 261
13.2 愿景的表达 262
13.2.1 愿景文档 262
13.2.2 高级数据表方式 263
13.2.3 初步新闻稿方式 264
13.2.4 “特性待办事项加简述”的方式 265
13.2.5 交流非功能需求(系统质量) 265
13.3 特性 265
13.4 估算特性 267
13.4.1 估算工作量 268
13.4.2 估算成本 269
13.4.3 估算开发时间 270
13.5 测试特性 270
13.6 特性的优先级排列 271
13.6.1 以价值/工作量表示ROI:第一种估算方式 272
13.6.2 价值/工作量的ROI方法有问题吗 273
13.6.3 基于延迟成本排列特性优先级 273
13.6.4 延迟成本(CoD)介绍 273
13.6.5 估算延迟成本 277
13.6.6 特性优先级排列估算矩阵 278
13.6.7 所有优先级都是本地的和临时的 279
13.6.8 实现差异化价值:客户满意度的Kano模型 280
13.7 路线图 282
13.8 小结 284
第14章 产品经理的作用 287
14.1 产品经理还是业务分析师 288
14.2 在产品导向型企业中产品经理的职责 288
14.3 在IT/IS工作间中此角色的业务职责 290
14.4 职责总结 291
14.5 在预备敏捷企业中产品管理的破灭阶段 292
14.5.1 阶段1:无比热情 293
14.5.2 阶段2:虚假的安全感 293
14.5.3 阶段3:猛然觉醒 293
14.5.4 阶段4:对期望的重置 294
14.5.5 阶段5:长久的不信任 294
14.5.6 退出长久的不信任 294
14.6 在敏捷企业中产品管理的演化 295
14.6.1 理解客户需要 295
14.6.2 文档要求 296
14.6.3 日程安排 296
14.6.4 需求优先级排列 297
14.6.5 验证需求 297
14.6.6 管理变更 298
14.6.7 评估状态 298
14.7 敏捷产品经理的职责 299
14.7.1 负责愿景和发布待办事项 300
14.7.2 管理发布内容 302
14.7.3 维护路线图 306
14.7.4 打造有效的产品经理/产品负责人团队 307
14.8 小结 309
第15章 敏捷发布火车 311
15.1 介绍敏捷发布火车 312
15.1.1 敏捷发布火车的基本原理 313
15.1.2 敏捷发布火车的原则 315
15.2 推动战略对齐 316
15.3 使产品开发流制度化 317
15.4 设计敏捷发布火车 320
15.5 发布计划活动 321
15.6 追踪和管理发布 322
15.7 发布回顾 323
15.8 度量发布的可预测性 323
15.9 发布 325
15.9.1 按ART节拍发布 326
15.9.2 以低于ART节拍的频率发布 327
15.9.3 以高于ART节拍的频率发布 329
15.10 小结 330
第16章 制定发布计划 331
16.1 发布计划活动的准备 332
16.1.1 发布计划域 332
16.1.2 计划参会 332
16.1.3 发布计划活动的协调员 333
16.1.4 发布计划会议的准备检查表 334
16.2 发布计划活动第1天 334
16.2.1 开幕 336
16.2.2 商业场景 336
16.2.3 解决方案愿景 336
16.2.4 架构愿景 337
16.2.5 团队计划分组讨论Ⅰ 337
16.2.6 计划草案评审 339
16.2.7 经理复审与问题解决会议 341
16.3 发布计划活动第2天 341
16.3.1 开启 342
16.3.2 计划调整:统一战线 343
16.3.3 继续计划:团队计划分组讨论Ⅱ 343
16.3.4 确定发布目标 343
16.3.5 最终计划评审 345
16.3.6 处理风险和障碍 346
16.3.7 承诺 348
16.3.8 计划工作回顾 349
16.3.9 对团队的最后说明 350
16.4 延伸目标 350
16.5 小结 351
第17章 非功能需求 353
17.1 建模非功能需求 354
17.2 探索非功能需求 356
17.2.1 易用性 357
17.2.2 可靠性 358
17.2.3 性能 359
17.2.4 可支持性 359
17.2.5 设计约束 360
17.3 非功能需求的持久性 361
17.4 测试非功能需求 363
17.4.1 易用性 364
17.4.2 可靠性 365
17.4.3 安全性 365
17.4.4 性能 366
17.4.5 可支持性和设计约束 367
17.5 NFR说明书模板 367
17.6 小结 369
第18章 需求分析工具箱 371
18.1 活动图 373
18.2 样本报告 374
18.3 伪代码 375
18.4 决策表和决策树 375
18.5 有限状态机 377
18.6 消息序列图 379
18.7 实体-关系图 381
18.8 用例建模 382
18.9 小结 382
第19章 用例 383
19.1 用户故事和待办事项条目的问题 384
19.2 仍使用用例的五个良好理由 385
19.3 用例基础知识 386
19.3.1 用例参与者 387
19.3.2 用例结构 387
19.3.3 构建用例模型的分步骤指导 389
19.4 一个用例示例 392
19.5 运用用例 394
19.6 在敏捷需求模型中的用例 396
19.7 小结 396
第Ⅳ部分 项目组合的敏捷需求 401
第20章 敏捷架构 401
20.1 介绍全景图的项目组合层面 401
20.2 企业级系统中的系统架构 403
20.2.1 在敏捷中所有架构都可以涌现吗 404
20.2.2 需要有意图的架构 405
20.2.3 架构篇章的业务驱力 406
20.2.4 敏捷企业中系统架构师的作用 407
20.3 敏捷架构的八条原则 409
20.3.1 原则1:负责系统编码的团队也参与系统的设计 409
20.3.2 原则2:构建可工作的最简单架构 411
20.3.3 原则3:如果有疑问,把它编码或建模出来 411
20.3.4 原则4:他们构建它,他们测试它 414
20.3.5 原则5:系统越大,跑道越长 414
20.3.6 原则6:系统架构是角色协作 415
20.3.7 原则7:没有对创新的垄断 416
20.3.8 原则8:实现架构流 418
20.4 实现架构篇章 419
20.4.1 情况A:篇章很大,可以增量实现,系统始终运行 419
20.4.2 情况B:篇章很大,不能完全增量实现,系统偶尔暂停 420
20.4.3 情况C:篇章非常大,不能增量实现,系统仅在需要时运行,没有危害 421
20.5 分割架构篇章 422
20.6 小结 424
第21章 利用流机制重新架构 425
21.1 架构篇章看板制度 426
21.2 架构篇章看板制度概览 427
21.2.1 队列介绍 428
21.2.2 架构篇章的状态描述 429
21.3 漏斗:识别问题/解决方案的需求 431
21.3.1 新架构篇章的来源 431
21.3.2 活动:篇章分级 432
21.3.3 在制品限制 433
21.3.4 决策部门 433
21.4 待办事项 433
21.4.1 活动:基于节拍的评审、讨论和分级 433
21.4.2 优先级排列和分级制度 434
21.4.3 加权分级和决策准则 435
21.4.4 从过渡拉入分析队列 435
21.4.5 在制品限制 436
21.5 分析 436
21.5.1 活动 436
21.5.2 与开发部门协作 437
21.5.3 与业务部门的协作:解决方案管理、产品管理、业务分析师 438
21.5.4 在制品限制 438
21.5.5 架构篇章的商业案例模板 438
21.5.6 决策部门 439
21.6 实现 441
21.6.1 实现路径A:过渡到开发 441
21.6.2 实现路径B:组建新团队 442
21.6.3 实现路径C:开发工作外包 443
21.6.4 实现路径D:采购解决方案 443
21.6.5 在制品限制 444
21.7 小结 445
第22章 敏捷项目组合管理 447
22.1 项目组合管理 447
22.2 当敏捷团队遇到PMO:两条船驶入暗夜 449
22.3 遗留思维形式抑制企业敏捷性 450
22.4 在项目组合管理中的遗留思维形式 451
22.5 推动敏捷项目组合管理的八条建议 454
22.5.1 反思投资管理 455
22.5.2 反思变更管理 459
22.5.3 反思治理与监督 461
22.6 小结:继续敏捷项目组合的计划制定 466
第23章 投资主题、篇章和制定项目组合计划 467
23.1 投资主题 468
23.1.1 交流投资主题 469
23.1.2 为什么是投资主题的综合而不是待办事项优先级 470
23.2 篇章 470
23.2.1 子篇章 471
23.2.2 表达篇章 472
23.2.3 对篇章、特性和故事的鉴别 472
23.2.4 篇章的类型 474
23.3 业务篇章的识别与优先级排列:项目组合计划工作的看板制度 475
23.3.1 概览 475
23.3.2 状态图 476
23.3.3 漏斗:识别问题/解决方案的需求 478
23.3.4 待办事项 479
23.3.5 分析 482
23.3.6 实现 486
23.4 小结 486
第24章 结论 487
附录A 上下文无关的访谈 489
附录B 愿景文档模板 493
附录C 制定发布计划准备工作检查表 501
附录D 敏捷需求企业待办事项元模型 505
参考书目 507