




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十一章軟件可靠性第一節(jié)軟件可靠性的基本概念------------------------(6)一、軟件的環(huán)境條件-------------------------(8)三、軟件的故障----------------------------(11)四、影響軟件可靠性因素-------------------(15)第二節(jié)軟件可靠性的基本特征量-------------(21)二、時(shí)間的度量------------------------------(10)第三節(jié)軟件可靠性的數(shù)學(xué)模型------------------------(29)一、軟件可靠性建模概述-------------------(29)二、J-M(Jelinski—Moranda)模型-----(36)三、Halstead模型------------------------------(45)四、G-O(Goel一Okumoto)NHPP模型---------------------------------(50)1隨著計(jì)算機(jī)軟件的飛速發(fā)展,軟件可靠性已變得越來(lái)越重要。據(jù)統(tǒng)計(jì),計(jì)算機(jī)系統(tǒng)中,由于軟件錯(cuò)誤引起的故障占所有故障的65%。第十一章軟件可靠性究其原因是軟件太復(fù)雜了,一個(gè)小小的程序,其可能的路徑可以是天文數(shù)字,以致于在軟件開(kāi)發(fā)過(guò)程中難以對(duì)其作窮盡的測(cè)試,或者說(shuō)難于完全排除軟件缺陷。2圖11-1簡(jiǎn)單程序的控制流程圖
為了說(shuō)明軟件的復(fù)雜性,讓我們考慮一個(gè)由10至20條高級(jí)語(yǔ)言構(gòu)成的程序,其控制流程圖如圖11-1所示。3圖11-1中每個(gè)結(jié)點(diǎn)或圓圈代表一段可能以轉(zhuǎn)移語(yǔ)句結(jié)束的順序執(zhí)行語(yǔ)句,每條弧代表兩段程序間的控制轉(zhuǎn)移。程序含有一個(gè)最少重復(fù)20次的循環(huán)語(yǔ)句,而在循環(huán)體內(nèi),則有一些嵌套的條件語(yǔ)句。假設(shè)程序中所有判斷都是相互獨(dú)立的,由于有5條貫穿循環(huán)體的路徑:即①c→d→e→f→h→m;圖11-1簡(jiǎn)單程序的控制流程圖
②c→d→e→f→i→m;③
c→d→e→g→j→m;④
c→d→e→g→k→m;⑤c→d→l→m。4可見(jiàn),軟件可靠性問(wèn)題在軟件工程實(shí)踐中極為重要,對(duì)軟件可靠性問(wèn)題的研究在國(guó)際上已十分活躍。
圖11-1簡(jiǎn)單程序的控制流程圖
那么從點(diǎn)A到點(diǎn)B的所有獨(dú)立路徑數(shù)為:如果考慮程序輸入數(shù)據(jù)的變化,那情況就更為復(fù)雜了。
5廣義的可靠性是指一切旨在避免、減少、處理、度量軟件故障(錯(cuò)誤、缺陷、失效)的分析、設(shè)計(jì)、測(cè)試方法、技術(shù)和實(shí)踐活動(dòng)。第一節(jié)軟件可靠性的基本概念關(guān)于軟件可靠性的確切定義,國(guó)際學(xué)術(shù)界曾經(jīng)有過(guò)長(zhǎng)期的爭(zhēng)論。對(duì)軟件可靠性定義的理解有廣義和狹義兩種:廣義的可靠性:與之相關(guān)的內(nèi)容有軟件可靠性度量、軟件可靠性設(shè)計(jì)、軟件可靠性建模、軟件可靠性測(cè)試和軟件可靠性管理等。6狹義的可靠性:狹義的可靠性是指在工程上軟件在規(guī)定的運(yùn)行環(huán)境中和規(guī)定的時(shí)間內(nèi)無(wú)故障運(yùn)行的概率(可靠度)。與之相關(guān)的內(nèi)容有軟件可靠性度、軟件失效強(qiáng)度和軟件平均失效時(shí)間等。7一、軟件的環(huán)境條件例如計(jì)算機(jī)型號(hào)、字長(zhǎng)、內(nèi)存容量、外存介質(zhì)的數(shù)量及容量、輸入和輸出設(shè)備的數(shù)量、通信網(wǎng)絡(luò)、操作系統(tǒng)和數(shù)據(jù)管理系統(tǒng)、編譯程序及其他支持軟件等。環(huán)境條件還包括軟件的輸入分布。軟件的輸入有外部和內(nèi)部輸入。環(huán)境條件包括與程序存儲(chǔ)有關(guān)的計(jì)算機(jī)及其操作系統(tǒng)。這些因素對(duì)程序的運(yùn)行有很大的影響,但在使用中一般沒(méi)有變化。8程序運(yùn)行一次所需的輸入數(shù)據(jù)構(gòu)成程序輸入空間的一個(gè)元素,這個(gè)元素是一個(gè)多維向量。全部輸入向量的集合構(gòu)成程序的輸入空間。程序在啟動(dòng)運(yùn)行時(shí),需要給變量賦值,即給程序提供輸入數(shù)據(jù),輸入的數(shù)據(jù)可能由外部設(shè)備輸入,也可能由早已存儲(chǔ)在計(jì)算機(jī)內(nèi)等待讀取。一組輸入數(shù)據(jù)經(jīng)過(guò)程序處理后得到一組輸出數(shù)據(jù),這些輸出數(shù)據(jù)構(gòu)成一個(gè)輸出向量,全部輸出向量的集合構(gòu)成程序的輸出空間。
程序輸入空間的元素?cái)?shù)量非常龐大,程序運(yùn)行中每個(gè)元素被選用的概率各不相同,形成一定的概率分布,我們稱此為程序運(yùn)行剖面,程序的不同的運(yùn)行狀態(tài),對(duì)應(yīng)于不同的運(yùn)行剖面。9二、時(shí)間的度量1.日歷時(shí)間軟件的測(cè)試和運(yùn)行以日、周、月、年等為計(jì)時(shí)單位。2.時(shí)鐘時(shí)間軟件從運(yùn)行開(kāi)始到運(yùn)行結(jié)束以時(shí)、分、秒為計(jì)時(shí)單位。其中包括等待時(shí)間和其他輔助時(shí)間,但不包括停機(jī)占用時(shí)間。3.執(zhí)行時(shí)間計(jì)算機(jī)在執(zhí)行程序時(shí),實(shí)際占用中心處理器(CPU)的時(shí)間,又稱CPU時(shí)間。以CPU時(shí)間為可靠性度量的時(shí)間。例如,某軟件在一周內(nèi)運(yùn)行48小時(shí),CPU工作的時(shí)間是運(yùn)行時(shí)間的2/3,則日歷時(shí)間是一周;時(shí)鐘時(shí)間是48小時(shí),CPU時(shí)間是32小時(shí)。10軟件可靠性工程的主要目標(biāo)是保證提高軟件可靠性。為達(dá)到這一目標(biāo),顯然首先要弄清軟件為什么會(huì)出現(xiàn)故障。只有這樣,才有可能在軟件開(kāi)發(fā)過(guò)程中減少導(dǎo)致軟件故障的隱患,且一旦出現(xiàn)什么故障,有可能采取有效措施加以清除。
三、軟件的故障弄清軟件故障機(jī)理是軟件可靠性分析的根本目標(biāo)。由于軟件內(nèi)部邏輯復(fù)雜,運(yùn)行環(huán)境動(dòng)態(tài)變化,且不同的軟件差異可能很大,因而軟件故障機(jī)理可能有不同的表現(xiàn)形式。
譬如有的故障過(guò)程比較簡(jiǎn)單,易于追蹤分析,而有的故障過(guò)程可能非常復(fù)雜,難于甚至不可能加以詳盡描述和分析。尤其是運(yùn)行于高度復(fù)雜實(shí)時(shí)環(huán)境中的大型軟件。111.軟件缺陷
軟件開(kāi)發(fā)中殘留的內(nèi)在缺陷稱為軟件缺陷。這些缺陷可以在軟件生存期的各個(gè)階段被引入。
軟件故障機(jī)理可描述為:軟件缺陷、軟件錯(cuò)誤和軟件故障。
缺陷→錯(cuò)誤
→故障(失效)在軟件開(kāi)發(fā)的各階段,軟件始終離不開(kāi)人的參與,而人難免會(huì)犯錯(cuò)誤,這樣就必然給軟件留下不良的痕跡。例如一段程序進(jìn)行某些數(shù)據(jù)處理,若在處理過(guò)程中就產(chǎn)生軟件錯(cuò)誤,則說(shuō)明這段程序存在缺陷或缺少一個(gè)程序段。12
軟件缺陷是一個(gè)靜止的現(xiàn)象,只在一定的輸入條件下才能被激活導(dǎo)致軟件錯(cuò)誤,而且軟件錯(cuò)誤也不一定導(dǎo)致軟件故障。比如容錯(cuò)軟件中的錯(cuò)誤就可以被檢測(cè)出來(lái)并可糾正或避免,而不導(dǎo)致故障。
軟件缺陷在一定條件下暴露并導(dǎo)致系統(tǒng)在運(yùn)行中出現(xiàn)可感知的不正常、不正確、不按規(guī)范執(zhí)行的內(nèi)部狀態(tài),則認(rèn)為軟件出現(xiàn)“錯(cuò)誤”,簡(jiǎn)稱出錯(cuò)。2.軟件錯(cuò)誤
軟件錯(cuò)誤是由于軟件缺陷造成的。一個(gè)錯(cuò)誤可能是多個(gè)故障源。例如,在求最大值的程序中,設(shè)計(jì)人員由于疏忽將求得的平均值作為最大值,這就是一個(gè)軟件錯(cuò)誤。
所謂不正確的內(nèi)部狀態(tài),是指在此狀態(tài)下,當(dāng)正常的算法繼續(xù)下去時(shí),就會(huì)發(fā)生軟件故障。13在對(duì)錯(cuò)誤不作任何糾正和恢復(fù)的情況下,導(dǎo)致系統(tǒng)的輸出不滿足用戶提供的正式文件上指明的要求,或雙方協(xié)議的條款,稱為軟件的一次故障。3.軟件故障軟件故障是由于軟存錯(cuò)誤造成的一種外部表現(xiàn),它是動(dòng)態(tài)的、程序執(zhí)行過(guò)程中出現(xiàn)的行為表現(xiàn)。綜上所述,軟件缺陷是人為錯(cuò)誤。當(dāng)一個(gè)軟件缺陷被激活時(shí),便產(chǎn)生一個(gè)或多個(gè)軟件錯(cuò)誤;當(dāng)軟件錯(cuò)誤不加以糾正時(shí),便不可避免地產(chǎn)生軟件故障。同一個(gè)軟件缺陷下可能產(chǎn)生不同的軟件故障。14
軟件可靠性因素是指軟件生存期內(nèi)影響軟件可靠性的因素。顯然,有許許多多因素可以影響軟件可靠性,包括技術(shù)的、社會(huì)的、經(jīng)濟(jì)的、甚至文化的,因?yàn)樵谲浖嫫诘母鱾€(gè)階段均有人的干預(yù),而人的行為受到各方面因素的影響。
四、影響軟件可靠性因素從技術(shù)角度來(lái)看,影響軟件可靠性的因素主要包括以下幾個(gè)方面:
軟件可靠性定義相對(duì)于運(yùn)行環(huán)境而言,同一軟件在不同運(yùn)行剖面下,其可靠性行為可能極不相同。1.運(yùn)行環(huán)境(剖面)讓我們考慮一個(gè)極端例子。我們知道,軟件故障是軟件缺陷在一定輸入情況下被激活的結(jié)果。于是可以將軟件輸入域劃分為兩個(gè)部分(G和F):15
G中的輸入不會(huì)激活軟件的缺陷,F(xiàn)中的輸入恒激活軟件缺陷。如果運(yùn)行剖面不包含F(xiàn)中的輸入,則軟件不會(huì)出現(xiàn)故障,其可靠性恒為1。反之,如果運(yùn)行剖面不包含G中的輸入,則每一輸入情況下均出現(xiàn)故障。如果沒(méi)有容錯(cuò)措施,則導(dǎo)致軟件故障,軟件可靠性恒為0。
16如果軟件只含一條指令,那么談?wù)撥浖煽啃詥?wèn)題便失去意義。隨著軟件規(guī)模的增大,軟件可靠性問(wèn)題愈顯突出。2.軟件規(guī)模軟件工程實(shí)踐的一個(gè)側(cè)面可以反映這一點(diǎn),即單元測(cè)試一般由編程人員本人進(jìn)行,而綜合測(cè)試則需獨(dú)立的測(cè)試人員。軟件可靠性增長(zhǎng)模型也主要應(yīng)用于綜合測(cè)試階段。在我們考慮軟件可靠性問(wèn)題時(shí),軟件一般是指中型以上軟件(4000~5000條以上語(yǔ)句),這時(shí)可靠性問(wèn)題難以對(duì)付。17軟件內(nèi)部結(jié)構(gòu)一般比較復(fù)雜,且動(dòng)態(tài)變化,對(duì)可靠性的影響也不甚清楚。3.軟件內(nèi)部結(jié)構(gòu)關(guān)于軟件可靠性設(shè)計(jì)技術(shù)的外延并不明確,但一般是指軟件設(shè)計(jì)階段中采用的用以保證和提高軟件可靠性為主要目標(biāo)的軟件技術(shù)。如故障模式與影響分析(FMECA)、故障樹(shù)分析(FTA)等。顯然采用或不采用軟件可靠性設(shè)計(jì)技術(shù)對(duì)軟件可靠性必有影響。4.軟件可靠性設(shè)計(jì)技術(shù)。但總的說(shuō)來(lái),結(jié)構(gòu)越復(fù)雜,軟件復(fù)雜度越高,內(nèi)含缺陷數(shù)越多,因而軟件可靠度越低。
18顯然,軟件開(kāi)發(fā)人員(包括測(cè)試人員)的能力愈強(qiáng),經(jīng)驗(yàn)愈豐富,所犯錯(cuò)誤便可能愈少,所得軟件產(chǎn)品質(zhì)量愈高,相應(yīng)的可靠性也愈高。
5.軟件可靠性測(cè)試軟件可靠性管理旨在系統(tǒng)管理軟件生存期各階段的可靠性活動(dòng)。使之系統(tǒng)化、規(guī)范化、一體化,這樣就可以避免許多人為錯(cuò)誤,以提高軟件可靠性。研究表明,軟件測(cè)試方法與資源投入對(duì)軟件可靠性有不可忽視的影響。6.軟件可靠性管理7.軟件開(kāi)發(fā)人員能力和經(jīng)驗(yàn)19研究表明,程序語(yǔ)言對(duì)軟件可靠性有影響。譬如,結(jié)構(gòu)化語(yǔ)言Ada優(yōu)于Fortran語(yǔ)言,而軟件測(cè)試工具優(yōu)劣則影響測(cè)試效果。軟件工程表明,開(kāi)發(fā)方法對(duì)軟件可靠性有顯著影響。與非結(jié)構(gòu)化方法比較,結(jié)構(gòu)化方法可以明顯減少軟件缺陷數(shù)??傊?,有許許多多的因素影響軟件可靠性,在軟件設(shè)計(jì)時(shí)應(yīng)盡量采用有利于提高軟件可靠性的手段和方法。8.軟件開(kāi)發(fā)方法9.軟件開(kāi)發(fā)環(huán)境返回120軟件質(zhì)量主要由以下幾個(gè)方面因素決定。第二節(jié)軟件可靠性的基本特征量
①時(shí)間因素:包括平均故障間隔時(shí)間(MIBF)、平均失效前時(shí)間(MTTF)、平均系統(tǒng)不工作間隔時(shí)間(MTBD)、平均修復(fù)時(shí)間(MTTR)。
②缺陷頻數(shù):包括軟件缺陷數(shù)、文件缺陷數(shù)和用戶提出的補(bǔ)充要求數(shù)等。
③與軟件可靠性有關(guān)的百分率:主要包括可靠性、有效性、可維護(hù)性、故障率、不合格率、延遲率、錯(cuò)誤操作率、原因不明率、同故障事件率、可靠性經(jīng)濟(jì)率等。21⑥使用方特征:包括使用軟件的系統(tǒng)的特點(diǎn)(如實(shí)時(shí)系統(tǒng)、嵌入式系統(tǒng)),需根據(jù)軟件的特點(diǎn),選擇適當(dāng)?shù)目煽啃詤?shù)作為軟件質(zhì)量指標(biāo)。
④對(duì)軟件的投入:包括完成軟件用了不同水平的工作人員的工作日數(shù)或工時(shí)數(shù)和對(duì)軟件的檢查項(xiàng)目數(shù)及對(duì)用戶提出的要求采取對(duì)策的費(fèi)用等。
⑤軟件特征:包括軟件的復(fù)雜性、標(biāo)準(zhǔn)化程度、壽命周期、結(jié)構(gòu)及規(guī)模大小等。顯然,軟件質(zhì)量是眾多因素及指標(biāo)的綜合反映,在軟件可靠性評(píng)估中,需根據(jù)軟件的特點(diǎn),選擇適當(dāng)?shù)目煽啃詤?shù)作為軟件質(zhì)量指標(biāo)。22軟件常用的可靠性參數(shù)有以下幾種:在一定時(shí)期內(nèi),由于軟件故障而停止工作,必須由操作者介入再啟動(dòng)才能繼續(xù)工作的次數(shù)稱為系統(tǒng)不工作次數(shù)。1.系統(tǒng)不工作次數(shù)系統(tǒng)平均不工作間隔時(shí)間反映了系統(tǒng)的穩(wěn)定性。2.系統(tǒng)平均不工作間隔時(shí)間(MTBD)233.有效性(A)有效性A綜合反映了系統(tǒng)的可靠性和維修性。MDT—平均不工作的時(shí)間(h)。24平均修復(fù)時(shí)間反映了出現(xiàn)軟件缺陷后采取對(duì)策的效率。在一定程度上也反映了軟件企業(yè)對(duì)社會(huì)服務(wù)的責(zé)任心。4.平均修復(fù)時(shí)間(MTTR)平均不工作時(shí)間是指由于軟件故障,系統(tǒng)不工作的均值。
5.平均不工作時(shí)間(MDT)一般以軟件交付使用方后的三個(gè)月內(nèi)為初期故障期。初期故障率以每100h的故障為單位,用它來(lái)評(píng)價(jià)交付使用時(shí)的軟件質(zhì)量和預(yù)測(cè)什么時(shí)候軟件可靠性基本穩(wěn)定。6.初期故障率初期故障率的大小取決于軟件的設(shè)計(jì)水平、檢查項(xiàng)目數(shù)、軟件規(guī)模、軟件調(diào)試徹底與否等因素。25一般以軟件交付給使用方四個(gè)月后為偶然故障期。偶然故障率一般以每1000h的故障數(shù)為單位,它反映了軟件處于穩(wěn)定狀態(tài)下的質(zhì)量。
7.偶然故障率使用方不按照軟件規(guī)范及說(shuō)明等文件使用造成的錯(cuò)誤叫“使用方錯(cuò)誤”。在使用次數(shù)中,使用方誤用次數(shù)占的百分率叫“使用方誤用率”。8.使用方誤用率造成使用方法誤用的原因之一是使用方對(duì)“說(shuō)明”理解不深,操作不熟練,但也有可能是說(shuō)明書(shū)沒(méi)有講清楚而引起誤解。26另外還有軟件系統(tǒng)的可操作性還應(yīng)改進(jìn)、對(duì)使用方的使用培訓(xùn)還不夠深入等。
生產(chǎn)方有責(zé)任及時(shí)調(diào)查使用方誤用的原因,對(duì)軟件功能加以改進(jìn)。
用戶提出補(bǔ)充要求數(shù)主要是反映軟件未能充分滿足用戶的需要,有些要求是特定用戶的特殊要求,生產(chǎn)方為了更好地為社會(huì)服務(wù),應(yīng)該盡力滿足他們的要求。9.用戶提出補(bǔ)充要求數(shù)
有些要求是帶有普遍性的,這就要求給予足夠重視,因?yàn)樗从沉嗽瓉?lái)的軟件功能還不夠全面。27處理能力有各種指標(biāo),例如,可用每小時(shí)平均處理多少文件、每項(xiàng)工作的反映時(shí)間多少等來(lái)表示,具體情況根據(jù)需要而定。
在評(píng)價(jià)軟件及系統(tǒng)的經(jīng)濟(jì)效益時(shí)需用這項(xiàng)指標(biāo)。10.處理能力返回128第三節(jié)軟件可靠性的數(shù)學(xué)模型軟件可靠性建模是在根據(jù)與軟件可靠性(故障)有關(guān)的數(shù)據(jù)以統(tǒng)計(jì)方法給出軟件可靠性的估計(jì)值或預(yù)測(cè)值,是從本質(zhì)上理解軟件可靠性行為的關(guān)鍵之一。
一、軟件可靠性建模概述軟件可靠性建?;顒?dòng)最早可追溯到Hudson的工作,他當(dāng)時(shí)以隨機(jī)生滅過(guò)程描述軟件缺陷的引入和剔除過(guò)程,并證明被剔除的缺陷數(shù)服從二項(xiàng)式分布,其均值時(shí)間函數(shù)具有威布爾(Weibull)分布形式。
軟件可靠性建模研究真正獲得重視始于60年代末“軟件危機(jī)”的提出,并在70年代獲得巨大的發(fā)展。291.模型種類(lèi)
Jelinski和Moranda于1972年正式出版有關(guān)他們的模型的論著。這一模型是軟件可靠性系統(tǒng)研究的真正開(kāi)端,至今在軟件可靠性建模方面仍具有重要意義,這是因?yàn)椋?/p>
(1)Jelinski-Moranda模型軟件可靠性模型主要有以下8種模型:①這一模型首次將硬件可靠性的基本概念,如可靠度、故障強(qiáng)度(率)等,系統(tǒng)地引入軟件可靠性領(lǐng)域;②這一模型確立了軟件可靠性建模的黑箱方法,即不涉及軟件內(nèi)部結(jié)構(gòu),僅依據(jù)軟件外部行為(輸入輸出關(guān)系)刻畫(huà)軟件可靠性行為;③這一模型給出了軟件可靠性建模的兩個(gè)主要假設(shè):一是測(cè)試用例的選取代表軟件實(shí)際運(yùn)行剖面;二是不同軟件故障獨(dú)立發(fā)生;30④這一模型簡(jiǎn)單,眾多的后續(xù)模型可視為這一模型的某種變形。
Halstead依據(jù)其“軟件科學(xué)”的思想于1972年提出此模型,試圖利用軟件復(fù)雜度確定軟件缺陷數(shù)。(2)Halstead模型此模型的重要性在于它可應(yīng)用于軟件開(kāi)發(fā)的早期階段(軟件測(cè)試之前)。隨著軟件可靠性設(shè)計(jì)地位的提高,此模型的重要性也將顯著增長(zhǎng)。Littlewood和Verrall于1973年發(fā)表此模型,其主導(dǎo)思想是將軟件故障強(qiáng)度視為隨機(jī)變量,從而開(kāi)創(chuàng)了軟件可靠性建模的Bayes方法。此模型也間接考慮了發(fā)現(xiàn)的缺陷不被完全剔除的可能性。(3)Littlewood-Verrall模型31Musa于1975年發(fā)表此模型,主要貢獻(xiàn)在于提出將CPU執(zhí)行時(shí)間作為軟件可靠性的時(shí)間基準(zhǔn)。(4)Musa執(zhí)行時(shí)間模型Nelson最早于1973年提出一個(gè)基于數(shù)據(jù)域模型并于1978年得以完善。此模型是基于數(shù)據(jù)域模型的代表,成為目前應(yīng)用最多的模型之一。
(5)Sukert模型比較工作Sukert于1976年給出其關(guān)于不同模型的分析比較的試驗(yàn)報(bào)告,開(kāi)創(chuàng)了軟件可靠性模型比較研究的先河。模型比較研究已成為建模研究的一個(gè)基本方面。(6)Nelson模型32
GoeI和Okumoto于1978年發(fā)表此模型,將軟件故障次數(shù)描述為非齊次Poisson過(guò)程。此模型是NHPP模型的代表。
(7)Goel—OkumotoNHPP模型Musa于1979年發(fā)表了一批軟件可靠性數(shù)據(jù),對(duì)軟件可靠性建模研究產(chǎn)生重要影響。目前已成為軟件可靠性建模研究的“標(biāo)準(zhǔn)”參考數(shù)據(jù)。之后Musa,Ianninohe和Okumoto于1987年又發(fā)表了“軟件可靠性”一書(shū),在軟件可靠性領(lǐng)域頗受推崇。該書(shū)首次對(duì)眾多軟件可靠性模型給出了統(tǒng)一的數(shù)學(xué)描述。
(8)Musa軟件可靠性數(shù)據(jù)332.模型組成軟件可靠性模型通常由以下幾個(gè)部分組成:(1)模型假設(shè)模型是實(shí)際情況的簡(jiǎn)化或規(guī)范化,總要包含若干假設(shè)。
此假設(shè)認(rèn)為軟件測(cè)試用例的選取代表軟件實(shí)際的運(yùn)行剖面,甚至認(rèn)為測(cè)試用例是獨(dú)立隨機(jī)地選取。①代表性假設(shè)此假設(shè)實(shí)質(zhì)上是指可以用測(cè)試產(chǎn)生的軟件可靠性數(shù)據(jù)預(yù)測(cè)運(yùn)行階段的軟件可靠性行為。此假設(shè)認(rèn)為軟件故障是獨(dú)立發(fā)生于不同時(shí)刻,一個(gè)軟件故障的發(fā)生不影響另一個(gè)軟件故障的發(fā)生。譬如在概率范疇內(nèi),假設(shè)相鄰軟件故障間隔構(gòu)成一組獨(dú)立隨機(jī)變量,或假設(shè)一定時(shí)間內(nèi)軟件故障次數(shù)構(gòu)成一個(gè)獨(dú)立增量過(guò)程。②獨(dú)立性假設(shè)34此假設(shè)認(rèn)為所有軟件故障的后果(等級(jí))相同,即建模過(guò)程只考慮軟件故障的具體發(fā)生時(shí)刻,不區(qū)分軟件故障的性質(zhì)。③相同性假設(shè)軟件可靠性模型的輸出量變?yōu)樾阅芏攘?,如故障?qiáng)度、殘留缺陷數(shù)、可靠度等。在軟件可靠性模型中性能度量通常以數(shù)學(xué)表達(dá)式給山。(2)性能度量某些可靠性度量的實(shí)際值無(wú)法直接獲得(如殘留缺陷數(shù)),這時(shí)需通過(guò)一定的方法估計(jì)參數(shù)的值,從而間接確定可靠性度量的值。(3)參數(shù)估計(jì)方法當(dāng)然,對(duì)于可直接獲得實(shí)際值的可靠性度量,便無(wú)需參數(shù)估計(jì)了。
35一個(gè)軟件可靠性模型要求一定的輸入數(shù)據(jù),即軟件可靠性數(shù)據(jù)。不同類(lèi)型的軟件可靠性模型可能要求不同類(lèi)型的軟件可靠性數(shù)據(jù)。(4)數(shù)據(jù)要求本書(shū)僅介紹三種最常用的軟件模型。二、J-M(Jelinski—Moranda)模型J–M模型是最早的軟件可靠性馬爾科夫過(guò)程的數(shù)學(xué)模型,沿用了硬件可靠性的方法。
J–M的假設(shè)是:
①軟件最初的錯(cuò)誤數(shù)為常值N。用
(i=1,2,…,N)表示在第(i-1)個(gè)錯(cuò)誤被改正后,軟件投入運(yùn)行至第i次故障發(fā)生前這個(gè)階段的時(shí)間,且故障間隔時(shí)間
是統(tǒng)計(jì)獨(dú)立的。36④每次故障后總有并僅有一個(gè)錯(cuò)誤被排除,因此,系統(tǒng)的故障率是階梯式下降的。
③每個(gè)軟件錯(cuò)誤一經(jīng)發(fā)現(xiàn)立即被修正,且不考慮修改錯(cuò)誤的時(shí)間,也不產(chǎn)生新的錯(cuò)誤。
②在兩個(gè)相繼故障構(gòu)成的時(shí)間間隔內(nèi),軟件的故障率為常數(shù),其大小正比于軟件中的殘存錯(cuò)誤數(shù)。1.可靠性特征量(1)按上述假設(shè)得出的軟件系統(tǒng)故障的密度函數(shù)為:37
(2)故障率為:(3)可靠度函數(shù)為:382.可靠性特征量估計(jì)
模型的待估參數(shù)為φ和N。設(shè)t1,t2,…,tn是試驗(yàn)中實(shí)際測(cè)得的n次故障發(fā)生的時(shí)間間隔,則其極大似然方程為:
運(yùn)用極大似然估計(jì)法,則39可得模型參數(shù)的極大似然估計(jì)值和分別為
發(fā)現(xiàn)n
個(gè)軟件錯(cuò)誤后,停止測(cè)試。此時(shí),軟件的可靠性水平為
(1)殘存錯(cuò)誤數(shù)
40
(2)故障率(3)可靠度(4)平均無(wú)故障工作時(shí)間MTBF41
例11-1Jelinski和Moranda曾在美國(guó)海軍艦隊(duì)計(jì)算機(jī)程序編制中心利用海軍戰(zhàn)術(shù)數(shù)據(jù)系統(tǒng)(NTDS)的軟件故障數(shù)據(jù),對(duì)他們的模型作了驗(yàn)證。NTDS包括38個(gè)不同的模塊,每個(gè)模塊都經(jīng)過(guò)開(kāi)發(fā)、測(cè)試、使用三個(gè)階段。驗(yàn)證所用的故障數(shù)據(jù)是取自兩個(gè)大型模塊的軟件反饋報(bào)告。這個(gè)模塊在設(shè)計(jì)階段共發(fā)現(xiàn)了26個(gè)錯(cuò)誤,測(cè)試階段又發(fā)現(xiàn)了5個(gè)(表11-1中27-31)錯(cuò)誤,在使用階段又發(fā)現(xiàn)了3個(gè)(表11-1中32-34)錯(cuò)誤。NTDS的數(shù)據(jù)見(jiàn)表11-1,J-M根據(jù)交付使用前的數(shù)據(jù)計(jì)算的結(jié)果也示于表11-1(見(jiàn)下頁(yè))。42階段錯(cuò)誤數(shù)n錯(cuò)誤間隔時(shí)間(日)累計(jì)時(shí)問(wèn)(日)J.M預(yù)計(jì)的故障時(shí)問(wèn)設(shè)計(jì)階段1234567891011121314151617181920212223242526912114725857161941386113379121921323643455058637071777887919295981041051161491562472492504.74.85.95.25.45.65.86.06.36.66.97.27.68.08.59.09.610.311.112.013.014.315.917.820.323.5表11-1NTDS數(shù)據(jù)及預(yù)計(jì)結(jié)果4328.13378727測(cè)試階段8493481433總的錯(cuò)誤數(shù)故障率系數(shù)79832使用階段121.75401353166.440593045.6396122934.83844728J.M預(yù)計(jì)的故障時(shí)間累積時(shí)間(日)錯(cuò)誤間隔時(shí)間(日)錯(cuò)誤數(shù)n階段表11-1續(xù)表估計(jì)軟件共有31.2個(gè)錯(cuò)誤。實(shí)際上,此軟件三個(gè)階段共有34個(gè)錯(cuò)誤,可見(jiàn)計(jì)算結(jié)果與實(shí)際數(shù)據(jù)大致吻合。442.模型假設(shè)三、Halstead模型1.模型類(lèi)別:靜態(tài)經(jīng)驗(yàn)?zāi)P汀?1)程序是良好結(jié)構(gòu)化的,即程序不包含操作符、操作數(shù)、表達(dá)式的問(wèn)題。(2)以下方程近似成立:
—為程序中不同操作數(shù)個(gè)數(shù)。
式中:
—為程序中不同操作符個(gè)數(shù);
其中:—為程序中操作符出現(xiàn)總次數(shù);
—為程序中操作數(shù)出現(xiàn)總次數(shù)。
45程序殘留缺陷N
的估計(jì)值為3.參數(shù)估計(jì)這里V表示程序容量,即46
例11-2某一匯編語(yǔ)言程序,由9個(gè)模塊組成,包含約24955條匯編語(yǔ)言指令,如表11-2所列。表11-2某匯編程序原始數(shù)據(jù)及計(jì)算結(jié)果模塊指令條數(shù)缺陷數(shù)決策點(diǎn)數(shù)調(diào)用次數(shù)l1l2MA403210237228347l442102MB1329812154418017618MC54539355236261057493MDl6742611l13023120l26ME205l7131519736613871MF25133721718632228737MG69916104321317616MH37925023311025260350MX3412804162304333578047假設(shè)每條指令包含一個(gè)操作符和一個(gè)操作數(shù),則解:
其中,64表示總共有64種機(jī)器語(yǔ)言指令。那么可由式(11-11)計(jì)算,代入式(11-12)可以得到程序殘留缺陷的估計(jì)值,見(jiàn)表11-2中最后一列中的值。
48由以上分析可以看出,Halstead模型認(rèn)為程序中的操作符和操作數(shù)與其殘留缺陷密切相關(guān)。該模型的優(yōu)點(diǎn)是無(wú)需測(cè)試數(shù)據(jù)。盡管眾多事實(shí)表明,V/N可近似為常數(shù),但E0取值卻未必為3000。也許利用程序的若干模塊缺陷數(shù)(據(jù)此可估計(jì)E0)去估計(jì)其它模塊的缺陷數(shù)更為合理。
因此,可用于測(cè)試之前的軟件開(kāi)發(fā)階段;該模型的缺點(diǎn)是其有效性有待進(jìn)一步確認(rèn)。49四、G-O(Goel-OkumotoNHPP)模型2.模型假設(shè)1.模型類(lèi)別模型為動(dòng)態(tài)、宏觀、面向錯(cuò)誤數(shù)模型。軟件(測(cè)試)運(yùn)行方式與預(yù)計(jì)(實(shí)際)運(yùn)行剖面相同。(2)對(duì)于任一組有限時(shí)間點(diǎn),在對(duì)應(yīng)時(shí)間段內(nèi)分別發(fā)生的錯(cuò)誤數(shù)為相互獨(dú)立。(3)每一缺陷有均等機(jī)會(huì)被檢測(cè)發(fā)現(xiàn),且等級(jí)相同。50(4)任一時(shí)刻t發(fā)生的軟件故障累積次數(shù)N(t)服從均值為m(t)的Poisson分布,均值m(t)使得微小時(shí)間段(t,t+Δt)內(nèi)軟件故障發(fā)生次數(shù)與t時(shí)刻軟件殘留缺陷數(shù)成正比。式中α—為測(cè)試過(guò)程最終軟件發(fā)生故障的總數(shù);
b—為比例常數(shù)。
(5)
m(t)是一個(gè)有界、非減函數(shù),且51由假設(shè)(3)~(5)可知:
由于累積故障數(shù)N(t)是均值為m(t)的Poisson分布,那么
523.參數(shù)估計(jì)
設(shè)時(shí)間內(nèi)發(fā)生的軟件故障次數(shù)為
,其概率分布為:
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鎢坩堝行業(yè)直播電商戰(zhàn)略研究報(bào)告
- 高耐蝕耐磨涂層材料企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 高強(qiáng)玻璃纖維布行業(yè)直播電商戰(zhàn)略研究報(bào)告
- 兼職項(xiàng)目合同范例
- 2024秋七年級(jí)生物上冊(cè)第一單元第二章第三節(jié)生物圈是最大的生態(tài)系統(tǒng)學(xué)案無(wú)答案新版新人教版
- 下游施工合同樣本
- 中空鋁條銷(xiāo)售合同樣本
- 分手責(zé)任合同標(biāo)準(zhǔn)文本
- 出售櫻桃苗木合同標(biāo)準(zhǔn)文本
- 制作委托標(biāo)準(zhǔn)合同標(biāo)準(zhǔn)文本
- 小班健康《保護(hù)鼻子》課件
- 《測(cè)繪管理法律與法規(guī)》課件-測(cè)繪法律法規(guī)
- 系統(tǒng)安全運(yùn)維培訓(xùn)內(nèi)容
- 新時(shí)代社區(qū)治理存在的問(wèn)題及對(duì)策研究-以XX社區(qū)為例
- 《針灸神奇作用》課件
- 美國(guó)醫(yī)療的社會(huì)變遷
- 2023全新混凝土罐車(chē)運(yùn)輸安全協(xié)議
- 汽車(chē)托管租賃合同
- 國(guó)家開(kāi)放大學(xué)《土木工程力學(xué)(本)》形考作業(yè)1-5參考答案
- 改進(jìn)小學(xué)數(shù)學(xué)課堂教學(xué)
- (完整版)光電子學(xué)第2章-介質(zhì)波導(dǎo)與光纖
評(píng)論
0/150
提交評(píng)論