ONEPSOFT | 软考学习知识库
speedrun9|第9章 软件可靠性
文件名约定:speedrun_ 第 9 章 软件可靠性.md(教材准确章名:软件可靠性基础知识)
一、章节定位
一句话概括:本章讲 " 软件如何少出故障、出了故障如何容错恢复 "——从可靠性定义与定量度量,到可靠性模型、可靠性设计(容错/检错/降复杂度/配置)、测试与评价,是质量属性中 " 可靠性 " 的工程落地章。
二、本章在讲什么(系统性阐述)
盖好的楼要 " 不塌、不停电、坏了能切备用 "。软件可靠性研究的就是这件事:在规定的条件和时间内,软件不失效的概率有多大;怎么度量(MTTF/MTTR/MTBF、可靠度 R(t));怎么通过设计让它更可靠(容错=多套机制表决/热备、检错=故障报警、降复杂度=简化结构、系统配置=双机热备/集群);以及怎么通过测试和评价来验证。
类比:可靠性就像大楼的 " 冗余供电与双路备份 "——市电一路、柴油发电机一路(冗余/双机热备);关键回路用 N 套独立设计表决(N 版本,防单一设计缺陷);配电柜装故障指示灯(检错报警);把复杂线路简化、减少接头(降复杂度);两路进线自动切换(集群/心跳)。这和 IT 服务管理里的 " 高可用、业务连续性、容灾备份 " 是一脉相承的,正是 " 运维服务/IT 服务 " 的核心关切。
三、教材原文精摘(原封不动,逐子章节全覆盖)
下列段落直接摘自官方教材,未做任何改写,逐子章节给出最关键原文并作解析。
【9.1 软件可靠性基本概念 原文】" 在规定的条件下,在规定的时间内,软件不引起系统失效的概率,该概率是系统输入和系统使用的函数,也是软件中存在的缺陷函数 ";" 简言之,就是在规定的时间周期内,在所述条件下程序执行所要求的功能的能力。"(出自:第 9 章 9.1.1 节)
" 软件与硬件可靠性四点不同:①复杂性……②物理退化(软件不存在物理退化现象,硬件失效则主要是由于物理退化所致)③唯一性(软件是唯一的……任何两个硬件不可能绝对相同)④版本更新较快。"(出自:第 9 章 9.1.1 节)
" 可靠度就是软件系统在规定的条件下、规定的时间内不发生失效的概率。R(t)=1-F(t)"(出自:第 9 章 9.1.2 节)
" 平均失效前时间 (Mean Time To Failure, MTTF) 定义为从 t=0 时到故障发生时系统的持续运行时间的期望值 "(出自:第 9 章 9.1.2 节)
" 平均恢复前时间 (Mean Time To Restoration, MTTR) 是随机变量恢复时间的期望值……MTTR 越短表示易恢复性越好。"(出自:第 9 章 9.1.2 节)
"MTBF (Mean Time Between Failures, 平均故障间隔时间) 定义为:失效或维护中所需的平均时间,包括故障时间以及检测和维护设备的时间 ";" 对于可靠度服从指数分布的系统……MTBF = MTTF + MTTR"(出自:第 9 章 9.1.2 节)
【9.2 软件可靠性建模 原文】" 影响软件可靠性的主要因素:缺陷的引入,发现和清除。"(出自:第 9 章 9.2.1 节)
" 软件的可靠性模型分类:种子法模型、失效率类模型、曲线拟合类模型、可靠性增长模型、程序结构分析模型、输入域分类模型、执行路径分析方法模型、非齐次泊松过程模型、马尔可夫过程模型、贝叶斯分析模型。"(10 类,出自:第 9 章 9.2.3 节)
【9.3 软件可靠性管理 原文】" 软件可靠性管理是软件工程管理的一部分……把现代管理理论用于软件生命周期中的可靠性保障活动的一种管理形式。"(出自:第 9 章 9.3 节)
【9.4 软件可靠性设计 原文】" 常用的软件容错技术主要有恢复块设计、N 版本程序设计和冗余设计 3 种方法。"(出自:第 9 章 9.4.1 节)
" 恢复块设计就是选择一组操作作为容错设计单元……一旦该文本出现故障,则用备份文本加以替换,从而构成 ' 动态冗余 '。"(出自:第 9 章 9.4.1 节)
"N 版本程序的核心是通过设计出多个模块或不同版本,对于相同初始条件和相同输入的操作结果,实行多数表决 "(出自:第 9 章 9.4.1 节)
" 软件的冗余设计技术实现的原理是在一套完整的软件系统之外,设计一种不同路径,不同算法或不同实现方法的模块或系统作为备份,在出现故障时可以使用冗余的部分进行替换 "(出自:第 9 章 9.4.1 节)
" 检错技术……在软件出现故障后能及时发现并报警,提醒维护人员进行处理。"(出自:第 9 章 9.4.2 节)
" 降低复杂度设计的思想就是在保证实现软件功能的基础上,简化软件结构,缩短程序代码长度,优化软件数据流向,降低软件复杂度,从而提高软件可靠性。"(出自:第 9 章 9.4.3 节)
" 通常在系统配置中可以采用相应的容错技术……主要有双机热备技术和服务器集群技术。"" 双机热备……采用 ' 心跳 ' 方法保证主系统与备用系统的联系。"(出自:第 9 章 9.4.4 节)
【9.5 软件可靠性测试 原文】" 软件可靠性测试由可靠性目标的确定、运行剖面的开发、测试用例的设计、测试实施、测试结果的分析等主要活动组成。"(出自:第 9 章 9.5 节)
【9.6 软件可靠性评价 原文】" 软件可靠性评价……包含如下 3 个方面:(1) 选择可靠性模型 (2) 收集可靠性数据 (3) 可靠性评估和预测。"(出自:第 9 章 9.6 节)
逐段讲解(紧贴上面原文,一段一解):
四、核心知识树
第 9 章 软件可靠性
├── 基本概念
│ ├── 定义
│ └── 度量公式
├── 可靠性建模
│ └── 十类模型
├── 可靠性管理
│ └── 生命周期活动
├── 可靠性设计
│ ├── 容错三法
│ ├── 检错
│ ├── 降复杂度
│ └── 系统配置
├── 测试
│ └── 运行剖面
└── 评价
└── 选模收数评估
五、知识脑图总结
思维导图(结构化呈现)
六、关键概念速解
| 概念 | 教材定义(原文关键词) | 大白话速解 | 考试怎么考 |
|---|---|---|---|
| 软件可靠性 | 规定条件 + 规定时间 + 不引起失效的概率 | 楼不塌的概率 | 选择/定义 |
| 可靠度 R(t) | 不发生失效概率,R(t)=1-F(t) | 到 t 时刻仍正常 | 公式计算 |
| MTTF | 到故障发生持续运行期望 | 平均寿命 | 公式选择 |
| MTTR | 恢复时间期望,越短越易恢复 | 抢修时长 | 公式选择 |
| MTBF | MTTF+MTTR(指数分布) | 平均故障间隔 | 公式选择 |
| 恢复块 | 主/备文本替换,动态冗余 | 一套坏了切备份 | 容错案例 |
| N 版本 | 多版本多数表决 | 多套独立设计表决 | 容错案例 |
| 双机热备 | 心跳联系主备 | 双路供电自动切换 | 选择/案例 |
| 运行剖面 | 用马尔可夫链建模使用行为 | 故障工况画像 | 测试选择 |
七、记忆口诀与类比
八、易混淆点对比
| 易混项 A | 易混项 B | 核心区别 |
|---|---|---|
| 恢复块 | N 版本 | 恢复块=同设计主备文本动态替换;N 版本=多独立设计结果表决 |
| MTTF | MTTR | MTTF=故障前运行期望(寿命);MTTR=修复期望(抢修时长) |
| 冗余设计 | 双机热备 | 冗余=异路径/算法备份模块;双机热备=两台服务器 + 心跳的具体配置技术 |
| 容错 | 检错 | 容错=出错也能继续正确运行;检错=只报警不自动恢复 |
九、与其他章节的关联
十、考试出题方式
专项突破提醒(运维服务 / IT 服务)
本章是可靠性工程与 IT 服务管理(高可用、业务连续性、容灾备份)的交汇点,给出 3 条可操作建议: