摘要: 一、问题的由来
可靠性系统工程是研究产品全寿命过程中与故障作斗争的工程技术。研究可靠性就必然使人想到英文中的两个词“failure”和“fault”。讨论它们的定义会很有意义。
我国1990年颁布的国军标GJB451“可靠性维修性术语”对failure和fault是这样描述的:故障(failure,fault)——产品或产品的一部分不能或将不能完成预定功能的事件或状态。对某些产品,如电子元器件、弹药等称失效。在此定义中failure和fault是同一概念,统称为“故障”。1994年制定的国标GB/T3187《可靠性维修性术语》定义为:失效(failure)——产品终止完成规定功能的能力这样的事件。故障(fault)——产品不能执行规定功能的状态。预防性维修或其他计划性活动或缺乏外部资源的情况除外。故障通常是产品本身失效后的状态,但也可能在失效前就存在。在此,失效和故障的定义是分开的。在国外的许多标准术语中,除个别外,历来都是将failure和fault的定义加以区分的。但很不统一,也是讨论的热点问题。
在制定国军标GJB3385-98《测试与诊断术语》时,就提出对failure和fault要不要加以区分,不区分会带来什么问题,如何定义和理解等问题。当时取得的共识是必须加以区分,“failure”对应的中文为“失效”;“fault”对应的中文为“故障”。
为了深入理解和确切定义“失效”和“故障”,在原国防科工委(现总装备部)技术基础的“可靠性、维修性、测试性、保障性、安全性(RMTSS)工程有关术语的协调与统一”课题中,通过全面收集国内外有关资料经深入研究、分析,对失效和故障的理解和看法得到共识。
二、几点结论性看法
(1)除个别标准(如英国的BS 00-49-96)外,国外历来都是将failure和fault的定义加以区分的。美军标MIL-STD-721C-81等,虽然都将失效和故障分开,但并不强调失效(failure)是事件,故障(fault)是状态。在美军标MIL-STD-721C中把“产品或产品部件不或不能完成规定功能的事件或不能工作的状态”(注意:事件或状态)统称为失效。在721C和1309D中都定义“失效的直接原因为故障”,其他标准中如国际电工标准IEC50(191),前苏联国家标准ГОСТ27.002-89,日本信赖性用语JISZ8115-81,欧洲空间标准化合作组织标准ECSS-P-001A等都把失效(failure)看作事件,而把故障(fault)作为状态。一个产品不能完成规定功能,即产品已经不具备完成规定功能的能力,那么该产品就失去应有的效用,这样的事件就称为失效。产品不能执行规定功能的状态称为故障。产品失效后,就不可能执行规定的功能,该产品就处于故障状态。
(2)产品不能执行规定功能是由于产品失效,由于产品出了故障。但预防性维修或其他计划性活动,如定期进行的维护、保养或测试检查等,这时产品同样不能执行规定功能,但产品本身是完好的,因为这种情况不属产品有故障,因此应在故障的定义中除外。此外,由于缺乏外部资源,如不属产品本身的供电系统(一次电源)因故不能供电等情况,同样应在故障定义中除外。
(3)一般而言,故障是产品本身失效后的状态,此时产品处于故障状态,这时故障和失效是不需要严格加以区分,对无容错的硬件产品或软件产品而言,故障即失效。然而,在很多场合,产品有故障,但不一定失效,对有容错或冗余的硬件产品或软件产品,这是显而易见的。这时,我们就必须区分失效(failure)和故障(fault)的概念。容错是指产品在出现有限数目的硬件或软件故障的情况下,仍可提供连续正确执行规定功能的能力,此时,产品可以出故障,但不会失效。只有当所有冗余数目的硬件或软件同时有故障(概率非常小)时,产品才失效。所以说,故障也可能在产品失效前就存在,对于较复杂的产品(尤其是复杂的武器装备),这种情况经常可能发生的。因此,失效(failure)和故障(fault)应在定义上严格加以区分。
(4)有关故障和失效的因果关系,在ISO/IEC DIS2382-14中,从产品结构的层次上归纳得比较清楚,其观点就是:某层次产品由于某种原因使该层次产品失效,从而使其处于不能完成规定功能的“F”状态,而从高一层次产品的角度来看,这个“F”状态可能就是该高一层次产品失效的原因。在IEC50(191)中,这个“F”状态就称为“故障(fault)”。
(5)单就软件而言,对于软件产品,其故障的因果关系如图1所示。
软件产品在开发过程中人员失误,包括软件规格说明中对用户要求不明确,或有遗漏或解释错误;设计说明中对需求理解不正确或有遗漏;编程过程中的差错等。人为的失误会使软件产品中存在某些缺陷和/或隐错。存在缺陷或隐错的状态就是软件产品有故障。在运行阶段如果遇到这些缺陷或隐错,软件产品就可能发生终止完成规定功能能力的事件,这就是软件产品失效。但是如果在运行阶段未遇到缺陷或隐错,软件产品也不一定会失效。
此外,还可以从软件产品不同层次来看故障与失效问题。例如一个软件可能由若干软件部件组成,每个软件部件又由若干软件单元组成,假设在运行阶段某个软件单元遇到故障引起失效,但包含该软件的相关部件可能由于有容错性设计而仍能继续执行规定的功能,那么对该软件部件来说并未发生“失效”事件,而只是由于软件单元出“差错”或“失效”,使整个软件部件处于故障状态。因此在软件产品的不同层次中,故障导致的结果可能是失效,也可能只是差错(故障的一种表现),而不失效。
综上所述,就软件产品而言,故障与失效是不同的,应加以区别。
(6)GB/T3187-94中有关失效和故障的术语基本上采用了IEC50(191)的定义,它比较严格、确切而且全面地区分了失效和故障的定义。IEC的这个标准是目前国际上普遍采用和公认的,与我们目前的理解和认识没有矛盾。而且对硬件产品和软件产品均可适用。因此,对术语“失效”和“故障”的统一和定义建议参考IEC或GB/T3187为好。