系统架构设计师-系统可靠性分析与设计

目录

一、可靠性相关基本概念

二、可靠性指标

        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

                并联:

系统架构设计师-系统可靠性分析与设计_第1张图片

                         可靠性:R = 1 -(1 - R1)*(1 - R2)* ...*(1 - Rn)

        2、混合系统

系统架构设计师-系统可靠性分析与设计_第2张图片

 

三、可靠性设计

系统架构设计师-系统可靠性分析与设计_第3张图片

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

        (1)软件的开发方法和开发环境(2)运行环境

        (3)软件系统的规模(4)软件的内部结构(5)软件的可靠性投入

        

        2、增加可靠性的解决方案

                2.1 避错技术

                        例如:使用CMMI(能力成熟度模型集成)规范管理过程、应用测试等。

                2.2 降低复杂度设计

                        设计层面降低系统复杂度。

                2.3 检错技术

                        出错后报警,人工处理,成本较低。

                2.4 容错技术

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

                                多个版本同时计算获得到结果,通过表决器算法最终确定采用结果。主要应用在可靠性要求极高的场景,成本高。例:飞行控制系统、高铁信号系统。

系统架构设计师-系统可靠性分析与设计_第4张图片

                                 与通常软件开发过程不同的是,N版本程序设计增加了三个新的阶段:相异成分规范评审、相异性确认、背对背测试。

                                N版本程序的同步、N版本程序之间的通信、表决算法(全等表决、非精确表决、Cosmetie表决)、一致比较问题、数据相异性。

 

                        (2)恢复快设计(动态冗余)

系统架构设计师-系统可靠性分析与设计_第5张图片                                 设计时应保证实现主块和后备块之间的独立性,避免相关错误的产生,使主块和备份块之间的共性错误降到最低程度。

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

 

                        【N版本程序设计与恢复快方法区别】

系统架构设计师-系统可靠性分析与设计_第6张图片

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

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

 

                        (3)防卫式程序设计

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

                                实现策略:错误检测、破坏估计、错误恢复。(例:代码中 try / catch 函数)

                        冗余:

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

                        (2)信息冗余(校验码)

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

 

        3、双机容错

系统架构设计师-系统可靠性分析与设计_第7张图片

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

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

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

                 双机模式是集群的前身

你可能感兴趣的:(软考高级,系统架构师,系统架构,软件工程)