广告

如何提升项目代码质量以快速通过功能安全认证

2022-01-10 19:32:33 Shawn Prestridge 阅读:
在开发功能安全型关键应用中,开发人员可以采取多项调整措施来加快认证,然而这一切都依赖于应用的代码质量。要怎么做代码质量才能得到保障呢?幸运的是,我们拥有一些简单的方法来立竿见影地提升代码质量,并尽可能地减少工作量。

序言

在汽车、航空电子、医疗和工业控制等众多行业中,新开发的应用在大多数情况下必须取得相应的功能安全认证。通过所有必要的流程和测试来完成功能安全认证历来是一个非常困难的过程,但有一些方法有助于加快完成认证的速度。当然,选择诸如IAR Embedded Workbench这样本身就获得了认证,并在多样化的实际应用中经过验证的开发工具,也是加快从设计到完成认证过程的方法。O4kednc

在开发功能安全型关键应用中,开发人员可以采取多项调整措施来加快认证,然而这一切都依赖于应用的代码质量。要怎么做代码质量才能得到保障呢?幸运的是,我们拥有一些简单的方法来立竿见影地提升代码质量,并尽可能地减少工作量。O4kednc

善用标准

您知道吗,在C99代码规范中有大约190个歧义?确切地说,在C99中,有190种语法上合法的C结构,但在C语言规范中却没有得到明确说明。实际上,如果使用最新的C18代码规范,情况会变得更糟一些,如果在C++中引入多重继承和虚拟继承,将会陷入更为糟糕的局面。编译器会把源代码转变成可执行代码,因此必须对代码的含义进行解析后才能正确运行。O4kednc

在实际情况中,开发人员可能会用到不同的编译器,它们可能会对源代码进行不同的解释。然而,在一个高可靠性的系统中,这将是一个噩梦般的场景,尤其是许多追求功能安全认证的公司一般都会在多个平台上交叉编译他们的代码以方便测试。可以想象,这将严重拖慢认证速度,因为您必须针对所有此类情况进行测试,以证明代码的可重复性和可靠性。O4kednc

怎样才能度过这个难关呢?简单来说,避免代码歧义即可。但要如何做到这一点呢?开发人员可以选择MISRA这样的编码标准,该标准经设计,可避免常见的代码歧义。此外,该标准还提倡运用安全可靠的编码实践,以减少代码中的缺陷数量。有了功能安全标准,问题就能迎刃而解。O4kednc

功能安全标准涵盖了代码分析

几乎每一个功能安全标准都要求开发人员对代码进行静态分析,而且还会强烈建议项目团队对代码进行运行时(或称之为动态)分析。其中影响最广的标准是IEC 61508,在通常意义上它适用于所有安全相关系统。根据该标准第C.4.2节的内容,不建议在安全完整性等级(SIL)在1级以上的情况下使用没有消除歧义和危险行为的编码标准的C语言。换句话说,如果开发的产品要获得SIL 2-4认证,就必须使用静态分析来提升代码的健壮性。O4kednc

而静态分析工具可以强制开发者实施编码标准,如MISRA。此外,静态和运行时分析可以快速指出有风险的编码行为,特别是之前提到的编码标准歧义,因此有助于提高代码质量。基于这样的考虑,开发人员应当更多地选择诸如IAR Embedded Workbench这类在多样化应用中得到验证的工具,它们可以提供更全面的标准化功能。O4kednc

然而,何时使用这些类型的自动化工具也会对项目的认证时间表产生巨大影响。许多公司组织会使用难以配置、难以使用的代码分析工具,使其每晚运行在构建服务器上。然而这种工具实际作用有限,因为每个程序开发者无法得到即时反馈,弄清他们刚写的代码究竟有什么问题。O4kednc

此外,有时这些工具发出的警告信息本身就晦涩难懂,浪费了开发者的时间去弄清楚它们的真正含义,以及如何纠正代码来消除警告。如果能在开发过程中先运行代码分析,然后才进入正式构建,那么就可以完美避免代码缺陷。如此一来,项目代码缺陷注入率将大幅降低,这正是认证机构非常看重的指标,因为这意味着项目有一个非常成熟的开发组织。O4kednc

将代码分析融入日常工作流程

