原創|行業資訊|編輯:鄭恭琳|2020-12-09 11:35:40.830|閱讀 665 次
概述:AUTOSAR C++14準則是MISRA C++ 2008的更新,提供了ISO/IEC 14882:2014所定義的現代C++的編碼準則。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
AUTOSAR C++14準則是MISRA C++ 2008的更新,提供了ISO/IEC 14882:2014所定義的現代C++的編碼準則。
在過去的十年中,汽車行業發生了翻天覆地的變化。現代汽車引入的新功能已從根本上將其轉變為計算中心。這反映在用于構建汽車軟件的平臺(特別是AUTOSAR)的開發中。在編譯時假設靜態配置,沒有動態內存分配以及C語言占主導地位的“經典”方法不再足夠。新功能需要大量高級代碼,例如:
這些新功能還需要對范式進行更改,而這些更改對于經典方法是足夠的。為了應對這些挑戰并改善汽車發展,包括全球大多數領先汽車制造商在內的AUTOSAR聯盟于2017年3月發布了新版本的AUTOSAR標準,稱為自適應AUTOSAR。
新標準的發布不會使Classic Platform失效,對于沒有連接需求,硬件要求有限和實時功能堅硬的控制單元,它仍然是首選。
自適應AUTOSAR定義了一個平臺,用于開發汽車控制單元,該平臺可提供諸如高級駕駛輔助系統,媒體流或通過互聯網進行軟件更新等復雜功能。該平臺包含定義服務和API的接口規范。自適應AUTOSAR中引入的一些新穎性包括:
面向對象的方法
C++編程語言
面向服務的架構
POSIX操作系統
在系統運行期間更改ECU配置
空中部署和更新
自適應AUTOSAR是對現代汽車要求日益復雜以及對“互聯世界”范式強加于汽車系統的新挑戰的回應。過去,C語言曾經是汽車開發人員的主要選擇,但它成為了障礙,或者至少是放緩的趨勢。系統的復雜性迫使人們從C語言切換到C++,這為構造大型分布式系統提供了更好的支持,并為數據封裝提供了更好的機制。
自適應AUTOSAR依賴于C++14語言標準。語言標準版本的選擇是在“不太舊”和“不太新”之間進行選擇。一方面,我們擁有仍在汽車工業中廣泛使用的C++98和C++03,但是它們已經過時并且不符合現代發展模式。另一方面,我們擁有仍非常新鮮的C++17標準。留下C++98和C++03的參數是:
C++語言的實質發展/改進
更好的編譯器的可用性
更好的測試和分析工具的可用性
不使用C++17的主要原因之一是該標準中引入的新功能可能給系統帶來安全風險——檢測和了解安全漏洞需要一些時間。此外,符合C++17標準的C++編譯器仍然是非常新的,需要更多測試和對安全性至關重要的開發中使用的更好支持。因此,選擇依賴C++14標準作為合理的中間選擇。
自適應AUTOSAR平臺的發布增加了現代C++在汽車項目中的采用。這使一個特定的問題更加明顯:盡管近年來C++語言的發展加快了,但汽車編碼標準似乎落后了。在發布C++11和C++14時,用于C++的最流行的汽車編碼標準MISRA C++ 2008已經嚴重過時,并且僅解決該語言的C++03版本。
每年,問題都在增長,并且變得越來越棘手。開發人員廣泛接受了最新C++標準的新功能,并在沒有適當指導或最佳實踐的情況下開始使用它們。對于開發安全關鍵系統的團隊而言,這種情況尤其成問題,ISO26262要求這些安全關鍵系統必須使用帶有適當編碼準則子集的靜態分析。
為解決此問題,AUTOSAR聯盟發布了專用指南文檔,作為自適應AUTOSAR平臺的一部分,標題為“在關鍵和安全相關系統中使用C++14語言的指南”。依靠未經修改的MISRA C++ 2008將完全是違法的。下面的時間軸描述了這種情況:
1998年– C++98標準發布
2003年– C++03標準發布
2008年– MISRA C++2008(包含C++03)
2011年– C++11標準發布
2014年– C++14標準發布
2017年– AUTOSAR C++14(3月)
2017年– C++17標準發布(12月)
2020年– C++20標準發布
AUTOSAR C++14指南文檔旨在作為MISRA C++ 2008的更新,并提供了ISO/IEC 14882:2014所定義的現代C++的編碼指南。該編碼標準的主要應用是汽車行業,但也可用于需要嵌入式編程的其他行業。
該標準規定了342條規則:
MISRA C++ 2008采用了154條規則,未作任何修改(67%)
131條規則基于現有C++標準
57條規則基于研究或其他文獻或資源
該標準有據可查,可以追溯到其他現有的C++標準,例如HIC++ 4.0,JSF,SEI CERT C++,C++核心準則,當然也可以追溯到MISRA C++ 2008。
AUTOSAR C++14遵循MISRA C++ 2008中的規則分類方法。根據義務級別對規則進行分類:
必需規則:聲稱符合標準的強制性規則
咨詢規則:推薦但無強制性地位
此外,還對這些規則是否由靜態分析工具自動實施進行了分類:
自動化:可由靜態分析工具完全支持
部分自動化:可以由靜態分析工具支持,但可能需要其他實踐,例如代碼檢查
非自動化:靜態分析工具不支持。
最后,根據分配目標對規則進行分類:實施,驗證,工具鏈和基礎架構。AUTOSAR C++14標準中的規則標記有有關分類的信息,例如:
MISRA聯盟在2016年發布了一份文件,標題為“MISRA Compliance:2016實現對MISRA編碼準則的遵守”。該文檔在業界非常受歡迎,因為它滿足了定義實現合規性流程的非常重要的需求,并明確說明了合規性的含義。
AUTOSAR C++14沒有(至少沒有直接提供)關于達到合規性過程的任何類似指南。但是,鑒于AUTOSAR C++準則是基于MISRA C++ 2008的,因此有必要再次參考MISRA標準,以尋求有關實現合規性流程的指南。
生成一個合規性矩陣,該矩陣說明每個規則的執行方式
產生偏差程序
正式制定質量管理體系內的工作慣例
滿足這些要求意味著一些額外的文書工作。應該發生的第一件事是對合規性矩陣的定義,這實際上是對我們將如何執行每條準則的聲明。請參見下面的示例:
理想的情況是擁有一個靜態分析工具,該工具應涵蓋盡可能多的準則。無法通過靜態分析強制執行的規則很可能需要手動檢查,這很昂貴。
除了合規性矩陣外,還需要建立偏差處理程序。當開發需要偏離特定準則時,偏離程序將需要采取的步驟正式化。按照MISRA的規定,預計
“……程序將基于為每個偏差或偏差類別獲得簽字。”
——MISRA
這是一個非常重要的難題——它可以防止開發人員隨意偏離偏差概念。實際上,我們將需要某種形式的正式票據存儲在我們的系統中,以記錄源代碼中的每個偏差。這與合規性矩陣以及為實施合規性而創建的任何其他配置和過程描述有關。 MISRA C++2008在這里非常清楚,要求“在質量體系內進行形式化”。
最后,如果MISRA C++ 2008點4.3中描述的所有過程均已就緒,我們可以通過證明以下內容來聲明其合規性:
已完成合規性矩陣,顯示了如何強制執行合規性
產品中的所有C++代碼均符合MISRA C++2008文檔的規則或有記錄的偏差
正在維護未遵循規則的所有實例的列表,并且每個實例都有適當的簽名偏差
“MISRA Compliance:2016”文檔更新了MISRA C++2008中給出的建立法規遵從流程的指導。一些團隊可能更喜歡將它用作AUTOSAR C++14遵從性過程的基礎,因為它是更新且更詳細的。與MISRA C++ 2008一樣,“MISRA Compliance:2016”也需要一個正式的流程來處理偏差,并且您必須記錄每條適用指南的說明實施方法。該文檔稱為準則執行計劃(GEP)。
“MISRA Compliance:2016”擴展了合規性流程的要求,并引入了一些新概念,例如準則重新分類計劃(GRP),正式記錄了對規則類別引入的任何更改,以及準則合規性摘要(GCS),這基本上是合規流程中的最后一個工件,介紹了每個準則所達到的合規水平。
“MISRA Compliance:2016”還使用了MISRA C 2012中引入的規則分類,并且不同于MISRA C++ 2008和AUTOSAR C++14標準中的規則分類。但是,這些差異似乎并不是根本性的,采用“MISRA Compliance:2016”作為AUTOSAR C++14的基礎當然是一種選擇。
強制遵守諸如AUTOSAR C++14之類的編碼標準的唯一實用方法是使用靜態分析工具,例如Parasoft C/C++test,這是一種支持多種測試技術的代碼質量工具。與任何其他代碼質量工具相比,Parasoft C/C++test支持AUTOSAR C++。AUTOSAR C++14規則是Parasoft汽車合規性軟件包的一部分,該軟件包專門為汽車開發人員擴展了Parasoft C/C++test的功能。除了特定于行業的靜態分析規則(例如AUTOSAR C++14,HIC++或MISRA)之外,Parasoft的Automotive Compliance Pack還提供了完善的交互式報告系統,該系統可根據AUTOSAR,HIC++和MISRA的要求進行定制,并支持高效的團隊日常工作流程。
Parasoft C/C++test使開發人員可以在不離開IDE的情況下檢查其代碼的符合性,并將掃描過程集成到服務器上的CI構建中。借助Parasoft的汽車特定報告系統,團隊成員可以輕松地持續監控其合規過程。
在清理現有代碼庫時,團隊可以從創建符合性策略的能力中受益,這些策略定義了確保測試實踐一致性的內容。在這種情況下,建議的做法是從標準中的規則子集開始,并隨著代碼清除的進行逐漸增加活動規則的數量。通過此報告層,您可以不斷監視代碼庫的進度,控制偏差過程并就擴展規則集做出有根據的決策。
汽車行業正在動態發展。在許多其他變化中,我們正在見證汽車向一種更像是使用智能手機的體驗的轉變。以應用程序形式購買汽車的特定功能的概念是現實的。長途度假?為什么不購買2周的巡航控制系統?
為了應對這些挑戰并可能減少開發時間,汽車行業需要在現代汽車所使用的硬件和軟件平臺領域進行不斷的創新。這些創新需要得到不同級別的適當標準的支持,以確保功能安全性,質量和安全性。AUTOSAR C++14無疑為這一過程做出了貢獻。
但是,標準本身只是一張紙(如果我們將它們打印出來的話),沒有工具就無法實現這些標準,而這些工具必須使實踐和過程實現自動化,并使汽車軟件開發團隊能夠專注于提供更好和更高級的功能。Parasoft C/C++test是對安全性至關重要的C/C++開發的最完整解決方案,比其他任何工具供應商都對汽車編碼標準(AUTOSAR C++,CERT C/C++,MISRA)提供更多支持,并且動態、靈活,以及有用的報告系統,可讓您的整個團隊成功實現合規性。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn