前言 1
第1章 软件危机与软件工程 1
1.1 软件危机 1
1.1.1 软件代价高 1
1.1.2 软件开发和维护中严重问题 2
1.1.3 产生软件危机的原因 3
1.1.4 克服危机的途径 3
1.2 软件工程 4
1.2.1 软件工程的定义与基本原理 4
1.2.2 软件工程的目标 5
1.2.3 软件工程框架及原则 6
1.3 本章小结 7
习题 7
2.2 软件模型 8
2.1 软件生命周期 8
第2章 软件生命周期及软件开发模型 8
2.2.1 瀑布模型 9
2.2.2 演化模型 11
2.2.3 原型模型 11
2.2.4 螺旋模型 12
2.2.5 喷泉模型 13
2.3 本章小结 14
习题 14
第3章 计算机系统工程 15
3.1 基于计算机的系统 15
3.1.1 计算机系统工程 16
3.1.2 硬件和硬件工程 17
3.1.3 软件和软件工程 19
3.1.4 入机工程 22
3.2.1 可行性研究的任务 23
3.1.5 数据库和数据库工程 23
3.2 可行性研究 23
3.2.2 经济可行性 24
3.2.3 技术可行性 27
3.2.4 方案选择 27
3.3 系统结构的模型化 28
3.4 本章小结 30
习题 30
第4章 需求分析 31
4.1 需求分析基础 31
4.1.1 分析的任务与原则 31
4.1.2 初步需求获取技术 32
4.1.3 需求建模 33
4.1.4 开发原型系统 34
4.2.1 数据流图 35
4.2 结构化分析方法 35
4.2.2 数据字典 39
4.2.3 小说明 41
4.2.4 实施步骤 45
4.3 实体--关系图 46
4.3.1 数据对象、属性与关系 46
4.3.2 E-R方法和实体模型 47
4.3.3 数据结构的规范化 48
4.4 需求规格说明与评审 50
4.4.1 需求规格说明书的目标与内容 50
4.4.2 需求评审 53
4.5 本章小结 54
习题 55
5.1 总体设计的过程 56
5.1.1 设计供选择的方案 56
第5章 总体设计 56
5.1.2 推荐最佳实现方案 57
5.1.3 设计软件结构 57
5.1.4 数据库设计 57
5.1.5 制定测试计划 57
5.2 软件设计基本原理 58
5.2.1 模块化 58
5.2.2 抽象 60
5.2.3 信息隐蔽 60
5.2.4 模块独立性 61
5.3 设计准则 64
5.4 总体设计的图形描述工具 67
5.4.1 层次图 67
5.4.2 HIPO图 67
5.4.3 结构图 68
5.5 结构化设计方法 69
5.5.1 数据流图的类型 69
5.5.2 设计步骤 70
5.5.3 变换设计 71
5.5.4 事务设计 77
5.5.5 设计的后处理 78
5.6 本章小结 79
习题 79
第6章 详细设计 80
6.1 结构化程序设计 80
6.2 详细设计工具 82
6.2.1 程序流程图 83
6.2.2 盒图(N-S图) 84
6.2.3 PAD图 85
6.2.4 过程设计语言(PDL) 86
6.2.5 判定表 87
6.3 面向数据结构的设计方法 88
6.2.6 判定树 88
6.3.1 Jackson图 89
6.3.2 Jackson程序设计方法 90
6.4 本章小结 94
习题 95
第7章 编码 97
7.1 程序设计语言 97
7.1.1 程序设计语言的分类 97
7.1.2 程序设计语言的特点 101
7.1.3 程序设计语言的选择 104
7.2 程序设计风格 105
7.2.1 程序内部的文档 105
7.2.2 数据说明 106
7.2.4 输入/输出 107
7.2.3 语句构造 107
7.2.5 效率 108
7.3 编码工具 109
7.4 本章小结 110
习题 110
第8章 软件测试 111
8.1 软件测试的基本概念 111
8.1.1 软件测试的定义 111
8.1.2 软件测试的基本原则 112
8.1.3 软件测试的步骤 113
8.1.4 软件测试信息流 113
8.2 软件测试方法 114
8.2.1 黑盒测试 115
8.2.2 白盒测试 115
8.3.1 逻辑覆盖 116
8.3 测试用例的设计 116
8.3.2 等价类划分 119
8.3.3 边界值分析 120
8.3.4 错误推测法 121
8.4 软件测试的步骤 121
8.4.1 单元测试 121
8.4.2 集成测试 124
8.4.3 有效性测试 127
8.4.4 系统测试 128
8.5 调试 128
8.5.1 调试的步骤 129
8.5.2 调试的策略 129
8.6.1 软件可靠性的定义 132
8.6.2 软件正确性证明 132
8.6 软件可靠性 132
8.7 测试工具 133
8.7.1 人工测试 133
8.7.2 自动测试工具 135
8.8 本章小结 136
习题 136
第9章 软件维护 137
9.1 软件维护的概念 137
9.1.1 软件维护的种类 137
9.1.2 影响维护工作量的因素 138
9.2 软件维护的特点 139
9.2.1 软件工程与软件维护的关系 139
9.2.2 维护成本 140
9.2.3 维护的问题 141
9.3.1 维护机构 142
9.3 软件维护过程 142
9.3.2 维护申请报告 143
9.3.3 维护的工作流程 143
9.3.4 维护记录 144
9.3.5 维护评价 145
9.4 软件可维护性 145
9.4.1 软件可维护性的度量 146
9.4.2 提高软件可维护性的方法 146
9.5 软件维护的副作用 147
9.6 本章小结 149
习题 149
第10章 面向对象方法学引论 150
10.1 传统方法学的缺点 150
10.1.1 存在的问题 150
10.1.2 存在问题的原因 151
10.2 软件工程的新途径 152
10.2.1 快速原型法 152
10.2.2 面向对象方法学 153
10.3 基本概念 155
10.3.1 对象 156
10.3.2 其他概念 157
10.4 面向对象是程序设计的新范型 161
10.4 本章小结 161
习题 162
第11章 面向对象的需求分析 163
11.1 面向对象建模 163
11.2 对象模型 163
11.2.1 表示类- -对象的图形符号 164
11.2.2 表示结构的图形符号 164
11.2.3 实例 166
11.3.1 术语 167
11.3 动态模型 167
11.3.2 表示方法 168
11.4 功能模型 169
11.5 本章小结 170
习题 170
第12章 面向对象设计 171
12.1 从面向对象分析到面向对象设计 171
12.2 问题域部分(PDC)设计 171
12.2.1 为什么需要问题域部分设计 173
12.2.2 如何进行问题域部分设计 173
12.3 人机交互部分(HIC)设计 177
12.3.1 为什么需要人机交互部分 177
12.3.2 如何设计人机交互部分 177
12.4.1 为什么需要有任务管理部分 179
12.4 任务管理部分(TMC)设计 179
12.4.2 怎样设计任务管理部分 180
12.5 数据管理部件(DMC)的设计 180
12.6 本章小结 181
习题 181
第13章 快速原型技术 182
13.1 快速原型方法 182
13.1.1 原型的定义和作用 182
13.1.2 原型的分类 183
13.1.3 原型开发的应用 183
13.1.4 快速原型的构造过程 184
13.2 基于快速原型技术的进化式软件开发(螺旋模型) 185
13.2.1 螺旋模型 185
13.2.2 螺旋模型的评价 187
13.3 快速原型开发技术 187
习题 188
13.4 本章小结 188
14.1 软件重用 189
14.1.1 软件重用的概念和意义 189
14.1.2 软件重用技术的理解 189
第14章 软件重用技术 189
14.1.3 软件重用的过程 192
14.1.4 可重用软件的设计过程 193
14.2 软部件库的构造 194
14.2.1 基于域分析软部件选取 194
14.2.2 软部件的开发 194
14.2.3 软部件库的组织 196
14.2.4 软部件的检索与提取 197
14.3 面向对象的软件重用技术 198
15.1 人机界面 200
15.1.2 人机界面的发展过程 200
15.1.1 人机界面的概念 200
第15章 人机界面设计 200
习题 200
14.4 本章小结 200
15.1.3 人机界面中的用户因素分析 202
15.2 人机界面风格 202
15.3 人机界面实现的原则 203
15.4 人机界面的设计过程 205
15.4.1 界面设计的有关模型 205
15.4.2 任务分析和建模 206
15.4.3 界面设计的一般问题 206
15.4.4 实现工具 207
15.5 本章小结 207
习题 207
参考文献 209