16.系统可靠性分析与设计

可靠性相关基本概念

可靠性和可用性的区分

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

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

软件和硬件可靠性的区分

软件可靠性不等于硬件可靠性

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

  • 物理退化:硬件失效主要是物理退化所致,软件不存在物理退化。

  • 唯一性:软件是唯一的,每个COPY版本都一样,而两个硬件不可能完全一样。

  • 版本更新周期:硬件较慢,软件较快。

系统可靠性分析

可靠性指标

平均无故障时间MTTF = 无故障时间时间 / 故障数
如上图系统运行图,求平均无故障时间。(1000+800+600)/ 3 = 800h
平均故障修复时间MTTR = 故障修复时间 / 故障数
如上图系统运行图,求平均故障修复时间。(3+1+2)/ 3 = 2h
平均故障间隔时间MTBF = 平均无故障时间MTTF + 平均故障修复时间MTTR
如上图系统运行图,求平均故障间隔时间。800h + 2h = 802h
系统可用性 = 平均无故障时间MTTF / (平均故障修复时间MTTR + 平均故障间隔时间MTBF) * 100%
如上图系统运行图,求系统可用性。800 / (2+802) * 100% ≈ 99.5%

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

可靠性分析

以下公式使用R代表可靠度

系统整体可靠度计算公式:

系统整体可靠度计算公式:

系统整体可靠度计算公式:

软件可靠性设计

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

  1. 外部环境因素
  • 软件的开发方法和开发环境

  • 软件运行环境

  1. 软件内部因素
  • 软件规模

  • 软件内部结构

  • 软件的可靠性投入

可靠性设计

避错技术

在软件开发前,加强对软件架构的选择、管理和使用,采用高可靠的软件架构;在软件交付前,对软件进行质量测试,尽量避免错误的发生。避错技术有相当的局限性,因为软件故障概率的减少是有一定限度的,一个软件不发生任何故障是不可能的。

降低复杂度设计

软件设计的最大目标,就是降低复杂性(complexity)。越复杂的软件出错的概率也将越大,降低复杂度可以使得软件易于理解和修改,同时能够降低软件出错的概率。

检错技术

软件出错后自动报警,提示人工介入处理,成本较低。软件通常使用短信、邮件等进行通知。机房通常使用亮灯、鸣笛警报等进行通知。

容错技术

  • 结构冗余(硬件冗余、软件冗余)

  • 信息冗余(校验码)

  • 时间冗余(重复多次进行相同的计算)

容错技术

N版本程序设计

多个功能相同、设计存在差异的程序段同时在容错机中运行,按照一定的决策原则(如表 决机制,门限的限制等)将正确的结果输出。N版本程序设计是一种静态冗余技术。

恢复块方法

  • 设计时应保证实现主块和后备块之间的独立性,避免相关错误的产生,使主块和备份块之间的共性错误降到最低程度。

  • 必须保证验证测试程序的正确性。

  • 向前恢复:使当前的计算继续下去,把系统恢复成连贯的正确状态,弥补当前状态的不连贯情况。

  • 向后恢复:系统恢复到前一个正确状态,继续执行。

防卫式程序设计

对于程序中存在的错误和不一致性,通过在程序中包含错误检测代码和错误恢复代码,使得一旦错误发生,程序能够撤销错误状态,恢复到一个已知的正确状态中去。

实施策略:错误检测、破坏估计、错误恢复。

典型的防卫式程序设计:代码 try {} catch {} 代码块

双机容错

  • 双机热备模式(主系统、备用系统)

  • 双机互备模式(同时提供不同的服务,心不跳则接管)

  • 双机双工模式(同时提供相同的服务,集群的一种)

双机模式式是集群的前身。

– THE END –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值