3. 医疗设备软件可靠性需求工程

可靠性需求工程是医疗设备软件全生命周期中最具杠杆效应的环节。一个在需求阶段未被识别的可靠性缺陷,若遗留到现场,其修复成本可能是需求阶段修复的数十倍甚至上百倍。本章聚焦三个核心问题:如何从临床需求、法规要求和风险控制中提取可靠性需求;如何保证需求的可追溯性、可验证性与完整性;以及当需求缺陷真实发生时,现场故障会呈现怎样的形态。

3.1 可靠性需求的三个来源

医疗设备软件的可靠性需求并非凭空产生,它有三个明确的来源,且三者之间存在交叉与约束关系。

临床需求描述的是设备在真实诊疗场景中必须持续、正确完成的功能。例如,一台输液泵的临床需求是“在设定的流速下持续输注,并在管路阻塞时于规定时间内报警”。从可靠性视角看,这要求软件在电源波动、传感器漂移、通信中断等条件下仍能维持或安全终止输注。临床需求往往以用户故事或使用场景的形式给出,可靠性工程师需要将其转化为可量化的指标,如“连续运行72小时无中断”“阻塞检测响应时间≤15秒”。

法规要求是强制性的外部约束。IEC 62304将软件安全等级分为A、B、C三级,等级越高,对需求追溯、架构设计和验证的要求越严格。FDA的510(k)和PMA路径要求提交软件需求规格书及其追溯矩阵。中国NMPA的《医疗器械软件注册审查指导原则》同样要求提供需求规范、可追溯性分析和验证记录。法规要求不直接规定“可靠性指标是多少”,但它规定了“你必须证明你的需求是完整、可追溯、可验证的”。

风险控制是第三个来源,也是最容易被忽视的。ISO 14971要求对每个已识别危害进行风险估计,并采取控制措施。当控制措施落到软件上时,就转化为可靠性需求。例如,风险分析识别出“输注速度设置错误可能导致药物过量”,对应的软件控制措施可能是“设置值超出安全范围时拒绝执行并提示”,这本身就是一条可靠性需求。

三个来源并非孤立:临床需求提供功能目标,法规要求提供过程约束,风险控制提供安全边界。可靠性需求工程师的任务是在三者的交集中找到可验证、可追溯、可实现的条目。

3.2 从来源到需求条目的转化方法

转化过程需要一套结构化的方法,而不是凭经验逐条编写。以下给出一个可操作的转化路径。

第一步,建立“来源—需求”映射表。每一行对应一个来源条目(临床场景、法规条款或风险控制措施),每一列对应转化后的可靠性需求。映射表至少包含:来源标识、来源描述、转化后的需求陈述、需求类型(功能/性能/安全/接口)、验证方法。

第二步,对每条需求进行“可靠性修饰”。原始需求往往只描述正常路径,可靠性修饰要求补充异常路径和边界条件。例如,原始需求“软件应显示当前输注速度”可修饰为“软件应在正常、报警、暂停三种状态下均正确显示当前输注速度,显示刷新周期≤1秒,且在通信中断时保持最后有效值并标记为‘数据可能过期’”。

第三步,分配验证方法。每条可靠性需求必须对应至少一种验证方法:测试、分析、演示或检查。对于“阻塞检测响应时间≤15秒”,验证方法为测试,需明确测试条件(管路类型、阻塞程度、流速设定)和通过准则。对于“软件在断电后恢复时应保持配置参数”,验证方法可以是测试加分析。

第四步,进行完整性检查。完整性检查不是简单看“有没有漏”,而是从三个维度审查:来源覆盖度(每个临床场景、法规条款、风险控制是否都有对应需求)、状态覆盖度(正常、异常、边界、恢复状态是否都有需求)、接口覆盖度(人机接口、通信接口、传感器接口是否都有可靠性约束)。

3.3 需求可追溯性、可验证性与完整性检查

可追溯性要求需求之间、需求与设计、需求与测试之间存在双向链接。正向追溯从来源到需求到设计到测试,确保每条来源都被实现和验证;反向追溯从测试到需求到来源,确保每条测试都有需求依据,每条需求都有来源支撑。实践中,追溯矩阵是核心工具,但矩阵本身不是目的,目的是在变更发生时能快速评估影响范围。

可验证性要求每条需求都是客观、可测量、无歧义的。常见的不可验证需求包括“软件应具有高可靠性”“界面应友好”“响应应迅速”。可验证的改写是“软件在95%的输注场景下,从用户按下启动键到泵开始运转的时间≤2秒”“软件在连续运行72小时内,无因软件原因导致的非计划中断”。

完整性检查可以借助检查单进行,但检查单需要根据设备类型定制。以下给出一个面向输液泵类设备的可靠性需求完整性检查表示例。

