現如今,隨着汽車電子、新能源和自動駕駛等新技術的迅猛發展,軟件在車輛系統中的比重越來越大,軟件的可靠性對汽車電子系統和車輛的可靠性起到了至關重要的作用,嵌入式軟件的研發成本也占到了汽車研發支出中的很大比重。本文將簡要概述AUTOSAR最新發布的C++14編碼規范的背景、現狀和解決方案。
什么是MISRA編碼規范?
1998年,位於英國的由福特、捷豹汽車和蓮花汽車等汽車企業組成的汽車產業軟件可靠性協會(Motor Industry Software Reliability Association,簡稱為'MISRA')發布了第一版C語言軟件編碼規范MISRA C:1998,包含了127條C語言編碼規范,其中93條為嚴格要求,34為建議遵循,正式開啟了汽車電子軟件開發標准的統一化之路。自此之后,MISRA集合了越來越多的汽車廠商和工具廠商,已先后於2004, 2008, 2012發布了MISRA C:2004, MISRA C++: 2008, MISRA C: 2012,經過二十余載的發展,MISRA編碼規范不僅成為了汽車電子行業的最通行和最權威的開發標准,也廣泛被諸如航空航天、國防軍工、軌道交通、醫療器械和通信等高可靠性嵌入式軟件研發項目所采納,且以此衍生出這些特定行業的規范。
什么是AUTOSAR?
以寶馬、博世、大陸、戴姆勒、福特、標志雪鐵龍、豐田和大眾為何核心成員的眾多汽車廠商於2003年組建了AUTOSAR開發聯盟,發布了汽車開放系統架構(Automotive Open Software Architecture, 簡稱'AUTOSAR')經典平台(Classic Platform),以此作為汽車電子控制單元ECU的標准開放式軟件架構。AUTOSAR標准提供了一整套的標准用來描述基本軟件單元,定義應用接口和基於標准化的交換格式建立通行開發的方法。基於AUTOSAR軟件架構開發的軟件基本單元,可以用於不同的車廠的車輛和不同供應商的電子零部件中,從而降低研發支出並掌握汽車電子軟件架構日益增長的復雜度。AUTOSAR發展至今,已經形成了集合超過180家車廠和供應商的開發聯盟,在汽車軟件開發領域有着舉足輕重的地位。
為了滿足高度自動駕駛和汽車互聯應用的快速發展,AUTOSAR於2017年3月發布了第一個版本的自適應平台(Adaptive Platform)。驅動自適應平台的技術包括:帶有外部存儲的高能32/64位處理器、並行處理和高帶寬通信等。自適應平台的API是使用C++語言實現的,也決定了C++將成為自適應平台軟件的主要開發語言。
圖:AUTOSAR汽車開放系統架構
AUTOSAR C++14編碼規范的誕生
為了保證自適應平台上開發的軟件的可靠性、安全和統一性,AUTOSAR邀請英國PRQA公司– 於2017年中被Perforce Software公司收購-- 作為唯一的工具合作廠商,一起研究和制定C++語言的開發規范,旨在為汽車開發廠商安全地使用C++語言進行軟件開發提供指導和約束。AUTOSAR C++14編碼規范就是在這樣的背景下,於2017年初隨着AUTOSAR自適應平台一起發布的:
• 基於C++14
• 共包含342條編碼規范
• 其中154條直接來自於MISRA C++標准
• 131條來自於PRQA公司的HICPP規范和其它廣泛使用的C++規則
• 57條是基於研究和其它資源
AUTOSAR為什么不直接使用MISRA C++: 2008?
既然汽車行業已經有廣泛使用的MISRA C++: 2008規范,為什么AUTOSAR還要另行發布新的規范?這也許是很多正在使用MISRA C++規范的開發者首先想到的問題。因為,
• MISRA C++: 2008是基於C++03語言發布的,已有將近15年之久
• C++語言本身也在進化演變,比如:
o 編譯器的改進
o 工具的進化
o ISO 26262功能安全標准的發布和落地
o 知識庫的擴展
AUTOSAR C++14規范不是現有的MISRA C++標准的替代,而是MISRA C++標准的擴展,它增加了新的C++編碼規范、更新了現有規范,並刪除了那些已經過時的規范。比如AUTOSAR標准中允許使用一些在之前的標准中禁止使用的語言功能,如動態內存、異常、模版、繼承和虛函數等。
如何滿足AUTOSAR C++14編碼規范?
如何高效地在軟件研發過程中遵循一套嚴格的編碼規范,主要取決於兩個方面的實現方法:
1. 如何檢測出違規的代碼?人工代碼同行評審是一種行之有效的方法,采用開發人員之間一對一交換評審或者一對多由專門的人員評審都在代碼提交前找出主要的代碼違規,主要缺點是效率比較低,缺乏可靠性。鑒於此,目前有條件的企業多數會利用自動化工具進行自動掃描分析。
2. 檢測出的違規代碼如何及時被修復?難點在於如何安排測試任務,下發測試結果和跟蹤管理進度。對於少數人的小項目團隊,這一點可能不是問題。但對於多人的項目團隊,要求每個人學會安裝、配置和使用軟件工具顯然不是最高效的。另外,修復進度沒有統一的平台跟蹤管理,也無法保證修復任務被及時有效地完成。對於10人以上的開發團隊,目前被普遍證明的有效方式是“集中掃描 + 報告平台”的部署方式。
Perforce Software公司作為AUTOSAR C++14編碼規范的唯一工具合作商,最先提供針對AUTOSAR C++14的完整的、權威的規則包,利用Helix QAC代碼靜態分析工具,可以全自動地掃描代碼,檢查違規代碼,並詳細報告違規代碼信息。掃描的結果除了可以在Helix QAC桌面軟件的界面中查看,還可以自動上傳的基於Web的報告管理平台,開發者只需通過Web瀏覽器登錄即可查看詳細的相關結果信息,並完成修復工作。從而無縫集成到開發流程的代碼質量管理平台,覆蓋軟件開發的全生命周期(SDLC)。
除了AUTOSAR C++14編碼規范以外,Helix QAC還支持對MISRA C/C++, HICPP, CERT C/C++, CWE, JSF等規范的自動檢查和編碼規范自定義,Helix QAC現已成為汽車OEM和汽車電子供應商研發過程中使用最普遍的代碼靜態測試解決方案。
總結
AUTOSAR C++14編碼規范作為最新的汽車電子行業規范,自發布之初就備受汽車制造和供應商的關注,除了開發自動駕駛、ADAS、新能源和V2X等應用的企業以外,開發高復雜軟件系統的汽車廠商都值得推薦對其進行了解。可以預見,隨着汽車軟件系統的日益復雜化,AUTOSAR C++14編碼規范將會迅速應用到越來越多的汽車系統的研發過程中。
“原創內容,轉載請標明出處”