1.2 什么是可靠性工程

本节先初步介绍可靠性和可靠性工程这两个概念,以及可靠性工程的发展过程。

1.2.1 可靠性与可靠性工程概述

什么是可靠性

任何产品都有可靠性问题,都有可能出现故障甚至完全不能工作。可以说可靠性问题从世界上第一个人造产品诞生就有了,从早期人类制造的石头斧子,到现代的军工设备、电子设备,再到飞机、飞船以及满足我们日常生活的互联网服务平台,无不对可靠性有不同程度的要求。可靠性是所有产品的内在属性。按传统可靠性的理论,可靠性是指产品和服务在规定条件下和规定时间内完成规定功能的能力。也就是产品在使用过程中无故障或保持正常工作完成既定目标功能的能力,通常通过不可用时间长度、出问题概率、故障次数来表示可靠性程度。人们在生产、使用各种产品时都希望产品是可靠的。可靠性是个受众多因素影响、过程复杂的问题。

可靠性工程是一门从工程科学的角度研究产品故障发生发展规律,进行故障预防、修复,从而使得故障不发生或尽可能少发生的科学。也可以说可靠性工程是一门与故障做斗争的科学。无论传统物理可靠性、软件可靠性,还是互联网软件可靠性工程,其本质都是与故障做斗争。图1-1所示是可靠性工程与故障做斗争的整个过程。

图1-1 可靠性工程与故障做斗争的过程

接下来我们简述可靠性工程发展的阶段,帮助读者更好地理解软件可靠性工程。

1.2.2 可靠性工程发展的3个阶段

可靠性研究从产生到发展可分为3个阶段。

1.萌芽期:可靠性概念的产生及早期研究

可靠性的概念萌芽于1939年美国航空委员会提出的“飞机事故率不应超过每小时0.00001”。对可靠性的研究起源于二战中美国军用飞机的电子管可靠性问题。当时电子管问题导致很多飞机经常无法正常起飞,于是生产商更严格地按照设计图纸进行生产,结果生产出来的产品完全符合设计却依旧故障不断。为什么完全按图纸生产的合格电子管在安装后还会出问题呢?分析后发现是作战地区的气候影响了电子管的功能和寿命,于是他们根据环境特点进行了重新设计和生产,最终相关故障率大幅下降。在朝鲜战争中,美军发现不可靠的电子设备不仅影响作战,而且会耗费大量的维修经费,有些维修经费甚至是造价的好几倍。为了解决军用电子设备的可靠性问题,美国开始了系统性的可靠性研究。1950年12月7日美国成立了“电子设备可靠性专门委员会”。该委员会在1952年提出了“可靠性”的定义,并于1957年6月发布了研究报告《军用电子设备可靠性》。这份报告标志着可靠性作为一门独立学科的诞生。

2.发展期:可靠性工程全面发展

20世纪60年代是可靠性全面发展的十年,美国和苏联的战斗机、坦克、导弹、航天飞机、宇宙飞船等高精尖技术得到了快速发展,这些高风险装备能够可靠地进行作业离不开可靠性学科的日渐成熟。这些设备实战也促进了可靠性研究的迅速发展,可靠性设计、预计、试验、维修等一系列标准得以设立,可靠性的基础理论和工程方法得以进一步发展。

20世纪70年代,美国国防部建立了统一的可靠性管理机构,组织了国家级的可靠性政策、标准、手册和重大研究课题,制定了较完善的方法和程序,加强元器件可靠性控制,强调在设计阶段进行元器件降额设计和热设计,强调环境应力筛选及综合的可靠性试验。可靠性管理水平、标准、政策等在这十年得到进一步发展,在电子、机械等各工业领域被广泛应用。随着设备的现代化,硬件设备中包含软件的产品越来越多,软件成为产品中越来越重要的组成部分。科学家开始研究软件的可靠性,此时的软件可靠性研究方法基本是参照硬件设备的研究方法进行的。

20世纪80年代,可靠性工程向更深、更广、更通用的方向发展,可靠性已经与性能、费用、进度等处于同样重要的地位,从管理上更加统一化、制度化。可靠性技术也开始应用于多方向、多领域,如机械、光电、微电子可靠性等。在1991年的海湾战争中,美军战备完好性达到95%以上,因为可靠性问题导致的损失大幅减少,复杂先进的武器装备的可靠性提升非常明显,让其他国家对现代化战争有了全新的认识。20世纪90年代,软件可靠性工程逐渐成为独立的学科。

3.成熟期:可靠性工程现代化发展

21世纪进入全球化时代,工业向4.0方向升级发展,可靠性工程进入工业领域并影响着每个工业产品。家电、个人电子产品、汽车等行业竞争激烈,对可靠性的要求越来越高。手机、平板电脑出厂前的高温、低温、跌落、静电、振动试验,汽车的碰撞试验,本质都是可靠性试验。很多行业都形成了行业可靠性标准、规范,企业间的竞争也要求产品不断提高可靠性。这一时期可靠性工程在向综合化、系统化、自动化、智能化方向发展,也在很多领域与多学科进行交叉组合式研究,工程工作更多通过计算机自动完成,通过算法实现智能化。

