第1章 软件工程概述 1
1.1 软件 1
1.1.1 软件的定义、特点、种类和软件的发展 1
1.1.2 软件危机 6
1.2 软件工程的概念 7
1.2.1 软件工程的定义 7
1.2.2 软件工程的目标和原则 8
1.3 软件生存周期与软件开发模型 9
1.3.1 软件生存周期 9
1.3.2 软件开发模型 10
1.4 软件开发工具(CASE)与软件开发环境 16
1.4.1 软件开发工具(CASE) 16
1.4.2 软件开发环境 18
小结 19
习题 19
第2章 可行性研究 20
2.1 可行性研究的任务 20
2.2 可行性研究的方法步骤 21
2.3 成本/效益分析 23
2.3.1 成本估算技术 23
2.3.2 几种度量效益的方法 27
2.4 系统规格说明与评审 28
2.4.1 系统规格说明 28
2.4.2 系统定义的评审 29
习题 30
小结 30
第3章 需求分析 31
3.1 需求分析的任务、过程与原则 31
3.1.1 需求分析的任务 31
3.1.2 需求分析的过程 31
3.1.3 需求分析的原则 32
3.2 需求分析的方法 32
3.2.1 结构化分析(SA)方法 32
3.2.2 原型化方法 36
3.2.3 系统动态分析 37
3.2.4 Jackson系统开发方法、Warnier方法 38
3.3.1 需求规格说明书 40
3.3 需求规格说明与评审 40
3.3.2 需求评审 41
小结 42
习题 42
第4章 概要设计 44
4.1 概要设计的任务与步骤 44
4.1.1 概要设计的任务 44
4.1.2 概要设计的步骤 44
4.2 软件设计的基础 45
4.2.1 模块化 45
4.2.2 模块独立性 46
4.2.3 软件结构设计 47
4.3.1 结构化设计(SD)方法 49
4.3 概要设计的方法 49
4.3.2 面向数据结构的设计方法 52
4.3.3 用户界面设计 55
4.4 概要设计文档与评审 57
4.4.1 概要设计阶段的文档 57
4.4.2 概要设计阶段的评审 57
小结 57
习题 57
第5章 详细设计 59
5.1 详细设计的任务与原则 59
5.1.1 详细设计的任务 59
5.1.2 详细设计的原则 60
5.2.1 结构化程序设计技术 61
5.2 详细设计的方法 61
5.2.2 详细设计基础 65
5.2.3 详细设计方法的选择 73
5.3 数据设计 73
5.3.1 数据设计原则 73
5.3.2 数据结构设计 74
5.3.3 数据库设计 75
5.4 详细设计规格说明与评审 76
5.4.1 详细设计规格说明 76
5.4.2 详细设计规格说明评审 78
小结 78
习题 79
6.1.2 对象(Object) 80
6.1.1 面向对象(Object Oriented)技术 80
第6章 面向对象技术 80
6.1 面向对象的基本概念 80
6.1.3 类(Class)和实例(Instance) 81
6.1.4 继承(Inheritance) 81
6.1.5 多态性(Polymorphism) 82
6.1.6 消息(Message) 82
6.1.7 方法(Method) 82
6.2 面向对象的分析 82
6.2.1 面向对象分析(OOA)的特点 83
6.2.2 面向对象分析的基本任务与分析过程 83
6.3 面向对象的设计 89
6.3.2 面向对象设计的准则 90
6.3.1 面向对象设计(OOD)的概念 90
6.3.3 面向对象设计的任务 91
6.4 面向对象设计方法 93
6.4.1 Booch方法 93
6.4.2 Coad/Yourdon方法 95
6.4.3 对象模型技术OMT、OOSE方法 97
6.5 UML开发方法 99
6.5.1 UML的发展与特点 99
6.5.2 UML的表示法 100
6.5.3 UML的开发方法 108
6.6 面向对象实例分析与设计 109
6.6.1 建立用例 110
6.6.2 系统分析 111
6.6.3 系统设计 112
小结 113
习题 114
第7章 程序设计语言和编码 115
7.1 程序设计语言 115
7.1.1 程序设计语言的分类 115
7.1.2 程序设计语言的特性 117
7.1.3 程序设计语言的选择 119
7.2 程序设计基础 120
7.2.1 结构化程序设计 120
7.2.2 程序设计风格 121
7.2.3 程序效率 123
7.3 程序复杂性度量 124
7.3.1 代码行度量法 124
7.3.2 McCabe度量法 124
7.3.3 Halstead的软件科学 125
7.4 编程安全 127
7.4.1 保护性编程 127
7.4.2 冗余编程 128
小结 128
习题 130
8.1 软件测试的基本概念 131
8.1.1 软件测试的目的和重要性 131
第8章 软件测试 131
8.1.2 软件测试的特点和原则 132
8.1.3 软件测试的基本步骤 133
8.1.4 静态分析与动态测试 134
8.2 软件测试的基本方法 135
8.2.1 白盒法测试 136
8.2.2 黑盒法测试 139
8.3 软件测试的策略 145
8.3.1 单元测试 145
8.3.2 组装测试 147
8.3.3 确认测试 151
8.3.4 系统测试 152
8.4 排错技术 153
8.4.1 排错的原则 154
8.4.2 排错方法 155
8.5 面向对象的测试 157
8.5.1 面向对象的单元测试 157
8.5.2 面向对象的集成测试 158
8.5.3 面向对象的确认测试 158
8.6 软件测试计划与测试分析报告 158
小结 161
习题 161
第9章 软件维护 162
9.1 软件维护的定义、分类、特点 162
9.1.1 软件维护的定义 162
9.1.2 软件维护的分类 163
9.1.3 软件维护的特点 164
9.2 软件维护过程及组织 165
9.2.1 软件维护过程 165
9.2.2 软件维护组织 166
9.3 软件的可维护性 167
9.3.1 软件的可维护性概念 167
9.3.2 影响可维护性的因素 168
9.3.3 提高软件可维护性的方法 171
9.3.4 软件维护的副作用 174
9.4 逆向工程和再生工程 175
9.4.1 逆向工程 176
9.4.2 再生工程 177
小结 180
习题 180
第10章 软件质量与质量保证 181
10.1 软件质量的概念 181
10.2 影响软件质量的因素 182
10.2.1 McCall的质量因素 182
10.2.2 ISO 9126质量因素 184
10.3 软件质量度量 185
10.3.1 软件质量度量方法 185
10.3.2 软件质量评价 186
10.4 软件质量保证策略和活动 187
10.4.1 软件质量保证策略 187
10.4.2 软件质量保证活动 188
10.5 软件质量保证标准 189
10.6 软件技术评审 191
小结 193
习题 193
第11章 项目计划与管理 195
11.1 软件项目管理过程 195
11.2 软件度量 196
11.2.1 面向规模的度量 197
11.2.2 面向功能的度量 198
11.3 软件项目组织与计划 200
11.3.1 软件项目组织 200
11.3.2 软件项目计划 202
11.4.1 项目成本估算 203
11.4 项目成本估算与开发成本估算 203
11.4.2 开发成本估算 204
11.5 进度计划与风险分析 206
11.5.1 进度计划 207
11.5.2 险分析 210
11.6 软件过程与能力成熟度模型(CMM) 214
11.6.1 CMM的基本概念 214
11.6.2 能力成熟度模型(CMM) 214
11.6.3 能力成熟度模型(CMM)应用 216
小结 216
习题 217
参考文献 219