第Ⅰ部分 什么是软件需求?为什么要实现软件需求?哪些人应参与软件需求第1章 软件需求基础知识 3
1.1软件需求的定义 5
1.1.1对需求的不同解释 5
1.1.2需求的层次 6
1.1.3不属于需求的内容 8
1.2需求的开发与管理 9
1.2.1 需求开发 9
1.2.2需求管理 10
1.3所有项目都有需求 10
1.4优秀的团队遇到糟糕的需求 11
1.4.1用户参与不足 12
1.4.2用户需求扩展 12
1.4.3有岐义的需求 12
1.4.6忽略了某类用户 13
1.4.7不准确的计划 13
1.4.5过于抽象的需求 13
1.4.4镀金问题 13
1.5优质需求过程的好处 14
1.6优秀需求的特点 15
1.6.1需求陈述的特点 15
1.6.2需求规格说明的特点 16
第2章 客户眼中的需求 18
2.1客户 19
2.2客户与开发人员的合作伙伴关系 20
2.2.1软件客户的权利法案 22
2.2.2软件客户的义务法案 23
2.3关于“签字” 25
第3章 需求工程的推荐方法 28
3.1 知识技能 29
3.2需求获取 30
3.3需求分析 32
3.4规格说明 33
3.5需求验证 34
3.6需求管理 35
3.7 项目管理 36
3.8开始新实践 37
3.9需求开发过程 38
第4章 需求分析员 41
4.1 需求分析员的职责 41
4.1.1需求分析员的工作 42
4.1.2需求分析员必备的技能 44
4.1.3需求分析员必备的知识 45
4.2如何培养需求分析员 46
4.2.1从用户转为分析员 46
4.2.3主题专家 47
4.3营造合作的氛围 47
4.2.2从开发人员转为分析员 47
第Ⅱ部分 软件需求开发 51
第5章 确定产品前景与项目范围 51
5.1通过业务需求定义前景 51
5.1.1相互矛盾的业务需求 52
5.1.2业务需求与用例 53
5.2前景与范围文档 53
5.3关联图 59
5.4保持范围的适度 60
第6章 获取客户的需求 62
6.1需求的来源 62
6.2用户类 63
6.3寻找用户代表 66
6.4用户代言人 67
6.4.1外部的用户代言人 68
6.4.2对用户代言人的要求 69
6.4.3设置多位用户代言人 70
6.4.4如何让人接受用户代言人的概念 71
6.4.5用户代言人应避免的陷阱 72
6.5谁来做出决策 72
第7章 聆听客户的需求 75
7.1 需求获取 76
7.2需求获取讨论会 77
7.3将客户的意见归类 79
7.4需求获取中的注意事项 83
7.5寻找遗漏的需求 83
7.6如何判断需求获取是否已完成 85
第8章 理解用户需求 87
8.1 用例法 88
8.1.1用例与使用场景 88
8.1.3编写用例 92
8.1.2确定用例 92
8.1.4用例与功能性需求 98
8.1.5用例的好处 99
8.1.6使用用例时应避免的问题 100
8.2事件—响应表 101
第9章 遵守规则 104
9.1业务的规则 105
9.1.1事实 105
9.1.2约束 106
9.1.3动作触发规则 106
9.1.4推论 107
9.1.5计算 107
9.2在文档中记录业务规则 108
9.3 业务规则和需求 109
第10章 编写需求文档 112
10.1软件需求规格说明 112
10.1.1需求的标识 113
10.1.2处理不完整性 115
10.1.3用户界面和软件需求规格说明 115
10.2软件需求规格说明模板 116
10.3编写需求文档的原则 123
10.4改进前后的需求示例 126
10.5数据字典 129
第11章 一图胜千言 132
11.1 需求建模 132
11.2从客户需求到分析模型 133
11.3数据流图 134
11.4实体—关系图 137
11.5状态转换图 139
11.6对话图 142
11.7类图 145
11.8判定表和判定树 146
11.9最后的提醒 148
第12章 软件质量属性 149
12.1质量属性 150
12.2定义质量属性 151
12.2.1 对用户重要的属性 152
12.2.2 对开发人员重要的属性 155
12.3性能需求 157
12.4用Planguage定义非功能性需求 158
12.5属性的折中方案 159
12.6实现非功能性需求 160
第13章 通过制作原型减少项目风险 162
13.1什么是原型和为什么要建立原型 162
13.2水平原型 163
13.3垂直原型 164
13.4废弃型原型 164
13.5演化型原型 165
13.6书面原型和电子原型 167
13.7原型评估 168
13.8创建原型所带来的风险 169
13.9原型法成功的因素 170
第14章 设定需求优先级 172
14.1 为什么要设定需求优先级 172
14.2优先级规则 173
14.3优先级的等级 174
14.4根据价值、成本和风险来设定优先级 175
第15章 需求确认 181
15.1需求评审 183
15.1.1 审查过程 184
15.1.2需求评审面临的困难 190
15.2测试需求 192
15.3制定验收标准 196
16.1.1开始捕获信息 198
16.1维护项目的需求 198
第16章 需求开发面临的特殊难题 198
16.1.2亲身实践一下新的需求技术 200
16.1.3遵循跟踪链 201
16.2软件包解决方案的需求 202
16.2.1 开发用例 202
16.2.2考虑业务规则 203
16.2.3定义质量需求 203
16.3外包项目的需求 204
16.4突发型项目的需求 205
16.4.1非正式用户需求规格说明 206
16.4.2现场客户 206
16.4.3尽早地而且要经常地设定优先级 207
16.4.4简单的变更管理 207
第17章 超越需求开发 209
17.1从需求到项目规划 210
17.1.1需求和预估 211
17.1.2需求和进度安排 212
17.2从需求到设计和编码 213
17.3从需求到测试 216
17.4从需求到成功 217
第Ⅲ部分 软件需求管理 221
第18章 需求管理的原则和实践 221
18.1 需求基线 222
18.2需求管理过程 222
18.3需求版本控制 223
18.4需求属性 225
18.5跟踪需求状态 226
18.6评估需求管理的工作量 228
第19章 变更管理 230
19.1管理范围蔓延 231
19.2变更控制过程 232
19.2.2变更控制过程描述 233
19.2.1变更控制策略 233
19.3变更控制委员会 237
19.3.1 CCB的组成 238
19.3.2 CCB规章 239
19.4变更控制工具 240
19.5测量变更活动 240
19.6变更需要付出代价:影响分析 242
19.6.1影响分析的过程 242
19.6.2影响分析报告模板 245
第20章 需求链中的联系链 247
20.1需求跟踪 247
20.2需求跟踪动机 249
20.3需求跟踪矩阵 251
20.4需求跟踪工具 254
20.6需求跟踪可行吗?必要吗? 255
20.5需求跟踪过程 255
第21章 需求管理工具 257
21.1使用需求管理工具的益处 259
21.2需求管理工具的功能 260
21.3实现需求管理自动化 262
21.3.1选择适当的工具 262
21.3.2改变文化 263
21.3.3使需求管理工具服务于自己 264
第Ⅳ部分 实现需求工程 269
第22章 改进需求过程 269
22.1 需求与其他项目过程的联系 269
22.2需求和各涉众组 271
22.3软件过程改进的基本原则 272
22.4过程改进周期 274
22.4.1评估当前采用的方法 274
22.4.2规划改进活动 275
22.4.3建立、实验并实现新过程 276
22.4.4评估结果 277
22.5需求工程过程资产 278
22.5.1需求开发过程资产 279
22.5.2需求管理过程资产 280
22.6需求过程改进路线图 281
第23章 软件需求与风险管理 283
23.1软件风险管理基本原理 284
23.1.1风险管理的要素 284
23.1.2编写项目风险文档 285
23.1.3制定风险管理计划 287
23.2与需求相关的风险 288
23.2.1需求获取 288
23.2.2需求分析 289
23.2.4需求确认 290
23.2.3编写需求规格说明 290
23.2.5需求管理 291
23.3风险管理是我们的好帮手 291
附录A 当前需求实践的自我评估 293
附录B 需求和过程改进模型 298
B.1软件能力成熟度模型 298
B.2 CMMI-SE/SW 300
B.2.1需求管理过程域 302
B.2.2需求开发过程域 302
附录C 需求错误诊断指南 304
C.1根本原因分析 304
C.2需求问题的常见现象 305
C.3实现解决方案常常会遇到的障碍 306
D.1前景和范围文档 323
D.1.1业务需求 323
附录D 需求文档范例 323
D.1.2解决方案的前景 325
D.1.3范围和局限性 325
D.1.4业务上下文 326
D.2用例 328
D.3软件需求规格说明 336
D.3.1介绍 336
D.3.2总体描述 337
D.3.3系统特性 339
D.3.4外部接口需求 342
D.3.5其他非功能性需求 343
D.3.6附录A数据字典和数据模型 343
D.3.7附录B分析模型 346
D.4业务规则 347
术语表 349
结语 358