开发安全有效的医疗设备软件
扫描二维码
随时随地手机看文章
Green Hills软件公司 Jim McElroy
符合软件质量行业标准对医疗器械的发展是至关重要的。集成的开发工具的使用可以大大减少开发时间,并提高产品质量、安全性和可靠性。
今天,由于市场对设备功能的需求更加丰富,对成本效益的要求更加苛刻,因此,医疗设备正变得越来越复杂。内窥镜的市场就是一个很好的例子。随着复杂性的增加,设备制造商们需要缩短开发时间,推向市场的产品必须安全可靠,这是进入市场的基本要求。此外,经验表明,如果内窥镜手术可以更快地进行,病人可能恢复较快,而外科医生和工作人员也能够在同一时间内执行更多的任务。对于设备制造商来说,要实现这些更高层次的目标,就必须使用合适的软件开发工具,就必须采用可靠和安全的操作系统(OS)进行调试和验证关键的软件组件。
对于第二类和第三类医疗器械的开发商来说,及时地开发出安全有效的设备是一个很大的挑战。而这一挑战的核心是病人和设备操作人员的安全性。要开发出安全可靠的设备,就必需面对一些压力,即上市的窗口、竞争、开发成本、供应商的成本,以及合规性问题。为了应付这些压力,医疗设备软件开发商们从工具和程序的开发中,过渡到业界认可的开发工具、操作系统和业界标准的软件开发。
一直到2009年,大部分的医疗设备软件开发机构都依赖于未针对医疗设备软件开发优化的软件开发方法、工具、流程及标准。不过,现在有些公司,如史赛克内窥镜(Stryker Endoscopy),它利用行业标准,如IEC 62304,来进行软件开发和维护,以最迅速的方式开发出安全有效的设备,又保障了产品质量,更重要的是保障了病人和操作人员的安全。基于IEC 62304,软件开发机构可以充分利用国际认可的标准,提供一个设计和维护医疗设备软件生命周期过程、活动和任务的框架(图1)。
图1 IEC62304 V型方法,需要系统要求和软件应用设计之间的可追溯性
要想成功地开发复杂的医疗设备,有几个核心的要素。首先是有效地利用标准,特别是专门为医疗设备软件开发而制定的标准,并且降低整个开发过程中的风险。此外,选择适当的硬件和操作系统技术对整体项目的成功也至关重要。正是因为如此,史赛克内窥镜公司(Stryker Endoscopy)才选择了Green Hills Software公司的实时操作系统(RTOS),这是业界公认的操作系统技术,史赛克内窥镜公司相信它会提供良好的安全性和可靠性。除了以上的操作系统层,软件应用程序也十分复杂,因此,我们的开发团队还依靠Green Hills成熟的Multi软件开发工具,以测试和验证应用程序,确保患者安全。
除了具有一个可以简化审批程序的、坚实的软件开发框架以外,IEC 62304还执行了严格的架构软件设计,将所有的软件进行了安全分类。根据其潜在的危险,软件被分为“A”,“B”,或“C”。 “C”类软件最不安全,可导致严重伤害或死亡。
开发团队可以利用这些分类,从概念上区别关键应用和非关键应用。可以利用操作系统的分离核心架构,在运行时,实现这一概念的区分,分割各种应用程序(图2)。因此,该系统更具内在安全性,更具可靠性,这是因为每一个分区的故障都将被隔离,并不影响另一个分区上运行的应用程序。许多开发人员认为,在多任务使用一个单一的地址空间时,这种方法大大地改进了安全性和可靠性。此外,通过分区,使得多个应用程序可以共享相同的处理资源,不再需要单独的物理硬件资源,节省了材料费用。在这一架构设计中,IEC 62304将系统分解成软件单元,使系统可以更好地进行单元和系统验证。更重要的是,OS技术还为不同的地址空间提供了非常规则整洁的应用方式,使其可以高效地相互沟通。这一架构绘制清晰,能够轻易地识别软件项目之间的接口,以满足IEC 62304的要求。
图2 分离核架构模型
所选择的操作系统(OS)采用了一个真正的实时调度程序,支持多个优先级。这使得团队可以使用速率单调算法来指定所有任务的优先级,以最大限度地提高系统的调度,以确保所有的关键时刻的约束条件得到满足。此外,该团队还采用操作系统的分区架构,以创建一个健康监测。该操作系统通过提供相互地址空间的通信平台,可以很容易地与正在运行的应用程序沟通,以监控系统中的所有关键和非关键任务的状态,这就可以不断地检查故障,进行健康监测,在故障发生时,使关键任务进入安全状态。此外,该团队还利用分区分离,建立了一个专门的地址空间,以处理在手术室中史赛克内窥镜公司其它设备的通信。通过采用专用的接口总线,史赛克公司的产品可以相互沟通,进行无缝集成,实现数据共享和通用控制。通过实施分区的地址空间,无论是软件还是硬件都可以模块化,并很容易地移植到未来采用相同操作系统的任何设备。
在此特定设备的设计中,史赛克内窥镜公司虽然没有在结构上设计虚拟化应用,但其选定的操作系统也支持虚拟化,从而使各种客户机操作系统可以与主机操作系统同时运行。有了这一功能,在未来,史赛克产品可以将不同的操作系统用于不同水平的功能。例如,Android可以运行在虚拟机,进行用户界面控制,而在另一个虚拟机上运行的该操作系统(OS)将负责所有的安全,或与安全有关的功能。
从架构设计阶段到详细设计阶段和实施阶段,其综合、完整的开发环境(IDE)使团队在必要时,可以迅速地开发、测试和重复迭代应用程序,即软件项目可以插入到适当的操作系统(OS)分区。ARM目标模拟器具有巨大的价值,它可以远在硬件平台出现之前,对设计进行早期验证,节省了大量的时间和金钱。在分区里操作的软件项目,就成为可重复使用的软件组件,可以用在未来的医疗器械中。此外,关于测试和原型设计的用户界面,IDE和操作系统可以使团队快速地让用户界面进入“模拟”设计,确保正确的互动式操作(通过Swell Software的PEG+ GUI软件解决方案,和PEG窗口生成器屏幕设计)。可用性是设备安全运行的一个关键因素,而UI原型设计使团队可以确保令人满意的功能。
影响代码质量的因素很多,包括工程师写代码的质量,开发工具,以及随后的软件开发。根据IEC 62304规定,每个单位都有自己的验证过程。作为这一过程的一部分,本团队使用IDE的优化调试和测试技术。按照公认的最佳做法,本团队在整个软件开发过程中使用了静态分析工具,从而,消除了通过编译器或代码审查而不容易被发现的模糊缺陷。这类缺陷包括缓冲区溢出、资源泄漏和NULL指针的解除引用。未来,本团队将利用IDE内置的静态分析工具(静态分析工具和调试器之间具有紧密的耦合)来确保快速的迭代研发。这样,在编译时就具有了自动执行静态分析的能力,而不是在编译后再进行人工静态分析。虽然静态分析工具有助于提高代码的质量,但单凭静态分析工具来保障应用程序的质量是不够的。
本团队还利用IDE代码模制工具(profiler tool),给出一个完整的代码执行报告,明确指出哪个应用程序代码行已经执行。本团队还可以使用此信息来设计单元测试,准确地执行所有的应用程序代码元素,与人工比较节省了时间、精力和金钱。此外,所有的文档都自动生成,访问方便。在典型的嵌入式软件开发中,大部分的时间花在了修复少数几个故障上,在这种情况下,此调试环境使本团队既可以解决与任务优先级相关的问题(图3),也可以解决较低层次的问题。它能够使用跟踪数据来调试以前或以后的故障,可以容易地找出通常很难找出的问题,并确定原因。这种能力对医疗器械的安全性是至关重要的。总的来说,这些工具提供了一种轻松地进行检查的能力,可用于故障排序、数据、流控制、资源分配、自我诊断和内存管理。