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