第1章 软件工程概论 1
1.1 软件技术概况 1
1.1.1 软件简介 1
1.1.2 软件的发展历程 3
1.2 软件工程简介 4
1.2.1 软件工程的产生 4
1.2.2 软件工程的基本内容和目标 5
1.2.3 软件工程的基本原理 6
1.2.4 软件工程的原则 7
1.2.5 软件生命周期模型 8
1.2.6 软件工程工具和开发集成环境 12
习题 14
第2章 软件系统可行性研究与需求分析 15
2.1 软件系统可行性研究 15
2.1.1 可行性研究的任务 15
2.1.2 可行性研究的步骤 16
2.2 软件需求分析 18
2.2.1 软件需求分析的任务 18
2.2.2 软件需求分析法 20
2.2.3 软件需求规格说明书 26
2.2.4 需求分析的复审 28
习题 29
第3章 软件设计 30
3.1 软件结构设计 30
3.1.1 软件设计的基本概念 30
3.1.2 面向数据流的设计过程 35
3.1.3 变换分析与事务分析 36
3.1.4 数据库设计 41
3.1.5 设计优化 48
3.2 软件详细设计 50
3.2.1 软件详细设计的概念 50
3.2.2 详细设计工具 51
3.2.3 Warnier设计法 56
3.2.4 人机界面设计 58
习题 62
第4章 编码与程序设计语言 63
4.1 编码风格及其特点 63
4.1.1 源程序文档化 63
4.1.2 数据说明 64
4.1.3 语句结构 65
4.1.4 输入/输出 66
4.2 程序设计语言 67
4.2.1 程序设计语言的特点 67
4.2.2 程序设计语言的分类 68
4.2.3 程序设计语言的选择 70
4.3 编码工具与环境 72
习题 73
第5章 软件的技术度量及质量保证 74
5.1 软件度量的概念 74
5.1.1 软件度量的概念 74
5.1.2 软件度量的目标 75
5.1.3 软件度量研究的范畴 76
5.2 软件技术度量框架 76
5.3 面向对象度量 78
5.3.1 传统度量方法在OO系统中的应用 79
5.3.2 CK度量套件 79
5.4 软件质量的概念及其度量模型 81
5.4.1 软件质量的概念 81
5.4.2 软件的质量因素 82
5.4.3 软件质量的度量模型 84
5.5 软件的可靠性 85
5.5.1 软件可靠性与硬件可靠性的区别 85
5.5.2 影响软件可靠性的因素 85
5.5.3 软件生存期各阶段的可靠性保证 86
5.5.4 提高软件可靠性的方法和技术 90
5.6 质量体系的建立和实施 94
5.6.1 建立软件质量体系的必要性 94
5.6.2 软件质量体系的建立和实施 96
5.7 软件能力成熟度模型(CMM) 99
习题 105
第6章 软件测试 106
6.1 软件测试的基本概念 106
6.1.1 软件测试的目标与原则 106
6.1.2 软件测试的方法 109
6.1.3 软件测试的信息流 116
6.2 软件测试过程 117
6.3 设计测试方案 119
6.3.1 设计测试用例的原则 120
6.3.2 设计测试用例的方法 121
6.4 软件调试技术 122
6.5 软件测试实例 123
6.5.1 实例引言 123
6.5.2 总体设计 123
6.5.3 测试计划 124
6.5.4 评价准则 128
习题 129
第7章 软件维护 130
7.1 软件维护概述 130
7.2 软件维护的过程 133
7.3 软件维护的副作用 134
7.4 版本管理 135
7.5 软件维护总结 136
习题 136
第8章 软件项目管理 137
8.1 软件项目管理概述 137
8.1.1 项目工程类过程 137
8.1.2 项目管理类过程 139
8.1.3 项目支持类过程 140
8.2 启动与计划过程管理 141
8.2.1 项目的组织落实与人员落实 141
8.2.2 项目估算 142
8.2.3 项目计划 144
8.3 需求过程管理 146
8.3.1 需求总体规划 146
8.3.2 需求调研和分析 146
8.3.3 需求说明规格书和需求评审 147
8.3.4 需求变更管理 147
8.3.5 需求阶段的质量、进度跟踪和配置管理 148
8.4 设计过程管理 148
8.4.1 编制系统设计计划 148
8.4.2 系统架构设计 148
8.4.3 系统详细设计 149
8.4.4 设计方案的评审 149
8.4.5 设计测试用例 149
8.4.6 设计阶段的质量、进度跟踪和配置管理 150
8.5 开发过程管理 150
8.5.1 编制开发计划 150
8.5.2 开发前的准备 150
8.5.3 编程和单元测试 151
8.5.4 开发阶段的质量、进度跟踪和配置管理 151
8.6 测试与发布过程管理 151
8.6.1 测试过程 152
8.6.2 测试阶段的质量、进度跟踪和配置管理 152
8.6.3 软件发布 152
8.7 试运行过程管理 152
8.7.1 软件试运行 152
8.7.2 试运行阶段的质量、进度跟踪和配置管理 153
8.8 验收过程管理 153
习题 153
第9章 新型软件工程技术 154
9.1 面向对象的软件开发技术 154
9.1.1 面向对象方法概述 154
9.1.2 面向对象的分析方法 155
9.1.3 面向对象的设计方法 161
9.1.4 面向对象的程序设计方法 167
9.1.5 UML概述 169
9.1.6 面向对象软件开发技术实例 174
9.2 软件复用和构件技术 177
9.2.1 软件复用和构件技术概述 177
9.2.2 面向对象方法与软件复用的关系 183
9.3 软件接口技术 185
9.3.1 软件接口的作用 185
9.3.2 软件接口的调用方法 187
9.4 软件智能化技术 188
9.4.1 软件智能化现状 188
9.4.2 软件智能化应用 192
9.4.3 开发基于知识的软件智能化技术 195
习题 195
第10章 软件工程文件 196
10.1 软件工程文件的编制与管理 196
10.1.1 软件工程文件编制的目的 196
10.1.2 软件工程文件种类及使用者 196
10.1.3 软件工程文件的编制 197
10.1.4 软件工程文件编制的管理工作 201
10.2 软件工程文件的内容 203
10.2.1 可行性研究报告 203
10.2.2 项目开发计划书 205
10.2.3 软件需求说明书 206
10.2.4 数据要求说明书 207
10.2.5 概要设计说明书 209
10.2.6 详细设计说明书 210
10.2.7 数据库设计说明书 211
10.2.8 用户手册 212
10.2.9 操作手册 215
10.2.10 模块开发卷宗 216
10.2.11 测试计划 218
10.2.12 测试分析报告 219
10.2.13 开发进度月报 220
10.2.14 项目开发总结报告 220
习题 221
附录A 系统需求规格说明书样式 222
附录B 软件架构文档样式 225
附录C 各阶段实施计划样式 228
附录D 缺陷跟踪表样式 229
参考文献 230