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