本书的原著为:《Design Patterns for Embedded Systems in C ——An Embedded Software Engineering Toolkit 》,讲解的是嵌入式系统设计模式,是一本不可多得的好书。
本系列描述我对书中内容的理解。本文章描述嵌入式安全性和可靠性模式之一:安全性和可靠性介绍。
可靠性
(Reliability) 是衡量一个系统“运行时间”或“可用性”的度量标准。它反映了系统在出现故障前成功完成计算的概率。换句话说,它是系统能够提供服务概率的一种随机度量。通常使用 平均故障间隔时间
(MTBF)或成功提供服务的概率(如0.9999)来量化这一指标。可靠性分析通常在 故障模式与影响分析
(FMEA)中进行管理。
平均故障间隔时间:衡量系统或设备在两次故障之间平均工作时间的指标。它是可靠性的一个重要参数,用于预测系统的稳定性。
故障模式与影响分析:一种预防性的质量工具,旨在识别产品设计或过程中潜在的故障模式,评估其对系统的影响,并确定相应的优先级以改进设计或控制过程。通过FMEA,可以在产品设计阶段识别并解决潜在的可靠性问题。
安全性
(Safety ) 和可靠性是两个不同的概念。一个安全的系统指的是在运行过程中不会对人员或设备造成过多危险。危险是导致事故或灾祸发生的事件,即会带来某种形式的损失,如人员伤亡。危险发生的 危害
有多大?需要评估危险的严重性和危险发生的可能性,通过计算这两者的乘积来确定危害的大小。
产生危害的基本方式有 5 种:
- 能量释放
- 毒素释放
- 干扰生命维持功能
- 向安全人员或控制系统提供误导性信息
- 出现危险情况时没能及时报警
与安全性和可靠性相关的 缺陷
(Faults)
事故的发生可能是由于系统中存在 错误
(errors),或者是由于系统的某些方面出现 失效
(fails)。
- 错误:系统
缺陷
(fault) 行为导致或者需求不正确、糟糕的设计或糟糕的实现导致。
有的错误可能不可见,但它始终存在于系统中。当错误可见时,就称其为显性错误。 - 失效 :会在某个时间点发生,并导致系统进入失效状态。也就是说,系统之前运行正常,但某些东西发生了变化,例如汽车传动系统中的金属杆断裂(持久性故障),或者汽车发动机控制计算机中的某个数据位翻转,但随后又恢复正常(易失性故障)。
缺陷 (fault) 即可能导致错误 (error),也可能导致失效 (failure)。
本章讨论安全和可靠系统时,涉及到 3 个术语:即
error
、failure
、fault
。
- error (错误):机组人员或维修人员的疏忽或不正确的行为,或需求、设计或实施中的错误。
- failure (失效):影响部件、零件或元件运行,使其无法按预期运行(包括功能丧失和不期望的行为)。
- fault (缺陷):导致项目或系统中出现显性错误,这种错误可能导致失效。
通常是某个
缺陷
行为导致了错误
,然后产品运行失效
。
之所以区分这两种不同的缺陷,是因为针对这两种缺陷的解决方案是不同的。具体来说:
失效
(failures) 可以通过同构冗余
来解决。同构冗余是指创建系统或组件的多个完全相同的副本,以增加系统的可靠性。如果其中一个副本发生故障,其他副本可以继续提供服务。- 如果原始设计或代码中存在
错误
(errors),那么这个错误可能会在所有副本中复制。在这种情况下,为了继续安全地运行,你必须使用异构冗余
。异构冗余是指使用不同的设计、代码或实现方式来创建提供相同服务的多个通道或组件。这种方法的好处是,即使其中一个通道由于某种特定错误而失效,其他通道由于使用了不同的设计或代码,可能不会受到同样的影响,从而增加了系统的整体健壮性。
缺陷与系统中的各种元素有关。可以在需求中规定缺陷的行为。系统中的一个元素可能是缺陷的源头,另一个元素可能帮助识别缺陷,还有元素可能缓解缺陷。
我相信并不存在所谓的“安全软件”,因为系统是否安全是由复合系统决定的,即电子、机械和软件在它们的操作环境中协同工作——所决定的。硬件缺陷可以通过软件缓解,反之亦然。我们说安全,指的是整个系统是安全的或者不安全的。
类似的,系统的可靠性是系统中所有组成部分的函数。一个系统的可靠性不仅仅取决于单个组件的可靠性,还取决于这些组件如何协同工作以及是否有备用机制来应对组件故障。关于如何评估安全性和可靠性以及如何构建安全和可靠的系统,有大量的文献可以参考,但对这些主题的详细讨论超出了本书的范围。
实现安全性和可靠性
一般来说,所有对安全性要求严苛的系统和高可靠性系统,都必须包含并妥善管理冗余性,以确保达到它们的安全性和可靠性要求。如何管理这些元素取决于安全和可靠性问题之间的特定平衡。这种冗余可以是“大范围内的冗余”(架构冗余)或“小范围内的冗余”(详细设计冗余)。在本书中,我们将考虑这两种冗余的几种模式。
读后有收获,资助博主养娃 - 千金难买知识,但可以买好多奶粉 (〃‘▽’〃)