![]() ![]() ![]() 軟件架構(gòu)設(shè)計是功能安全軟件開發(fā)過程中的關(guān)鍵階段,作為實現(xiàn)軟件安全需求和軟件需求的載體,它定義了軟件架構(gòu)要素并將其細化到能夠識別出軟件單元的程度。 ISO26262 Part6 Clause7中要求:軟件架構(gòu)設(shè)計應(yīng)描述軟件架構(gòu)要素的靜態(tài)設(shè)計方面和動態(tài)設(shè)計方面。接下來,我們將通過“功能安全之軟件架構(gòu)設(shè)計”專題分別從功能安全軟件靜態(tài)架構(gòu)設(shè)計、動態(tài)架構(gòu)設(shè)計、多核和部署三個方面進行介紹。 ![]() 本文中,我們將重點介紹軟件架構(gòu)的定義和描述方法、軟件架構(gòu)的設(shè)計原則、軟件架構(gòu)的靜態(tài)設(shè)計和軟件架構(gòu)設(shè)計的注意事項。 軟件架構(gòu)是軟件要素的結(jié)構(gòu)化表征,通過將軟件需求分配給軟件組件,從而識別并劃分軟件組件及其邊界和信號交互。軟件架構(gòu)設(shè)計是指全部軟件組件及其在層次結(jié)構(gòu)中的交互,既要滿足軟件安全需求,又要滿足其它軟件需求。因此,軟件架構(gòu)包括安全相關(guān)的軟件組件和非安全相關(guān)的軟件組件。 軟件架構(gòu)設(shè)計的描述方法如下表所示: 表1 軟件架構(gòu)設(shè)計描述方法 1b. 語法和語義定義均不完整的描述方法; 1c. 語法定義完整、但語義定義不完整的描述方法,如SysML、UML、Simulink和Statefolw等; 1d. 語法和語義均被完整定義的描述方法,如Zed、NuSMV、PVS、VDM和數(shù)學(xué)公式等。 注:盡管ISO26262 要求ASIL C及以上等級的軟件架構(gòu)設(shè)計描述方法要采用半形式化描述法,但是沒必要對所有ASIL C及以上等級的軟件架構(gòu)設(shè)計都使用半形式化描述方法。 在進行軟件架構(gòu)設(shè)計時,我們需要考慮軟件架構(gòu)的簡單性、一致性、封裝性、可理解性、可驗證性和可維護性等,同時結(jié)合軟件架構(gòu)的設(shè)計原則對軟件架構(gòu)進行開發(fā)和設(shè)計。軟件架構(gòu)設(shè)計原則如下表所示: 表2 軟件架構(gòu)設(shè)計原則 1a. 軟件組件需要采用分層架構(gòu),如AUTOSAR架構(gòu)或類AUTOSAR架構(gòu); 1b. 每個軟件組件都不能太大,邏輯不能太復(fù)雜,圈復(fù)雜度不能太高,具體詳見“功能安全之執(zhí)行低復(fù)雜性”; 1c. 軟件組件的接口數(shù)量不能太多,接口數(shù)量的增加會導(dǎo)致軟件組件復(fù)雜度的升高; 1d&1e. 軟件組件內(nèi)部要實現(xiàn)功能內(nèi)聚,軟件組件之間要降低耦合; 1f. 軟件的調(diào)度要合理,確保所有的Task能夠被操作系統(tǒng)有條不紊的調(diào)度并正確執(zhí)行; 1g. 少使用中斷,如果必須使用,需要先定義中斷的優(yōu)先級; 1h. 需要對軟件組件進行內(nèi)存分區(qū)與訪問權(quán)限保護,確保軟件組件之間免干擾; 1i. 要對共享資源進行管理,常見的共享資源包括:供電、時鐘和驅(qū)動等。 本文以VCU扭矩計算中加速踏板相關(guān)的軟件安全需求為例,通過半形式化方法描述功能安全軟件靜態(tài)架構(gòu)中“加速踏板合理性校驗”軟件組件的數(shù)據(jù)接口和函數(shù)接口。接口信息如下圖所示: 圖1 “加速踏板合理性校驗”靜態(tài)架構(gòu) 將所有的軟件安全需求和其它軟件需求按照軟件架構(gòu)設(shè)計原則進行設(shè)計后,得到的應(yīng)用層軟件架構(gòu)、系統(tǒng)服務(wù)層架構(gòu)、ECU抽象層架構(gòu)和MCU抽象層架構(gòu)如下圖所示: 圖2 應(yīng)用層軟件架構(gòu) 圖3 系統(tǒng)服務(wù)層軟件架構(gòu) 圖4 ECU抽象層軟件架構(gòu) 圖5 MCU抽象層軟件架構(gòu) 最后,將應(yīng)用層、RTE、系統(tǒng)服務(wù)層、ECU抽象層和MCU抽象層軟件架構(gòu)匯總到一起,即可得到VCU的軟件總體架構(gòu),如下圖所示: 圖6 VCU軟件總體架構(gòu) 在進行軟件架構(gòu)設(shè)計時,有一些常見的注意事項,主要包括: a. 軟件架構(gòu)設(shè)計既要考慮軟件安全需求,又要考慮其它軟件需求; b. 軟件架構(gòu)設(shè)計是對整體軟件架構(gòu)的設(shè)計,不一定局限于某個微控制器或ECU; c. 軟件組件應(yīng)按照分配給它的所有需求的最高的ASIL等級來進行開發(fā); d. 軟件架構(gòu)設(shè)計應(yīng)被開發(fā)到能夠識別出軟件單元的程度; e. 如果嵌入式軟件的最高等級為ASIL D,需要對軟件組件行適當(dāng)?shù)目臻g隔離; f. 應(yīng)該對嵌入式軟件所需資源進行上限預(yù)估,包括:時間資源、內(nèi)存資源和通信資源等; g. 一個軟件分區(qū)內(nèi)的Task,彼此之間不能免于干擾; h. 一個軟件分區(qū)不能改變其它軟件分區(qū)的代碼或數(shù)據(jù),也不能控制其它軟件分區(qū)的非共享資源。 |
|
來自: 花信風(fēng)zq > 《架構(gòu)》