汽車(chē)越來(lái)越依賴(lài)電子產(chǎn)品,制造商也越來(lái)越多地轉(zhuǎn)向電子產(chǎn)品和軟件方面的創(chuàng)新,以賦予他們競(jìng)爭(zhēng)優(yōu)勢(shì)。一輛現(xiàn)代豪華汽車(chē)可能有多達(dá) 100 個(gè)不同的嵌入式處理器,運(yùn)行超過(guò) 1 億行代碼。有了這么多的軟件,基本上不可能把它弄好。如今,據(jù)估計(jì) 60-70% 的汽車(chē)召回涉及軟件。
汽車(chē)系統(tǒng)中軟件缺陷的風(fēng)險(xiǎn)很高,因?yàn)檐浖刂浦?chē)輛的許多安全關(guān)鍵方面,包括油門(mén)、變速箱和制動(dòng)器。因此,安全關(guān)鍵型汽車(chē)軟件的開(kāi)發(fā)需要嚴(yán)格的標(biāo)準(zhǔn)和縝密的方法。
2011 年,ISO 26262 作為開(kāi)發(fā)安全關(guān)鍵型汽車(chē)電子系統(tǒng)的國(guó)際標(biāo)準(zhǔn)發(fā)布,其在全球范圍內(nèi)的使用正在增加。它基于更通用的 IEC 61508 安全標(biāo)準(zhǔn),但引入了針對(duì)汽車(chē)的改進(jìn)。本文試圖總結(jié)標(biāo)準(zhǔn)中對(duì)嵌入式軟件開(kāi)發(fā)人員最重要的一些關(guān)鍵方面。它首先簡(jiǎn)要介紹了 ISO 26262,并描述了如何使用一般工具來(lái)幫助進(jìn)行認(rèn)證。接下來(lái)描述了工具如何獲得用于認(rèn)證的資格。上一節(jié)討論的關(guān)鍵要點(diǎn)是,該標(biāo)準(zhǔn)的大部分內(nèi)容都涉及健壯的軟件開(kāi)發(fā),并且如果使用得當(dāng),
ISO 26262
本文檔使用術(shù)語(yǔ) ISO 26262 或“標(biāo)準(zhǔn)”來(lái)表示 ISO 26262 中涉及軟件的部分;特別是 ISO 26262-6:2011 道路車(chē)輛 — 功能安全 — 第 6 部分:軟件級(jí)別的產(chǎn)品開(kāi)發(fā)。
ISO 26262 是一個(gè)基于風(fēng)險(xiǎn)的標(biāo)準(zhǔn)。雖然它承認(rèn)不可能將風(fēng)險(xiǎn)降至零,但它要求對(duì)風(fēng)險(xiǎn)進(jìn)行定性評(píng)估,并采取措施將風(fēng)險(xiǎn)降至“合理可行的最低水平”(ALARP)。
ISO 26262 中使用的詞匯涉及故障、錯(cuò)誤和故障,其中“故障可以表現(xiàn)為錯(cuò)誤……而錯(cuò)誤最終會(huì)導(dǎo)致故障”。要理解的最重要的術(shù)語(yǔ)是“汽車(chē)安全完整性等級(jí)”或 ASIL。ASIL 是對(duì)電子元件風(fēng)險(xiǎn)的分類(lèi)。D 級(jí)代表風(fēng)險(xiǎn)最高的部件,A 級(jí)代表最低風(fēng)險(xiǎn)(當(dāng)風(fēng)險(xiǎn)被認(rèn)為低于 ASIL A 時(shí),使用附加標(biāo)簽 QM)。該級(jí)別是通過(guò)遵循適用于危害的評(píng)估過(guò)程來(lái)分配的。每個(gè)潛在危險(xiǎn)事件都按其可能造成的傷害嚴(yán)重程度進(jìn)行分類(lèi),其中 SIL0 表示沒(méi)有傷害,而 SIL3 表示對(duì)生命的威脅。評(píng)估中的其他重要因素是暴露,范圍從 E0(極低概率)到 E4(非??赡埽?/p>
ASIL 是通過(guò)綜合考慮這些因素來(lái)確定的。很明顯,在嚴(yán)重性、暴露性和可控性方面得分較高的危險(xiǎn)將被指定為 ASIL D。但是,如果發(fā)生概率非常低,則可以將嚴(yán)重性較高的危險(xiǎn)指定為 ASIL A。
一旦 ASIL 被確定為危險(xiǎn),它就會(huì)被減輕危險(xiǎn)的安全目標(biāo)和由此產(chǎn)生的安全要求繼承。然后 ASIL 規(guī)定了軟件的最低測(cè)試要求。
使用工具幫助認(rèn)證
ISO 26262 明確承認(rèn)軟件驗(yàn)證工具對(duì)于滿(mǎn)足測(cè)試要求至關(guān)重要。因此,該標(biāo)準(zhǔn)要求此類(lèi)工具本身是合格的。需要注意的重要一點(diǎn)是,使用的工具本身可能不完善,這些不完善可能會(huì)破壞整個(gè)系統(tǒng)的安全案例,因此該標(biāo)準(zhǔn)要求評(píng)估工具置信度 (TCL)。這是通過(guò)評(píng)估兩件事來(lái)確定的:
如果測(cè)試工具失敗,則無(wú)法滿(mǎn)足測(cè)試要求的可能性,以及
用戶(hù)可以檢測(cè)到工具故障的概率
該值的范圍可以從 TCL1(最低置信度)到 TCL3(最高置信度)。兩個(gè)因素用于確定 TCL:工具影響 (TI) 和工具錯(cuò)誤檢測(cè) (TD)。
工具影響用于描述工具中潛在故障的后果。TI1 用于有爭(zhēng)議的工具本身故障 a) 不能導(dǎo)致系統(tǒng)故障,并且 b) 不能防止故障被檢測(cè)到。否則使用 TI2。
TD 是對(duì)工具報(bào)告故障的能力的置信度評(píng)估,其中 TD1 表示最低置信度,TD3 表示最高置信度。
一旦評(píng)估了工具置信度和錯(cuò)誤檢測(cè),就可以根據(jù)表 1 中的信息確定 TCL。
例如,考慮一個(gè)虛構(gòu)的動(dòng)態(tài)分析工具 Cov,它可用于測(cè)量通過(guò)在給定測(cè)試套件上運(yùn)行軟件實(shí)現(xiàn)的代碼覆蓋率。假設(shè) ASIL 為 D(風(fēng)險(xiǎn)最高),相應(yīng)的安全要求是測(cè)試套件必須達(dá)到 100% 的分支覆蓋率。
Cov 的工具影響顯然是 TI2,因?yàn)槿绻茨苷_報(bào)告覆蓋率指標(biāo),則可能無(wú)法滿(mǎn)足代碼覆蓋率要求。
判斷工具錯(cuò)誤檢測(cè)可能很棘手。假設(shè) Cov 有一個(gè)缺點(diǎn),它有時(shí)無(wú)法檢測(cè)代碼的某些部分,因此無(wú)法測(cè)量這些部分的代碼覆蓋率,并且在這種情況下它沒(méi)有發(fā)出警報(bào),而是簡(jiǎn)單地從其報(bào)告中省略了該信息。沒(méi)有經(jīng)驗(yàn)的工具用戶(hù)可能不會(huì)注意到遺漏,因此可能會(huì)無(wú)意中錯(cuò)過(guò)覆蓋目標(biāo)。在這種情況下,工具可能會(huì)被判斷為 TD2。
因此,參考表 1,Cov 的 TCL 將為 TCL2。
工具資質(zhì)
ISO 26262 規(guī)定具有 TCL1 的工具不需要進(jìn)一步鑒定,但 TCL2 和 TCL3 都要求必須使用至少一種工具鑒定方法,才能正確聲稱(chēng)該工具合格。四種資格認(rèn)證方法是:
使用信心增加,這意味著該工具已成功用于類(lèi)似項(xiàng)目的跟蹤記錄。
對(duì)工具開(kāi)發(fā)過(guò)程的評(píng)價(jià),意味著工具開(kāi)發(fā)者一直小心翼翼地遵循一個(gè)高質(zhì)量的軟件開(kāi)發(fā)過(guò)程。
軟件工具的驗(yàn)證,意味著該工具已經(jīng)過(guò)嚴(yán)格的驗(yàn)證協(xié)議。
按照安全標(biāo)準(zhǔn)進(jìn)行開(kāi)發(fā),即在開(kāi)發(fā)過(guò)程中遵循嚴(yán)格的開(kāi)發(fā)標(biāo)準(zhǔn)(如 ISO 26262 本身)。
對(duì)于較高的 ASIL 級(jí)別,強(qiáng)烈推薦后兩種方法,因?yàn)樗鼈儺a(chǎn)生高置信度。
工具鑒定并非微不足道,而且通常超出了大多數(shù)嵌入式軟件項(xiàng)目本身的范圍。幸運(yùn)的是,大多數(shù)關(guān)心 ISO 26262 的工具供應(yīng)商已經(jīng)完成了獲得認(rèn)證的工作。最好的情況是供應(yīng)商已經(jīng)獲得了專(zhuān)門(mén)從事該領(lǐng)域的獨(dú)立機(jī)構(gòu)的資格。獨(dú)立認(rèn)證意味著供應(yīng)商已成功滿(mǎn)足相當(dāng)苛刻的要求,不僅讓工具用戶(hù)對(duì)其質(zhì)量充滿(mǎn)信心,而且為這些用戶(hù)節(jié)省了大量的認(rèn)證工作。
當(dāng)然,要獲得給定嵌入式系統(tǒng)的 ISO 26262 認(rèn)證,開(kāi)發(fā)人員必須自己制作案例,因此他們必須收集所有相關(guān)材料,包括所有工具資格。大多數(shù)供應(yīng)商將提供一個(gè)“認(rèn)證工具包”,其中包含該材料的易于使用的形式。
靜態(tài)分析工具和 ISO 26262
ISO 26262 不要求使用任何特定類(lèi)別的工具;相反,它指定了代碼應(yīng)該具有的屬性,但通常只列出可用于提供證據(jù)證明代碼確實(shí)具有這些屬性的方法。在許多情況下,工具的使用實(shí)際上是強(qiáng)制性的(例如,如果不使用現(xiàn)代工具,基本上不可能收集準(zhǔn)確的代碼覆蓋率指標(biāo))。在其他情況下,可能不清楚是否有可用的工具可以提供幫助。
與靜態(tài)分析工具最相關(guān)的標(biāo)準(zhǔn)部分是第 8 節(jié):軟件單元設(shè)計(jì)和實(shí)現(xiàn)。靜態(tài)分析工具最明顯的應(yīng)用之一是驗(yàn)證軟件是否符合第 5.4.7 節(jié)規(guī)定和第 8.4.3.d 節(jié)要求的編碼標(biāo)準(zhǔn)。汽車(chē)領(lǐng)域最好的例子當(dāng)然是 MISRA C。自從早期版本首次發(fā)明以來(lái),發(fā)現(xiàn)此類(lèi)違規(guī)一直是靜態(tài)分析工具的優(yōu)勢(shì)。
最新一代的靜態(tài)分析工具仍然能夠發(fā)現(xiàn)違反編碼標(biāo)準(zhǔn)的情況,但它們還具有更多功能。它們的主要目的是發(fā)現(xiàn)嚴(yán)重的編程錯(cuò)誤,例如那些可能導(dǎo)致程序崩潰或陷入未定義行為的錯(cuò)誤。這些工具的設(shè)計(jì)足夠靈活,可以使用它們來(lái)滿(mǎn)足 ISO 26262 的其他一些要求。
最相關(guān)的部分之一是 8.4.4,其中列出了“在源代碼級(jí)別進(jìn)行軟件單元設(shè)計(jì)和實(shí)現(xiàn)的設(shè)計(jì)原則……”以實(shí)現(xiàn)包括正確執(zhí)行順序、健壯性甚至代碼可讀性在內(nèi)的屬性。第 8.4.5 節(jié)繼續(xù)列出應(yīng)該用于驗(yàn)證軟件是否符合要求的技術(shù)。列出的技術(shù)之一是靜態(tài)代碼分析。
ISO 26262 在幾個(gè)方面引用了“穩(wěn)健性”的概念。在軟件單元設(shè)計(jì)和實(shí)現(xiàn)的上下文中,魯棒性被認(rèn)為包括防止“不可信的值、執(zhí)行錯(cuò)誤、被零除以及數(shù)據(jù)流和控制流中的錯(cuò)誤”(8.4.4)。軟件單元測(cè)試 (9.4.2) 和軟件集成與測(cè)試 (10.4.3) 的穩(wěn)健性特征包括“不存在無(wú)法訪問(wèn)的軟件、有效的錯(cuò)誤檢測(cè)和處理”。
總結(jié)穩(wěn)健性要求的一種合理方式是,應(yīng)盡量減少可預(yù)防的嚴(yán)重軟件缺陷的數(shù)量。這正是高級(jí)靜態(tài)分析工具的最大優(yōu)勢(shì)。
粗略地說(shuō),這些工具從解析代碼開(kāi)始,然后創(chuàng)建整個(gè)程序的高保真模型。發(fā)現(xiàn)缺陷的分析通過(guò)以各種方式遍歷模型尋找異常來(lái)進(jìn)行。最復(fù)雜的算法通過(guò)探索代碼路徑來(lái)模擬程序的執(zhí)行,但它們不是使用具體值來(lái)表示執(zhí)行狀態(tài),而是使用一組抽象方程來(lái)模擬程序?qū)傩浴?/p>
這些工具最重要的特性是,它們可以探索比最復(fù)雜的測(cè)試方案所能探索的更多的執(zhí)行路徑。即使代碼已經(jīng)過(guò)嚴(yán)格的覆蓋要求測(cè)試,例如完整的 MCDC(ISO 26262 規(guī)定的最嚴(yán)苛的要求),也不能保證完全的路徑覆蓋。原則上,高級(jí)靜態(tài)分析工具可以保證 100% 的路徑覆蓋(盡管在實(shí)踐中,通常會(huì)做出犧牲以實(shí)現(xiàn)合理的可擴(kuò)展性和精度)。因此,他們能夠并且確實(shí)發(fā)現(xiàn)了傳統(tǒng)測(cè)試遺漏的缺陷。此外,它們可以在開(kāi)發(fā)周期的早期應(yīng)用,甚至在編寫(xiě)單元測(cè)試之前。眾所周知,越早發(fā)現(xiàn)bug,修復(fù)越便宜,
結(jié)論
任何安全關(guān)鍵編碼標(biāo)準(zhǔn)(尤其是 ISO 26262)的動(dòng)機(jī)都是為了將??軟件故障對(duì) ALARP 的風(fēng)險(xiǎn)降低到盡可能低的程度。這意味著不僅要遵守標(biāo)準(zhǔn)的最低要求,還要應(yīng)用最佳實(shí)踐技術(shù)來(lái)實(shí)現(xiàn)高質(zhì)量。先進(jìn)的靜態(tài)分析工具的特性使其不僅在遵守法律條文方面非常寶貴,而且對(duì)于保持其精神 - 開(kāi)發(fā)健壯和可靠的軟件。
審核編輯:郭婷
-
處理器
+關(guān)注
關(guān)注
68文章
19102瀏覽量
228819 -
嵌入式
+關(guān)注
關(guān)注
5059文章
18975瀏覽量
302069 -
汽車(chē)電子
+關(guān)注
關(guān)注
3023文章
7820瀏覽量
166013
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論