第1章 软件工程概述 1
1.1 软件的概念、特点和分类 1
1.1.1 软件的概念 1
1.1.2 软件的特点 1
1.1.3 软件的分类 2
1.1.4 软件的发展 3
1.1.5 软件危机 3
1.2 软件工程的概念 4
1.2.1 软件工程的定义 4
1.2.2 软件工程的目标 4
1.2.3 软件工程的原则 5
1.3 软件生存周期 6
1.3.1 软件定义 6
1.3.2 软件工程过程 6
1.3.3 软件使用、维护和退役 7
1.4 软件开发模型 7
1.4.1 瀑布模型 7
1.4.2 原型模型 7
1.4.3 螺旋模型 8
1.4.4 喷泉模型 9
1.4.5 基于四代技术模型 9
1.4.6 变换模型 9
1.4.7 组合模型 10
1.5 软件工具及环境 10
1.5.1 软件工程辅助工具 10
1.5.2 CASE工具介绍 10
第2章 可行性分析 12
2.1 可行性研究的任务 12
2.2 可行性研究的步骤 12
2.3 系统流程图(system flow diagram) 13
2.4 开发进度 14
2.5 成本/效益分析 14
2.6 软件计划说明书 17
第3章 软件需求分析 18
3.1 需求分析的任务与步骤 18
3.1.1 需求分析的任务 18
3.1.2 需求分析的步骤 18
3.1.3 软件需求分析的原则 19
3.2 面向数据流的分析方法 20
3.2.1 基于数据流的分析方法 20
3.2.2 数据流图 21
3.2.3 数据字典 23
3.2.4 加工逻辑说明 24
3.3 面向数据结构的分析方法 25
3.3.1 Jackson系统开发方法 25
3.3.2 Warnier方法 25
3.3.3 DSSD方法 26
3.4 原型化方法 27
3.4.1 软件原型分类 27
3.4.2 快速原型模型 27
3.5 系统动态分析 29
3.5.1 状态-迁移图 29
3.5.2 Petri网 30
3.6 需求规格说明与评审 30
第4章 概要设计 33
4.1 概要设计的任务与步骤 33
4.1.1 概要设计的任务 33
4.1.2 概要设计的步骤 34
4.2 程序结构与程序结构图 34
4.2.1 程序结构 34
4.2.2 程序结构图 35
4.3 软件设计的概念与原则 36
4.3.1 模块化与局部化 36
4.3.2 模块独立性(modular independence) 38
4.3.3 抽象与信息隐蔽 44
4.4 面向数据流的设计方法 45
4.4.1 基本概念 45
4.4.2 变换分析 47
4.4.3 事务分析 49
4.4.4 设计优化原则 51
4.5 面向数据结构的设计方法 54
4.5.1 Jackson方法 54
4.5.2 Warnier方法 56
4.6 概要设计文档与评审 57
第5章 详细设计 58
5.1 详细设计的任务与原则 58
5.1.1 详细设计的任务 58
5.1.2 详细设计的原则 58
5.2 详细设计的描述工具 62
5.2.1 程序流程图 62
5.2.2 N-S图 64
5.2.3 PAD图 65
5.2.4 HIP0图 66
5.2.5 过程设计语言PDL 69
5.2.6 详细设计方法的选择 70
5.3 详细设计规格说明与评审 71
第6章 程序编码 72
6.1 程序设计语言 72
6.1.1 程序设计语言的分类 72
6.1.2 程序设计语言的特点 73
6.1.3 程序设计语言的选择 75
6.2 编程风格 75
6.3 程序效率 78
6.4 程序复杂性度量 80
6.4.1 代码行度量法 80
6.4.2 McCabe度量法 80
6.4.3 Halstead的软件科学 81
6.5 结构化程序设计 84
第7章 面向对象的分析与设计方法 87
7.1 面向对象方法的基本概念和特征 87
7.1.1 面向对象方法的基本概念 87
7.1.2 面向对象方法的特征 90
7.2 面向对象开发模型 90
7.3 面向对象分析 91
7.4 面向对象设计 98
7.4.1 面向对象设计的概念 98
7.4.2 面向对象设计方法 102
7.4.3 面向对象设计程序构件及接口、细节设计 114
7.5 UML方法 116
7.5.1 UML的发展和特点 116
7.5.2 UML的表示法 117
7.5.3 UML的开发步骤 118
第8章 软件质量 119
8.1 软件质量的定义 119
8.1.1 软件质量的定义 119
8.1.2 软件的质量属性 120
8.2 影响软件质量的因素 120
8.3 软件质量保证策略 121
8.4 软件质量保证(SQA)活动 122
8.5 软件质量保证标准 124
8.6 软件评审 127
第9章 软件测试 130
9.1 软件测试的基本概念和原则 130
9.2 软件测试技术 133
9.2.1 黑盒测试 133
9.2.2 白盒测试 133
9.3 软件测试过程与策略 134
9.3.1 软件测试过程 134
9.3.2 软件测试策略 139
9.4 软件测试工具 139
9.5 面向对象的软件测试 141
9.6 软件测试计划与测试分析报告 143
第10章 软件维护 145
10.1 软件维护的定义、分类、特点 145
10.1.1 软件维护的定义 145
10.1.2 软件维护的分类 145
10.1.3 软件维护的特点 146
10.2 软件维护步骤及组织 147
10.2.1 软件维护步骤 147
10.2.2 软件维护组织 148
10.3 软件的可维护性及其副作用 149
10.3.1 软件的可维护性 149
10.3.2 软件维护的副作用 153
10.3.3 重新验证程序 154
10.4 逆向工程和再生工程 154
第11章 软件项目管理 157
11.1 软件项目的特点及软件管理的功能 157
11.2 软件项目的工作要求 158
11.3 确定软硬件资源 159
11.4 人员的计划与组织 160
11.4.1 软件开发组织机构 160
11.4.2 软件人员 163
11.5 成本估算及控制 165
11.6 进度计划 170
11.7 软件配置管理 174
11.8 软件保护 176
11.8.1 什么是知识产权 176
11.8.2 计算机软件著作权 176
11.8.3 计算机软件著作权的侵权和保护 176
第12章 软件工程标准与软件文档 178
12.1 软件工程标准 178
12.1.1 软件工程标准化的意义 178
12.1.2 软件工程标准的制定与推行 179
12.1.3 软件工程标准的层次 179
12.1.4 软件工程的国家标准 180
12.2 软件质量认证 182
12.3 软件文档 187
第13章 软件工程环境与发展 192
13.1 软件工程环境 192
13.1.1 软件工程环境概念 192
13.1.2 软件工程环境的结构 193
13.1.3 软件工程环境的应用技术 193
13.2 软件工程发展 195
13.2.1 软件集成化技术 195
13.2.2 软件智能化技术 196
参考文献 198