Appearance
系统可靠性分析与设计
更新: 4/10/2025 字数: 0 字 时长: 0 分钟
基本概念(⭐⭐)
可靠性:软件系统在应用或系统错误面前,在意外或错误使用的情况下,维持软件系统功能特性的基本能力。
可用性:系统能够正常运行的时间比例。
软件可靠性 ≠ 硬件可靠性
对比维度 | 软件 | 硬件 |
---|---|---|
复杂性 | 高于硬件,大部分失效来自软件失效 | 低于软件 |
物理退化 | 不存在 | 硬件失效主要原因 |
唯一性 | 是(同一版本,无论怎么复制都是一样的) | 否(两个硬件不可能完全一样) |
版本更新周期 | 较快 | 较慢 |
可靠性分析(⭐⭐⭐)
可靠性指标
- 平均无故障时间【MTTF】:系统无故障运行的平均时间。
- 平均故障修复时间【Mean Time To Repair, MTTR】:从出现故障到修复成功的这段时间。
- 平均故障间隔时间【Mean Time Between Failure, MTBF】:MTBF = MTTR + MTTF
- 平均检测时间【MTTD】:故障发生到被检测出来的时间(潜伏期)。
- 系统可用性
实际应用中,一般MTTR很小,所以通常认为MTBF ≈ MTTF
串联系统和并联系统
串联系统可靠性:
并联系统可靠性:
可靠性模型
可靠性模型大致可以分为如下10类:
- 种子法模型:预先有意“播种”一些设定的错误“种子”,再看种子发现比例。
- 失效率类模型:如Jelinski-Mornada的De-eutrophication模型、Schick-Wolverton模型。
- 曲线你和类模型:用回归分析的方法研究软件复杂性、程序中的缺陷数、失效率、失效间隔时间。
- 可靠性增长模型:预测软件在检错过程中的可靠性改进,用增长函数来描述软件的改进过程。
- 程序结构分析模型:根据程序、子程序及其相互间的调用关系,形成一个可靠性分析网络。
- 输入域分类模型:选取软件输入域中的某些样本点运行程序,根据这些样本点在实际使用环境中的使用概率的测试运行时的成功/失效率,推断软件的使用可靠性。
- 执行路径分析方法模型:先计算程序各逻辑路径的执行概率和程序中错误路径的执行概率,再综合出该软件的使用可靠性。
- 非齐次泊松过程模型:以软件测试过程中单位时间的失效次数为独立泊松随机变量,来预测在今后软件的某使用时间点的累计失效数。
- 马尔科夫过程模型:如完全改错的线性死亡模型、不完全改错的线性死亡模型。
- 贝叶斯分析模型:利用失效率的试验前分布和当前的测试失效信息,来评估软件的可靠性。
可靠性设计(⭐⭐⭐⭐)
影响软件可靠性的主要因素:
- 软件的开发方法和开发环境
- 运行环境
- 软件规模
- 软件内部结构
- 软件的可靠性投入
容错技术
冗余设计分为:
- 结构冗余:硬件冗余、软件冗余
- 信息冗余:校验码
- 时间冗余:重复多次进行相同的计算
N版本程序设计(静态冗余)

- 与通常软件开发过程不同的是,N版本程序设计增加了三个新的阶段:相异成分规范评审、相异性确认、背对背测试
- N本版程序的同步、N版本程序之间的通信、表决算法(全等表决、非精确表决、consmetie表决)、一致比较问题、数据相异性
恢复块设计(动态冗余)

- 设计时应保证实现主块和后备块之间的独立性,避免相关错误的产生,使主块和备份块之间的共性错误降到最低程度。
- 必须保证验证测试程序的正确性
对比维度 | 恢复块方法 | N版本程序设计 |
---|---|---|
硬件运行环境 | 单机 | 多机 |
错误检测方法 | 验证测试程序 | 表决 |
恢复策略 | 后向恢复 | 前向恢复 |
实时性 | 差 | 好 |
- 前向恢复:使当前的计算继续下去,把系统恢复成连贯的正确状态,弥补当前状态的不连贯情况。
- 后向恢复:系统恢复到前一个正确状态后继续执行。
防卫式程序设计
- 对于程序中存在的错误和不一致性,通过在程序中包含错误检查代码和错误恢复代码,使得一旦错误发生,程序能撤销错误状态,恢复到一个已知的正确状态。
- 实现策略:错误检测、破坏估计、错误恢复
双机容错
- 双机热备模式【主备】
- 双机互备模式【主从】:同时提供不同的服务,心不跳则接管。
- 双机双工模式:同时提供相同的服务,集群的一种。
提示
双机模式是集群的前身。