国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于體系結(jié)構(gòu)的軟件可靠性測評研究

2012-09-18 02:25:38覃志東
關(guān)鍵詞:軟件可靠性測試用例體系結(jié)構(gòu)

齊 蓓,覃志東

(東華大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院,上海 201620)

基于體系結(jié)構(gòu)的軟件可靠性測評研究

齊 蓓,覃志東

(東華大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院,上海 201620)

針對傳統(tǒng)高可靠性軟件測評方法存在的問題,在分析基于體系結(jié)構(gòu)測評重要性的基礎(chǔ)上提出了基于軟件體系結(jié)構(gòu)的可靠性測評方法.將軟件可靠性增長測試和軟件可靠性驗證測試有機(jī)統(tǒng)一起來,從模塊級對可靠性進(jìn)行控制,并提供可靠性先驗信息.該方法有利于實現(xiàn)軟件可靠性快速增長,有效減少測試用例量.

軟件可靠性;可靠性測評;軟件體系結(jié)構(gòu);軟件測試

0 引 言

軟件可靠性測評是保障其可靠性的重要方法之一,對軟件可靠性測評的研究有著積極的現(xiàn)實意義[1-3].目前,科研人員對軟件可靠性測評的技術(shù)與方法已展開了廣泛而深入的研究,并取得了豐碩的理論成果和工程實踐經(jīng)驗.例如,為在軟件測試過程中及早暴露軟件缺陷以達(dá)到盡快提高軟件可靠性的目的,以Musa為代表的軟件可靠性工程學(xué)派[4-5]和以Poore、Whittake為代表的凈室軟件工程學(xué)派[6]分別提出了基于軟件運行剖面和基于馬爾科夫鏈?zhǔn)褂媚P偷能浖煽啃詼y試用例產(chǎn)生方法,以統(tǒng)計實驗的思想對軟件測試的輸入選擇進(jìn)行研究,從而更快地促進(jìn)軟件可靠性的增長;而就軟件可靠性的驗證測試,Laplace、Thayer等[7-9]提出連續(xù)性規(guī)則、生命期測試、概率率序慣測試的方法,這些方法能夠?qū)崿F(xiàn)對軟件可靠性的驗證,但由于測試用例量過大,并不適用于高可靠性軟件的可靠性驗證;此外,Tal[10]提出的單風(fēng)險序慣測試方法對概率率序慣測試方法有一定改進(jìn),但成效并不顯著.針對以上可靠性驗證測試方法在工程實踐中暴露出的測試用例開銷過大、測試持續(xù)期過長等問題,覃志東等[11]提出了基于經(jīng)驗貝葉斯統(tǒng)計推斷的軟件可靠性驗證測試方法,通過對先驗信息的利用,在保證測評結(jié)果可信的前提下有效降低了測試用例量.

目前,隨著軟件規(guī)模的不斷擴(kuò)大和復(fù)用技術(shù)的廣泛應(yīng)用,為便于系統(tǒng)的開發(fā)、集成和擴(kuò)展,現(xiàn)代高可信軟件正在向多任務(wù)、多模塊化的方向發(fā)展.然而,傳統(tǒng)的軟件可靠性測評的方法把軟件系統(tǒng)看成一個整體,不能通過對軟件模塊級可靠性的控制達(dá)到對整個軟件系統(tǒng)可靠性的把握.僅依靠系統(tǒng)級的軟件可靠性增長及驗證測試,將無法確保軟件可靠性的快速增長以及用少量測試代價對系統(tǒng)當(dāng)前可靠性達(dá)到高可信的驗證[12].

基于此,本研究從軟件結(jié)構(gòu)特點和開發(fā)的現(xiàn)狀著手,提出一種軟件可靠性測評方法,將軟件可靠性增長與驗證測試形成一個有機(jī)整體.該方法從軟件的模塊級實施有效的可靠性跟蹤與控制并實現(xiàn)可靠性快速增長,同時通過測試所得數(shù)據(jù)估計出軟件可靠性先驗信息值,從而有效減少測試用例量.最后,本研究以一個多模塊軟件系統(tǒng)為例,對此測評方法中的主要程序進(jìn)行了說明.

