MD 更新:未知

系统可靠性分析 · 考点总结

综合整理自: 可靠性可靠性设计系统可靠性分析


知识图谱

系统可靠性分析
├── 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) = 0
  • F(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. 判断结构是串联还是并联。
  2. 串联直接乘可靠度。
  3. 并联先算“全部失效概率”,再用 1 - 全部失效概率
  4. 混合系统先拆小模块,再逐层合并。

四、可靠性模型

可靠性模型用于估计、预测软件可靠性,常见模型如下:

模型核心思想适用理解
种子模型法人为植入错误种子,根据发现比例估算真实错误数量用“已知错误”推断“未知错误”
失效率类模型根据失效发生频度建立数学模型关注故障出现的速率
曲线拟合类模型使用回归分析拟合失效数据变化趋势根据历史数据预测未来
可靠性增长模型随着测试和修复进行,可靠性逐步提高测试越充分,失效强度越低
程序结构分析模型根据程序内部结构分析可靠性关注模块和控制结构
输入域分类模型按输入类型分类分析失效情况关注不同输入触发缺陷的概率
执行路径分析方法按程序执行路径分析可靠性关注路径覆盖和路径风险

五、可靠性测试

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 和 MTTRMTTF 是坏之前的平均时间,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版本:表决器,向前恢复,实时性好