TOTAL SOLUTIONS
解決方案
AUTOSAR 架構下,持續整合(CI) 的最佳實踐
隨著汽車電子技術的快速發展,汽車軟體的複雜性與日俱增,如何確保軟體開發的高效性與穩定性成為了一個關鍵問題。為了解決這個問題,許多汽車企業和供應商逐漸引入了AUTOSAR架構,並在此基礎上構建了持續整合(Continuous Integration, 縮寫 CI,又稱持續集成)流程。下文將探討基於AUTOSAR架構實踐CI流程,並通過對流程的詳細介紹,展示CI在實際開發中的重要性和優勢。
1. 什麼是AUTOSAR架構?
首先,AUTOSAR (Automotive Open System Architecture) 是一個開放的、標準化的汽車電子軟體架構。其目的在透過提供一個標準的接口和抽象層,減少複雜的汽車軟體開發流程,並提升軟體的可重用性、模組化和可維護性。AUTOSAR架構中的核心模組可以分為應用軟體層 (ASW)、基礎軟體層 (BSW) 和運行時環境 (RTE)、微控制器等四個層面,它們各自承擔不同的功能。

2. 為什麼要在AUTOSAR架構中引入CI?
隨著汽車軟體規模的日益龐大,軟體開發的複雜度也不斷增加,傳統的開發方式往往難以應對複雜系統的整合挑戰。尤其是在高度模組化的AUTOSAR架構下,軟體的各個層次和模組相互依賴,任何程式碼變更都有可能影響整體系統的穩定性。因此,開發團隊需要一種高效的機制來快速檢測問題,確保每次程式碼修改後的系統都能正常工作。這時,持續整合 (CI) 流程的重要性便凸顯出來,它能夠自動化的進行程式碼整合、測試和回饋,確保軟體的品質與穩定性。接下來,將介紹在AUTOSAR框架中CI實現的詳細流程。
3. CI流程介紹

持續整合 (CI) 是一種軟體工程流程,是將所有軟體工程師對於軟體的工作副本持續整合到共享主線 (mainline) 的一種舉措,並通過自動化測試和構建系統,確保每次整合都能夠得到即時的回饋。於本文中介紹的CI在基於AUTOSAR架構的軟體開發中,CI不僅僅是一個簡單的自動化工具鏈,而是保證軟體穩定性和一致性的關鍵所在。
雖然硬體在環 (HIL) 測試在開發流程中也扮演著重要角色,但它屬於硬體驗證的範疇,並不包含在CI流程中。因此,本文中的CI流程將專注於軟體層面的整合和測試,不涉及HIL測試部分。
在此介紹的CI流程實踐中,AUTOSAR框架的測試主要集中在三個部分:
這一層主要基於MATLAB模型進行開發,因此在測試過程中,重點是對模型的驗證。在模組開發的早期階段,測試的重點是確保模型本身的正確性和穩定性。當模型測試通過後,該模型模組會被整合到整個開發工程中進行編譯,以此驗證其與最新程式碼是否兼容,並確保功能正常。這一過程可以保證每個模組在合入到整體系統前已經過充分驗證。
這裡的BSW層指的是通過框架生成軟體自動生成出的程式碼,通過AUTOSAR架構生成的程式碼來實現軟體功能的更新和維護。每當BSW層的程式碼更新時,CI流程會自動觸發項目的整體編譯,從而驗證所有基礎功能在最新更新下的一致性和穩定性。這一機制確保了基礎軟體層的變更不會破壞系統的整體功能。
該層主要負責複雜設備的驅動程序開發。CDD層通常涉及手寫程式碼,用來滿足客戶的特定需求。每當CDD層的程式碼更新後,CI系統會自動執行程式碼分析和驗證,確保新編寫的驅動程序與系統的其他部分協調工作,並符合功能要求。
通過這三大模組的分層測試和自動化驗證,CI流程確保了AUTOSAR架構下的軟體在開發和更新過程中始終保持高效和穩定。
下圖展示了一個典型的基於AUTOSAR架構的CI流程,通過Jenkins調度服務器和Gitlab版本管理工具實現模組的自動化整合和測試。

