0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用医疗设备软件的静态代码分析

星星科技指导员 来源:嵌入式计算设计 作者:嵌入式计算设计 2022-06-19 10:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

医疗设备使用的软件代码比以往任何时候都多。然而,虽然软件为医疗设备提供了更多的功能和灵活性,但它也带来了额外的复杂性,从而增加了故障风险。今天大约 20% 的医疗设备召回是由软件缺陷引起的,而且这个数字还在上升。

联邦药物管理局 (FDA) 监督在美国销售的医疗器械的质量,希望发布医疗器械的公司必须获得 FDA 510(k) 许可。在调查上市后失败的同时,FDA 更加注重预防,并建议将静态代码分析作为方法的一部分。

复杂缺陷检测的价值

现代静态代码分析工具使用复杂的技术来分析源代码以检测潜在的软件缺陷。工具尝试分析代码中的所有逻辑路径,提供比传统测试形式更多的路径和代码覆盖率。静态分析工具不需要任何测试用例,甚至可以对代码片段进行操作,发现潜在的程序崩溃、缓冲区溢出、内存泄漏、数据损坏等。静态分析通常运行迅速,并且可以在相对较短的时间内报告一系列潜在的错误(参见图 1)。

图 1:静态分析可以在软件开发生命周期的早期发现潜在问题。

pYYBAGKuhROAQr7PAAHx4iOBxwU673.png

由于各种原因,静态分析工具确实会产生一些错误的结果,通常称为误报和误报。当静态分析工具认为有错误而没有错误时,就会发生误报。误报是应该报告错误但没有报告。

大多数现代静态分析工具必须在可接受的精度水平和可接受的运行时间之间找到尽可能多的好结果之间进行微妙的权衡。换句话说,在大量误报中发现每个问题的嘈杂工具的价值可能有限,就像只发现一小部分问题的高度准确的工具一样(参见图 2)。

图 2:静态分析工具不会发现所有错误(误报),并且会报告一些并非真正的错误(误报)。使遗漏的错误和错误报告最小化的是良好的分析算法和适当的分析调整。

pYYBAGKuhSSAKxNGAAD0qKhD0fE292.png

现代静态分析工具已经改进了分析技术,可以以足够的准确度生成有用的结果。大多数组织认识到静态分析工具虽然不完善,但在大多数软件开发过程中都提供了重要的价值。

充分利用静态分析工具

现代静态分析工具对大多数医疗设备制造商来说都是相对较新的。对于许多首次在其流程中实施静态分析的组织而言,了解最佳实践有助于在最短的时间内以最少的返工量充分利用工具。

调音

静态分析工具提供了适用于所有类型代码库的通用设置,虽然它们可以立即发现好的错误,但只需针对代码调整工具就可以大大改善结果(参见图 3)。这有助于找到更多相关的错误并减少通过误报进行的搜索,这会浪费时间并导致开发人员疲劳。

图 3:几乎每个静态分析部署都应该从一个可靠的调优项目开始。调整会带来更多更好的错误和更少的误报。

poYBAGKuhSyAFDf1AAGMPQG7dRI791.png

许多静态分析工具都有自己的源代码解析器,它们可能无法理解或无法访问所有代码。将系统配置为分析所有代码或调整系统以识别分析时无法访问的接口——例如单独验证的第三方库——确保结果是最佳和可重复的。实现 100% 的代码覆盖率对于堵住可能增加风险的漏洞非常重要。

调优有助于发现真正的问题。例如,告诉静态分析工具内存分配机制是如何工作的,或者程序何时退出,这样工具就不会继续沿着特定路径跟踪问题,这有助于发现新问题并剔除错误问题。这可能是一个繁琐的过程,需要特定的专业知识,但从长远来看会有所回报。

调优通常是一个持续的过程,应定期审查,以确保一致地使用配置并跟上代码和环境的变化。如果不进行持续调整,开发人员可能会错过一些重要的错误,并且团队将浪费时间检查误报。

配置检查器

许多静态分析工具附带数百个检查,涵盖从并发性到安全性到 C 和 C++ 陷阱的一系列问题。许多人不一定适用于给定的应用程序。例如,为什么在分析 C 代码时打开 C++ 特定检查?确定正确的检查器集需要一些试验和错误以及专业知识,以了解什么是最划算的。需要考虑的一些领域是:哪些类型的检查器会导致真正的问题,哪些检查器容易产生噪音,哪些检查器可以配置为有用。一旦一个好的集合最终确定,将其锁定,以便记录并始终如一地运行。

在一个说明检查器价值的真实示例中,客户希望确保他们的静态分析系统始终如一地运行,并要求在系统出现差异时立即收到警报。开发人员创建了一个测试套件,其中包含每个检查器的测试用例。每当他们更改系统时,他们都会运行测试套件以确保每个检查器确实按预期运行。如果结果失败,他们知道他们有需要解决的配置问题。如果测试通过,开发人员会将结果放入他们的设计历史文件中,以证明系统按照他们记录的方式工作。该测试套件不仅为客户提供了责任和保证,而且还降低了他们的维护和管理成本。

