广告

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

时间:2022-01-11 04:53:10 作者:Shawn Prestridge,IAR Systems行业分析兼高级现场应用工程师/美国FAE团队 阅读:
在开发功能安全型关键应用中,开发人员可以采取多项调整措施来加快认证,然而这一切都依赖于应用的代码质量。要怎么做代码质量才能得到保障呢?
广告

序言

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

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

善用标准

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

责编:Amy.wu
本文为EET电子工程专辑 原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 高深宽比刻蚀和纳米级图形化推进存储器的路线图 随着市场需求推动存储器技术向更高密度、更优性能、新材料、3D堆栈、高深宽比 (HAR) 刻蚀和极紫外 (EUV) 光刻发展,泛林集团正在探索未来三到五年生产可能面临的挑战,以经济的成本为晶圆厂提供解决方案。
  • 面向智能应用的长寿命体积小检测开关 自2014年以来,物联网(IoT)技术的实施使智能联网设备在广阔的市场中吸引了众多的关注。许多智能家居技术正在驱动被动、未联网的设备向主动的联网设备过渡。无论是在家中还是在路途中,智能家居设备都可以为联网设备提供高级控制,从而简化人们的生活并提供更丰富的功能。
  • 给M1版Macbook装个Windows,实测可用性表现 在苹果为Mac设备选择自家的M1系列芯片以后,苹果面临一个比较大的市场问题:原本那些买着MacBook,装着Windows系统的星巴克气氛组成员无法装X了。因为M1芯片基于Arm指令集,和Intel x86指令集根本上不同,Mac也就和传统Windows说再见了。
  • 把控JESD204B接口功能的关键问题 JESD204B标准提供一种将一个或多个数据转换器与数字信号处理器件接口的方法(通常是ADC或DAC与FPGA接口),相比于通常的并行数据传输,这是一种更高速度的串行接口。该接口速度高达12.5 Gbps/通道,使用帧串行数据链路及嵌入式时钟和对齐字符。
  • 图像传感器MA+SA分析——凡走过,必留下痕迹 如同智能手机内的应用处理器所采用的单芯片系统(System on a chip, SOC)一样,图像传感器因为堆栈结构的设计也算是个单芯片系统,系统主要可分为四大部分:像素(Pixel)、逻辑区电路、模拟数字转换器、以及图像信号处理器(Image signal processor, ISP),本文将焦点放在像素上,利用全方位的分析技术,引领读者认识其内部的结构。
  • 如何为汽车应用选择可靠的电容器 为当今汽车电子设备选择性能可靠的电容器时需要考虑好几个参数。首先必须了解各种电容器技术的性能特征。其次,必须考虑汽车环境和特殊应用场景,才能确定最具成本效益和最可靠的解决方案。
  • 新款iPad Pro 2021成最受欢迎的 由于采用性能相对强大的M1处理器和mini-LED屏幕以及更多的创新,新款iPad Pro 2021已经成为消费者心目中最受欢迎。然而,iPad 2却已经在全球范围内被列入“复古和过时”的名单中。
  • 三星折叠屏手机Galaxy Z Fold 3 目前来看,折叠屏新机作为一种新的生产力工具,逐渐成为高端/平板的一种趋势,有报料称三星的Galaxy Z Fold 3发布时间或为7月,并且会引入新手势操控。

  • “低碳互联,聚势共赢”—— 英飞凌 英飞凌科技(中国)有限公司在深圳举办了其大中华区首次同时覆盖万物互联、未来出行、低碳节能三大领域、以“低碳互联、聚势共赢”为主题的跨行业生态圈大会,诠释了在电气化、数字化大潮的推动下,英飞凌由产品和技术供应商向系统解决方案提供商的战略转型之道,并展示了英飞凌联合各方合作伙伴打造全产业价值链生态圈,助力本土产业跨界融合、创新发展的愿景,以及取得的部分最新成果。
  • 灵动发布全新高性能电机专用MM32SP 灵动微电子发布全新高性能电机专用 MM32SPIN0280 系列 MCU,该系列 MCU 搭载了 Arm® Cortex®-M0 内核,最高工作频率可达 96MHz,内置高速存储器,并集成了 I/O 端口和多种外设。
  • 2022年,通信行业有哪些看点? █ 看点1:5G专网2021年,是5G toB的发展元年。这一年,在政府的巨额资金支持下,在运营商和厂商的资源堆积下,各个行业都扶持了大量的5G标杆应用,例如5G工厂、5G码头、5G矿山等。2022年
  • 草图实时变身二次元老婆,还有512种参数可调 点击上方↑↑↑“OpenCV学堂”关注我来源:公众号 量子位 授权画画手残,但还是想拥有属于自己的二次元waifu怎么办?没问题。真·有手就行:不得不说这个AI有点儿东西,画得确实很像我未来老婆!是的
  • 曝腾讯拟收购小米旗下黑鲨手机!转向VR设备、进军元宇宙 来源 :驱动之家腾讯可能又要进军手机市场了。据 36 氪最新报道,目前已经从多个独立信源处获悉,腾讯拟收购游戏手机公司黑鲨科技,收购后,黑鲨整体将并入任宇昕主导的腾讯集团平台与内容事业群(PCG)。报
  • 国晶|年产能480万片!国内首条全自动12英寸大硅片生产线建成投产 来源 :新华社2022年1月9日,国晶(嘉兴)半导体全线打通全自动产线,拥有可生产12英寸完美晶体抛光片的领先技术。上海柘中股份投资的国晶(嘉兴)半导体有限公司成立于2018年底,坐落于浙江省嘉兴市南
  • 传腾讯将27亿收购黑鲨科技,进军元宇宙 1月10日消息,据36氪最新报道,目前已经从多个独立信源处获悉,腾讯拟收购游戏手机公司黑鲨科技,收购后,黑鲨整体将并入任宇昕主导的腾讯集团平台与内容事业群(PCG)。报道称,本次收购金额或为26~27
  • 武汉京东方去年产值首破100亿元 据长江日报大武汉客户端报道,2021年,武汉京东方等多家电子信息制造业企业首次突破百亿元,预计2021年武汉电子信息制造业整体产值突破3000亿元,实现20%以上的高速增长。报道称,数据显示,2021
  • 惠科、贵安综保区就液晶显示模组项目进行洽谈 据贵州日报天眼新闻报道,1月5日,贵州贵安综保区组队赴重庆市惠科金渝光电科技有限公司洽谈考察,双方就液晶显示模组项目落地贵安综保区事宜进行座谈交流。考察团一行参观了产品展示区和液晶显示器全自动化生产车
  • 京东方供OLED!荣耀首款折叠屏手机发布,9999元起 1月10日晚间消息,智能手机品牌荣耀召开新品发布会,正式推出旗下首款折叠屏手机Magic V。荣耀表示,该机是其在科技行业的深厚技术储备和丰富经验积累,是荣耀追求极致产品主义的顶级代表作。Magic
  • 锐龙6000有无桌面版?两倍性能是作弊?AMD一一回应 本届CES上,AMD发布了基于Zen3+、RDNA2的锐龙6000系列处理器,虽然型号不少,但都面向的是笔记本平台。在媒体交流活动中,AMD企业副总裁、消费渠道总经理David McAfee暗示,有推
  • 学好C++需要哪些知识,给大家画了几张图     关注、星标公众号,直达精彩内容来源:技术让梦想更伟大作者:李肖遥C++的学习还是很重要的,C++基础知识、计算机网络、操作系统、网络编程、数据结构与算法、数据库等等都是需要深入了解的。在学完这
广告
热门推荐
广告
广告
广告
EE直播间
在线研讨会
广告
广告
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了