作(zuò)者 | 不(bù)可(kě)說(shuō)
出品 | 汽車(chē)電(diàn)子(zǐ)與軟件(jiàn)
#01 前 言
®≠≠±汽車(chē)軟件(jiàn)SWC(Softw¥σ¥γare Component)的(de)概念主要(yào)來(lái∞&∞≈)源于AUTOSAR(Automotive Ope×ε↓n System Architecture)架構。
在Autosar架構中,SWC是(shì)₩★核心概念之一(yī),代表了(le)一(yī)個(gè)獨立的(de)、可(kě)重用(ε≈®±yòng)的(de)、自(zì)我描述的(de)、可(kě•₽)替換的(de)軟件(jiàn)單元。這(zλ₩φhè)些(xiē)軟件(jiàn)組件(ji π☆àn)具有(yǒu)清晰的(de)輸入輸出接口,相(ε•xiàng)較于整個(gè)汽車(chē)電(diàn)子(zǐ)系統來(lái)說(shuō) λ,是(shì)一(yī)個(gè)更小(xiǎo)的(de)功能(néng)模塊。↕'₹× ♣♥α
SWC可(kε$ě)以是(shì)一(yī)個(gè)可(kě)執行(xíng)的(de)模塊或者是(shì)一( ÷↕ yī)個(gè)庫,它獨立于其他(tā)組件(jiàn)工(gōng≠↔)作(zuò),自(zì)帶相(xiàng)應的(de)狀态和(hé)管理(lǐ)∏≥接口。SWC之間(jiān)的(de)通(tōng)信通(tōng)過AUTOSAR定義的≥∏(de)接口進行(xíng),這(zhè)些(xiē)接口确保&'€₩了(le)不(bù)同組件(jiàn)之間(jiān)的(≤∞de)互操作(zuò)性和(hé)數(shù)據交換的(de)标準化(huà)。♥ε
#02 SWC開(kāi)發輸入
SWC的(de$<← )設計(jì)開(kāi)發工(gōng)作(zuò)是(shì)軟件(jiàn)架構設ε÷₹計(jì)領域中一(yī)個(gè)至關重要(yào)的(de)✘§↔♠環節。它不(bù)僅僅是(shì)架構藍(★↓lán)圖中的(de)一(yī)部分(fēn),更是(shì)實現(xiàn)軟件(jià∑αn)功能(néng)、提升系統性能(néng)、确保可(kě)維護性和(hé)可(kě)擴展性的 α♣(de)基石。作(zuò)為(wèi)軟件∑∞ (jiàn)架構的(de)開(kāi)發者,整個(gè)工(gōng)作≥ •∞(zuò)流程需遵循嚴格的(de)邏輯與系統性γ'απ,以充分(fēn)理(lǐ)解和(hé)分(σ♣fēn)析軟件(jiàn)需求為(wèi)起點。 ®¶÷
按照(zhà'$₽o)ASPICE開(kāi)發流程,SWC的(de)設計(jì)屬于SWE.2軟$↑♠®件(jiàn)架構設計(jì)的(de)工(gōn™γ©g)作(zuò),需要(yào)接收來(lái)自(zì)于SWE.1的(de)軟件σ→(jiàn)需求分(fēn)析輸出,基于深入分(fēn¶₽§©)析的(de)需求,架構師(shī)著(zhe)★§>手規劃SWC的(de)設計(jì)。這(zh☆≥≠è)包括定義組件(jiàn)的(de)接口(即對(duì)外(wài)提供的(de)服' ₩務和(hé)所需的(de)環境或數(shù)據)•↓,明(míng)确組件(jiàn)的(de)職責範圍(即它能(né€≥£ng)做(zuò)什(shén)麽和(hé)不(bù)能(néng)做(zuò)什(shé<≈n)麽),以及設計(jì)組件(jiàn)內(nèi)部的(de)邏•$≤輯結構和(hé)數(shù)據流。在設計(jì)過程中,需考≈✘<慮組件(jiàn)的(de)複用(yòng)性、解耦程度、 與系統中其他(tā)組件(jiàn)的(de)交互方式等因素,以确保設計(jΩδ₹φì)既能(néng)滿足當前需求,又(yòu)能(néng)為(wèi)未 ≠來(lái)的(de)擴展和(hé)維護預留空(kōng)間(jiān)。&n £ε•bsp;
如(rú)按照(zhàσ→o)軟件(jiàn)需求的(de)PC(Pro✘♦↓duct Capabilities) /Module分¥ (fēn)析方法論,分(fēn)析如(rú)下(xià☆₽)主駕座椅加熱(rè)用(yòng)戶需★•★÷求Case:
UC 01 : 座椅加熱(rè)關閉時(shí),手動點α∞γ♦擊屏幕主駕座椅加熱(rè)虛拟按鍵,座椅加熱(rè)開(kāi)到(dào)2擋
&nbs€γ ≈p;UC 02 : 座椅加熱(rè)2擋位時(shí),手動點擊屏幕主駕座椅加熱(rè)虛拟™×按鍵,座椅加熱(rè)開(kāi)到(dào)1擋
&¥•∏nbsp;UC 03 : 座椅加熱(rè)1擋位時(shí),手動點擊屏幕主駕座椅加₩☆÷熱(rè)虛拟按鍵,座椅加熱(rè)關閉
UC 04 : 座椅加熱(rè)開(kāi)啓時(shí)時(shí),且主駕離(lí)座時(shí),觸發座←→ 椅加熱(rè)關閉
軟件(jiàn)架構開(kāi)發工(gōng↔)作(zuò)者收到(dào)類似如(rú)下(xià)圖的(d♥βe)分(fēn)析結果,(副駕座椅加熱(rè)有(yǒu)同 £'樣需求,此處不(bù)做(zuò)額外(wài)展示),就(jiù)可(k≤♥"ě)以進行(xíng)下(xià)一(yī)步的(de)進行(xíng)軟件(jiàn)架構的(∑₩de)設計(jì)工(gōng)作(zuò);
#03 SWC劃分(fēn)
以±∞δ第二小(xiǎo)節中的(de)需求輸入為α£↑(wèi)例,可(kě)以劃分(fēn)兩個(gè)SWC:
VC☆≤₹層SWC:主副駕座椅占位狀态檢測,即接收屏幕按鍵狀态、座β¥椅加熱(rè)狀态,給出加熱(rè)關閉判定;
SA層SWC:主副駕座椅加熱(rè)請(qǐng)求與主副駕座椅加熱(rè)☆'狀态檢測,綜合給出加熱(rè)關閉判定;
座椅加熱(rè)SWC劃分(fēn)
&★®nbsp;
在當今汽車(chē)技(jì)術(shù)日(rì)←₹新月(yuè)異的(de)時(shí)代背景下(xià),電(diàππ'n)子(zǐ)電(diàn)氣架構(EEA)正經曆著(zhe)前所未有(±<yǒu)的(de)深刻變革,這(zhè)一(yī)變革不(bù)僅重塑了(leΩ™&)車(chē)輛(liàng)內(nèi)部系™→統的(de)布局與交互方式,還(hái)深刻影(yǐng)響了(le)車(chē)輛(↑>©liàng)上(shàng)電(diàn)子(zǐ)控制(zhì)單元(ECU&✔∏)的(de)角色定位與開(kāi)發流程。從(cóng) §↓分(fēn)布式電(diàn)子(zǐ)電(diàn)氣架構,到(dào)現(xiàn)如(r✘₹≤ú)今應用(yòng)最為(wèi)廣泛的(de)域控制(zhì)器(qì✔§ )電(diàn)子(zǐ)電(diàn)氣架構,更進一(yī)步的(de)架構發展是♠≠(shì)為(wèi)了(le)應對(duì)更高(gāo)級∏$€别的(de)自(zì)動駕駛需求和(hé±≥§)不(bù)斷增加的(de)車(chē)輛±¶∑(liàng)內(nèi)部複雜(zá)度,區(qū)域控制(z 'hì)器(qì)電(diàn)子(zǐ)電(diàn)氣架構的(de)概念開(kāi)始浮現γ®(xiàn)。在這(zhè)一(yī)架構下(xiδ✘à),車(chē)輛(liàng)被劃分(fēn)為(wèi)幾個(gè)邏輯或物(wù)理£"₩ (lǐ)上(shàng)的(de)區(qū)域,每個(gè)區(qū)域由專門☆σ↑•(mén)的(de)區(qū)域控制(zhì)器(qì)管理(lǐ),δ®×♠這(zhè)些(xiē)區(qū)域控制(z∏π₹♥hì)器(qì)之間(jiān)通(tōng)過高(gāo)速網絡進行(xíng)通≈≥φ(tōng)信,實現(xiàn)信息的(de)實時(★♦shí)共享與協同控制(zhì)。   ✘♦;
具體(tǐα≠≥)到(dào)BCM(車(chē)身(shēn)控制(zhì)模塊)控制∞§(zhì)器(qì),作(zuò)為(wèi)車(chē)身(↓ <shēn)域中的(de)重要(yào)組©≥成部分(fēn),其功能(néng)在傳統架構中主要(yào)♥α負責燈光(guāng)、門(mén)窗(chuβ↓āng)、雨(yǔ)刮等車(chē)身(shēn)附件(jiàn)的(de)控制(z♥'hì)。然而,在下(xià)一(yī)代電(diàn)子(zǐ)電(d÷↔iàn)氣架構的(de)演進過程中,BCM的(de)功能(néng)很(hěn)可(kě)✔€能(néng)會(huì)根據區(qū)域劃分(fēn)的(de)需求被拆分(fēn)成左αΩ£右兩個(gè)區(qū)域控制(zhì)器(qì∞☆)來(lái)實現(xiàn),每個(gè)區(qū)域控制(zhì)器(qì)負責相(xi ∑α≈àng)應側車(chē)身(shēn)附件(jiàn)的(de)集中控制(zhì≥₩),為(wèi)了(le)将應用(yòng)軟件(jiàn)平台化(huà),可✘σΩ∏(kě)以做(zuò)出如(rú)下(xiౕ∑•)劃分(fēn),
&↕♥→™nbsp;
也(yě)就(jiù)是(shì)将上(shàγ✔ng)一(yī)小(xiǎo)節中的(de)SA層S≤σαλWC拆分(fēn)為(wèi)主副駕座椅加熱(rè)功能(néπ ng)分(fēn)别執行(xíng)的(de)兩個(gè)SWC,當下(x∏Ωià)一(yī)代區(qū)域控制(zhì)電(diàn)£¥α§子(zǐ)電(diàn)氣架構導入時(shí),VC層的(de)SWC可(kě)以直接<≤"¶部署在中央計(jì)算(suàn)平台內(nèi)Ω∏§,SA層的(de)兩個(gè)SWC就(jiù)分(fēn)别部署在左右區(qū)域控制(zhìσ∑<)器(qì)中;極大(dà)的(de)增強了(le)SWC的(de)重用(yòng•Ω&)性; &nbs₩δΩ"p;
盡管将SWC拆分(fēn)成更細緻的(de)¶"♥模塊能(néng)夠顯著提升其重用(yòng)性和(hé)靈活性,從(cóng)而 γ §降低(dī)開(kāi)發成本并加速産品上(shàng)市(♦σ↑shì)時(shí)間(jiān),然而,這(zhèβ")種高(gāo)度的(de)細分(fēn)化(huà)在當前的(de)開(kāi)發平台上(shàφ™ng)也(yě)伴随著(zhe)一(yī)系列問(wèn)題。具體(tǐ™$)而言,過于細化(huà)的(de)模塊劃分(fēn)往往σσ意味著(zhe)模塊間(jiān)的(de)內(nèi)部信号交互将顯著增加,這(zhλ∑ΩΩè)不(bù)僅會(huì)加大(dà)系統的(de↓♠β)複雜(zá)性和(hé)維護難度,還(hái)可(kě)能(néng)引入額外 ✘δ≥(wài)的(de)性能(néng)開(kāi)銷,如(rú)通¥♥π(tōng)信延遲和(hé)額外(wài)的(de)♠±處理(lǐ)負擔。
因此,作(zuò)為(&≤≤ wèi)架構開(kāi)發者,在決定SWC模↓∏Ω'塊劃分(fēn)的(de)精細度時(shí),必須采取一(yī)種平衡且 ™全面的(de)視(shì)角。
首先,需要(yào)深入了(le)₽₹ε解并評估公司當前的(de)開(kāi)發平台特性,包括其支持的(de)通(tōng)信機(j≠φ♥≤ī)制(zhì)、性能(néng)瓶頸、內(nèi)存限制(zhì₽εβ)以及擴展能(néng)力等因素。這(zhè)有(yǒu)助于開(<βkāi)發者在模塊劃分(fēn)時(shí)避免♦π★設計(jì)出超出平台承載能(néng)力或難以實現(xiàn)的(de)架構。
其次,規劃也(≠♦ yě)是(shì)不(bù)可(kě)或缺的(de)一(yī)環。開↔'↕↓(kāi)發者需要(yào)根據公司長(>↔cháng)遠(yuǎn)的(de)發展戰略、項目目₩&•标以及預期的(de)産品叠代周期,來(lái'® )制(zhì)定合适的(de)SWC劃分(fēn)策略。這(zh ₽è)包括考慮未來(lái)可(kě)能(néng)的(de)需求變更、技(j★'€ì)術(shù)升級以及模塊間(jiān)的(de)≠≥依賴關系,确保架構既能(néng)滿足當前需求,又®↑λ(yòu)能(néng)靈活應對(duì)未來(lái)的(de)變化(h≤®βεuà)。
在設計(jì)SWC交互信息時(sh☆¥₹í),需要(yào)基于軟件(jiàn)需求分(fēn)析報(bào)告,我們著(zh¶∑ ÷e)手為(wèi)各個(gè)功能(néng)模塊創♠✔φ建對(duì)應的(de)SWC外(wài)部接口。這(zhè)一(yī)過程首先™φ涉及對(duì)需求文(wén)檔中明(míng)确指出的(de)功能(β≥ néng)模塊與外(wài)部系統或組件(jiàn)之間(jiān)的(de)交互信息進行(x≤↑íng)細緻解析。這(zhè)些(xiē)交互信息通(tōng<±♠)常包括了(le)通(tōng)信協議(yγ≈ì)、消息格式、以及觸發交互的(de)條Ω•件(jiàn)等關鍵要(yào)素。随後,我們根據這(zhè)些(xiē)>↑÷要(yào)求,為(wèi)每一(yī)個₹<(gè)SWC設計(jì)并定義其外(wài)部Port、Interface、參數(shù)類型等,确保這(zhè)些(xiē)信息能(néng)夠Ω∑準确無誤地(dì)反映功能(néng)模塊與外(wài)界的(de)交互需求。 >←'
在創建外(wài)部接口的(∞ →de)過程中,我們尤為(wèi)注重為(wèi)每個(gè)接口精心規劃其參≈®∞α數(shù)列表以及相(xiàng)應的(de)數(shù)據類型。參數(shù)♠的(de)選擇需緊密貼合功能(néng)模•∏&塊的(de)業(yè)務邏輯和(hé)交互需求,數(shù)'& 據類型則必須明(míng)确且一(yī)緻,以避免'&在後續的(de)開(kāi)發和(hé)集成©≥α過程中出現(xiàn)數(shù)據不(bù)匹配或理(lǐ)解歧義的(de)問(₽☆wèn)題。通(tōng)過這(zhè)樣的(de)細緻規劃,我們旨在構建一(yī)∏個(gè)清晰、規範且易于理(lǐ)解和(hé)維護的(de)SWC接口體(t§₹←ǐ)系。
此外(wài),除了(le)遵循需求分(fēn)析中定義★↑的(de)外(wài)部交互外(wài),如(rú)果我們将功能(néng)模塊進₽≠一(yī)步細化(huà)為(wèi)多(duō)®&δ個(gè)SWC時(shí),我們必然需要(yào)處理(lǐ)這(×£→↓zhè)些(xiē)SWC之間(jiān)的(de)內(nèi)部交互問(π•wèn)題。為(wèi)此,我們需要(yào)明(míπδ ₽ng)确每個(gè)SWC之間(jiān)的(de)交互點,即內(nèi)部Sλ<WC之間(jiān)的(de)Port/In•terface的(de)設定。這(zhè)些(xiē)Port/Interface£ 将作(zuò)為(wèi)SWC間(jiānπδ)通(tōng)信的(de)橋梁,通(tōng)過RTE負責傳遞數× (shù)據和(hé)指令。 &γ<δnbsp;
在确定Port/Interface後,我們還(σ★₩hái)需要(yào)為(wèi)每個(gè)交互∞點詳細定義所需的(de)參數(shù)以及對(duì)應的↔×←(de)數(shù)據類型。這(zhè)些(xiē)參數(shù)應當能(néng)夠完整表達SWC間(jiān)傳遞的(de)信息內(nèi)容,而數(shù)據類型的(de™×'£)選擇則需确保數(shù)據的(de)一(yī)緻性和(hé)準确性。通(tō ↓∏"ng)過這(zhè)樣的(de)規劃,我們能(néng)夠實現(xiàn)SWC間(jiān)的(✔±de)高(gāo)效、可(kě)靠的(de)交互。 &nb≠♥'•sp;
根據3.1小(xiǎo)節中對(duì)SWεε↓C的(de)劃分(fēn)設計(jì),給出如(rú)下(xià)Port設計(jì)和(¥×βhé)展示:
座椅加熱(rè)SWC的(de)Port設計(jì)  ≥γ₽φ;
接口的(de)£∏¶ε設計(jì)規範在軟件(jiàn)開(kāi)發過程中占據著(zhe)至關重要(yà$ σ o)的(de)地(dì)位,它通(tōng)常需要(yào←&☆)組織內(nèi)部通(tōng)過一(yī)系列會(h←uì)議(yì)商定出來(lái)的(de)的(de)準₽β$則來(lái)确保接口的(de)統一(yī)性和 ↓€↑(hé)一(yī)緻性。目的(de)是(shìπ₽)構建一(yī)個(gè)清晰、可(kě)預¶∏∞™測且易于理(lǐ)解的(de)接口體(tǐ)系,從(cóng)而極大(₹ ×dà)地(dì)提升開(kāi)發效率,降低(dī)維護成本,并促進團隊內(nèi)部及跨團隊≈∞∑₩之間(jiān)的(de)協作(zuò)。
具體(×←πtǐ)而言,接口設計(jì)規範應包含以下(≠∞ xià)幾個(gè)方面來(lái)确保開(kāi)發者能(néng)夠較為(wèi) ☆ 容易地(dì)辨識接口所表示的(de)含義及其代γ÷δ→表的(de)屬性: &nα<bsp;
命名規範:接口及其方法、參數(shù)、返回值等命名應遵循一(yī)緻的(de)命名約定,如'→★(rú)使用(yòng)駝峰命名法或下(xià)劃線♦δ"♣分(fēn)隔等,同時(shí)确保名稱能(néng)夠直觀反映其§×♣β功能(néng)和(hé)作(zuò)用(yòng),便于開(kāi)發者理(lǐ)解₽Ω和(hé)記憶。
注釋文(wén)檔:為(wèi)接口及其組成部分(fēn)提供詳盡的(®£de)注釋文(wén)檔,包括功能(néng)描述、參數(shù)說(shuō)明(míng∏₹β≠)、返回值類型及可(kě)能(néng)的(de)異常信息等。這(zh₽∏è)些(xiē)文(wén)檔應采用(y±γòng)統一(yī)格式編寫,如(rú)使用(yòng)Markdown或特定API文(wén)檔π•×工(gōng)具,以便于自(zì)動化(huà)生δ$α(shēng)成和(hé)維護。所有(yǒu)關聯開(kāi)發者通(tōng)過遵循這(zhè)∑×些(xiē)規範,可(kě)以顯著提升軟件(jiàn☆↕)開(kāi)發的(de)質量和(hé)效率。 &∞♥nbsp;
Port口♠≤←對(duì)應的(de)參數(shù)類型大♠™(dà)緻上(shàng)也(yě)需要(yào)按照↔¥✔≠(zhào)上(shàng)面的(de)約定來(lái)制(zhì)定,這(zhè★∑$¥)裡(lǐ)不(bù)會(huì)給出詳細的(de)規範♠λ♥說(shuō)明(míng),畢竟由于軟件(jià£n)開(kāi)發的(de)高(gāo)度靈活性和(hé)多(duō)樣性,不(b↕≈↕÷ù)同的(de)開(kāi)發者或開(kāi)發團隊可(kě")能(néng)會(huì)根據自(zì)己的(de)項目需求、技♠ (jì)術(shù)棧偏好(hǎo)、以及過往經驗,對≈→(duì)這(zhè)些(xiē)約定進行(xíng)不(bù)同程度的(d'Ω"✔e)調整或擴展。因此,雖然存在某種普遍接受的(de)“一( ↓yī)般性”做(zuò)法,但(dàn)實際應用(yòngε♣☆)中卻鮮有(yǒu)完全一(yī)緻的(de)“普适性”規範。 ↔₹λ
對(duì)于SWC設計(j✘™ì)的(de)關聯信息可(kě)以使用(yòng)表格或者其他(tā)工(gōng)具進行(xínα÷g)管理(lǐ),個(gè)人(rén)設計(jì)座椅加熱(rè)∞↓ 功能(néng)中主副駕座椅占位檢測SWC設計(jì)信息如(rú)下(xià):
SWC Name |
Port Name |
Port Direction |
Interface Name |
Interface Type |
Data Type |
SeatHeatOccy |
R_DrSeatOccupySt |
IN |
IF_DrSeatOccupySt |
Receiver |
DT_CommSts |
R_AsSeatOccupySt |
IN |
IF_AsSeatOccupySt |
Receiver |
DT_CommSts |
|
S_DrSeatHeatCoordReq |
OUT |
IF_DrSeatHeatCoordReq |
Sender |
DT_CommReq |
|
S_AsSeatHeatCoordReq |
OUT |
IF_AsSeatHeatCoordReq |
Sender |
DT_CommReq |
Data Type |
Base Type |
Min value |
Max value |
……
|
Data Detile |
DT_CommSts |
Enum |
0 |
1 |
…… |
0:kClose 1:kOpen |
DT_CommReq |
Enum |
0 |
1 |
…… |
0:kNO_Req 1:kReq |