可靠性在中国的研究起步较晚,20世纪50年代在广州成立亚热带环境适应性试验基地是我国开展可靠性工作的开始。而“中国制造”的崛起靠的就是产品可靠性的极大提升。

可靠性工程是一门学科,目前国内多所大学都开设了可靠性专业。国家职业资格注册考试中也有可靠性工程师资格考试。很多传统企业都有可靠性工程师这个岗位。经过数十年的发展,可靠性工程方向已经形成了很多国际标准、国家标准、行业标准、军用标准等。

1.2.3 传统物理可靠性工程方法

可靠性相关的理论及工程研究是现代工业可靠性的基础。接下来简单介绍可靠性工程的研究方法。本节讲的可靠性是指传统物理可靠性。可靠性工程包括可靠性、维修性、测试性、保障性、安全性、环境适应性以及可靠性管理等,它们组成了完整的可靠性体系。

1.可靠性工程方法

可靠性工程方法包括可靠性建模、可靠性分配、可靠性设计、可靠性预计等,也包括故障危害及模式分析、可靠性试验、人机可靠性、可靠性管理等。有很多研究方法值得软件系统的可靠性工程师学习参考。

(1)可靠性建模、分配、设计、预计

可靠性建模主要研究结构建模和数学建模。建模过程中会完成产品的结构定义、可靠性指标定义。物理设备常见的结构模型有并联、串联、旁联、表决等,分别对应互联网软件的架构设计、流程设计等技术。数学建模包括基本可靠性和系统可靠性两种量化模型,对应全链路风险分析和故障概率分析技术。

可靠性分配是指产品可靠性定量要求合理分配到子系统、设备、组件、元器件等单元上的分解过程。可靠性工程的分配方法有评分分配法、比例组合分配法、AGREE分配法,每种分配方法都总结了详细的分配过程方法和数学计算方法。

可靠性设计强调设计工作的首要作用,通过设计预防或减少故障,对应到软件工程则指软件系统的高可用、高可靠的架构设计。

可靠性预计是估计在给定工作条件下产品各个单元及由其组成的完整产品是否满足规定的可靠性要求,对产品可靠性的目标和预计的结果进行对比,判断是否达到规定要求。它是由局部到整体,由下到上的综合过程,可用在产品的各个阶段。可靠性预计方法包括评分预计法、元器件预计法、应力预计法、相似产品对比法等。可靠性预计也有相应严格的执行方法和过程。其中应力预计法类似于软件系统中通过模拟演练来预计整个系统可靠性的方法。

(2)故障模式、影响及危害分析

可靠性分析主要是指分析产品的故障模式、影响及危害性(简称为FMECA)。它是分析产品中所有潜在的故障模式及其对产品所造成的可能影响,并按每个故障模式的严酷程度及发生概率进行分类。FMECA是一种自下而上进行归纳汇总的分析方法。在物理设备、硬件产品方面,各个产品行业已经有了成熟的FMECA标准,对各类组件元件的故障模式、原因、影响等都有详细的规范规定。

可靠性分析中有一种故障树分析(Fault Tree Analysis, FTA)法,它将一个不希望发生的产品故障事件或灾难性事件作为顶级事件,通过自上而下的、按层次的、严格的故障因果逻辑分析,找到故障的必要且充分的直接原因,画出故障树,最终找出导致顶级事件发生的所有可能原因和多种原因的组合。F TA的技术、方法、理论也有成熟的研究成果。

FMECA是自下而上进行分析,FTA是自上而下进行分析,两者都是产品可靠性分析的重要工具。这两种方法在软件行业有少量应用,但方法论尚不够完备。传统物理可靠性的可靠性分析方法值得软件可靠性工程师学习借鉴。

(3)可靠性试验

可靠性试验是为了解、分析、提供、评价产品可靠性而进行的工作的总称,主要目的是发现产品在可靠性设计、元器件、材料、工艺等方面的缺陷。通过试验可以验证研制的产品是否符合可靠性要求,也可以提供有用的信息来帮助评估与改进产品可靠性。可靠性试验是重要且常用的可靠性方法,试验可以分为几类,如环境应力筛选试验、研制试验、可靠性增长试验、验收试验、鉴定试验、寿命试验等。以筛选试验为例,通过对温度、湿度、振动、冲击、加速度、电荷、电磁等指标进行筛选可以排除不良的元器件,也能模拟激活潜在缺陷,从而尽早发现问题,与软件产品的验收测试、压力测试、故障模拟有一点类似。以我们常用的手机为例,需要做热冲击、跌落、振动、湿热、高低温、防尘、防水、盐雾、结构耐久性、电磁干扰、SIM卡拆装、充放电、太阳辐射等可靠性试验,如果是老式手机,还要做按键、电池/电池盖拆装、导线连接强度、附着力等可靠性试验。

(4)人机可靠性

