网易首页 > 网易号 > 正文 申请入驻

如何通过提升代码质量,加速完成项目的功能安全认证

0
分享至

作者:Shawn Prestridge

职务:IAR资深现场应用工程师/ 美国FAE团队负责人

近年来,国内电子公司和芯片设计企业大举进攻汽车、医疗和工业等高可靠应用(mission-critical)领域,为自己找到了摆脱红海的新领域。但是高可靠应用多数都需要功能安全认证,在许多行业在诸如汽车、航空电子、医疗和工业控制等行业,是很常见甚至是必须的工作。这些认证通过必要的流程和测试来填写功能安全清单,一直以来都是一个非常困难的事情,但有一些方法可以加快您的认证。

虽然可以对研发过程进行大量的微调以加快您的认证,但一切现代电子信息系统都从软件即代码质量开始。但如何能够确保代码质量呢?幸运的是,使用一些简单的方法,可以几乎立即提升您的代码质量,并尽可能地减少痛苦。

从标准中获得帮助

作为一家产品被全球近五万家企业/机构采用的嵌入式开发工具提供商,IAR的研发工程师评估在C99中,代码规范中有大约190种模棱两可之处。也就是在C99中,有190种不同的合乎句法的C结构,在C语言规范中没有明确说明。实际上,进入C18,情况会变得有一点糟糕,在C++中,情况会更加糟糕,这里需要引入多继承和虚拟继承的概念。当然,编译器必须把您的源代码变成具体的代码,所以它必须对代码的含义选择一种解释,然后用它来运行。

这在实践中意味着,您可以得到不同的编译器,它们对源代码有不同的解释。在一个高可靠的系统中,这是一个如同噩梦般的场景;特别是由于许多公司为了追求尽快通过功能安全认证,为了方便测试在多个平台上交叉编译他们的代码。可以想象,这对您获得认证的时间会有多么非常糟糕的影响,因为您不得不围绕所有这些情况进行测试,以证明代码的可重复性和可靠性。

怎样才能破解这个难题呢?简短的答案是,避免模棱两可的情况出现在您的代码中。但如何做到这一点呢?使用像MISRA这样的编码标准可以快速解决这个难题,因为这些标准就是为了让您避免掉入代码中那些常见类型的陷阱。这些标准还倡导编码要安全可靠,以减少您代码中的漏洞数量。但是,怎样才能确保我们遵循这些标准呢?幸运的是,功能安全标准提供了一种方法。

标准需要代码分析

几乎每一个功能安全标准都需要您对您的代码进行静态分析,并且强烈建议您对您的代码进行运时(或动态)分析。这些标准中影响最广的是IEC 61508,涵盖了一般与安全相关的系统。在该标准的C.4.2这一节中,对于安全完整性等级(SIL)1以上的产品,不建议使用没有消除模棱两可和危险行为的编码标准的C语言。

换句话说,如果您想为您的产品获得SIL 2-4等级的认证,您必须使用静态分析来让您的代码更加稳固。这是为什么呢?这些静态分析工具可以迫使开发者实施诸如MISRA的编码标准。此外,静态和运时分析可以帮助您提高代码质量,快速指出您何时的编码行为是有风险的,特别是存在上述编码标准中模棱两可的情况。

然而,当您使用这类自动化工具时,也会对您的认证时间线产生巨大影响。许多组织使用难以配置、难用的代码分析工具,这些工具在构建服务器上运行,作为每日构建的一部分。这对您的帮助并不是很大,因为个体开发者并没有得到即时的反馈,他们并不知道自己刚刚写的代码有什么问题。此外,有时这些工具发出的警告信息是难以理解的,开发者们要弄清楚是什么意思,以及怎样修正代码才能让警告消失,这浪费了他们的时间。

换句话说,安全性认证不是要突出项目的优点(高性能),而是要尽量找出项目的弱点(漏洞),所以要尽可能地选用被最大量开发人员群体验证过的开发工具,或者是“见多识广”的开发工具系统。全球有超过15万开发人员在使用IAR提供的IAREmbedded Workbench开发工具来完成其各种嵌入式项目,通过与其中许多“高手”开发人员沟通发现:如果您能在开发过程中进行代码分析--在正式构建之前--那么漏洞就像是从来没有过一样。您项目的漏洞会比较低,这正是认证机构想要的,因为这意味着您有一个非常成熟的开发组织。

让代码分析成为日常工作流程的一部分

