2016 年 7 月

第 31 卷,第 7 期

此文章由机器翻译。

编辑寄语 - 医疗事故

通过 Michael Desmond | 2016 年 7 月

Michael Desmond在我最后两个专栏中,我介绍了为软件开发团队执行大规模灾难而陷入困境的课程。悲惨示例随之大量涌现,从于 1979 年影响在三个英里岛响应误用培训 ("将实体、" msdn.com/magazine/mt703429) 到导致人们能够清晰地低估等多个方面 2010 Deepwater 即将推出的事件中的风险的认知偏差石油溢出和 2008年全局财务垮台 ("认知偏置," msdn.com/magazine/mt707522)。

当然,这些示例是外部的软件开发的。一个事件更近到 home 是 Therac 25,放射治疗交给癌症病人的医疗设备。1985 和 1987年之间的 18 个月的课程中,通过 Therac 25 传递到终止至少两个在美国和加拿大,六个患者中主要放射 overdoses。该制造商来说,加拿大 Ltd.原子能源(AECL) 还费尽心机地找出原因,即使在装入的事件。

低功耗电子枪或 x 射线光束,具体取决于规定的处理方式,可以将传递 Therac 25。但在软件中的争用条件可以公开患者到大规模放射发来使人,如果从 x 射线模式快速切换到光束硬件前,电子枪光束模式的运算符可以将移到位置。位于德克萨斯州的两个患者已中止后它们已向是非中继的、 高功率设备的电子束公开。

第二个 bug 可能会导致要产生致命电子束而运算符对齐上病人的设备的设备。原因︰ 为在每次 256th 传递零值会递增该软件中的单字节变量。如果运算符推送那一刻为零的递增的变量的设置按钮,可将意外激活。其他几种可能已因为软件存在缺陷 overdosed。

不寻常的是,这些代码缺陷已存在多年旧 Therac 模型中 (包括类似 Therac-20) 问题的情况下。差异︰ Therac 20 采用以物理方式阻止 overdose 被管理的硬件联锁 — 计算机只需将吹保险丝。但 AECL 工程师必须替换 Therac 25 上的软件的那些联锁。该软件已并且不满足该任务。

Nancy Levenson,在麻省理工学院的工程设计系统的教授执行详细的研究 Therac 25 事件 (在读取 PDF bit.ly/1QnJO3h)。她发现 AECL 不 overconfident 在其软件中,在评估中的风险,并不足以防御性设计元素,如错误检查和处理不现实。不寻常的是,只是一位开发人员 — 未知的凭据,AECL 永远不会标识此人 — 编写并测试 Therac 软件,它用 PDP 11 程序集语言编写。Levenson 找到 AECL 不具备可靠的测试计划,并假定早期 Therac 模型中重用的软件将是免费的缺陷。

如 hubris 教训读取 Therac 25。与较旧型号不同 Therac 25 依赖于几乎都是软件,以确保安全操作。和 AECL 尚未,依赖于单个 (很明显,非托管) 代码编写者和老化,设备中重复使用的软件。现在 30 年后,它是值得构思的课程。


Michael Desmond 是 MSDN 杂志的主编。