第1章 软件工程概述 1
1.1 软件工程的产生 1
1.1.1 计算机软件及其特点 1
1.1.2 软件危机 3
1.1.3 软件工程的定义 4
1.2 软件工程的基本原理 5
1.2.1 软件工程的研究对象 5
1.2.2 软件工程的基本原理 6
1.3 软件的生存期及开发模型 7
1.3.1 软件的生存期 7
1.3.2 常用的软件开发模型 9
1.4 本章小结 12
习题1 13
第2章 可行性研究 14
2.1 问题定义 14
2.1.1 问题定义的基本任务 14
2.1.2 问题定义报告 14
2.2 可行性研究 15
2.2.1 可行性研究的内容及过程 15
2.2.2 可行性研究报告 17
2.3 需求定义 18
2.3.1 需求获取的内容及方法 18
2.3.2 需求规格说明的内容 20
2.3.3 需求规格说明的评审 21
2.3.4 需求规格说明书 22
2.4 需求定义示例 23
2.5 本章小结 28
习题2 28
第3章 需求分析 29
3.1 需求分析的目标与原则 29
3.1.1 需求分析的目标 29
3.1.2 需求分析的原则 30
3.2 需求分析的过程及方法 31
3.2.1 需求分析的过程 31
3.2.2 需求分析方法 32
3.3 需求分析的工具 36
3.3.1 SADT 37
3.3.2 PSL/PSA 38
3.4 传统的软件建模 39
3.4.1 软件建模 39
3.4.2 数据模型的建立 40
3.4.3 功能模型、行为模型的建立及数据字典 41
3.5 用例建模 44
3.5.1 用例图 44
3.5.2 参与者及用例的描述 47
3.5.3 用例建模过程 49
3.6 面向对象建模 50
3.6.1 面向对象基础 51
3.6.2 面向对象分析模型 56
3.6.3 对象模型的建立 57
3.6.4 行为模型的建立 59
3.6.5 功能模型的建立 63
3.7 统一建模语言UML 65
3.7.1 UML的基本实体 66
3.7.2 UML的目标及范畴 67
3.7.3 UML图的使用实例 67
3.8 需求分析示例 71
3.8.1 结构化分析示例 71
3.8.2 面向对象分析示例 74
3.9 本章小结 78
习题3 79
第4章 系统设计 80
4.1 系统设计的任务和过程 80
4.1.1 系统设计的任务 80
4.1.2 系统设计的过程 80
4.2 系统设计的基本原则 81
4.2.1 软件设计 81
4.2.2 模块设计 84
4.2.3 结构设计 86
4.3 面向数据流图的设计方法 86
4.3.1 典型的系统结构图 86
4.3.2 变换分析 88
4.3.3 事务分析 90
4.3.4 软件模块结构的改进 91
4.4 面向对象的设计方法 91
4.4.1 面向对象分析模型 91
4.4.2 面向对象软件设计模式描述 91
4.4.3 面向对象软件设计模式的分类 92
4.5 模型-视图-控制器框架 93
4.5.1 MVC模式 93
4.5.2 MVC中的模型、视图和控制类 93
4.5.3 MVC的实现 94
4.6 系统设计说明书 95
4.7 类设计示例 96
4.7.1 类设计的目标 97
4.7.2 类设计的方法 97
4.7.3 通过复用设计类 98
4.7.4 计数器类设计的实例 98
4.9 本章小结 99
习题4 99
第5章 详细设计 101
5.1 详细设计的任务及过程 101
5.1.1 详细设计的任务 101
5.1.2 详细设计的过程 101
5.1.3 详细设计的原则 101
5.1.4 详细设计工具 102
5.2 结构化设计方法 106
5.2.1 基于数据流的结构化设计方法 107
5.2.2 面向数据结构的结构化设计方法 107
5.3 Jackson程序设计方法 107
5.3.1 Jackson方法的基本思想 108
5.3.2 Jackson方法的设计技术及实例 109
5.4 Warnier程序设计方法 115
5.4.1 Warnier方法的基本思想 115
5.4.2 Warnier方法的设计技术及实例 115
5.5 基于组件的设计方法 118
5.5.1 基于组件的基本思想 119
5.5.2 基于组件的设计技术及实例 120
5.5.3 应用示例 126
5.6 本章小结 126
习题5 127
第6章 程序编码 128
6.1 程序设计语言 128
6.1.1 程序设计语言的发展及分类 128
6.1.2 程序设计语言选择 130
6.2 程序设计风格 131
6.2.1 源程序文档化 131
6.2.2 数据说明 132
6.2.3 表达式和语句 132
6.2.4 输入/输出 132
6.3 程序设计方法 133
6.3.1 结构化程序设计方法 133
6.3.2 面向对象的程序设计方法 135
6.4 程序的复杂性及度量 137
6.4.1 程序的复杂性 137
6.4.2 McCabe度量法 137
6.4.3 Halstead方法 138
6.5 本章小结 139
习题6 139
第7章 软件测试 140
7.1 软件测试的目标及准则 140
7.1.1 软件测试的目标 140
7.1.2 软件测试准则 141
7.2 软件测试的基本方法 142
7.2.1 静态测试和动态测试 142
7.2.2 黑盒测试和白盒测试 142
7.2.3 ALAC测试 143
7.3 软件测试过程 144
7.3.1 单元测试 144
7.3.2 集成测试 144
7.3.3 确认测试 145
7.3.4 系统测试 146
7.4 软件测试的环境和文档 147
7.4.1 软件测试角色 147
7.4.2 软件测试环境 148
7.4.3 软件测试设计说明 149
7.5 面向对象软件测试 150
7.5.1 面向对象测试策略 151
7.5.2 面向对象的单元测试 151
7.5.3 面向对象的集成测试 151
7.5.4 面向对象的系统测试 152
7.6 软件测试示例 152
7.6.1 测试用例 152
7.6.2 设计测试方案 154
7.6.3 实用策略 159
7.7 本章小结 159
习题7 160
第8章 软件维护 161
8.1 软件维护基本概念 161
8.1.1 软件维护的定义 161
8.1.2 软件维护的分类 162
8.2 软件维护的特点及过程 163
8.2.1 影响软件维护的因素 163
8.2.2 软件维护的标准化 164
8.2.3 维护的特点 165
8.2.4 软件维护过程 165
8.3 软件可维护性 167
8.3.1 可维护性的定义 167
8.3.2 可维护性的度量及评估 168
8.3.3 提高可维护性的方法 170
8.4 本章小结 171
习题8 172
第9章 软件开发实例 173
9.1 系统立项背景 173
9.2 需求分析文档 174
9.3 系统概要设计 186
9.3.1 开发运行环境 186
9.3.2 系统框架 186
9.3.3 系统设计文档 187
9.4 本章小结 202
习题9 202
第10章 软件项目管理 203
10.1 软件项目管理概述 203
10.2 项目计划 204
10.2.1 成本估计 205
10.2.2 相关项目计划 211
10.3 软件质量与配置管理 213
10.3.1 软件质量基础 213
10.3.2 软件质量度量 215
10.3.3 软件配置管理 219
10.4 软件工程标准 222
10.4.1 软件工程标准化及其意义 222
10.4.2 软件工程标准的类型与层次 223
10.4.3 软件文档标准化 225
10.5 本章小结 229
习题10 229
第11章 面向服务的软件工程 230
11.1 面向服务的概念 230
11.2 面向服务的体系结构 231
11.3 面向服务的计算 232
11.4 面向服务的软件工程示例 234
11.4.1 IBM出口认证服务示例 235
11.4.2 企业应用集成示例 237
11.5 本章小结 238
习题11 239
参考文献 240