《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 解決方案 > 如何提升項(xiàng)目代碼質(zhì)量以快速通過(guò)功能安全認(rèn)證

如何提升項(xiàng)目代碼質(zhì)量以快速通過(guò)功能安全認(rèn)證

2022-01-10
作者:Shawn Prestridge,IAR Systems行業(yè)分析兼高級(jí)現(xiàn)場(chǎng)應(yīng)用工程師/美國(guó)FAE團(tuán)隊(duì)負(fù)責(zé)人
來(lái)源:IAR Systems

  序言

  在汽車(chē)、航空電子、醫(yī)療和工業(yè)控制等眾多行業(yè)中,新開(kāi)發(fā)的應(yīng)用在大多數(shù)情況下必須取得相應(yīng)的功能安全認(rèn)證。通過(guò)所有必要的流程和測(cè)試來(lái)完成功能安全認(rèn)證歷來(lái)是一個(gè)非常困難的過(guò)程,但有一些方法有助于加快完成認(rèn)證的速度。當(dāng)然,選擇諸如IAR Embedded Workbench這樣本身就獲得了認(rèn)證,并在多樣化的實(shí)際應(yīng)用中經(jīng)過(guò)驗(yàn)證的開(kāi)發(fā)工具,也是加快從設(shè)計(jì)到完成認(rèn)證過(guò)程的方法。

  在開(kāi)發(fā)功能安全型關(guān)鍵應(yīng)用中,開(kāi)發(fā)人員可以采取多項(xiàng)調(diào)整措施來(lái)加快認(rèn)證,然而這一切都依賴(lài)于應(yīng)用的代碼質(zhì)量。要怎么做代碼質(zhì)量才能得到保障呢?幸運(yùn)的是,我們擁有一些簡(jiǎn)單的方法來(lái)立竿見(jiàn)影地提升代碼質(zhì)量,并盡可能地減少工作量。

  善用標(biāo)準(zhǔn)

  您知道嗎,在C99代碼規(guī)范中有大約190個(gè)歧義?確切地說(shuō),在C99中,有190種語(yǔ)法上合法的C結(jié)構(gòu),但在C語(yǔ)言規(guī)范中卻沒(méi)有得到明確說(shuō)明。實(shí)際上,如果使用最新的C18代碼規(guī)范,情況會(huì)變得更糟一些,如果在C++中引入多重繼承和虛擬繼承,將會(huì)陷入更為糟糕的局面。編譯器會(huì)把源代碼轉(zhuǎn)變成可執(zhí)行代碼,因此必須對(duì)代碼的含義進(jìn)行解析后才能正確運(yùn)行。

  在實(shí)際情況中,開(kāi)發(fā)人員可能會(huì)用到不同的編譯器,它們可能會(huì)對(duì)源代碼進(jìn)行不同的解釋。然而,在一個(gè)高可靠性的系統(tǒng)中,這將是一個(gè)噩夢(mèng)般的場(chǎng)景,尤其是許多追求功能安全認(rèn)證的公司一般都會(huì)在多個(gè)平臺(tái)上交叉編譯他們的代碼以方便測(cè)試。可以想象,這將嚴(yán)重拖慢認(rèn)證速度,因?yàn)槟仨氠槍?duì)所有此類(lèi)情況進(jìn)行測(cè)試,以證明代碼的可重復(fù)性和可靠性。

  怎樣才能度過(guò)這個(gè)難關(guān)呢?簡(jiǎn)單來(lái)說(shuō),避免代碼歧義即可。但要如何做到這一點(diǎn)呢?開(kāi)發(fā)人員可以選擇MISRA這樣的編碼標(biāo)準(zhǔn),該標(biāo)準(zhǔn)經(jīng)設(shè)計(jì),可避免常見(jiàn)的代碼歧義。此外,該標(biāo)準(zhǔn)還提倡運(yùn)用安全可靠的編碼實(shí)踐,以減少代碼中的缺陷數(shù)量。有了功能安全標(biāo)準(zhǔn),問(wèn)題就能迎刃而解。

  功能安全標(biāo)準(zhǔn)涵蓋了代碼分析

  幾乎每一個(gè)功能安全標(biāo)準(zhǔn)都要求開(kāi)發(fā)人員對(duì)代碼進(jìn)行靜態(tài)分析,而且還會(huì)強(qiáng)烈建議項(xiàng)目團(tuán)隊(duì)對(duì)代碼進(jìn)行運(yùn)行時(shí)(或稱(chēng)之為動(dòng)態(tài))分析。其中影響最廣的標(biāo)準(zhǔn)是IEC 61508,在通常意義上它適用于所有安全相關(guān)系統(tǒng)。根據(jù)該標(biāo)準(zhǔn)第C.4.2節(jié)的內(nèi)容,不建議在安全完整性等級(jí)(SIL)在1級(jí)以上的情況下使用沒(méi)有消除歧義和危險(xiǎn)行為的編碼標(biāo)準(zhǔn)的C語(yǔ)言。換句話(huà)說(shuō),如果開(kāi)發(fā)的產(chǎn)品要獲得SIL 2-4認(rèn)證,就必須使用靜態(tài)分析來(lái)提升代碼的健壯性。

  而靜態(tài)分析工具可以強(qiáng)制開(kāi)發(fā)者實(shí)施編碼標(biāo)準(zhǔn),如MISRA。此外,靜態(tài)和運(yùn)行時(shí)分析可以快速指出有風(fēng)險(xiǎn)的編碼行為,特別是之前提到的編碼標(biāo)準(zhǔn)歧義,因此有助于提高代碼質(zhì)量。基于這樣的考慮,開(kāi)發(fā)人員應(yīng)當(dāng)更多地選擇諸如IAR Embedded Workbench這類(lèi)在多樣化應(yīng)用中得到驗(yàn)證的工具,它們可以提供更全面的標(biāo)準(zhǔn)化功能。

  然而,何時(shí)使用這些類(lèi)型的自動(dòng)化工具也會(huì)對(duì)項(xiàng)目的認(rèn)證時(shí)間表產(chǎn)生巨大影響。許多公司組織會(huì)使用難以配置、難以使用的代碼分析工具,使其每晚運(yùn)行在構(gòu)建服務(wù)器上。然而這種工具實(shí)際作用有限,因?yàn)槊總€(gè)程序開(kāi)發(fā)者無(wú)法得到即時(shí)反饋,弄清他們剛寫(xiě)的代碼究竟有什么問(wèn)題。

  此外,有時(shí)這些工具發(fā)出的警告信息本身就晦澀難懂,浪費(fèi)了開(kāi)發(fā)者的時(shí)間去弄清楚它們的真正含義,以及如何糾正代碼來(lái)消除警告。如果能在開(kāi)發(fā)過(guò)程中先運(yùn)行代碼分析,然后才進(jìn)入正式構(gòu)建,那么就可以完美避免代碼缺陷。如此一來(lái),項(xiàng)目代碼缺陷注入率將大幅降低,這正是認(rèn)證機(jī)構(gòu)非常看重的指標(biāo),因?yàn)檫@意味著項(xiàng)目有一個(gè)非常成熟的開(kāi)發(fā)組織。

  將代碼分析融入日常工作流程

  根據(jù)針對(duì)多個(gè)行業(yè)里多家公司開(kāi)展的調(diào)研的結(jié)果,IAR Systems團(tuán)隊(duì)發(fā)現(xiàn),代碼分析工具的配置和使用越容易,開(kāi)發(fā)者選用它的幾率就越高,也能更快受益。如果能將這些自動(dòng)化工具納入到開(kāi)發(fā)者的工具箱中,那么開(kāi)發(fā)者就可以在編寫(xiě)應(yīng)用時(shí)隨時(shí)檢查和改進(jìn)代碼質(zhì)量,同時(shí)在“實(shí)地”考察這部分代碼要做什么以及它如何與系統(tǒng)中的其他模塊互動(dòng)。為了有效地做到這一點(diǎn),必須將代碼分析工具整合到日常工作流程中。

  為了解其他人對(duì)集成代碼分析的看法,IAR團(tuán)隊(duì)在查閱資料時(shí)發(fā)現(xiàn)谷歌在ACM期刊上發(fā)表了一篇文章,探討了代碼分析的優(yōu)點(diǎn)。雖然文章對(duì)他們的整個(gè)代碼庫(kù)(包括C、C++和Java)進(jìn)行了全面的考察,但他們的結(jié)論非常明確:

  “在開(kāi)發(fā)過(guò)程的早期就能發(fā)現(xiàn)編譯器錯(cuò)誤,并且能夠整合到開(kāi)發(fā)者的工作流程中。我們發(fā)現(xiàn)擴(kuò)大編譯器的檢查集合對(duì)提高谷歌的代碼質(zhì)量是有效的。”

  作者表示,把靜態(tài)分析檢查整合到編譯器工作流程并輸出為Error信息,將極大地提高開(kāi)發(fā)者對(duì)工具輸出信息的關(guān)注,最終大幅提升代碼質(zhì)量。再往下看,他們談到了向最近遇到某個(gè)編譯器錯(cuò)誤的開(kāi)發(fā)者和已經(jīng)收到該錯(cuò)誤問(wèn)題的修復(fù)補(bǔ)丁的開(kāi)發(fā)者發(fā)出相同的調(diào)研。

  “谷歌的開(kāi)發(fā)者認(rèn)為,在編譯時(shí)標(biāo)記出錯(cuò)誤信息(相比于植入代碼檢測(cè)功能的補(bǔ)丁)能捕捉到更重大的錯(cuò)誤;例如,調(diào)研參與者認(rèn)為在編譯時(shí)標(biāo)記的問(wèn)題中的74%屬于真正的問(wèn)題,而在檢測(cè)代碼中發(fā)現(xiàn)的真正問(wèn)題只有21%。”

  此外,該文章還談到了將代碼分析整合到工作流程的重要性,指出當(dāng)他們通過(guò)靜態(tài)分析工具自動(dòng)運(yùn)行提交的代碼并邀請(qǐng)工程師查看分析儀表板時(shí),很少有工程師跟進(jìn)。但是,如果在編譯過(guò)程中就能得到即時(shí)反饋,則靜態(tài)分析工具的使用更便捷且分析結(jié)果也更難被忽視。因此,他們選擇在每個(gè)人的工作流程中默認(rèn)集成靜態(tài)代碼分析。他們認(rèn)為要推廣代碼分析工具,開(kāi)發(fā)者必須感到能從中受益,并且喜歡使用這些工具。

  在工作流程中加入代碼分析會(huì)得到什么樣的結(jié)果?結(jié)果之一是提高了應(yīng)用的整體安全性,因?yàn)閮?yōu)質(zhì)代碼可以消除緩沖區(qū)溢出、非法指針等漏洞。雖然這個(gè)理由足夠充分,但有時(shí)很難讓人們做到“防范于未然”,您需要更顯著的結(jié)果來(lái)說(shuō)服開(kāi)發(fā)者和管理層相信代碼分析的優(yōu)點(diǎn)。

  Stefan Wagner等人的一篇論文(https://arxiv.org/pdf/1711.05019.pdf)使用經(jīng)驗(yàn)數(shù)據(jù)來(lái)計(jì)算代碼分析工具與傳統(tǒng)測(cè)試在不同代碼庫(kù)中的優(yōu)劣。他們的結(jié)果很有說(shuō)服力,在769個(gè)被識(shí)別的缺陷中,76%是被代碼分析工具發(fā)現(xiàn)的,而只有4%被傳統(tǒng)測(cè)試發(fā)現(xiàn)(其余20%則在代碼審查時(shí)發(fā)現(xiàn))。

  如果能在開(kāi)始測(cè)試前就消除75%的缺陷,實(shí)現(xiàn)軟件平均故障間隔時(shí)間(MTTF)目標(biāo)能有多快?答案是“非常快”。僅僅是在測(cè)試上節(jié)省的時(shí)間和金錢(qián)就值得在代碼分析工具上進(jìn)行投資,更不用說(shuō)它還能加快上市時(shí)間。這些都是功能安全認(rèn)證機(jī)構(gòu)喜歡看到的流程類(lèi)型,因?yàn)樗鼧O大地降低了缺陷進(jìn)入最終產(chǎn)品的風(fēng)險(xiǎn)。

  優(yōu)質(zhì)代碼加速功能安全認(rèn)證

  加快功能安全認(rèn)證的關(guān)鍵是提高代碼質(zhì)量。只有提高代碼質(zhì)量,項(xiàng)目團(tuán)隊(duì)才可以降低缺陷注入率,從而更快地達(dá)到軟件發(fā)布標(biāo)準(zhǔn),這樣在提交給功能安全認(rèn)證機(jī)構(gòu)認(rèn)證時(shí),它們才會(huì)認(rèn)為您的組織擁有非常成熟的流程。雖然開(kāi)發(fā)者永遠(yuǎn)無(wú)法確切知道一個(gè)應(yīng)用中還有多少缺陷,但通過(guò)早期和經(jīng)常使用代碼分析工具將有助于減少其數(shù)量。

  