1 基于體系結(jié)構(gòu)測評思路

上世紀(jì)70年代末,Littlewood提出了按結(jié)構(gòu)化、模塊化的方式進(jìn)行軟件可靠性建模的思想.若將此思想融入于軟件可靠性測評中,通過分析軟件系統(tǒng)可靠性對模塊可靠性的敏感性來識別出對系統(tǒng)可靠性影響較大的軟件模塊,并采取相應(yīng)優(yōu)化措施以確保系統(tǒng)的可靠性.本研究以圖1所示多??斓能浖到y(tǒng)進(jìn)一步展開說明,其中,S表示軟件執(zhí)行成功的狀態(tài).

圖1 軟件系統(tǒng)結(jié)構(gòu)示意圖

1.1 模塊軟件對系統(tǒng)可靠性的影響

通過對圖1所示軟件系統(tǒng)的結(jié)構(gòu)和模塊間控制傳遞概率的分析,由Cheung軟件可靠性模型[13]可得出軟件系統(tǒng)可靠性與各模塊可靠性的關(guān)系為,

rs=0.4r1r3+0.06r1r2r4+0.54r1r2r3r4(1)式中,rs表示軟件系統(tǒng)的可靠性,ri(i=1,2,3,4)表示各軟件模塊的可靠性.

對軟件系統(tǒng)中模塊可靠性敏感性分析時,可用軟件模塊的BM(Birnbaum Measure)值進(jìn)行判斷,

式中,BM值越大,表示該模塊可靠性很小的增長會引起軟件系統(tǒng)可靠性相對較大的變化.

若模塊可靠性已知,則由式(1)、(2)可得到各模塊敏感性指標(biāo)和對軟件系統(tǒng)可靠性影響的排序,結(jié)果如表1所示.

表1 軟件模塊敏感度表

根據(jù)表1中數(shù)據(jù),模塊3的BM值最大,表明加強(qiáng)對模塊3的測試可為系統(tǒng)帶來快速的可靠性增長,其他模塊依此類推.

由此可見,根據(jù)具體軟件體系結(jié)構(gòu),識別出對系統(tǒng)可靠性影響較大的模塊,按敏感度的排序分配可靠性測試資源,有利于實現(xiàn)軟件系統(tǒng)可靠性的快速增長.

1.2 有效減少測試代價

為更好地說明問題,在圖1所示軟件系統(tǒng)基礎(chǔ)上新加入軟件模塊5.假設(shè)軟件模塊1,2,3,4已達(dá)到很高可靠性,軟件系統(tǒng)的失效主要由模塊5引起,且某一模塊的錯誤會引起整個軟件系統(tǒng)的失效.新的軟件系統(tǒng)結(jié)構(gòu)如圖2所示.

圖2 新增模塊后的軟件系統(tǒng)結(jié)構(gòu)示意圖

假設(shè)軟件系統(tǒng)對應(yīng)的輸入域為D,能夠觸發(fā)相應(yīng)軟件模塊i運行的輸入域為Di,且允許Di∩Dj≠Φ(i,j=1,2,3,4,5,且 i≠j).將 D 劃分為多個輸入子域,Di包含其中一個或幾個輸入子域,軟件模塊與其輸入域?qū)?yīng)關(guān)系如圖3所示.

圖3 輸入域和軟件模塊對應(yīng)圖

在進(jìn)行可靠性測試時,從系統(tǒng)輸入域D選取測試用例量為n,其中屬于Di的測試用例量為di.令,ki=di/n,表示所選取測試用例中能夠觸發(fā)模塊i運行的測試用例比例.由G-O模型[15],軟件系統(tǒng)累積發(fā)現(xiàn)錯誤個數(shù)的期望值為,

式中,a表示軟件系統(tǒng)中潛在的錯誤總數(shù),b表示單位時間錯誤被發(fā)現(xiàn)的概率.

