文章

软考笔记 - 系统可靠性分析与设计

2022年5月左右的预测。

system-reliability-analysis-and-design-bullet-points.png

可靠性相关基本概念

  • 可靠性是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。
  • 可用性是系统能够正常运行的时间比例。

复杂性:软件复杂性高于硬件,大部分失效来自于软件失效。

可靠性指标

  • 平均无故障时间MTTF,失效率是MTTF的倒数
  • 平均故障修复时间MTTR,修复率是MTTR的倒数
  • 平均故障间隔时间MTBF = MTTR + MTTF
  • 系统可用性,MTTF / (MTTR + MTTF) = MTTF / MTBF

reliability-indicator.png

系统可靠性分析

串联的可靠性:$R=R_1 \times R_2 \times \cdots \times R_n$,串联失效率近似公式:$\lambda = \lambda_1 + \lambda_2 + \cdots + \lambda_n$

并联的可靠性:$R = 1 - (1-R_1) \times (1-R_2) \times \cdots \times (1-R_n)$

可靠性分析

影响软件可靠性的主要因素,前两个为外部原因:

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

可靠性设计

  • 避错技术(交付前的测试)
  • 降低复杂度设计
  • 检错技术,出错后人工报警,成本较低
  • 容错技术,分为多版本程序设计(静态冗余)、恢复块设计(动态冗余)和防卫式程序设计

冗余分为结构冗余(软硬件冗余)、信息冗余(校验码)和时间冗余(重复多次进行相同的计算)

N版本程序设计

N-version-programming-design.png

N版本程序设计是并行的。

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

恢复块方法

recover-block.png

恢复块方法是串行的。

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

防卫式程序设计

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

双机容错

双机模式是集群的前身。双机模式有以下几种:

  • 双机热备模式(主系统、备用系统)
  • 双机互备模式(同时提供不同的服务,心不跳则接管)
  • 双机双工模式(同时提供相同的服务,集群的一种)
本文由作者按照 CC BY 4.0 进行授权

热门标签