沈曉美,吳立金,詹紅燕,韓新宇,唐龍利
(中國船舶工業(yè)綜合技術經濟研究院,北京 100081)
在現(xiàn)代化戰(zhàn)爭中,武器在實戰(zhàn)過程的強弱與軟件可靠性直接關聯(lián)。艦船裝備軟件具備接口數據類型多、復雜網絡環(huán)境等特殊性,為軟件可靠性驗證帶來挑戰(zhàn)。目前,艦船裝備軟件的可靠性驗證和評價主要分為定性、定量兩個方面。
軟件可靠性定性要求的驗證研究多以失效模式為基礎,形成定性檢查單,設計測試用例驗證軟件是否滿足要求??煽啃远ㄐ砸蟮南嚓P研究多從異常測試數據、故障注入角度出發(fā),缺乏有效的手段。
軟件可靠性定量指標主要通過可靠性測試、可靠性評估完成驗證。目前軟件可靠性評價相關標準只有《GJB/在161-2012軍用軟件可靠性評估指南》,其中提出的可靠性模型用于軟件可靠性增長測試,不完全適用于軟件可靠性驗證測試??煽啃则炞C研究存在針對某些典型軟件的貝葉斯驗證優(yōu)化模型,對艦船裝備軟件不具備通用性。
該文提出了4種軟件可靠性驗證方案,明確測試結束方式及通過標準,通過軟件可靠性驗證測試結果對軟件可靠性進行評價,為艦船裝備軟件提供一種普適性軟件可靠性驗證與評價方法。
軟件可靠性是指在規(guī)定的條件下和規(guī)定的時間內,軟件不引起系統(tǒng)故障的能力/概率。
表1 軟件可靠性相關概念
軟件可靠性驗證技術主要從定性驗證、定量指標驗證兩個方面進行研究。
1.2.1 軟件可靠性定性驗證技術
軟件可靠性定性驗證是指根據軟件的缺陷信息設計可靠性測試用例,判斷軟件是否滿足任務書提出的接口容錯性要求、界面健壯性要求、數值邊界性要求以及可靠性措施等軟件可靠性定性要求是否滿足要求。
目前軟件可靠性定性驗證主要分為兩個研究方向:一是收集軟件的缺陷模式(如需求設計類缺陷、功能類缺陷、接口類缺陷、代碼類缺陷),從缺陷模式角度設計用例驗證軟件定性要求;二是研究不同故障注入的方式(如代碼變異算子、硬件故障等)驗證軟件健壯性等定性要求。
1.2.2 軟件可靠性定量驗證技術
軟件可靠性定量驗證是指利用軟件可靠性驗證測試結果對軟件的可靠性進行定量評價。
目前軟件可靠性定量驗證技術研究方向主要為軟件可靠性建模及其優(yōu)化,從可靠性驗證模型、剖面獲取模型、測試方法等方面進行深度研究。如針對某軟件貝葉斯可靠性評價模型、基于可靠度的測試方法、針對指標類型對不同可靠性模型優(yōu)化等?,F(xiàn)有軟件可靠性定量驗證研究方案對艦船裝備軟件不具有普適性。針對艦船裝備軟件交聯(lián)環(huán)境復雜、接口種類多信息量大等特性,研究對艦船裝備軟件具有普適性的可靠性驗證方案具有重要的實際意義。
本文提出了4種軟件可靠性驗證測試統(tǒng)計方案,具體驗證統(tǒng)計方案如圖1所示。
圖1 艦船裝備軟件可靠性驗證與評價方案
1)基于艦船裝備軟件測試數據進行軟件可靠性驗證測試,測試執(zhí)行過程從定時截尾方案、序貫測試方案、無失效運行方案、貝葉斯無失效測試方案進行。
2)軟件可靠性驗證方案選擇策略。根據驗證指標類型、可承受的最大測試時間、測試環(huán)境的預期壽命、可承受的最大失效數、該類型軟件的質量要求等因素選擇統(tǒng)計測試方案。
3)通過測試結果與統(tǒng)計測試方案中接收或拒收標準比較確定軟件可靠性測試是否合格。
定時截尾方案是指預先知道試驗持續(xù)時間,可以在試驗持續(xù)時間、使用方風險α和生產方風險β、檢驗上限θ0、檢驗下限θ1之間權衡,即對于給定的α、β、θ0、θ1,計算試驗持續(xù)時間和接收故障數r。
3.1.1 定時截尾方案及其抽樣特性
定時測試方案的MTBF的真值θ與接收概率P(θ)的關系,可用泊松公式表示為:
(1)
式中,r為方案接收時所對應的判決失效數;T為方案接收時所對應的判決總測試時間。
3.1.2 定時截尾方案使用步驟
1)根據合同要求得到θ0、θ1、α、β。并計算d=θ0/θ1;
2)根據上述參數查GJB 899中的表A.3和表A.4,得到相應的方案號。并從表中得到測試時間和判決失效數;
3)上述測試時間與θ1乘積為真實測試時間;
4)當實際測試時間T(小時)達到選定方案所對應的真實試驗時間時,若測試的軟件失效數小于拒收的判決失效時,則拒收;若測試所出現(xiàn)的軟件失效數小于或等于接收失效數,則作接收判決。
3.1.3 定時截尾方案的置信度
MTBF的估計步驟如下:
(2)
式中,T為設備總測試時間;r為軟件失效數。
3)計算出MTBF的置信下限θL和置信上限θU:
(3)
4)MTBF的驗證區(qū)間為:(θL,θU),(置信度C);
5) 若GJB 899中表A7的數據不足,可按下式計算出置信下限系數θL(C′,r)和置信上限系數θU(C′,r):
(4)
序貫試驗統(tǒng)計方案包含標準統(tǒng)計方案、短時高風險統(tǒng)計方案兩種。預期采用正常的生產方風險和使用方風險(10%~20%)時,應采用標準型統(tǒng)計方案。采用短時高風險統(tǒng)計方案,可以縮短試驗時間,但生產方和使用方均承擔較高風險。對于MTBF的真值較大或較小的產品,序貫試驗所需的總試驗時間差別較大,計劃費用和時間應以序貫截尾的時間為依據。
3.2.1 序貫測試方案及其抽樣特性
對于具有未知的MTBF值θ的指數型產品,在累計工作時間t內發(fā)生r次故障的概率為:
(5)
序貫試驗須證明θ至少不小于MTBF檢驗下限θ1。本文采用判決標準見GJB899圖A.1~圖A.8。
3.2.2 序貫測試方案使用步驟如下:
1)根據合同要求得到θ0、θ1、α、β。并計算d=θ0/θ1;
2)根據上述參數查GJB 899中的表A.1和表A.2,得到相應的方案號。并按照表中的“判決標準”得到相應的圖號;
3)根據得到的圖號查相應的“接收-拒收判決標準”,并將表中的“標準化判決時間”乘以θ1得到不同失效數下的拒收判決時間TR和接收判決時間TA;
4)將受試設備的實際總測試時間T(小時)、軟件失效數r逐次和判決值TA、TR進行比較。若T>=TA,則作出接收判決,停止測試;若T<=TR,則作出拒收判決,停止測試;若T介于兩判決值TA和TR之間,則繼續(xù)測試到下一個判決值時再比較,直到可以作出判決并停止測試時為止。
3.2.3 序貫測試方案MTBF置信限
序貫測試達到接收判決時,MTBF的置信區(qū)間或測試區(qū)間的置信度為C′的置信下限θ1和置信上限θ0按如式(6)計算:
θL=θL(C′,ti)θ1
θU=θU(C′,ti)θ1
(6)
式中,i為達到接收判決時的軟件失效數;C′=(1+C)/2;θL(C′,ti)為置信度為C′,軟件失效數為i時的置信下限系數,從GJB899表A5a中查出。θU(C′,ti)為置信度為C′,軟件失效數為i時的置信上限系數。從GJB899表A5b中查出。MTBF的雙邊保守置信區(qū)間或驗證區(qū)間則為:
(θL,θU),(置信度C)。
無失效方案主要用于對可靠性很高的軟件進行驗證測試,或對驗證測試已判為接收的軟件改錯后進行的無失效交付測試。該方案根據在給定的測試時間內執(zhí)行可靠性測試用例時軟件有無失效來進行接收/拒收判斷,即無失效時接收軟件,有失效時拒收軟件。
3.3.1 無失效測試方案及其抽樣特性
直接將失效數r=0代入雙風險公式:
T=-θ1lnβT=-θ0lnα
(7)
通??紤]使用方風險,則由第二式計算。β通常很小,則測試時間應比θ1稍大,若在此時間內軟件不失效,則接收,否則拒收。
在不同風險下的測試時間見表2。
表2 無失效方案
3.3.2 無失效測試方案的使用步驟
1)根據合同要求得到θ1、β;
2)根據上述參數查表2,從表中得到測試時間;
3)用該方案的測試時間乘以θ1得到真實的測試時間;
4)測試時當實際總測試時間T達到選定方案所對應的真實的試驗時間時,若測試中出現(xiàn)軟件失效,則作出拒收判決;若測試中沒出現(xiàn)軟件失效,則作出接收判決。
貝葉斯無失效測試方案是一種對失效率指標進行驗證的測試方案,其基本思想是:首先利用給定的軟件失效率指標λ0、置信度C以及軟件可靠性測試中的先驗信息來確定滿足可靠性指標要求所需的無失效驗證測試時間,并進行軟件可靠性驗證測試。若測試執(zhí)行時間超過T后,軟件沒有發(fā)生任何失效,則驗證測試通過,接收該軟件;否則驗證測試不通過,拒收該軟件。當開發(fā)方修改軟件失效所對應的缺陷后,想繼續(xù)進行驗證測試,則可以結合發(fā)生失效時的測試時間,重新計算此時所需要的無失效驗證測試時間,重復上述驗證測試過程,直至驗證測試結束。該驗證測試方法可以充分利用軟件失效的先驗信息,有效減少驗證測試的時間。
3.4.1 Bayesian測試方案及其抽樣特性
基于軟件失效率指標λ0,置信度C已是確定值。貝葉斯方法是指軟件失效率λ是一個隨機變量,軟件在時間區(qū)間(0,t]內失效次數x等于k的概率為隨機變量λ的條件概率。即軟件失效次數x服從參數為λt的泊松分布:
(8)
通過泊松分布的共軛分布為Gamma分布,得到失效率的先驗分布函數:
(9)
假定軟件持續(xù)運行時間為t,其間發(fā)生r次失效,則軟件失效率的后驗分布函數為:
h(λ|r,t,a,b)=Gamma(a+r,b+t)
(10)
根據式(8)和(9)可推導失效次數x的邊緣分布為:
(11)
m(x)的一、二階矩為:
(12)
(13)
通過式(12)和(13),可求出超參數a和b與軟件失效數邊緣分布的一階矩和二階矩之間的關系。
將軟件在可靠性增長測試階段的測試記錄表示為失效間隔時間序列T1,T2,…,Tn。因此,若已知軟件失效間隔時間序列的經驗樣本值,可以對a和b進行估計。
(14)
根據式(12)~(14),即可計算參數a和b的先驗估計值a0和b0,進而得到軟件失效率λ的先驗分布函數為:
(15)
確定軟件失效率λ的先驗分布后,即可以對軟件可靠性指標進行驗證。設給定的軟件可靠性指標為(λ0,C)。則滿足相應可靠性指標的軟件無失效驗證測試時間t1取滿足下式的t的最小值:
(16)
如果軟件在該驗證測試時間未發(fā)生失效,說明軟件已經達到規(guī)定可靠性指標,可接收該軟件;如果軟件在tf1時刻(tf1 (17) 持續(xù)該計算過程,即如果在此過程中已發(fā)生第j次失效,那么第j+1次無失效驗證測試時間tj+1取下式中t的最小值: (18) (19) 根據式(19)計算第j次軟件失效對應軟件所需要的總測試時間Ej+1,進而計算第j+1次無失效驗證測試的持續(xù)時間: (20) 依據式(19)計算總測試時間Ej+1是定值。由式(20)可知:前j次失效情況直接影響第j+1次無失效驗證測試時間tj+1的長短。 3.4.2 Bayesian測試方案步驟 1)給定軟件失效率指標λ0,置信度C; 2)利用式(12)~(14)對式(9)中的超參數a和b進行估算; 3)根據步驟1)和2)中得到的結果,首先利用式(16)計算第一次測試所需要的無失效驗證測試時間t1;然后再根據式(19)計算出軟件失效數j與對應的總測試時間Ej+1; 4)根據方案中規(guī)定的時間進行可靠性驗證測試,軟件連續(xù)執(zhí)行t1時間時,若沒有發(fā)生失效,表明軟件達到了規(guī)定可靠性指標,則接收軟件,轉步驟6);若在驗證測試過程中,出現(xiàn)失效,則表明軟件未達到規(guī)定的可靠性指標,拒收軟件,該次軟件可靠性驗證測試結束,轉步5); 5)若開發(fā)方修改了軟件失效對應缺陷,并要求重新進行軟件可靠性驗證測試,則結合新發(fā)現(xiàn)失效(設失效數為j)時已執(zhí)行測試時間,利用此時所對應總測試時間Ej+1計算此時所需要驗證測試持續(xù)時間tj+1,重復步驟4),否則轉步驟6); 6)驗證測試結束。 選擇統(tǒng)計測試方案時考慮因素包含驗證指標的類型、該類型軟件的質量要求、測試環(huán)境的預期壽命、可承受的最大失效數、可承受的最大測試時間、費用-時間的權衡、是否有先驗信息等。 根據上節(jié)4種軟件可靠性驗證方案,本文歸納軟件可靠性驗證統(tǒng)計方案選擇策略為: 1) 指標為MTBF/失效率的軟件,若要求提供MTBF驗證值,且有固定截止時間,則定時截尾測試方案優(yōu)先; 2) 若事先未規(guī)定可靠性驗證時間,僅希望盡早對MTBF作出接收或拒收判決時,可選擇序貫測試方案; 3) 軟件可靠性要求(MTBF)很高時,則無失效測試方案最佳; 4) 對于MTBF要求很高,且做過可靠性增長測試有先驗失效信息的軟件,則優(yōu)選貝葉斯測試方案以減少測試時間。 某監(jiān)測系統(tǒng)軟件,其規(guī)定的可靠性指標為(λ0,C)=(10-3,0.99)。在可靠性增長測試階段,其最后10組失效間隔時間Ti的值如表3所示。 表3 先驗樣本數據 h 由于示例軟件有先驗失效信息,對MTBF要求較高,故選用貝葉斯測試方案可靠性驗證測試。 1)該軟件給定的失效率指標為λ0=10-3,置信度C=0.99; 2)利用式(12)~(14)計算出式(9)中軟件失效率先驗分布Gamma函數的超參數估計值為a0=1,b0=952.4; 3)根據以上數據由(19)計算出所需的總驗證測試時間與軟件失效次數之間的對應關系如表4所示??芍斶M行第一次驗證測試時,所需要的無失效驗證測試持續(xù)時間為t1=3652.8小時; 表4 總驗證測試時間與失效次數之間的對應關系 h 4)根據方案規(guī)定的時間進行軟件可靠性驗證測試,軟件在時刻tf1=2000小時發(fā)生失效,則軟件沒有達到規(guī)定的可靠性指標,拒收軟件。 5)開發(fā)方排除了相應軟件缺陷,要求進行第二次驗證測試,則所需要的無失效測試運行時間為t2=5685.9-tf1=3685.9小時。軟件在第二次驗證測試時,在3685.9小時可靠性驗證測試中沒有發(fā)生失效,則該軟件可靠性指標達到要求,接收該軟件。 6)驗證測試結束。 本文針對艦船裝備軟件可靠性驗證周期長、效率低、缺少有效手段和依據等現(xiàn)狀,提出了定時截尾方案、序貫測試方案、無失效運行方案、貝葉斯測試方案等四種軟件可靠性驗證統(tǒng)計方案,并根據影響驗證的因素(驗證指標類型、測試環(huán)境的預期壽命、該類型軟件的質量要求、可承受的最大測試時間、可承受的最大失效數、費用-時間的權衡、是否有先驗信息等)給出了不同側重因素時軟件可靠性驗證統(tǒng)計方案的選擇策略,為艦船裝備軟件提供一種普適性軟件可靠性驗證與評價方法。最后結合某檢測軟件給出實例應用,實踐證明本文提出的艦船裝備軟件可靠性驗證與評價方法切實可行,具有重要的工程意義。4 軟件可靠性驗證統(tǒng)計方案選擇策略
5 可靠性指標驗證示例
6 小結