《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 解決方案 > 如何提升項目代碼質量以快速通過功能安全認證

如何提升項目代碼質量以快速通過功能安全認證

2022-01-10
作者:Shawn Prestridge,IAR Systems行業分析兼高級現場應用工程師/美國FAE團隊負責人
來源:IAR Systems

  序言

  在汽車、航空電子、醫療和工業控制等眾多行業中,新開發的應用在大多數情況下必須取得相應的功能安全認證。通過所有必要的流程和測試來完成功能安全認證歷來是一個非常困難的過程,但有一些方法有助于加快完成認證的速度。當然,選擇諸如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)目標能有多快?答案是“非常快”。僅僅是在測試上節省的時間和金錢就值得在代碼分析工具上進行投資,更不用說它還能加快上市時間。這些都是功能安全認證機構喜歡看到的流程類型,因為它極大地降低了缺陷進入最終產品的風險。

  優質代碼加速功能安全認證

  加快功能安全認證的關鍵是提高代碼質量。只有提高代碼質量,項目團隊才可以降低缺陷注入率,從而更快地達到軟件發布標準,這樣在提交給功能安全認證機構認證時,它們才會認為您的組織擁有非常成熟的流程。雖然開發者永遠無法確切知道一個應用中還有多少缺陷,但通過早期和經常使用代碼分析工具將有助于減少其數量。

  




圖片.jpg


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 欧美最猛黑人xxxx黑人猛交98| 国产人与动zozo| 日本不卡一区二区三区最新| 亚洲砖码砖专无区2023| 老子影院午夜伦不卡不四虎卡| 国产精品免费大片| www.亚洲成在线| 日本三级片网站| 亚洲一级高清在线中文字幕| 男女一级免费视频| 国产一在线精品一区在线观看| 男女一进一出无遮挡黄| 天天操天天射天天操| 丰满少妇被粗大的猛烈进出视频| 欧美一级夜夜爽视频| 亚洲首页在线观看| 三级网站免费观看| 模特侨依琳大尺度流出| 人妻熟妇乱又伦精品视频| 色狠狠一区二区三区香蕉| 国产真实交换多p免视频| 99热这里有免费国产精品| 手机在线看片国产日韩生活片| 亚洲AV无码潮喷在线观看| 欧美色图第三页| 免费看毛片电影| 色五月五月丁香亚洲综合网| 国产欧美日韩另类精彩视频| 97精品国产高清自在线看超| 性欧美黑人巨大| 久久久久久亚洲精品中文字幕 | 北条麻妃一区二区三区av高清| 麻豆国产一区二区在线观看| 国产精品美女久久久浪潮av| av成人在线电影| 小雪你好紧好烫好爽| 久久久一区二区三区| 日韩伦理一区二区| 亚洲av无码一区二区三区电影| 欧美性黑人极品hd| 亚洲精品欧美精品国产精品|