開發符合 MISRA C 的軟件需要規劃、文檔和工具,以最好地執行指南的意圖和精神。MISRA C:2023 修正案 2012 (AMD4) 和 MISRA C:4 的 2023 版用于開發安全和安保關鍵型軟件系統,解決了 C 標準的最新兩個版本(ISO/IEC 9899:2011 和 2018)中引入的并發功能,并將所有 MISRA C 版本合并到一個文檔中。
MISRA C不是編碼風格指南,而是一套規則和指令,用于最小化或消除已知危險的編碼實踐。鑒于對安全和安保關鍵型系統的這種重要性,AMD4 和 MISRA C:2023 版本使開發人員有機會重新審視其流程,以改進對有效和高效地證明 MISRA 合規性的支持。
MISRA 合規性:2020 指南指出,合規性聲明必須確定:
使用規范的軟件開發過程
應用的確切準則
執法方法的有效性
與準則的任何偏差程度
在項目之外開發的任何軟件組件的狀態
新老制造商必須確定如何在不犧牲開發速度的情況下將MISRA規則和指令集成到其流程中。
圖 1:來自 LDRA 工具套件的 MISRA 合規性報告示例(來源:LDRA)
MISRA C:2023合規框架
MISRA C 指南沒有指定實現合規性的確切流程和工具,因為記錄此類要求會不公平地限制嵌入式開發團隊可以做的事情。相反,MISRA 合規性:2020 指南提供了“在聲明 MISRA 合規性時軟件開發過程中必須涵蓋的內容”的定義,作為捕獲最重要活動的框架。
MISRA 指南涵蓋了許多流程和合規性要點。在這里,我們將介紹需要更多思考的活動,這些活動將對希望簡化合規性工作的開發團隊產生最大的影響。
定義規范的軟件開發流程
MISRA 合規性:2020 指南指出,“MISRA 指南旨在在記錄的軟件開發過程框架內使用”,并且“遵守 MISRA 指南必須是代碼開發階段的一個組成部分,在提交代碼以供審查或單元測試之前,需要滿足合規性要求。
將合規性集成到新的或現有的開發流程中,首先要定義如何在生命周期的每一步驗證 MISRA 規則和指令。這些活動會影響開發人員培訓、合規性項目的創建和管理,以及合規性測試的運行方式。
開發團隊應以足夠全面的方式正式記錄這些過程,以確保在開發生命周期的每個階段完全實現所有軟件需求,并且測試活動涵蓋所有代碼。此文檔必須包括驅動開發任務的所有決策,包括培訓、報告、開發工具鏈的選擇和運行時配置。
在 MISRA C:2023 上培訓開發人員
通過正式培訓,開發人員可以花更少的時間試圖自己了解MISRA合規性,而將更多的時間花在交付代碼上。MISRA 合規性:2020 指南建議包含有關嵌入式應用程序使用 C 語言的概念以及安全和安保關鍵系統的細節。
除了代碼之外,開發人員還應該了解他們選擇的開發環境(從編譯器工具鏈到靜態分析工具)的安全和安保影響。隨著 MISRA C:2023 包含針對復雜多線程系統的新指南,刷新開發人員對他們的選擇如何影響 MISRA 指南的執行以及如何減少在并發應用程序中引入違規的可能性的理解變得更加重要。
靜態分析工具為課堂培訓提供了有效的補充,因為它們在課程結束后很長時間內提供了全面和實時的微學習形式。靜態分析結果在編寫代碼時強化了 MISRA 規則和指令,在新手和有經驗的開發人員的頭腦中保持恒定的意識水平。
建立偏差流程
MISRA合規性要求代碼供應商和收購方就規則和指令的解釋達成一致。這種一致性至關重要,因為合規性的概念因項目而異,具體取決于它們各自的要求和特征。部分一致性來自建立一個管理偏離指南的流程,其中證明合規性可能不切實際或不可能遵循某個項目。
MISRA 合規性:2020 指南將偏差記錄定義為包含以下信息:
違反的準則
對可以接受違規行為的情況的描述
需要偏差的原因
解釋上下文和語言問題的背景信息
一套要求,包括相關的風險評估程序和預防措施
使用自動化支持合規性活動
自動化減少或消除了MISRA合規活動中的手動工作和人為錯誤的可能性。為了從自動化工具中獲得最大收益,開發團隊應按照 MISRA 合規性:2020 指南的建議,在軟件生命周期的早期部署它們:
“一個試圖在其生命周期后期檢查合規性的項目可能會花費大量時間重新編碼、重新審查和重新測試,而且這種返工很容易意外引入缺陷。”
為了簡化合規性測試,MISRA C:2012引入了兩種規則分類:
對于分析技術可以提供結論性驗證的規則,可決定
無法確定無法驗證保證的情況
將可判定規則與MISRA的建議配對,使用靜態分析進行驗證,可以為自動化合規性測試提供高效而全面的解決方案。
MISRA C:2023 合規性始于堅實的戰略
將 MISRA 合規性集成到開發流程中有助于改善代碼的安全性。這種集成需要了解 MISRA C 規則和指令,團隊將這些規則和指令嵌入到開發生命周期的各個方面。
從培訓到自動化工具,MISRA合規流程應使開發人員能夠最大限度地減少已知危險的編碼實踐,并支持代碼供應商和收購方之間的期望一致。預先采用這些目標的組織將比那些等待的組織更有可能獲得MISRA合規性的成功。
審核編輯:郭婷
-
amd
+關注
關注
25文章
5500瀏覽量
134645 -
嵌入式
+關注
關注
5093文章
19178瀏覽量
307703 -
自動化
+關注
關注
29文章
5622瀏覽量
79668
發布評論請先 登錄
相關推薦
如何將功能整合到嵌入式固件中
嵌入式開發流程
嵌入式開發流程是怎樣的?
如何將IP模塊整合到System Generator for DSP中
如何將ARM嵌入式開發移植到LabVIEW開發環境的資料說明
嵌入式開發的流程_嵌入式開發的前景
嵌入式開發(一):嵌入式開發新手入門
![<b class='flag-5'>嵌入式開發</b>(一):<b class='flag-5'>嵌入式開發</b>新手入門](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
嵌入式開發資料免費分享
![<b class='flag-5'>嵌入式開發</b>資料免費分享](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論