李 震,王 肖
(江蘇科技大學(xué) 電子信息學(xué)院,江蘇 鎮(zhèn)江 212003)
軟件可靠性是衡量軟件質(zhì)量的重要標(biāo)準(zhǔn),無論是對軟件可靠性的度量還是指導(dǎo)軟件可靠性測試的進(jìn)行都具有極其重要的作用。軟件可靠性增長測試的目的是為了有效地發(fā)現(xiàn)程序中影響軟件可靠性的缺陷,通過排除這些缺陷實(shí)現(xiàn)軟件可靠性的增長;根據(jù)失效數(shù)據(jù)可以評估當(dāng)前軟件可靠性的水平,預(yù)測未來可能達(dá)到的水平,從而為軟件開發(fā)管理提供決策依據(jù)[1]。
可靠性評估過程流程圖表示如圖1所示。圖形法是在工程中粗略判斷數(shù)據(jù)趨勢的常用方法,被檢測的數(shù)據(jù)可以是失效間隔時(shí)間,也可以是累積失效數(shù)或失效強(qiáng)度(單位時(shí)間內(nèi)的失效數(shù))[2]。當(dāng)收集的是失效間隔時(shí)間θj時(shí),可以通過逐步計(jì)算得到失效間隔時(shí)間的平均值τ(i)為然后畫出τ(i)相對失效次數(shù)i的趨勢圖,根據(jù)趨勢圖就可以直觀的看出軟件可靠校性的增長趨勢,如果趨勢是下降的,此時(shí)要做的就是重新分析軟件的編寫過程,修改代碼出錯(cuò)的地方之后再進(jìn)行測試,否則測試也是徒勞的。例如,Android文件管理器軟件的一組失效數(shù)據(jù)如表1所示。Ti為第i次失效發(fā)生的時(shí)刻,單位為小時(shí)。
通過計(jì)算得到平均失效時(shí)間間隔數(shù)據(jù)如圖2所示。
表1 文件管理器失效數(shù)據(jù)Tab.1 Failure data of file manager
圖1 可靠性評估過程流程圖Fig.1 Reliability evaluation process flowchart
圖2 軟件失效間隔時(shí)間平均值Fig.2 The average time of interval software failure
由圖2可以看出,此軟件的可靠性整體是呈增長趨勢的,可以進(jìn)行進(jìn)一步的可靠性評估。
不論是簡單的短期預(yù)測還是較長時(shí)間段的預(yù)測中,各種模型所表現(xiàn)出來的可靠性度量的準(zhǔn)確性差異很大,目前還無法給出一個(gè)普遍適應(yīng)的模型[3]。本文選取常見的Jelinski-Moranda(J-M)模型和Musa-Okumoto(M-O)對數(shù)泊松執(zhí)行時(shí)間模型作為比較對象,闡述選擇合適的可靠性評估模型的方法和步驟。
由于論文的內(nèi)容限制,本文在此不在贅述模型假設(shè)的基本內(nèi)容和公式的推導(dǎo)過程。由J-M模型的假設(shè),其分布函數(shù)為:
由分布函數(shù)可得軟件系統(tǒng)中的累積錯(cuò)誤數(shù)的評估函數(shù)為:
其中n(ti)為第ti時(shí)刻的軟件錯(cuò)誤數(shù),ti為軟件的失效時(shí)刻,N為軟件的錯(cuò)誤總數(shù),φ為模型的參數(shù)[4]。
由(2)式可以推得失效時(shí)刻為:
通過極大似然估計(jì)可以推導(dǎo)出公式如下[5]:
其中xi為失效時(shí)間間隔,即:xi=ti-ti-1。
把前15個(gè)失效數(shù)據(jù)帶入公式(4),通過方程迭代法求出N和φ估計(jì)值分別為33與0.007 92。
由模型的假設(shè)前提條件知均值函數(shù)為[6]:
其中λ0是初始失效密度,θ是失效強(qiáng)度遞減參數(shù)。令β0=θ-1且 β1=λ0θ,于是:
用下列方程可求得參數(shù)的極大似然估計(jì)值:
通過MATLAB對J-M和M-0模型進(jìn)行仿真,如圖3所示。
圖3 J-M、M-O模型預(yù)測值與實(shí)際測得值對比Fig.3 Comparison between the prediction value and experiment results
由圖3,我們可以直觀的看到M-O模型的預(yù)測值要明顯好于J-M模型的預(yù)測值,M-O模型的預(yù)測更加貼合實(shí)際的測得值。在失效數(shù)是16時(shí),模型的預(yù)測值偏差最大,但也不過只有23.08%。另外M-0模型曲線的斜率是逐步增大的,說明軟件的失效時(shí)間間隔也是逐漸增大的,代表軟件的可靠性也逐漸變好。
1)第30個(gè)失效之后的時(shí)間x內(nèi)的可靠度:
當(dāng)?shù)?0個(gè)失效發(fā)生后經(jīng)過20小時(shí),預(yù)計(jì)的可靠度為0.29。
2)第30個(gè)失效之后的時(shí)間x內(nèi)的失效密度:
3)平均失效前時(shí)間(MTTF)
所以可以預(yù)計(jì)第31個(gè)失效的MTTF為16.42小時(shí)。
通過對失效數(shù)據(jù)的分析,可以直觀的判斷軟件是否達(dá)到可靠性要求,并可以指導(dǎo)實(shí)際的測試過程,例如:
1)如果用戶給出了軟件的可靠度指標(biāo),根據(jù)當(dāng)前的軟件可靠度的估計(jì)值,就可以判斷是否滿足用戶的需求,從而決定是否需要繼續(xù)進(jìn)行測試。
2)可以根據(jù)預(yù)測的軟件殘留的缺陷數(shù)和平均失效前時(shí)間,用于指導(dǎo)可靠性測試的進(jìn)行。
本文針對具體的實(shí)例制定了軟件增長測試中可靠性評估的方案,通過對收集的測試數(shù)據(jù)計(jì)算失效間隔時(shí)間的平均值來判斷軟件的可靠性是否增長,以及通過MATLAB仿真對常見的J-M模型和M-O模型的預(yù)測準(zhǔn)確性進(jìn)行比對,最后通過M-O模型對軟件未來的可靠性進(jìn)行了預(yù)測,用以指導(dǎo)以后的可靠性測試工作。
[1]陸民燕.軟件可靠性參數(shù)研究[J].北京航空航天大學(xué)學(xué)報(bào),2001(2):2-3.LUMin-yan.Study on software reliability parameters[J].Journal of Beijing University of Aeronautics and Astronautics,2001(2):2-3.
[2]于碧媛.軟件可靠性模型及估值的介紹[J].導(dǎo)彈與航天運(yùn)載技術(shù),1994(1):1-2.YUBi-yuan.Introduction of the software reliability models and the value estimation methods[J].Missiles and Space Vehicles,1994(1):1-2.
[3]吳燁清,陳仲民.軟件可靠性建模思想的比較研究[J].電腦知識(shí)與技術(shù),2008(35):4-5.WU Hua-qing,CHEN Zhong-min.Comparison study on the thought of software reliability modeling[J].Computer Knowledge and Technology,2008(35):4-5.
[4]車清太.計(jì)算機(jī)軟件產(chǎn)品可靠性的探討與研究[J].山西電子技術(shù),2003(5):2-5.CHE Qing-tai.Discuss and research for the reliability of computer software products[J].Shanxi Electronic Technology,2003(5):2-5.
[5]謝景燕,安金霞,朱紀(jì)洪.考慮不完美排錯(cuò)情況的NHPP類軟件可靠性增長模型[J].軟件學(xué)報(bào),2010(5):4-8.XIE Jing-yan,AN Jin-xia,ZHU Ji-hong.Consider the case of imperfect debugging NHPPsoftware reliability growth models[J].Journal of Software,2010(5):4-8.
[6]劉丹.軟件測試及可靠性研究[D].長春:長春理工大學(xué),2009.