第一部分 系统分析与设计 1
第一章 系统分析 1
§1.1 概述 1
1.1.1 软件的生存期 1
1.1.2 什么是系统分析 1
目录 1
1.1.3 分析员和用户的关系 2
1.1.4 什么是结构分析 2
1.2.1 可行性研究 3
§1.2 可行性研究与费用-收益分析 3
1.2.2 费用-收益分析 5
§1.3 数据流图 8
1.3.1 什么是数据流图 8
1.3.2 怎样画数据流图 11
1.3.3 分层数据流图 13
1.3.4 数据流图的改进 19
1.4.1 数据词典的定义 22
1.4.2 数据词典的组成 22
§1.4 数据词典 22
1.4.3 数据词典样板 24
1.4.4 数据词典的实现 26
§1.5 如何写加工说明 27
1.5.1 结构英语 27
1.5.2 判定表 31
1.5.3 判定树结构 36
§1.6 分析阶段的组织与实现 36
1.6.1 研究当前系统,建立当前系统的具体模型 37
1.6.2 建立当前系统的逻辑模型 38
1.6.3 建立目标系统的逻辑模型 40
1.6.4 建立目标系统的具体模型 41
1.6.5 编写系统说明书 42
第二章 系统设计 44
§2.1 结构设计的基本概念 44
2.1.1 什么是结构设计 44
2.1.2 降低系统成本 44
2.1.3 结构设计的分解原则 45
2.1.4 系统结构图 45
2.2.1 程序错误与程序复杂性 46
§2.2 结构设计的理论基础 46
2.2.2 模块耦合 49
2.2.3 模块内聚 51
§2.3 结构设计技术 58
2.3.1 系统结构的标准形式 58
2.3.2 结构图的改进技术 60
2.3.3 变换分析 65
2.3.4 事务分析 68
2.3.5 例子 71
§2.4 其他设计方法简介 75
2.4.1 Ja ckson设计方法 75
2.4.2 程序的逻辑构造(LCP)方法 79
§2.5 详细设计 84
2.5.1 控制流程图 84
2.5.2 结构流程图 85
2.5.3 IPO图 86
2.5.4 PDL语言 87
2.6.1 问题的定义与初步可行性分析 89
§2.6 结构分析与结构设计的典型例子——工资系统 89
2.6.2 系统分析 94
2.6.3 系统设计 100
第二部分 软件测试 105
第三章 软件测试的基本方法 105
§3.1 引论 105
3.1.1 软件测试的目标和原则 105
3.1.2 程序错误分类 107
3.1.3 若干基本概念 112
§3.2 路径测试………………………………………………………………………………(120 )3.2.1 路径测试概述 120
3.2.2 基本的路径选择准则 121
3.2.3 循环测试 122
3.2.4 测试的执行时间 124
3.2.5 路径测试的其他问题 124
§3.3 作业流测试 127
3.3.1 概述 127
3.3.2 作业流 128
3.3.3 作业流测试 130
§3.4 输入确认和语法测试 132
3.4.1 概述 132
3.4.2 语法测试的原则 133
3.4.3 测试实例的生成 134
3.4.4 运行、确认和即兴测试 136
§3.5 基于逻辑的测试 137
3.5.1 定义和记号 137
3.4.5 应用 137
3.5.2 把判定表作为设计测试实例的基础 138
3.5.3 扩展“无关紧要”的项 139
3.5.4 测试实例设计 140
3.5.5 判定表与程序结构 140
3.5.6 测试设计的逻辑和布尔代数方法 141
§3.6 状态(转变)测试 142
3.6.1 概述 142
3.5.7 小结 142
3.6.2 状态图 143
3.6.3 状态测试 146
§4.1 单元测试的目标 148
4.1.1 单元测试 148
第四章 单元测试 148
4.1.2 单元测试的目标 149
§4.2 如何组织单元测试 151
4.2.1 准备工作 151
4.2.2 程序设计的风格与标准 154
4.2.3 环境 156
§4.3 单元测试的方法和实现 158
4.3.1 概述 158
4.3.2 机械分析 159
4.3.3 办公室检查 161
4.3.4 复审(Revlew)和校核(Audit) 164
4.3.5 执行,改正和进一步改进 168
4.3.6 实现中的几点说明 168
§4.4 高级元素测试的若干方法 169
4.4.1 说明 169
4.4.2 判定点和路径测试 169
4.4.3 语法制导测试 169
4.4.5 状态测试 170
4.4.6 分层问题 170
4.4.4 基于逻辑的测试 170
4.4.7 分层设计 171
5.1.2 整体测试与元素测试 172
5.1.1 定义 172
5.1.3 整体测试的条件 172
§5.1 整体测试的目标 172
第五章 整体测试 172
§5.2 整体测试的技巧 174
5.2.1 图和标准 174
5.2.2 测试的内容 175
5.2.3 数据的破坏和残留 178
5.2.4 特殊问题 179
5.3.1 目标 180
5.3.2 自顶向下的结合和测试 180
§5.3 结合的总策略 180
5.3.3 从底向上的测试和结合 181
3.3.4 小结 181
5.3.4 莽撞测试(big-bang testing) 182
5.3.5 结合策略 183
§5.4 谁做结合工作 184
第六章 系统测试 185
§6.1 系统测试的内容 185
§6.2 利用交叉引用索引文件进行系统功能测试 186
6.2.1 为什么要进行系统的功能测试 186
6.2.2 说明书的交叉引用索引 186
6.2.3 设计文档的交叉引用索引 188
6.2.4 数据库交叉引用索引 188
6.2.5 扩充文件和编辑文件 189
6.2.6 会谈与对质 190
§6.3 系统功能测试和验收测试 192
6.3.1 概述 192
6.3.2 测试计划 194
6.3.3 C部分——实际测试的说明书 196
6.3.4 系统功能测试和验收测试的实施 199
§6.4 配置、恢复和安全测试 203
6.4.1 配置测试 203
6.4.2 恢复测试 205
6.4.3 安全测试 206
第三部分 软件质量分析与维护 209
第七章 软件质量分析 209
§7.1 软件复杂性的度量 209
7.1.1 概述 209
7.1.2 最简单的度量——代码行数度量法 209
7.1.3 McCabe度量法 210
7.1.4 Halstead度量法 211
7.1.5 实现计划 213
§7.2 软件可靠性 214
7.2.1 概述 214
7.2.2 软件可靠性的预测方法 216
7.2.3 软件可靠性理论的缺陷 217
§7.3 日立方法(Hitachi’s Method)与其它跟踪方法 218
7.3.1 概述 218
7.3.2 日立预测模型 218
7.3.3 其它跟踪方法 222
7.3.4 软件质量预测方法要点 223
7.4.1 独立的测试设计 224
§7.4 如何获得高质量的软件 224
7.4.2 软件质量保证工作的组织与管理 228
第八章 软件维护 232
§8.1 导引 232
8.1.1 基本概念 232
8.1.2 软件可维护度量 234
§8.2 如何提高程序的可维护性 236
8.2.1 建立明确的软件质量目标 236
8.2.2 使用先进的软件技术与工具 236
8.2.3 建立明确的质量保证工作 238
8.2.4 选择可维护的程序设计语言 240
8.2.5 改进程序文档 240
8.3.1 软件维护的基本任务 243
§8.3 软件维护技术 243
8.3.2 理解程序 244
8.3.3 修改程序 245
8.3.4 重新确认程序 247
§8.4 软件维护工具 248
8.4.1 维护技术方面的工具 249
8.4.2 维护管理方面的工具 251
§8.5 软件维护管理 251
8.5.1 软件维护管理的职能 251
8.5.2 建立维护小组 253
8.5.3 软件维护计划 254
参考书目 255