第1章 绪论 1
1.1 软件工程的产生 1
1.1.1 软件的特点 1
1.1.2 软件生产的发展 1
软件工程 1
1.1.3 软件危机 2
1.1.4 软件工程 3
1.2 软件工程过程和软件生存周期 5
1.2.1 软件工程过程 5
1.2.2 软件生存周期 6
1.3 软件生存周期模型、方法和工具 8
1.3.1 软件生存周期模型 8
1.3.2 软件开发方法 10
1.3.3 软件开发工具 11
习题1 13
2.1.1 可行性研究的任务 14
第2章 软件可行性研究与项目开发计划 14
2.1 可行性研究 14
2.1.2 可行性研究的具体步骤 15
2.1.3 可行性研究报告的主要内容 16
2.2 系统流程图 17
2.3 成本——效益分析 19
2.4 项目开发计划 20
习题2 20
第3章 软件需求分析 21
3.1 需求分析的任务 21
3.1.1 需求分析的概念 21
3.1.2 需求分析的基本任务 22
3.1.3 需求规格说明书主要内容 22
3.2 结构化分析方法 23
3.2.1 自顶向下逐层分解的分析策略 23
3.2.3 SA分析步骤 24
3.2.2 描述工具 24
3.3 数据流图(DFD) 25
3.3.1 基本图形符号 25
3.3.2 画数据流图的步骤 26
3.3.3 实例——销售管理系统 28
3.4 数据字典(DD) 30
3.4.1 数据字典的内容及格式 30
3.4.2 数据字典的实现 32
3.5 加工逻辑的描述 33
3.5.1 结构化语言 33
3.5.2 判定表 34
3.5.3 判定树 35
3.6 IDEF方法 36
3.6.1 IDEF0的图形表示 36
3.6.2 建立功能模型的基本方法 37
3.6.3 IDEF0方法的特点 38
3.7 结构化分析方法小结 39
习题3 40
第4章 软件概要设计 41
4.1 软件概要设计的基本任务 41
4.1.1 基本任务 41
4.1.2 软件概要设计说明书的主要内容 43
4.2 软件设计的基本原理 43
4.2.1 模块化 43
4.2.2 抽象 44
4.2.3 信息隐蔽 44
4.2.4 模块独立性 45
4.3 软件结构优化准则 48
4.3.1 软件结构图 48
4.3.2 软件结构设计优化准则 49
4.4.1 数据流的类型 51
4.4 面向数据流的设计方法 51
4.4.2 设计过程 52
4.4.3 变换分析设计 52
4.4.4 事务分析设计 54
4.4.5 综合型数据流图与分层数据流图映射成软件结构的设计 55
4.4.6 实例:将3.3.3实例——销售管理系统的数据流图转化为软件结构 56
4.4.7 设计的后处理 56
4.5 基于IDEF0图的设计方法 58
4.6 表示软件结构的另一种图形工具——HIPO图 58
习题4 59
第5章 软件详细设计 61
5.1 详细设计的基本任务 61
5.2 结构化程序设计方法 61
5.3 详细设计描述法 62
5.3.2 PAD图 63
5.3.1 程序流程图 63
5.3.3 过程设计语言 65
5.4 Jackson方法 68
5.4.1 概述 68
5.4.2 Jackson结构图 68
5.4.3 JSP设计步骤 69
5.4.4 Jackson方法小结 73
习题5 74
第6章 软件编码 75
6.1 程序设计语言的特性及选择 75
6.1.1 程序设计语言特性 75
6.1.2 程序设计语言的选择 77
6.2 程序设计风格 79
习题6 81
7.1.2 软件测试的原则 82
7.1.1 软件测试的目的 82
7.1 软件测试的目的及原则 82
第7章 软件测试 82
7.2 测试方法 83
7.2.1 静态测试与动态测试 83
7.2.2 黑盒测试法与白盒测试法 84
7.3 测试用例的设计 85
7.3.1 白盒技术 85
7.3.2 黑盒技术 90
7.4 测试过程 94
7.4.1 软件测试过程中的信息 94
7.4.2 软件测试的步骤及与各开发阶段的关系 94
7.4.3 单元测试 95
7.4.4 集成测试 96
7.4.5 确认测试 99
7.5.2 调试技术 100
7.5.1 调试的目的 100
7.5 调试 100
习题7 102
第8章 软件维护 104
8.1 软件维护的内容 104
8.2 维护的特点 105
8.2.1 非结构化维护和结构化维护 105
8.2.2 维护的困难性 105
8.2.3 软件维护的费用 106
8.3 维护任务的实施 107
8.3.1 维护的组织 107
8.3.2 维护的流程 108
8.3.3 维护技术 109
8.3.4 维护的副作用 110
8.4 软件可维护性 111
8.4.1 可维护性定义 111
8.4.2 可维护性的度量 111
8.4.3 提高可维护性的方法 112
习题8 115
第9章 软件开发的增量模型 116
9.1 概述 116
9.1.1 瀑布模型的局限性 116
9.1.2 增量模型的基本思想 117
9.1.3 增量模型的分类 117
9.2 渐增模型 118
9.2.1 增量构造模型 118
9.2.2 演化提交模型 119
9.3 快速原型模型 119
9.3.1 基本思想 119
9.3.2 快速原型模型表示 120
9.3.3 原型开发过程 121
9.4 快速原型的开发技术和开发环境 123
9.5 增量模型的评价 124
习题9 125
第10章 面向对象的方法 126
10.1 面向对象概述 126
10.1.1 传统开发方法存在的问题 126
10.1.2 面向对象的概念 127
10.1.3 面向对象的开发方法 131
10.2 面向对象的模型 132
10.2.1 对象模型 132
10.2.2 动态模型 136
10.2.3 功能模型 138
10.3 面向对象的分析 140
10.3.1 面向对象分析过程 140
10.3.2 建立对象模型 141
10.3.3 建立动态模型 146
10.3.4 建立功能建模 148
10.3.5 确定操作 149
10.4 面向对象的设计 150
10.4.1 面向对象设计的准则 151
10.4.2 面向对象设计的启发规则 152
10.4.3 系统设计 154
10.4.4 对象设计 157
10.5 面向对象的实现 159
10.5.1 程序设计语言 159
10.5.2 类的实现 160
10.5.3 应用系统的实现 161
10.5.4 面向对象测试 161
习题10 162
第11章 软件质量与质量保证 164
11.1 概述 164
11.1.1 软件质量的定义 164
11.1.2 软件质量的度量和评价 164
11.1.3 软件质量保证 165
11.2.1 McCall质量度量模型 167
11.2 质量度量模型 167
11.2.2 ISO的软件质量评价模型 168
11.3 软件复杂性 169
11.3.1 软件复杂性的基本概念 169
11.3.2 软件复杂性的度量方法 169
11.4 软件可靠性 171
11.4.1 软件可靠性定义 171
11.4.2 软件可靠性指标 172
11.4.3 软件可靠性模型 172
11.5 软件评审 173
11.5.1 设计质量的评审内容 173
11.5.2 程序质量的评审内容 174
11.6 软件容错技术 175
11.6.1 容错软件定义 176
11.6.2 容错的一般方法 176
11.6.3 容错软件的设计过程 177
习题11 178
第12章 软件工程管理 179
12.1 软件工程管理概述 179
12.1.1 软件产品的特点 179
12.1.2 软件工程管理的重要性 179
12.1.3 软件工程管理的内容 180
12.2 软件项目计划 181
12.2.1 软件项目计划概念 181
12.2.2 软件项目计划内容 182
12.2.3 制定软件工程规范 183
12.2.4 软件开发成本估算 183
12.2.5 风险分析 186
12.2.6 软件项目进度安排 186
12.2.7 软件质量保证 188
12.3.2 软件配置项 189
12.3.1 基线 189
12.3 软件配置管理 189
12.3.3 版本控制 190
12.3.4 变更控制 190
12.4 软件工程标准化与软件文档 191
12.4.1 什么是软件工程标准化 191
12.4.2 软件工程标准化的意义 192
12.4.3 软件工程标准的层次 192
12.4.4 文档的作用与分类 193
习题12 194
第13章 软件开发环境 195
13.1 软件开发环境 195
13.1.1 软件开发环境概论 195
13.1.2 软件开发环境的分类 198
13.2 软件工具的基本概念 199
13.2.1 什么是软件工具 200
13.2.3 软件工具的分类 201
13.2.2 当前软件工具发展的特点 201
13.3 计算机辅助软件工程(CASE) 202
13.3.1 CASE定义 202
13.3.2 CASE分类 202
13.3.3 CASE的集成 204
13.3.4 CASE生存期 205
13.3.5 CASE工作台 206
习题13 209
实践环节 211
附录 212
参考文献 218
软件工程自学考试大纲 221
出版前言 221
一、课程性质与设置目的 223
第1章 绪论 224
二、课程内容与考核目标 224
第2章 软件可行性研究与项目开发计划 225
第3章 软件需求分析 225
第4章 软件概要设计 227
第5章 软件详细设计 228
第6章 软件编码 228
第7章 软件测试 229
第8章 软件维护 230
第9章 软件开发的增量模型 230
第10章 面向对象的方法 231
第11章 软件质量与质量保证 233
第12章 软件工程管理 234
第13章 软件开发环境 235
三、有关说明与实施要求 237
附录 题型举例 239
后记 240