过程

一旦实现了全面覆盖、调整了系统并定义了分析的广度,开发人员就可以开始更有效地使用静态分析。对于医疗设备,一个典型的目标是检查报告的每一个问题。每个问题都可以通过多种不同的方式进行分类:

一个必须解决的问题。它将有一个适当的优先级来描述它的重要性以及在软件开发过程中必须如何解决它。

正确标记的问题,但不太可能表现为现实世界的错误,通常是因为该工具做出了不正确的环境假设。这些类型的分类标志着潜在的调整机会。

被错误地标记为错误的问题,无论是误报还是分析工具中的彻底错误。这些问题也预示着调整机会。

这些案例中的每一个都必须仔细审查。尤其应检查误报的正确性。每个问题都需要自由文档,并且需要一个强大的数据保留政策来实现全面问责。如果在流程后期发现重大错误,这些分类缺陷报告可能会在审计过程中或在回顾中重新审查。组织通常会回到静态分析缺陷以查看主要错误是如何通过该过程的。它可能标志着一个中断的过程或一个调整分析以找到更好的错误的机会。

使用模式

静态分析通常在开发人员沙箱构建中和/或通过中央构建运行(参见图 4)。至少,在发布之前分析和评估结果是有意义的。但是,软件开发组织不应该等到最后一刻才解决可能存在的大量错误,特别是当这些错误本可以作为规范流程的一部分更早地解决时。否则,团队可能会错过最后期限并在最坏的时间更改代码。

图 4:静态分析可以根据业务需求、环境和使用的工具以多种不同方式部署。

pYYBAGKuhTWANb-jAAI0dlyrCkE521.png

组织通常将静态分析自动化作为夜间构建或持续集成构建的一部分。通过这种方式,可以经常审查结果并在结果出现时加以处理。其他人则通过使开发人员能够在沙盒环境中分析他们正在处理的代码来更早地执行错误发现过程。开发人员可以立即获得有关其代码更改质量的反馈,然后在签入前修复和验证缺陷。循环时间越快,代码库中的代码就越干净。

无论在哪里运行,技术环境都需要保持一致,以确保结果相同。中央和开发人员构建需要保持一致。对分析设置的轻微更改可能会导致报告更多结果,并且组织不需要审查更多可能主要是误报的问题的额外负担。为开发人员创建一个高度自动化的系统将有助于确保一致性。

许多医疗设备公司不仅将源代码检查到其存储库中,还检查其实际环境。这样,可追溯性是可用的。静态分析可执行文件和所有相关配置、状态和其他相关项目也应定期检查,以确保一致性和问责制。

处理积压

大多数组织在开发大量代码后开始使用静态分析。通常,代码越多,报告的错误就越多。因此,在推出静态分析时,管理层必须预先分配时间来处理最初积压的错误。

最好在开发周期中尽早进行静态分析,以尽量减少积压,然后创建一个流程来处理积压,与由于日常代码更改导致的日常流入错误流分开处理。审查缺陷需要时间,应该在开发人员之间适当分配,或者外包给一个单独的团队来挑选需要工作的缺陷。

文化

所有开发团队在技术技能水平以及团队中每个人如何定义质量方面都存在差异。在培训和指导课程中,最常见的论点是:

“是的,这绝对是一个错误,但代码一直在工作,所以我们不想更改它。”

“我们不应该让这样的代码出现在我们的产品中。”

“这种情况在现实生活中永远不会发生。”

“如果我们将来将产品移植到另一个平台,这将成为一个错误。”

“如果你在这上面多花几分钟,你就会发现这显然是一个错误。”

静态分析将提供各种类型的错误,从必须解决的关键问题到警告。一些组织希望投机取巧,只为可证明的错误更改代码。其他人则主动清理代码并提高质量,甚至“修复”警告。团队应该在处理静态分析结果的方式上保持一致。审查结果、培训/指导和频繁的沟通是成功的关键。

