Skip to content

系统可靠性分析与设计

更新: 4/10/2025   字数: 0 字   时长: 0 分钟

基本概念(⭐⭐)

可靠性:软件系统在应用或系统错误面前,在意外或错误使用的情况下,维持软件系统功能特性的基本能力。

可用性:系统能够正常运行的时间比例。

软件可靠性 ≠ 硬件可靠性

对比维度软件硬件
复杂性高于硬件,大部分失效来自软件失效低于软件
物理退化不存在硬件失效主要原因
唯一性是(同一版本,无论怎么复制都是一样的)否(两个硬件不可能完全一样)
版本更新周期较快较慢

可靠性分析(⭐⭐⭐)

可靠性指标

  • 平均无故障时间【MTTF】:系统无故障运行的平均时间。
  • 平均故障修复时间【Mean Time To Repair, MTTR】:从出现故障到修复成功的这段时间。
  • 平均故障间隔时间【Mean Time Between Failure, MTBF】:MTBF = MTTR + MTTF
  • 平均检测时间【MTTD】:故障发生到被检测出来的时间(潜伏期)。
  • 系统可用性MTTFMTTR+MTTF100

实际应用中,一般MTTR很小,所以通常认为MTBF ≈ MTTF

串联系统和并联系统

串联系统可靠性:R=R1R2...Rn,失效率近似公式:λ=λ1+λ2+...+λn

并联系统可靠性:R=1(1R1)(1R2)...(1Rn)

可靠性模型

可靠性模型大致可以分为如下10类:

  1. 种子法模型:预先有意“播种”一些设定的错误“种子”,再看种子发现比例
  2. 失效率类模型:如Jelinski-Mornada的De-eutrophication模型、Schick-Wolverton模型。
  3. 曲线你和类模型:用回归分析的方法研究软件复杂性、程序中的缺陷数、失效率、失效间隔时间。
  4. 可靠性增长模型:预测软件在检错过程中的可靠性改进,用增长函数来描述软件的改进过程。
  5. 程序结构分析模型:根据程序、子程序及其相互间的调用关系,形成一个可靠性分析网络。
  6. 输入域分类模型:选取软件输入域中的某些样本点运行程序,根据这些样本点在实际使用环境中的使用概率的测试运行时的成功/失效率,推断软件的使用可靠性。
  7. 执行路径分析方法模型:先计算程序各逻辑路径的执行概率和程序中错误路径的执行概率,再综合出该软件的使用可靠性。
  8. 非齐次泊松过程模型:以软件测试过程中单位时间的失效次数为独立泊松随机变量,来预测在今后软件的某使用时间点的累计失效数。
  9. 马尔科夫过程模型:如完全改错的线性死亡模型、不完全改错的线性死亡模型。
  10. 贝叶斯分析模型:利用失效率的试验前分布和当前的测试失效信息,来评估软件的可靠性。

可靠性设计(⭐⭐⭐⭐)

影响软件可靠性的主要因素:

  1. 软件的开发方法和开发环境
  2. 运行环境
  3. 软件规模
  4. 软件内部结构
  5. 软件的可靠性投入

容错技术

冗余设计分为:

  • 结构冗余:硬件冗余、软件冗余
  • 信息冗余:校验码
  • 时间冗余:重复多次进行相同的计算

N版本程序设计(静态冗余)

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

恢复块设计(动态冗余)

  • 设计时应保证实现主块和后备块之间的独立性,避免相关错误的产生,使主块和备份块之间的共性错误降到最低程度。
  • 必须保证验证测试程序的正确性
对比维度恢复块方法N版本程序设计
硬件运行环境单机多机
错误检测方法验证测试程序表决
恢复策略后向恢复前向恢复
实时性
  • 前向恢复:使当前的计算继续下去,把系统恢复成连贯的正确状态,弥补当前状态的不连贯情况。
  • 后向恢复:系统恢复到前一个正确状态后继续执行。

防卫式程序设计

  • 对于程序中存在的错误和不一致性,通过在程序中包含错误检查代码和错误恢复代码,使得一旦错误发生,程序能撤销错误状态,恢复到一个已知的正确状态。
  • 实现策略:错误检测、破坏估计、错误恢复

双机容错

  • 双机热备模式【主备】
  • 双机互备模式【主从】:同时提供不同的服务,心不跳则接管。
  • 双机双工模式:同时提供相同的服务,集群的一种。

提示

双机模式是集群的前身。

本站访客数 人次 本站总访问量