田立軍 丁 楠
(1.中國人民解放軍91404部隊 秦皇島 066001)(2.河北建材職業技術學院 秦皇島 066001)
軟件評估的實質是對軟件質量的度量與評價。對軟件質量評估的定義是“為了確定某一特定的軟件模塊、軟件包或軟件產品是否驗收合格或發布而把特定的評估準則應用到該軟件模塊、軟件包或軟件產品上去的活動”[1]。定義中提到的評估準則,包括了評估方法和指標體系,即如何處理獲得的測試數據與如何應用準則到被評估軟件上。
軟件測試所得到的數據經過處理以后,可以用來作為評估軟件系統是否滿足用戶需求的依據。軟件質量評價特性主要有[2]:功能性、可靠性、易用性、效率性、可維護性、可移植性。其中每一個質量特性都分別與若干子特性相對應。
對于規定任務的裝備應用軟件,其完成任務的程度是可以測試并度量的,對裝備應用軟件的測試和評估,主要是考核在各種輸入條件下,被測軟件的行為及其滿足需求的程度[3]。
按照統計理論,對裝備軟件在接近實戰態勢下進行試驗是對試驗函數的一種采樣[4]。而實驗室仿真測試通過計算機模擬產生試驗環境參數和目標參數,同樣也是試驗函數的一種采樣方式。顯然,當仿真測試較充分時,就可以得到試驗函數的估計,這種估計同樣可以揭示被試軟件的功能、性能和可靠性等統計指標。
選擇合適的指標體系并使其量化是軟件測試與評估的關鍵。評估指標可以分為定性指標和定量指標兩種。指標的確定一般是采用自頂向下的方法逐層分解[5],并且需要在動態過程中反復綜合平衡。
在進行裝備軟件的測試與評估時,主要側重于功能性、可靠性、易用性和效率特性等幾個方面。在評價活動的具體實施中,把軟件的研制任務書等作為主要依據,采用自頂向下逐層分解的方法,并參照有關國家標準和軍用標準進行[6]。
功能性是裝備軟件最重要的質量特性之一,可以細化成完備性和不確性。對裝備軟件的功能評價主要采用定性評價方法。
1)完備性。完備性是與軟件功能完整、齊全有關的軟件屬性。如果軟件實際完成的功能少于或不符合研制任務書所規定的明確或隱含的那些功能,則不能說該軟件的功能是完備的[7]。
2)正確性。正確性是與能否得到正確或相符的結果或效果有關的軟件屬性。軟件的正確性在很大程度上與軟件模塊的工程模型(直接影響輔助計算的精度與輔助決策方案的優劣)和軟件編制人員的編程水平有關。
對這兩個子特性的評價依據主要是裝備軟件功能性測試的結果,評價標準則是軟件實際運行中所表現的功能與規定功能的符合程度。在軟件的研制任務書中,明確規定了該軟件應該完成的功能,進行驗收測試的裝備軟件就應該具備這些明確或隱含的功能。
目前,對于軟件的功能性測試主要采用解答標準測試用例的辦法。即針對每種功能設計若干典型測試用例,軟件測試過程中運行測試用例,然后將得到的結果與已知標準答案進行比較。所以,測試用例集的典型性和權威性是功能性評價的關鍵。
可靠性可以細化為成熟性、穩定性、易恢復性等[8]。對于軟件的可靠性評價主要采用定量評價方法。即選擇合適的可靠性度量元(可靠性參數),然后分析可靠性數據而得到參數具體值,最后進行評價。經過對軟件由可靠性細化分解并參照研制任務書,可以得到軟件的可靠性性度量元(可靠性參數)。
1)可用度。可用度指軟件運行后在任意一個隨機時刻需要執行規定任務或完成規定功能時,軟件處于可使用狀態的概率。可用度是對應用軟件可靠性的綜合(即綜合各種運行環境以及完成各種任務和功能)度量。通常可用度用A表示,其計算方法為
2)初期故障率。指軟件在初期故障期(一般以軟件交付給用戶后的一個月內為初期故障期)內單位時間的故障數。一般以每100小時的故障數為單位。可以用它來評價交付使用的軟件質量與預測什么時候軟件可靠性基本穩定。初期故障率的大小取決于軟件設計水平、檢查項目數、軟件規模、軟件調試徹底與否等因素。
3)偶然故除率。指軟件在偶然故障期(一般以軟件企付給用戶后的四個月以后為偶然故障期)內單位時間的故障數。一般以每1000小時的故障數為單位,它反映了軟件處于穩定狀態下的質量。
4)平均故障間隔時間(MTBF)。指軟件在相繼兩次失效之間正常工作的平均統計時間。在實際使用時MTBF通常是指當n很大時,系統第n決失效與第n+1次失效之間的平均統計時間。
國外軟件的MTBF大體在1000h左右。對于高可靠性的軍用裝備軟件,則要求在1000h~10000h之間。
5)缺陷密度(FD)。指軟件單位源代碼中隱藏的缺陷數量。通常以每千行無注解源代碼為一個單位。一般情況下,可以根據同類軟件系統的早期版本估計FD的具體值。如果沒有早期版本信息,也可以按照通常的統計結果來估計。典型的統計表明,在開發階段平均每千行源代碼有50個~60個缺陷,交付后平均每千行源代碼有15個-18個缺陷。
6)平均失效恢復時間(MTTR)。失效恢復時間為排除故障或系統重新啟動所用的時間而不是對軟件本身進行修改的時間(如嵌入式軟件,因軟件己經固化在機器內,修改軟件勢必涉及重新固化問題,而這個過程的時間是無法確定的)。
易用性可以細化為易理解性、易學習性和易操作性等。這三個特性主要是針對用戶而言的。對裝備軟件的易用性評價主要采用定性評價方法。
1)易理解性。易理解性是與用戶認識軟件的邏輯概念及其應用范圍所花的努力有關的軟件屬性。該特性要求裝備軟件研制過程中形成的所有文檔語言簡練、前后一致、易于理解以及語句無歧義。
2)易學習性。易學習性是與用戶為學習軟件應用(例如運行控制、輸入、輸出)所花的努力有關的軟件屬性。該特性要求研制方提供的用戶文檔(主要是《計算機系統操作員手冊》、《軟件用戶手冊》和《軟件程序員手冊》)內容詳細、結構清晰以及語言準確。
3)易操作性。易操作性是與用戶為操作和運行控制所花的努力有關的軟件屬性。該特性要求戰術應用軟件的人機界面友好、界面設計科學合理以及操作簡單等。
效率特性可以細化成時間特性和資源特性[9]。對軟件的效率特性評價采用定量方法。
1)輸出結果更新周期。輸出結果更新周期是裝備軟件相鄰兩次輸出結果的間隔時間。
2)處理時間。處理時間是裝備軟件完成某項功能所用的處理時間(注意:不應包含人機交互的時間)。處理時間越短則對指揮員做出正確決策越有利,抓住戰機的概率越大。
3)吞吐率。吞吐率是單位時間軟件的信息處理能力(即各種目標的處理批數)。未來的戰場態勢復雜、信息眾多,裝備軟件必須具有處理海量數據的能力[10]。吞吐率就是體現該能力的參數。隨著現代戰爭中信息源的不斷增多,要求裝備軟件的吞吐率應至少達到數百批。
4)代碼規模。代碼規模是軟件源程序的行數(不包括注釋)屬于軟件的靜態屬性。軟件的代碼規模過大不僅要占用過多的硬盤存儲空間,而且顯得程序不簡潔、結構不清晰,容易存在缺陷。
因為這些參數屬于軟件的內部表現,所以需要用專門的測試工具和特殊的途徑才可以獲得。將測試數據與研制任務書中的指標進行比較,得到的結果可以作為效率特性評價的根據[11]。
本文運用框圖評估方法求得軟件的任務可靠度,應用該方法描述了軟件在執行某單項任務情況下的可靠性。
應用框圖評估方法的前提:
1)已經得到了各個功能模塊的可靠性參數(主要是失效率λ);
2)各個功能板塊的壽命為指數分布,即滿足公式:
根據軟件壽命的指數分布規律,在按照軟件運行剖面做隨機輸入(或實際使用)時,如果軟件不作更改而且是無容錯的,則軟件的壽命為指數分布。由此可知軟件的測試與評估恰好滿足條件[12]。
在計算軟件的可靠度之前,還需要進行參數變換,將測試的數據轉換為與可靠度計算有關的數據。在軟件的單元測試中能夠得到模塊可靠性參數MTTF(平均失效的時間,其度量方法即GJB451-90《可靠性維修性術語》中所述的“在規定的條件下和規定的時間內,產品的壽命單位數與故障總次數之比”,MTTF常記作θ),這時要將MTTF轉化為模塊的失效率λ(λ=1/θ),進而得到所有功能模塊的可靠度函數:
這樣,根據等效模型,最終可以計算出軟件的可靠度。
根據某系統試驗軟件的組成,可以將該軟件分解為偵察、干擾、告警、通信、指揮決策六個模塊。該軟件執行一次任務(有源干擾)的基本流程見圖1。

圖1 有源干擾程序控制基本流程圖
軟件在運行中調用了偵察、有源干擾、指揮3個模塊,其可靠性模型屬于簡單串聯模型,可靠度計算為

假設在測試過程中該軟件同時在50臺目標機中運行,運行環境滿足規定條件,全部運行該的測試用例,為避免重復,每個測試用例對頻率、脈寬、極化方式等參數設定均不同。每天開機時間為20h,連續運行10天,則累計測試時間最多可以達到10000h。對于每一個失效不采取修改措施記錄下這10000h內的失效數據。
設在軟件的單元測試中得到的測試數據如表1。

表1 模塊單元測試數據
相應的平均失效前時間MTTF、失效率λi和可靠度Ri(t)分別如表2。

表2 模塊單元測試計算結果
于是得到該軟件執行干擾任務的可靠度為

國內可靠性的評估工作主要是從20世紀80年代開始興起,軟件可靠性的度量在軟件可靠性的建模和評估中起到了十分重要的作用,但是在軟件的可靠性評估方面,國內還未形成統一的標準和算法。本文通過框圖評估的方法得到的軟件可靠度只是一個定量的模型,基于軟件可靠性的分析和度量還需要進行更多系統性的研究。