如果使用得当,静态分析已被证明在提高安全关键代码的软件质量方面非常有效。尽管不严格要求批准,但 FDA 承认其有效性。通过适当的规划、专业知识和现实的投资,静态分析应该会产生可观的投资回报,并有助于向市场提供安全的代码。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 医疗
    +关注

    关注

    8

    文章

    1957

    浏览量

    61144
  • C++
    C++
    +关注

    关注

    22

    文章

    2122

    浏览量

    76694
  • 代码
    +关注

    关注

    30

    文章

    4940

    浏览量

    73116
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    医疗设备器械全生命周期的检测认证一站式解决方案

    医疗设备
    广电计量
    发布于 :2025年11月28日 15:23:41

    什么是CVE?如何通过SAST/静态分析工具Perforce QAC 和 Klocwork应对CVE?

    本文将为您详解什么是CVE、CVE标识符的作用,厘清CVE与CWE、CVSS的区别,介绍CVE清单内容,并说明如何借助合适的静态分析工具(如Perforce QAC/Klocwork),在软件开发早期发现并修复漏洞。
    的头像 发表于 10-31 14:24 276次阅读
    什么是CVE?如何通过SAST/<b class='flag-5'>静态</b><b class='flag-5'>分析</b>工具Perforce QAC 和 Klocwork应对CVE?

    利用软件的方法解决EMC问题

    有时候解决EMC问题利用软件的方法反而是更高效快速的。二整改案例今天分析一个用软件的方法解决EMC问题的实际案例,通过该案例可以了解到软件
    的头像 发表于 10-28 11:35 158次阅读
    <b class='flag-5'>利用</b><b class='flag-5'>软件</b>的方法解决EMC问题

    如何在Zephyr中进行静态代码分析

    在嵌入式软件开发中,“能编译通过”并不等于“可以放心交付”。安全性、可靠性和合规性是产品能否顺利量产的关键。进入量产的Bug会浪费宝贵的工程时间,也会削弱用户信任;安全漏洞可能暴露设备,带来严重后果;在受监管市场中,若未满足MISRA或CERT检查要求,甚至会直接导致产品
    的头像 发表于 10-17 10:28 527次阅读

    医疗设备维修进修探索与成长并行的旅程

    医疗设备
    ch18091592326
    发布于 :2025年09月18日 14:15:56

    第三届大会回顾第7期 | 面向OpenHarmony大规模代码的路径敏感的稀疏值流分析

    静态分析(Static Analysis)是软件开发中不可或缺的一部分,它可以帮助开发人员提高代码质量、减少缺陷和安全风险。
    的头像 发表于 08-18 11:31 644次阅读
    第三届大会回顾第7期 | 面向OpenHarmony大规模<b class='flag-5'>代码</b>的路径敏感的稀疏值流<b class='flag-5'>分析</b>

    汽车软件团队必看:基于静态代码分析工具Perforce QAC的ISO 26262合规实践

    ISO 26262合规指南,从ASIL分级到工具落地,手把手教你用静态代码分析(Perforce QAC)实现高效合规。
    的头像 发表于 08-07 17:33 863次阅读
    汽车<b class='flag-5'>软件</b>团队必看:基于<b class='flag-5'>静态</b><b class='flag-5'>代码</b><b class='flag-5'>分析</b>工具Perforce QAC的ISO 26262合规实践

    让老旧医疗设备“听懂”新语言:CAN转EtherCAT的医疗行业应用

    医疗影像设备的智能化升级中,通信协议的兼容性常成为工程师的“痛点”。例如,某医院的移动式X射线机采用CAN协议控制机械臂,而主控系统基于EtherCAT架构。两者协议差异导致数据延迟高达5ms
    发表于 07-18 15:27

    一技在手,医疗无忧!零基础转行高薪医疗维修工程师

    黄金赛道!” 6月9日彩虹将针对零基础人员开展维修技能培训,培训包含彩超、内镜、CT、DR设备,从基础原理-设备构造-整体拆装-常见故障判断分析-解决故障等一系列课程下来也就正式踏入医疗
    发表于 05-15 10:22

    【JVM开发者必看】IntelliJ IDEA代码分析实践指南:实时纠错、冗余检测、自动修复等

    【IntelliJ IDEA中的代码分析技巧】静态代码分析是指在不实际运行代码的情况下扫描
    的头像 发表于 03-13 10:34 855次阅读
    【JVM开发者必看】IntelliJ IDEA<b class='flag-5'>代码</b><b class='flag-5'>分析</b>实践指南:实时纠错、冗余检测、自动修复等

    医疗设备全生命周期管理,守护健康生命线

    医疗设备全生命周期管理是保障医疗服务的关键,其中物联网技术实现设备实时监测,大数据分析助力精准维护决策,为
    的头像 发表于 03-03 10:30 810次阅读
    <b class='flag-5'>医疗</b><b class='flag-5'>设备</b>全生命周期管理,守护健康生命线

    集成电路设计中静态时序分析介绍

    本文介绍了集成电路设计中静态时序分析(Static Timing Analysis,STA)的基本原理、概念和作用,并分析了其优势和局限性。   静态时序
    的头像 发表于 02-19 09:46 1295次阅读

    ADC的静态指标有专用的分析工具吗?

    请问:ADC的静态指标有专用的分析工具吗?该指标很少在评估ADC指标时使用,是否该指标不重要,应用中什么情况下需要评估该指标? 另外ADC的SNR = 6.02*N + 1.76 +10*log10(fs/2BW) 当被采样信号为单音时 该BW为多少?
    发表于 02-08 08:13

    如何提高嵌入式代码质量?

    嵌入式系统的发展已经深刻地影响了我们日常生活的方方面面,从智能家居到汽车控制系统,再到医疗设备和工业自动化等领域,嵌入式系统无处不在。嵌入式软件的质量直接关系到系统的安全性、稳定性和性能。因此,提高
    发表于 01-15 10:48