包含软件系统的医疗设备与构建复杂系统一样,制造商面临着相同的挑战:时间、质量、规模(功能的数量和复杂性)和成本。此外,产品还需通过当地监管部门的审批,如美国食品及药品管理局(FDA)、欧盟医疗器械指令司(MDD)、英国药监局(MHRA)以及其他同类监管机构。
在本文中我们将探讨动态代码分析如何帮助医疗设备展示安全合规性以及动态分析工具所应具备的关键功能。为了帮助设计人员选择操作系统(OS),文章还简要介绍了OS的哪些特性可以推动安全相关软件加速设计、开发和审批流程等。
专业知识和流程
专业知识和良好的开发流程并不能确保系统符合所需满足的可靠性,甚至不能确保它是一个好系统。但是这两者的确能极大提高这种可能性。
创造安全关键系统所要求的简洁设计需要卓越的专业知识。要证明被测试的软件系统符合安全要求,需要对软件验证方法、被评估的软件以及评估环境(包括类似系统的验证)有全面透彻的了解。
毫无疑问,IEC62304标准专注于开发流程。理解这点,我们的工作将会做得更好,不仅仅是在满足最严苛质量管理标准的环境下进行软件开发,同时还使用工具来帮助确保我们的系统符合这些标准,并向审计员和监管机构提供证据加以证明。
展示可靠性
为了确保通过监管机构的审批,制造商必须证明这些设备满足安全规格。对于设备软件来说,要证明他们符合可信任(可靠性和可用性)标准的要求。具体是满足可靠性还是可用性方面的要求,则要取决于系统的使用情况。详细的要求限制和精确的可信性要求提供了既定的前提和精准的方法,帮助我们验证软件系统的可信性。
定义可接受风险
没有任何软件系统是绝对可靠的。即使系统绝对可靠,我们也无法证明它。现有可用的方法无法证明系统将永不失效,他们仅能帮助我们找到并避免错误的发生,并估计失效的可能性。因此,当软件系统的故障率足够低,没有不可接受的风险,它就是“安全”的。“不可接受风险”或“可接受风险”的精确含义因行业及行政辖区而异。衡量方法包括:
Ø ALARP(As Low as Reasonably PracTIcal,最低合理可行):将潜在的危害和相关的风险定义和分类为:a)明确不可接受,b)如果移除成本过高,则可以容忍,以及c)可接受。所有不可接受风险必须被移除,但是仅当移除成本和时间较为合理时,可容忍风险才会被移除。
Ø GAMAB(globalement au moins aussi bon)或GAME((globalement au moins équivalent):新系统的风险水平至少要与现有系统的风险水平大体相当。
Ø MEM(Minimum Endogenous Mortality):在新系统部署的领域,它带来的死亡率不能超过该地区常规死亡率的十分之一。举例来说,在西方国家年龄为20多岁的人群,这个值约为0.0002。
所有这些方法都需要按实际情况调整,主要取决于设备的严重故障可能同步影响到的人数。当使用ALARP方法时,为了确定哪些风险不可接受、哪些可容忍以及可接受,我们需要决定每个风险的严重故障所允许的最大失败可能性。而如果使用GAMAB和MEM准则,我们则需要在全球范围确定这个数值。
证明软件可靠性的方法
目前,没有任何一种单一的方法足以证明软件系统满足可靠性方面的要求。因此,我们的可靠性演示必须使用整合了各种方法和技巧,它们包括但不限于:
Ø 符合IEC 62304及其他同类标准要求的开发环境
Ø 要求跟踪矩阵,确保所有安全相关的要求都已得到满足
Ø 正规的设计方法和工具,可以为设计的正确性提供数学依据
Ø 使用贝叶斯置信网络方法的故障树分析
Ø 回顾性设计验证,基于已完成的工作来评估系统设计
Ø 静态分析,使用模型检测或者数据流分析等方法
Ø 使用直接故障检测技术进行测试,如动态分析,通过产生的误差和失效来识别故障
图1 IEC 62304标准涉及的不同分析方法和相关章节,表现为典型的“V”字形发展模型。图中显示的每一种方法都不依赖于进程。任何其他开发进程模型都可用类似的表述:瀑布式、迭代的、灵敏的等