1 引言 1
2 软件开发过程 4
2.1 阶段与步骤 7
2.1.1 阶段的描述——可交付性 8
2.1.2 阶段轮廓 10
2.1.3 项目初始阶段 10
2.1.4 系统定义阶段 11
2.1.5 系统设计阶段 12
2.1.6 系统生成阶段 13
2.1.7 系统验收阶段 14
2.1.8 验收后开发阶段 15
2.1.9 项目汇报阶段 16
2.1.10 工作任务分解结构 16
2.1.11 原型制作 21
2.2.1 引语 23
2.2 定量软件开发模型 23
2.2.2 估算途径 25
2.2.3 算法估算方法 30
2.2.4 各阶段工作量分配 32
2.2.5 产生开发计划进度表 33
2.2.6 可靠性的定量化 34
2.2.7 历史数据的使用 36
2.3.1 为什么需要示踪器? 37
2.3 示踪器 37
2.3.2 示踪器的管理 38
2.4 配置管理 40
2.4.1 问题的引入 40
2.4.2 基线 41
2.4.3 可交付项的发布 43
2.4.4 配置控制机制 45
3 开发技术 48
3.1 引语 48
3.1.1 技术特性与问题特性的匹配 53
3.1.2 项目特性检查情单 55
3.1.3 向题特性检查清单 56
3.1.4 技术特性检查清单 58
3.1.5 关于技术与工具的资料来源 59
3.2 成本估算模型 61
3.2.1 IBM模型 61
3.2.2 SLIM模型 61
3.2.3 PRICE-S模型 62
3.2.4 COCOMO模型 62
3.2.5 Bailcy—Basili元模型 63
3.2.6 Schncider模型 63
3.3 结构英语 64
3.4 PSL/PSA 64
3.5 结构分析…SA 65
3.6 结构分析与设计技术——SADT 67
3.7 受控需求表示式…CORE 68
3.8 软件需求工程方法…SREM 69
3.9 有限状态机…FSM 72
3.10 Petri网 73
3.11 Jackson系统开发——JSD 74
3.12 软件开发系统——SDS/RSRE 76
3.13 结构设计——SD 77
3.14 Jackson结构程序设计——JSP 78
3.15 系统设计师的助手 79
3.16 MASCOT 80
3.17 形式开发方法——FDM 82
3.18 层次开发方法——HDM 83
3.19 高级软件——HOS 85
3.20 结构程序设计 86
3.21 数据控制 87
3.22 编码技术 88
3.23 单元测试技术 89
3.24 系统综合 90
3.25 结构走查 91
3.26 Fagan审查法 92
4 项目初始 93
4.1 项目初始阶段目标 93
4.2 初始阶段起点 94
4.3 初始阶段终点 95
4.4 项目初始期间可用技术 98
4.5 预测 98
4.5.1 招标评估 98
4.5.2 招标准备 98
4.6 项目初始阶段检查清单 99
4.7 计划初始期间要点 101
4.7.1 成败记录 101
4.7.2 如果开始没有成功 102
4.7.3 全面协商——成功的关键 102
4.8.1 引言 103
4.8 典型样例——VISTA 103
4.8.2 图象处理背景 104
4.8.3 VISTA系统功能与硬件配置 106
5 系统定义 110
5.1 系统定义阶段的目标 110
5.2 系统定义起点 110
5.3 系统定义终点 111
5.3.1 功能规格说明 111
5.3.2 项目计划 112
5.3.3 质量管理计划 113
5.3.4 验收测试规格说明 115
5.4 系统定义期间可用技术 115
5.4.1 系统定义技术分类 117
5.4.2 结构英语 119
5.4.3 PSL/PSA 123
5.4.4 结构分析…SA 127
5.4.5 结构分析与设计工具…SADT 134
5.4.6 受控需求表示式…CORE 144
5.4.7 软件需求工程方法…SREM 153
5.4.8 有限状态机——PSM 167
5.4.9 Pctri网 174
5.4.10 Jackson系统开发…JSD 184
5.4.11 软件开发系统——SDS/RSRE 192
5.4.12 结构走查 198
5.5 系统定义期间监督管理的示踪器 201
5.5.1 源代码大小估算 201
5.5.2 系统大小示踪器 202
5.5.3 需求规格说明质量示踪器 203
5.6 系统定义阶段检查清单 205
5.6.1 功能规格说明的质量准则 205
5.6.2 功能规格说明的内容 207
5.6.4 系统定义与可维护性 212
5.6.3 验收测试实施方法 212
5.6.5 质量管理计划内容 213
5.7 系统定义阶段要点 215
5.7.1 系统定义阶段人员配备 215
5.7.2 信息流维护 215
5.7.5 确定较低层的功能 216
5.7.6 限制功能规格说明范围 216
5.7.4 为各种对象选取合适的名字 216
5.7.3 保持质量目标 216
5.7.7 更新项目汇报报告 217
5.7.8 记录定义过程 217
5.7.9 将系统中的设施通用化 218
5.7.10 英语非常适用于功能规格说明码? 218
5.7.11 对模型的期望 218
5.7.12 Boehm关于软件工程的七条基本原理 219
5.7.13 编制模拟程序前的计划 220
5.7.14 与标准程序包的接口 220
5.7.16 你的系统能用吗? 221
5.7.15 错误出现得越早发现得越晚 221
6 系统设计 222
6.1 系统设计阶段目的 222
6.1.1 引言 222
6.1.2 易实现性 222
6.1.3 功能完整性 224
6.1.4 遵循限制 224
6.1.5 可维护性 225
6.2 系统设计起点 227
6.3 系统设计终点 228
6.3.1 结构 229
6.3.2 细节 229
6.3.3 有效性 230
6.3.4 可交付项 230
6.4 系统设计期间所用技术 230
6.4.1 结构设计——SD 233
6.4.2 Jackson结构程序设计——JSP 242
6.4.3 Jackson系统开发…JSD 254
6.4.4 有限状态机——FSM 262
6.4.5 Petri网 265
6.4.6 系统设计师的助手…SARA 269
6.4.7 MASCOT 280
6.4.8 形式开发方法——FDM 288
6.4.9 层次开发方法——HDM 296
6.4.10 高级软件——HOS 307
6.4.11 结构走查 317
6.4.12 Fagan审查法 319
6.5 系统设计阶段监督管理的示踪器 321
6.5.1 目标 321
6.5.2 连性变量 322
6.5.3 Myers模块耦合度度量 323
6.5.4 Myers模块内聚度度量 324
6.5.5 调用图度量 325
6.5.6 错误检测度量 326
6.5.7 错误校正时间变量 327
6.5.8 文件大小度量 328
6.5.9 源代码长度估算 328
6.5.10 系统大小示踪器 329
6.6 系统设计阶段检查清单 329
6.6.1 设计过程中的课题 329
6.6.2 设计文件的一般性质 331
6.6.3 系统设计与可维护性 332
6.6.4 潜在设计错误类型 334
6.7 系统设计要点 335
6.7.1 增加项目汇报报告内容 335
6.7.2 设计目标定量化 335
6.7.3 明显错误的消除 335
6.7.8 随时向委托人通报情况 336
6.7.7 人尽其用 336
6.7.6 初步测试 336
6.7.5 系统情况 336
6.7.4 暴露错误 336
6.7.9 草案设计工具 337
7 系统生成 338
7.1 系统生成阶段目标 338
7.1.1 系统生成背景 338
7.1.2 完善总体设计 340
7.1.3 将正确设计变换成正确代码 340
7.1.4 代码变换的正确性检查 341
7.1.5 系统综合 342
7.1.6 系统生成期间的辅助步骤 343
7.2 系统生成起点 344
7.3 系统生成终点 345
7.4 系统生成期间所用技术 345
7.4.1 Jackson结构程序设计…JSP 347
7.4.2 Jackson系统开发——JSD 349
7.4.3 有限状态机—FSM 355
7.4.4 系统设计师的助手——SARA 356
7.4.5 MASCOT 357
7.4.6 层次开发方法——HDM 364
7.4.7 结构程序设计 367
7.4.8 数据控制 375
7.4.9 程序设计语言 384
7.4.10 宏处理程序 387
7.4.11 程序库与可重用性 389
7.4.12 走查与审查 392
7.4.13 静态分析 394
7.4.14 符号执行 396
7.4.15 断言检查 399
7.4.16 测试数据选择 401
7.4.17 测试覆盖范围分析与软件度量 406
7.4.18 开发环境 408
7.4.19 系统综合技术 416
7.4.20 系统开发人员心理学 422
7.5 系统生成阶段监督管理的示踪器 427
7.5.1 详细设计示踪器 427
7.5.2 编码示踪器 428
7.5.3 测试示踪器 434
7.6 系统生成阶段检查清单 435
7.6.1 详细设计检查清单 436
7.6.2 编码检查清单 437
7.6.3 单元测试检查清单 438
7.6.4 用户文件检查清单 439
7.6.5 系统转换进度表检查清单 440
7.6.6 培训进度表检查清单 441
7.6.7 验收测试说明书检查清单 442
7.6.8 潜在编码错误类型 445
7.7.3 系统设计规格说明的控制变化 446
7.7.2 生成阶段的人员配备 446
7.7 成阶段要点 446
7.7.1 维护信息流 446
7.7.4 估算测试时间 447
7.7.5 采用与改编 447
7.7.6 增加PDR内容 448
7.7.7 扔掉坏苹果 448
7.7.8 人工错误播种 448
7.7.9 系统的独立测试 449
7.7.10 保持软件在测试期间的静态性 449
7.7.11 程序设计风格 449
8 系统验收与验收后开发 451
8.1 系统验收目标 451
8.2 系统验收起点 452
8.3 系统验收终点 452
8.5 验收后开发的管理 453
8.5.1 为变化作准备 453
8.4 验收测试的实施 453
8.5.2 变化的监督管理与评估 454
8.5.3 变化的规格说明、设计与实现 456
9 项目汇报 458
9.1 项目汇报的目的 458
9.2 项目汇报的结构 459
9.3.1 项目说明书 460
9.3.2 项目属性历史 460
9.3 项目汇报的内容 460
9.3.3 示踪器历史 461
9.3.4 技术与系统评价 461
9.3.5 潜在可重用项 461
9.3.6 补遗 462
9.3.7 关键词摘要 462
9.4 项目汇报报告检查清单 462
9.5 项目汇报报告样例 463
参考文献 472
英汉名词对照 482