丁春光
(工業(yè)和信息化部電子第五研究所,廣東 廣州510610)
1983年IEEE計(jì)算機(jī)學(xué)會(huì)對(duì) “軟件可靠性”一詞作了正式的定義。軟件可靠性(Software Reliability)的定義:在給定的環(huán)境條件下和規(guī)定的時(shí)間內(nèi),軟件不引起系統(tǒng)失效的概率,該概率是系統(tǒng)輸入和系統(tǒng)使用的函數(shù),也是軟件中存在的錯(cuò)誤的函數(shù)。軟件可靠性工程(Software Reliability Engineering)中往往定義為:軟件可靠性是軟件產(chǎn)品在規(guī)定的條件下和規(guī)定的時(shí)間區(qū)間內(nèi)完成規(guī)定功能的能力。軟件可靠性是軟件工程學(xué)與可靠性工程學(xué)結(jié)合產(chǎn)生的前沿學(xué)科,到目前為止軟件可靠性學(xué)科的范圍已經(jīng)擴(kuò)展到軟件可靠性、軟件維護(hù)性、軟件安全性和軟件保障性。
檢驗(yàn)軟件的可靠性可以通過軟件可靠性建模和軟件可靠性測(cè)試來完成,這兩種方法是互補(bǔ)的而不是互相對(duì)立的。通過軟件可靠性建模的辦法,利用在軟件測(cè)試階段收集到的軟件失效數(shù)據(jù)進(jìn)行預(yù)計(jì),以預(yù)計(jì)軟件可靠性的實(shí)際水平,以便從可靠性的角度判斷軟件何時(shí)可停止測(cè)試。目前還沒有被推薦為廣泛應(yīng)用的軟件可靠性模型,雖然目前已建立了數(shù)百種軟件可靠性模型,但均具有一定的局限性。因此,從軟件可靠性模型的假設(shè)是否合理、實(shí)際應(yīng)用是否簡(jiǎn)單方便、適用范圍是否廣泛等問題出發(fā),如何進(jìn)一步建立合理、實(shí)用的軟件可靠性模型還有待于進(jìn)一步研究。
軟件可靠性模型選擇時(shí),重點(diǎn)考慮的是模型的預(yù)測(cè)精度。軟件可靠性模型都是建立在一定的假設(shè)基礎(chǔ)上。但是,有些假設(shè)并不合理甚至是不成立的,基于這些假設(shè)得出的數(shù)學(xué)模型也就無法對(duì)軟件可靠性行為做出準(zhǔn)確的預(yù)測(cè)。如何使建立的軟件可靠性模型更符合實(shí)際的軟件失效過程,如何選擇一個(gè)更恰當(dāng)?shù)哪P蛠碓u(píng)價(jià)一個(gè)軟件的可靠性,對(duì)現(xiàn)有的軟件可靠性模型如何評(píng)價(jià)它們的有效性和預(yù)測(cè)能力等一系列問題。于是,模型的預(yù)測(cè)準(zhǔn)確性評(píng)價(jià)方法的研究就顯得十分重要,目前得到公認(rèn)的方法主要有:PL檢驗(yàn)法、U-結(jié)構(gòu)圖分析法、Y-結(jié)構(gòu)圖分析法等。
軟件可靠性評(píng)估模塊(SRE)是由工業(yè)和信息化部電子第五研究所研制開發(fā)的五性工程軟件CARMES 6.0中的一個(gè)模塊。SRE通過采集軟件失效數(shù)據(jù),利用軟件可靠性模型估計(jì)軟件的可靠性。SRE主要包括模型參數(shù)的管理和軟件可靠性的模型評(píng)估兩大功能。SRE模塊實(shí)現(xiàn)了7個(gè)軟件可靠性評(píng)估模型。本文將對(duì)以上7種評(píng)估模型的實(shí)現(xiàn)原理及過程進(jìn)行簡(jiǎn)單的介紹。
軟件可靠性評(píng)估模塊(SRE)可以處理以下7種模型:Schneidewind模型(S)、Jelinski-Moranda 模型(J-M)、Goel-Okumoto(NHPP)模型(G-O(NHPP))、Goel-Okumoto 改錯(cuò)不徹底模型 (G-O)、Schick-Wolverton 模型(S-W)、Moranda 模型(M)、Yamada-Ohba-Osaki(Y-O-O)模型。
基本假設(shè):軟件故障發(fā)生率滿足指數(shù)下降。
評(píng)估參數(shù):軟件中初始故障發(fā)生率α;指數(shù)下降的比例因子β。
模型描述:設(shè)第i個(gè)缺陷的發(fā)現(xiàn)以及糾正時(shí)刻為ti,i=1,2,…,n,則在[ti-1,ti)間的軟件故障率為常數(shù)
α和β的最大似然估計(jì)滿足:
參數(shù)解特性分析結(jié)論:Schneidewind模型存在唯一解,P≤0時(shí)唯一解釋合理解,P>0時(shí)唯一解不是合理解。其中
基本假設(shè):軟件故障發(fā)生率與軟件中剩余錯(cuò)誤的個(gè)數(shù)成正比。
評(píng)估參數(shù):軟件中初始錯(cuò)誤總數(shù)N;單位故障發(fā)生率Φ。
模型描述:設(shè)第i個(gè)缺陷的發(fā)現(xiàn)以及糾正時(shí)刻為ti,i=1,2,…,n,則在[ti-1,ti)間的軟件故障率為常數(shù)
N和Φ的最大似然估計(jì)滿足:
參數(shù)解特性分析結(jié)論:Jelinski-Moranda模型存在多組解,P≤時(shí)無合理解,時(shí)有唯一合理解,其中
基本假設(shè):?jiǎn)挝粫r(shí)間內(nèi)發(fā)現(xiàn)錯(cuò)誤的平均個(gè)數(shù)與軟件中的剩余錯(cuò)誤成正比。
評(píng)估參數(shù):軟件中初始錯(cuò)誤總數(shù)a:錯(cuò)誤發(fā)現(xiàn)率b。
模型描述:由基本假設(shè),得出錯(cuò)誤平均函數(shù)
設(shè)第i個(gè)缺陷的發(fā)現(xiàn)及糾正時(shí)刻為ti,i=1,2,…,n,則a和b的最大似然估計(jì)滿足:
參數(shù)解特性分析結(jié)論:Goel-Okumoto(NHPP)模型存在唯一解,P≥1/2時(shí)無解,P<1/2時(shí)唯一解(合理)。其中
基本假設(shè):軟件故障發(fā)生率與軟件中剩余錯(cuò)誤的個(gè)數(shù)成正比,但不向Jelinski-Moranda模型那樣假設(shè)錯(cuò)誤一旦發(fā)現(xiàn)即徹底改正,Goel-Okumoto假設(shè)錯(cuò)誤的改正可以是不徹底的,即錯(cuò)誤的改正度為q,q應(yīng)大于零且小于等于1,值越大說明改錯(cuò)越徹底,q為1時(shí)為徹底改錯(cuò),此時(shí)該模型等同于Jelinski-Moranda模型。
評(píng)估參數(shù):軟件中初始錯(cuò)誤的實(shí)際總數(shù)N;單位故障發(fā)生率與錯(cuò)誤改正度的比值Φ。
模型描述:設(shè)第i個(gè)缺陷的發(fā)現(xiàn)以及糾正時(shí)刻為ti,i=1,2,…,n,則在[ti-1,ti)間的軟件故障率為常數(shù)
N和Φ的最大似然估計(jì)滿足:
參數(shù)解特性分析結(jié)論:Goel-Okumoto改錯(cuò)不徹底模型存在多組
基本假設(shè):他們認(rèn)為隨著軟件調(diào)試過程的深入,軟件中的錯(cuò)誤會(huì)越來越少,因此從總體上講軟件的故障發(fā)生率是呈下降趨勢(shì),但是在每次錯(cuò)誤改正后投入繼續(xù)調(diào)試以尋找下一個(gè)錯(cuò)誤時(shí),有時(shí)卻隨著調(diào)試時(shí)間的增加故障發(fā)生率是局部上升的,即時(shí)間越長(zhǎng)越易出故障。該模型的故障發(fā)生率是一條呈鋸齒性的變化曲線。
評(píng)估參數(shù):軟件中初始錯(cuò)誤總數(shù)N;鋸齒每次下降的幅度Φ。
模型描述:設(shè)第i個(gè)缺陷的發(fā)現(xiàn)以及糾正時(shí)刻為ti,i=1,2,…,n,則在[ti-1,ti)間的軟件故障率為時(shí)間函數(shù)
N和Φ的最大似然估計(jì)滿足:
參數(shù)解特性分析結(jié)論:Schick-Wolverton模型存在多組解,P≤
基本假設(shè):軟件故障發(fā)生率呈幾何下降。
評(píng)估參數(shù):軟件中初始故障發(fā)生率D:故障發(fā)生率幾何下降的比例常數(shù)k。
模型描述:設(shè)第i個(gè)缺陷的發(fā)現(xiàn)以及糾正時(shí)刻為ti,i=1,2,…,n,則在[ti-1,ti)間的軟件故障率為常數(shù)
D和k的最大似然估計(jì)滿足:
參數(shù)解特性分析結(jié)論:Moranda模型存在唯一解,P≥0時(shí)唯一解釋合理解,P<0時(shí)唯一解不是合理解。其中
基本假設(shè):查出錯(cuò)誤數(shù)的增長(zhǎng)是S形,即開始增長(zhǎng)緩慢,然后快速增長(zhǎng),最后趨于飽和。
評(píng)估參數(shù):軟件中初始錯(cuò)誤總數(shù)a;穩(wěn)定狀態(tài)下的錯(cuò)誤發(fā)現(xiàn)率b。
模型描述:假設(shè)S形的錯(cuò)誤平均函數(shù)
設(shè)第i個(gè)缺陷的發(fā)現(xiàn)及糾正時(shí)刻為ti,i=1,2,…,n,則a和b的最大似然估計(jì)滿足:
參數(shù)解特性分析結(jié)論:Yamada-Ohba-Osaki模型當(dāng)P≥2/3時(shí)無解,P<2/3時(shí)有唯一解(合理)。其中
SRE主要包括模型參數(shù)的管理和軟件可靠性的模型評(píng)估兩大功能。
軟件可靠性評(píng)估模塊的模型參數(shù)管理分為軟件錯(cuò)誤統(tǒng)計(jì)數(shù)據(jù)組別管理和軟件錯(cuò)誤統(tǒng)計(jì)數(shù)據(jù)管理兩個(gè)功能模塊。
軟件錯(cuò)誤統(tǒng)計(jì)數(shù)據(jù)組別管理模塊的數(shù)據(jù)格式如下:
組名:軟件錯(cuò)誤統(tǒng)計(jì)數(shù)據(jù)組別的名稱:
錯(cuò)誤統(tǒng)計(jì)數(shù)據(jù)描述:對(duì)軟件錯(cuò)誤統(tǒng)計(jì)數(shù)據(jù)的獲取、檢測(cè)方式等進(jìn)行說明;
說明:對(duì)本組別的說明(可選);
時(shí)間單位:軟件錯(cuò)誤統(tǒng)計(jì)數(shù)據(jù)的單位,可選擇的時(shí)間單位有三個(gè),小時(shí)、分鐘和秒;
錯(cuò)誤改進(jìn)度:軟件錯(cuò)誤的改進(jìn)程度;
軟件錯(cuò)誤統(tǒng)計(jì)數(shù)據(jù)的管理的數(shù)據(jù)格式如下:
序號(hào):軟件錯(cuò)誤統(tǒng)計(jì)數(shù)據(jù)編號(hào),于添加數(shù)據(jù)時(shí)系統(tǒng)自動(dòng)生成;
間隔時(shí)間:軟件發(fā)生故障的上一時(shí)間到本次軟件發(fā)生故障的時(shí)間之差;
累計(jì)時(shí)間:本組別所有軟件故障間隔時(shí)間之和;
軟件可靠性評(píng)估模塊實(shí)現(xiàn)了7個(gè)軟件可靠性評(píng)估模型,通過計(jì)算可以得到可靠性指標(biāo)及誤差分析結(jié)果。得到的可靠性指標(biāo)包括當(dāng)前故障率、誤差系數(shù)、MTTF、下一次故障可能時(shí)間。各個(gè)模型的評(píng)估指標(biāo)計(jì)算公式如表1:
表1 模型評(píng)估指標(biāo)計(jì)算公式
在進(jìn)行模型評(píng)估計(jì)算時(shí),需要指定錯(cuò)誤統(tǒng)計(jì)數(shù)據(jù)的起始序號(hào)M,系統(tǒng)將抽取從起始序號(hào)開始到統(tǒng)計(jì)表表尾序號(hào)結(jié)束的該部分軟件錯(cuò)誤統(tǒng)計(jì)數(shù)據(jù)用于軟件可靠性評(píng)估。因?yàn)殡S著軟件開發(fā)過程的深入,程序中殘存的錯(cuò)誤會(huì)不斷地被檢出,并得到改正,軟件故障發(fā)生的平均時(shí)間間隔將會(huì)逐漸變長(zhǎng),軟件的可靠性會(huì)越來越高,此時(shí)軟件開發(fā)的階段將會(huì)改變。當(dāng)軟件進(jìn)入新階段時(shí),新階段的軟件錯(cuò)誤統(tǒng)計(jì)數(shù)據(jù)顯然比前一階段的數(shù)據(jù)更具參考價(jià)值,因此,用戶可通過錯(cuò)誤統(tǒng)計(jì)數(shù)據(jù)計(jì)算起始序號(hào)來選擇不同階段的統(tǒng)計(jì)數(shù)據(jù)用于軟件可靠性評(píng)估。SRE模塊界面如圖2。
圖1 CARMES 6.0運(yùn)行主界面
圖2 SRE模塊運(yùn)行界面
3 結(jié)束語
軟件可靠性評(píng)估模塊(SRE)實(shí)現(xiàn)了7種軟件可靠性評(píng)估模型,雖然還有一些模型有待實(shí)現(xiàn),如Musa執(zhí)行時(shí)間模型、Littlewood-Verrall模型、Seeding模型、Nelson模型,但已對(duì)軟件可靠性評(píng)估模型的軟件工程化進(jìn)行了初步的探索,在以后的研究工作中將進(jìn)一步逐步完善優(yōu)化,形成一個(gè)強(qiáng)有力的軟件可靠性評(píng)估工具。
[1]宋曉秋.軟件可靠性與軟件測(cè)試[Z].信息產(chǎn)業(yè)部軍工電子裝備可靠性工程技術(shù)中心.2002.10