2.5.2 软件失效
软件失效(Software Failure)是指软件运行过程中,规定功能的终止。该定义包含三方面的含义:一是软件系统不能在规定的时间内和条件下完成规定的功能,丧失对用户预期服务的能力;二是功能单元执行所要求功能的能力终结;三是软件操作偏离用户需求。与硬件不同,软件不会因为环境应力作用而疲劳,也不会随时间推移而磨损和耗散,软件寿命失效可能是因为硬件寿命失效所致,随机失效通常由设计过程中所遗留的内部缺陷所致。
2.5.2.1 软件失效与软件缺陷的关系
在特定的条件下,缺陷被激活,诱发软件失效。由于软件系统结构及缺陷产生机理的复杂性,执行路径不能完全准确刻画软件的失效行为。对于呈分立状态的软件系统,状态数往往比其驻留环境的非重复状态数大得多,软件失效可能是单个缺陷或缺陷组合所致。图2-16形象地给出了软件失效与软件缺陷的关系。
图2-16 软件失效与软件缺陷的关系
软件缺陷是一种内在的物理及静态存在,而软件失效则是一种动态行为。如果软件存在缺陷,对于确定的输入或其组合,会将处于休眠状态的内部缺陷激活,导致软件失效。来源于系统的物理或人为环境错误等也是导致软件失效的重要原因。同一缺陷在不同条件下被激活,可能产生不同失效及组合。软件测试过程中,受输入制约,直观呈现出的往往是单点失效,从而掩盖了软件缺陷的本质。
对于大型复杂软件系统,因其结构的复杂性、系统的多功能性、运行场景的多变性、使用环境的极端性,支持这种复杂情形的开销往往存在显著的差异,尤其是对于智能软件系统,具有非确定性和确定性相结合的缺陷触发与传播机理,对软件缺陷及失效机理的认识将变得更加困难,似乎已无路可循,难道得另辟蹊径?
抽象系统功能模式是执行一个输入域I到输出域的映射。系统运行过程中,从输入域I中选择一个输入点序列,输入空间分别是错误输入子空间及激活缺陷的输入子空间(Iafi) ,系统失效域为
(2-6)
当输入轨迹进入时,缺陷被激活,诱发系统失效。选择输入点时,对应一个非零的系统失效概率p,无论选择什么输入点,p都暂时不变。假设离散系统概率为
(2-7)
若为与输入相关的执行时间,那么不论选择什么样的输入点,当te→0 时,失效率为
(2-8)
2.5.2.2 失效率
工程上,用失效率度量软件失效。软件失效率(Software Failure Rate)是指软件在时刻尚未发生失效的条件下,在t时刻之后的单位时间内发生失效的概率,有时称之为风险函数(Hazard Function)。根据定义,可以得到
(2-9)
由于f(t) 是随机变量的密度函数,那么式(2-9)可表示为
(2-10)
在初始条件R(0)=1 时,求解该常微分方程可得到
(2-11)
如果λ(s) 为常数,则可以得到
(2-12)
2.5.2.3 失效强度
失效强度(Software Failure Intensity)是指在单位时间内,软件失效的机会或可能性,即在时间区间上,当时,软件故障数的期望值与该时间区间的长度之比的极限值。在非齐次泊松过程模型中,用表示故障数的期望值,f(t) 表示失效强度。有
(2-13)