第一章 概论 1
1 计算机软件 1
1.1 从程序到软件 1
1.2 软件的分类 2
2 软件设计方法的内涵 4
2.1 软件开发的工程化 4
2.2 数据对象的表达方法 8
2.3 算法的设计和分析 10
2.4 结构化方法 12
3 软件评价 13
习题 14
本章参考文献 14
第二章 数据的表达 15
1 数据表达方法的概念 15
1.1 数据的静态结构和动态结构 15
1.2 数据类型的特征 16
1.3 动态数据结构的表达原则 16
1.4 数据的逻辑结构和存储结构 19
2 数据类型 19
2.1 简单类型 19
2.2 构造类型 22
2.3 指针类型 27
3 线性表及其特例 29
3.1 结构模式 29
3.2 几种常用的特殊线性表 29
3.3 线性表的存储结构 30
3.4 线性表的典型操作示例 31
4 树和二叉树 38
4.1 逻辑结构 38
4.2 二叉树的存储结构 38
4.3 二叉树的典型操作示例 40
5 图结构 42
5.1 逻辑结构 42
5.2 图的存储结构 42
5.3 图上的典型操作示例 44
习题 48
本章参考文献 49
第三章 外存数据组织:文件和数据库 50
1 外存数据组织的基本方法 50
1.1 信息结构 50
1.2 两类外存数据组织 52
1.3 记录式文件的基本属性 53
1.4 文件操作特征 54
1.5 数据库的数据模型 54
1.6 文件系统和数据库管理系统 55
2 常用文件组织 56
2.1 顺序文件和逻辑有序的顺序文件 56
2.2 索引文件和倒排索引 58
2.3 散列文件 59
2.4 相对文件 60
3 数据库系统 63
3.1 数据库系统的构成和结构 63
3.2 数据库语言 64
3.3 关系数据库的定义和操作 65
3.4 关系数据库标准语言SQL 67
习题 74
本章参考文献 74
第四章 算法设计与分析 75
1 算法设计与分析概述 75
2 算法设计 77
2.1 归纳法 77
2.2 穷举法 78
2.3 递归法 79
2.4 递推法 80
2.5 枚举法 81
3 算法分析 82
3.1 算法的正确性 82
3.2 算法的复杂性 83
3.3 算法的存储量 84
3.4 简单性和最优性 84
3.5 算法分析实例 85
4 算法的时间复杂性 94
4.1 多项式时间算法和指数时间算法 94
4.2 近似算法 96
4.3 快速算法 99
习题 101
本章参考文献 101
第五章 结构化原理 102
1 结构化程序 102
1.1 基本控制结构 102
1.2 结构化定理 103
1.3 自顶向下的逐步求精 106
2 模块化 109
2.1 模块化原理 109
2.2 耦合与内聚 110
3 软件结构的改进 113
3.1 软件模块结构的改进与优化 113
3.2 合理使用Goto 115
习题 117
本章参考文献 118
第六章 程序表现与构造技术 119
1 程序的表现方法 119
1.1 流程图 119
1.2 PAD图 122
1.3 Yourdon图 129
1.4 判定表 130
2 面向功能分解的方法 131
2.1 原理 131
2.2 分解模式 132
2.3 HIPO图 132
3 面向数据结构的方法 133
3.1 Warnier的LCP方法 134
3.2 Jackson方法 141
4 面向数据流的方法 146
4.1 数据流图 146
4.2 中心变换法 150
4.3 事务变换法 152
习题 154
本章参考文献 154
第七章 软件开发的步骤 155
1 计划和需求分析 155
1.1 可行性研究 155
1.2 需求分析概要 156
1.3 需求说明 157
1.4 需求分析实例 158
2 设计 161
2.1 设计阶段要求概要 161
2.2 总体结构设计 162
2.3 接口设计 165
2.4 安全性设计 167
3 实现 168
3.1 实现阶段概要 168
3.2 模块开发卷宗 170
3.3 编码规范与风格 173
3.4 源程序的核查 176
4 测试与排错 179
4.1 测试阶段概要 179
4.2 测试计划与测试分析报告 180
4.3 结构测试法 182
4.4 功能测试法 184
4.5 组装测试 188
4.6 程序排错和文档修改 190
5 安装与维护 193
5.1 安装阶段概要 193
5.2 系统辅助软件工具 194
5.3 用户文档 196
5.4 软件的维护 197
习题 198
本章参考文献 199
第八章 数值软件开发 200
1 数学软件 200
1.1 数学软件概述 200
1.2 数学软件的构成和形式 201
2 数值软件 207
2.1 数值软件核心算法的特点 207
2.2 数值软件结构特点 210
2.3 实例 211
3 数值软件开发中的特殊处理 214
3.1 提高可靠性的技术途径 214
3.2 增强可移植性的技术途径 219
3.3 数值软件的性能测试 222
习题 227
本章参考文献 227
第九章 软件工具和环境 228
1 软件工具简介 228
1.1 软件开发工具 228
1.2 数学软件工具 234
1.3 辅助性软件 237
2 数学软件资源简介 242
2.1 通用数值软件库 242
2.2 数学问题专用软件包 245
2.3 公式处理系统 248
习题 250
本章参考文献 250
第十章 软件开发模式和方法的发展 251
1 原型化开发模式 251
1.1 软件开发的两种模式 251
1.2 原型法 252
1.3 原型的开发过程和原型类型 254
1.4 支持原型化开发的环境和工具 255
2 面向对象方法 258
2.1 面向对象的基本概念 258
2.2 面向对象的软件开发方法 260
2.3 面向对象的程序设计语言 263
3 计算机辅助软件工程 263
3.1 CASE概述 263
3.2 CASE结构和CASE工具 265
3.3 实例 267
习题 268
本章参考文献 268