Boost 是否曾在受监管项目(FDA、FAA)中使用过?

2024-01-15

在最近发表评论时,我发现自己评论说,根据我的经验,Boost 并未在受监管行业(FDA、FAA)广泛使用。事实上,我不知道有任何项目使用过它或已经使用过它。但我意识到我在这里可能缺乏经验,所以我想知道是否anybody了解在医疗设备或航空飞行系统(照明、机舱控制、驾驶舱设备等)中使用升压的项目。

我不确定这是问这个问题的正确地方(也许是其他一些 SO 网站),但我认为这将是一个很好的起点。

这不是一个关于这些领域是否应该使用boost的问题,而是一个关于任何人都知道它是否被使用过的问题。

EDIT一些可能有助于澄清这一点的示例项目:飞机机舱照明系统、机舱管理系统、驾驶舱仪表、输液/食物/胰岛素泵、透析机、实验室诊断设备、血液中心数据收集系统等。有些是维持生命或可能飞行的至关重要,有些收集数据,有些收集用于做出医疗决策的数据等,但我相信所有这些都被 FAA/FDA 列为受监管设备。

EDIT外部(不随开发链一起提供)库通常出于其他目的(图形库、驱动程序、USB 堆栈等)引入这些类型的项目中。这些被视为SOUP http://en.wikipedia.org/wiki/SOUP_%28software_of_unknown_pedigree%29。使用 boost 就属于这种方法。有人知道有这样使用 boost 的项目吗?

EDITBoost 是一个非常大的框架,具有多个组件。我正在寻找它已在项目中使用的任何部分。例如“Boost智能指针”或“Boost启用”或“Boost数组”或“Boost可选”等。但用于“整体”,而不是部分。没有通过查看Boost代码并重新使用的想法来使用;用作系统的整体组成部分(即法律意义上)。

这是问题的核心,因为以这种方式使用意味着必须处理处理 SOUP 的权衡。这可能会使这个问题超出本网站的范围......不确定。


如果归结为系统设计者如何在架构级别处理系统安全,我会说很多。

三倍体

例如,如果所采取的方法是与可信选民进行三重冗余,那么系统试验/测试将是批准实施的主要步骤。假设一式三份的开发团队之一选择使用 Boost。如果系统作为一个整体通过了所有的测试向量,那么人们可能会认为不需要通过 Boost 本身来寻找实现错误。显然,如果所有三个一式三份都选择使用 Boost,那么这将引起关注,因为这样测试向量的范围将变得难以管理。

三重复制是处理使用软件资源(如编译器、库和程序员)问题的标准方法,所有这些资源都有出错的风险。 Boost 只是其中之一。有人可能会说 Boost 共享指针显然是一种降低程序员错误风险的方法。从总体上看,这最有可能对整个系统有利。

重要,但不安全

有趣的是,当不使用三重法时,人们现在就处于真正必须信任事物的境界。有趣的是,许多系统似乎解决这个问题的方式是,最终有一个控制者来监督并能够在系统出现错误时进行干预。

例如,汽车行业有一套称为 MISRA 的编程规则。 ABS 系统的软件应该按照这个规则集编写,并且开发工具应该设置为在源代码上强制执行这些规则。我们的想法是,这会将未检测到的错误的风险降低到可接受的水平。而且因为最终有一个驾驶员在驾驶汽车,他们总是可以自己进行节奏制动。因此,汽车行业避免了重复实施 ABS 的情况。

他们正在将相同的理念扩展到更复杂的汽车系统,例如自适应巡航控制和自动驾驶汽车。我个人认为这样的延长对于自动驾驶汽车来说是不合理的。相关立法明确规定,如果此类车辆发生碰撞(即您仍在“驾驶”它),则属于“驾驶员”的过错,但光鲜亮丽的广告不会详细说明这一重要方面。

医疗器械领域也是如此;无论如何,应该有一名护士或其他人来监视病人,所以偶尔的小问题都会被这种监视所掩盖。无论如何,整个事情都很糟糕;虽然医疗设备的软件可能已经过编写、测试和批准,但这些软件通常在嵌入式 Windows XP 上运行。它们都联网并最终感染计算机病毒等。 FDA 不会让你有自动更新系统,只有设备供应商可以更新它,当然他们永远不能指望跟上。因此,您最终会得到一个编写良好、经过测试且运行在操作系统安装之上的良好医疗软件,世界上所有的黑客都在其中运行,天知道在做什么。我认为在这些情况下使用 Boost 不会给整体系统风险增加太多。

因此,如果符合 MISRA 的工具链提供 Boost 作为该工具链的一部分,那么我不明白为什么这与提供标准 C 库的工具链有什么不同。如果工具链供应商对其进行了认证,那么情况与其他任何情况都没有什么不同。

这种方法存在一些弱点。根据我的经验,我遇到过广泛使用的符合 MISRA 的工具链,当所有优化都打开时,其编译器会生成垃圾目标代码。我实际上能够在反汇编中验证这一点。然后我查看了工具链标准 C 库的源代码,它本身显然不是按照 MISRA 规则集编写的,而且它还包含明显的、可怕的错误。

然而,只要您在项目设置中勾选 MISRA 复选框,使用此工具链构建、测试和销售汽车 ABS 系统就没有任何监管障碍。将 Boost 添加到该工具链不会让事情变得更糟。

安全至关重要,无需重复

最终的方法是没有重复,也没有人工监督。这真的很难,因为你需要正式证明工具链、操作系统、驱动程序、芯片等每个组件的正确性。据我所知,对于真正的安全关键系统,如核反应堆、飞行控制航空电子设备或其他系统,从来没有这样做过。如果系统出错,肯定会致命。

据我所知,唯一接近的是 Greenhill 的编译器套件及其 INTEGRITY 操作系统。他们可以为您提供(支付一大笔费用)操作系统的每一行、所有库和编译器等一切的正式测试和验证证据。如果有人想要尝试一种真正的安全关键系统而不需要重复,那么这将是一个起点。

我认为他们还没有完成 C++11,尽管我已经将 Boost 添加到他们的工具链中并且运行得很好(它不在我急于添加的安全关键系统中)。

结论

当然,如果像 Greenhills 这样因可靠且经过彻底测试的工具链而享有良好声誉的机构提供 Boost,那么我认为人们将能够在受监管的系统中使用它。然而我怀疑整个 Boost 是否会以这种方式提供;他们更有可能遵循编译器标准。

我还知道 GCC 过去已经通过了正式的编译器验证测试,因此可以在 Stuff That Matters 中使用。我预计这种情况迟早会在 Boost 的最新版本中重复出现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Boost 是否曾在受监管项目(FDA、FAA)中使用过? 的相关文章

随机推荐