開發(fā)符合 MISRA C 的軟件需要規(guī)劃、文檔和工具,以最好地執(zhí)行指南的意圖和精神。MISRA C:2023 修正案 2012 (AMD4) 和 MISRA C:4 的 2023 版用于開發(fā)安全和安保關(guān)鍵型軟件系統(tǒng),解決了 C 標(biāo)準(zhǔn)的最新兩個(gè)版本(ISO/IEC 9899:2011 和 2018)中引入的并發(fā)功能,并將所有 MISRA C 版本合并到一個(gè)文檔中。
MISRA C不是編碼風(fēng)格指南,而是一套規(guī)則和指令,用于最小化或消除已知危險(xiǎn)的編碼實(shí)踐。鑒于對安全和安保關(guān)鍵型系統(tǒng)的這種重要性,AMD4 和 MISRA C:2023 版本使開發(fā)人員有機(jī)會重新審視其流程,以改進(jìn)對有效和高效地證明 MISRA 合規(guī)性的支持。
MISRA 合規(guī)性:2020 指南指出,合規(guī)性聲明必須確定:
使用規(guī)范的軟件開發(fā)過程
應(yīng)用的確切準(zhǔn)則
執(zhí)法方法的有效性
與準(zhǔn)則的任何偏差程度
在項(xiàng)目之外開發(fā)的任何軟件組件的狀態(tài)
新老制造商必須確定如何在不犧牲開發(fā)速度的情況下將MISRA規(guī)則和指令集成到其流程中。
圖 1:來自 LDRA 工具套件的 MISRA 合規(guī)性報(bào)告示例(來源:LDRA)
MISRA C:2023合規(guī)框架
MISRA C 指南沒有指定實(shí)現(xiàn)合規(guī)性的確切流程和工具,因?yàn)橛涗洿祟愐髸还降叵拗?a target="_blank">嵌入式開發(fā)團(tuán)隊(duì)可以做的事情。相反,MISRA 合規(guī)性:2020 指南提供了“在聲明 MISRA 合規(guī)性時(shí)軟件開發(fā)過程中必須涵蓋的內(nèi)容”的定義,作為捕獲最重要活動的框架。
MISRA 指南涵蓋了許多流程和合規(guī)性要點(diǎn)。在這里,我們將介紹需要更多思考的活動,這些活動將對希望簡化合規(guī)性工作的開發(fā)團(tuán)隊(duì)產(chǎn)生最大的影響。
定義規(guī)范的軟件開發(fā)流程
MISRA 合規(guī)性:2020 指南指出,“MISRA 指南旨在在記錄的軟件開發(fā)過程框架內(nèi)使用”,并且“遵守 MISRA 指南必須是代碼開發(fā)階段的一個(gè)組成部分,在提交代碼以供審查或單元測試之前,需要滿足合規(guī)性要求。
將合規(guī)性集成到新的或現(xiàn)有的開發(fā)流程中,首先要定義如何在生命周期的每一步驗(yàn)證 MISRA 規(guī)則和指令。這些活動會影響開發(fā)人員培訓(xùn)、合規(guī)性項(xiàng)目的創(chuàng)建和管理,以及合規(guī)性測試的運(yùn)行方式。
開發(fā)團(tuán)隊(duì)?wèi)?yīng)以足夠全面的方式正式記錄這些過程,以確保在開發(fā)生命周期的每個(gè)階段完全實(shí)現(xiàn)所有軟件需求,并且測試活動涵蓋所有代碼。此文檔必須包括驅(qū)動開發(fā)任務(wù)的所有決策,包括培訓(xùn)、報(bào)告、開發(fā)工具鏈的選擇和運(yùn)行時(shí)配置。
在 MISRA C:2023 上培訓(xùn)開發(fā)人員
通過正式培訓(xùn),開發(fā)人員可以花更少的時(shí)間試圖自己了解MISRA合規(guī)性,而將更多的時(shí)間花在交付代碼上。MISRA 合規(guī)性:2020 指南建議包含有關(guān)嵌入式應(yīng)用程序使用 C 語言的概念以及安全和安保關(guān)鍵系統(tǒng)的細(xì)節(jié)。
除了代碼之外,開發(fā)人員還應(yīng)該了解他們選擇的開發(fā)環(huán)境(從編譯器工具鏈到靜態(tài)分析工具)的安全和安保影響。隨著 MISRA C:2023 包含針對復(fù)雜多線程系統(tǒng)的新指南,刷新開發(fā)人員對他們的選擇如何影響 MISRA 指南的執(zhí)行以及如何減少在并發(fā)應(yīng)用程序中引入違規(guī)的可能性的理解變得更加重要。
靜態(tài)分析工具為課堂培訓(xùn)提供了有效的補(bǔ)充,因?yàn)樗鼈冊谡n程結(jié)束后很長時(shí)間內(nèi)提供了全面和實(shí)時(shí)的微學(xué)習(xí)形式。靜態(tài)分析結(jié)果在編寫代碼時(shí)強(qiáng)化了 MISRA 規(guī)則和指令,在新手和有經(jīng)驗(yàn)的開發(fā)人員的頭腦中保持恒定的意識水平。
建立偏差流程
MISRA合規(guī)性要求代碼供應(yīng)商和收購方就規(guī)則和指令的解釋達(dá)成一致。這種一致性至關(guān)重要,因?yàn)楹弦?guī)性的概念因項(xiàng)目而異,具體取決于它們各自的要求和特征。部分一致性來自建立一個(gè)管理偏離指南的流程,其中證明合規(guī)性可能不切實(shí)際或不可能遵循某個(gè)項(xiàng)目。
MISRA 合規(guī)性:2020 指南將偏差記錄定義為包含以下信息:
違反的準(zhǔn)則
對可以接受違規(guī)行為的情況的描述
需要偏差的原因
解釋上下文和語言問題的背景信息
一套要求,包括相關(guān)的風(fēng)險(xiǎn)評估程序和預(yù)防措施
使用自動化支持合規(guī)性活動
自動化減少或消除了MISRA合規(guī)活動中的手動工作和人為錯(cuò)誤的可能性。為了從自動化工具中獲得最大收益,開發(fā)團(tuán)隊(duì)?wèi)?yīng)按照 MISRA 合規(guī)性:2020 指南的建議,在軟件生命周期的早期部署它們:
“一個(gè)試圖在其生命周期后期檢查合規(guī)性的項(xiàng)目可能會花費(fèi)大量時(shí)間重新編碼、重新審查和重新測試,而且這種返工很容易意外引入缺陷。”
為了簡化合規(guī)性測試,MISRA C:2012引入了兩種規(guī)則分類:
對于分析技術(shù)可以提供結(jié)論性驗(yàn)證的規(guī)則,可決定
無法確定無法驗(yàn)證保證的情況
將可判定規(guī)則與MISRA的建議配對,使用靜態(tài)分析進(jìn)行驗(yàn)證,可以為自動化合規(guī)性測試提供高效而全面的解決方案。
MISRA C:2023 合規(guī)性始于堅(jiān)實(shí)的戰(zhàn)略
將 MISRA 合規(guī)性集成到開發(fā)流程中有助于改善代碼的安全性。這種集成需要了解 MISRA C 規(guī)則和指令,團(tuán)隊(duì)將這些規(guī)則和指令嵌入到開發(fā)生命周期的各個(gè)方面。
從培訓(xùn)到自動化工具,MISRA合規(guī)流程應(yīng)使開發(fā)人員能夠最大限度地減少已知危險(xiǎn)的編碼實(shí)踐,并支持代碼供應(yīng)商和收購方之間的期望一致。預(yù)先采用這些目標(biāo)的組織將比那些等待的組織更有可能獲得MISRA合規(guī)性的成功。
審核編輯:郭婷
-
amd
+關(guān)注
關(guān)注
25文章
5466瀏覽量
134087 -
嵌入式
+關(guān)注
關(guān)注
5082文章
19104瀏覽量
304800 -
自動化
+關(guān)注
關(guān)注
29文章
5562瀏覽量
79239
發(fā)布評論請先 登錄
相關(guān)推薦
評論