软考笔记 - 系统可靠性分析与设计
2022年5月左右的预测。
可靠性相关基本概念
- 可靠性是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。
- 可用性是系统能够正常运行的时间比例。
复杂性:软件复杂性高于硬件,大部分失效来自于软件失效。
可靠性指标
- 平均无故障时间MTTF,失效率是MTTF的倒数
- 平均故障修复时间MTTR,修复率是MTTR的倒数
- 平均故障间隔时间MTBF = MTTR + MTTF
- 系统可用性,MTTF / (MTTR + MTTF) = MTTF / MTBF
系统可靠性分析
串联的可靠性:$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)$
可靠性分析
影响软件可靠性的主要因素,前两个为外部原因:
- 软件的开发方法和开发环境
- 运行环境
- 软件规模
- 软件内部结构
- 软件的可靠性收入(砸钱)
可靠性设计
- 避错技术(交付前的测试)
- 降低复杂度设计
- 检错技术,出错后人工报警,成本较低
- 容错技术,分为多版本程序设计(静态冗余)、恢复块设计(动态冗余)和防卫式程序设计
冗余分为结构冗余(软硬件冗余)、信息冗余(校验码)和时间冗余(重复多次进行相同的计算)
N版本程序设计
N版本程序设计是并行的。
- 与通常软件开发过程不同的是,N版本程序设计增加了三个新的阶段:相异成分、规范评审、相异性确认、背对背测试
- N版本程序的同步、N版本程序之间的通信、表決算法(全等表決、非精确表决、Cosmetie表决)、一致比较问题、数据相异性
恢复块方法
恢复块方法是串行的。
- 设计时应保证实现主块和后备块之问的独立性,避免相关错误的产生,使主块和备份块之间的共性错误降到最低程度。
- 必须保证验证测试程序的正确性。
区别指标 | 恢复块方法 | N版本程序设计 |
---|---|---|
硬件运行环境 | 单机 | 多机 |
错误检测方法 | 验证测试程序 | 表决 |
恢复策略 | 后向恢复 | 前向恢复 |
实时性 | 差 | 好 |
- 前向恢复:使当前的计算继续下去,把系统恢复成连贯的正确状态,弥补当前状态的不连贯情况。
- 后向恢复:系统恢复到前一个正确状态,继续执行。
防卫式程序设计
- 对于程序中存在的错误和不一致性,通过在程序中包含错误检查代码和错误恢复代码,使得一旦错误发生,程序能撤销错误状态,恢复到一个已知的正确状态中去。如
try-catch
。 - 实现策略:错误检测、破坏估计、错误恢复。
双机容错
双机模式是集群的前身。双机模式有以下几种:
- 双机热备模式(主系统、备用系统)
- 双机互备模式(同时提供不同的服务,心不跳则接管)
- 双机双工模式(同时提供相同的服务,集群的一种)
本文由作者按照 CC BY 4.0 进行授权