目录
一、可靠性相关基本概念
二、可靠性指标
1、串联系统与并联系统可靠性指标计算
2、混合系统
三、可靠性设计
1、影响软件可靠性的主要因素:
2、增加可靠性的解决方案
2.1 避错技术
2.2 降低复杂度设计
2.3 检错技术
2.4 容错技术
3、双机容错
一、可靠性相关基本概念
【可靠性】:可靠性是软件系统在应用或系统错误面前 ,在意外或错误使用的情况下维持软件系统的功能性的基本能力。
【可用性】:可用性是系统能够正常运行的时间比例。
软件可靠性 ≠ 硬件可靠性
(1)复杂性:软件复杂性比硬件高,大部分失效来自于软件失效。
(2)物理退化:硬件失效主要是物理退化所致,软件不存在物理退化。
(3)唯一性:软件是唯一的,每个COPY版本都一样,而两个硬件不可能完全一样。
(4)版本更新周期:硬件较慢,软件较快。
二、可靠性指标
【失效率】:(λ)λ = N / T,N表示在某个时间段内失效的总数,T则是相应时间段的总时间。
【平均无故障时间】:(MTTF)MTTF = 1 / λ,λ为失效率
【平均故障修复时间】:(MTTR)MTTR = 1 / μ,μ为修复率
【平均故障间隔时间】:(MTBF)MTBF = MTTR + MTTF
【系统可用性】:MTTF / (MTTR + MTTF)* 100%
在实际应用中一般MTTR很小,所以通常认为MTBF ≈ MTTF。
1、串联系统与并联系统可靠性指标计算
串联:
可靠性:R = R1 * R2 * ... * Rn
失效率近似公式:λ = λ1 + λ2 + ... + λn
并联:
可靠性:R = 1 -(1 - R1)*(1 - R2)* ...*(1 - Rn)
2、混合系统
三、可靠性设计
1、影响软件可靠性的主要因素:
(1)软件的开发方法和开发环境(2)运行环境
(3)软件系统的规模(4)软件的内部结构(5)软件的可靠性投入
2、增加可靠性的解决方案
2.1 避错技术
例如:使用CMMI(能力成熟度模型集成)规范管理过程、应用测试等。
2.2 降低复杂度设计
设计层面降低系统复杂度。
2.3 检错技术
出错后报警,人工处理,成本较低。
2.4 容错技术
(1)N版本程序设计(静态冗余)
多个版本同时计算获得到结果,通过表决器算法最终确定采用结果。主要应用在可靠性要求极高的场景,成本高。例:飞行控制系统、高铁信号系统。
与通常软件开发过程不同的是,N版本程序设计增加了三个新的阶段:相异成分规范评审、相异性确认、背对背测试。
N版本程序的同步、N版本程序之间的通信、表决算法(全等表决、非精确表决、Cosmetie表决)、一致比较问题、数据相异性。
(2)恢复快设计(动态冗余)
设计时应保证实现主块和后备块之间的独立性,避免相关错误的产生,使主块和备份块之间的共性错误降到最低程度。
必须保证验证测试程序的正确性。
【N版本程序设计与恢复快方法区别】
前向恢复:使当前的计算继续下去,把系统恢复成连贯的正确状态,弥补当前状态的不连贯情况。
后向恢复:系统恢复到前一个正确状态,继续执行。
(3)防卫式程序设计
对于程序中存在的错误和不一致性,通过在程序中包含错误检查代码和错误恢复代码,使得一旦错误发生,程序能撤销错误状态,恢复到一个已知的正确的状态中去。
实现策略:错误检测、破坏估计、错误恢复。(例:代码中 try / catch 函数)
冗余:
(1)结构冗余(硬件冗余、软件冗余)
(2)信息冗余(校验码)
(3)时间冗余(重复多次进行相同计算)
3、双机容错
(1)双机热备模式(主系统、备用系统)
(2)双机互备模式(同时提供不同服务,心不跳则接管)
(3)双机双工模式(同时提供相同的服务,集群的一种)
双机模式是集群的前身