根据针对多个行业里多家公司开展的调研的结果,IAR Systems团队发现,代码分析工具的配置和使用越容易,开发者选用它的几率就越高,也能更快受益。如果能将这些自动化工具纳入到开发者的工具箱中,那么开发者就可以在编写应用时随时检查和改进代码质量,同时在“实地”考察这部分代码要做什么以及它如何与系统中的其他模块互动。为了有效地做到这一点,必须将代码分析工具整合到日常工作流程中。O4kednc

为了解其他人对集成代码分析的看法,IAR团队在查阅资料时发现谷歌在ACM期刊上发表了一篇文章,探讨了代码分析的优点。虽然文章对他们的整个代码库(包括C、C++和Java)进行了全面的考察,但他们的结论非常明确:O4kednc

在开发过程的早期就能发现编译器错误,并且能够整合到开发者的工作流程中。我们发现扩大编译器的检查集合对提高谷歌的代码质量是有效的。O4kednc

作者表示,把静态分析检查整合到编译器工作流程并输出为Error信息,将极大地提高开发者对工具输出信息的关注,最终大幅提升代码质量。再往下看,他们谈到了向最近遇到某个编译器错误的开发者和已经收到该错误问题的修复补丁的开发者发出相同的调研。O4kednc

谷歌的开发者认为,在编译时标记出错误信息(相比于植入代码检测功能的补丁)能捕捉到更重大的错误;例如,调研参与者认为在编译时标记的问题中的74%属于真正的问题,而在检测代码中发现的真正问题只有21%O4kednc

此外,该文章还谈到了将代码分析整合到工作流程的重要性,指出当他们通过静态分析工具自动运行提交的代码并邀请工程师查看分析仪表板时,很少有工程师跟进。但是,如果在编译过程中就能得到即时反馈,则静态分析工具的使用更便捷且分析结果也更难被忽视。因此,他们选择在每个人的工作流程中默认集成静态代码分析。他们认为要推广代码分析工具,开发者必须感到能从中受益,并且喜欢使用这些工具。O4kednc

在工作流程中加入代码分析会得到什么样的结果?结果之一是提高了应用的整体安全性,因为优质代码可以消除缓冲区溢出、非法指针等漏洞。虽然这个理由足够充分,但有时很难让人们做到“防范于未然”,您需要更显著的结果来说服开发者和管理层相信代码分析的优点。O4kednc

