前 言 1
第一章 软件概述 1
1.1 软件失败 1
1.1.1 透视仪器 1
1.1.2 失去控制的鱼雷 2
1.1.3 自动着陆系统 2
1.1.4 化工厂 2
1.2 软件成本 3
1.3 质量保证 6
1.4 质量管理 7
1.5 质量提高 8
1.6 质量设计 8
1.7 小结 10
第二章 软件特性 11
2.1 一般定义 11
2.2 复杂性 13
2.3 程序与数据 14
2.4 度量制 15
2.5 软件法则 15
2.6 未来要求 16
2.7 小结 17
第三章 软件系统进展 19
3.1 软件生存周期 19
3.2 其它生存周期 21
3.2.1 进程生存周期 23
3.2.3 可调生存周期模型 24
3.2.2 PSC模型 24
3.3 软件死亡周期 26
3.4 生存周期的质量问题 28
3.4.1 结构管理 28
3.4.2 文档标准 28
3.4.3 设计标准 28
3.4.4 量度 29
3.4.5 程序标准 29
3.4.6 设计审查 29
3.4.7 检验、实现和测试 29
3.4.8 错误信息反馈 29
3.6 小结 30
3.5 使用生存周期模型的实用性 30
第四章 系统需求 32
4.1 需求的范围 32
4.2 基本原理和思想 33
4.3 主要问题领域 35
4.4 当前需求的捕获与分析的方法 36
4.4.1 标准 36
4.4.2 方法 37
4.4.3 工具 39
4.5 一般方法 40
4.5.1 分析类型 41
4.5.2 合法性 42
4.6.3 准确性 43
4.6.2 分析 43
4.6.4 需求过程 43
4.6.1 信息 43
4.6 需求清单 43
4.7 小结 44
第五章 软件设计 45
5.1 软件设计的范围 45
5.2 基本规则和思想 45
5.3 设计方法 46
5.4 关于软件设计方法的问题 46
5.5 最新软件设计趋势 47
5.6 软件设计中的符号 47
5.6.1 数据流程图(DFD) 48
5.6.2 数据结构图(DSD) 48
5.6.4 实体生存史(ELH) 49
5.6.3 实体联系图(E-RD) 49
5.6.5 流程图 50
5.6.6 HIPO图 50
5.6.7 Petri网 51
5.6.8 伪码和结构英语 52
5.6.9 状态变化图(STD) 54
5.7 目前所用的主要方法 54
5.7.1 JSD 54
5.7.2 MASCOT 56
5.7.3 SDL 58
5.7.4 SSABM/LSDM 60
5.7.5 YOURDON 61
5.8 新方法介绍 63
5.8.1 面向对象(Object—oriented)设计法 64
5.8.2 原型法(Portotyping) 64
5.8.3 严格/形式设计方法(Rigorous/formal) 65
5.9.1 Arthur Young IEM 66
5.9.2 EPOS 66
5.9.3 HOS 66
5.9.4 LAI/Statemate 66
5.9其他设计方法 66
5.9.5 JMA/IEF 67
5.9.6 PDL 67
5.9.7 SADT 67
5.9.8 SAFRA 67
5.9.11 STRADIS 68
5.10 设计清单 68
5.10.1 限制 68
5.9.10 SREM 68
5.9.9 SARA 68
5.10.2 用户意图 69
5.10.3 系统类型 69
5.10.4 应用类型 69
5.10.5 项目条件 69
5.10.6 寿命审查 70
5.10.7 非功能需求 70
5.11 小结 70
第六章 测试 71
6.1 为什么要进行测试 71
6.1.1 特定(随机)测试 72
6.1.2 人工测试 72
6.1.3 程序员自己测试 72
6.2.4 预防模型 73
6.2.3 评估模型 73
6.2.2 破坏性模型 73
6.2 测试的一些系统化途径 73
6.2.1 论证模型 73
6.3 测试中的问题 74
6.3.1 构形管理 74
6.3.2 4GLs和DP系统 74
6.3.3 实时和网络系统 75
6.4 测试技术 75
6.4.1 早期生存周期阶段的测试技术 75
6.4.2 代码技术 77
6.5 测试标准 81
6.6. 何时停止测试 81
6.7.2 回归测试工具 83
6.7.3 数据库 83
6.7.1 结构测试工具 83
6.7 工具支持 83
6.8 倾向和影响 84
6.9 测试清单 85
6.9.1 总法 85
6.9.2 计划和组织 86
6.9.3 文档资料 86
6.9.4 预防性手段 86
6.10 小结 86
第七章 软件维护 88
7.1 简介 88
7.2 关于维护的几个问题 88
7.2.1 什么是维护? 88
7.3 生存周期中的维护 90
7.2.2 为何存在问题? 90
7.3.1 成长期 91
7.3.2 成熟期 91
7.3.3 衰老期 92
7.3.4 死亡期 92
7.4 维护管理 92
7.4.1 计划与控制 92
7.4.2 交换问题 93
7.4.3 培训 93
7.4.4 资源控制 93
7.4.5 成员招募 94
7.4.6 用户观点 94
7.5.2 变更控制 95
7.5.1 构形辨识 95
7.5 软件构形 95
7.5.3 构形检查 96
7.5.4 构形状态报告 96
7.6 操作中的维护 96
7.6.1 改变需求 96
7.6.2 需求评估 97
7.6.3(再)设计 97
7.6.4 发行控制 98
7.6.5 建立 98
7.6.6 测试 99
7.6.7 分发 99
7.7 改进中的维护 100
7.7.1 转换工程 100
7.7.3 可维护性设计 101
7.7.2 量化评估 101
7.8.1 系统部分 102
7.8.2 软件部分 102
7.8.3 维护机构 102
7.8 维护清单 102
7.9 小结 103
第八章 质量的变革 104
8.1 全面质量管理(TQM) 104
8.2 质量管理体系 107
8.3 ISO 9000质量体系简介 110
8.3.1 有关ISO 9000的一般问题 110
8.3.4 ISO 9001 111
8.3.2 客户的利益所在 111
8.3.3 公司利益所在 111
8.4 TQM和QMS的联系 115
8.5 小结 116
第九章 质量管理系统 117
9.1 简介 117
9.2 管理QMS 118
9.2.1 用于质量管理体系中的技术标准 118
9.3 质量“易犯错误” 121
9.3.1 没有明确管理职责 121
9.3.6 无附加价值 122
9.3.4 缺乏联系 122
9.3.7 固步自封 122
9.3.4 QMS过于庞大 122
9.3.3 质量意识不足 122
9.3.2 对用户无吸引力 122
9.3.8 缺乏训练 123
9.4 有关QMS实现的清单 123
9.5 未来去向 124
9.6 最后一个观点 125
9.7 小结 125
第十章 未来十年中的软件技术 126
10.1 引论 126
10.2 计划管理 126
10.3 风险基础计划管理 127
10.4 将来的任务 129
10.5 提高质量的方法 131
10.6 结束语 133
附录A 文档编制规范 135
A.1 可行性研究报告 135
A.2 项目开发计划 144
A.3 软件需求说明 148
A.4 数据要求说明 153
A.5 概要设计说明 157
A.6 详细设计说明 163
A.7 数据库设计说明 170
A.8 用户手册 175
A.9 操作手册 183
A.10 程序维护手册 187
A.11 测试计划 192
A.12 测试分析 200
A.13 安装实施过程 203
参考文献 207