第1章 绪论 1
1.1软件可靠性重要性 1
1.2软件可靠性发展历程 4
1.3软件可靠性基本概念 6
1.3.1软件可靠性定义 6
1.3.2软件失效机理 7
1.3.3软件失效的随机性 8
1.4获得可靠软件的途径 8
1.4.1软件缺陷预防 8
1.4.2软件缺陷检测与消除 10
1.4.3软件缺陷遏制 12
1.5软件可靠性工程及其过程 12
1.5.1软件可靠性工程内涵 12
1.5.2软件可靠性工程模型 13
1.5.3软件可靠性工程过程 15
1.6一些相关概念 20
1.6.1软件质量与软件可靠性 20
1.6.2软件工程、软件质量工程、软件可靠性工程 22
1.6.3可信性和软件可靠性 23
1.6.4软件可靠性和软件安全性 24
1.6.5软件可靠性与硬件可靠性 24
参考文献 25
第2章 软件可靠性定量要求 27
2.1概述 27
2.2软件可靠性参数及其选取 29
2.2.1一般的软件可靠性参数 29
2.2.2结合武器装备特点的软件可靠性参数 33
2.2.3软件可靠性参数的选取 33
2.3软件可靠性指标确定的依据 34
2.3.1软件可靠性指标确定原则 34
2.3.2全生存周期费用优化法确定软件可靠性指标 35
2.4软件可靠性要求确定过程 36
2.4.1定义失效、失效严重等级 36
2.4.2选择软件可靠性参数、确定指标要求 37
2.4.3定义软件的使用条件 37
2.4.4明确软件可靠性验证要求 38
2.5面向过程评价和改进的软件可靠性度量 38
2.5.1缺陷密度(defect density) 38
2.5.2故障密度(fault density) 39
2.5.3需求依从性(requirements compliance) 40
2.5.4需求追踪性(requirements traceability ) 41
2.5.5风险因子回归模型(Risk factor regression model) 42
2.5.6测试覆盖指数(test coverage index) 43
2.6注意事项 43
参考文献 44
第3章 软件可靠性分配与预计 45
3.1概述 45
3.1.1软件可靠性分配定义 46
3.1.2软件可靠性分配目的 46
3.1.3软件可靠性分配原则 46
3.2快速分配法 47
3.2.1相似程序法 47
3.2.2相似模块法 49
3.3等值分配法 49
3.3.1顺序执行软件等值分配法 49
3.3.2并行执行软件等值分配法 50
3.4基于运行关键度分配法 50
3.5基于复杂度分配法 51
3.6基于操作剖面的分配法 53
3.7基于失效率的分配法 55
3.8软件可靠性分配方法的选择 56
3.8.1比较与选择 57
3.8.2注意事项 59
3.9测试之前的软件可靠性早期预计 59
3.9.1雷利模型 60
3.9.2雷利模型的应用 62
3.9.3小结 64
参考文献 64
第4章 软件可靠性设计 66
4.1概述 66
4.2软件避错设计 67
4.2.1软件避错设计原理 68
4.2.2抽象与逐步求精 71
4.2.3模块独立与信息隐藏 73
4.2.4健壮性设计 75
4.2.5形式化方法 76
4.3软件容错设计 78
4.3.1容错技术 79
4.3.2故障检测 80
4.3.3故障处理 85
4.3.4信息容错 88
4.3.5时间容错 89
4.3.6结构容错 90
4.4软件可靠性设计准则 98
4.4.1贯彻软件可靠性设计准则的意义 98
4.4.2软件需求分析阶段的可靠性设计准则示例 98
4.4.3软件设计阶段的可靠性设计准则示例 104
4.4.4软件实现阶段的可靠性设计准则示例 116
4.4.5软件可靠性设计准则的制定流程 125
4.4.6“软件可靠性设计准则”文档的主要内容 126
4.4.7软件可靠性设计准则的实施 126
4.5注意事项 128
参考文献 129
第5章 软件可靠性分析 130
5.1概述 130
5.2软件失效模式及影响分析 130
5.2.1概述 130
5.2.2软件失效模式、失效影响及其严酷度 131
5.2.3软件FMEA分析步骤 135
5.2.4软件危害性分析 141
5.2.5软件FMEA实施注意事项 142
5.2.6软件FMEA示例 143
5.3软件故障树分析 152
5.3.1概述 152
5.3.2软件故障树的建立 153
5.3.3软件故障树的定性分析 156
5.3.4软件故障树的定量分析 158
5.3.5软件FTA实施注意事项 159
5.3.6软件FTA示例 159
5.4其他分析方法 163
5.4.1软件FMEA与FTA综合分析 163
5.4.2事件树分析 168
5.4.3 Petri网分析 173
参考文献 179
第6章 软件可靠性测试 180
6.1概述 180
6.2软件可靠性增长测试 182
6.2.1概述 182
6.2.2软件可靠性增长测试过程 182
6.2.3软件可靠性增长测试的注意事项 185
6.3软件可靠性验证测试 185
6.3.1概述 185
6.3.2软件可靠性验证测试的流程 187
6.3.3软件可靠性验证统计测试方案 188
6.3.4软件可靠性验证测试的注意事项 195
6.4软件可靠性摸底测试 196
6.4.1概述 196
6.4.2软件可靠性摸底测试过程 197
6.4.3软件可靠性摸底测试的注意事项 198
6.5软件可靠性测试中的关键技术 198
6.5.1操作剖面的构造 198
6.5.2软件可靠性测试数据生成 211
6.5.3软件可靠性失效数据的收集和处理 216
6.5.4软件可靠性测试环境 217
6.6软件可靠性测试示例 218
6.6.1软件可靠性验证测试策划阶段 218
6.6.2测试设计与实现阶段 218
6.6.3测试执行阶段 222
6.6.4测试总结阶段 223
参考文献 233
第7章 软件可靠性评估 225
7.1概述 225
7.2软件可靠性评估模型 226
7.2.1模型概述 226
7.2.2典型模型的介绍 231
7.2.3模型的比较和选择 244
7.2.4模型的局限性 247
7.3增长测试中的软件可靠性评估/预计 248
7.3.1定义失效 249
7.3.2构造软件系统的操作剖面和选取测试数据进行测试 250
7.3.3收集软件失效数据 250
7.3.4对失效数据进行趋势分析 252
7.3.5选择软件可靠性模型 252
7.3.6参数估计 254
7.3.7模型验证 254
7.3.8评估/预计分析 254
7.3.9注意事项 256
7.3.10示例 257
7.4摸底测试中的软件可靠性评估/预计 261
7.4.1摸底测试的特点 261
7.4.2过程说明 261
7.4.3注意事项 261
7.5稳定使用阶段的软件可靠性评估 261
7.5.1稳定使用阶段的软件可靠性模型 262
7.5.2参数估计 262
7.5.3评估/预计结果 262
7.5.4注意事项 263
7.5.5示例 263
参考文献 265
第8章 软件可靠性管理 268
8.1软件生存周期各阶段软件可靠性工程活动 268
8.1.1需求阶段的软件可靠性工程活动 268
8.1.2设计和实现阶段的软件可靠性工程活动 268
8.1.3测试阶段的软件可靠性工程活动 269
8.1.4交付后和使用维护阶段的软件可靠性工程活动 269
8.2软件可靠性评审 270
8.2.1系统需求评审中的软件可靠性评审 270
8.2.2软件需求分析评审中的软件可靠性评审 270
8.2.3软件验证与确认计划评审中的软件可靠性评审 270
8.2.4软件概要设计评审中的软件可靠性评审 271
8.2.5软件详细设计评审中的软件可靠性评审 271
8.2.6软件实现评审中的软件可靠性评审 272
8.2.7软件集成测试评审中的软件可靠性评审 272
8.2.8软件确认测试评审中的软件可靠性评审 272
8.2.9系统集成测试评审中的软件可靠性评审 273
8.3软件失效报告分析及纠正措施系统 273
8.3.1 SFRACAS的作用 273
8.3.2软件问题报告 273
8.3.3软件问题影响分析 274
8.3.4软件纠正措施 274
8.3.5软件失效报告、分析和纠正措施系统报告 275
8.4 SAE软件可靠性大纲管理框架 275
8.4.1软件可靠性大纲 276
8.4.2软件可靠性计划的作用 276
8.4.3软件可靠性举证 277
8.4.4软件可靠性大纲在合同中的使用 280
参考文献 281
附录A Keene的开发过程预计模型(DPPM) 282
A.1概述 282
A.2基于开发过程的软件可靠性早期预计 283
参考文献 284
附录B SWEEP软件缺陷早期预计 285
B.1概述 285
B.2 SWEEP的相关假设 286
B.3 SWEEP方法 286
B.4 SWEEP的数学模型 288
附录C 失效数据的趋势分析 297
C.1概述 297
C.2图形法 297
C.3拉普拉斯法 299
C.4分析趋势与选择模型 300