软件质量:平衡风险和成本

考虑过程行业的失败的常见原因,例如管道变得腐蚀和压裂,阀门粘附,或各个组件的其他身体问题。整个系统的安全性取决于这些各个组件的可靠性,因此系统旨在消除(即可尽可能可行)单点故障,其中一个组件可能会失败并导致事故。

图1中的双泵证明了对此故障的需求。例如,在较低速度下运行,减少了机械应力和噪音。但是,一个这样的一个关键特征,如此,即使它涉及精确复制的组件,任何可能的失败的确切时间都足够不可预测(“随机失败”),因此同时失败的机会非常不可能。


图1:使用双模冗余原理设计的泵送系统。 (来源:LDRA)

为了确保失败率在规范内,危险分析的过程试图识别系统可以进入的所有危险状态,并绘制故障树以分析可能导致每个危险发生的情况。这种过程建立在潜在的假设,即系统设计复制组件或组件是声音的。如果不是这种情况,则不会在共存的特定情况下始终出现导致导致的失败,称为“系统故障”。

软件在物理组件的方式方面不是年龄。一般而言之,软件失败是在指定系统的设计,设计和构建时创建的软件故障的结果,并且这些故障将导致在某些情况下发生故障。他们也是系统的失败,但在一个现代汽车可以包含1000万行软件的世界中,假设失败不会发生的情况是愚蠢的。

软件冗余

大多数功能安全过程标准参考某种形式的“V”模型。考虑来自EN / ISO 13849:2015的图2所示的示例,“机械安全—控制系统的安全相关部件“ 

点击查看完整大小的图片

图2:V-Model软件开发生命周期模型来自ISO 13849:2015,“Safety of machinery –控制系统的安全相关部件”。 (来源:ISO 13849:2015通过LDRA)

假设将升级图1中所示的简单系统,并应用于每个泵需要拥有自己的定制,安全关键的嵌入式控制器,以根据ISO 13849开发的情况。

如果同一控制器应用于两个泵,则在原始系统中提供的强大的双冗余保护将受到损害。如果软件中有一个错误导致泵在特定的情况下发生故障,那么两个泵都会同时失败。

如果这是不可接受的,那么通过部署两个不同的设计团队可以通过使用不同的硬件和操作系统开发系统来开发系统,以及使用不同的高级语言的离散开发团队来最小化风险。

足够安全有多安全?

以这种方式开发系统可能是商业良好的 - 但可能不是。妥协需要定义代表“足够安全”的系统的定义。

一种方法是使用失败模式和效果分析(FMEA)形式的应用统计数据。这涉及考虑每个组件和子系统,然后分析每个组件和子系统可能会失败,如果它确实会发生什么。对该方法的改进,失败模式效应和关键性分析(FMECA),带来了该计算的临界性。

适用于我们的示例泵控制器两个的故障模式比仅适用于一个的故障模式更为重要;这将反映在任何临界分析中的事实。另一种考虑可能是经过多年多年的多年来经过验证的普通处理器或rdoss可能比新制定的,定制代码更少。

参考图2中的V模型,可以进一步解释该新代码的开发生命周期。例如,在限制支出时降低风险的一种方法可能是使用共同的设计,而是基于它开发两个控制系统软件包。在这种情况下,共享设计缺陷的风险仍然存在,但共享软件错误或编码错误的可能性显着降低。

那么它会“足够安全?”通常,这是一个社会问题而不是工程,而是一种常见的方法来量化它利用放置在统计寿命或VSL上的值。这被定义为个人愿意承担安全性的额外成本(即风险的降低),在总,减少一个人的死亡人数。

其他妥协可能是使用两种不同的posix兼容的RTOS,这将允许在不同硬件,不同编译器中运行的相同代码执行相同的代码,不同的编译器......。可能性,特别是组合,几乎是无穷无尽的。 


马克斯特福德 是技术专家 LDRA软件技术。 Mark拥有超过30年的工程申请软件开发经验,并在英国和国际上致力于开发和管理的许多重要的工商项目。自2001年以来,他曾与寻求在安全和安全性关键环境中实现符合符合软件开发的开发团队,与DO-178,IEC 61508,IIRA和Rami 4.0等标准一起使用标准。 马克赢得了诺丁汉特伦特大学的科学学士学位,他是一个超过20年的特许工程师。他现在担任LDRA软件技术的技术专家。

相关内容:

更嵌入, 订阅嵌入式’S每周电子邮件时事通讯.

发表评论

本网站使用AkisMet减少垃圾邮件。 了解如何处理评论数据.