當(dāng)考慮安全和安全關(guān)鍵風(fēng)險(xiǎn)時(shí),遺留代碼重用的成本和便利性優(yōu)勢可能會(huì)降低或復(fù)雜化。如果遺留代碼被證明在功能上正確且在操作上可行,則其接受是基于對(duì)預(yù)期會(huì)發(fā)生什么的假設(shè)。但是,通常會(huì)導(dǎo)致故障的是意外情況,而結(jié)構(gòu)測試提供了一種緩解意外情況的方法。
今天,對(duì)遺留軟件的“構(gòu)建”接受正在受到更多的審查。這是由于在軍事和商業(yè)系統(tǒng)中,越來越強(qiáng)調(diào)安保和安全評(píng)價(jià)標(biāo)準(zhǔn)。關(guān)于認(rèn)證的軟件方面,必須提供可重復(fù)驗(yàn)證過程的證據(jù)和支持該過程的分析。結(jié)構(gòu)測試是驗(yàn)證此證據(jù)的一種機(jī)制。
雖然曾經(jīng)被視為不必要的成本負(fù)擔(dān),但嚴(yán)格的、基于標(biāo)準(zhǔn)的開發(fā)和驗(yàn)證過程是全球嵌入式系統(tǒng)行業(yè)安全重要性的新興全球視角的結(jié)果。這種觀點(diǎn)的定義是與商業(yè)航空旅行、醫(yī)療設(shè)備產(chǎn)品部署、全球汽車產(chǎn)品開發(fā)標(biāo)準(zhǔn)化以及國防和安全等各種活動(dòng)相關(guān)的風(fēng)險(xiǎn)。在這些應(yīng)用程序中,與意外軟件和系統(tǒng)行為相關(guān)的責(zé)任、成本和任務(wù)影響被認(rèn)為是不可接受的。
作為美國聯(lián)邦航空局國際飛行軟件工作組的成員,該工作組正在制定下一版DO-178軟件標(biāo)準(zhǔn),我目睹了人們?cè)絹碓揭庾R(shí)到在飛行軟件系統(tǒng)中使用遺留軟件。工作組努力確保遺留代碼得到適當(dāng)?shù)墓芾砗万?yàn)證,并且它實(shí)際上不會(huì)成為“死”或無法訪問的代碼,在這種代碼中,它可能無意中被調(diào)用用于運(yùn)行時(shí)執(zhí)行,而無需事先進(jìn)行適當(dāng)?shù)臏y試。從歷史上看,死代碼被視為意外軟件行為的原因,并對(duì)飛行安全構(gòu)成重大風(fēng)險(xiǎn)。
隨著嵌入式系統(tǒng)中面向?qū)ο髴?yīng)用程序的出現(xiàn),使用C++、Java和Ada 2005等語言,工作組還意識(shí)到重用遺留代碼的可能性呈指數(shù)級(jí)增長。舊組件可以與新組件共享成員函數(shù),并且在運(yùn)行時(shí)執(zhí)行之前,這些共享函數(shù)的精確行為實(shí)際上不可見。在面向?qū)ο蟮南到y(tǒng)中,意外發(fā)生的可能性更高。
美國軍方也認(rèn)識(shí)到與意外軟件行為相關(guān)的風(fēng)險(xiǎn),特別是在安全漏洞的背景下。空軍研究實(shí)驗(yàn)室與國家安全局、國防部主要承包商、學(xué)術(shù)界和軟件供應(yīng)商合作,正在管理一個(gè)多獨(dú)立級(jí)別的安全/安全(MILS)計(jì)劃,將DO-178B與安全標(biāo)準(zhǔn)相結(jié)合。這包括共同標(biāo)準(zhǔn)和中央情報(bào)局局長指令6/3,保護(hù)信息系統(tǒng)中的敏感隔離信息。雖然MILS計(jì)劃不直接解決遺留代碼,但其許多目標(biāo)正在應(yīng)用于包含遺留軟件的新項(xiàng)目和部署。MILS 程序的軟件開發(fā)和驗(yàn)證指南主要來自 DO-178B,現(xiàn)在給軟件供應(yīng)商和系統(tǒng)集成商帶來了實(shí)施可重復(fù)驗(yàn)證流程和降低與意外軟件行為相關(guān)的風(fēng)險(xiǎn)的巨大挑戰(zhàn)。
鑒于與安全和安全關(guān)鍵型軟件相關(guān)的挑戰(zhàn),我們需要確定有關(guān)遺留代碼的最佳實(shí)踐,并提出一種維護(hù)和更新遺留代碼的方法。這些挑戰(zhàn)可以通過結(jié)構(gòu)測試來解決。結(jié)構(gòu)測試(有時(shí)稱為“軟件測試軟件”)提供了一個(gè)運(yùn)行時(shí)環(huán)境,在該環(huán)境中,自動(dòng)生成測試用例,以基于系統(tǒng)范圍的路徑級(jí)代碼分析來執(zhí)行軟件行為。盡管過去結(jié)構(gòu)測試因沒有明確驗(yàn)證功能正確性而受到批評(píng),但這種觀點(diǎn)沒有認(rèn)識(shí)到結(jié)構(gòu)測試的目標(biāo)是練習(xí)整個(gè)軟件結(jié)構(gòu),捕獲異常并測量結(jié)果代碼覆蓋率 - 而不是顯式測試軟件功能。
除非正確分析遺留軟件的“竣工”架構(gòu),否則無法預(yù)測更改的影響,也無法有效地應(yīng)用更改。幸運(yùn)的是,結(jié)構(gòu)測試固有的靜態(tài)分析也可以生成架構(gòu)的圖形表示,包括調(diào)用樹圖、控制流圖、數(shù)據(jù)耦合表和設(shè)置/使用表。這些可視化對(duì)于處理來自多個(gè)來源的代碼(如建模工具、手動(dòng)代碼和軟件庫)的工程師特別有用。結(jié)構(gòu)測試靜態(tài)分析維度的另一個(gè)副產(chǎn)品是將編碼規(guī)則自動(dòng)應(yīng)用于源代碼,確保舊代碼和新代碼之間的實(shí)現(xiàn)一致性。
測試技術(shù)的進(jìn)步催生了新一代工具,而不僅僅是另一種工具。這些進(jìn)步恰逢其時(shí),以滿足國際軟件標(biāo)準(zhǔn)化、嵌入式軟件市場的全球化以及安保和安全關(guān)鍵驗(yàn)證標(biāo)準(zhǔn)的日益重視的需求?,F(xiàn)在,傳統(tǒng)軟件用戶可以排除意外的軟件行為,并幫助確保我們的安全。
審核編輯:郭婷
-
JAVA
+關(guān)注
關(guān)注
19文章
2973瀏覽量
104905 -
C++
+關(guān)注
關(guān)注
22文章
2113瀏覽量
73742 -
代碼
+關(guān)注
關(guān)注
30文章
4808瀏覽量
68814
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論