第一部分 概念 3
第1章 引言 3
1.1 本书是为你而写的吗? 3
1.2 了解需求工程 4
1.3 需求工程真的重要吗? 5
1.4 需求工程的本质 6
1.5 问题域(及其他领域) 7
1.5.1 问题域的类型 10
1.6 需求 11
1.6.1 功能需求 12
1.6.2 性能需求 13
1.6.3 设计约束 14
1.6.4 商业约束 15
1.6.5 其他类型的需求 15
1.6.6 需求:总结 15
1.7 练习 16
第2章 需求工程过程 18
2.1 需求分析 19
2.2 需求获取 21
2.3 规格说明 21
2.4 人机接口设计 23
2.5 需求验证 23
2.6 一个需求工程过程模型 24
2.6.1 需求工程文档编制 24
2.6.2 捷径 26
2.7 设计及“分析与设计” 26
2.8 问题数据与解数据 28
2.9 建模静态数据 29
2.10 其他活动 30
2.11 练习 31
第3章 需求获取 32
3.1 需求获取的信息 33
3.2 信息来源 33
3.3 需求获取技术 34
3.4 需求获取策略 35
3.4.1 需求获取的信息 35
3.4.2 信息来源 35
3.4.3 需求获取技术的选择 36
3.4.4 社会政治的因素 36
3.4.5 消除分歧和需求协商 37
3.4.6 演化的需求 37
3.4.7 需求获取方法 38
3.5 练习 39
第4章 需求分析 41
4.1 分析的困境 42
4.2 分析方法 43
4.3 结构化分析 44
4.3.1 数据建模 45
4.3.2 结构化分析的演化 46
4.3.3 现代结构化分析 46
4.3.4 结构化分析例子 47
4.3.5 结构化分析小结 63
4.4 面向对象分析 63
4.4.1 面向对象分析举例 65
4.4.2 面向对象分析小结 74
4.5 面向问题域的分析 75
4.5.1 问题框架 76
4.5.2 待求子域性质小结 89
4.5.3 多框架问题 89
4.5.4 问题框架的应用 92
4.5.5 问题框架小结 93
4.5.6 超越问题框架法的面向问题域的分析 93
4.5.7 面向问题域的分析举例 93
4.5.8 面向问题域的分析小结 102
4.6 编写需求 102
4.7 分析小结 103
4.8 需求文档 104
4.8.1 需求文档的目的 104
4.8.2 需求文档的特性与风格 104
4.8.3 需求文档的内容及体系结构 105
4.9 练习 107
第5章 规格说明 110
5.1 简介 110
5.1.1 外部接口 111
5.1.2 行为的抽象级别 113
5.2 外部设计 114
5.2.1 加入性能需求 116
5.2.2 客户和用户的参与 117
5.3 行为的文档编制 117
5.3.1 必须定义什么 118
5.3.2 输入和输出 118
5.3.3 输入/输出之间的因果关系(事件响应) 120
5.3.4 过程描述说明与功能描述说明的比较 126
5.3.5 通过规则的描述说明与示例的比较 128
5.3.6 输入/输出时间关系 128
5.4 规格说明文档 129
5.4.1 规格说明书的目的 129
5.4.2 规格说明书的特征和风格 129
5.4.3 规格说明书的内容和体系结构 130
5.4.4 组织 134
5.5 规格说明方法 138
5.5.1 面向对象的规格说明(OOS) 138
5.5.2 形式化规格说明 139
5.5.3 较低层的规格说明 146
5.6 规格说明技术和机制 148
5.7 规格说明示例 148
5.7.1 案例1:赛艇比赛成绩(YRR)处理程序 149
5.7.2 案例2:电梯控制系统 152
5.7.3 案例3:钻孔文件转换系统 158
5.7.4 案例4:Petri网图表处理工具 159
5.8 练习 163
5.8.1 计步器需求文档 164
5.8.2 油泵管家需求文档 164
第6章 需求验证 169
6.1 简单检查 169
6.2 复审 170
6.3 逻辑分析 170
6.4 原型、用例 等 171
6.5 功能测试设计 171
6.6 编制用户手册 171
第7章 何去何从 173
第二部分 技术 177
第8章 技术 177
8.1 表示法 177
8.2 方法 178
8.3 工具 178
8.4 选择技术 179
第9章 需求获取技术 180
9.1 背景资料阅读 180
9.2 面谈 181
9.2.1 准备 181
9.2.2 操作法 182
9.2.3 询问的问题 183
9.2.4 总结 184
9.3 调查表 185
9.4 文档审查 185
9.5 任务观察 186
9.6 人种论 187
9.7 用例和场景 187
9.8 头脑风暴 188
9.9 需求剥离 188
第10章 建模技术 190
10.1 表示建模 190
10.2 行为建模 191
10.3 结构建模 191
10.4 建模技术分类 192
第11章 表示建模 194
11.1 使用说明 194
11.2 静态表示建模 194
11.2.1 节目表,纸上原型 196
11.3 动态表示建模(原型) 196
11.3.1 构造原型 197
第12章 行为(功能)建模 199
12.1 功能声明与功能分解 199
12.1.1 功能分解 200
12.1.2 功能描述 201
12.2 任务分析 202
12.3 用例与脚本 203
12.3.1 用例的作用 203
12.3.2 场景 204
12.3.3 识别用例 204
12.3.4 用例映射为执行者(或功能映射为端子) 205
12.3.5 编制用例文档 206
12.3.6 用例的类型 208
12.3.7 完成文档编制 208
12.3.8 支持素材 209
12.3.9 后期合成 209
12.3.10 小结 210
12.4 决策表 210
12.4.1 使用说明 210
12.4.2 描述 211
12.4.3 决策表类型 213
12.4.4 规则数 213
12.4.5 “优化” 213
12.4.6 “else”规则 214
12.4.7 链接表 214
12.5 基于状态的技术 215
12.6 有限状态机 215
12.6.1 使用说明 215
12.6.2 描述 215
12.6.3 FSM的设计规则 217
12.6.4 FSM的设计指南 217
12.6.5 FSM的特点 217
12.6.6 非确定型FSM 217
12.6.7 表示法的变化 219
12.6.8 计时器 219
12.6.9 并发FSM 220
12.6.10 状态转移矩阵(STM) 221
12.6.11 状态图(又名状态图表) 223
12.6.12 窗口导航图 227
12.6.13 R网 227
12.6.14 小结 228
12.7 Petri网 228
12.7.1 使用说明 228
12.7.2 描述 228
第13章 内部建模 235
13.1 面向处理技术 235
13.1.1 通信并发处理 235
13.1.2 通信顺序处理 241
13.2 算法技术 243
13.3 面向数据结构的技术 244
13.3.1 使用说明 244
13.3.2 实体属性关系建模 244
13.3.3 标准化 247
13.3.4 数据结构图 251
13.4 处理/数据相结合 252
13.4.1 实体生命历史 252
13.4.2 面向对象建模 253
第14章 基于文本的定义 258
14.1 文本的形式 259
14.2 自然语言 259
14.2.1 二义性 260
14.2.2 风格指导 260
14.3 “非自然”语言 262
14.3.1 结构化英语 263
14.3.2 伪码 263
14.3.3 编程语言 264
14.3.4 巴柯斯范式(BNF) 264
14.3.5 谓词演算 266
14.4 手段和目的 267
14.4.1 指定 267
14.4.2 (形式化)定义 269
14.4.3 描述 269
14.4.4 可辩驳的描述 270
14.4.5 粗略草稿 270
14.5 数据字典 271
第三部分 案例精解 275
第15章 赛艇比赛成绩(YRR)案例研究 275
15.1 需求获取计划 275
15.2 需求获取记录 275
15.3 需求文档 278
15.3.1 问题域描述 278
15.3.2 需求 282
15.4 规格说明书 283
15.4.1 用户界面 283
第16章 电梯控制系统案例研究 293
16.1 需求获取记录 293
16.2 需求文档 294
16.2.1 问题域 294
16.2.2 需求 299
16.3 规格说明书 300
16.3.1 硬件接口 300
16.3.2 用户接口 302
16.3.3 技术员接口 303
第17章 F2K钻孔文件转换案例研究 305
17.1 需求文档 305
17.1.1 简介 305
17.1.2 问题域描述 305
17.1.3 需求 307
17.2 规格说明书 308
17.2.1 操作员界面 308
17.2.2 输入文件错误报告 309
第18章 Petri网图表处理工具案例研究 310
18.1 需求文档 310
18.1.1 Petri网 310
18.1.2 问题框架 310
18.1.3 数据模型 311
18.1.4 数据字典 311
18.1.5 需求 311
18.2 规格说明书 313
附录A 参考文献 317
附录B 术语表 327
附录C 缩略语 331