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