圖片.jpg


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話(huà)通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話(huà):010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美国产激情| 国产精品久久久久免费a∨大胸| 99re热精品| 亚洲国产精品久久人人爱蜜臀| 午夜在线不卡| 午夜国产不卡在线观看视频| 在线中文字幕一区| 夜夜狂射影院欧美极品| 日韩亚洲国产欧美| 日韩天天综合| 一二三四社区欧美黄| 亚洲最新视频在线| 一区二区91| 亚洲伊人伊色伊影伊综合网| 中文一区在线| 亚洲一区二区在线| 亚洲欧美日韩另类精品一区二区三区| 亚洲性视频网址| 亚洲一区美女视频在线观看免费| 亚洲香蕉成视频在线观看 | 日韩午夜精品| 99爱精品视频| 一区二区三区高清不卡| 一区二区三区日韩精品视频| 99视频精品在线| 一区二区精品国产| 亚洲自拍电影| 性18欧美另类| 久久国产精品亚洲77777| 亚洲高清在线精品| 亚洲精品美女久久7777777| 99re热这里只有精品免费视频| 一区二区三区精品国产| 亚洲男同1069视频| 久久精品一区四区| 久久综合国产精品| 欧美激情一区二区三区| 欧美色123| 国产精品一区二区三区四区| 国产午夜精品久久| 在线日韩日本国产亚洲| 亚洲人成网站影音先锋播放| 99热精品在线| 性欧美video另类hd性玩具| 亚洲福利专区| 亚洲深夜福利网站| 久久国产视频网站| 免费观看国产成人| 欧美午夜女人视频在线| 国产一区二区三区四区老人| 亚洲第一伊人| 亚洲午夜精品一区二区三区他趣| 性做久久久久久久久| 亚洲日韩成人| 亚洲尤物在线| 久久久噜噜噜| 欧美日韩一区二区三区在线看| 国产婷婷一区二区| 亚洲伦理一区| 欧美一级久久久久久久大片| 亚洲三级性片| 欧美一区二区三区久久精品茉莉花 | 欧美网站大全在线观看| 国产精品久久久久久久久婷婷| 国产一区二区无遮挡| 亚洲电影免费观看高清完整版在线| 99re视频这里只有精品| 性欧美1819sex性高清| 亚洲美女av电影| 欧美一区成人| 欧美精品成人| 国产亚洲精品美女| 亚洲精品一二| 亚洲高清免费视频| 亚洲欧美视频在线观看视频| 欧美大学生性色视频| 国产欧美日韩在线视频| 亚洲精品在线一区二区| 欧美在线免费视屏| 亚洲制服av| 欧美劲爆第一页| 国产一区二区三区直播精品电影| 亚洲伦伦在线| 亚洲黄色三级| 久久国产手机看片| 欧美日韩在线高清| 在线看片日韩| 欧美淫片网站| 亚洲欧美视频一区| 欧美日韩一区二区三区免费看 | 一区二区三区精品国产| 91久久综合| 久久精品123| 国产精品红桃| 亚洲精品中文字| 亚洲精品黄色| 麻豆国产精品va在线观看不卡| 国产伦精品一区二区三区高清| 亚洲精品久久久久久久久| 亚洲第一精品夜夜躁人人躁 | 国产精品久久久久999| 最新中文字幕一区二区三区| 久久精品国产免费看久久精品| 亚洲自拍偷拍麻豆| 欧美日韩一区二区高清| 最近中文字幕mv在线一区二区三区四区| 先锋影音久久| 欧美中文在线观看| 国产精品亚洲视频| 亚洲天堂免费在线观看视频| 一本色道久久综合亚洲91| 欧美国产日产韩国视频| 极品少妇一区二区三区精品视频 | 一本色道久久综合亚洲精品高清 | 最新日韩中文字幕| 亚洲人成人一区二区在线观看| 久久资源av| 激情久久久久久久久久久久久久久久| 午夜精品成人在线| 久久不见久久见免费视频1| 国产精品三级久久久久久电影| 日韩一区二区免费看| 一本在线高清不卡dvd | 国产精品成人aaaaa网站| 一区二区三区蜜桃网| 一区二区欧美视频| 欧美日韩国产一级| 亚洲伦伦在线| 亚洲视频在线观看视频| 欧美日韩视频第一区| 一区二区三区四区五区精品视频| 在线亚洲+欧美+日本专区| 欧美日韩视频一区二区| 亚洲伦理在线观看| 亚洲综合好骚| 国产精品自拍视频| 欧美在线二区| 免费欧美高清视频| 亚洲欧洲精品一区二区三区| 999在线观看精品免费不卡网站| 欧美精品一区二| 一区二区三区蜜桃网| 欧美一区二区三区免费视| 国产私拍一区| 亚洲国产精彩中文乱码av在线播放| 欧美~级网站不卡| 亚洲靠逼com| 亚洲综合不卡| 国产在线精品二区| 亚洲激情小视频| 欧美日本高清| 亚洲一区二区三区激情| 久久精品女人的天堂av| 亚洲电影第1页| 一区二区三区四区精品| 国产精品欧美精品| 欧美一区网站| 欧美成人精品三级在线观看 | 久久成人免费| 欧美风情在线观看| 一区二区高清在线| 欧美在线|欧美| 1000部国产精品成人观看| 中国女人久久久| 国产一区二区三区精品欧美日韩一区二区三区 | 中文av字幕一区| 国产精品日韩久久久| 久久成人18免费观看| 欧美极品在线视频| 午夜精品电影| 欧美激情一区二区久久久| 中文在线一区| 嫩草成人www欧美| 一区二区三区**美女毛片| 久久久久.com| 日韩午夜剧场| 久久免费视频在线观看| 亚洲裸体在线观看| 久久久久久久久久久成人| 99精品国产福利在线观看免费 | 亚洲精品乱码久久久久久| 欧美一区永久视频免费观看| 亚洲国产精品久久精品怡红院| 亚洲男人第一av网站| 1769国内精品视频在线播放| 亚洲欧美日韩一区二区三区在线观看 | 亚洲精品美女91| 国产日韩欧美a| 一区二区三区精品国产| 激情自拍一区| 欧美一区二区视频在线| 亚洲精品老司机| 久久先锋影音| 亚洲天堂第二页| 欧美大片免费看| 欧美在线视频在线播放完整版免费观看 | 欧美日韩国产va另类| 久久gogo国模啪啪人体图| 欧美性大战久久久久久久蜜臀| 91久久精品国产|