對于圖2所示軟件系統(tǒng),設(shè)模塊i(i=1,2,3,4,5)中潛在錯誤數(shù)量為ai,單位時間錯誤被發(fā)現(xiàn)的概率為bi.由于任一模塊中的錯誤會引起系統(tǒng)的失效,且各軟件模塊錯誤被發(fā)現(xiàn)的概率與其被觸發(fā)運行的概率成正比,所以有,

又由對系統(tǒng)的假設(shè),可得到,a1=a2=a3=a4=0,b1=b2=b3=b4=0.將其代入式(4),得到a=a5,b=k5b5,代入式(3)便得到圖2所示軟件系統(tǒng)的累積發(fā)現(xiàn)錯誤個數(shù)的期望值,

由此,軟件系統(tǒng)的可靠性可表示為,

式中,q表示激活某一錯誤所對應(yīng)的平均輸入量,N表示系統(tǒng)輸入空間D所對應(yīng)總的輸入量.

假設(shè)測試用例n=500,平均運行時間為1 h/個,則可靠性增長測試總時間為500 h.令a5=20,b5=0.01,q=1,N=1 000,則當(dāng) k 分別為 0.05、0.1、0.5、1時,軟件系統(tǒng)可靠度隨測試時間的增長曲線如圖4所示.

圖4 系統(tǒng)可靠性增長曲線

由圖4可見,當(dāng)k=0.05時,只有5%的測試用例觸發(fā)了模塊5的執(zhí)行,這使得軟件中的錯誤發(fā)現(xiàn)率很低,導(dǎo)致系統(tǒng)可靠性增長十分緩慢;隨著k值的增大,當(dāng) k=0.1,0.5時,模塊5被觸發(fā)執(zhí)行的概率變高,軟件錯誤發(fā)現(xiàn)率也隨之增長,因此,軟件系統(tǒng)的可靠性增長速度加快;當(dāng)k=1時,n個測試用例全都能夠觸發(fā)模塊5的運行,這使得軟件系統(tǒng)中的錯誤更快地被發(fā)現(xiàn)并更正,相比前3條曲線,軟件系統(tǒng)可靠性增長最快.

以上結(jié)果表明,在軟件可靠性增長測試過程中,通過對重點模塊有針對性的選取測試用例進(jìn)行可靠性增長測試,可實現(xiàn)軟件系統(tǒng)可靠性的快速增長,縮短測試持續(xù)期,從而有效減少測試代價.

2 基于體系結(jié)構(gòu)的軟件可靠性測評方法

本研究提出的基于體系結(jié)構(gòu)的軟件可靠性測評方法如圖5所示.基于此方法開展軟件可靠性測評工作的具體步驟為:

1)將系統(tǒng)可靠性驗證指標(biāo)轉(zhuǎn)化為可靠性設(shè)計指標(biāo),作為系統(tǒng)設(shè)計和增長測試的指標(biāo)要求.

2)將可靠性設(shè)計指標(biāo)分配于各軟件模塊,作為模塊級設(shè)計和可靠性增長測試指標(biāo).

3)模塊集成后,若系統(tǒng)的可靠性尚未達(dá)到要求,則需對軟件開展系統(tǒng)級的可靠性增長測試.

4)當(dāng)軟件達(dá)到可靠性設(shè)計指標(biāo)后,進(jìn)行系統(tǒng)級的可靠性驗證測試.

3 測評實例

圖5 軟件可靠性測評方法流程圖

本研究以一個簡單的多模塊軟件的可靠性測評為例說明基于體系結(jié)構(gòu)的軟件可靠性測評方法的應(yīng)用.某系統(tǒng)要求實現(xiàn)數(shù)字篩選功能,其程序流程如圖6所示,對此系統(tǒng)進(jìn)行測評,要求其可靠性驗證指標(biāo)達(dá)到(p0,c)=(0.001,0.99),即失效率不高于0.001的置信度達(dá)到0.99.

圖6 程序流程圖

該示例的軟件系統(tǒng)體系結(jié)構(gòu)及模塊間控制傳遞概率如圖7所示.

