第1章 软件工程概述 1
1.1 软件 1
1.1.1 软件的发展 2
1.1.2 软件的定义 3
1.1.3 软件的特点 3
1.1.4 软件的分类 5
1.2 软件工程的内容与方法 7
1.2.1 软件危机与软件工程的定义 7
1.2.2 软件工程的基本内容与目标 9
1.2.3 软件的基本开发方法 10
1.2.4 软件工程的基本原则 10
1.2.5 软件工具与环境 11
1.3 软件生存周期与软件开发模型 11
1.3.1 软件生存周期 11
1.3.2 软件开发模型 13
1.4 软件工程学的知识体系 21
小结 22
习题 22
第2章 软件项目分析 23
2.1 可行性研究的任务 23
2.2 可行性研究的步骤 24
2.3 可行性研究的要素 26
2.3.1 经济可行性 26
2.3.2 技术可行性 26
2.3.3 社会环境 27
2.4 系统流程图 27
2.5 成本-效益分析 29
2.5.1 成本估计 29
2.5.2 费用估算 30
2.5.3 度量效益的方法 31
小结 32
习题 32
第3章 软件需求工程 33
3.1 概述 34
3.1.1 软件需求分类 35
3.1.2 需求规格说明 36
3.1.3 需求工程概念 37
3.1.4 需求工程过程 37
3.2 需求获取方法 38
3.3 需求分析的任务与原则 40
3.3.1 需求分析的任务 40
3.3.2 需求分析的原则 41
3.4 需求建模方法 41
3.4.1 结构化需求建模方法 42
3.4.2 数据流图 44
3.4.3 数据字典 51
3.5 需求分析图形工具 55
3.5.1 层次方框图 56
3.5.2 Warnier图 56
3.5.3 IPO图 57
3.6 需求验证 57
3.6.1 目的与任务 57
3.6.2 内容与方法 58
3.6.3 需求评审 59
3.7 需求管理 60
3.7.1 需求管理的目标 60
3.7.2 需求管理的原则 60
3.7.3 需求开发的管理 61
3.7.4 需求管理活动 62
小结 64
习题 64
第4章 概要设计 65
4.1 软件体系结构 66
4.1.1 概述 66
4.1.2 系统构成 68
4.1.3 控制模型 71
4.1.4 模块化分解 74
4.1.5 领域相关的体系结构 76
4.2 概要设计任务与步骤 78
4.2.1 概要设计任务 78
4.2.2 概要设计过程 79
4.3 软件设计的基本概念 80
4.3.1 模块化与模块独立性 80
4.3.2 抽象 85
4.3.3 结构设计原则 87
4.3.4 软件复用 90
4.3.5 设计模式 93
4.4 面向数据流的设计方法 95
4.4.1 基本概念 95
4.4.2 系统结构图的组成 96
4.4.3 变换分析 98
4.4.4 事务分析 102
4.4.5 设计优化 103
4.5 面向数据结构的分析设计方法 104
4.5.1 Jackson系统开发方法 104
4.5.2 Warnier方法 113
4.6 概要设计文档评审 114
小结 115
习题 115
第5章 详细设计 116
5.1 详细设计的任务与原则 117
5.1.1 详细设计的任务 117
5.1.2 详细设计的原则 117
5.2 详细设计工具 118
5.2.1 程序流程图 118
5.2.2 N-S图 119
5.2.3 PAD图 121
5.2.4 PDL 122
5.2.5 HIPO图 124
5.2.6 详细设计工具的选择 125
5.3 详细设计规格说明与复审 126
5.3.1 详细设计说明书 126
5.3.2 设计复审 127
小结 127
习题 128
第6章 面向对象设计 129
6.1 面向对象方法 130
6.1.1 面向对象方法概述 130
6.1.2 面向对象软件工程 131
6.1.3 面向对象的基本概念和特征 135
6.2 面向对象分析 142
6.2.1 面向对象分析过程与原则 142
6.2.2 确定对象与类 146
6.2.3 确定属性 149
6.2.4 定义服务 149
6.2.5 对象间通信 153
6.3 面向对象设计的概念和方法 158
6.3.1 面向对象设计的概念 159
6.3.2 面向对象设计的方法 160
小结 163
习题 163
第7章 用户界面设计 164
7.1 用户界面的主要特征 165
7.1.1 用户界面的质量特征 165
7.1.2 用户界面的图形特征 165
7.1.3 用户界面的优点 166
7.2 设计原则 166
7.3 用户交互 168
7.3.1 用户交互类型 168
7.3.2 交互类型的比较 168
7.4 信息表示 169
7.4.1 用户界面的信息表示方法 169
7.4.2 用户界面的信息表示形式 170
7.5 帮助系统 171
7.6 界面设计 173
7.6.1 数据输入界面设计 173
7.6.2 数据显示界面设计 174
7.6.3 控制界面设计 174
7.7 界面设计评价 174
7.7.1 界面设计评价指标 174
7.7.2 界面设计评价方法 175
小结 176
习题 176
第8章 编码 177
8.1 程序设计语言 178
8.1.1 程序设计语言的分类 178
8.1.2 程序设计语言的特点 180
8.1.3 程序设计语言的选择 182
8.2 编码风格 184
8.2.1 源程序文档化 184
8.2.2 数据说明 186
8.2.3 语句结构 186
8.2.4 输入/输出 189
8.3 程序效率 189
8.3.1 程序效率准则 190
8.3.2 算法对效率的影响 190
8.3.3 影响存储器效率的因素 190
8.3.4 影响输入/输出效率的因素 190
8.4 编程安全 191
8.4.1 冗余程序设计 191
8.4.2 防错程序设计 192
8.5 面向对象程序设计步骤 193
8.6 编码优化 193
8.6.1 优化的内容与原则 193
8.6.2 程序结构优化 194
8.6.3 程序代码优化 195
小结 195
习题 195
第9章 软件质量与软件测试 196
9.1 软件质量 197
9.1.1 软件质量定义 197
9.1.2 影响软件质量的因素 197
9.1.3 软件质量保证策略 198
9.1.4 软件质量保证活动 199
9.1.5 软件质量保证标准 200
9.2 软件评审 201
9.2.1 设计质量评审内容 202
9.2.2 程序质量评审内容 206
9.3 结构化程序测试 208
9.3.1 软件测试目的 209
9.3.2 软件测试原则 209
9.3.3 软件测试对象 210
9.3.4 软件测试过程 210
9.3.5 软件测试技术 211
9.3.6 设计测试方案 212
9.3.7 软件测试步骤 214
9.3.8 软件纠错技术 219
9.4 面向对象软件测试 220
9.4.1 面向对象分析和设计模型测试 220
9.4.2 面向对象测试策略 222
9.4.3 面向对象软件测试集设计 223
9.5 测试计划与测试分析报告 225
小结 227
习题 227
第10章 软件交付与维护 228
10.1 软件发布与部署 228
10.1.1 软件产品发布 229
10.1.2 软件产品实施 229
10.2 软件演化的特征 230
10.2.1 大型程序演化的动态特征 230
10.2.2 软件体系结构的进化 231
10.3 软件维护 231
10.3.1 软件维护分类与特点 232
10.3.2 软件维护步骤 234
10.3.3 软件的可维护性 237
10.3.4 软件维护的副作用 238
10.4 逆向工程和再生工程 239
小结 240
习题 240
第11章 项目计划与管理 242
11.1 软件项目特点及软件管理功能 243
11.1.1 软件项目的特点 243
11.1.2 软件管理的功能 243
11.1.3 软件项目的工作范围 244
11.2 软件项目的资源 244
11.2.1 人力资源 244
11.2.2 硬件资源 245
11.2.3 软件资源 245
11.3 人员的计划和组织 246
11.4 成本估计及控制 247
11.4.1 软件开发成本估计方法 247
11.4.2 专家估算法 247
11.4.3 成本估算模型 248
11.5 进度计划 251
11.5.1 各阶段工作量的分配 251
11.5.2 制定开发进度计划 251
11.6 软件配置管理 252
11.6.1 基线 252
11.6.2 软件配置项 253
11.6.3 软件配置管理过程 255
11.7 软件管理方案 258
11.8 软件能力成熟度模型 259
11.8.1 软件过程评估的必要性 259
11.8.2 能力成熟度模型的主要用途 260
11.8.3 能力成熟度模型中的概念 261
11.8.4 软件能力成熟度的等级 263
11.8.5 能力成熟度模型的内部结构 266
11.8.6 能力成熟度模型的应用 268
小结 270
习题 270
第12章 软件建模及其工具 271
12.1 模型概述 271
12.1.1 模型的定义 271
12.1.2 模型的分类 272
12.2 软件建模中最常用的模型 272
12.2.1 业务模型 272
12.2.2 功能模型 272
12.2.3 数据模型 273
12.3 需求建模 273
12.4 统一建模语言(UML) 274
12.4.1 UML概述 274
12.4.2 UML表示法 280
12.4.3 UML软件开发过程概述 291
小结 294
习题 294
第13章 软件开发工具与环境 295
13.1 软件开发工具概述 295
13.2 软件开发工具的功能 296
13.3 软件开发工具的特性 297
13.4 软件开发工具的分类 298
13.5 软件开发环境 300
13.6 常用开发环境 301
13.6.1 Windows开发环境 301
13.6.2 Linux开发环境 305
13.6.3 UNIX开发环境 309
13.7 软件开发工具的发展 313
13.8 CASE技术 314
小结 316
习题 316
附录A 可行性研究报告规范 317
附录B 项目开发计划规范 322
附录C 需求规格说明书规范 325
附录D 概要设计说明书规范 330
附录E 详细设计说明书规范 333
附录F 测试计划 336
附录G 测试分析报告 339
附录H 项目开发总结报告规范 341
参考文献 343