4. 基於AUTOSAR架構下實踐CI流程
從流程圖中可以看到,整個CI流程主要圍繞ASW模組變更、BSW模組變更和CDD模組變更展開,並且根據不同模組的變更類型,分別定義了相應的測試和編譯步驟。接下來,將逐一對各個模組的CI流程進行說明。
ASW模組變更流程
- 靜態模型測試: 使用靜態模型測試工具導入模型並進行測試,確保模型的完整性和正確性。
- 動態模型測試: 通過動態模型測試工具執行測試用例,並生成測試報告上傳到版本管理系統,最後通過郵件通知到對應的模型更改人員。
- 程式碼生成: 通過 MATLAB進行模型生成程式碼,將其上傳至版本管理系統。
- 編譯: 完成模型生成程式碼後,該模型模組程式碼會被整合到整個開發工程中進行編譯,以此驗證其與最新程式碼是否兼容,並確保功能正常。
在ASW模組的CI流程中,Jenkins服務器會根據預定的觸發條件,例如 程式碼提交或配置文件的變化,自動執行上述步驟,並將結果通知給相關開發人員。
BSW模組變更流程
BSW (基礎軟體) 模組被觸發後的執行流程相對簡單,通常包括整體工程的編譯以及編譯後的結果自動上傳,其主要目的是確保基礎軟體的功能和性能在各個開發階段的一致性。
程式碼上傳: 從拉取最新的程式碼,開發人員根據變更需求對程式碼進行調整並重新上傳。
- BSW 模組編譯: 從版本管理系統中拉取開發上傳好的程式碼,然後進行編譯,最後將編譯結果傳遞到版本管理系統中,並通知到對應的開發人員。
CDD模組變更流程
CDD (手寫程式碼) 模組的變更與測試也在整個CI流程中占據重要位置。其主要作用是通過靜態程式碼測試和動態程式碼測試來驗證套件的正確性以及套件的合規情況。
- 靜態程式碼測試: 通過靜態測試工具對導入的程式碼進行靜態分析,檢查程式碼的命名規則和編碼規範是否符合標準要求。
- 動態程式碼測試: 使用動態測試工具對套件進行動態測試,並生成測試報告上傳到版本管理系統供開發人員查看。
- 編譯: 完成模型生成程式碼後,該模型模組程式碼會被整合到整個開發工程中進行編譯,以此驗證其與最新程式碼是否兼容,並確保功能正常。
5. 基於AUTOSAR的CI流程優勢
通過上述流程的詳細解讀,可刊出基於AUTOSAR架構的CI流程具有以下幾個顯著的優勢:
- 自動化測試與整合: 通過Jenkins服務器自動執行程式碼的整合、測試和發布流程,減少了開發人員和測試人員的手動操作,提高了開發效率。
- 程式碼品質保證: 靜態程式碼分析和動態測試用例的自動化執行,確保了程式碼的規範性和正確性,極大的降低了潛在的程式碼缺陷風險。
- 及時反饋機制: CI流程中的每個步驟都伴隨著詳細的報告生成與郵件通知,使得開發人員能夠及時獲取變更結果,快速進行問題定位和修復。
- 固定的文件結構: 由於AUTOSAR 架構中的文件結構是固定和標準化的,CI連結能夠很好的利用這一特點,實現高效的整合和自動化測試。這種標準化結構使得程式碼的組織和管理更加一致,有助於CI流程的自動化處理,進一步提升了整合效率並減少了出錯的可能性。
6. 實踐中的挑戰與建議
雖然基於AUTOSAR架構的CI流程在實際應用中展示了極大的優越性,但在實施過程中也可能會遇到一些挑戰:
- 工具鏈整合複雜: 由於AUTOSAR涉及多個不同的工具,如動靜態測試工具等,工具鏈的整合和維護需要耗費較多精力。建議企業在實施過程中設立專門的CI工具鏈維護團隊或讓供應商進行連結搭建,後續可以通過內部人員進行維護,確保工具鏈的高效運轉。
- 團隊的協作要求高: CI流程的順利實施需要開發、測試、運維等多方團隊的緊密協作,因此在實踐中應加強團隊之間的溝通與協同,定期進行流程優化與改進。
7. 總結
基於AUTOSAR架構的CI流程是汽車軟體開發中不可或缺的一環。它通過自動化的整合與測試,保證了軟體的高品質和穩定性。在未來,隨著汽車智能化和自動駕駛技術的發展,CI流程的重要性將越發凸顯。因此,持續優化和完善CI流程,是每個從事汽車軟體開發的企業都需要高度重視的問題。
透過這次流程的實踐介紹,相信大家對於基於AUTOSAR的CI流程有了更加清晰的認識。希望本文能夠為正在或即將實施CI流程的企業和團隊提供有益的參考與啟發。