「Automotive Software Architecture」是由瑞典哥德堡大學的Miroslaw Staron撰寫,兩位譯者是王駟通與歐陽紫洲。王駟通畢業於多倫多機械工程學院,現任職於中國大陸某合資汽車零部件供應商;歐陽紫洲畢業於清華大學汽車工程系,現就職於中國大陸某智能聯網汽車研發機構。兩位譯者對於車用電子都有豐富的學經歷背景支撐。雖然本書完成於2017年,但翻譯完成時間是2020年;儘管如此,本書中介紹的汽車軟件架構仍是很完整並且實用。
OT研究所時攻讀軟體工程,在業界則接受不少車用軟體及車用品質體系的薰陶,書中介紹的知識與OT實作經驗相輔相成;書中許多實作經驗作者會帶到Volvo XC90的開發,因此特別推薦給剛進入此領域的朋友們閱讀。
本書的1.6節及第十章「總結」,快速地帶領讀者介紹每章節的重點。本書OT會分兩篇介紹,本篇先將1.6節及第十章「總結」合併介紹給正在閱讀本篇的朋友們,下一篇則是介紹OT覺得印象深刻的內容。
第1章:軟件架構及其在汽車軟件工業的發展概述
軟件架構是一種軟件的高層設計和結構。它為軟件及組建的詳細設計以及軟件的部屬提供了指導。軟件架構文檔中通常包含一系列的視圖,例如功能視圖、邏輯視圖或部署視圖等。
軟件架構還提供了軟件系統高層建構的原則,因此他也包含不同的架構風格。
本書中匯總了汽車軟件設計中最重要的方法及工具。這些方法不僅侷限在架構層面,也涵蓋了詳細設計的範疇。在第1章中提供了每章的內容提要並總結了架構設計之所以對未來的汽車軟件工程意義非凡的原因。
第2章:軟件架構
本章中介紹了軟件架構的概述,向不熟悉軟件架構學科的讀者回顧軟件架構的基礎知識,在最後描述了汽車軟件架構的特殊性。本章開頭回覆軟件架構的含義,定義汽車軟件設計中使用的視圖類型,並將它們與軟件工程中經典的4+1架構視圖模型進行映射。接著將逐步介紹汽車軟件架構中的重要元素,如ECU、邏輯和物理組件、功能架構,以及整車架構的拓樸結構(物理和邏輯架構)等。在介紹過程中,將與中強調汽車嵌入式軟件系統對安全性和可靠性的高要求。
在汽車軟件系統設計中常用的結構視圖:
- 功能視圖:描述車輛功能的架構以及他們之間依賴關係。
- 物理視圖:描述物理節點(ECU)以及節點之間的連接。
- 邏輯視圖:描述軟件組建和架構。
- 部署視圖:描述軟件組建在ECU中的部署。
汽車中出現的主要架構風格
- 分層架構風格。
- 基於組件的架構風格。
- 單體架構風格。
- 微內核架構風格。
- 管道與過濾器架構風格。
- 事件驅動架構風格。
- 中間件架構風格等。
第3章:汽車軟件開發
本章詳細介紹汽車軟件的開流程。首先是整車開發的V模型,並進一步引入現代敏捷軟件開發的方法來描述軟件開發團隊的工作過程。本章也簡要介紹一款用於保持研發數據一致性的工具—由SystemIte開發的SystemWeaver。內容也涉及諸多研發工作及方法,例如變體管理、不同的軟件集成階段、測試策略等。結合實例來審視這些方法並解釋它們是如何被應用的。
汽車軟件工程中的實踐先從需求開始,這部分內容某種程度上是汽車行業獨有的。本章討論了如下的需求模型:
- 文本需求:以文本和表格形式呈現的規格說明。
- 用例需求:基於UML用力和相應的序列圖來呈現的規格說明。
- 基於模型的需求:以模型的形式呈現的規格說明,這些模型後續將由供應商實現。
理解了制定軟件需求的方法,還需要進一步理解軟件驗證和確認的方法。軟件的驗證和確認以測試的形式完成,它們包括:
- 單元測試:單一軟件模塊的功能驗證。
- 組件測試:一組軟件模塊(即組件)的驗證。
- 系統測試:完整系統的驗證(包括開發完成後的完整功能以及開發中的某單一功能)
- 功能測試:對照規格說明,對終端用戶功能的確認。
介紹了不同的測試方法以及汽車軟件集成的不同階段後,探討了這些元素是如何在「產品數據庫」中儲存。
第4章:AUTOSAR標準
本章中討論了標準化的話題,概述業界在標準化方面所做的努力。特別介紹了AUTOSAR這一目前在歐洲乃至世界範圍內最受關注的汽車軟件標準。AUTOSAR標準中的主要構建塊,例如軟件組件和通信總線等。將AUTOSAR核心思想以及對汽車工業的影響兩個角度來回顧汽車軟件架構標準化的演變歷程。本章最後介紹AUTOSAR標準中提供的參考架構,並討論它的演變方式。
本書認為AUTOSAR標準的引入是當今汽車軟件領域的主要趨勢之一。該標準定義了汽車軟件是如何被建構以及它的組件部分之間是如何交互的。某種意義上,AUTOSAR標準也被視為汽車的「操作系統」。
本章內容由Darko Durisic撰寫,他是AUTOSAR聯盟中瑞典汽車製造商的領軍人物之一,具備豐富的實踐經驗,因此也能從軟件設計者的角度對AUTOSRAR系統進行精彩的介紹。本章內容關注的是AUTOSAR參考架構及其應用。
從AUTOSAR中「概念」的角度探討了AUTOSAR標準的演化,分析了AUTOSAR規範中的哪些內容發生了變化、標準中「概念」的數量是如何演化的,以及這些演化對汽車軟件的設計意味著什麼。最後本書也給出了一些基於AUTOSAR進行汽車軟件組件設計的實例。
第5章:汽車軟件的詳細設計
本章將繼續從技術的角度深入研究汽車軟件架構,我們將描述在特定軟件組件中進行軟件設計的方式。
- Simulink建模:汽車軟件算法的詳細設計最常用的方法,通常用於動力總成域、主動安全域或底盤域。
- SysML:一種基於UML語言的方法,關注軟件定義中的編程語言方面的概念。
- EAST-ADL:另一種基於UML語言的方法,專門用於汽車軟件的設計,將問題領域的概念和編程層面的概念相結合。
- GENIVI:一種專用於信息娛樂系統的編成標準,目前在市場上正受到愈來越多越好的關注。
知道這些術語和真正理解安全關鍵系統的設計原則是不一樣的。因此本書還介紹了設計安全關鍵系統的原則,這些原則來自對NASA及其空間項目的研究。
第6章:汽車軟件架構的評估
在本章中介紹評估軟件架構質量的方法,並重點討論了軟件行業經典的架構權衡分析方法(Architecure Tradeoff Analaysis Method, ATAM)。討論了汽車軟件的非功能屬性,如可靠性和穩定性等,並進一步回顧了評估這些屬性的方法。在討論過程中本章參考了ISO/ICE 25000系列標準。
本章還提出軟件、硬件集成過程中的挑戰及其影響。討論了汽車軟件和商用計算機應用乳間之間的差異,並給出了具體實例。最後,討論了這些軟件屬性進行量測的必要性。
第7章:軟件設計和架構的度量
本章中介紹一般軟件工程和汽車軟件工程中最常用的度量,例如:總代碼行數、模型大小、複雜性,以及架構穩定性或耦合性等。具體給出了這些度量的解釋—基於這些度量的具體數值大小,應該做什麼,為什麼要這麼做。還討論了基於ISO/IEC 15939的度量標準的使用。
本章為架構工程師提供了一系列的度量組合以及它們的可視化表達。也同樣為汽車軟件的詳細設計提供了一系列的測度。
最後,本章展示了一份關於汽車測量的公開工業數據。在測量結果的基礎上,討論了諸如軟件規格和圈複雜度等軟件屬性,並分析了它們對軟件驗證和車輛安全的影響。
本章內容由作者和來自愛立信公司的Wilhelm Meding合著完成。Wilhelm Meding在軟件測量領域以及深耕十餘年,是資深的研究員。
第8章:汽車軟件功能安全
本章中詳細闡述功能安全這一話題,這是現代汽車軟件中最重要的話題之一。本章介紹國際標準ISO/IEC 26262中與安全相關的概念,並說明如何在軟件研發流程中應用這些標準。國際標準中提到的功能安全驗證和確認技術,並將其與汽車安全完整性等級(Automotive Safety Integration Level, ASIL)關聯,討論其在實踐中的效果。為使讀者清晰理解功能安全這一標準,本章在介紹過程中穿插了一個簡單的功能開發實例—包含了不同ASIL等級的微控制器架構的實例。
本章作者是來自Volvo AB公司的Per Johannessen,他曾成功地在某乘用車製造商建立了該標準,目前正在重型車輛和公交車領域從事相關的工作。
第9章:汽車軟件架構的當前趨勢
在本書的最後介紹汽車軟件開發的當前趨勢。市場上一些新興的、具有顛覆性的技術,這些技術被認為可能讓傳統的汽車工業變得更加以軟件為導向:
- 自動駕駛:需要以更複雜的軟件和更高層級的連接為支撐。
- 自修復、自適應、自組織系統:可以讓軟件更可靠、更智能;但在軟件安全性評估上面臨著挑戰。
- 大數據:基於外部資源的可用信息,讓汽車軟件做出更智能的決策;但與此同時,對軟件系統的處理能力、儲存以及一些其他特性提出了更高的要求。
- 軟件開發流程的新趨勢:例如軟件持續集成技術,可以讓軟件持續改進,但也對軟件的安全性評估以及快速驗證提出了討戰。
OTORI
民國111年2月21日