序 1
第二版前言 1
第一版前言 1
第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 7
本章小结 7
第2章 软件生命周期及软件开发模型 8
2.1 软件生命周期 8
2.2 软件生命周期过程和活动 9
2.2.1 瀑布模型 10
2.2.2 演化模型 11
2.2.3 原型模型 12
2.2.4 螺旋模型 13
2.2.5 喷泉模型 14
本章小结 15
习题2 15
第3章 计算机系统工程 16
3.1 基于计算机的系统 16
3.1.1 计算机系统工程 17
3.1.2 硬件工程 20
3.1.3 软件工程 22
3.1.4 人机工程 26
3.1.5 数据库工程 27
3.2 可行性研究 28
3.2.1 可行性研究的任务 28
3.2.2 市场可行性 29
3.2.3 经济可行性 29
3.2.4 技术可行性 31
3.2.5 方案选择 32
3.3 系统开发过程的新体系结构——快速原型与面向对象 33
本章小结 34
习题3 35
第4章 需求分析 36
4.1 需求分析基础 36
4.1.1 分析的任务与原则 36
4.1.2 初步需求获取技术 38
4.1.3 需求建模 39
4.1.4 开发原型系统 40
4.2 结构化分析方法 41
4.2.1 结构化分析的策略 41
4.2.2 数据流图 42
4.2.3 数据字典 46
4.2.4 小说明 48
4.2.5 结构化分析实施步骤 48
4.3 其他分析方法与图形工具 49
4.4 实体——关系图 52
4.4.1 数据对象、属性与关系 53
4.4.2 E-R方法和实体模型 54
4.4.3 数据结构的规范化 55
4.5 需求规格说明与评审 57
4.5.1 需求规格说明书的目标与内容 57
4.5.2 需求评审 59
本章小结 60
习题4 61
第5章 总体设计 62
5.1 总体设计的过程 62
5.1.1 设计供选择的方案 62
5.1.2 推荐最佳实现方案 63
5.1.3 功能解剖和设计软件结构 63
5.1.4 数据库设计 64
5.1.5 制定测试计划 65
5.1.6 文档的编写 65
5.1.7 进行审查和复查 65
5.2 软件设计基本原理 65
5.2.1 模块化 65
5.2.2 抽象 68
5.2.3 信息隐蔽 68
5.2.4 模块独立性 69
5.3 设计准则 72
5.4 总体设计的图形描述工具 74
5.4.1 层次图 74
5.4.2 HIPO图 75
5.4.3 结构图 76
5.5 结构化设计方法 77
5.5.1 数据流图的类型 77
5.5.2 设计步骤 79
5.5.3 变换设计 79
5.5.4 事务设计 85
5.5.5 设计的后处理 86
本章小结 87
习题5 87
第6章 详细设计 88
6.1 结构化程序设计 88
6.2.1 程序流程图 90
6.2 详细设计工具 90
6.2.2 盒图(N-S图) 91
6.2.3 PAD图 92
6.2.4 过程设计语言(PDL) 94
6.2.5 判定表 94
6.2.6 判定树 95
6.3 Jackson程序设计方法 96
6.3.1 Jackson方法 96
6.3.2 Jackson图 97
6.3.3 Jackson程序设计方法 98
6.4 Warnier程序设计方法简介 102
6.4.1 Warnier图 102
6.4.2 Warnier程序设计方法的步骤 102
本章小结 102
习题6 103
7.1.1 程序设计语言的概述 105
第7章 编码 105
7.1 程序设计语言 105
7.1.2 程序设计语言的分类 106
7.1.3 程序设计语言的特点 110
7.1.4 程序设计语言的选择 112
7.2 程序设计风格 113
7.2.1 程序内部的文档 113
7.2.2 数据说明 114
7.2.3 语句构造 115
7.2.4 输入/输出 115
7.2.5 效率 116
7.3 编码的质量要求 117
7.4 编码工具 118
本章小结 118
习题7 119
8.1 软件测试的基本概念 120
8.1.1 软件测试的定义 120
第8章 软件测试 120
8.1.2 软件测试的基本原则 121
8.1.3 软件测试的步骤 122
8.1.4 软件测试信息流 122
8.1.5 测试人员组织 123
8.2 软件测试方法 124
8.2.1 黑盒测试 124
8.2.2 白盒测试 125
8.3 测试用例的设计 126
8.3.1 逻辑覆盖 126
8.3.2 等价类划分 129
8.3.3 边界值分析 130
8.3.4 因果图 130
8.4 软件测试的步骤 131
8.4.1 单元测试 131
8.3.5 错误推测法 131
8.4.2 集成测试 134
8.4.3 有效性测试 137
8.4.4 系统测试 138
8.5 调试 139
8.5.1 调试的步骤 139
8.5.2 调试的策略 139
8.6.2 软件正确性证明 142
8.6.1 软件可靠性的定义 142
8.6 软件可靠性 142
8.7 验收测试 143
8.7.1 验收测试的步骤 143
8.7.2 Alpha测试和Beta测试 144
8.8 测试工具 145
8.8.1 人工测试 145
8.8.2 自动测试工具 147
本章小结 147
习题8 148
9.1 软件维护的概念 149
9.1.1 软件维护的种类 149
第9章 软件维护 149
9.1.2 影响维护工作量的因素 150
9.1.3 软件维护的策略 151
9.2 软件维护的特点 152
9.2.1 软件工程与软件维护的关系 152
9.2.2 维护成本 153
9.2.3 维护的问题 154
9.3 软件维护过程 154
9.3.1 维护机构 154
9.3.2 维护申请报告 155
9.3.3 维护的工作流程 155
9.3.4 维护记录 157
9.3.5 维护评价 157
9.4.1 软件可维护性的度量 158
9.4 软件可维护性 158
9.4.2 提高软件可维护性的方法 159
9.5 软件维护的深化——再生工程 160
9.5.1 重构 160
9.5.2 逆向工程 161
9.5.3 前向工程 161
9.6 软件维护的副作用 161
本章小结 162
习题9 163
第10章 面向对象方法学引论 164
10.1 传统方法学与面向对象方法学比较 164
10.1.1 传统方法学 164
10.1.2 面向对象方法学 165
10.2 面向对象的基本任务 167
10.2.1 抽象 167
10.3.1 对象 169
10.2.2 封装 169
10.3 面向对象基础概念 169
10.3.2 其他概念 172
本章小结 175
习题10 176
第11章 面向对象的分析 177
11.1 面向对象建模 177
11.2 对象模型 178
11.2.1 表示类— —对象的图形符号 178
11.2.2 表示结构的图形符号 179
11.2.3 实例 181
11.3 动态模型 182
11.3.1 术语 182
11.3.2 表示方法 183
11.4 功能模型 184
11.5 UML概述 184
11.6 UML的图形 186
11.6.1 用例图(use case diagram) 187
11.6.2 类图(class diagram) 188
11.6.3 顺序图(Sequence diagram) 189
11.6.4 状态图(State chart diagram) 189
本章小结 190
习题11 191
第12章 面向对象系统设计 192
12.1 从面向对象分析到面向对象设计 193
12.2 问题域部分(PDC)设计之一——基础理论 194
12.2.1 为什么需要问题域部分设计 195
12.2.2 如何进行问题域部分设计 196
12.3 人机交互部分(HIC)设计 198
12.3.1 为什么需要人机交互部分 198
12.3.2 如何设计人机交互部分 199
12.4 任务管理部分(TMC)设计 200
12.4.2 怎样设计任务管理部分 201
12.4.1 为什么需要有任务管理部分 201
12.5 数据管理部件(DMC)的设计 202
本章小结 204
习题12 204
第13章 快速原型技术 205
13.1 快速原型方法 205
13.1.1 原型的定义和作用 205
13.1.2 原型的分类 206
13.1.3 原型开发的应用 207
13.1.4 快速原型的构造过程 207
13.2 基于快速原型技术的进化式软件开发(螺旋模型) 208
13.2.1 螺旋模型 208
13.2.2 螺旋模型的评价 210
13.3 快速原型开发技术 210
本章小结 210
习题13 211
第14章 软件重用技术 212
14.1 软件重用 212
14.1.1 软件重用的概念和意义 212
14.1.2 软件重用技术的理解 212
14.1.3 软件重用的过程 215
14.1.4 可重用软件的设计过程 215
14.2 软部件库的构造 216
14.2.1 基于域分析软部件选取 216
14.2.2 软部件的开发 217
14.2.3 软部件库的组织 219
14.2.4 软部件的检索与提取 220
14.3 面向对象的软件重用技术 220
本章小结 222
习题14 222
参考文献 223