十六、软件可靠性

软件可靠性是软件产品在规定的条件下和规定的时间区间完成规定功能的能力。

平均失效前时间(MTTF):平均无故障时间,发生故障前正常运行的时间。

平均恢复前时间(MTTR):平均故障修复时间,发生故障后的修复时间。

平均故障间隔时间(MTBF):失效或维护中所需的平均时间,包括故障时间以及检测和维护设备的时间。

MTBF=MTTF+MTTR。全系统可用性=MTTF/(MTTF+MTTR)*100%。

串并联系统可靠性

串R=R1*R2*-*Rn

并R=1-(1-R1)*(1-R2)**(1-Rn)。

软件可靠性测试

广义的软件可靠性测试是指为了最终评价软件系统的可靠性而运用建模、统计、试验、分析和评价等一系列手段对软件系统实施的一种测试。

狭义的软件可靠性测试是指为了获取可靠性数据,按预先确定的测试用例,在软件的预期使用环境中,对软件实施的一种测试。它是面向缺陷的测试,以用户将要使用的方式来测试软件。

软件可靠性测试由可靠性目标的确定、运行剖面的开发、测试用例的设计、测试实施、测试结果的分析等主要活动组成。

测试步骤:定义软件运行剖面(为软件的使用行为建模)一设计可靠性测试用例一实施可靠性测试。

软件可靠性评价3个过程:选择可靠性模型、收集可靠性数据、可靠性评估和预测。

软件可靠性建模

软件可靠性模型是指为预计或估算软件的可靠性所建立的可靠性框图和数学模型

从技术的角度来看,影响软件可靠性的主要因素包括:运行环境、软件规模、软件内部结构、软件的开发方法和开发环境、软件的可靠性投入。

一个软件可靠性模型通常(但不是绝对)由以下几部分组成:模型假设、性能度量、参数估计方法、数据要求

绝大多数的模型包含3个共同假设:代表性假设、独立性假设、相通性假设。

可靠性管理的内容包括软件工程各个阶段的可靠性活动的目标、计划、进度、任务和修正措施等

软件可靠性设计(软件设计阶段)

软件可靠性设计原则

(1)软件可靠性设计是软件设计的一部分,必须在软件的总体设计框架中使用,并且不能与其他设计原则相冲突

(2)软件可靠性设计在满足提高软件质量要求的前提下,以提高和保障软件可靠性为最终目标。

(3)软件可靠性设计应确定软件的可靠性目标,不能无限扩大化,并且排在功能度、用户需求和开发费用之后考虑

软件可靠性设计技术主要有

1 容错设计:容错是指系统在运行过程中发生一定的硬件故障或软件错误时,仍能保持正常工作而不影响正确结果的一种性能或措施。

2 检错设计

3 降低复杂度设计等技术。

避错(排错)技术是通过技术评审、系统测试和正确性证明等技术,在系统正式运行之前避免、发现和改正错误。

容错技术主要是采用冗余方法来消除故障的影响。主要的冗余技术有结构冗余(静态、动态、混合)、信息冗余、时间冗余和冗余附加4种。

软件容错技术主要有

1N版本程序设计(其设计思想是用N个具有相同功能的程序(不同的人独立设计)同时执行一项计算,结果通过多数表决来选择)

2 恢复块设计(动态冗余、主动冗余):其主要方式是多重模块待机储备,当系统检测到某工作模块出现错误时,就用一个备用的模块来替代它并重新运行。

热备份系统(双重系统)可与主模块一样工作

冷备份系统(双工系统、双份系统)。正常时备用的模块不工作

3 防卫式程序设计:(自动撤销恢复)防卫式程序设计的基本思想是通过在程序中包含错误检查代码和错误恢复代码,使得一旦发生错误,程序就能撤销错误状态,恢复到一个已知的正确状态中去。

策略包括错误检测、破坏估计和错误恢复三个方面。

双机容错技术:是一种软硬件结合的容错应用方案。该方案是由两台服务器和一个外接共享磁盘阵列及相应的双机软件组成。采用“心跳”方法保证主系统与备用系统的联系。

工作模式:双机热备模式;双机互备模式;双机双工模式。

集群技术:就是将多台计算机组织起来进行协同工作,每台计算机均承担部分计算任务和容错任务,通过各计算机之间的负载转嫁机制完成新的负载分担。

分类:高性能计算集群、负载均衡集群高可用性集群。

负载均衡:并行和共同工作,如何让所有节点承受的负荷平均,目的是加快集群系统的响应速度,提高客户端访问的成功概率。

负载均衡实现技术主要有以下几种:

1 基于特定软件的负载均衡(应用层)。基于HTTP重定向服务

2 基于DNS的负载均衡属于传输层负载均衡技术。应答DNS查询时,解析不同的源站

3 基于NAT的负载均衡。将一个外部IP地址映射为多个内部IP地址。

4 反向代理负载均衡