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