IAR的工程师们见过许多来自各行各业的公司,我们注意到的是,配置起来越容易使用的代码分析工具越简单,开发人员就更有可能使用它们,这样能够帮助开发人员更快完成项目实现产品上市。让这些自动化工具成为开发者工具箱的一部分,意味着您可以在编写应用程序时检查和改进代码质量,同时可以在“区域”内了解这部分代码要做什么以及它如何与系统中的其他模块进行交互。为了有效地做到这一点,这些工具必须被整合到日常工作流程中。

在浏览其他人对整合代码分析的看法时,IAR的工程师发现谷歌在ACM出版物上发表了一篇文章,探讨了代码分析的优点。虽然文章对他们的整个代码库,包括C、C++和Java进行了全面的考察,但他们的结果非常明确:

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

作者说,将静态分析检查整合到编译器工作流程中,并使其作为错误出现,极大地提高了对工具调查结果的关注度,这意味着他们的代码质量最后会很高。再往下看,他们谈到了一项调查,这项调查面向最近遇到编译器错误以及已经收到修复同一问题补丁的开发者:

“谷歌开发者认为,在编译时标记的问题(与已提交的代码补丁不同)能捕捉到更严重的漏洞;例如,编译过程中标记的问题里面有74%被调查参与者认为是‘真正的问题’,相比之下,在已提交的代码中发现的问题只有21%。”

文章还谈到了将代码分析作为工作流程一部分的重要性,指出当他们通过静态分析工具自动运行提交的代码并邀请工程师查看分析仪表板时,很少有工程师跟进到底。在编译过程中的即时反馈让静态分析使用起来更简单,也更难被忽视。因此,他们选择在每个人的工作流程中默认加入静态分析。谷歌团队认为,代码分析工具要想取得成功,一定要让开发人员感觉到他们用了这些工具,并从中受益,并且很享受用这些工具。

但是,在工作流程中加入代码分析,您期望看到什么样的结果呢?有一件事情是可以期望实现的,那就是提高应用程序的整体安全性,因为高质量代码可以消除漏洞去利用诸如缓冲区溢出和非法指针等机会,如该文所述。虽然这本身就是使用代码分析的一个很好的理由,但有时很难说服人们相信“一针不补,十针难缝”这句格言,您需要更显著的结果来说服开发者和管理层,让他们信服代码分析的好处。

Stefan Wagner等人的一篇论文使用经验数据来计算代码分析工具与传统测试在不同代码库上的优势。他们的结果很有说服力:在769个被识别到的漏洞中,76%是被代码分析工具发现,只有4%是在传统测试中发现,其余20%在代码审查中发现。如果能在开始测试前就消除75%的漏洞,那么能多快地实现软件的平均故障间隔时间(MTTF)目标?答案是 “非常快”。仅仅是看测试节省下来的时间和金钱,即可发现对代码分析工具的投资就是值得的,更不用说缩短产品上市周期省下的时间。这些都是功能安全认证机构喜欢看到的流程类型,因为它极大地降低了最终产品仍然含有漏洞的风险。

高质量的代码让您在通往功能安全的道路上快速前进

加快功能安全认证之路的关键是提高代码质量。提高代码质量,可以降低您的产品漏洞率,这意味着可以更快地达到软件发布标准,让您的开发组织在功能安全认证机构看来非常成熟。虽然您永远不可能确切地知道一个应用程序中还有多少漏洞,但尽早地多使用代码分析工具可以减少漏洞的数量。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
6岁女童礼物裙子遭嫌弃,妈妈伤心惨遭网友嘲讽:自找的!

6岁女童礼物裙子遭嫌弃,妈妈伤心惨遭网友嘲讽:自找的!

饭桶说史
2024-06-01 05:54:13
前男友结婚,我到现场祝福,发现新娘竟和我长得惊人相似

前男友结婚,我到现场祝福,发现新娘竟和我长得惊人相似

千面凡君
2024-05-31 07:30:23
瑞典出人意料向乌克兰移交一架ASC 890预警机,用于F-16配套作战

瑞典出人意料向乌克兰移交一架ASC 890预警机,用于F-16配套作战

探索星空
2024-05-30 07:36:49
广东男子借邻居地种菜,误会邻居是送地给他,多年后不想还给邻居

广东男子借邻居地种菜,误会邻居是送地给他,多年后不想还给邻居

大苏专栏
2024-05-31 20:30:29
“老师”在4岁女儿手背画图案,女儿很得意,爸爸一看却立刻报警

“老师”在4岁女儿手背画图案,女儿很得意,爸爸一看却立刻报警

