AUTOSAR BSW開發(fā)遇到的問題及MBD開發(fā)的優(yōu)勢(shì)
AUTOSAR BSW模塊越來越多,需求數(shù)量也呈現(xiàn)指數(shù)型增加,并且模塊的復(fù)雜性很大, 一般的傳統(tǒng)設(shè)計(jì)已經(jīng)很難滿足,通過MBD中提供的方法可以滿足AUTOSAR BSW的開發(fā)。如通過MBD提供了以下方法滿足AUTOSAR 模塊的特點(diǎn):
-
采用變體子系統(tǒng)設(shè)置并生成AUTOSAR預(yù)編譯配置方法 -
通過Subsytem實(shí)現(xiàn)Autosar提供的標(biāo)準(zhǔn)接口 -
通過庫(kù)和引用子系統(tǒng)的方法實(shí)現(xiàn)代碼塊的復(fù)用 -
通過仿真和測(cè)試功能實(shí)現(xiàn)在線的測(cè)試和主要功能的早期驗(yàn)證(冒煙測(cè)試) -
提供函數(shù)組件去封裝功能來降低圈復(fù)雜度
關(guān)于降低圈復(fù)雜度(代碼對(duì)象中線性無關(guān)路徑的數(shù)量),如下圖所示,主要有兩種方法:
程序塊的重構(gòu)(代碼的局部?jī)?yōu)化)
-
提煉函數(shù) 你有一段代碼可以被組織在一起并獨(dú)立出來。將這段代碼放進(jìn)一個(gè)獨(dú)立函數(shù)中,并將函數(shù)名稱解釋該函數(shù)的用途。 -
分解條件表達(dá)式 你有一個(gè)復(fù)雜的條件(if -else)語(yǔ)句。從if、else段落中分別提煉出獨(dú)立函數(shù)。 -
合并條件表達(dá)式 你有一系列條件測(cè)試,都得到相同結(jié)果。將這些測(cè)試合并為一個(gè)條件表達(dá)式,并將這個(gè)條件表達(dá)式提煉成為一個(gè)獨(dú)立函數(shù)。 -
合并重復(fù)的條件片段 在條件表達(dá)式的每個(gè)分支上有著相同的一段代碼。將這段重復(fù)的代碼搬移到條件表達(dá)式之外。 -
移除控制標(biāo)記 在一系列布爾表達(dá)式中,某個(gè)變量帶有“控制標(biāo)記”的作用。以break語(yǔ)句或return語(yǔ)句取代控制標(biāo)記。 -
Case的重構(gòu)(整體對(duì)代碼結(jié)構(gòu)進(jìn)行優(yōu)化)
case重構(gòu)
對(duì)于一個(gè)switch有幾十個(gè)case的情況,其圈復(fù)雜度往往上百,程序塊重構(gòu)顯然已不能解決其本質(zhì)復(fù)雜度。如果要降低其圈復(fù)雜度,必然需要對(duì)代碼進(jìn)行重新設(shè)計(jì)。 C語(yǔ)言的switch/case語(yǔ)言特性本質(zhì)是描述一種查表邏輯,其中表結(jié)構(gòu)和表的控制(即查表)都通過軟件來表達(dá)。表通過代碼來描述,這顯然不是一種最佳的實(shí)現(xiàn)方式。我們需要做的就是,避免控制中的復(fù)雜性,將精力集中在數(shù)據(jù)的組織上,以反映所模擬世界的真實(shí)結(jié)構(gòu),并將數(shù)據(jù)與控制進(jìn)行分離。 表的設(shè)計(jì)由兩部分組成:對(duì)象(表項(xiàng))的抽象和表的構(gòu)建。對(duì)象的抽象涉及對(duì)象如何抽象,對(duì)象粒度如何劃分,對(duì)象間的關(guān)系如何設(shè)計(jì),這些問題與具體業(yè)務(wù)邏輯強(qiáng)相關(guān)。表的構(gòu)建方法可分為編譯期構(gòu)建、鏈接期構(gòu)建和運(yùn)行時(shí)構(gòu)建。3種構(gòu)建方法各有所長(zhǎng)和不足,可根據(jù)自身需要進(jìn)行選擇。
下面詳細(xì)介紹一下AUTOSAR BSW開發(fā)遇到的問題及MBD開發(fā)的優(yōu)勢(shì):
AUTOSAR ASILD級(jí)別安全軟件模塊的安全機(jī)制介紹
AUTOSAR模式管理經(jīng)驗(yàn)總結(jié)
使用AURIX TOM模塊生成交流電機(jī)的PWM驅(qū)動(dòng)
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!