第1章 绪论 1
1.1 软件 1
1.1.1 软件的概念 1
1.1.2 软件的特征 2
1.1.3 软件的分类 4
1.2 软件工程概述 5
1.2.1 软件危机 5
1.2.2 软件工程的概念 5
1.2.3 软件工程的基本内容 6
1.2.4 软件工程学科的形成和发展 10
1.2.5 软件工程学科特点 13
本章小结 14
习题 15
第2章 软件过程 17
2.1 软件生存周期 17
2.1.1 软件生存周期 17
2.1.2 软件生存周期模型 18
2.2 软件过程 21
2.2.1 概述 21
2.2.2 软件过程 21
2.3 统一软件开发过程RUP 24
本章小结 26
习题 26
第3章 软件工程方法 28
3.1 概述 28
3.1.1 软件工程方法的含义 28
3.1.2 软件工程方法的分类 28
3.1.3 软件工程的基础方法 29
3.1.4 软件工程的一般方法 32
3.2 面向功能方法 32
3.2.1 结构化方法的特征 32
3.2.2 结构化分析 34
3.2.3 结构化设计 38
3.3 面向数据方法 42
3.3.1 概述 42
3.3.2 建模阶段 43
3.3.3 设计阶段 45
3.3.4 实现阶段 46
3.4 面向对象方法 47
3.4.1 概述 47
3.4.2 面向对象方法的基本概念 48
本章小结 53
习题 54
第4章 软件模型 55
4.1 模型 55
4.2 软件模型 56
4.2.1 软件模型的概念 56
4.2.2 软件建模过程 57
4.2.3 软件建模语言 57
4.3 统一建模语言UML 58
4.3.1 概述 58
4.3.2 用例图 59
4.3.3 类图与对象图 61
4.3.4 交互图 62
4.3.5 状态图 64
4.3.6 活动图 65
4.3.7 构件图 65
4.3.8 配置图 66
4.3.9 包图 66
本章小结 67
习题 67
第5章 软件策划 69
5.1 问题定义 69
5.1.1 问题提出 69
5.1.2 初步调查 70
5.1.3 定义问题 70
5.2 可行性分析 72
5.2.1 可行性分析的意义 72
5.2.2 可行性分析的内容 72
5.3 软件规划 74
5.3.1 概述 74
5.3.2 软件规划的内容 75
5.4 软件开发计划 76
5.4.1 概述 76
5.4.2 软件开发计划的内容 76
本章小结 78
习题 79
第6章 软件分析 81
6.1 领域分析 81
6.1.1 领域分析的意义和作用 81
6.1.2 事务型软件领域分析的一般工作 82
6.1.3 业务调查 83
6.1.4 组织目标分析 83
6.1.5 组织机构分析 84
6.1.6 组织职能分析 85
6.1.7 业务流程分析 85
6.1.8 组织实体分析 86
6.2 需求分析 88
6.2.1 概述 88
6.2.2 需求获取 89
6.2.3 需求分析 89
6.2.4 需求描述 94
6.2.5 需求验证 95
本章小结 96
习题 97
第7章 软件设计 98
7.1 软件设计的任务和工作 98
7.1.1 平台设计 98
7.1.2 软件体系结构设计 99
7.1.3 详细设计 99
7.1.4 界面设计 99
7.2 软件平台设计 99
7.2.1 网络 99
7.2.2 物理设备 101
7.2.3 操作系统 102
7.2.4 支撑软件 102
7.2.5 CASE平台 102
7.3 软件体系结构设计 103
7.3.1 软件系统拓扑结构设计 103
7.3.2 软件体系结构模式设计 104
7.3.3 软件结构设计 107
7.4 详细设计 112
7.4.1 业务对象设计 112
7.4.2 功能逻辑设计 116
7.5 界面设计 119
7.5.1 概述 119
7.5.2 输入设计 120
7.5.3 屏幕界面设计 121
本章小结 127
习题 127
第8章 编程与实现 129
8.1 程序设计 129
8.1.1 程序设计语言 129
8.1.2 程序设计方法 131
8.1.3 程序设计风格 131
8.1.4 面向对象程序设计 135
8.2 系统实现 136
8.2.1 代码实现 137
8.2.2 系统集成 140
8.2.3 软件部署与发布 140
本章小结 141
习题 141
第9章 软件测试 143
9.1 概述 143
9.1.1 测试的概念 143
9.1.2 测试的过程 144
9.1.3 测试的原则 145
9.2 静态测试 145
9.2.1 静态测试的概念 145
9.2.2 静态测试方法 146
9.3 动态测试 146
9.3.1 白盒法与黑盒法的区别与联系 147
9.3.2 白盒法 147
9.3.3 黑盒法 150
9.4 单元测试 151
9.4.1 概述 151
9.4.2 单元测试的策略 152
9.4.3 面向对象的单元测试 153
9.5 集成测试 154
9.5.1 集成测试概述 154
9.5.2 集成测试的策略 154
9.5.3 面向对象的集成测试 155
9.6 系统测试 156
9.7 验收测试 157
本章小结 157
习题 157
第10章 软件维护 159
10.1 概述 159
10.2 软件维护的难点和软件的可维护性 160
10.2.1 软件维护的难点 160
10.2.2 软件的可维护性 161
10.3 软件维护的工作 162
10.3.1 收取故障信息 162
10.3.2 排查方法 162
10.3.3 修改程序 163
10.3.4 维护管理 163
本章小结 163
习题 163
第11章 软件管理 165
11.1 软件质量管理 165
11.1.1 软件质量管理概述 165
11.1.2 软件质量评价 167
11.2 软件文档管理 169
11.2.1 软件文档的分类 170
11.2.2 软件文档的编写 171
11.3 软件项目管理 172
11.3.1 软件项目管理概述 172
11.3.2 软件开发成本估计 173
11.3.3 软件开发进度安排 174
本章小结 176
习题 177
第12章 软件工程新技术 178
12.1 形式化方法 178
12.1.1 形式化方法的引入 178
12.1.2 形式化规格说明语言 179
12.1.3 形式化方法的十条戒律 180
12.2 净室软件工程 181
12.2.1 净室方法的引入 181
12.2.2 净室过程模型 181
12.2.3 净室软件工程的特点 183
12.3 基于构件的软件工程 183
12.3.1 基本概念 183
12.3.2 基于构件的软件工程 184
12.3.3 构件库的建立与使用 185
12.4 软件复用与再工程 185
12.4.1 基本概念 186
12.4.2 业务过程再工程 186
12.4.3 软件再工程 187
12.5 敏捷软件过程 189
12.5.1 基本概念 189
12.5.2 敏捷软件开发方法的指导原则 189
12.5.3 典型的敏捷过程模型 190
本章小结 192
习题 192
参考文献 193