软件可靠性与硬件可靠性分析及对比
扫描二维码
随时随地手机看文章
引言
可靠性的定义是零件、部件、产品或系统在指定的时间内、指定的环境中,并在特定的条件下无失效执行其预定功能的概率。为了更好地理解这个定义,需要区分失效和故障两个概念。
失效(Failure)是指系统或组件在规定条件下无法完成预定功能的事件。通常失效是由于发生了故障,从而无法继续为用户服务而导致的;故障(Fault)是指系统中的缺陷,能够引发一次或多次失效。
本文主要阐述软件可靠性和硬件可靠性的不同特点,给出硬件可靠性和软件可靠性的概述及一些研究和建模的方法。
1 软件可靠性和硬件可靠性的比较
1.1 软件可靠性和硬件可靠性的区别
软件和硬件本质上的不同决定了它们具有不同的失效机制。硬件是一种物质产品,主要的失效原因是材料的老化;而软件是一种逻辑产品,失效的根本原因是设计错误,而设计错误又是与人为因素和设计过程密切相关的,因此难以从直观上分类、检测和纠正。正因为这样,软件可靠性相对来说更加难以预测。表1所列是与可靠性相关的硬件和软件属性的比较。
1.2 软件可靠性和硬件可靠性的相关性
软件和硬件产品的生产在很多方面是相似的,在整个设计和开发的过程中可以使用同样的管理方法。其次,当软件和硬件是统一系统的不同组成部分时,它们的失效问题不能割裂开来考虑,因为它们之间存在着显著的相互作用。在这样的系统中,硬件子系统和软件子系统并不是完全相互独立的。此外,任何软件产品都需要在硬件平台上运行,而任何硬件产品的生产都包括软件的因素,如产品设计、自动控制程序等。从这个层面上来说,不存在绝对的软件或绝对的硬件。随着硬件和软件相互涉及程度的不断加深,区分硬件失效和软件失效也变得越来越困难。
|
表1硬件可靠性和软件可靠性属性比较 |
||
|
特征 |
硬件 |
软件 |
|
失效原因 |
物理原因(如失真、断裂、腐蚀、漂移) |
主要为设计缺陷 |
|
磨损 |
会受到磨损 |
无磨损 |
|
时间相关性 |
失效率为常数 |
失效率随时间单调下降 |
|
环境因素 |
振动、冲击和温度影响可靠性 |
可靠性基本不受影响 |
|
可靠性预测 |
受物理规律制约,相对容易 |
无法由物理知识预测 |
|
冗余 |
故障处理的一般手段 |
无法改进可靠,性 |
|
以标准部件构造 |
有助提高可靠性 |
无标准部件 |
2 硬件可靠性
2.1 失效率曲线
讨论可靠性时,一个典型的概念是失效率曲线(浴盆曲线)。如图1所示,按硬件失效的发生时间,硬件失效率曲线可分为三个不同阶段:早期、稳定期和损耗期。每一时期可能发生的失效分别是质量失效、随机失效和损耗失效。
生命周期早期的失效是与过程有关的,比如在设备的生产过程中形成的一个潜在的缺陷在工作压力下会逐渐暴露出来。而随着时间的推移,存在生产缺陷的设备将先后失效。将这些设备移除或修复后,失效率会逐渐降低。
当存在潜在缺陷的设备失效并全部被移除后,再发生的失效就是随机失效。在这一阶段,剩余的高品质设备将稳定工作,这时发生的失效通常可归结为由于偶尔的压力过大(如电源浪涌、软件错误)而随机发生的,失效率趋于常数。
损耗失效是在工艺限制下的固有过程,它是由设备磨损、腐蚀等引起的老化而导致的。一般来说,这一时期的故障率是上升的。
2.2 常用分布
在可靠性分析中,通常需要对失效概率密度函数作出假设,有了这些假设就可以借助传统的统计方法来预测系统的行为。
具有稳定失效率的指数形式失效概率分布是可靠性研究中应用最广泛的分布形式。它假定位于早期之后、损耗期之前的中间阶段失效率一直保持常数,尤其适用于电子元件和概率模型。
指数分布的概率密度函数可由下式给出:
p(t)=λe-λtt>0 (2)
将式(2)在时间区间[0,t]内积分即可得出P(t),再应用可靠度的定义R(t)=1-P(t)得到可靠度为:
R(t)=e-λt (3)
呈指数式分布的失效具有危害函数(hazardfunction)是:
将MTBF的定义应用到式(3)所示的指数分布中,则可得到下式:
其中,t即是平均失效间隔时间(MTBF)。
若是已知R(t)求解t,可将式(5)变形为如下形式:
另一种广泛使用的硬件可靠性分布是威布尔分布:
式(7)中由于引入了参数α,而威布尔分布的危害函数可以为常数、增函数或减函数,而且具有很好的灵活性,因而非常适用于机电类产品的磨损累计失效形式。
一般地,当α=1时p(t)是常数;当a>1时,h(t)单调增加;当α<1时,从p(t)单调递减。这样就可以全面分析系统三个阶段的失效情况。威布尔分布的概率密度函数是:
p(t)=αλ(λt)α-1e-(λt)α,>0 (8)
式(8)中,λ称为形状参数。当α=l时,威布尔分布即指数分布。威布尔分布的可靠度为:
R(t)=e-(λt)α (9)
3 软件可靠性
3.1 失效率曲线
将软件可靠性的特点也可通过坐标曲线来表示,从而得到图2所示的失效率曲线。
图2 典型的软件失效率曲线甘
由图2可看出,软件可靠性具有与硬件可靠性不同的特点,主要区别有二:一是在软件生命周期的中间段,每次升级软件后失效率会有所增加,随后又逐渐降低并趋于平稳,原因是潜在的问题不断地被发现和修复。第二个区别是在生命周期的最后一段中,失效率并不表现出像硬件失效率那样明显的增长,原因是这一时期软件正接近报废,不会再对其进行升级或更新,因此失效率也不会改变。
3.2 软件可靠性模型
作为一种重要的测量方法,建模能够帮助我们在设计、编码和测试的过程中发现和修正故障,以及描述已交付产品中残留故障可能造成的影响,从而减少错误,降低影响。一个良好的软件可靠性模型不但应能够准确地预测未来的失效行为和计算其相关的数据,而且应该以合理的假设为基础,并具有广泛的适用性。通过可靠性模型可以估计或预测可靠性,无论是软件可靠性,还是硬件可靠性,建模技术都是基于观察和积累失效数据并用统计推理方法对其进行分析。两者主要的区别在于前者使用从当前软件开发过程中获得的数据来计算过去和当前的可靠性,主要用在软件生命周期的较后阶段;而后者使用历史数据来提供对将来可靠性的预测,因此常用于开发或测试阶段。
软件可靠性模型指明了失效过程与一些主要失效因素之间的依赖性关系,如故障的引入,故障排除以及运行环境等,这些因素在建模时必须加以考虑。实际应用中一般的建模过程是:首先确定软件应用(软件产品)中所有与可靠性评估或预测有关的部分并指明可靠性规范,然后确定项目中错误、故障和失效的具体定义,选择能够反映系统实际使用方法的测试案例,最后选择一个可靠性模型来应用。收集的数据量应能足以确定软件是否能达到预定的可靠性目标,并选定一种参数估计方法。一旦完成数据收集和模型参数估计,分析人员就能够依此进行合理的分析。
3.3 模型的分类
自1972年第一个软件可靠性模型发表以来,过去的数十年中共出现了两百多种模型,人们试图借助它们来探究软件失效的原因和过程,由此来量化软件的可靠性,但这个问题在很大程度上仍然未能解决。对于复杂的软件,没有一种模型能获得满意的效果,量化的过程中不得不加以约束条件和假设。因此,没有一种模型能够适用于所有的情况,也没有一种模型是完善的,或是有代表性的。
大多数软件模型包括这几部分:假设、因素,以及一个能将可靠性和因素联系起来的数学函数,通常是高阶指数或对数函数。根据参考文献中提出的分类方法,软件可靠性模型大致可分为有限失效模型和无限失效模型两类。若假定有限时间内的失效次数是有限次,也就是软件中的故障最后能被全部清除,则这类模型称为有限失效模型。Jelinski-Moranda模型㈤是一个早期的有限失效模型,它的失效数量在时间上呈二次分布。Schneidewind模型&和Musa模型E是具有泊松分布的有限失效模型。反之,若假定软件无法达到无故障状态,则这类模型称为无限失效模型。Musa-Okumoto模型和Little-Verrall模型団是这类模型的典型例子。
4 结语
现代科技水平不断提高使得各种设备和产品朝着高性能、高复杂度的方向发展,而可靠性往往随着复杂度的提高而降低,因此可靠性研究的意义是非常重大的。在可靠性研究中,硬件可靠性技术相对成熟,而软件可靠性正获得越来越多的关注。
20210831_612da72182fe1__软件可靠性与硬件可靠性分析及对比