Anwenderberichte

Miracor消除运行时错误,减少测试时间为第三类医疗设备软件

挑战

确保安全的第三类医疗设备改善支架接受者的结果

解决方案

使用Polyspace代码验证来证明软件没有运行时错误,引导代码审查,补充功能测试,支持验证流程监管部门的批准金宝app

结果

  • 未使用的和错误的代码
  • 验证过程监管批准成立
  • 代码评审效率增加

“从一个开发者的角度来看,Polyspace代码验证的主要优势是一个更高层次的质量和正确性的代码。Polyspace代码验证帮助Miracor演示这个质量和正确性监管社区,包括FDA,证明我们的设备是安全的。”

Lars Schiemanck Miracor医疗系统

Miracor PiCSO脉冲系统。


支架植入术可以恢复急性冠状动脉综合征患者冠状动脉的血流量。然而,40%的患者支架还有限制血液流动,从而导致更大的梗塞,左心室功能差,最终导致心力衰竭。

的PiCSO®脉冲系统,由Miracor医疗系统开发的一种创新疗法,改善微循环,减少梗塞大小支架插入。PiCSO(压力控制间歇冠状静脉窦闭塞)系统膨胀一个小气球插入冠状静脉窦暂时阻止血液流出,提高冠状静脉压力,迫使血液回影响组织。PiCSO控制软件监控通胀和通缩压力和同步气球与病人的心电图。

第三类医疗器械,PiCSO患者安全系统必须遵守最严格的标准。以确保其软件的安全性,Miracor Polyspace代码使用验证™在C代码检测错误,引导代码审查和补充功能测试实践。

“Polyspace代码验证给了我们一个层的安全,增加我们的信心,我们的代码没有运行时错误,并允许我们加速代码审查和测试,“说Lars Schiemanck Miracor首席技术官。

挑战

PiCSO脉冲系统有两个独立的微控制器,管理的压力气球。一个作为气动系统的主控制器,另一个作为安全备份。两个控制器的嵌入式代码是由手用C写的。

工程团队建立了代码评审和单元测试,以验证该代码,但是认识到单独的单元测试不能覆盖所有可能的组合的输入,执行路径和变量值。他们想要使用控制流和数据流为基础的语义分析来证明软件组件和检测被零除的正确性,缓冲区溢出,和其他运行时错误。

Miracor需要符合第三类医疗器械的监管越来越严格的要求。公司寻求在欧洲CE标记,这就需要由公告机构认证以及上市前的美国FDA的批准,从这些监管机构获得批准,Miracor需要演示的安全硬件和软件。从历史上看,软件比硬件认证提出了一个更大的挑战,因为它往往是评论家更难以理解。Miracor想使用静态分析和正式的方法来简化认证过程。

解决方案

Miracor工程师使用Polyspace代码验证来证明没有运行时错误的情况下,识别领域需要进一步审查的代码,并提高他们的整体对软件质量的信心。

参加一个为期两天的训练后由MathWorks提供培训服务,Miracor工程师分析与Polyspace代码验证的遗留代码。

Polyspace代码验证颜色每个C操作指示其状态:绿色代码证明免费的运行时错误,红色的代码是错误的每次操作执行,灰色为不可到达的(死)代码,和橙色在特定条件下操作,可能是错误的。

该团队使用这些结果来改进代码。遥不可及的代码,减少了单片机软件足迹,并纠正被证明错误的所有操作,包括除错误代码的一部分,没有积极参与标准操作。

在随后的代码评审,团队专注于橙色高亮显示操作,知道剩下的绿色代码已经被证明是免费的运行时错误。

与多个嵌入式PiCSO系统微控制器操作同时,Miracor团队必须意识到竞争条件和其他并发问题。虽然配置Polyspace代码验证,研究小组发现几个关键领域的代码,这些条件可以发生。

的团队制定了一个政策运行Polyspace代码验证项目的大约25000行代码评审前遗留和新开发的代码时,使用结果来指导每一个审查流程。

Miracor PiCSO脉冲系统已被用于治疗患者在英国、爱尔兰和匈牙利。临床研究发现显著减少梗塞大小,以及改善心脏功能,系统治疗。该公司正在寻求上市前的FDA的批准。

结果

  • 未使用的和错误的代码。“Polyspace代码验证结果显示死代码以及除和缓冲流错误在我们的遗留代码,”克里斯托夫•布洛赫说Miracor软件开发项目经理。“虽然这些错误不会影响病人安全,检测他们给了我们更大的信心在我们的软件的质量。”
  • 验证过程监管批准成立。“我们寻求FDA批准上市前的状态,Polyspace代码验证中心证明我们已经做了最大的努力来证明代码正确性和确保代码质量,“Schiemanck说。“对我们来说,证明我们的技术验证和验证Polyspace代码验证和其他先进的工具是强制性的。”
  • 代码评审效率增加。“Polyspace代码验证我们看到代码的哪些部分被证明安全,所以我们知道我们不会有任何运行时错误或算术错误,“Schiemanck说。”因此,我们可以回顾更少的代码,因为我们关注那些地区潜在的问题可能仍然存在。”