PVS-Studio:医疗软件的附加保险

软件错误不仅会导致物质损失,而且还会损害人类健康。 例如,如果在错误的时间突然其中一处风景开始掉下舞台,剧院舞台上的演员可能会受伤。 但是,代码错误与医疗软件的健康损害之间的联系更加明显。 让我们谈谈这个话题。

在我发表了“使用PVS-Studio来提高财务软件的可靠性和安全性”之后,我们的客户列表中还增加了创建适当软件的多家公司。 这篇文章出人意料地是成功和有效的。 我和我的同事都没有期望得到这样的反馈。 显然,当我通常不谈论错误时,而当我谈论某种软件时,这篇文章更可行。 现在,我被要求撰写涵盖软件其他领域的文章。

本文重点介绍为医疗设备创建程序的开发人员团队。 我希望他们能保持冷静,并使用PVS-Studio检查他们的代码。 我也希望他们中的一些人能在“医学”部分加入我们的客户名单。

让我们回想一下两个著名的案例,其中与医学有关的程序错误成为了坏消息的原因。

首先,这是由Therac-25放射治疗设备中的错误引起的一系列悲剧事件。 在1985年6月至1987年1月的这段时间内,该设备至少引起了六次剂量过量的辐射,一些患者接受了数万拉德的剂量。 至少有两人直接因辐射过量而死亡。 该设备的软件错误是造成悲剧的原因,主要问题是安全策略不正确。

其次,软件错误也可能间接造成损害。 例如,用于MRI扫描仪的软件中的错误引发了有关4万项研究的问题。 几十年来,神经科学家和认知心理学家一直使用统计程序AFNI,SPM和FSL来分析fMRI数据。 事实证明,由于算法错误,这些程序最多可能返回70%的假阳性结果,而不是预计的5%。

如您所见,代码错误不仅会导致故障(例如崩溃或数据丢失),而且还会导致更为严重的后果,从而影响许多年来许多人的生命和健康。

而且,开发人员不仅要对自己的代码负责,而且还要对所用库的代码负责。 当由于来自第三方库的错误而在创建图像/视频时出现伪影时,这种情况是完全真实的,并且在诊断时会导致混乱。

这不是一个抽象的理论问题。 我本人面临着一种情况,当将程序移植到64位系统时,导致错误处理MRI数据的错误开始显现出来。 幸运的是,错误非常清楚地表明了自己:没有图像的大片段。 但是,该错误可能不是那么明显,而在于某些细节的错误显示,这将使检测起来更加困难。

有关此错误的更多信息,请参见文章“ PVS-Studio项目-失败和成功的10年”。 正是这个错误和其他一些64位错误启发了Viva64工具的创建,该工具随后变成了PVS-Studio静态代码分析器。

无法预测错误可能在哪里以及什么错误会导致麻烦。 该错误可能很复杂,并且不一定会破坏生命,潜伏在数据处理和显示的算法中。 我可以想象这样一种情况,由于比较函数中的错误,将选择错误患者的数据进行处理,或者描述患者情况的程序不会注意到数据结构的某些差异。

我是做梦者吗?这些错误是学生在课程学习中犯的? 哈! 请花一些时间,熟悉我的文章“比较功能中的邪恶”。 之后,您将开始分享我的关注。

我邀请所有读者开始使用PVS-Studio静态代码分析器。 是的,分析器与任何其他工具一样,不能保证程序中没有错误。 但是,它成为与bug作战领域的另一道防线。 它可以在开发的早期阶段帮助发现许多错误,并且可以帮助保存某人的健康。

正如我在上面所写,关键任务软件的开发人员不仅要负责其代码的质量,而且还要负责库中使用的代码。 PVS-Studio分析仪将帮助您发现第三方库中的错误,并使您能够评估第三方库的质量。 也许,如果有人看到库代码的质量极低,那么他将及时做出决定,避免使用它,并找到更好的选择。

这是最后一个问题,我将自己回答。 为什么在有关银行安全的文章之后没有立即写这篇文章? 医疗领域的代码开发通常代表各种微控制器的编程。 我一直等到我们的分析仪适应嵌入式设备代码分析的那一刻。 现在,我有一个理由:“静态代码分析器PVS-Studio 6.22现在支持ARM编译器(Keil,IAR)”。

感谢大家的关注,我建议下载并开始使用PVS-Studio代码分析器。 有用的链接:

  • 关于PVS-Studio的页面
  • 下载适用于Windows的PVS-Studio
  • 下载适用于Linux的PVS-Studio
  • 注意:适用于macOS的PVS-Studio版本即将推出
  • 文档。 如何在Linux上运行PVS-Studio
  • 不同开源项目的检查示例
  • 如果有任何问题,请写信给我们的支持,我们将快速响应并帮助您配置分析仪以检查您的项目