医疗器械软件制造商必须满足软件组件的法定要求,以便“批准”其医疗器械软件上市。
1. 什么是软件组件(software components)/软件项目(software items)
IEC 62304对“软件组件(software components)”有不同的定义,也被称为软件项目(software items):
IEC 62304对软件项目(software items)的定义如下:计算机程序的任何可识别部分。因此,软件项目(software items)包括软件的所有部分,包括软件系统(software system)本身和所有软件单元(software unit)。术语软件组件(software components)通常与软件项目(software items)同义使用,但“软件系统(software system)”除外,它是一个软件项目(software items),但不是一个软件组件(software components)。
在MDCG 2019-11指南使用的术语中,软件项目(software items)/软件组件(software components)也被称为软件模块(software modules)。SOUP也是软件组件(software components),因为它们也是软件系统(software system)的可识别部分。
2. 监管要求
a) 欧洲
MDR, IVDR
欧盟的法规,如MDR和IVDR,没有对软件组件(software components)提出明确要求。但他们确实需要一个软件架构。根据定义,软件架构是将一个软件系统(software system)分解为不同的软件组件(software components)。
IEC 62304
协调标准IEC 62304也要求分解为软件项目(software items)。它对SOUPs提出了进一步的要求。此外,该标准要求制造商必须:
-将软件项目(software items)分解为软件单元(software units)(第5.4章);
-指定这些软件项目(software items)的接口;
-审查软件项目(software items)的活动是否符合规定;
-将软件项目(software items)逐个集成,并测试它们的相互作用(第5.7章;集成测试)。
b) 美国
FDA主要在其“General Principles of Software Validation ”中制定了对软件的要求。它没有区分单元unit、组件component和模块module这些术语。然而,它确实要求制造商:
-具有“模块化结构(modular structure)”的软件架构;
-“单元(模块或组件)级测试”和;
-对现成的组件进行特殊处理。它已就这一问题发布了进一步的指导意见。
指导文件“Content of the Premarket Submission”规定了制造商必须提交哪些文件。在其中,FDA还规定了软件架构(例如,“模块的详细图表”)。
3. 实践的七个技巧
提示1:确定真实的软件组件(software components)
一个项目是一个逻辑的或物理的实体。仅仅在PowerPoint中在任意选择的类周围画一个框架并称其为 "组件"是不够的。
提示2:根据功能考虑确定组件
一旦你有了软件需求,你可以开始按功能方面对这些需求进行分组。这有助于根据功能考虑形成组件。一个组件应该正好执行一项任务。
提示3:尽早准确地定义接口
在开发的早期阶段确定架构,从而确定软件组件(software components)和它们的接口。只有这样,才有可能让不同的团队并行工作。微服务(Microservices)是组件的一个例子。有了这些,不同的开发团队在针对指定接口进行编程时,甚至可以从不同的技术和编程语言中获益。
提示4:使用工具来定义和测试接口
将接口描述为API。对于基于网络的应用,诸如OpenAPI(Swagger API的后继者)这样的工具很有帮助。
提示5:确保良好的封装
软件组件(software components)应该对功能进行封装,并且只通过定义好的接口来提供这些功能。软件组件(software components)之间的相互依赖性越弱(“弱耦合”),软件就越容易维护和测试。
提示6:使用现有的组件
首先,使一个软件组件(software components)可用的最快方法不是开发。而是,重复使用已经验证过的组件,如库和其他SOUP/OTS是有帮助的。制造商如果能在不同的医疗器械上使用经过验证的组件、框架或平台,则开发速度会更快。
提示7:自动测试组件
在极端情况下,制造商追求测试驱动的开发方法。至少,他们应该从一开始就自动测试所有软件组件(software components)的所有接口,并将这些测试作为所有变化的回归测试来重复。
4.结论
处理软件组件(software components)/软件项目(software items)的监管要求在各国范围内是相对同质的。专业的软件开发要求制造商:
-尽早准确地定义软件架构;
-识别组件并指定其接口,以及;
-通过软件测试确保组件符合该接口规范。
专业开发不仅是高效的:它能带来高质量的软件,从而带来更安全的医疗器械。