软件可靠性设计技术

        软件可靠性 (software reliability )是软件产品在规定的条件下和规定的时间区间完成规定功能的能力。 规定的条件是指直接与软件运行相关的使用该软件的计算机系统的状态和软件的输入条件,或统称为软件运行时的外部输入条件; 规定的时间区间是指软件的实际运行时间区间; 规定的功能是指为提供给定的服务,软件产品所必须具备的功能。 软件可靠性不但与软件存在的缺陷和(或)差错有关,而且与系统输入和系统使用有关。 软件可靠性的概率度量称软件可靠度。

        随着软件的日益普及,系统中软件成分不断增加,使得系统对软件的依赖越来越强。软件的可靠性对系统可靠性的影响越来越大。 而实践证明,保障软件可靠性最有效、最经济、最重要的手段是在软件设计阶段采取措施进行可靠性控制,为此提出了软件可靠性设计的概念。 软件可靠性设计就是在常规的软件设计中,应用各种方法和技术,使软件设计在兼顾用户功能和性能需求的同时,全面满足软件的可靠性要求。 软件可靠性设计应和软件的常规设计紧密结合,贯穿于软件设计过程的始终。

        常见的可靠性设计技术有容错设计、检错设计、降低复杂度设计等技术。

1、容错设计技术:

        对于软件失效后果特别严重的场合,采用容错设计技术。 常见的容错设计技术有三种:恢复块设计、N版本程序设计和冗余设计。

(1)恢复块设计:选择一组软件操作作为容错设计单元,把普通的程序块变成恢复块。一个恢复块包含有若干个功能相同、设计差异的程序块文本,一个运行文本,多个备份文本,构成“动态冗余”,一旦运行文本出现故障,则用备份文本替换。软件容错的恢复块方法就是使软件包含有一系列恢复块。

(2)N版本程序设计:N版本程序的核心是通过设计出多个模块或不同版本,对于相同初始条件和相同输入的操作结果,实现多数表决,防止其中某一软件模块/版本的故障提供错误的服务,以实现软件容错。

(3)冗余设计:在一套完整的软件系统之外,设计一种不同路径、不同算法或不同实现方法的模块或系统作为备份,在出现故障时可以使用冗余的部分进行替换,从而维持软件系统的正常运行。缺点是费用和资源的消耗会有所增加。

2、检错技术:

        在软件系统中,无需在线容错的地方,或不能采用冗余设计技术的部分,如果对可靠性要求较高,故障有可能导致严重的后果时,一般采用检错技术,在软件出现故障后能及时发现并报警,其缺点是不能自动解决故障。

3、降低复杂度设计:

        软件复杂性与软件可靠性有着密切的关系,是产生软件缺陷的重要根源。 在设计时考虑降低软件的复杂性,是提高软件可靠性的有效方法。 降低复杂度设计的思想是在保证实现软件功能的基础上,简化软件结构,缩短程序代码,优化软件数据流向,降低软件复杂度,从而提高软件可靠性。

        可靠性的计算: 计算机系统可靠性涉及的因素非常多,但是可以通过建立适当的数学模型,将大系统分为若干子系统计算系统可靠性。一般而言,只需记住计算公式,即可快速得到答案。

(1)串联系统:假设一个系统由N个子系统组成,当所有子系统都能正常工作时,系统才能正常工作,这种系统为串联系统,各子系统的可靠性假设为R1,R2,R2...Rn,其整个系统可靠性为R=R1*R2*R2... *Rn; 如果各个系统的失效率为λ1,λ2...λn,则整个系统的失效率为U=λ1+λ2+λ3+...+λN。

(2)并联系统:假设一个系统由N个子系统组成,当全部子系统都不能正常工作时,系统无法工作,只要有一个正常,系统就可以正常工作,各子系统的可靠性假设为R1,R2,R2...Rn,则可靠性R=1-(1-R1)*(1-R2)*...(1-Rn); 假设各个子系统的失效率都为λ,其失效率 1/U=1/λ(1+1/2+1/3+1/N)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨正同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值