文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2010)08-0153-04
現(xiàn)代計(jì)算機(jī)系統(tǒng)的規(guī)模越來(lái)越龐大,,越來(lái)越復(fù)雜,,導(dǎo)致計(jì)算機(jī)系統(tǒng)的可靠性保障的難度也越來(lái)越大。因此,,計(jì)算機(jī)系統(tǒng)的可靠性已為社會(huì)所廣泛關(guān)注[1],。面對(duì)這種形勢(shì),國(guó)際上越來(lái)越重視軟件可靠性工程理論的研究發(fā)展,,將軟件質(zhì)量管理逐漸納入規(guī)范化,、科學(xué)化的軌道[2]。軟件可靠性工程也逐漸在信息技術(shù),、可靠性工程,、用戶需求等綜合因素的作用下發(fā)展起來(lái),,并形成了一門(mén)綜合眾多學(xué)科的成果以解決軟件可靠性為出發(fā)點(diǎn)的邊緣學(xué)科。
軟件可靠性工程主要研究對(duì)象為軟件產(chǎn)品或系統(tǒng)的失效發(fā)生原因,、消除和預(yù)防措施,,以保證軟件產(chǎn)品的可靠性和可用性,降低維護(hù)費(fèi)用,,提高軟件產(chǎn)品的使用效益,。軟件可靠性已經(jīng)成為軟件業(yè)界和可靠性工程界關(guān)注的焦點(diǎn)、研究的熱點(diǎn),、實(shí)踐的重點(diǎn),。
1 軟件可靠性數(shù)據(jù)
不同的軟件錯(cuò)誤、缺陷及其故障在表現(xiàn)形式,、性質(zhì)乃至數(shù)量方面可能大相徑庭,,對(duì)其進(jìn)行全面、詳細(xì)的闡述是非常困難的,,也是不客觀,、不現(xiàn)實(shí)的。但是現(xiàn)實(shí)中,,為了簡(jiǎn)單易行,通常假設(shè)軟件可靠性模型所有失效等級(jí)相同,,或?qū)儆谕活?lèi),,即不再區(qū)分軟件錯(cuò)誤、缺陷及其故障,。如果要區(qū)分失效等級(jí)和失效類(lèi)型,,將隨之帶來(lái)很多問(wèn)題。例如,同一模型是否適用于不同類(lèi)型的失效數(shù)據(jù),;由于分類(lèi)后各類(lèi)失效數(shù)據(jù)樣本一般極少,,將會(huì)影響模型給出結(jié)果的精度。因此一般情況下,,不再對(duì)失效數(shù)據(jù)進(jìn)行分類(lèi)[3],。
經(jīng)典的軟件可靠性模型有:(1)1972年,Jelinski和Moranda首次提出了軟件可靠性模型的概念,并建立了具體的可靠性模型——J-M模型[4-5]; (2)1973年,Littlewood和Verall采用Bayes方法進(jìn)行軟件可靠性測(cè)試[6];(3)1979年,Goel和Okumoto提出了改進(jìn)J-M模型的非齊次泊松過(guò)程模型,,即G-O模型;(4)1983年,Yamada和Osaki發(fā)現(xiàn)錯(cuò)誤數(shù)在預(yù)測(cè)初期增長(zhǎng)緩慢隨后快速增長(zhǎng),,最后趨于飽和,即延時(shí)S形增長(zhǎng)模型,,稱(chēng)為Y-O模型[7],。
任意選取一組如表1所示的MUSA J M的軟件可靠性數(shù)據(jù),使用筆者開(kāi)發(fā)的軟件可靠性預(yù)測(cè)系統(tǒng),,驗(yàn)證上述4個(gè)軟件可靠性模型,,得到的擬合曲線如圖1所示。由圖可以看出,由于原始的軟件可靠性數(shù)據(jù)間隔時(shí)間的不平穩(wěn)性,,導(dǎo)致其最終預(yù)測(cè)結(jié)果產(chǎn)生極大的誤差,,特別是在波峰波谷處。
通過(guò)對(duì)大量軟件可靠性數(shù)據(jù)的研究分析發(fā)現(xiàn),,軟件發(fā)生缺陷的間隔時(shí)間具有較大的波動(dòng)性,,而這也正是導(dǎo)致其預(yù)測(cè)結(jié)果誤差較大的主要原因。描繪其波動(dòng)性趨勢(shì),,構(gòu)建軟件可靠性數(shù)據(jù)的波動(dòng)模型,,是解決問(wèn)題的關(guān)鍵。
2 軟件可靠性數(shù)據(jù)的預(yù)處理
為解決上述問(wèn)題,,本研究將軟件可靠性數(shù)據(jù)分解成獨(dú)立的兩部分?jǐn)?shù)據(jù),。一部分描繪軟件可靠性數(shù)據(jù)的總體趨勢(shì);另外一部分描繪軟件可靠性數(shù)據(jù)隨時(shí)間的波動(dòng)趨勢(shì),。通過(guò)兩部分?jǐn)?shù)據(jù)的分別預(yù)測(cè)和組合,,得到最終的可靠性結(jié)果。
設(shè)軟件失效間隔時(shí)間分別為:x(1),x(2),…x(n),,失效時(shí)間分別為:t(1),t(2),…t(n),其中t(i)為軟件開(kāi)始運(yùn)行到第i次失效發(fā)生的時(shí)間,x(i)為軟件第i-1次失效到第i次失效發(fā)生的時(shí)間間隔,,即x(i)=t(i)-t(i-1)。
假定t時(shí)刻的軟件可靠性數(shù)據(jù)M(t)=P(t)+Q(t),,其中P(t)用來(lái)描繪軟件可靠性數(shù)據(jù)的總體趨勢(shì),,Q(t)用來(lái)描繪軟件可靠性數(shù)據(jù)隨缺陷出現(xiàn)的波動(dòng)趨勢(shì)。
按上述算法,,對(duì)表1所列數(shù)據(jù)進(jìn)行處理得出表2結(jié)果,。
表2所估算的預(yù)測(cè)數(shù)據(jù)P(t)的時(shí)間間隔曲線如圖2所示。由圖可以看出,,其整個(gè)趨勢(shì)相對(duì)于原始數(shù)據(jù)相對(duì)平穩(wěn),且其大致趨勢(shì)與原始數(shù)據(jù)曲線趨同,。
根據(jù)原始數(shù)據(jù)與預(yù)測(cè)數(shù)據(jù)P(t)的差值曲線,尋找并預(yù)測(cè)Q(t)的變化規(guī)律,。由圖3可以看出,,對(duì)于波動(dòng)程度的取值,必須要考慮波動(dòng)的正負(fù)和波動(dòng)的幅度兩方面因素。
同樣根據(jù)早期數(shù)據(jù)對(duì)預(yù)測(cè)未來(lái)行為作用很小,,而現(xiàn)時(shí)失效間隔數(shù)據(jù)可以比更早之前觀測(cè)的失效間隔數(shù)值更好地預(yù)測(cè)未來(lái)這個(gè)原理,,本研究選取Q(t)之前的5個(gè)失效數(shù)據(jù)點(diǎn)進(jìn)行波動(dòng)值Q(t)的預(yù)測(cè)。
首先根據(jù)之前5個(gè)點(diǎn)波幅4次正負(fù)切換的次數(shù),,預(yù)測(cè)時(shí)刻t相對(duì)于上一時(shí)刻t-1波幅的異號(hào)或同號(hào)的可能性,。
波動(dòng)的幅度通過(guò)取5個(gè)點(diǎn)的振幅絕對(duì)值平均值得到。同時(shí)可以發(fā)現(xiàn)對(duì)于點(diǎn)Q(t-1)的振幅與Q(t)的預(yù)測(cè)也有較大聯(lián)系,,假設(shè)Q(t)=a×Q(t)+b×|Q(t-1)|,,a取值0.7,,b取值0.3。
按照上述算法,將估算的P(1)…P(t-1)值代入軟件可靠性模型,,得到P(t),,最終得到時(shí)刻t的預(yù)測(cè)時(shí)間P′(t)+Q(t)。
3 算法驗(yàn)證
(1)使用Littlewood-Verall模型對(duì)P(t)進(jìn)行運(yùn)算,根據(jù)P(t)…P(t-1)求得預(yù)測(cè)的P′(t),結(jié)果如表3所示,。
定義可靠性模型評(píng)價(jià)標(biāo)準(zhǔn):
剔除失效數(shù)據(jù)點(diǎn)1,、2、3,,其他的14個(gè)失效數(shù)據(jù)點(diǎn)RE的為0.349 351,而初始的失效間隔的RE值為1.595,。可見(jiàn)通過(guò)平穩(wěn)處理失效數(shù)據(jù)點(diǎn),可以得到更高的擬合度,。
(2)求值Q′(t),,按照之前算法,得到的值如表4所示,。
由于前5個(gè)失效數(shù)據(jù)點(diǎn)的預(yù)測(cè)Q′(t)缺少有效的數(shù)據(jù),,所以計(jì)算ESS時(shí),將其剔除,剔除后的點(diǎn)求得RE的值為1.23,,相對(duì)于使用未經(jīng)處理的點(diǎn)獲得的RE值(1.595)誤差減小近20%,。同時(shí),可以看到其產(chǎn)生誤差的主要原因是失效數(shù)據(jù)點(diǎn)11所導(dǎo)致的,。MUSA J M軟件可靠性數(shù)據(jù)及最終預(yù)測(cè)數(shù)據(jù)如表5所示,。
軟件可靠性評(píng)估日益受到重視,作為其核心的軟件可靠性模型理論的研究也勢(shì)必要深入下去,。本文的研究開(kāi)啟了軟件可靠性理論研究的入口,以后的研究除了對(duì)可靠性數(shù)據(jù)進(jìn)行進(jìn)一步處理外,,也將對(duì)軟件可靠性模型進(jìn)行進(jìn)一步的改進(jìn),。
本文在傳統(tǒng)方法僅關(guān)注軟件可靠性模型的基礎(chǔ)上,拓寬至對(duì)可靠性數(shù)據(jù)的預(yù)處理,提出了一種對(duì)軟件可靠性數(shù)據(jù)處理的新方法,,解決了可靠性數(shù)據(jù)采集過(guò)程中出現(xiàn)波動(dòng)性大的缺陷,,而且算法簡(jiǎn)單、穩(wěn)健性好,可以適用于各種工程應(yīng)用,。但其中還有很多問(wèn)題值得進(jìn)一步研究,,例如,如何實(shí)現(xiàn)新算法中Q(t)系數(shù)的自適應(yīng)等,。
參考文獻(xiàn)
[1] 孫志安, 裴曉黎. 軟件可靠性工程[M]. 北京:北京航空航天大學(xué)出版社, 2009.
[2] 徐仁佐. 軟件可靠性工程 [M]. 北京:北京清華大學(xué)出版社,2007.
[3] LYU M R. 軟件可靠性工程手冊(cè) [M]. 劉喜成,等譯.北京:電子工業(yè)出版社, 1997.
[4] MUSA J D, IANNINO A, OKUMOTO K. Software reliability: measurement,prediction, application[M]. New York: McGraw-Hill, 1987.
[5] CHEUNG R C. A user-oriented software reliability model [J]. IEEE Transactions on Software Engineering, 1980,3-6(2):118.
[6] LITTLEWOOD B. A reliability model for system with markov structure[J]. Applied Statistics, 1975,24(2):172.
[7] GOSEVA P K, TRIVEDI K. Architecture-based approach to reliability assessment of software systems[J]. Performance Evaluation, 2001, 45(2-3):179-204.
[8] 蔡開(kāi)元. 軟件可靠性工程基礎(chǔ) [M]. 北京:北京清華大學(xué)出版社,1995.