检查维度检查项示例需求验证方法
临床场景覆盖是否覆盖所有预期使用场景在KVO(保持静脉开放)模式下,流速精度±10%测试
异常状态是否定义阻塞、气泡、空液、电池低电量下的行为阻塞报警后,软件应在15秒内停止泵并发出声光报警测试
边界条件是否定义参数上下限及越界处理流速设置超出0.1–999 mL/h时,拒绝执行并提示测试
恢复行为是否定义断电、重启后的状态恢复断电恢复后,软件应恢复断电前的流速和累计量,并提示用户确认测试+分析
接口可靠性是否定义通信中断、数据校验失败的处理与中央站通信中断时,本地继续输注并缓存数据,恢复后补传测试
法规符合性是否覆盖IEC 62304对应等级的全部要求软件安全等级C,需求追溯矩阵覆盖所有安全相关需求检查

3.4 需求缺陷导致的现场故障复盘

以下案例基于行业公开召回信息和合理假设构建,用于说明需求缺陷如何演变为现场故障。

案例背景:某输液泵软件在临床使用中出现“阻塞报警延迟”投诉。现场表现为:管路完全阻塞后,部分设备在30秒至2分钟后才报警,超出说明书声称的15秒。部分投诉伴随“报警后泵未停止”的二次故障。

需求追溯:回溯需求文档发现,原始需求写的是“软件应检测阻塞并报警”,未规定响应时间,也未定义“阻塞”的判定条件(压力阈值、持续时间、流速相关性)。风险分析中虽识别了“阻塞未及时报警”的危害,但控制措施仅写“软件检测阻塞”,未转化为可验证的可靠性需求。

根因分析:开发团队在实现时采用了压力传感器采样值连续超过阈值3次才触发报警的逻辑,采样周期为200ms,理论上600ms即可触发。但现场故障设备中,部分设备的压力传感器存在缓慢漂移,导致基线压力升高,阻塞判定阈值相对降低,软件为抑制误报警加入了“动态基线调整”逻辑,该逻辑在低流速下调整过慢,导致报警延迟。更严重的是,报警触发后,软件进入报警状态但未立即停止泵,而是等待“报警确认”后才停止,这与临床预期的“报警即停止”不符。

需求缺陷定位:三个需求缺陷共同导致故障。其一,阻塞检测需求缺少响应时间指标和判定条件定义;其二,动态基线调整逻辑未在需求中说明,属于设计阶段引入的未受控行为;其三,报警后行为未在需求中明确“报警即停止”还是“报警后等待确认”。

纠正措施:将阻塞检测需求改写为“在流速≥1 mL/h时,管路完全阻塞后,软件应在15秒内触发报警并停止泵;报警停止泵的行为不可被配置为延迟;动态基线调整算法需在需求中定义其适用流速范围和调整速率上限,并作为安全相关需求进行验证”。同时,在追溯矩阵中补充该需求到风险控制措施的链接,并增加针对低流速、传感器漂移场景的测试用例。

需求缺陷的代价不仅在于修复本身,更在于现场故障可能造成的患者伤害、召回成本和监管信任损失。可靠性需求工程的核心价值,就是在代码编写之前,把“可能出错的地方”变成“必须验证的条目”。
可靠性需求来源、转化与缺陷传导关系 临床需求 使用场景 / 功能目标 法规要求 IEC 62304 / NMPA / FDA 风险控制 ISO 14971 / 危害控制措施 需求转化与可靠性修饰 来源映射 → 异常/边界补充 → 验证方法分配 → 完整性检查 输出:可追溯、可验证、完整的可靠性需求条目 可靠性需求规格书 + 追溯矩阵 每条需求:来源标识 | 需求陈述 | 验证方法 | 通过准则 需求缺陷传导路径(案例复盘) 阻塞检测需求缺少响应时间与判定条件 → 开发引入未受控动态基线逻辑 → 报警延迟/报警后未停止 现场故障:阻塞报警延迟30s–2min,部分设备报警后泵未停止 缺陷 定位 3处需求 纠正 措施 需求改写

从上述案例可以看出,需求缺陷的传导具有隐蔽性:它不会在代码编译时暴露,也不会在单元测试中必然暴露,而是可能在特定临床场景、特定硬件状态下才被触发。因此,可靠性需求工程必须与风险分析、验证测试形成闭环。需求阶段多花一天时间明确“阻塞后15秒内报警并停止泵”,现场就可能少一次召回、少一份伤害报告。

在实际项目中,建议将可靠性需求评审作为独立于功能需求评审的专项活动,评审输入包括临床场景清单、法规条款对照表、风险控制措施清单,评审输出包括需求条目、追溯矩阵和完整性检查记录。评审通过后,需求基线冻结,任何变更都需重新评估其对追溯矩阵和验证用例的影响。