华人星光
2024-05-30 16:50:46
朱婷被逼上首发,球队氛围变正常,刁琳宇成三无,许晓婷必须回归

朱婷被逼上首发,球队氛围变正常,刁琳宇成三无,许晓婷必须回归

跑者排球视角
2024-06-02 00:09:57
事情闹大了!出动25万人夜查电动车惹众怒,央视解读,评论一边倒

事情闹大了!出动25万人夜查电动车惹众怒,央视解读,评论一边倒

今日美食分享
2024-06-01 22:42:01
奇迹!四川村民放田水时捕获重达14.3公斤的巨型鲵!

奇迹!四川村民放田水时捕获重达14.3公斤的巨型鲵!

亿通电子游戏
2024-05-31 10:06:12
不扮嫩、不打针、人到中年演妈妈,45岁陈乔恩的情形值得赞扬

不扮嫩、不打针、人到中年演妈妈,45岁陈乔恩的情形值得赞扬

娱乐圈十三太保
2024-05-30 14:35:21
原来他是gay啊?真假,有点惊讶诶!

原来他是gay啊?真假,有点惊讶诶!

章娱来了
2023-05-30 09:22:44
交往1年,结婚12天后!新郎才赫然发现娇滴妻子竟是一个....男人

交往1年,结婚12天后!新郎才赫然发现娇滴妻子竟是一个....男人

听风听你
2024-05-31 10:37:24
她漂亮干净。“中国版全智贤”之称。

她漂亮干净。“中国版全智贤”之称。

唱跳rap乒乓球
2024-05-30 16:39:39
10万人冲上街,台湾要变天!退役老将喊话大陆:中国人不打中国人

10万人冲上街,台湾要变天!退役老将喊话大陆:中国人不打中国人

国学璀璨
2024-05-31 12:18:11
离婚十年后葛天首次公开谈论刘翔:他确实很酷,这说明我眼光不错

离婚十年后葛天首次公开谈论刘翔:他确实很酷,这说明我眼光不错

娱乐的小灶
2024-06-01 19:40:17
今年选个谁?湖人连续两年手握首轮17号签 去年选的是席菲诺

今年选个谁?湖人连续两年手握首轮17号签 去年选的是席菲诺

直播吧
2024-06-02 00:12:20
紧急提醒全体股民!A股即将迎来超级大变盘,下周A股一定这样走!

紧急提醒全体股民!A股即将迎来超级大变盘,下周A股一定这样走!

静守时光落日
2024-06-01 12:50:23
女市委书记高速路上被警车别停,两名便衣下车对其进行搜身揩油

女市委书记高速路上被警车别停,两名便衣下车对其进行搜身揩油

神奇的锤子
2024-05-19 14:16:07
女大学生隐瞒怀胎被错诊肾病死亡:内幕曝光后评论区让人毛骨悚然

女大学生隐瞒怀胎被错诊肾病死亡:内幕曝光后评论区让人毛骨悚然

听风听你
2024-06-01 22:09:50
泰国军方默认为泰党执政!前进党大势已去,他信势力有搞到10票

泰国军方默认为泰党执政!前进党大势已去,他信势力有搞到10票

小哥在旅途呀
2024-06-01 05:23:43
我军军演后,台媒发布民调,称6成台湾民众支持“两岸互不隶属”

我军军演后,台媒发布民调,称6成台湾民众支持“两岸互不隶属”

贺文萍
2024-05-30 19:15:02
2024-06-02 01:44:49
电子科技圈
电子科技圈
一站了解全球电子信息科技趋势
106文章数 12关注度
往期回顾 全部

科技要闻

余承东:不卷价格!雷军:将双班制生产!

头条要闻

小伙投资300万在瑞典开拉面馆生意火爆 1碗面卖100元

头条要闻

小伙投资300万在瑞典开拉面馆生意火爆 1碗面卖100元

体育要闻

女排最强2主攻合体 合砍40分打懵泰国

娱乐要闻

白玉兰提名:胡歌、范伟争视帝

财经要闻

实锤!普华永道,危!

汽车要闻

吉利银河E5 Flyme Auto智能座舱首发

态度原创

游戏
亲子
房产
公开课
军事航空

LPL: Rookie“诡术飞机”骑脸输出,NIP让一追二战胜WBG

亲子要闻

儿童节孩子表演节目给大家看?大可不必!

房产要闻

重磅!琼海出台楼市新政:住房出租、挂牌计划出售,都可减套数!

公开课

近视只是视力差?小心并发症

军事要闻

拜登称以色列提出新的三阶段停火方案

无障碍浏览 进入关怀版