系统可靠性分析 · 考点总结
知识图谱
系统可靠性分析
├── 1. 可靠性基础概念
│ ├── 软件可靠性定义
│ ├── 软件失效特点
│ └── 软硬件可靠性差异
├── 2. 可靠性指标 ⭐⭐⭐
│ ├── 失效概率 F(t)
│ ├── 可靠度 R(t)
│ ├── 失效率 / 失效强度
│ ├── MTTF
│ ├── MTTR
│ └── MTBF
├── 3. 系统可靠性计算 ⭐⭐⭐
│ ├── 串联系统
│ └── 并联系统
├── 4. 可靠性模型
│ ├── 种子模型法
│ ├── 失效率类模型
│ ├── 可靠性增长模型
│ └── 程序结构 / 输入域 / 执行路径模型
└── 5. 可靠性设计技术 ⭐⭐
├── N版本程序设计
├── 恢复块方法
└── 向前恢复 / 向后恢复
一、可靠性基础
1.1 软件可靠性定义
软件可靠性:软件产品在规定条件下、规定时间区间内完成规定功能的能力。
关键词必须记住:
| 关键词 | 含义 |
|---|---|
| 规定条件 | 运行环境、输入条件、使用方式明确 |
| 规定时间 | 自然时间、运行时间、执行时间 |
| 规定功能 | 软件按需求完成应有功能 |
一句话: 可靠性关注的是软件在一段时间内不出故障、能持续正确工作的能力。
1.2 软件与硬件可靠性的差异
| 对比项 | 软件 | 硬件 |
|---|---|---|
| 失效原因 | 多来自设计、需求、编码缺陷 | 多来自物理老化、磨损 |
| 物理退化 | 不存在物理退化 | 存在物理退化 |
| 复杂性 | 逻辑复杂度高,状态空间大 | 结构相对可观察 |
| 唯一性 | 软件副本完全相同 | 硬件个体可能存在差异 |
| 更新周期 | 更新快,版本变化频繁 | 更新慢 |
考试要点: 软件不会因为使用时间增加而“磨损”,软件失效通常是潜在缺陷在特定输入或环境下被触发。
二、可靠性指标 ⭐⭐⭐
2.1 规定时间
可靠性必须依赖时间来描述,常见时间包括:
| 时间类型 | 说明 |
|---|---|
| 自然时间 | 日历时间,例如运行 30 天 |
| 运行时间 | 系统实际运行的时间 |
| 执行时间 | 程序实际执行所消耗的时间 |
记忆要点: 用执行时间度量软件可靠性通常最准确,因为它更接近软件真正被使用和触发缺陷的时间。
2.2 失效概率 F(t)
失效概率:从软件开始运行到时刻 t 为止,软件已经发生失效的概率,通常记为 F(t)。
特点:
F(0) = 0F(t)随时间增加而增加F(t)最终趋近于1
2.3 可靠度 R(t)
可靠度:软件在规定条件下、规定时间内不发生失效的概率。
核心公式:
R(t) = 1 - F(t)
| 指标 | 关注点 | 关系 |
|---|---|---|
F(t) | 已经失效的概率 | 越大越不可靠 |
R(t) | 未失效的概率 | 越大越可靠 |
2.4 失效率 / 失效强度
失效强度:单位时间内软件发生失效的概率或频度。
常见理解:
- 失效强度越大,单位时间内越容易出故障
- 失效强度越小,软件越稳定
2.5 MTTF、MTTR、MTBF
| 指标 | 中文 | 含义 | 公式/关系 |
|---|---|---|---|
| MTTF | 平均失效前时间 / 平均无故障时间 | 系统从开始运行到发生故障前的平均时间 | MTTF = 1 / 失效率 |
| MTTR | 平均修复时间 | 从故障发生到修复完成的平均时间 | 越小越好 |
| MTBF | 平均故障间隔时间 | 两次故障之间的平均时间,包括正常运行和修复 | MTBF = MTTF + MTTR |
常见近似:
当 MTTR 很小时:MTBF ≈ MTTF
记忆技巧:
MTTF:Mean Time To Failure,平均多久才坏MTTR:Mean Time To Repair,平均多久修好MTBF:Mean Time Between Failures,平均两次故障间隔
三、系统可靠性计算 ⭐⭐⭐
3.1 串联系统
串联系统中,所有部件都必须正常工作,系统才正常工作。任意一个部件失效,整个系统失效。
输入 → R1 → R2 → ... → Rn → 输出
可靠度公式:
R = R1 × R2 × ... × Rn
失效率近似:
λ = λ1 + λ2 + ... + λn
结论: 串联系统的部件越多,整体可靠性通常越低。
3.2 并联系统
并联系统中,只要至少一个部件正常工作,系统就能正常工作。
┌─ R1 ─┐
输入 ──┼─ R2 ─┼── 输出
└─ R3 ─┘
可靠度公式:
R = 1 - (1 - R1) × (1 - R2) × ... × (1 - Rn)
如果 n 个部件可靠度相同,均为 R0:
R = 1 - (1 - R0)^n
结论: 并联系统通过冗余提高可靠性,部件越多,整体可靠性通常越高。
3.3 计算题速记
| 系统 | 判断关键词 | 公式 | 结果趋势 |
|---|---|---|---|
| 串联 | 全部成功才成功 | R = R1 × R2 × ... × Rn | 可靠性下降 |
| 并联 | 至少一个成功就成功 | R = 1 - ∏(1 - Ri) | 可靠性上升 |
答题步骤:
- 判断结构是串联还是并联。
- 串联直接乘可靠度。
- 并联先算“全部失效概率”,再用
1 - 全部失效概率。 - 混合系统先拆小模块,再逐层合并。
四、可靠性模型
可靠性模型用于估计、预测软件可靠性,常见模型如下:
| 模型 | 核心思想 | 适用理解 |
|---|---|---|
| 种子模型法 | 人为植入错误种子,根据发现比例估算真实错误数量 | 用“已知错误”推断“未知错误” |
| 失效率类模型 | 根据失效发生频度建立数学模型 | 关注故障出现的速率 |
| 曲线拟合类模型 | 使用回归分析拟合失效数据变化趋势 | 根据历史数据预测未来 |
| 可靠性增长模型 | 随着测试和修复进行,可靠性逐步提高 | 测试越充分,失效强度越低 |
| 程序结构分析模型 | 根据程序内部结构分析可靠性 | 关注模块和控制结构 |
| 输入域分类模型 | 按输入类型分类分析失效情况 | 关注不同输入触发缺陷的概率 |
| 执行路径分析方法 | 按程序执行路径分析可靠性 | 关注路径覆盖和路径风险 |
五、可靠性测试
5.1 定义
广义可靠性测试:为了评价软件系统可靠性,综合运用建模、统计、实验、分析和评价等手段进行的测试。
狭义可靠性测试:为了获取可靠度数据,按照预先确定的测试用例,在软件预期使用环境中对软件实施测试。
5.2 目的
- 发现软件在各方面的缺陷
- 为软件使用和维护提供可靠性数据
- 确认软件可靠度是否达到目标
5.3 可靠性目标
可靠性目标通常由以下指标表示:
- 可靠度
R(t) - 故障强度 / 失效强度
- 平均失效前时间
MTTF - 平均故障间隔时间
MTBF
六、可靠性设计技术 ⭐⭐
6.1 N 版本程序设计
思想: 由多个开发组按照相同规格说明,独立开发多个功能等价的版本,运行时通过表决器选择结果。
版本1 ─┐
版本2 ─┼→ 表决器 → 正常输出 / 异常处理
版本3 ─┘
关键点:
- 多个版本要相互独立
- 使用表决机制检测和屏蔽错误
- 实时性较好
- 属于向前恢复思想
新增阶段:
- 相异成分规范审核
- 相异性确认
- 背对背测试
6.2 恢复块方法
思想: 先执行主块,执行后通过验证测试判断结果是否正确;若不合格,则切换到后备块。
主块 → 验证测试
├─ 合格 → 输出
└─ 不合格 → 后备块
关键点:
- 主块和后备块要保持独立性
- 验证测试必须准确
- 实时性较差
- 属于向后恢复思想
6.3 N 版本与恢复块对比
| 对比项 | 恢复块方法 | N 版本程序设计 |
|---|---|---|
| 运行环境 | 单机 | 多机 |
| 错误检测方法 | 验证测试程序 | 表决 |
| 恢复策略 | 向后恢复 | 向前恢复 |
| 实时性 | 差 | 好 |
| 关键风险 | 验证测试不准确 | 多版本不独立、共同缺陷 |
6.4 向前恢复与向后恢复
| 恢复方式 | 含义 | 典型方法 |
|---|---|---|
| 向前恢复 | 在当前状态基础上继续计算,使系统恢复到连贯状态 | N 版本程序设计 |
| 向后恢复 | 回退到前一个正确状态,再继续执行 | 恢复块方法 |
七、影响可靠性的因素
| 因素 | 说明 |
|---|---|
| 软件开发方法和开发环境 | 方法越规范,工具越成熟,可靠性越高 |
| 运行环境 | 硬件、操作系统、网络环境会影响失效表现 |
| 软件规模 | 规模越大,复杂度越高,缺陷越难控制 |
| 软件内部结构 | 模块耦合、复杂度、异常处理都会影响可靠性 |
| 可靠性投入 | 测试、评审、容错设计投入越多,可靠性越高 |
八、易错点总结
| 易错点 | 正确理解 |
|---|---|
把 F(t) 当成可靠度 | F(t) 是失效概率,R(t) 才是可靠度 |
| 把失效概率和失效率混淆 | 失效概率是累计概率,失效率/失效强度强调单位时间内失效频度 |
| 并联系统直接相乘 | 并联要先算全部失效概率,再用 1 - 全部失效概率 |
| 认为软件会物理磨损 | 软件没有物理退化,失效来自潜在缺陷被触发 |
| 混淆 MTTF 和 MTTR | MTTF 是坏之前的平均时间,MTTR 是修好的平均时间 |
| 混淆恢复块和 N 版本 | 恢复块靠验证测试,N 版本靠表决器 |
| 混淆向前恢复和向后恢复 | N 版本偏向前恢复,恢复块偏向后恢复 |
九、考前速背
可靠性 = 规定条件 + 规定时间 + 规定功能
R(t) = 1 - F(t)
MTBF = MTTF + MTTR
MTTF = 1 / 失效率
串联:全部正常才正常,R = R1 × R2 × ... × Rn
并联:至少一个正常就正常,R = 1 - (1-R1)(1-R2)...(1-Rn)
恢复块:验证测试,向后恢复,实时性差
N版本:表决器,向前恢复,实时性好