圖7 示例軟件系統(tǒng)體系結(jié)構(gòu)示意圖

3.1 軟件可靠性指標(biāo)轉(zhuǎn)換

設(shè)軟件系統(tǒng)的可靠性驗證指標(biāo)為(p0,c),軟件系統(tǒng)的可靠性設(shè)計指標(biāo)為pp.其中,p0、pp表示軟件系統(tǒng)的可靠性驗證失效率和可靠性設(shè)計失效率,c為軟件可靠性置信度,0<c<1,且有,r0=1-p0,rp=1-pp.

從軟件可靠性驗證指標(biāo)的定義出發(fā)[5],允許軟件至多失效一次所需運行的軟件測試用例個數(shù)應(yīng)滿足下式n的最小值,

式中,f(p|1,n,a,b)表示失效概率 p的共軛先驗分布.設(shè)軟件在整個運行過程中平均的失效個數(shù)符合貝努力分布,在沒有先驗的情況下,a=b=1,則有,

將式(8)代入式(7)中,可得到,

由此,軟件可靠性設(shè)計失效率為,

利用式(10),可將軟件可靠性驗證指標(biāo)轉(zhuǎn)化為軟件可靠性設(shè)計指標(biāo).對于圖7所示系統(tǒng),將(p0,c)=(0.001,0.99)代入式(10),得到此軟件系統(tǒng)的設(shè)計指標(biāo),pp=0.00022.

3.2 軟件可靠性指標(biāo)分配

軟件可靠性指標(biāo)分配是在權(quán)衡軟件開發(fā)成本、現(xiàn)有開發(fā)技術(shù)等限制條件下,對軟件各模塊進(jìn)行合理的可靠性指標(biāo)分配,即通過分析各模塊可靠性對軟件系統(tǒng)可靠性的敏感性的不同,識別出對系統(tǒng)可靠性影響較大的模塊,并在模塊間合理分配可靠性設(shè)計指標(biāo).

在對可靠性敏感性分析時,可利用式(2)結(jié)論.本研究從各模塊在軟件系統(tǒng)運行中所占的時間比例著手,進(jìn)行可靠性指標(biāo)的分配.設(shè)πi為系統(tǒng)運行時間內(nèi)模塊i所占的運行時間比例.πi有如下約束,

式中,ti表示模塊單獨運行一次的時間,可由軟件編譯工具直接獲得,Xi表示運行過程中模塊執(zhí)行的平均次數(shù),可由軟件系統(tǒng)的DTMC模型求得[14];t表示系統(tǒng)運行一次各模塊運行的時間總和,若模塊間的控制傳遞時間忽略不計,則 t=∑ni=1ti×Xi.對于圖7所示軟件系統(tǒng),由式(11)可計算得到各模塊的πi值如表2所示.

表2 模塊 πi值

根據(jù)軟件可靠性定義[5],可將軟件可靠性指標(biāo)轉(zhuǎn)化為軟件失效密度指標(biāo),

其中x為常數(shù).在任一時刻,軟件系統(tǒng)的失效密度又可表示為各模塊失效密度的線性和,

由式(13)便可得到軟件系統(tǒng)可靠性對于軟件模塊i的可靠性的敏感度,

對軟件系統(tǒng)進(jìn)行可靠性指標(biāo)分配時,可按式(14)所示可靠性敏感度,將軟件系統(tǒng)的失效密度值按比例分配到各軟件模塊中.將pp=0.00022代入式(12)得到系統(tǒng)失效密度指標(biāo),λp=4.345×10-6(設(shè)x=50),再按式(14)可靠性敏感度將軟件系統(tǒng)的失效密度值按比例分配到各軟件模塊中,則由表2中πi值得到各模塊可靠性設(shè)計指標(biāo)為,

在模塊可靠性設(shè)計指標(biāo)指導(dǎo)下,合理調(diào)配測試資源,對軟件模塊級進(jìn)行可靠性增長測試,直到其達(dá)到可靠性設(shè)計指標(biāo).

3.3 軟件可靠性增長及驗證

