ISO 26262安全的軟件開發(fā)流程(軟件安全開發(fā)指南)
· 軟件開發(fā)啟動(dòng)
根據(jù)ISO 26262-6 5.4.6中建議,在軟件開發(fā)的啟動(dòng)階段,對(duì)于啟動(dòng)軟件級(jí)產(chǎn)品開發(fā),首先需要制定關(guān)于整個(gè)軟件級(jí)開發(fā)的活動(dòng)和方法的計(jì)劃,對(duì)于軟件開發(fā)的每個(gè)子階段,應(yīng)該根據(jù)應(yīng)用規(guī)范來(lái)選擇對(duì)應(yīng)的方法和相應(yīng)的工具。
根據(jù)標(biāo)準(zhǔn),SmartSAR Studio在選擇建模語(yǔ)言時(shí)考慮到了:對(duì)于建模語(yǔ)言需要有清晰的定義,我們采用EMF、GMF兩種建模語(yǔ)言搭建給一個(gè)建模環(huán)境提供給用戶;建模語(yǔ)言支持模塊化,抽象和結(jié)構(gòu)化的構(gòu)造,根據(jù)標(biāo)準(zhǔn)中對(duì)于建模和編碼規(guī)范中需要包含的問(wèn)題,我們的工具支持的建模和編碼規(guī)范,如下表所示:
Studio的建模方法非常簡(jiǎn)單,每個(gè)模型的圖元也不復(fù)雜,符合嵌入式領(lǐng)域軟件開發(fā)人員的常識(shí),同時(shí)我們參照了多個(gè)領(lǐng)域軟件開發(fā)語(yǔ)言,定義了一套通用的建模語(yǔ)言。本建模語(yǔ)言使用強(qiáng)類型,每個(gè)模型有自己特定的類型,需要聲明后才能使用,每個(gè)模型在建模工具中都有唯一清晰確定的圖形表示,同時(shí)對(duì)于默認(rèn)的模型名稱有符合意義的命名方式,并且符合C語(yǔ)言命名規(guī)范。由于Studio是屬于基于模型驅(qū)動(dòng)的開發(fā)方法,同時(shí)也是一個(gè)多層的開發(fā)架構(gòu),不應(yīng)該由于上層或者外部的輸入錯(cuò)誤而導(dǎo)致本層次被破壞,這也是將可能出現(xiàn)的錯(cuò)誤造成的影響控制在最小的范圍內(nèi)。因此,不僅在編碼構(gòu)建本工具的過(guò)程中,我們采用防御式編程方法,同時(shí)在建模環(huán)境中對(duì)用戶的模型也提供最大可能的防御措施,包括各種驗(yàn)證提示,在代碼級(jí)最大可能容忍恢復(fù)用戶的建模錯(cuò)誤,將各種可能的錯(cuò)誤風(fēng)險(xiǎn)提到最上層等。
· 需求分析階段
需求分析階段是軟件工程領(lǐng)域中軟件開發(fā)最開始的階段,它主要是完成對(duì)系統(tǒng)整個(gè)的定義,確定系統(tǒng)的各種需求,幫助開發(fā)測(cè)試人員理解整個(gè)系統(tǒng)的功能,為后續(xù)的工作打下基礎(chǔ)。
在ISO 26262-4中給出了技術(shù)安全需求規(guī)格,用來(lái)規(guī)范技術(shù)安全需求,細(xì)化功能安全概念,同時(shí)考慮到功能概念和初級(jí)的架構(gòu)假設(shè)級(jí)別上。在開發(fā)周期內(nèi),技術(shù)安全規(guī)范是用來(lái)實(shí)現(xiàn)功能安全概念的必須技術(shù)需求。系統(tǒng)的初級(jí)架構(gòu)假設(shè)和系統(tǒng)性質(zhì),包括:外部接口如通信和用戶接口,系統(tǒng)限制條件如環(huán)境和功能限制,系統(tǒng)配置需求。
在技術(shù)安全需求規(guī)范中應(yīng)該有的安全機(jī)制包括:
1)系統(tǒng)自身的錯(cuò)誤檢查、通知和控制相關(guān)的措施,這些包含系統(tǒng)的自我監(jiān)控或者對(duì)于隨機(jī)硬件錯(cuò)誤的檢查,也包含對(duì)通信通道(如數(shù)據(jù)接口,通信總線,無(wú)線連接)的失敗模式檢查和監(jiān)控措施。
2)在和系統(tǒng)交互的外部設(shè)備中,對(duì)錯(cuò)誤的檢查、通知和控制相關(guān)的措施。其中,外部設(shè)備包括:其它電子控制單元,電力提供或者通信設(shè)備等。
3)使能系統(tǒng)到達(dá)或者維護(hù)一個(gè)安全狀態(tài)的措施,包括優(yōu)化安全機(jī)制沖突和仲裁邏輯。
4)細(xì)化和實(shí)現(xiàn)報(bào)警及降級(jí)概念。
5)防止?jié)撛阱e(cuò)誤的措施。
· 設(shè)計(jì)階段
在軟件開發(fā)過(guò)程中,設(shè)計(jì)階段是繼需求之后的一個(gè)重要階段,在了解系統(tǒng)的需求后,設(shè)計(jì)階段是決定系統(tǒng)整體質(zhì)量的重要保證,在系統(tǒng)設(shè)計(jì)階段,主要關(guān)心的是系統(tǒng)的架構(gòu)設(shè)計(jì),基本的輸入輸出流程,外部交互,組織結(jié)構(gòu),模塊分配,功能劃分,數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)和出錯(cuò)設(shè)計(jì)等,為軟件的詳細(xì)設(shè)計(jì)提供基石。
在ISO 26262-4和ISO 26262-6中都有涉及到到設(shè)計(jì)階段安全的開發(fā)。ISO 26262-4主要關(guān)注于系統(tǒng)級(jí)的設(shè)計(jì)和安全方面的概念。系統(tǒng)設(shè)計(jì)應(yīng)給予功能概念,基礎(chǔ)架構(gòu)假設(shè)以及技術(shù)安全需求,保證各個(gè)階段的基礎(chǔ)架構(gòu)假設(shè)保持一致。
考慮到技術(shù)安全需求的實(shí)現(xiàn)問(wèn)題,系統(tǒng)設(shè)計(jì)應(yīng)該考慮一下這些問(wèn)題:
1) 驗(yàn)證系統(tǒng)設(shè)計(jì)的能力。
2) 在系統(tǒng)集成期間測(cè)試的可執(zhí)行能力。
3) 系統(tǒng)和子系統(tǒng)架構(gòu)應(yīng)該在對(duì)應(yīng)的ASIL等級(jí)上符合技術(shù)安全需求。
4) 每個(gè)元素應(yīng)從它實(shí)現(xiàn)的技術(shù)安全需求中繼承最高的ASIL等級(jí)。
5) 對(duì)于安全相關(guān)的元素,應(yīng)該定義其內(nèi)部和外部的接口,這是為了避免其它元素影響它們的安全性。
在系統(tǒng)設(shè)計(jì)階段中, ISO 26262-4的7.4.3.7中規(guī)定了為了避免高復(fù)雜性引起的失敗,架構(gòu)設(shè)計(jì)應(yīng)該滿足模塊化,足夠的顆粒度和簡(jiǎn)單的原則。其中模塊化的系統(tǒng)設(shè)計(jì)應(yīng)該滿足的屬性如下表所示。
在Studio中,RTE運(yùn)行時(shí)環(huán)境層根據(jù)架構(gòu)層軟件組件的架構(gòu)設(shè)計(jì),定義了軟件組件間通信接口,有明確的通信接口生成規(guī)定,同時(shí)也避免了不必要的接口復(fù)雜度,減少了依賴關(guān)系。系統(tǒng)映射根據(jù)架構(gòu)層定義的軟件組件架構(gòu)和ECU拓?fù)浣Y(jié)構(gòu),完成軟件和硬件的映射關(guān)系,避免了軟硬件的耦合關(guān)系,減少了交互的不必要的復(fù)雜度,同時(shí)也是避免了軟硬件交互的接口復(fù)雜度,減少了依賴關(guān)系。
在ISO 26262-6中規(guī)定了軟件級(jí)設(shè)計(jì)和安全相關(guān)的概念。軟件架構(gòu)設(shè)計(jì)代表了所有的軟件組件和它們?cè)趯哟位Y(jié)構(gòu)中的交互關(guān)系。軟件架構(gòu)設(shè)計(jì)提供了可以實(shí)現(xiàn)軟件安全需求的方法以及處理軟件開發(fā)的復(fù)雜性。
為了保證軟件架構(gòu)設(shè)計(jì)獲得的信息足夠讓后續(xù)的開發(fā)流程正確有效的執(zhí)行,軟件架構(gòu)設(shè)計(jì)應(yīng)該用下表中列出的表示法描述合適的抽象等級(jí)。
為了避免因高復(fù)雜度導(dǎo)致的錯(cuò)誤,軟件架構(gòu)設(shè)計(jì)應(yīng)該滿足模塊化,封裝性和簡(jiǎn)單這三個(gè)基本的屬性,下表中給出了軟件架構(gòu)設(shè)計(jì)的原則。
在Studio的層次結(jié)構(gòu)中,支持軟件組件的層次化結(jié)構(gòu),每個(gè)軟件組件通過(guò)內(nèi)部行為表示其軟件組件具體完成的功能,滿足高內(nèi)聚性和低耦合性。
架構(gòu)層的設(shè)計(jì)保證了軟件架構(gòu)設(shè)計(jì)開發(fā)到合理的程度使得所有的軟件單元能夠區(qū)別開。軟件架構(gòu)設(shè)計(jì)包含了靜態(tài)設(shè)計(jì)和動(dòng)態(tài)設(shè)計(jì)兩部分,其中靜態(tài)設(shè)計(jì)部分,架構(gòu)層完成了分級(jí)層次的軟件結(jié)構(gòu),軟件組件的端口實(shí)現(xiàn)了標(biāo)準(zhǔn)中規(guī)定的軟件組件的外部接口。根據(jù)標(biāo)準(zhǔn)7.4.9中指出,軟件安全需求應(yīng)該分配到軟件組件上,每個(gè)軟件組件應(yīng)該根據(jù)分配給它的最高等級(jí)的ASIL來(lái)開發(fā)。
· 開發(fā)實(shí)現(xiàn)階段
開發(fā)實(shí)現(xiàn)階段是軟件工程中定義的系統(tǒng)開發(fā)的最中心的工作,它是完成系統(tǒng)實(shí)現(xiàn)的主要工作,因此在開發(fā)實(shí)現(xiàn)階段的安全保證也是Studio非常重要的工作。軟件的開發(fā)實(shí)現(xiàn)包括源碼的生成和轉(zhuǎn)化為目標(biāo)代碼。
在ISO 26262-6的8.4.4中給出了軟件單元設(shè)計(jì)和在源碼級(jí)實(shí)現(xiàn)的屬性,包括:軟件單元的子程序和功能能夠正確執(zhí)行相關(guān)步驟;軟件單元間保持接口一致;簡(jiǎn)單性;可讀性和易理解性;魯棒性;易于修改和可測(cè)試性。如下表給出了我們工具符合標(biāo)準(zhǔn)的一些設(shè)計(jì)原則。
由于Studio的最終目標(biāo)是生成安全可靠的代碼,包括軟件組件的內(nèi)部算法,軟件組件間相互通信代碼,ECU配置等代碼,因此也需要符合標(biāo)準(zhǔn)中對(duì)于編碼的一些規(guī)范。
· 集成和測(cè)試階段
集成和測(cè)試階段是軟件開發(fā)的最后階段,它是正確高效運(yùn)行軟件的必要保證。集成是按照系統(tǒng)設(shè)計(jì)的要求將各個(gè)模塊組裝成子系統(tǒng)或者是系統(tǒng),測(cè)試驗(yàn)證軟件開發(fā)是否正確的完成了需求。
根據(jù)ISO 26262-4中的規(guī)定,集成和測(cè)試階段包含三個(gè)階段和兩個(gè)目標(biāo)。第一個(gè)階段是項(xiàng)目包含的每個(gè)元素的軟硬件集成;第二個(gè)階段是項(xiàng)目的所有元素集成一個(gè)完整的系統(tǒng);第三個(gè)階段是本系統(tǒng)和其它系統(tǒng)的集成。第一個(gè)目標(biāo)是根據(jù)需求和ASIL等級(jí)來(lái)測(cè)試系統(tǒng)對(duì)安全需求的符合性;第二個(gè)目標(biāo)是驗(yàn)證系統(tǒng)設(shè)計(jì)的功能需求和安全需求是否都完成。
深圳都市微生活科技以數(shù)字技術(shù)賦能商業(yè),讓您的項(xiàng)目不僅僅只是一套互聯(lián)網(wǎng)系統(tǒng)。從商業(yè)模式的頂層設(shè)計(jì)、到軟、硬件技術(shù)的最優(yōu)呈現(xiàn)、到配合市場(chǎng)的營(yíng)銷落地、到整個(gè)大數(shù)據(jù)化管理全程的賦能體系。
我們提供拼購(gòu)系統(tǒng)、微商管理系統(tǒng)、商城分銷系統(tǒng)、各模式系統(tǒng),小程序開發(fā)、互聯(lián)網(wǎng)技術(shù)孵化,多語(yǔ)言商城開發(fā),多語(yǔ)言微商管理系統(tǒng),多語(yǔ)言代理商管理系統(tǒng),多語(yǔ)言訂單系統(tǒng),跨境電商商城開發(fā)等。幫助和孵化出數(shù)十家收入億元企業(yè),實(shí)現(xiàn)合作共贏。
主營(yíng)業(yè)務(wù)涵蓋涉及app開發(fā),小程序開發(fā)定制,互聯(lián)網(wǎng) 新零售,微商模式系統(tǒng),渠道管理系統(tǒng)開發(fā),拼團(tuán)社交系統(tǒng)開發(fā),直播帶貨系統(tǒng)開發(fā),分銷分紅系統(tǒng)開發(fā),代理云倉(cāng)系統(tǒng)開發(fā),招商加盟系統(tǒng)開發(fā),社交新零售系統(tǒng)開發(fā),推廣引流,平臺(tái)拉新,起盤策劃等等!
如果您有APP開發(fā)和其他方面的系統(tǒng)定制需求,可以搜索“深圳都市微生活”與我們聯(lián)系!