第1章 软件工程概述 1
1.1 软件 1
1.1.1 软件与软件的特点 1
1.1.2 软件危机 3
1.2 软件工程 5
1.2.1 软件工程的定义 5
1.2.2 软件工程的基本目标 6
1.2.3 软件工程的基本原理 7
1.2.4 软件工程的原则 8
1.3 软件生命周期 9
1.3.1 软件定义 9
1.3.2 软件开发 10
1.3.3 软件的使用、维护和退役 11
1.4 软件生命周期模型 11
1.4.1 瀑布模型 12
1.4.2 原型模型 13
1.4.3 螺旋模型 15
1.4.4 基于面向对象的模型 17
1.4.5 喷泉模型 18
1.4.6 基于四代技术的模型 19
1.4.7 变换模型 21
1.5 软件开发方法和工具 22
1.5.1 软件开发方法 22
1.5.2 软件工具与开发环境 23
小结 25
综合练习一 26
一、选择题 26
二、填空题 26
三、思考题 27
四、上机操作题 27
第2章 系统分析 28
2.1 基于计算机的系统和系统工程 28
2.1.1 基于计算机的系统 28
2.1.2 系统工程 29
2.2 可行性研究 30
2.2.1 问题定义 30
2.2.2 可行性研究的内容及步骤 31
2.3 系统分析 33
2.3.1 系统分析员 34
2.3.2 系统结构模型 34
2.3.3 系统分析方法 34
2.3.4 系统规格说明 35
2.3.5 系统评审 36
小结 36
综合练习二 37
一、选择题 37
二、填空题 37
三、思考题 37
四、上机操作题 38
第3章 需求分析 39
3.1 需求分析概述 39
3.2 需求分析的任务与原则 40
3.2.1 需求分析的任务 40
3.2.2 需求分析的原则 42
3.3 需求分析的过程及方法 43
3.3.1 需求分析的过程 43
3.3.2 软件需求建模 46
3.3.3 需求分析方法 50
3.4 需求规格说明与需求评审 60
3.4.1 需求规格概述 60
3.4.2 需求规格说明的内容 61
3.4.3 需求规格说明的评审 62
3.5 需求管理及其工具 63
3.5.1 需求管理 63
3.5.2 需求管理工具 65
小结 66
综合练习三 66
一、选择题 66
二、填空题 67
三、思考题 67
四、上机操作题 67
第4章 总体设计 68
4.1 总体设计的目标和任务 68
4.1.1 概要设计的目标 68
4.1.2 概要设计的任务 68
4.2 软件设计的原则 69
4.2.1 模块化 69
4.2.2 抽象与逐步求精 70
4.2.3 信息隐蔽和局部化 71
4.2.4 模块独立性 71
4.3 体系结构设计 74
4.3.1 子系统划分 74
4.3.2 系统模块结构设计 75
4.4 结构化设计方法 77
4.4.1 信息流的类型 77
4.4.2 变换分析 78
4.4.3 事务分析 80
小结 80
综合练习四 81
一、选择题 81
二、填空题 81
三、思考题 81
四、上机操作题 82
第5章 详细设计 83
5.1 详细设计的任务、原则及内容 83
5.1.1 详细设计的任务 83
5.1.2 详细设计的原则 83
5.1.3 详细设计的内容 84
5.2 处理过程设计 85
5.2.1 程序流程图 85
5.2.2 盒图(N-S图) 88
5.2.3 PAD图 89
5.2.4 判定表 90
5.2.5 判定树 91
5.2.6 过程设计语言 92
5.3 面向数据结构的设计方法 94
5.4 详细设计说明书 98
小结 100
综合练习五 100
一、选择题 100
二、填空题 100
三、思考题 101
四、上机操作题 101
第6章 面向对象技术 102
6.1 面向对象的基本概念 102
6.2 面向对象模型 108
6.2.1 对象模型 109
6.2.2 动态模型 111
6.2.3 功能模型 112
6.3 面向对象分析 117
6.3.1 识别类与对象 117
6.3.2 确定结构 118
6.3.3 确定主题 119
6.3.4 定义属性 120
6.3.5 建立动态模型 120
6.3.6 建立功能模型 121
6.3.7 定义服务 121
6.4 面向对象设计 122
6.4.1 面向对象设计准则 122
6.4.2 问题域的设计 123
6.4.3 人机界面的设计 123
6.4.4 任务管理部分设计 124
6.4.5 数据管理部分设计 124
6.5 面向对象分析与设计方法 125
6.5.1 Coad和Yourdon的OOA和OOD方法 125
6.5.2 Booch的OOD方法 126
6.5.3 OMT方法 126
6.5.4 Jacobson方法 127
6.5.5 UML概述 127
6.6 面向对象实现 129
6.6.1 面向对象程序设计 129
6.6.2 面向对象测试 131
小结 135
综合练习六 136
一、选择题 136
二、填空题 136
三、思考题 137
四、上机操作题 137
第7章 程序编码 138
7.1 程序设计语言 138
7.1.1 程序设计语言的基本概念 138
7.1.2 程序设计语言的发展及种类 140
7.1.3 程序设计语言的基本成分 145
7.1.4 程序设计语言的特点 149
7.1.5 编程语言的选择 151
7.2 编程规范与风格 152
7.2.1 源程序文档化 153
7.2.2 数据说明 157
7.2.3 语句结构 158
7.2.4 输入输出 160
7.3 程序效率 160
7.3.1 程序效率的原则 161
7.3.2 算法对效率的影响 161
7.3.3 存储器效率 162
7.3.4 输入输出效率 163
7.4 编程安全 163
7.4.1 冗余程序设计 163
7.4.2 防错性程序设计 164
7.5 程序设计方法 165
7.5.1 结构化程序设计 165
7.5.2 面向对象程序设计 167
小结 170
综合练习七 170
一、选择题 170
二、填空题 171
三、思考题 171
四、上机操作题 172
第8章 软件测试 173
8.1 软件测试的基本概念 173
8.1.1 软件测试的定义 173
8.1.2 软件测试的目的与原则 175
8.1.3 软件测试的对象 179
8.1.4 软件测试的步骤和信息流程 181
8.2 软件测试的基本方法 184
8.2.1 静态测试和动态测试 184
8.2.2 白盒测试和黑盒测试 186
8.3 软件测试的过程与策略 195
8.3.1 单元测试 196
8.3.2 集成测试 198
8.3.3 确认测试 200
8.3.4 系统测试 201
8.4 调试与排错 202
8.4.1 软件调试的目的与原则 202
8.4.2 软件调试的策略 203
8.4.3 软件调试的步骤 204
8.5 软件测试的工具 204
小结 205
综合练习八 205
一、选择题 205
二、填空题 206
三、思考题 206
四、上机操作题 207
第9章 软件维护 208
9.1 软件维护的基本概念 208
9.1.1 软件维护的定义 208
9.1.2 软件维护的类型 208
9.2 软件维护的特点 209
9.2.1 软件维护的工作量 209
9.2.2 软件维护的困难性 211
9.2.3 非结构化维护和结构化维护 211
9.2.4 软件维护的策略 212
9.2.5 软件维护管理准则 213
9.2.6 软件维护的成本 213
9.3 软件维护活动 213
9.3.1 软件维护组织 214
9.3.2 软件维护申请 215
9.3.3 软件维护工作流程 215
9.3.4 软件维护步骤 216
9.3.5 软件维护档案记录 217
9.3.6 复审 218
9.4 软件维护的副作用 219
9.4.1 什么是软件维护副作用 219
9.4.2 对付软件维护副作用的策略 219
9.5 软件可维护性 220
9.5.1 软件可维护性量度 220
9.5.2 提高软件维护的策略 221
9.6 软件再工程 224
9.6.1 逆向工程与再工程 224
9.6.2 软件再工程技术 225
9.6.3 软件再工程的风险分析 227
小结 227
综合练习九 228
一、选择题 228
二、填空题 229
三、思考题 229
四、上机操作题 229
第10章 软件工程管理 231
10.1 软件项目管理 231
10.1.1 项目管理基础 231
10.1.2 软件项目管理 234
10.1.3 软件项目计划与进度 236
10.2 软件质量管理 242
10.2.1 软件质量概述 242
10.2.2 软件质量度量 243
10.2.3 软件质量保证 247
10.2.4 软件容错技术 250
10.3 软件配置管理 252
10.3.1 软件配置管理基础 252
10.3.2 软件配置管理过程 255
10.3.3 软件配置管理系统 256
小结 258
综合练习十 258
一、选择题 258
二、填空题 259
三、思考题 259
四、上机操作题 259
第11章 上机实训 260
11.1 实训1 260
11.1.1 实训概要 260
11.1.2 实训内容 260
11.1.3 实训过程 260
11.1.4 实训总结 261
11.2 实训2 261
11.2.1 实训概要 261
11.2.2 实训内容 261
11.2.3 实训过程 262
11.2.4 实训总结 262
11.3 实训3 262
11.3.1 实训概要 262
11.3.2 实训内容 262
11.3.3 实训过程 263
11.3.4 实训总结 264
11.4 实训4 264
11.4.1 实训概要 264
11.4.2 实训内容 264
11.4.3 实训过程 265
11.4.4 实训总结 266
11.5 实训5 267
11.5.1 实训概要 267
11.5.2 实训内容 267
11.5.3 实训过程 267
11.5.4 实训总结 267
11.6 实训6 267
11.6.1 实训概要 268
11.6.2 实训内容 268
11.6.3 实训过程 268
11.6.4 实训总结 269
11.7 实训7 269
11.7.1 实训概要 269
11.7.2 实训内容 270
11.7.3 实训过程 270
11.7.4 实训总结 271
11.8 实训8 272
11.8.1 实训概要 272
11.8.2 实训内容 272
11.8.3 实训过程 273
11.8.4 实训总结 275
11.9 实训9 276
11.9.1 实训概要 276
11.9.2 实训内容 276
11.9.3 实训过程 276
11.9.4 实训总结 276
11.10 实训10 277
11.10.1 实训概要 277
11.10.2 实训内容 277
11.10.3 实训过程 277
11.10.4 实训总结 279
参考文献 280