軟件模塊集成后,利用已有失效數(shù)據(jù)可獲得系統(tǒng)當(dāng)前可靠性值,并由最大熵原則獲得先驗參數(shù)值a、b.根據(jù)基于貝葉斯的可靠性評價方法[16],系統(tǒng)執(zhí)行n個測試用例,其中有r個用例運行失敗,則系統(tǒng)失效概率的先驗分布為,

如果當(dāng)前可靠性尚未達(dá)到指標(biāo)要求,則需進(jìn)行系統(tǒng)級的可靠性增長測試,測試后的軟件系統(tǒng)失效概率的后驗期望值為,

軟件測試達(dá)到指標(biāo)要求后,就可對軟件開展驗證測試.若想系統(tǒng)滿足可靠性驗證指標(biāo)(p0,c),則系統(tǒng)的失效概率p需滿足,

將式(15)代入式(17),便得到驗證測試時,失效測試用例個數(shù)r和總共需要運行的測試用例個數(shù)n的函數(shù)關(guān)系,

若由軟件失效數(shù)的經(jīng)驗樣本值求得的先驗參數(shù)為,a=1,b=1 067,再將可靠性驗證指標(biāo),(p0,c)=(0.001,0.99),代入式(18),可得到 r和n的關(guān)系如表3所示.

表3 驗證測試用例表

根據(jù)表3可知,若軟件無失效的執(zhí)行3536個測試用例,則說明軟件達(dá)到可靠性驗證指標(biāo);但如果在執(zhí)行過程中出現(xiàn)一次失效,如在運行到第3021個測試用例時失敗,則還需運行5 573-3 021=2 552個測試用例,且其中不能有失效,才能證明軟件達(dá)到驗證指標(biāo);若已發(fā)現(xiàn)一個運行失效的測試用例,在運行到第5500個測試用例時又失敗,則還需無失效的運行6 269-5 500=869個測試用例,才能達(dá)到可靠性驗證指標(biāo).依此類推.

4 結(jié) 語

本研究在分析基于體系結(jié)構(gòu)測評重要性的基礎(chǔ)上提出了基于軟件系統(tǒng)體系結(jié)構(gòu)的可靠性測評方法,本方法將軟件可靠性增長測試和軟件可靠性驗證測試有機(jī)統(tǒng)一起來,并對此方法中的主要工作展開分析.這種方法可以更好地適應(yīng)現(xiàn)有多模塊、多任務(wù)軟件的可靠性測評工作,有利于可靠性快速增長,并通過利用先驗信息有效減少測試用例量.需要說明的是,本研究僅為軟件系統(tǒng)可靠性測評提出了一種解決方案,相關(guān)研究還需進(jìn)一步展開.

:

[1]Knight J C.Safety Critical System:Challenges and Directions[C]//Proceedings of the24th International Conference on Software Engineering.Orlando:IEEE Xplore,2002:547-550.

[2]Cukic B.Combining Testing and Correctness Verification in Software Reliability Assessment[C]//High-Assurance Systems Engineering Workshop.Washington:High-Assurance Systems Engineering Workshop,1997.

[3]Lyu M R.Software Reliability Engineering:A Roadm ap[C]//Future ofSoftware Engineering.Washington:IEEEComputer Society,2007.

[4]Musa J D,Okumoto K.Software Reliability:Measurement,Prediction,and application[M].New York:McGraw-Hill,1987.

[5]Lyu M R.Handbook on Software Reliability Engineering[M].New York:McGraw-Hill,1996.

[6]Prowell J S ,Trammell J C ,Linger R.et al.Cleanroom Softw are Engineering:Technology and Process[M].New York:Addison-Wesley Professional,1999.

[7]Bastani F B,Pasquini A.Assessment of a Sampling Method for Measuring Safety-critical Software Reliability[C]//Proc ISSRE94.Monterey:IEEE Xplore,1994.

[8]Thayer T A,Lipow M,Nelson E C.Software Reliability[M].North Holland:Holanda Publisher,1978.

