第一部分 软件需求的基本概念第1章 需求问题 3
1.1 软件开发的目标 3
1.2 项目失败与成功的原因 3
1.3 需求在项目中的作用 4
1.4 需求错误的代价 5
1.5 高质量的需求过程带来的好处 7
1.6 若干需求定义 7
1.7 好的需求应具有的特性 8
1.7.1 歧义因素 8
1.7.2 完整性因素 9
1.7.3 一致性因素 9
1.7.4 可检验性因素 10
1.7.5 确定性因素 10
1.7.6 可跟踪性因素 11
1.7.7 正确性因素 11
1.7.8 可行性因素 11
1.7.9 必要性因素 11
第2章 需求的层次 12
2.1 业务需求 13
2.2 用户需求 13
2.3 功能需求 13
2.4 非功能需求 14
2.4.1 可靠性 15
2.4.2 可用性 15
2.4.3 有效性 16
2.4.4 可维护性 16
2.4.5 可移植性 17
2.4.6 约束 17
2.5 需求路线图 17
练习一 19
第二部分 需求工程与需求工程过程第3章 软件需求与产品生命周期 23
3.1 瀑布模型 24
3.2 快速应用开发模型 27
3.3 螺旋模型 28
3.4 RUP 30
3.4.1 统一软件开发过程RUP的二维开发模型 30
3.4.2 RUP的核心概念 31
3.4.3 RUP中的各个阶段和里程碑 32
3.4.4 RUP的核心工作流 33
3.4.5 RUP的裁剪 34
3.4.6 RUP的迭代开发模式 34
3.4.7 RUP的6大经验 36
3.4.8 RUP的十大要素 37
3.4.9 RUP总结 39
3.5 迭代式模型 40
3.5.1 迭代 40
3.5.2 迭代方法在需求管理中的优势 40
3.5.3 迭代模型与瀑布模型的差别 41
3.5.4 迭代方法常见的问题 42
3.5.5 应用迭代方法给分析人员带来的新思维 44
3.6 敏捷方法 45
3.6.1 敏捷方法遵循的原则 46
3.6.2 敏捷开发与需求 47
3.6.3 敏捷方法的适用条件和不适用条件 49
3.7 形式化方法 50
3.7.1 形式化方法的优缺点 50
3.7.2 形式化方法的10条戒律 52
3.8 关于选择生命周期模型的总结 53
第4章 需求工程 55
4.1 什么是需求工程 55
4.2 需求工程的内容 56
4.3 需求工程过程 57
4.3.1 Pressman的需求工程过程 57
4.3.2 Boehm的需求工程过程 58
4.4 需求工程的涉众人员 59
4.5 需求工程的方法 59
4.6 面向对象的需求工程方法 60
4.7 面向对象的需求工作流 61
4.7.1 问题分析 62
4.7.2 理解涉众需要 62
4.7.3 定义系统 62
4.7.4 管理项目规模 62
4.7.5 改进系统定义 63
4.8 需求过程的改进 63
4.8.1 需求与其他项目过程的联系 63
4.8.2 软件需求对其他涉众的影响 65
4.8.3 需求过程改进的基础 67
4.8.4 过程改进周期 67
4.8.5 需求过程改进路线图 73
练习二 73
第三部分 需求获取与需求分析第5章 需求获取的方法 77
5.1 需求的获取方法 78
5.1.1 面向目标的方法 78
5.1.2 基于场景(scenario)的方法 78
5.1.3 面向方面(aspect)的方法 79
5.1.4 面向视点(viewpoint)的方法 79
5.1.5 基于知识的方法 79
5.2 需求描述语言 80
5.3 案例分析 80
第6章 寻找客户的需求 81
6.1 在问题定义上达成共识 81
6.2 了解问题产生的根本原因 82
6.2.1 鱼骨图 82
6.2.2 帕累托图 84
6.3 确定涉众和用户 84
6.4 确定系统的界限 85
6.5 确定解决方案的约束条件 85
第7章 理解用户的需要 87
7.1 用户访谈 87
7.1.1 准备访谈 90
7.1.2 计划和安排访谈日程 90
7.1.3 访谈开始和结束 91
7.1.4 引导访谈 91
7.1.5 调查问卷 93
7.2 专题讨论会 94
7.3 情节串联板 95
第8章 定义系统 97
8.1 项目的范围问题 97
8.1.1 项目的可用资源 98
8.1.2 项目开发时间 98
8.1.3 系统功能、时间与资源 98
8.2 客户要求的总比实际的要多 99
8.3 确立系统基线 100
8.3.1 设定优先级 101
8.3.2 评估工作量 101
8.3.3 加入风险因素 102
8.3.4 缩小项目范围,确定基线 102
8.4 建立项目前景文档 103
第9章 管理客户 105
9.1 让客户确认项目范围 105
9.2 遇到变更要与客户沟通 106
第10章 需求建模 108
10.1 什么是需求分析模型 108
10.2 需求分析阶段模型的作用 109
第11章 结构化分析建模 110
11.1 数据模型 111
11.1.1 数据对象 111
11.1.2 属性 111
11.1.3 关系 112
11.1.4 实体-关系图 112
11.2 功能模型——数据流图 113
11.3 行为模型——状态转换图 115
11.4 数据字典 115
11.5 其他结构化分析方法的概述 116
11.5.1 数据结构化系统开发 116
11.5.2 Jackson系统开发 117
11.5.3 SADT 117
11.6 结构化分析小结 117
第12章 面向对象的建模 119
12.1 UML——Unified Modeling Language 119
12.2 可视化的建模工具——Rose 120
12.3 UML对用例驱动需求工程的支持 120
第13章 业务建模 121
13.1 业务建模是什么 121
13.2 为什么要业务建模 122
13.3 需求和业务建模 123
13.4 业务建模时期的主要任务 123
13.5 业务建模中的用例——业务用例 124
13.5.1 业务角色和业务主角 125
13.5.2 业务对象 125
13.5.3 CRC建模 126
13.6 建立业务用例模型 130
13.7 业务建模的步骤 131
13.8 从业务模型到系统模型 134
13.9 何时使用业务建模 134
第14章 用例建模 135
14.1 什么是用例 135
14.2 用例的内容 137
14.3 用例方法的特点 138
14.4 建立用例模型 139
14.4.1 寻找参与者 139
14.4.2 确定用例 141
14.5 描述用例规约 142
14.5.1 基本流 143
14.5.2 备选流 144
14.5.3 用例场景 144
14.5.4 特殊需求 144
14.5.5 前置和后置条件 144
14.6 检查用例模型 145
14.7 系统需求 145
14.7.1 需求工件集 145
14.7.2 补充规约 146
14.7.3 词汇表 147
14.8 调整用例模型 147
14.8.1 参与者之间的关系 147
14.8.2 用例之间的关系 148
14.9 管理用例模型复杂度 151
14.9.1 用例包 152
14.9.2 用例的粒度 152
14.9.3 用例图 153
14.10 常见的用例建模的错误 155
14.11 使用用例的好处 156
第15章 原型开发 157
15.1 原型方法的选择 157
15.2 原型方法的工具 158
15.3 选择适当的原型方法 159
15.4 原型评价 161
15.5 原型法的最大风险 162
15.6 原型法成功的因素 162
练习三 163
第四部分 需求文档与需求质量验证第16章 软件需求规格说明 167
16.1 需求规格说明书解决的项目问题 168
16.2 需求规格说明模板(IEEE/ANSI 830—1993) 168
16.3 需求文档的编写原则 169
16.4 高质量的SRS的一些特性 169
16.5 软件需求规格说明书的评审 170
第17章 需求验证 172
第18章 需求评审 175
18.1 评审概述 175
18.1.1 评审类型 176
18.1.2 计划 177
18.2 准备 177
18.3 评审过程 177
18.3.1 理解评审流程 178
18.3.2 理解评审员角色 178
18.3.3 指定协调员 178
18.3.4 使评审保持简短 179
18.3.5 确定问题,而不要解决问题 179
18.4 常见的几种需求评审的问题 179
18.5 如何做好需求评审 181
18.5.1 分层次评审 181
18.5.2 正式评审与非正式评审结合 182
18.5.3 分阶段评审 182
18.5.4 精心挑选评审员 182
18.5.5 对评审员进行培训 182
18.5.6 充分利用需求评审检查单 183
18.5.7 建立标准的评审流程 184
18.5.8 做好评审后的跟踪工作 185
18.5.9 充分准备评审 185
18.6 需求评审的困难 185
18.7 测试需求 186
练习四 187
第五部分 软件需求管理 191
第19章 需求管理所要完成的任务 191
19.1 需求共识 192
19.2 根据需求设计解决方案 192
19.3 系统优化 192
19.4 方案设计 193
19.5 必要的修改 193
19.6 任务划分 193
19.7 产品测试 193
19.8 重复开发 194
19.9 项目管理的辅助 194
第20章 需求管理模型 196
20.1 需求管理模型的特点 196
20.2 存在的各种关联 197
20.3 需求管理的主要活动 197
20.4 需求管理与能力成熟度模型 198
20.4.1 能力成熟度模型CMM 198
20.4.2 关键过程域与需求管理 199
20.5 需求管理步骤 201
20.6 需求管理中须注意的问题 201
第21章 管理变更 203
21.1 需求变更的因素(内部、外部) 205
21.1.1 对需求的理解存在分歧 205
21.1.2 系统实施时间过长 206
21.1.3 用户业务需求改变 206
21.1.4 系统正常升级 206
21.2 需求变更的代价 206
21.3 减少需求变更 207
21.4 需求变更的过程管理 208
21.4.1 认识到变更不可避免,为变更制订计划 209
21.4.2 确认需求基线 209
21.4.3 建立控制变更的唯一渠道 209
21.4.4 使用变更控制系统来捕获变更 210
21.4.5 分层次地管理变更 211
21.5 需求变更管理实践中的对策 212
21.5.1 优先排序,分批实现 212
21.5.2 相互协作,充分交流 213
21.5.3 合同约束,区别对待 213
21.5.4 选用适当的开发模型 214
21.5.5 用户参与需求评审 214
21.6 需求配置管理 214
21.7 基线管理 215
21.8 需求状态的变化 216
第22章 需求风险管理 218
22.1 与需求有关的风险 219
22.1.1 无足够用户参与 219
22.1.2 用户需求的不断增加 219
22.1.3 模棱两可的需求 220
22.1.4 不必要的特性 220
22.1.5 过于精简的规格说明 220
22.1.6 忽略了用户分类 221
22.1.7 不准确的计划 221
22.2 评估需求风险 221
22.2.1 需求获取阶段 222
22.2.2 需求分析阶段 223
22.2.3 需求规格说明 223
22.2.4 需求验证 223
22.2.5 需求管理 224
22.3 风险管理是项目管理人员的好助手 224
第23章 需求跟踪 226
23.1 需求跟踪动机 226
23.2 需求跟踪的定义 227
23.3 跟踪关系 227
23.4 需求跟踪链 228
23.5 通用的跟踪模型 229
23.5.1 在系统定义领域跟踪需求 229
23.5.2 在实现领域跟踪需求 231
23.5.3 在测试领域跟踪需求 232
23.5.4 需求跟踪能力工具 234
23.5.5 需求跟踪能力过程 234
23.5.6 需求跟踪能力可行性与必要性 235
第24章 需求管理工具 236
24.1 商业需求管理工具 237
24.2 使用需求管理工具的益处 239
24.3 实现需求管理自动化 239
24.4 几种需求管理工具介绍 241
练习五 242
附录A 软件需求规格说明书样本 243
参考文献 252