第1章 绪论 1
1.1 软件的发展 1
1.2 软件的基本概念 3
1.2.1 软件的特点 4
1.2.2 软件的分类 5
1.2.3 软件构件 6
1.2.4 软件应用的分类 6
1.2.5 软件技术的发展趋势 7
1.3 软件工程 9
1.3.1 软件危机 10
1.3.2 软件工程的定义及其研究内容 11
1.3.3 软件工程的作用 14
1.3.4 软件工程技术发展历程 15
1.3.5 软件工程的基本原理 16
1.4 软件可靠性的研究现状及软件测试的发展方向 18
1.4.1 软件可靠性 18
1.4.2 软件可靠性的研究 19
1.4.3 软件可靠性工程 20
1.4.4 软件测试技术的发展方向 21
1.5 软件开发工具简介 21
1.5.1 CASE工具的作用与分类 21
1.5.2 几种常用的CASE工具简介 23
第2章 软件生命周期与软件过程的研究现状 26
2.1 软件生命周期 26
2.1.1 软件生命周期的概念 26
2.1.2 生命周期法的工作流程 27
2.2 软件开发过程模型 28
2.2.1 瀑布模型 28
2.2.2 原型模型 30
2.2.3 快速应用开发模型 32
2.2.4 螺旋模型 33
2.2.5 增量模型 34
2.2.6 并发过程模型 35
2.2.7 基于构件的开发模型 35
2.2.8 形式化方法模型 36
2.2.9 第四代技术 36
2.3 UML代表着软件建模的发展趋势 37
2.3.1 UML的现状 37
2.3.2 UML概述 38
2.3.3 常用的UML图 40
2.4 统一过程 47
2.4.1 软件生命周期中的各个阶段 49
2.4.2 RUP的核心工作流 50
2.5 软件可行性研究 51
2.6 软件工程实践中的项目管理 53
2.6.1 项目管理概述 53
2.6.2 人员的组织与管理 54
2.6.3 项目计划 55
2.6.4 风险管理 55
2.6.5 软件质量保证 58
第3章 软件质量保证方法分析 60
3.1 开发环境的创建 60
3.2 软件生命过程的度量 64
3.2.1 软件开发过程的度量和开发过程改进方法 65
3.2.2 项目度量 66
3.3 软件测量 67
3.3.1 面向规模的度量 67
3.3.2 面向功能的度量 68
3.3.3 扩展的功能点度量 69
3.4 调和不同的度量方法 71
3.5 软件质量度量 72
3.5.1 影响质量因素的概述 72
3.5.2 测量质量 72
3.5.3 缺陷排除效率 73
3.5.4 在软件过程中集成度量 74
3.6 开发软件的估算 75
3.6.1 软件开发范围 75
3.6.2 软件开发所需的资源 75
3.6.3 开发软件项目的估算 77
3.7 估算模型 79
3.7.1 估算模型的结构 79
3.7.2 COCOMO模型 80
3.7.3 软件方程式 81
3.8 软件复审 82
3.8.1 软件缺陷对成本的影响 82
3.8.2 正式技术复审 83
3.9 软件质量的量化 85
3.9.1 量化的步骤 85
3.9.2 SQA计划 86
3.9.3 SQA计划的数据化 87
第4章 软件质量管理 89
4.1 软件质量保证 89
4.1.1 软件质量属性 89
4.1.2 软件质量保证体系与实施 90
4.2 软件能力成熟度模型(CMM) 93
4.2.1 CMM的产生 94
4.2.2 CMM内容简介 95
4.2.3 CMM的应用 103
4.3 个体软件过程 107
4.4 几种软件质量度量标准的分析与比较 110
第5章 软件测试的基本概念及测试技术探索 114
5.1 软件测试概念 114
5.1.1 软件缺陷典型案例分析 114
5.1.2 软件测试的基本概念 115
5.1.3 软件测试的目标和原则 116
5.2 传统测试方法分类及测试用例 119
5.2.1 测试方法分类 119
5.2.2 测试用例 121
5.3 黑盒测试及其测试用例设计 122
5.3.1 等价类划分法 122
5.3.2 边界值分析法 124
5.3.3 错误推测法 124
5.4 白盒测试及其测试用例设计 124
5.4.1 静态白盒分析——代码审查 125
5.4.2 动态白盒测试 126
5.5 软件测试策略 133
5.5.1 测试流程与组织 133
5.5.2 测试计划 136
5.5.3 单元测试 137
5.5.4 集成测试 141
5.5.5 确认测试 143
5.5.6 系统测试 145
5.5.7 测试分析报告 146
5.6 面向对象的基本概念 146
5.6.1 面向对象的软件开发 147
5.6.2 面向对象技术对传统测试的影响 148
5.7 面向对象的测试策略与步骤 149
5.7.1 测试策略与测试层次 149
5.7.2 测试步骤 150
5.8 当今软件测试前沿理论及常用的测试工具 153
5.8.1 当今软件测试前沿理论 153
5.8.2 几种常用的测试工具 155
第6章 蒙特卡罗方法及马尔可夫链 158
6.1 蒙特卡罗方法 158
6.1.1 蒙特卡罗方法概述 158
6.1.2 蒙特卡罗方法的基本思想 159
6.2 蒙特卡罗方法的基本概念 161
6.3 蒙特卡罗方法的应用 164
6.3.1 蒙特卡罗方法在仿真方面的应用 164
6.3.2 利用蒲丰投针实验计算圆周率π的值 164
6.4 马尔可夫链 167
6.4.1 马尔可夫链的基本思想 167
6.4.2 马尔可夫链的基本概念 168
6.5 马尔可夫链的应用 169
6.5.1 科学中的应用 169
6.5.2 人力资源中的应用 169
6.5.3 马尔可夫模型案例分析 170
第7章 蒙特卡罗方法和马尔可夫链模型在软件可靠性测试中的应用 176
7.1 马尔可夫链模型在软件可靠性测试结果分析中的应用 176
7.1.1 马尔可夫链的分析 176
7.1.2 基于马尔可夫链模型的测试结果评判准则 177
7.2 基于蒙特卡罗方法的测试模型 178
7.2.1 测试模型 178
7.2.2 测试策略 179
7.2.3 测试策略的应用 180
7.3 几种测试用例的生成方法研究 186
7.3.1 基于无理数产生的测试用例产生方法 186
7.3.2 基于数据仓库的数据挖掘方法 190
7.3.3 基于Gibbs抽样的测试用例生成技术研究 193
7.3.4 基于粗糙集的不完备信息系统统计评判填补方法 195
7.3.5 基于马尔可夫链的测试用例生成方法 199
7.4 几种软件系统可靠性中的优化问题研究 204
7.4.1 一种软件系统可靠性优化的方法 204
7.4.2 一种优化软件可靠性测试费用的模型 208
7.4.3 软件可靠性测试中不确定性问题的研究 211
7.4.4 基于贝叶斯方法的配置管理研究 214
第8章 测试策略问题的讨论 218
8.1 完全测试模型 218
8.2 单元测试 219
8.2.1 单元测试的问题 219
8.2.2 单元测试规程 221
8.3 集成测试 222
8.3.1 自顶向下集成 222
8.3.2 自底向上集成 223
8.3.3 回归测试 223
8.3.4 关于集成测试的讨论 224
8.3.5 集成测试文档 224
8.4 确认测试和系统测试 225
8.4.1 确认测试 225
8.4.2 系统测试 226
8.5 调试的技巧 228
8.5.1 调试过程 228
8.5.2 调试方法 229
8.6 面向对象测试 230
8.6.1 测试概念的延伸 231
8.6.2 OOA和OOD模型的测试 231
8.7 面向对象的测试策略 232
8.8 面向对象的测试用例设计 234
8.8.1 OO概念的测试用例设计的含义 234
8.8.2 传统测试用例设计方法的可用性 234
8.8.3 基于故障的测试 234
8.8.4 OO编程对测试的影响 235
8.8.5 测试用例和类层次 236
8.8.6 基于场景的测试设计 236
8.8.7 测试表层结构和深层结构 237
8.9 类级别的测试方法 238
8.10 维护与再生工程 240
8.10.1 软件维护 240
8.10.2 软件维护中的一些问题 242
8.10.3 再生工程 244
8.11 国内测试策略应用状况分析 246
8.11.1 开发者对代码质量管理的状况 246
8.11.2 开发者对软件测试的方法和工具 247
第9章 网络安全技术的背景与探索 251
9.1 网络安全概念 251
9.1.1 网络安全定义 251
9.1.2 网络安全体系结构 252
9.2 网络黑客攻击及预防 253
9.2.1 网络黑客 253
9.2.2 预防措施 254
9.3 防火墙技术 263
9.3.1 防火墙的基本知识 263
9.3.2 防火墙的配置结构 264
9.3.3 防火墙的基本类型 264
9.3.4 防火墙的基本技术 266
9.3.5 防火墙的安全策略 267
9.3.6 防火墙的局限性 268
9.4 虚拟专用网(VPN)技术 268
9.4.1 VPN的概念 269
9.4.2 VPN的基本技术 271
9.4.3 VPN的安全策略 271
9.5 网络入侵检测 272
9.5.1 入侵检测系统的功能 272
9.5.2 入侵检测系统的类型 273
9.5.3 入侵检测的主要技术 273
9.5.4 入侵检测系统的实现原理 274
9.6 一种混合入侵检测系统设计与研究 275
9.6.1 引言 275
9.6.2 系统的总体结构设计 276
9.6.3 系统的检测分析引擎 278
9.6.4 系统检测分析引擎的分组交换检测机制及系统性能分析 279
9.6.5 基于分组交换检测机制的Snort系统的改进 280
9.7 网络安全防范 280
9.7.1 安全防范策略制定原则 281
9.7.2 网络安全防范体系结构 282
9.7.3 风险管理 284
9.7.4 灾难恢复 285
9.8 客户/服务器系统的设计 286
9.8.1 客户/服务器系统的结构及特点 286
9.8.2 对客户/服务器系统的软件工程 291
9.8.3 Web客户/服务器模型 294
9.9 客户/服务器系统的测试问题 297
参考文献 300