摘 要:本文通過對可信軟件的現狀和發展趨勢研究,從可信軟件可靠性分析技術、軟件可信性評估技術、軟件可信性測試與驗證技術等方面詳細分析了軟件可信的國內外研究現狀和發展趨勢。
關鍵詞:可信軟件;分析;評估;測試
中圖分類號:TP311.52 文獻標識碼:A
1 引言
在當代的信息社會中,計算迅猛發展,隨著計算機的廣泛應用,計算機軟件已經滲透到國防建設與國民經濟的各個領域,并且承擔著舉足輕重的作用。軟件為人們提供了新的功能和更便利的操作,并且在信息基礎設施方面起著越來越重要的作用。現在人們的工作和生活是越來越依賴軟件。然而,軟件的設計現狀卻并不叫人十分滿意,人們越來越重視軟件的正確性、可靠性、安全性、完整性、可用性等這些可信性質,如何設計開發出高可信軟件越來越引起軟件使用和設計人員的重視。
2 可信軟件的定義
可信:當一個實體按給定目標實現時,其行為和結果是附和預期的。
可信軟件:如果軟件服務效果總是符合用戶的預期目標,即使在軟件運行過程中有一些特殊情況出現,這樣的軟件就叫做可信軟件。
這里所說的特殊情況包括:
(1)硬件環境(計算機、網絡)發生故障
(2)底層軟件(操作系統、數據庫)出現錯誤
(3)其他軟件(病毒軟件、流氓軟件)對其產生影響
(4)出現有意(攻擊)、無意(誤操作)的錯誤操作
3 軟件可信與軟件質量的區別
軟件可信要滿足的功能有下面幾個方面:
可用功能:正確、不少、不多
可靠性(容錯):高
安全性(機密性、完整性):高
響應時間(從輸入到輸出):小
維護費用(監測、演化):小
軟件質量就是“所開發出的軟件與需求分析中的客戶的需求相一致的程度”。具體地說,軟件質量是設計出來的軟件符合需求分析中明確說明的功能和性能需求、文檔中明確描述的開發標準,以及所有專業開發的軟件都應具有的隱含特征的程度。影響軟件質量的主要因素,這些因素是從管理角度對軟件質量的度量。[1]
對軟件可信的定義比之軟件質量更強調用戶的感受,強調不易受攻擊性尤其是因內在缺陷導致的;結果是可預期的;保證的計劃的和系統的過程和產品依照要求和標準程序。因此與強調功能完備無二義性的軟件測試評估是有區別的。
4 國內外軟件可信性技術研究現狀及發展趨勢
本節從軟件可靠性分析技術、軟件可信性評估技術、軟件可信性測試與驗證技術等方面分析軟件可信的國內外研究現狀和發展趨勢。
4.1 軟件可信性分析技術
在SFMEA研究方面,SFMEA(System Failure Mode and Effects Analysis),國內常稱SFMEA為“軟件失效模式和影響分析”,國外是在1979年提出了SFMEA的概念。在此后并沒有引起足夠的重視和大量的研究,近10年來,SFMEA的研究和應用才有逐步增多的趨勢,并且大多都集中在嵌入式軟件方面。在一些關鍵安全領域進行了相應的應用,如:醫療儀器、環境監測、軍用產品、電子行業、汽車行業、航空領域等。
SFMEA的工作原理是利用“預想”和“回想”的方式對軟件系統的各個組成部分中存在的和潛在的失效模式進行“窮舉”測試,以識別出失效位置及原因,并逐一進行分析和研究故障模式所造成的影響,給出預防和改進措施,以便于技術人員對系統進行優化改進。總之,SFMEA是一種定性的邏輯推理方法。
在SFMEA方面,雖然能用計算機輔助進行一些數據收集、數據存儲和一些簡單的數學計算,但是很多的分析工作還需人工完成。要想加強分析工作,還要在SFMEA的算法上進行更深入細致的研究。尤其對失效模式和失效影響推理技術這些方面進行更深入的探討。國內外在這方面的研究已經展開,在數理仿真技術、專家系統和因果推理方法等技術方面都有了初步的研究。在今后的研究中,我們要加大在SFTA的計算機輔助方法、開發相應的SFTA輔助工具方面的研究,提高SFTA的分析效率。對于嵌入式軟件可靠性分析方面,尚未出現較為完整、成熟的可靠性分析方法。這也是未來軟件可信性分析技術研究的一個重要的研究方向和發展趨勢。[2]
4.2 軟件可信性評估技術
目前,國內外關于軟件可信性評估方法還處于研究階段,成熟的軟件可信性評估方法幾乎沒有。但是對相關領域進行分析總結,可以看出軟件可信性評估發展趨勢有以下幾個方面:
(1)定性與定量相結合的綜合評估方法
目前國內外已經有人提出了這種綜合評估方法的想法和思路,但是研究還只局限在理論研究階段。如何建立軟件可信性評估體系,如何進行定性評估操作,如何準確有效進行定性評估等具體實施方案的研究還行少。
(2)基于灰盒測試的軟件可信性評估方法
灰盒測試方法是指結合白盒測試和黑盒測試得到的綜合測試方法。白盒測試是分析程序的內部結構,對其內部結構和代碼進行測試。黑盒測試不考慮程序的內部結構,只考慮其外部功能是否符合需求規格說明書的要求。這兩類方法各有側重,不能簡單用一種方法完全取代另一種方法,但兩者又各有缺點,所以只有將兩者有效結合,即形成“灰盒測試”,才能使兩者有效結合,各取所長,使測試效果更加有效完善。[3]
(3)基于證據的可信軟件過程評估方法
基于證據的可信軟件過程評估方法(EB-TSPAM),EB-TSPAM方法以TPMF為支撐和保障手段,以通過軟件過程可信度量模型度量得到的可信性度量數據為輸入,在可信證據模型的支持下,通過特定的算法將證據數據轉換為可直接用于軟件過程可信性評估的評估證據,并最終基于評估證據對軟件過程進行可信性評估。[4]
目前國內外對于軟件可信性評估技術還處在研究階段,有的還僅僅停留在理論研究階段,能夠真正用來驗證軟件可信性評估技術的實施方案幾乎還沒有。但是軟件可信性評估技術的研究是軟件可信性研究領域的一個重要發展趨勢。
4.3 軟件可靠性測試與驗證技術
可信軟件測試是指在軟件運行時為發現軟件中的錯誤而執行的一系列操作,目的是為了保證軟件的可信性。軟件測試的方法目前已經有很多種,使用最廣泛的軟件測試方法是錯誤注入(Fault Injection)測試,根據注入錯誤類型不同又分為很多種形式。主要有以下幾種形式:
(1)基于硬件故障的注入:數字電路的管腳線故障注入、設備故障注入、通訊故障注入等。
(2)基于軟件故障的注入:基于軟件高級故障注入、內存、CPU、I/O故障注入等。
(3)基于防真故障的注入:用不同數據測試不同環境下的軟件可信性。
因為軟件的運行是動態的,所以很難用靜態的測試方法完全有效的對軟件可信性進行測試,可信軟件的動態測試越來越引起人們的關注和重視。動態測試又分為隨機測試和選擇性測試兩大類。隨機測試根據軟件輸入數據的概率分布,隨機選擇測試數據,這種方式的缺點是工作量大且有盲目性。選擇性測試是有針對性選擇測試數據。這種方法缺點是測試不夠全面,沒有考慮中間結果,導致測試效率不高。動態測試是可信軟件測試中最重要的一部分,但又是難度最大的一種方法,其是軟件測試未來發展的一個趨勢。[5]
5 結束語
本文結合可信軟件的特點,從軟件可靠性分析技術、軟件可信性評估技術、軟件可信性測試與驗證技術等方面分析軟件可信的國內外研究現狀和發展趨勢,因為當今是信息社會,軟件在信息基礎設施中的作用越來越重要,而信息基礎設施與人們生活息息相關,所以這就要求我們在軟件系統開發和運行過程中一定要重視軟件的可信性,這是當今軟件行業乃至整個社會都在關注的一個課題。
參考文獻
[1] 阮鐮,陸民燕.軟件可靠性工程的研究現狀和發展趨勢[J].中
國航空學會2005年學術年會論文,2005:3-5.
[2] 王環環,詹永照,陳錦富.可信軟件分析與測試研究進展[J].計
算機應用研究,2011(7):34-35.
[3] 陳楠,等.可執行可信軟件安全性分析技術研究[J].計算機工
程設計,2010(12):23-25.
[4] 萬亞東,朱懷宏,李波.軟件架構與可信軟件開發[J].江蘇科技
信息,2010(2):40-43.
[5] 陳錦富,盧炎生,謝曉東.一種采用接口錯誤注入的構件安全
性測試方法[J].小型微型計算機系統,2010,31(6):1090-1096.
作者簡介:
劉俊麗(1972-),女,碩士,副教授.研究領域:系統安全、軟件
工程.
陳雙喜(1980-),男,碩士,講師.研究領域:XMPP、SBN.