对人机可靠性的研究表明,所有产品都需要人来参与使用,人和产品又是在特定的环境中进行工作和作业的。人、产品、环境形成了“人—机—环”系统。人机可靠性注重研究可靠性中的人为差错。产品设计会影响操作使用,设计时要考虑人的心理(智能、动机、情绪、品行等)、感觉(视觉、触觉、听觉等)、力量等因素。运维人员在进行操作时,特别是在紧急手工执行命令或执行大规模操作时,需要遵循人机可靠性的原则。

(5)可靠性管理

可靠性研究认为可靠性也是管理出来的,工程组织、产品方案、设计、开发、使用、改进等可靠性工作都离不开管理工作。可靠性管理是从系统工程的视角出发,对产品设计、开发、生产、使用等各个阶段进行规划、组织、监督、控制,以实现低投入、高可靠性的目标。可靠性管理涉及各种工作流程、规范,如故障归零管理(技术五归零、管理五归零)、可靠性评审、培训、规范文档总结、落地执行等都是管理工作的一部分。架构设计评审、SLI/SLO/SLA管理、故障事后回顾、整改实施等工作都离不开可靠性管理。在当前互联网行业的可靠性工作中,小公司管理不完备、大公司管理不统一的问题比较突出,传统可靠性管理技术值得借鉴参照。

2.维修性工程方法

可靠性较高的产品不容易发生故障,维修性好的产品在发生故障后能实现低成本、高效的维修。产品不可能完全可靠,能迅速且低成本地修复是维修性工程研究的课题,维修性是可靠性的补充。维修性对很多设备,如武器、船舶、舰艇、汽车、手机等来说是非常重要的。维修性工程活动涉及人员、设备、设施、工具、备件、技术资料等,也涉及规定的维修程序和方法。维修性理论也研究了如何定量评价产品的可维修性。与维修时间相关的指标有维修度(规定时间条件下修复的概率)、维修时间密度等。我们常提到的MTTR(Mean Time To Repair,平均修复时间)也是传统维修性理论提出来的量化指标之一。维修性要求会深度影响产品的设计方案,在产品设计时就需要考虑如何达到产品的维修性要求。维修性同样有分配、预计、分析、试验、评价、管理等方面的研究。互联网软件可靠性工程的故障处理大都是以被动修复为主,从维修性工程的角度来看,更应该在早期主动从故障修复的要求出发,影响架构设计。

3.测试性工程方法

测试性是指出现故障时能快速发现、准确诊断、正确定位的能力,原属于维修性工程研究范畴,后来成为独立的学科。测试性也是产品的设计特性之一,是通过设计赋予产品的一种固有属性。测试性工程的定性研究提出了测试性与诊断技术,包括固有测试性设计、机内测试设计、测试点设计、故障隔离技术、自动测试设计等;定量研究提出了测试性参数和指标,如故障检测率、故障隔离率、虚警率等,也研究了测试性相关能力的评估方法。测试性与软件拨测监控及故障时诊断比较类似,互联网软件可靠性工程仅强调监控和可观测性是不够的。

4.保障性工程方法

保障性是指装备的设计特性和计划的保障资源能满足战备和战时使用要求的能力,跟我们平常宽泛的稳定性保障中的“保障”不是一个意思。保障性工程是为了满足维修和使用要求的产品设计、配套资源、人员训练、资料、配套设备、系统工具等的能力。保障性工程方法包括产品需要在设计时考虑故障时的抢修要求,组件要尽可能模块化(便于替换),也包括资源保障系统的设计规划,满足使用和维修的要求。一般用资源满足率、资源利用率、保障平均延误时间、管理延误时间等来度量。

5.安全性工程方法

安全性是指产品具有不导致人员伤亡、装备损坏、财产损失和不危及人员健康及环境的能力。安全性也是通过设计赋予产品的一种固有特性。安全性工程方法包括对各级别事故的管理、对危险和危险源的管理、对风险的可能性和危害严重程度进行分析度量,涉及识别风险、安全性分析、改进、安全性设计、安全性评价等工作。很多行业对安全性都制定了很具体的规则,并形成了安全生产标准的具体规定。一般用安全生产故障次数、事故概率、死亡人数进行度量。

6.环境适应性工程方法

环境适应性是指产品在其工作中可能遇到的各种环境的作用下,能实现其预定功能和性能不被破坏的能力,它也是产品的重要质量特性之一。环境包括诱发环境、自然环境、工作固有环境。在环境适应性工程研究中,大多会研究几种常见环境因素,如高温环境、低温环境、加速度环境、振动环境、潮湿环境等。物理设备对这些环境的适应性非常重要,环境对产品的可靠性有很大的影响。在产品研制过程中需要规定产品的预期环境,同时为了实现环境适应能力,产品也必须通过设计和一系列加工制造工艺来实现。在研制产品时会配有相应的模拟环境进行试验。在产品的设计、研制、交付等环节都要进行环境适应性试验。互联网行业中的混沌工程的本质也是强调反脆弱性,在一定程度上也体现了环境适应能力,具体可参考6.3.3节。