ISO 26262、MISRA 和其他標準旨在通過為在軟件開發(fā)過程中實施工程概念提供基礎來規(guī)范汽車應用程序的軟件開發(fā)。一些組織將遵守 ISO 26262 和其他標準視為增加開銷的負擔,但事實是,與軟件缺陷相關的失敗成本遠遠高于確保質(zhì)量的成本。
什么是 ISO 26262,我為什么要關心?
ISO 26262 是一項功能安全標準,旨在應用于汽車電氣和/或電子 (E/E) 系統(tǒng)的軟件開發(fā)。它旨在通過提供可行的要求和流程,將與安全功能軟件相關的風險降低到可容忍的水平,例如:
汽車應用的功能安全管理
汽車應用的概念階段
用于汽車應用的系統(tǒng)級產(chǎn)品開發(fā)
軟件架構(gòu)設計
汽車應用硬件級別的產(chǎn)品開發(fā)
軟件單元測試
汽車應用軟件級別的產(chǎn)品開發(fā)
生產(chǎn)、運營、服務和退役
支持過程:分布式開發(fā)中的接口、安全管理要求、變更和配置管理、驗證、文檔、軟件工具的使用、軟件組件的認證、硬件組件的認證和使用證明的論證
面向汽車安全完整性等級 (ASIL) 和面向安全的分析
需要明確的是,ISO 26262 不是強制性的(盡管考慮到最近所有圍繞汽車安全缺陷的頭條新聞,它可能成為強制性的)。法律只是規(guī)定您應該根據(jù)當前的最佳實踐來開發(fā)軟件——在汽車領域是 ISO 26262。ISO 26262 帶來的是基于一些軟件開發(fā)最佳實踐多年研究的操作指南。該領域最有經(jīng)驗的人。
ISO 26262 的美妙之處在于,盡管它旨在用于安全關鍵功能,但原則上它可以應用于您關心的任何軟件組件。如果您認為您的集成信息娛樂系統(tǒng)是市場上的業(yè)務差異化因素,請根據(jù) ISO 26262 進行開發(fā),并確保它是最先進的系統(tǒng),值得升級到高級模型。
MISRA 呢?
ISO 26262 類似于說,如果你想活得更久,就應該鍛煉和飲食。但是,如果您的運動知識僅限于舉起重物,或者您對什么是好食物的了解是早上的生雞蛋,那該怎么辦?
這就是 MISRA 標準的用武之地。適用于 C 和 C++ 的 MISRA 標準系列,包括 1998 年、2004 年和最近的 2012 年版本,告訴軟件工程師在編寫代碼時什么是好的做法,什么是不好的做法。回到我們的比喻,MISRA 告訴您哪些食物對您有益,以及什么是安全、可靠的鍛煉。
如何實施 ISO 26262 和 MISRA?
實現(xiàn)對 ISO 26262 和 MISRA 的合規(guī)性首先要以政策的形式承諾最佳實踐。需要明確的是,政策不是建議或推薦行為的指導方針。策略是一種自動可執(zhí)行的聲明,以通俗易懂的語言規(guī)定軟件應該如何開發(fā)——以及為什么應該以這種方式開發(fā)。該政策必須明確聲明:
必須根據(jù) ISO 26262 定義的軟件開發(fā)生命周期 (SDLC) 開發(fā)軟件
如果下游分包商不能提供足夠的可追溯性證明符合標準,則不會接受代碼
您的開發(fā)策略應該有類似的語言來指定符合 MISRA 編碼指南。這為制造商提供了另一種形式的驗收測試,他們可以執(zhí)行以驗證從下游供應商收到的軟件。
圖 1: ISO 26262 定義的軟件開發(fā)生命周期 (SDLC)。
從功能上講,這意味著應用開發(fā)測試活動,例如靜態(tài)代碼分析、單元測試、同行評審和運行時錯誤檢測,以確保根據(jù)這些策略開發(fā)代碼。市場上有幾種工具以靜態(tài)分析規(guī)則的形式實施 MISRA 指南(完全披露,我們?yōu)殇N售這些工具的公司工作)。每個工具都有自己的執(zhí)行編碼標準的方法,因此您需要研究適合您的環(huán)境、預算等的最佳工具。
靜態(tài)分析
這種做法已經(jīng)存在了很長時間,并且仍然是一種廉價(就專用開發(fā)資源而言)的方式來挑選代碼中容易實現(xiàn)的成果。盡管由于維護、參數(shù)化、極端情況和需要人類智能的活動的其他方面,有許多自動測試生成解決方案,單元測試在資源方面要昂貴得多。也就是說,失敗的成本仍然大大超過了測試的成本。
同行代碼審查
此過程要求軟件工程師提交他們的代碼以作為開發(fā)過程的常規(guī)部分進行審查,并且被認為是確保軟件質(zhì)量的最有效活動。與單元測試一樣,此活動需要您花費資源,但如果它可以防止需要召回的缺陷,則成本可以忽略不計。
運行時錯誤檢測 (RED)
RED 監(jiān)控代碼執(zhí)行,以便梳理出僅在運行時出現(xiàn)的構(gòu)造,并且應該作為驗證和驗證過程來實現(xiàn)。RED 可幫助您找到導致競爭條件、異常、資源和內(nèi)存泄漏、安全漏洞和其他難以發(fā)現(xiàn)的缺陷的代碼。簡而言之,它是軟件的儀表,就像儀表和記錄儀是硬件的儀表一樣。
覆蓋分析
如果沒有衡量測試覆蓋了多少代碼,您將無法知道您是否進行了足夠的測試。覆蓋分析本身并沒有什么作用,但是當與單元測試等活動結(jié)合使用時,覆蓋分析可以提供有關您的軟件的寶貴信息。
結(jié)論
隨著我們曾經(jīng)簡單的產(chǎn)品變得“更智能”,軟件無處不在,并將繼續(xù)發(fā)揮更大的作用。在汽車開發(fā)中尤其如此,這在確保嵌入式應用的安全性和可靠性方面提出了獨特的挑戰(zhàn)。汽車將安全關鍵軟件與業(yè)務差異化軟件相結(jié)合,所有這些軟件都是以高度分布式的方式開發(fā)的。
底線是汽車應用的端到端測試過于昂貴和復雜。另一方面,軟件故障的成本應該成為尋找降低風險方法的動力。通過應用 ISO 26262 和 MISRA 等汽車軟件開發(fā)標準,汽車制造商將自己置于最佳位置,以避免與錯誤軟件相關的風險。
作者:Arthur Hicken,Adam Trujillo
審核編輯:郭婷
-
汽車電子
+關注
關注
3023文章
7820瀏覽量
166011 -
C++
+關注
關注
21文章
2102瀏覽量
73453
發(fā)布評論請先 登錄
相關推薦
評論