我們正處于安全關(guān)鍵軟件的成本危機(jī)中。現(xiàn)在需要的增加的功能已經(jīng)超出了支付其開(kāi)發(fā)費(fèi)用的能力。例如, 波音 787 計(jì)劃需要 650 萬(wàn)行代碼,設(shè)計(jì)、開(kāi)發(fā)和測(cè)試花費(fèi)了 40 億美元。
主要安全關(guān)鍵項(xiàng)目的趨勢(shì)顯示總成本呈指數(shù)級(jí)增長(zhǎng),軟件在年度開(kāi)發(fā)總預(yù)算中占較大比例。使用以前項(xiàng)目中使用的相同技術(shù),下一個(gè)大型航空航天項(xiàng)目可能無(wú)法負(fù)擔(dān)。所以,我們能做些什么?
安全認(rèn)證以及所需的測(cè)試和驗(yàn)證是軟件開(kāi)發(fā)預(yù)算的很大一部分。在開(kāi)發(fā)生命周期的早期開(kāi)始軟件測(cè)試,同時(shí)利用自動(dòng)化在成本、風(fēng)險(xiǎn)和進(jìn)度方面帶來(lái)了巨大的收益,如圖 1 所示。
【圖1 | 商業(yè)航空項(xiàng)目中每行代碼的軟件開(kāi)發(fā)成本]
創(chuàng)建和發(fā)現(xiàn)錯(cuò)誤的位置以及成本影響
不出所料,大多數(shù)缺陷都是在項(xiàng)目開(kāi)始時(shí)引入的,甚至在編寫(xiě)第一行代碼之前。大多數(shù)錯(cuò)誤是在測(cè)試過(guò)程中發(fā)現(xiàn)并修復(fù)的,但很大一部分(高達(dá) 20%)是在產(chǎn)品發(fā)貨后的操作過(guò)程中發(fā)現(xiàn)的。在經(jīng)過(guò)認(rèn)證的系統(tǒng)中,這要么意味著極其昂貴的修復(fù)-測(cè)試-重新認(rèn)證周期,要么意味著針對(duì)問(wèn)題的操作員解決方法(圖 2)。
【圖2 | 在不同開(kāi)發(fā)階段引入和檢測(cè)到的缺陷百分比]
在項(xiàng)目的整個(gè)過(guò)程中,發(fā)現(xiàn)和修復(fù)缺陷的成本會(huì)成倍增加。最壞的情況是在產(chǎn)品交付給客戶后修復(fù)缺陷。部署后的缺陷修復(fù)成本是保守的,不包括對(duì)您的品牌造成的損害和現(xiàn)場(chǎng)安全事故的責(zé)任(圖 3)。顯然,目標(biāo)是將檢測(cè)到并修復(fù)的缺陷移到生命周期的早期——換句話說(shuō),“左移”。此外,希望減少傳遞給客戶的缺陷數(shù)量(每個(gè)領(lǐng)域的現(xiàn)實(shí))。
【圖3 | 在每個(gè)開(kāi)發(fā)階段查找和修復(fù)錯(cuò)誤的相對(duì)成本。在需求和設(shè)計(jì)期間是基線 (1x) 和修復(fù)缺陷成本最低的地方。]
測(cè)試自動(dòng)化在左移中的作用
安全關(guān)鍵軟件行業(yè)認(rèn)識(shí)到需要改變做事的方式。太多的項(xiàng)目試圖重新發(fā)明輪子,而認(rèn)證新軟件既耗時(shí)又昂貴。
新產(chǎn)品的連接性和功能性的增長(zhǎng)意味著方法需要改變。任何安全關(guān)鍵項(xiàng)目的很大一部分都是測(cè)試,而自動(dòng)化對(duì)于實(shí)現(xiàn)安全、安保和質(zhì)量目標(biāo)是絕對(duì)必要的。以下是測(cè)試自動(dòng)化工具如何支持新的軟件開(kāi)發(fā)方法并提高測(cè)試和文檔生產(chǎn)力的示例:
支持敏捷和迭代開(kāi)發(fā)方法: 了解瀑布方法的問(wèn)題,許多團(tuán)隊(duì)使用更現(xiàn)代的開(kāi)發(fā)方法來(lái)提高質(zhì)量和安全性。測(cè)試自動(dòng)化是任何迭代開(kāi)發(fā)方法的重要組成部分,因?yàn)闇y(cè)試套件在模塊、組件等的每個(gè)新迭代上運(yùn)行。測(cè)試自動(dòng)化通過(guò)可重復(fù)的自動(dòng)化測(cè)試支持這些方法,為每個(gè)測(cè)試提供不同級(jí)別的報(bào)告,但也可以累積結(jié)果隨著時(shí)間的推移。動(dòng)態(tài)分析工具對(duì)于檢測(cè)難以檢測(cè)的運(yùn)行時(shí)錯(cuò)誤至關(guān)重要,而靜態(tài)分析在測(cè)試開(kāi)始前檢測(cè)缺陷方面起著重要作用。
支持軟件檢查: 檢查是在開(kāi)發(fā)生命周期早期消除缺陷的良好實(shí)踐。檢查意味著審查所有內(nèi)容,而不僅僅是源代碼。例如,檢查需求和設(shè)計(jì)對(duì)于防止系統(tǒng)中的主要錯(cuò)誤來(lái)源至關(guān)重要(再次圖 2)。許多錯(cuò)誤是從字面上設(shè)計(jì)到系統(tǒng)中的。工具在這個(gè)階段發(fā)揮的作用較小,但確實(shí)提高了代碼審查的有效性。自動(dòng)化單元測(cè)試、動(dòng)態(tài)錯(cuò)誤檢測(cè)和靜態(tài)分析在項(xiàng)目的早期編碼階段提供了極大改進(jìn)的錯(cuò)誤檢測(cè)。自動(dòng)化測(cè)試的結(jié)果可以在代碼審查中呈現(xiàn),從而減少對(duì)手動(dòng)錯(cuò)誤檢測(cè)的依賴,并留出更多時(shí)間來(lái)檢測(cè)不正確的需求和設(shè)計(jì)決策。
提高測(cè)試效率: 手動(dòng)測(cè)試乏味且可重復(fù)性較差。結(jié)果收集可能是臨時(shí)的,盡管結(jié)果“正確”,但仍可能遺漏錯(cuò)誤。實(shí)現(xiàn)所需的代碼覆蓋率,這取決于安全標(biāo)準(zhǔn)和項(xiàng)目的關(guān)鍵性,很難跟蹤。測(cè)試自動(dòng)化不僅減少了測(cè)試的乏味和可重復(fù)性,而且高級(jí)測(cè)試工具的報(bào)告功能創(chuàng)建了有關(guān)項(xiàng)目狀態(tài)的重要管理信息。添加動(dòng)態(tài)分析(在代碼運(yùn)行時(shí)分析代碼(以檢測(cè)棘手的運(yùn)行時(shí)錯(cuò)誤))和靜態(tài)分析(在代碼運(yùn)行之前分析代碼)增加了測(cè)試工具的錯(cuò)誤檢測(cè)能力。
自動(dòng)化編碼標(biāo)準(zhǔn)合規(guī)性: 許多安全關(guān)鍵項(xiàng)目需要源代碼標(biāo)準(zhǔn)。例如,MISRA 在汽車(chē)軟件中很常見(jiàn),但已在其他行業(yè)中獲得認(rèn)可。一些標(biāo)準(zhǔn)要求代碼符合滿足特定目標(biāo)的公司標(biāo)準(zhǔn)。在每種情況下,手動(dòng)強(qiáng)制執(zhí)行代碼合規(guī)性都是乏味且容易出錯(cuò)的。靜態(tài)分析工具可以強(qiáng)制執(zhí)行合規(guī)性,高級(jí)工具通過(guò)檢測(cè)超出格式違規(guī)的錯(cuò)誤更進(jìn)一步。
自動(dòng)化認(rèn)證文檔: 實(shí)現(xiàn)軟件安全認(rèn)證的大部分工作量是記錄流程、驗(yàn)證和驗(yàn)證。測(cè)試自動(dòng)化顯著降低了記錄測(cè)試結(jié)果和覆蓋分析的成本。
加速第三方軟件的重用: 提高生產(chǎn)力的一個(gè)關(guān)鍵策略是軟件重用。理想情況下,可以使用已經(jīng)過(guò)認(rèn)證的組件來(lái)降低這些子單元的開(kāi)發(fā)成本。項(xiàng)目需要使用 COTS(現(xiàn)成的商業(yè))軟件以及可能的開(kāi)源和其他源代碼。使用靜態(tài)和動(dòng)態(tài)分析工具自動(dòng)評(píng)估該軟件可降低使用這些組件的風(fēng)險(xiǎn)。
提高質(zhì)量、安全性和保障性: 即使是嚴(yán)格的測(cè)試方案也可能遺漏嚴(yán)重錯(cuò)誤。例如,僅代碼覆蓋率不足以確保在安全攻擊或多線程代碼情況下的正確行為。靜態(tài)分析工具可以在不運(yùn)行特定測(cè)試的情況下檢測(cè)源代碼中的錯(cuò)誤,并且可以發(fā)現(xiàn)單元或系統(tǒng)測(cè)試中難以發(fā)現(xiàn)的安全漏洞等錯(cuò)誤。動(dòng)態(tài)分析工具可以在測(cè)試期間檢測(cè)運(yùn)行代碼中可能反映在測(cè)試結(jié)果中的錯(cuò)誤(例如,緩慢的內(nèi)存泄漏)。系統(tǒng)測(cè)試期間的模糊測(cè)試和滲透測(cè)試可以發(fā)現(xiàn)在正常操作條件下遺漏的錯(cuò)誤。總體而言,最先進(jìn)的工具發(fā)現(xiàn)的額外缺陷和安全漏洞有助于降低成本、風(fēng)險(xiǎn)以及使其投入生產(chǎn)的 20% 左右的許多錯(cuò)誤。
左移有什么影響?
很明顯,必須采取一些措施來(lái)解決圖 2 中清楚顯示的問(wèn)題。在生命周期的開(kāi)始,引入了太多缺陷并且未被發(fā)現(xiàn),而當(dāng)產(chǎn)品交到客戶手中時(shí),產(chǎn)品中留下了太多缺陷。 采用新的開(kāi)發(fā)方法、重用組件、利用 COTS 和開(kāi)源以及工具自動(dòng)化都是提高開(kāi)發(fā)效率的關(guān)鍵步驟。
【圖4 | 該圖顯示了改進(jìn)的開(kāi)發(fā)過(guò)程,該過(guò)程在生命周期的早期轉(zhuǎn)移了對(duì)錯(cuò)誤和安全漏洞的檢測(cè)。]
從圖 3 中我們知道,每個(gè)開(kāi)發(fā)階段的成本都會(huì)顯著增加。圖 5 顯示了修復(fù)傳統(tǒng)方法與圖 4 中所示方法的缺陷的成本比較。更早發(fā)現(xiàn)和修復(fù)錯(cuò)誤,不出所料,成本低于稍后修復(fù)它們。在此處介紹的情況下,總體成本差異約為 40%,有利于左移方法。
[圖 5. 該圖顯示了修復(fù)傳統(tǒng)方法與左移方法中的錯(cuò)誤的相對(duì)成本。即使總?cè)毕輸?shù)量相同,早期檢測(cè)也會(huì)顯著降低成本。]
認(rèn)證工具鏈和資格協(xié)助的重要性
在安全關(guān)鍵項(xiàng)目中使用自動(dòng)化工具需要對(duì)工具本身的信任。產(chǎn)品制造商有責(zé)任確信用于創(chuàng)建軟件的流程和工具符合標(biāo)準(zhǔn)要求。工具供應(yīng)商可以通過(guò)在出售給制造商之前獲得安全標(biāo)準(zhǔn)機(jī)構(gòu)認(rèn)證的工具來(lái)提供幫助,或者在無(wú)法進(jìn)行此類(lèi)預(yù)認(rèn)證的情況下,提供資格援助。然后,他們可以在自己的認(rèn)證提交中使用工具供應(yīng)商的認(rèn)證證據(jù),并減少所需的工作量。例如, Parasoft C/C++test 已通過(guò) TüV SüD 認(rèn)證,符合 IEC 61508 和 ISO 26262 標(biāo)準(zhǔn)的安全相關(guān)軟件開(kāi)發(fā)資格。
在某些軟件安全標(biāo)準(zhǔn)中,例如 DO-178B 和 DO-178C,認(rèn)證是在系統(tǒng)級(jí)別完成的,個(gè)別工具和軟件沒(méi)有獨(dú)立認(rèn)證。在這些情況下,工具供應(yīng)商會(huì)在文檔和專業(yè)服務(wù)方面提供鑒定工具包和幫助,從而大大降低鑒定用于項(xiàng)目的工具所需的成本和工作量。
審核編輯:郭婷
-
自動(dòng)化
+關(guān)注
關(guān)注
29文章
5519瀏覽量
79112 -
代碼
+關(guān)注
關(guān)注
30文章
4752瀏覽量
68360 -
線程
+關(guān)注
關(guān)注
0文章
504瀏覽量
19651
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論