魯 濤
(重慶交通大學,重慶 400060)
隨著近些年汽車電子元器件、車載網絡、車載通信技術和無人駕駛技術等基礎技術的提高,汽車在E/E 架構設計上趨向于集中化、智能化和網聯化等幾大特點。從新四化到軟件定義汽車,傳統(tǒng)汽車行業(yè)正在變革,汽車廠的核心競爭力也隨之發(fā)生變化,OEM的核心競爭力將從車輛的硬件集成轉變?yōu)橄蛴脩籼峁┤芷诘能浖掷m(xù)服務。近年來,各大汽車制造廠紛紛開始重視并加大投入整車電子電氣架構開發(fā)。常見的電子電氣架構方式分為傳統(tǒng)面向信號的開發(fā)方式和面向服務的開發(fā)方式。在傳統(tǒng)的電子電氣架構開發(fā)模式下,不同功能是需要定制軟件開發(fā)來實現的,各個功能軟件與硬件之間是高度耦合、各功能之間也是彼此獨立的。這樣的電子電氣架構開始模式面臨的主要問題是:(1)各個功能軟硬件之間的高度耦合使得硬件資源不能充分共用,在一定程度上導致硬件資源的浪費;(2)開發(fā)周期長,若要新增加一個功能必然會涉及信號的變化,從而可能會牽涉到多個ECUs 的軟件變更,帶來大量的開發(fā)與測試工作量。
當前大部分OEM 整車廠仍采用面向信號的傳統(tǒng)電子電氣架構開發(fā)方法。若采用面向服務的SOA 架構開發(fā)模式,采用整車不同架構分層思想,將功能抽象為不同的服務。不同功能的實現,可以通過服務之間組合來實現,利用SOA 松耦合的特性,各服務組件通過標準化接口封裝,OEM 將整車底層硬件能力以服務形式提供給應用層調用,通過既定協(xié)議進行訪問。一旦E/E 架構平臺基礎的軟件開發(fā)后可根據不同業(yè)務需要被服務調用,從而來適配不同功能和業(yè)務場景。平臺基礎軟件都是松散耦合和服務化的,能夠快速響應市場用戶的靈活需求,推出新車型,縮短開發(fā)周期和降低驗證成本。此外,汽車采用面向服務的SOA 架構與互聯網SOA 及微服務高度契合,融合多方開發(fā)者共同參與,為后續(xù)車云一體化的生態(tài)系統(tǒng)運用提供無限可能。
因此,采用面向服務的SOA 架構開發(fā)是為未來OEM 電子電氣架構開發(fā)的技術趨勢,是OEM 整車廠需要掌握的核心技術。本研究討論了SOA 正向架構開發(fā)方法,第一部分提出了SOA 架構正向開發(fā)流程和軟件架構分層思想,第二部分針對SOA 架構開發(fā)流程中的關鍵步驟進行展開并進行SOA 服務的定義以及從服務到ECU 控制器部署。
SOA(Service-Oriented Architecture)面向服務的架構,其不是一種具體的技術,而是一種E/E 架構策略層面的指導思想。面向服務的架構SOA 是一個組件模型,它將應用程序的不同功能單元(稱為服務)進行拆分,并通過這些服務之間定義可訪問的標準化接口和契約聯系起來。SOA 將車端不同功能及硬件能力劃分為服務,各服務組件的接口進行標準化封裝,可通過既定協(xié)議相互訪問、擴展組合。SOA 的核心要素包括:松散耦合、可復用、可發(fā)現、可組合、無狀態(tài)等。SOA 最大的特點是使得應用層功能能夠在不同車型上得到復用,能夠基于標準化的服務接口快速迭代新的功能需求,從而縮短開發(fā)與驗證周期。此外,SOA 能夠充分將車輛的原生能力封裝為標準化的服務接口供應用層調用,從而實現資源的充分共享,節(jié)省必要的硬件資源。
SOA 正向設計方法是以OEM 定義的平臺功能列表為切入點,首先對每一個功能進行多個用戶實例(Use case)分析,提取出該功能的設計需求。然后針對Use case 提取出的設計需求展開詳細功能實現方案設計。提取出功能對各個子系統(tǒng)的設計需求,明確各個系統(tǒng)的邊界與職責。再針對各個子系統(tǒng)進行邏輯需求設計、SWC 服務接口設計。最后根據硬件網絡拓撲,將各個SWC 服務部署到ECU 控制器,形成ECUs軟件需求規(guī)范,進而指導Tire1 供應商或者OEM 內部軟件開發(fā)團隊進行軟件開發(fā)。架構開發(fā)流程如圖1 所示。整個開發(fā)流程分為五大步驟,從頂層的功能規(guī)劃,到用戶的需求分析、功能實現方案設計、系統(tǒng)設計,再最終落地到供應商零部件開發(fā)的正向開發(fā)流程。分別對應圖1 中的Function 功能、Function Requirement Analysis 功能需求分析、Function Realization 功能實現、System Design 系統(tǒng)設計、ECU。通過從用戶的需求分析,每一層逐步細化,到最后約束供應商SOA 軟件服務化設計。
圖1 SOA 架構正向開發(fā)流程
SOA 架構的設計,首先需要對整車軟件架構進行分層設計,這是區(qū)別于傳統(tǒng)的架構設計方案。然后進行整車軟件架構分層,如圖2 所示。其架構分層的目的:
圖2 整車軟件架構分層
(1)在錯綜復雜中創(chuàng)建秩序,遵循高層級調用低層級,低層級不能調用高層級原則。底層基礎服務層體現整車硬件,能夠幫助OEM 將整車的硬件能力以原始服務形式提供給上層應用層調用,通過可訪問的標準化服務接口實現車輛功能的軟硬件解耦。同時,第三方也能通過SOA 軟件架構以服務的形式進行接入,打通整個生態(tài)鏈。這一原則有助于構建清晰簡單的SOA 汽車軟件架構,從而有效地發(fā)揮并獲得SOA的優(yōu)勢。
(2)高層級可根據不同的業(yè)務應用進行服務的調用,高層級設計中體現高內聚、低耦合、可復用,滿足SOA 設計開發(fā)的整體思想。
(3)各層級內部系統(tǒng)間解耦開發(fā),定義各系統(tǒng)接口并進行服務化,實現服務的靈活部署。
(4)通用平臺層,可提取全局變量作為共用的軟件模塊提供服務,實現基礎功能接口統(tǒng)一。
基于SOA 架構正向開發(fā)流程,從用戶需求出發(fā),以服務為導向,結合汽車電子電氣架構開發(fā)工程經驗,可定義汽車SOA 架構正向開發(fā)方法。
屬于SOA 架構頂層需求規(guī)劃,OEM 將結合市場用戶目標群體、企業(yè)內部新技術規(guī)劃、法律法規(guī)、企業(yè)車型定位等定義平臺級功能。E/E 功能定義是SOA 電子電氣架構詳細設計的需求來源。將針對每一個功能進行分析并展開詳細設計,最后進行服務化定義。從而保證開發(fā)對象與目標的一致性。
基于場景和用戶實例對功能進行分析[1],從而提取出終端用戶對各功能的需求,是當前SOA 正向架構開發(fā)的一個重要方法,使工程階段的詳細設計過程可以很好的繼承來自市場用戶的需求,功能需求分析方法如圖3 所示。針對每個功能進行用戶應用場景(Use Case)分析,從用戶角度,描述功能行為或者用戶同功能交互方式,是鏈接客戶需求與工程設計之間的紐帶。將通過分析Use Case 來提取功能設計需求,指導下階段功能實現方案的設計。
圖3 use case 場景分析方法
Use Case 用戶場景分析主要包括:描述功能需求、用戶收益、人機交互、用例Use Case(s)。具有的特點包括:
(1)易讀,使用戶和設計工程師都可以理解;
(2)屬于頂層的設計,而非詳細設計,由于用戶需求的經常變更,因此需要能夠應對快速迭代更新文檔;
(3)核心部分是用戶實例模型(Use Case),識別系統(tǒng)中的參與者,捕獲參與者和系統(tǒng)之間的行為;
(4)應獨立于功能是如何實現的,功能開發(fā)就不會受制于架構的變更,且可在不同的項目中復用。?
承接Use case 場景需求分析結果,對架構平臺所定義的每個功能進行功能實現設計,提取出功能對各個子系統(tǒng)的設計要求,屬于系統(tǒng)層級的實現方案,不涉及具體硬件,便于在不同車型之間的復用。此階段需要將整車E/E 架構抽象為不同的邏輯子系統(tǒng),子系統(tǒng)是為了實現一個特定功能或者一組功能的邏輯組件集合。功能實現方案設計方法如圖4 所示,主要包括:
圖4 功能實現設計方法
(1)介于功能需求描述和系統(tǒng)詳細設計之間;
(2)定義各功能的系統(tǒng)解決方案,描述不同子系統(tǒng)間是如何協(xié)作來實現功能,進行各系統(tǒng)職責細化;
(3)基于功能需求分析的輸入制定功能實現方案,將功能的實現到各個子系統(tǒng)(系統(tǒng)交互),目的是對影響功能實現的各種需求有總體的把握;
(4)定義各個子系統(tǒng)的設計需求,確定子系統(tǒng)的邊界,是系統(tǒng)設計實現的關鍵輸入性文件。
向上承接功能實現方案設計結果,根據整車平臺各個功能對不同子系統(tǒng)提出的需求,明確每個子系統(tǒng)的設計邊界與職責。根據每個子系統(tǒng)的邊界范圍按照“高內聚、低耦合、復用性”原則,設計該系統(tǒng)內部的軟件組件“SWC”。SWC 設計包含每個軟件組件的接口需求和內部的邏輯需求。SWC 接口設計遵循AUTOSAR 服務通信的設計要求。在設計SWC 時,還需要根據軟件分層原則,將SWC 按照不同層級進行分類,包括Bottom SWC、Base SWC 及Advanced SWC,便于服務的提取。SWC 分層設計方法如圖5 所示。最后并根據SWC 的提取的服務進行服務接口的設計、服務部署和分配。
圖5 SWC 服務分類設計方法
SWC 服務接口:在定義服務接口時若需要依據服務權限進行劃分,包括全局服務接口(任何服務組件均可訪問)、外部服務接口(暴露在系統(tǒng)外部,滿足軟件分層架構的依賴關系下可調用)、內部服務接口(只能在同一系統(tǒng)內部的軟件組件之間使用,不允許外部組件使用此接口)、其他服務接口(如開發(fā)服務接口,僅用于開發(fā)目的,車輛SOP 之后需要被刪除)。若按照服務類型劃分,包括原子服務、基礎服務和高級組合服務。
原子服務[1]:為最底層最小服務單元,主要是將車載傳感器,執(zhí)行器等車輛原生能力抽象為原子服務,體現車輛的硬件基礎能力被上層服務調用。
基礎服務[1]:在原子服務之上的服務,將某特定功能抽象為服務,是組合了若干原子服務,可以訪問和調用下層服務或者被更高上層服務所調用。
高級組合服務:為最高層級的服務,可以實現更多業(yè)務場景的應用,是組合了若干基礎服務,可以訪問和調用下層基礎服務。
SWC 服務部署:SWC 服務部署會依據網絡拓撲的規(guī)劃,將SWC(服務)分配到具體的物理零部件中,細化到具體ECU,進行詳細的服務角色定義,輸出服務部署及分配方案。SWC 服務部署原則如圖6 所示,服務部署需要考慮的原則包括:
圖6 SWC 服務部署方法
(1)高層級軟件部署。具有高層次邏輯軟件是具有核心控制且復雜,這種軟件在域控制器或中央計算機中更加易于管理。無論從服務的角度還是從戰(zhàn)略角度,應更容易縮短開發(fā)周期。因此處理管理、協(xié)調和高級控制等高級邏輯的服務盡量部署到中央計算平臺[2]。
(2)傳感器/執(zhí)行器緊耦合的軟件部署。傳感器/執(zhí)行器的接口盡量靠近設備,以便在進入中央系統(tǒng)前盡快將低級信號轉化為服務。直接在區(qū)域控制器[2]中處理會更加容易。
(3)緊密耦合的軟件部署。將緊密耦合的軟件部署到系統(tǒng)的ECU,節(jié)省通信與帶寬。例如:有廣泛的信息交換,應盡可能部署到相同的ECU。
(4)安全相關軟件部署。具有安全相關的軟件盡量部署到中央計算平臺的一個安全處理器上。承接有安全相關的需求的SWCs,分區(qū)的時候分到功能安全區(qū)。
SOA 面向服務架構是軟件定義汽車的關鍵技術,也是未來汽車電子電氣架構開發(fā)的核心。本研究給出了SOA 面向服務架構汽車軟件分層模型及SOA 正向架構開發(fā)流程。依據該流程,本文提供了由功能/場景驅動設計的SOA 面向服務正向架構開發(fā)思路。通過功能定義、功能需求分析、功能實現和子系統(tǒng)設計幾大關鍵步驟,并通過具體功能進行舉例,詳細介紹了SOA 服務架構是如何從頂層客戶需求分析逐步轉化至系統(tǒng)開發(fā),提取出服務并最終部署到控制器中,最終設計出ECU 軟件需求開發(fā),實現ECU 軟件服務化整個流程。由功能設計指導系統(tǒng)開發(fā)的方法,從而實現由傳統(tǒng)供應商提供技術規(guī)范為主導的逆向開發(fā)流程,轉變?yōu)橛晒δ軋鼍盀橹鲗У腟OA 開發(fā)設計流程。