[9]Pstein B,Sobel M.Sequential Life Tests in the Exponential Case[J].Annals of Mathematical Statistics,1953,26(3):82-95.

[10]Tal O ,MoCollin C ,Bendell A.Reliability Demonstration for Safety-c ritical Systems[J].IEEE Transactions on Reliability Engineering,2001,50(2):194-203.

[11]覃志東,雷航,桑楠,等.安全關(guān)鍵軟件可靠性驗證測試方法研究[J].航空學(xué)報,2005,26(3):334-339.

[12]Butler R W,F(xiàn)inelli G B.The Infeasibility of Quantifying the Reliability of Life-critical Real-time Software[J].IEEE Transactions on Software Enginneering,1993,19(1):3-12.

[13]Cheung R C.A User-oriented Software Reliability Model[J].Software Engineering,1980 ,SE-6(2):118-125.

[14]Sharma V S,Trivedi K S.Quantifying Software Performance,Reliability and Security:An Architecture-based Approach[J].Journal of Systems and Software,2006,80(4):493-509.

[15]Goel A L,Okumoto K.Time-dependent Error-detection Rate Model for Software Reliability and Other Performance Measures[J].IEEE Transactions on Reliability Engineering,1979 ,R-28(3):206-211.

[16]Littlewood B,Wright D.Some Conservative Stopping Rules for the Operational Testing of Safety Critical Software[J].IEEE Transactionson Reliability Engineering ,1997,43(11):673-683.

Reliability Evaluation Research and Practice of Architecture-based Software

QI Bei,QIN Zhidong

(School of Computer Science and Technology,Donghua University,Shanghai 201620,China)

Abstract:As to the problems that the traditional high reliability evaluation methods exposed,an architec ture-based software reliability evaluation methodwas proposed,based on the analysis of importance of archi tecture-based software reliability testing.This method consolidates software growth testing with software demonstration testing,monitoring reliability from the modules'level and it can serve priori information of software reliability,which can realize the rapid growth of software reliability and effectively reduce the amount of test cases.

Key words:software reliability;reliability evaluation;software architecture;software testing

TP311.52

A

1004-5422(2012)04-0336-06

2012-10-16.

國家自然科學(xué)基金(50973014)、中央高?;究蒲袠I(yè)務(wù)費專項基金(11D11209)資助項目.

齊 蓓(1987—),女,碩士研究生,從事軟件可靠性測評技術(shù)研究.

猜你喜歡
軟件可靠性測試用例體系結(jié)構(gòu)
基于SmartUnit的安全通信系統(tǒng)單元測試用例自動生成
軟件可靠性工程綜合應(yīng)用建模技術(shù)研究
基于混合遺傳算法的回歸測試用例集最小化研究
基于粒計算的武器裝備體系結(jié)構(gòu)超網(wǎng)絡(luò)模型
作戰(zhàn)體系結(jié)構(gòu)穩(wěn)定性突變分析
數(shù)控系統(tǒng)軟件可靠性設(shè)計與故障分析技術(shù)
基于DODAF的裝備體系結(jié)構(gòu)設(shè)計
基于云計算的航天器控制系統(tǒng)自組織體系結(jié)構(gòu)
基于依賴結(jié)構(gòu)的測試用例優(yōu)先級技術(shù)
簡談使用BoundsChecker進(jìn)行計算機(jī)聯(lián)鎖系統(tǒng)人機(jī)界面軟件可靠性測試
德化县| 偏关县| 晋江市| 东安县| 寿光市| 德化县| 汪清县| 比如县| 五莲县| 托里县| 洛阳市| 迁安市| 彭州市| 同心县| 清原| 廊坊市| 嘉兴市| 宿州市| 岱山县| 缙云县| 延津县| 莱州市| 富裕县| 迁安市| 沅陵县| 沁阳市| 深泽县| 清镇市| 宜城市| 吉水县| 邯郸县| 商丘市| 碌曲县| 南靖县| 富源县| 乐东| 大丰市| 丹棱县| 吉木乃县| 昌黎县| 泰兴市|