Stefan Wagner等人的一篇论文(https://arxiv.org/pdf/1711.05019.pdf)使用经验数据来计算代码分析工具与传统测试在不同代码库中的优劣。他们的结果很有说服力,在769个被识别的缺陷中,76%是被代码分析工具发现的,而只有4%被传统测试发现(其余20%则在代码审查时发现)。O4kednc

如果能在开始测试前就消除75%的缺陷,实现软件平均故障间隔时间(MTTF)目标能有多快?答案是“非常快”。仅仅是在测试上节省的时间和金钱就值得在代码分析工具上进行投资,更不用说它还能加快上市时间。这些都是功能安全认证机构喜欢看到的流程类型,因为它极大地降低了缺陷进入最终产品的风险。O4kednc

优质代码加速功能安全认证

加快功能安全认证的关键是提高代码质量。只有提高代码质量,项目团队才可以降低缺陷注入率,从而更快地达到软件发布标准,这样在提交给功能安全认证机构认证时,它们才会认为您的组织拥有非常成熟的流程。虽然开发者永远无法确切知道一个应用中还有多少缺陷,但通过早期和经常使用代码分析工具将有助于减少其数量。O4kednc

文章作者:Shawn PrestridgeIAR Systems行业分析兼高级现场应用工程师/美国FAE团队负责人O4kednc

责编:Franklin
本文为EDN电子技术设计 原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
  • Ignion选用AWS云服务来变革物联网设计流程 Ignion宣布推出天线设计智能云服务Antenna Intelligence Cloud,该服务将云计算和人工智能功能引入到天线领域。
  • HT7181 3.7V/7.4V升16V内置MOS大功率升压IC解决方案 深圳市永阜康科技有限公司针对升压值18V以下的DC-DC升压应用需求,推广一款集成14A开关管的17.8V输出、大电流非同步DC-DC升压IC:HT7181。
  • “中国IC设计成就奖”提名产品简介:显示触控一体化驱动 集创北方研发的显示触控一体化驱动芯片(TDDI)突破了CDMA抗干扰技术、驱动控制与触控侦测分时复用全驱动技术、减光罩、低功耗等前沿技术,形成了TDDI特有的显示横纹 (Hline)解决方案
  • “中国IC设计成就奖”提名产品简介:高可靠性隔离式双通 纳芯微NSi6602-Q1是国内首款车规级高压隔离半桥驱动芯片,该芯片集高隔离耐压、高可靠性、高集成度、低延时、灵活封装配置等特性于一体,可应用在车载电源OBC/DCDC、车载电驱、充电桩、光伏储能、数字电源等泛能源重点发展领域。
  • Matter的核心:定义下一阶段智能家居的互操作性和无线技 在当今完全互联的世界里,使用各种智能家居的生活环境意味着需要同时与多种无线协议进行交互。照明系统、供暖和制冷系统、安全系统、娱乐系统——现在家庭生活的方方面面几乎都可以通过无线方式进行增强和控制。尽管无线技术的优势众多,但如今家庭中的无线连接并不是一帆风顺的。即便对于深谙各种先进技术的智能家居爱好人士来说,家庭网络中处理各种不兼容的无线协议也构成了挑战。
  • Microchip模拟嵌入式SuperFlash技术助力存算一体创新 SuperFlash memBrain存储器解决方案使知存科技片上系统(SoC)能够满足最苛刻的神经处理成本、功耗和性能要求
  • “中国IC设计成就奖”提名产品简介:数字隔离器Pai122M3 荣湃数字隔离器产品采用自主知识产权的智能分压技术开发设计而成,相比同类隔离产品,该专利技术可以实现更低的功耗,更高的速率和更优的时序特性。智能分压技术相比传统隔离传输技术,采用更简洁的电路架构实现更优的隔离传输性能,采用智能分压锁存放大模块电路,替代传统架构中的高频发生电路,高频调制电路和高频解调三部分电路,因此芯片面积只有传统架构芯片面积的1/2~1/3。
  • “中国IC设计成就奖”提名产品简介:集成隔离电源的隔离 CA-IS3062W是川土微电子在2020年12月推出的一款隔离式控制区域网络(CAN)物理层收发器,同时内部集成隔离式DC-DC转换器。符合ISO11898-2标准的技术规范。此器件采用片上二氧化硅(SiO2)电容作为隔离层,在CAN协议控制器和物理层总线之间创建一个完全隔离的接口,配合内部集成的隔离式DC-DC,可隔绝噪声和干扰并防止损坏敏感电路。
  • “中国IC设计成就奖”提名产品简介:45W氮化镓超快墙充B 45W氮化镓超快墙充,采用纳微快充芯片内嵌,足够小的体积,7月初上线京东众筹,成功众筹20万金额,以其直充笔记本,手机充电更快,使用各种使用场景受到用户的喜欢和高度肯定。
  • “中国IC设计成就奖”提名产品简介:低功耗通用MCU(微控 FM33LC0xxx系列MCU是基于 ARM Cortex-M0 内核的 32 位低功耗 MCU 芯片,在休眠模式下测功耗大概在1uA左右,片上最高主频 64MHz,最大可支持256KB FLASH 程序存储器和 24KB RAM,集成 LCD驱动、带温补的 RTC、 SAR ADC、OPA、AES,以及 UART、 I2C、 SPI、 7816等通用外设接口,内置硬件 USB2.0 FS Device。
  • “中国IC设计成就奖”提名产品简介:ada200优势 1.九天睿芯,感存算一体芯片,可以在功耗和性能满足”低功耗AI场景“的同时,成本也大幅度下降。2.采用模数混合的存内计算架构,ADA200相比传统数字芯片,1/3成本,1/10功耗。
  • “中国IC设计成就奖”提名产品简介:思元370MLU370优势 基于7nm制程工艺,思元370是寒武纪首款采用chiplet(芯粒)技术的AI芯片,集成了390亿个晶体管,最大算力高达256TOPS(INT8),是寒武纪第二代产品思元270算力的2倍。凭借寒武纪最新智能芯片架构MLUarch03,相较于峰值算力的提升,思元370实测性能表现更为优秀:以ResNet-50为例,MLU370-S4加速卡(半高半长)实测性能为同尺寸主流GPU的2倍;MLU370-X4加速卡(全高全长)实测性能与同尺寸主流GPU相当,能效则大幅领先。
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了