軟件可靠性數據預處理研究
現代計算機系統的規模越來(lái)越龐大,越來(lái)越復雜,導致計算機系統的可靠性保障的難度也越來(lái)越大。因此,計算機系統的可靠性已為社會(huì )所廣泛關(guān)注[1]。面對這種形勢,國際上越來(lái)越重視軟件可靠性工程理論的研究發(fā)展,將軟件質(zhì)量管理逐漸納入規范化、科學(xué)化的軌道[2]。軟件可靠性工程也逐漸在信息技術(shù)、可靠性工程、用戶(hù)需求等綜合因素的作用下發(fā)展起來(lái),并形成了一門(mén)綜合眾多學(xué)科的成果以解決軟件可靠性為出發(fā)點(diǎn)的邊緣學(xué)科。
軟件可靠性工程主要研究對象為軟件產(chǎn)品或系統的失效發(fā)生原因、消除和預防措施,以保證軟件產(chǎn)品的可靠性和可用性,降低維護費用,提高軟件產(chǎn)品的用效益。軟件可靠性已經(jīng)成為軟件業(yè)界和可靠性工程界關(guān)注的焦點(diǎn)、研究的熱點(diǎn)、實(shí)踐的重點(diǎn)。
1 軟件可靠性數據
不同的軟件錯誤、缺陷及其故障在表現形式、性質(zhì)乃至數量方面可能大相徑庭,對其進(jìn)行全面、詳細的闡述是非常困難的,也是不客觀(guān)、不現實(shí)的。但是現實(shí)中,為了簡(jiǎn)單易行,通常假設軟件可靠性模型所有失效等級相同,或屬于同一類(lèi),即不再區分軟件錯誤、缺陷及其故障。如果要區分失效等級和失效類(lèi)型,將隨之帶來(lái)很多問(wèn)題。例如,同一模型是否適用于不同類(lèi)型的失效數據;由于分類(lèi)后各類(lèi)失效數據樣本一般極少,將會(huì )影響模型給出結果的精度。因此一般情況下,不再對失效數據進(jìn)行分類(lèi)[3]。
經(jīng)典的軟件可靠性模型有:(1)1972年,Jelinski和Moranda首次提出了軟件可靠性模型的概念,并建立了具體的可靠性模型——J-M模型[4-5]; (2)1973年,Littlewood和Verall采用Bayes方法進(jìn)行軟件可靠性測試[6];(3)1979年,Goel和Okumoto提出了改進(jìn)J-M模型的非齊次泊松過(guò)程模型,即G-O模型;(4)1983年,Yamada和Osaki發(fā)現錯誤數在預測初期增長(cháng)緩慢隨后快速增長(cháng),最后趨于飽和,即延時(shí)S形增長(cháng)模型,稱(chēng)為Y-O模型[7]。
任意選取一組如表1所示的MUSA J M的軟件可靠性數據,使用筆者開(kāi)發(fā)的軟件可靠性預測系統,驗證上述4個(gè)軟件可靠性模型,得到的擬合曲線(xiàn)如圖1所示。由圖可以看出,由于原始的軟件可靠性數據間隔時(shí)間的不平穩性,導致其最終預測結果產(chǎn)生極大的誤差,特別是在波峰波谷處。
通過(guò)對大量軟件可靠性數據的研究分析發(fā)現,軟件發(fā)生缺陷的間隔時(shí)間具有較大的波動(dòng)性,而這也正是導致其預測結果誤差較大的主要原因。描繪其波動(dòng)性趨勢,構建軟件可靠性數據的波動(dòng)模型,是解決問(wèn)題的關(guān)鍵。
2 軟件可靠性數據的預處理
為解決上述問(wèn)題,本研究將軟件可靠性數據分解成獨立的兩部分數據。一部分描繪軟件可靠性數據的總體趨勢;另外一部分描繪軟件可靠性數據隨時(shí)間的波動(dòng)趨勢。通過(guò)兩部分數據的分別預測和組合,得到最終的可靠性結果。
設軟件失效間隔時(shí)間分別為:x(1),x(2),…x(n),失效時(shí)間分別為:t(1),t(2),…t(n),其中t(i)為軟件開(kāi)始運行到第i次失效發(fā)生的時(shí)間,x(i)為軟件第i-1次失效到第i次失效發(fā)生的時(shí)間間隔,即x(i)=t(i)-t(i-1)。
假定t時(shí)刻的軟件可靠性數據M(t)=P(t)+Q(t),其中P(t)用來(lái)描繪軟件可靠性數據的總體趨勢,Q(t)用來(lái)描繪軟件可靠性數據隨缺陷出現的波動(dòng)趨勢。
按上述算法,對表1所列數據進(jìn)行處理得出表2結果。
表2所估算的預測數據P(t)的時(shí)間間隔曲線(xiàn)如圖2所示。由圖可以看出,其整個(gè)趨勢相對于原始數據相對平穩,且其大致趨勢與原始數據曲線(xiàn)趨同。
根據原始數據與預測數據P(t)的差值曲線(xiàn),尋找并預測Q(t)的變化規律。由圖3可以看出,對于波動(dòng)程度的取值,必須要考慮波動(dòng)的正負和波動(dòng)的幅度兩方面因素。
同樣根據早期數據對預測未來(lái)行為作用很小,而現時(shí)失效間隔數據可以比更早之前觀(guān)測的失效間隔數值更好地預測未來(lái)這個(gè)原理,本研究選取Q(t)之前的5個(gè)失效數據點(diǎn)進(jìn)行波動(dòng)值Q(t)的預測。
首先根據之前5個(gè)點(diǎn)波幅4次正負切換的次數,預測時(shí)刻t相對于上一時(shí)刻t-1波幅的異號或同號的可能性。
波動(dòng)的幅度通過(guò)取5個(gè)點(diǎn)的振幅絕對值平均值得到。同時(shí)可以發(fā)現對于點(diǎn)Q(t-1)的振幅與Q(t)的預測也有較大聯(lián)系,假設Q(t)=a×Q(t)+b×|Q(t-1)|,a取值0.7,b取值0.3。
按照上述算法,將估算的P(1)…P(t-1)值代入軟件可靠性模型,得到P(t),最終得到時(shí)刻t的預測時(shí)間P′(t)+Q(t)。
3 算法驗證
(1)使用Littlewood-Verall模型對P(t)進(jìn)行運算,根據P(t)…P(t-1)求得預測的P′(t),結果如表3所示。
定義可靠性模型評價(jià)標準:
剔除失效數據點(diǎn)1、2、3,其他的14個(gè)失效數據點(diǎn)RE的為0.349 351,而初始的失效間隔的RE值為1.595??梢?jiàn)通過(guò)平穩處理失效數據點(diǎn),可以得到更高的擬合度。
(2)求值Q′(t),按照之前算法,得到的值如表4所示。
由于前5個(gè)失效數據點(diǎn)的預測Q′(t)缺少有效的數據,所以計算ESS時(shí),將其剔除,剔除后的點(diǎn)求得RE的值為1.23,相對于使用未經(jīng)處理的點(diǎn)獲得的RE值(1.595)誤差減小近20%。同時(shí),可以看到其產(chǎn)生誤差的主要原因是失效數據點(diǎn)11所導致的。MUSA J M軟件可靠性數據及最終預測數據如表5所示。
軟件可靠性評估日益受到重視,作為其核心的軟件可靠性模型理論的研究也勢必要深入下去。本文的研究開(kāi)啟了軟件可靠性理論研究的入口,以后的研究除了對可靠性數據進(jìn)行進(jìn)一步處理外,也將對軟件可靠性模型進(jìn)行進(jìn)一步的改進(jìn)。
本文在傳統方法僅關(guān)注軟件可靠性模型的基礎上,拓寬至對可靠性數據的預處理,提出了一種對軟件可靠性數據處理的新方法,解決了可靠性數據采集過(guò)程中出現波動(dòng)性大的缺陷,而且算法簡(jiǎn)單、穩健性好,可以適用于各種工程應用。但其中還有很多問(wèn)題值得進(jìn)一步研究,例如,如何實(shí)現新算法中Q(t)系數的自適應等。
評論