一文聊聊面向服務架構的汽車軟件分析和設計
為什么要引入汽車SOA軟件?
SOA作為一種面向服務的架構,是一種設計思想和方法論。在SOA架構中,服務是最核心的抽象手段和系統最基礎的描述單元。
每個服務組件具備獨立的功能,且可被復用;服務組件之間的接口遵循統一標準,可互相訪問,可組合擴展。業務過程則是帶有狀態和服務調度策略的服務組件的組合與擴展(圖1)。
通過SOA架構,可整合規劃OEM在不同操作系統,硬件平臺上(控制器)上的業務功能,實現對功能的快速迭代和重組,應對靈活多變的智能網聯趨勢下的業務需求。
圖1 SOA架構模型
結合未來汽車域導向型電子電氣架構(Domain-Oriented)和區域導向型電子電氣架構(Zone-Oriented),應用SOA架構可實現業務過程(功能)的快速迭代與靈活重組,為智能網聯趨勢下的軟件個性化與創新需求提供了良好的平臺性解決方案。SOA架構應用于汽車新電子電氣架構下的優勢(圖2):
車輛功能軟件實現軟硬分離
由于服務組件接口“標準可訪問”,且描述方式獨立于硬件平臺和操作系統,因此組件功能可脫離硬件平臺任意部署移動,對于算力有要求的復雜功能組件可向具備高帶寬大算力的域控制器移動。
車輛功能可被大范圍復用
一些使用頻度很高且基礎的功能可作為基礎服務組件先被開發,由于服務組件的獨立性以及接口的標準可訪問,基礎服務開發完成后可向服務中間件注冊,并供所有電子電氣架構中的控制器訂閱使用。
車輛功能在SOP后可新增(擴展)
“小”的基礎服務可組合成為“大”服務,“大”服務可進一步組合擴展并最終構建出新的業務過程,實現OEM的業務目標。結合OTA技術,用戶可在車輛使用期限里,訂閱一個類似,“預測性能量管理”的新功能并安裝于域控制器上,新功能的業務邏輯依賴于一些已有的服務組件(eg:預測性能量管理依賴于能量管理策略,地圖預測信息等基礎服務)。
圖2 新汽車電子電氣架構中的SOA架構應用
面向服務架構的汽車軟件分析與設計
面向服務架構的開發過程從整體上可以概括為6個步驟,分別是:面向服務分析、面向服務設計、服務開發、服務測試、服務部署和服務權限管理,如圖3所示。其中,分析和設計面向服務的架構是開發SOA軟件的開端,也是判斷系統是否基于SOA架構的最重要且核心的環節。
聯合電子對分析和設計面向服務架構汽車軟件的具體流程與方法進行了探索,將面向服務的分析分解為系統需求分析、系統功能分析、候選服務分析三個子步驟,將面向服務的設計分解為系統架構設計和軟件架構設計兩個子步驟。經過架構師的良好分析,車輛功能(業務邏輯/業務過程)將結合實際實現情況,按不同業務領域完成解耦,并分解得到候選服務組件。后續,經過詳細且不斷迭代的設計,在候選服務的基礎上,最終會產出面向服務(SOA)的軟件架構。
圖3 面向服務的分析與設計是服務架構開發的核心環節
接下來本文將圍繞這5個子步驟對面向服務的分析與設計過程進行介紹。
1. 系統需求分析
如圖4所示,整個SOA架構模型分為業務過程層,服務接口層和應用程序層三部分。SOA業務過程層專注于業務邏輯的分析;服務接口層聚焦于候選服務的設計和分析;應用程序層則體現面向服務的系統架構和軟件架構設計。
系統需求分析聚焦SOA架構的最上層——業務層。概括來說,需求分析指的是設計和充分理解在用戶具體使用場景下的真實業務過程,為后續抽象和封裝服務提供充足的語境信息。
圖4 需求分析聚焦SOA架構業務過程層
2. 系統功能分析
如圖5所示,系統功能分析搭建起了SOA架構的業務層和服務層之間的橋梁,其過程就是從第一步系統需求分析的產物——業務過程和系統用例,向服務過渡的過程,目的是得出構成候選服務的服務操作(operation)。系統功能分析具體可描述為:設計用例的實現場景步驟,對系統用例逐個進行分析細化,描述系統如何與參與者(actor)一起實現每個用例,從而得到系統與參與者、與外部系統的界限及信息交互,最終得出對系統的功能要求,這些功能要求直接作為候選服務操作(business service operation candidates)。
圖5 系統功能分析:從業務過程到服務
3. 候選服務分析
候選服務分析聚焦SOA架構的中間層——服務接口層。候選服務分析的目的是對業務邏輯進行抽象和封裝,從業務角度尋找候選服務(Service Candidate)。值得強調的是,分析候選服務需要跳出特定功能開發,從架構角度強調業務的重用性(reusable)、自主性(autonomous)以及組合擴展性(composable)等特點,特別考慮候選服務在企業業務范圍內潛在的重用可能,充分發揮SOA設計理念的優勢,而不是僅僅作為技術實現方式(圖6)。
圖6 候選服務分析聚焦SOA架構的服務接口層4. 系統架構設計
系統架構設計的目的是設計和得到服務到架構要素的映射,以及要素間服務調用關系。下圖中藍色小圓圈代表分析得到的服務,通過系統架構設計,被映射至不同的架構要素( Platform A~C)(圖7)。在這里,架構要素對應汽車上搭載不同控制器平臺(Platform)。
圖7 系統架構設計:服務與系統要素的映射
4. 軟件架構設計
軟件架構設計的目的是設計和得到服務(service)到服務組件(Service Component)的映射關系,過程與系統架構的設計過程類似,但需要將關注點轉移到控制器內部。
在圖8,SOA架構中,軟件架構設計的行為發生在藍色陰影區。軟件架構的設計受到諸多因素的限制(以太網通訊Port口資源,客戶具體用例場景的迭代變更等等)。總體設計思想上,高內聚,低耦合仍是設計的通用原則和架構評價的關鍵指標。額外需要強調的,應對智能網聯軟件需求迭代多變的特性,在SOA服務架構的設計中,還需強調重用性和擴展性,充分的靈活度才能以最小的軟件變更應對大量的需求輸入。
圖9為一示意圖,表達了針對某一服務Service A,有一個服務提供組件(Service Component)提供A服務,有三個服務消費組件消費服務A。
圖8 軟件架構設計
圖9 服務與應用程序的映射
“分析和設計面向服務的架構”、“實現和部署面向服務的軟件”是有效開發SOA汽車軟件的關鍵環節, “分析和設計服務架構”的過程是從客戶用例場景/需求到SOA軟件架構產出的分析過程。
聯合電子認為,相對于傳統汽車軟件開發采用的基于功能分解的面向過程的分析方法,“用例驅動的開發方法”和“面向服務架構的設計方法”是SOA軟件架構開發的兩個主要特點。