第十一章軟件可靠性_第1頁
第十一章軟件可靠性_第2頁
第十一章軟件可靠性_第3頁
第十一章軟件可靠性_第4頁
第十一章軟件可靠性_第5頁
已閱讀5頁,還剩56頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1第十一章第十一章 軟軟 件件 可可 靠靠 性性第一節(jié)第一節(jié) 軟件可靠性的基本概念軟件可靠性的基本概念-(6)一、軟件的環(huán)境條件一、軟件的環(huán)境條件-(8)三、三、 軟件的故障軟件的故障 -(11) 四、影響軟件可靠性因素四、影響軟件可靠性因素-(15)第二節(jié)第二節(jié) 軟軟 件件 可可 靠靠 性性 的基的基 本本 特特 征征 量量-(21)二、時間的度量二、時間的度量-(10)第三節(jié)第三節(jié) 軟件可靠性的數(shù)學(xué)模型軟件可靠性的數(shù)學(xué)模型-(29)一、軟件可靠性建模概述一、軟件可靠性建模概述-(29)二、二、J - M (JelinskiMoranda) 模型模型-(36)三、三、Halstead模型模型

2、-(45)四、四、GO (Goel一一Okumoto) NHPP模型模型-(50)2 隨著計算機軟件的飛速發(fā)展,隨著計算機軟件的飛速發(fā)展,軟件可靠性已變軟件可靠性已變得越來越重要得越來越重要。據(jù)統(tǒng)計,計算機系統(tǒng)中,由于軟件。據(jù)統(tǒng)計,計算機系統(tǒng)中,由于軟件錯誤引起的故障占所有故障的錯誤引起的故障占所有故障的65。第十一章第十一章 軟軟 件件 可可 靠靠 性性 究其原因究其原因是軟件太復(fù)雜了,一個小小的程序,是軟件太復(fù)雜了,一個小小的程序,其可能的路徑可以是天文數(shù)字,以致于在軟件開發(fā)其可能的路徑可以是天文數(shù)字,以致于在軟件開發(fā)過程中難以對其作窮盡的測試,或者說難于完全排過程中難以對其作窮盡的測試,

3、或者說難于完全排除軟件缺陷。除軟件缺陷。3圖圖11-1簡單程序的控制流程圖簡單程序的控制流程圖 為了說明軟件的復(fù)雜性,讓我們考慮一個為了說明軟件的復(fù)雜性,讓我們考慮一個由由10至至20條條高級語言構(gòu)成的程序,其控制流程圖如圖高級語言構(gòu)成的程序,其控制流程圖如圖11-1所示。所示。4 圖圖11-111-1中每個結(jié)點或圓圈代表一段可能以轉(zhuǎn)移語中每個結(jié)點或圓圈代表一段可能以轉(zhuǎn)移語句結(jié)束的順序執(zhí)行語句,每條弧代表兩段程序間的控句結(jié)束的順序執(zhí)行語句,每條弧代表兩段程序間的控制轉(zhuǎn)移。程序含有一個最少重復(fù)制轉(zhuǎn)移。程序含有一個最少重復(fù)20次的循環(huán)語句,而次的循環(huán)語句,而在循環(huán)體內(nèi),則有一些嵌套的條件語句。在循

4、環(huán)體內(nèi),則有一些嵌套的條件語句。 假設(shè)程序中所有判斷都假設(shè)程序中所有判斷都是相互獨立的,由于有是相互獨立的,由于有5條條貫貫穿循環(huán)體的路徑:穿循環(huán)體的路徑:即即 cdefhm; 圖圖11-1簡單程序的控制流程圖簡單程序的控制流程圖 c defim; cdegjm; cdegkm; cdlm。5 可見,軟件可靠性問題在軟件工程實踐中極為重要,可見,軟件可靠性問題在軟件工程實踐中極為重要,對軟件可靠性問題的研究在國際上已十分活躍。對軟件可靠性問題的研究在國際上已十分活躍。 圖圖11-1簡單程序的控制流程圖簡單程序的控制流程圖 那么從點那么從點A到點到點B的所有獨立路徑數(shù)為:的所有獨立路徑數(shù)為: 如

5、果考慮程序輸入如果考慮程序輸入數(shù)據(jù)的變化,那情況就更為復(fù)雜了。數(shù)據(jù)的變化,那情況就更為復(fù)雜了。 億?;颍s為1614119201010555 6 廣義的可靠性廣義的可靠性是指一切旨在避免、減少、處是指一切旨在避免、減少、處理、度量軟件故障(錯誤、缺陷、失效)的分析、理、度量軟件故障(錯誤、缺陷、失效)的分析、設(shè)計、測試方法、技術(shù)和實踐活動。設(shè)計、測試方法、技術(shù)和實踐活動。第一節(jié)第一節(jié) 軟件可靠性的基本概念軟件可靠性的基本概念 關(guān)于關(guān)于 軟件可靠性的確切定義,國際學(xué)術(shù)界曾經(jīng)軟件可靠性的確切定義,國際學(xué)術(shù)界曾經(jīng)有過長期的爭論。對軟件可靠性定義的理解有有過長期的爭論。對軟件可靠性定義的理解有廣義廣義

6、和狹義兩種:和狹義兩種:廣義的可靠性:廣義的可靠性: 與之相關(guān)的內(nèi)容有軟件可靠性度量、軟件可靠與之相關(guān)的內(nèi)容有軟件可靠性度量、軟件可靠性設(shè)計、軟件可靠性建模、軟件可靠性測試和軟件性設(shè)計、軟件可靠性建模、軟件可靠性測試和軟件可靠性管理等??煽啃怨芾淼?。7狹義的可靠性:狹義的可靠性: 狹義的可靠性狹義的可靠性是指在工程上軟件在規(guī)定的運是指在工程上軟件在規(guī)定的運行環(huán)境中和規(guī)定的時間內(nèi)無故障運行的行環(huán)境中和規(guī)定的時間內(nèi)無故障運行的概率概率(可(可靠度)。靠度)。 與之相關(guān)的內(nèi)容有軟件可靠性度、軟件失效與之相關(guān)的內(nèi)容有軟件可靠性度、軟件失效強度和軟件平均失效時間等。強度和軟件平均失效時間等。8一、軟件的

7、環(huán)境條件一、軟件的環(huán)境條件 例如計算機型號、字長、內(nèi)存容量、外存介質(zhì)例如計算機型號、字長、內(nèi)存容量、外存介質(zhì)的數(shù)量及容量、輸入和輸出設(shè)備的數(shù)量、通信網(wǎng)絡(luò)、的數(shù)量及容量、輸入和輸出設(shè)備的數(shù)量、通信網(wǎng)絡(luò)、操作系統(tǒng)和數(shù)據(jù)管理系統(tǒng)、編譯程序及其他支持軟操作系統(tǒng)和數(shù)據(jù)管理系統(tǒng)、編譯程序及其他支持軟件等。件等。環(huán)境條件還包括環(huán)境條件還包括軟件的輸入分布。軟件的輸入分布。軟件的輸入軟件的輸入有外部和內(nèi)部輸入。有外部和內(nèi)部輸入。 環(huán)境條件包括與程序存儲有關(guān)的環(huán)境條件包括與程序存儲有關(guān)的計算機及其計算機及其操作系統(tǒng)操作系統(tǒng)。 這些因素對程序的運行有很大的影響,但在這些因素對程序的運行有很大的影響,但在使使用中一

8、般沒有變化用中一般沒有變化。9 程序運行一次所需的輸入數(shù)據(jù)構(gòu)成程序輸入空間程序運行一次所需的輸入數(shù)據(jù)構(gòu)成程序輸入空間的一個元素,這個元素是一個多維向量。全部輸入向的一個元素,這個元素是一個多維向量。全部輸入向量的集合構(gòu)成程序的輸入空間。量的集合構(gòu)成程序的輸入空間。 程序在啟動運行時,需要給變量賦值程序在啟動運行時,需要給變量賦值,即給程序即給程序提供輸入數(shù)據(jù)提供輸入數(shù)據(jù),輸入的數(shù)據(jù)可能由輸入的數(shù)據(jù)可能由外部設(shè)備輸入外部設(shè)備輸入,也,也可能由早已存儲在可能由早已存儲在計算機內(nèi)計算機內(nèi)等待讀取。等待讀取。 一組輸入數(shù)據(jù)經(jīng)過程序處理后得到一組輸出數(shù)據(jù),一組輸入數(shù)據(jù)經(jīng)過程序處理后得到一組輸出數(shù)據(jù),這些

9、輸出數(shù)據(jù)構(gòu)成一個輸出向量,全部輸出向量的集這些輸出數(shù)據(jù)構(gòu)成一個輸出向量,全部輸出向量的集合構(gòu)成程序的輸出空間。合構(gòu)成程序的輸出空間。 程序輸入空間的元素數(shù)量非常龐大,程序運行程序輸入空間的元素數(shù)量非常龐大,程序運行中每個元素被選用的概率各不相同,形成一定的中每個元素被選用的概率各不相同,形成一定的概率概率分布分布,我們稱此為程序運行剖面,程序的不同的運行,我們稱此為程序運行剖面,程序的不同的運行狀態(tài),對應(yīng)于不同的運行剖面。狀態(tài),對應(yīng)于不同的運行剖面。10二、時間的度量二、時間的度量1. 日歷時間日歷時間軟件的測試和運行以日、周、月、年等為計時單位。軟件的測試和運行以日、周、月、年等為計時單位。

10、2. 時鐘時間時鐘時間 軟件從運行開始到運行結(jié)束以時、分、秒為計時單軟件從運行開始到運行結(jié)束以時、分、秒為計時單位。其中包括等待時間和其他輔助時間,但不包括停機位。其中包括等待時間和其他輔助時間,但不包括停機占用時間。占用時間。3. 執(zhí)行時間執(zhí)行時間 計算機在執(zhí)行程序時,實際占用中心處理器(計算機在執(zhí)行程序時,實際占用中心處理器(CPU)的的時間,又稱時間,又稱CPU時間。以時間。以CPU時間為可靠性度量的時間時間為可靠性度量的時間。 例如,某軟件在一周內(nèi)運行例如,某軟件在一周內(nèi)運行48小時,小時,CPU工作的時間工作的時間是運行時間的是運行時間的2/3,則日歷時間是一周;時鐘時間是則日歷時間

11、是一周;時鐘時間是48小時,小時,CPU時間是時間是32小時。小時。11 軟件可靠性工程的主要目標是保證軟件可靠性工程的主要目標是保證提高軟件可靠提高軟件可靠性性。為達到這一目標,顯然首先要弄清軟件為什么會。為達到這一目標,顯然首先要弄清軟件為什么會出現(xiàn)故障。只有這樣,才有可能在軟件開發(fā)過程中減出現(xiàn)故障。只有這樣,才有可能在軟件開發(fā)過程中減少導(dǎo)致軟件故障的隱患,且一旦出現(xiàn)什么故障,有可少導(dǎo)致軟件故障的隱患,且一旦出現(xiàn)什么故障,有可能采取有效措施加以清除。能采取有效措施加以清除。 三、三、 軟件的故障軟件的故障 弄清軟件弄清軟件故障機理故障機理是軟件可靠性分析的根本目標。是軟件可靠性分析的根本目

12、標。由于軟件內(nèi)部邏輯復(fù)雜,運行環(huán)境動態(tài)變化,且不同由于軟件內(nèi)部邏輯復(fù)雜,運行環(huán)境動態(tài)變化,且不同的軟件差異可能很大,因而軟件的軟件差異可能很大,因而軟件故障機理可能有不同故障機理可能有不同的表現(xiàn)形式。的表現(xiàn)形式。 譬如有的故障過程比較簡單,易于追蹤分析,而譬如有的故障過程比較簡單,易于追蹤分析,而有的故障過程可能非常復(fù)雜,難于甚至不可能加以詳有的故障過程可能非常復(fù)雜,難于甚至不可能加以詳盡描述和分析。尤其是運行于高度復(fù)雜實時環(huán)境中的盡描述和分析。尤其是運行于高度復(fù)雜實時環(huán)境中的大型軟件大型軟件。121軟件缺陷軟件缺陷 軟件開發(fā)中殘留的內(nèi)在缺陷稱為軟件缺陷軟件開發(fā)中殘留的內(nèi)在缺陷稱為軟件缺陷。這

13、些缺陷。這些缺陷可以在軟件生存期的各個階段被引入??梢栽谲浖嫫诘母鱾€階段被引入。 軟件故障機理可描述為:軟件故障機理可描述為:軟件缺陷、軟件錯誤和軟件缺陷、軟件錯誤和軟件故障軟件故障。 缺陷缺陷 錯誤錯誤 故障故障(失效失效) 在軟件開發(fā)的各階段,軟件始終離不開人的參與,在軟件開發(fā)的各階段,軟件始終離不開人的參與,而人難免會犯錯誤,這樣就必然給軟件留下不良的痕跡。而人難免會犯錯誤,這樣就必然給軟件留下不良的痕跡。 例如一段程序進行某些數(shù)據(jù)處理,若在處理過程例如一段程序進行某些數(shù)據(jù)處理,若在處理過程中就產(chǎn)生軟件錯誤,則說明這段程序存在缺陷或缺少中就產(chǎn)生軟件錯誤,則說明這段程序存在缺陷或缺少一

14、個程序段。一個程序段。13 軟件缺陷軟件缺陷是一個是一個靜止的靜止的現(xiàn)象,只在一定的輸入條件現(xiàn)象,只在一定的輸入條件下才能被激活導(dǎo)致軟件錯誤,而且軟件錯誤也不一定導(dǎo)下才能被激活導(dǎo)致軟件錯誤,而且軟件錯誤也不一定導(dǎo)致軟件故障。致軟件故障。比如容錯軟件中的錯誤就可以被檢測出來比如容錯軟件中的錯誤就可以被檢測出來并可糾正或避免,而不導(dǎo)致故障。并可糾正或避免,而不導(dǎo)致故障。 軟件缺陷在一定條件下暴露并導(dǎo)致系統(tǒng)在運行中出軟件缺陷在一定條件下暴露并導(dǎo)致系統(tǒng)在運行中出現(xiàn)可感知的不正常、不正確、不按規(guī)范執(zhí)行的內(nèi)部狀態(tài),現(xiàn)可感知的不正常、不正確、不按規(guī)范執(zhí)行的內(nèi)部狀態(tài),則認為軟件出現(xiàn)則認為軟件出現(xiàn)“錯誤錯誤”,

15、簡稱出錯出錯。2軟件錯誤軟件錯誤 軟件錯誤是由于軟件缺陷造成的。軟件錯誤是由于軟件缺陷造成的。一個錯誤可能一個錯誤可能是多個故障源是多個故障源。例如,在求最大值的程序中,設(shè)計人例如,在求最大值的程序中,設(shè)計人員由于疏忽將求得的平均值作為最大值,這就是一個員由于疏忽將求得的平均值作為最大值,這就是一個軟件錯誤。軟件錯誤。 所謂不正確的內(nèi)部狀態(tài),是指在此狀態(tài)下,當正常所謂不正確的內(nèi)部狀態(tài),是指在此狀態(tài)下,當正常的算法繼續(xù)下去時,就會發(fā)生軟件故障。的算法繼續(xù)下去時,就會發(fā)生軟件故障。14 在對錯誤不作任何糾正和恢復(fù)的情況下,導(dǎo)致系統(tǒng)在對錯誤不作任何糾正和恢復(fù)的情況下,導(dǎo)致系統(tǒng)的輸出不滿足用戶提供的正

16、式文件上指明的要求,或雙的輸出不滿足用戶提供的正式文件上指明的要求,或雙方協(xié)議的條款,稱為方協(xié)議的條款,稱為軟件的一次故障軟件的一次故障。3軟件故障軟件故障 軟件故障是由于軟存錯誤造成的一種外部表現(xiàn),它是軟件故障是由于軟存錯誤造成的一種外部表現(xiàn),它是動態(tài)的、程序執(zhí)行過程中出現(xiàn)的行為表現(xiàn)。動態(tài)的、程序執(zhí)行過程中出現(xiàn)的行為表現(xiàn)。 綜上所述,軟件缺陷是人為錯誤。當一個軟件缺陷綜上所述,軟件缺陷是人為錯誤。當一個軟件缺陷被激活時,便產(chǎn)生一個或多個軟件錯誤;當軟件錯誤不被激活時,便產(chǎn)生一個或多個軟件錯誤;當軟件錯誤不加以糾正時,便不可避免地產(chǎn)生軟件故障。同一個軟件加以糾正時,便不可避免地產(chǎn)生軟件故障。同

17、一個軟件缺陷下可能產(chǎn)生不同的軟件故障。缺陷下可能產(chǎn)生不同的軟件故障。15 軟件可靠性因素軟件可靠性因素是指軟件生存期內(nèi)影響軟件可靠性的是指軟件生存期內(nèi)影響軟件可靠性的因素。顯然,有許許多多因素可以影響軟件可靠性,包括因素。顯然,有許許多多因素可以影響軟件可靠性,包括技術(shù)的、社會的、經(jīng)濟的、甚至文化的,因為在軟件生存技術(shù)的、社會的、經(jīng)濟的、甚至文化的,因為在軟件生存期的各個階段均有人的干預(yù),而人的行為受到各方面因素期的各個階段均有人的干預(yù),而人的行為受到各方面因素的影響。的影響。 四、影響軟件可靠性因素四、影響軟件可靠性因素 從從技術(shù)角度技術(shù)角度來看,影響軟件可靠性的因素主要包括來看,影響軟件可

18、靠性的因素主要包括以下幾個方面:以下幾個方面: 軟件可靠性定義相對于運行環(huán)境而言,同一軟件在軟件可靠性定義相對于運行環(huán)境而言,同一軟件在不同運行剖面下,其可靠性行為可能極不相同。不同運行剖面下,其可靠性行為可能極不相同。1. 運行環(huán)境運行環(huán)境(剖面剖面)讓我們考慮一個極端例子。讓我們考慮一個極端例子。 我們知道,軟件故障是軟件缺陷在一定輸入情況下我們知道,軟件故障是軟件缺陷在一定輸入情況下被激活的結(jié)果。于是可以將軟件輸入域劃分為兩個部分被激活的結(jié)果。于是可以將軟件輸入域劃分為兩個部分( (G和和F) ) :16 G 中的輸入不會激活軟件的缺陷,中的輸入不會激活軟件的缺陷,F(xiàn) 中的輸入恒激中的輸

19、入恒激活軟件缺陷。如果運行剖面不包含活軟件缺陷。如果運行剖面不包含F(xiàn)中的輸入,則軟件中的輸入,則軟件不會出現(xiàn)故障,其可靠性恒為不會出現(xiàn)故障,其可靠性恒為1。 反之,如果運行剖面反之,如果運行剖面不包含不包含G中的輸入,則每一輸中的輸入,則每一輸入情況下均出現(xiàn)故障。如果沒有容錯措施,則導(dǎo)致軟件入情況下均出現(xiàn)故障。如果沒有容錯措施,則導(dǎo)致軟件故障,故障,軟件可靠性恒為軟件可靠性恒為0。 17 如果軟件只含一條指令,那么談?wù)撥浖煽啃詥柸绻浖缓粭l指令,那么談?wù)撥浖煽啃詥栴}便失去意義。隨著軟件規(guī)模的增大,軟件可靠性問題便失去意義。隨著軟件規(guī)模的增大,軟件可靠性問題愈顯突出。題愈顯突出。2.軟件

20、規(guī)模軟件規(guī)模 軟件工程實踐的一個側(cè)面可以反映這一點,即單元軟件工程實踐的一個側(cè)面可以反映這一點,即單元測試一般由編程人員本人進行,而綜合測試則需獨立的測試一般由編程人員本人進行,而綜合測試則需獨立的測試人員。軟件可靠性增長模型也主要應(yīng)用于綜合測試測試人員。軟件可靠性增長模型也主要應(yīng)用于綜合測試階段。階段。 在我們考慮軟件可靠性問題時,軟件一般是在我們考慮軟件可靠性問題時,軟件一般是指中型指中型以上軟件以上軟件(40005000條以上語句條以上語句),這時可靠性問題難,這時可靠性問題難以對付。以對付。18 軟件內(nèi)部結(jié)構(gòu)一般比較復(fù)雜,且動態(tài)變化,對可軟件內(nèi)部結(jié)構(gòu)一般比較復(fù)雜,且動態(tài)變化,對可靠性的

21、影響也不甚清楚。靠性的影響也不甚清楚。3. 軟件內(nèi)部結(jié)構(gòu)軟件內(nèi)部結(jié)構(gòu) 關(guān)于軟件可靠性設(shè)計技術(shù)的外延并不明確,但一般關(guān)于軟件可靠性設(shè)計技術(shù)的外延并不明確,但一般是指軟件設(shè)計階段中采用的用以保證和提高軟件可靠性是指軟件設(shè)計階段中采用的用以保證和提高軟件可靠性為主要目標的軟件技術(shù)。如故障模式與影響分析為主要目標的軟件技術(shù)。如故障模式與影響分析(FMECA)、故障樹分析故障樹分析(FTA)等。顯然采用或不采用軟等。顯然采用或不采用軟件可靠性設(shè)計技術(shù)對軟件可靠性必有影響。件可靠性設(shè)計技術(shù)對軟件可靠性必有影響。4. 軟件可靠性設(shè)計技術(shù)。軟件可靠性設(shè)計技術(shù)。 但總的說來,結(jié)構(gòu)越復(fù)雜,軟件復(fù)雜度越高,內(nèi)但總的

22、說來,結(jié)構(gòu)越復(fù)雜,軟件復(fù)雜度越高,內(nèi)含缺陷數(shù)越多,因而軟件可靠度越低。含缺陷數(shù)越多,因而軟件可靠度越低。 19 顯然,軟件開發(fā)人員(包括測試人員顯然,軟件開發(fā)人員(包括測試人員)的能力愈的能力愈強,經(jīng)驗愈豐富,所犯錯誤便可能愈少,所得軟件產(chǎn)強,經(jīng)驗愈豐富,所犯錯誤便可能愈少,所得軟件產(chǎn)品質(zhì)量愈高,相應(yīng)的可靠性也愈高。品質(zhì)量愈高,相應(yīng)的可靠性也愈高。 5. 軟件可靠性測試軟件可靠性測試 軟件可靠性管理旨在系統(tǒng)管理軟件生存期各階軟件可靠性管理旨在系統(tǒng)管理軟件生存期各階段的可靠性活動。使之段的可靠性活動。使之系統(tǒng)化、規(guī)范化、一體化系統(tǒng)化、規(guī)范化、一體化,這樣就可以避免許多人為錯誤,以提高軟件可靠性。

23、這樣就可以避免許多人為錯誤,以提高軟件可靠性。 研究表明,軟件測試方法與資源投入對軟件可研究表明,軟件測試方法與資源投入對軟件可靠性有不可忽視的影響??啃杂胁豢珊鲆暤挠绊?。6. 軟件可靠性管理軟件可靠性管理7. 軟件開發(fā)人員能力和經(jīng)驗軟件開發(fā)人員能力和經(jīng)驗20 研究表明,程序語言對軟件可靠性有影響。譬如,研究表明,程序語言對軟件可靠性有影響。譬如,結(jié)構(gòu)化語言結(jié)構(gòu)化語言Ada優(yōu)于優(yōu)于Fortran語言,而軟件測試工具優(yōu)語言,而軟件測試工具優(yōu)劣則影響測試效果。劣則影響測試效果。 軟件工程表明,開發(fā)方法對軟件可靠性有顯著影軟件工程表明,開發(fā)方法對軟件可靠性有顯著影響。與非結(jié)構(gòu)化方法比較,結(jié)構(gòu)化方法可

24、以明顯減少響。與非結(jié)構(gòu)化方法比較,結(jié)構(gòu)化方法可以明顯減少軟件缺陷數(shù)。軟件缺陷數(shù)。 總之,有許許多多的因素影響軟件可靠性,在軟總之,有許許多多的因素影響軟件可靠性,在軟件設(shè)計時應(yīng)盡量采用有利于提高軟件可靠性的手段和件設(shè)計時應(yīng)盡量采用有利于提高軟件可靠性的手段和方法。方法。8. 軟件開發(fā)方法軟件開發(fā)方法9. 軟件開發(fā)環(huán)境軟件開發(fā)環(huán)境返回返回121軟件質(zhì)量軟件質(zhì)量主要由以下幾個方面因素決定主要由以下幾個方面因素決定。第二節(jié)第二節(jié) 軟軟 件件 可可 靠靠 性性 的的 基基 本本 特特 征征 量量 時間因素時間因素:包括平均故障間隔時間(:包括平均故障間隔時間(MIBF)、)、平平均失效前時間(均失效前

25、時間(MTTF)、)、平均系統(tǒng)不工作間隔時間平均系統(tǒng)不工作間隔時間(MTBD)、)、平均修復(fù)時間(平均修復(fù)時間(MTTR)。)。 缺陷頻數(shù)缺陷頻數(shù):包括軟件缺陷數(shù)、文件缺陷數(shù)和用:包括軟件缺陷數(shù)、文件缺陷數(shù)和用戶提出的補充要求數(shù)等。戶提出的補充要求數(shù)等。 與軟件可靠性有關(guān)的百分率與軟件可靠性有關(guān)的百分率:主要包括可靠性、:主要包括可靠性、有效性、可維護性、故障率、不合格率、延遲率、錯誤有效性、可維護性、故障率、不合格率、延遲率、錯誤操作率、原因不明率、同故障事件率、可靠性經(jīng)濟率等。操作率、原因不明率、同故障事件率、可靠性經(jīng)濟率等。22 使用方特征使用方特征:包括使用軟件的系統(tǒng)的特點(如:包括使

26、用軟件的系統(tǒng)的特點(如實時系統(tǒng)、嵌入式系統(tǒng)),需根據(jù)軟件的特點,選擇實時系統(tǒng)、嵌入式系統(tǒng)),需根據(jù)軟件的特點,選擇適當?shù)目煽啃詤?shù)作為軟件質(zhì)量指標。適當?shù)目煽啃詤?shù)作為軟件質(zhì)量指標。 對軟件的投入對軟件的投入:包括完成軟件用了不同水平:包括完成軟件用了不同水平的工作人員的工作日數(shù)或工時數(shù)和對軟件的檢查項目的工作人員的工作日數(shù)或工時數(shù)和對軟件的檢查項目數(shù)及對用戶提出的要求采取對策的費用等。數(shù)及對用戶提出的要求采取對策的費用等。 軟件特征軟件特征:包括軟件的復(fù)雜性、標準化程度、:包括軟件的復(fù)雜性、標準化程度、壽命周期、結(jié)構(gòu)及規(guī)模大小等。壽命周期、結(jié)構(gòu)及規(guī)模大小等。 顯然,顯然,軟件質(zhì)量是眾多因素及

27、指標的綜合反映軟件質(zhì)量是眾多因素及指標的綜合反映,在軟件可靠性評估中,需根據(jù)軟件的特點,選擇適在軟件可靠性評估中,需根據(jù)軟件的特點,選擇適當?shù)目煽啃詤?shù)作為軟件質(zhì)量指標。當?shù)目煽啃詤?shù)作為軟件質(zhì)量指標。23軟件常用的可靠性參數(shù)有以下幾種軟件常用的可靠性參數(shù)有以下幾種 : 在一定時期內(nèi),由于軟件故障而停止工作,必須由在一定時期內(nèi),由于軟件故障而停止工作,必須由操作者介入操作者介入再啟動才能繼續(xù)工作的次數(shù)再啟動才能繼續(xù)工作的次數(shù)稱為系統(tǒng)不工作稱為系統(tǒng)不工作次數(shù)。次數(shù)。1. 系統(tǒng)不工作次數(shù)系統(tǒng)不工作次數(shù)系統(tǒng)平均不工作間隔時間反映了系統(tǒng)的系統(tǒng)平均不工作間隔時間反映了系統(tǒng)的穩(wěn)定性穩(wěn)定性。2. 系統(tǒng)平均不

28、工作間隔時間(系統(tǒng)平均不工作間隔時間(MTBD)1MTBD vdT其計算式為止工作的次數(shù)。系統(tǒng)由于軟件故障而停)時間(軟件系統(tǒng)正常工作的總式中 ;h vdT243. 有效性有效性 ( A )有效性有效性A綜合反映了系統(tǒng)的綜合反映了系統(tǒng)的可靠性和維修性可靠性和維修性。MDTMTBDMTBD DvvATTTA或其計算式為MDT 平均不工作的時間(平均不工作的時間(h)。)。);工作的時間(由于軟件故障使系統(tǒng)不)時間(軟件系統(tǒng)正常工作的總式中h ;h DvTT25 平均修復(fù)時間反映了出現(xiàn)軟件缺陷后采取對策的平均修復(fù)時間反映了出現(xiàn)軟件缺陷后采取對策的效率。在一定程度上也反映了軟件企業(yè)對社會服務(wù)的效率。

29、在一定程度上也反映了軟件企業(yè)對社會服務(wù)的責任心。責任心。4. 平均修復(fù)時間(平均修復(fù)時間(MTTR) 平均不工作時間是指由于軟件故障,系統(tǒng)不工作的平均不工作時間是指由于軟件故障,系統(tǒng)不工作的均值。均值。 5. 平均不工作時間(平均不工作時間(MDT) 一般以軟件交付使用方后的三個月內(nèi)為初期故障期。一般以軟件交付使用方后的三個月內(nèi)為初期故障期。初期故障率以每初期故障率以每100h的故障為單位,用它來評價交付使用的故障為單位,用它來評價交付使用時的軟件質(zhì)量和預(yù)測什么時候軟件可靠性基本穩(wěn)定。時的軟件質(zhì)量和預(yù)測什么時候軟件可靠性基本穩(wěn)定。 6. 初期故障率初期故障率 初期故障率的大小取決于軟件的設(shè)計水

30、平、檢查項初期故障率的大小取決于軟件的設(shè)計水平、檢查項目數(shù)、軟件規(guī)模、軟件調(diào)試徹底與否等因素。目數(shù)、軟件規(guī)模、軟件調(diào)試徹底與否等因素。26 一般以軟件交付給使用方一般以軟件交付給使用方四個月后四個月后為偶然故障為偶然故障期。偶然故障率一般期。偶然故障率一般以每以每1000h的故障數(shù)為單位的故障數(shù)為單位,它,它反映了軟件處于穩(wěn)定狀態(tài)下的質(zhì)量。反映了軟件處于穩(wěn)定狀態(tài)下的質(zhì)量。 7. 偶然故障率偶然故障率 使用方不按照軟件規(guī)范及說明等文件使用造成的錯使用方不按照軟件規(guī)范及說明等文件使用造成的錯誤誤叫叫“使用方錯誤使用方錯誤”。在使用次數(shù)中,使用方誤用次數(shù)。在使用次數(shù)中,使用方誤用次數(shù)占的百分率叫占的

31、百分率叫“使用方誤用率使用方誤用率”。8. 使用方誤用率使用方誤用率 造成使用方法誤用的造成使用方法誤用的原因之一原因之一是使用方對是使用方對“說明說明”理解不深,操作不熟練,但也有可能是說明書沒有講理解不深,操作不熟練,但也有可能是說明書沒有講清楚而引起誤解。清楚而引起誤解。27 另外還有軟件系統(tǒng)的可操作性還應(yīng)改進、對使另外還有軟件系統(tǒng)的可操作性還應(yīng)改進、對使用方的使用培訓(xùn)還不夠深入等。用方的使用培訓(xùn)還不夠深入等。 生產(chǎn)方有責任及時調(diào)查使用方誤用的原因,對生產(chǎn)方有責任及時調(diào)查使用方誤用的原因,對軟件功能加以改進。軟件功能加以改進。 用戶提出補充要求數(shù)用戶提出補充要求數(shù)主要是反映軟件未能充分主

32、要是反映軟件未能充分滿足用戶的需要,有些要求是特定用戶的特殊要求滿足用戶的需要,有些要求是特定用戶的特殊要求,生產(chǎn)方為了更好地為社會服務(wù),應(yīng)該盡力滿足他,生產(chǎn)方為了更好地為社會服務(wù),應(yīng)該盡力滿足他們的要求。們的要求。9. 用戶提出補充要求數(shù)用戶提出補充要求數(shù) 有些要求是帶有普遍性的,這就要求給予足夠有些要求是帶有普遍性的,這就要求給予足夠重視,因為它反映了原來的軟件功能還不夠全面。重視,因為它反映了原來的軟件功能還不夠全面。28 處理能力有各種指標,例如,可用每小時平均處理能力有各種指標,例如,可用每小時平均處理多少文件、每項工作的反映時間多少等來表示,處理多少文件、每項工作的反映時間多少等來

33、表示,具體情況根據(jù)需要而定。具體情況根據(jù)需要而定。 在評價軟件及系統(tǒng)的經(jīng)濟效益時需用這項指標在評價軟件及系統(tǒng)的經(jīng)濟效益時需用這項指標。 10. 處理能力處理能力返回返回129第三節(jié)第三節(jié) 軟件可靠性的數(shù)學(xué)模型軟件可靠性的數(shù)學(xué)模型 軟件可靠性建模是在根據(jù)與軟件可靠性軟件可靠性建模是在根據(jù)與軟件可靠性(故障故障)有關(guān)的有關(guān)的數(shù)據(jù)以統(tǒng)計方法給出軟件可靠性的估計值或預(yù)測值,是從數(shù)據(jù)以統(tǒng)計方法給出軟件可靠性的估計值或預(yù)測值,是從本質(zhì)上理解軟件可靠性行為的關(guān)鍵之一。本質(zhì)上理解軟件可靠性行為的關(guān)鍵之一。 一、軟件可靠性建模概述一、軟件可靠性建模概述 軟件可靠性建模活動最早可追溯到軟件可靠性建?;顒幼钤缈勺匪?/p>

34、到Hudson的工作,他的工作,他當時以隨機生滅過程描述軟件缺陷的引入和剔除過程,并當時以隨機生滅過程描述軟件缺陷的引入和剔除過程,并證明被剔除的缺陷數(shù)服從二項式分布,其均值時間函數(shù)具證明被剔除的缺陷數(shù)服從二項式分布,其均值時間函數(shù)具有威布爾有威布爾(Weibull)分布形式。分布形式。 軟件可靠性建模研究真正獲得重視始于軟件可靠性建模研究真正獲得重視始于60年代末年代末“軟件危機軟件危機”的提出,并在的提出,并在70年代獲得巨大的發(fā)展。年代獲得巨大的發(fā)展。301. 模型種類模型種類 Jelinski和和Moranda于于1972年正式出版有關(guān)他們的模型年正式出版有關(guān)他們的模型的論著。這一模型

35、是軟件可靠性系統(tǒng)研究的真正開端,至今的論著。這一模型是軟件可靠性系統(tǒng)研究的真正開端,至今在軟件可靠性建模方面仍具有重要意義,這是因為:在軟件可靠性建模方面仍具有重要意義,這是因為: (1) Jelinski-Moranda模型模型軟件可靠性模型主要有以下軟件可靠性模型主要有以下8種種模型:模型: 這一模型首次將這一模型首次將硬件可靠性的基本概念,硬件可靠性的基本概念,如可靠度、如可靠度、故障強度故障強度(率率)等,等,系統(tǒng)地引入軟件可靠性領(lǐng)域系統(tǒng)地引入軟件可靠性領(lǐng)域; 這一模型確立了軟件可靠性建模的這一模型確立了軟件可靠性建模的黑箱方法黑箱方法,即不,即不涉及軟件內(nèi)部結(jié)構(gòu),僅依據(jù)軟件外部行為涉

36、及軟件內(nèi)部結(jié)構(gòu),僅依據(jù)軟件外部行為(輸入輸出關(guān)系輸入輸出關(guān)系)刻畫軟件可靠性行為;刻畫軟件可靠性行為; 這一模型給出了軟件可靠性建模的這一模型給出了軟件可靠性建模的兩個主要假設(shè)兩個主要假設(shè):一是測試用例的選取代表軟件實際運行剖面;二是不同軟一是測試用例的選取代表軟件實際運行剖面;二是不同軟件故障獨立發(fā)生;件故障獨立發(fā)生; 31 這一模型簡單這一模型簡單,眾多的后續(xù)模型可視為這一模型,眾多的后續(xù)模型可視為這一模型的某種變形。的某種變形。 Halstead依據(jù)其依據(jù)其“軟件科學(xué)軟件科學(xué)”的思想于的思想于1972年提出此年提出此模型,試圖利用軟件復(fù)雜度確定軟件缺陷數(shù)。模型,試圖利用軟件復(fù)雜度確定軟件

37、缺陷數(shù)。(2) Halstead模型模型 此模型的重要性在于它可應(yīng)用于軟件開發(fā)的此模型的重要性在于它可應(yīng)用于軟件開發(fā)的早期階段早期階段(軟件軟件測試之前測試之前)。隨著軟件可靠性設(shè)計地位的提高,此模型的。隨著軟件可靠性設(shè)計地位的提高,此模型的重要性也將顯著增長。重要性也將顯著增長。 Littlewood和和Verrall于于1973年發(fā)表此模型,其年發(fā)表此模型,其主導(dǎo)思主導(dǎo)思想想是將軟件是將軟件故障強度視為隨機變量故障強度視為隨機變量,從而開創(chuàng)了軟件可靠,從而開創(chuàng)了軟件可靠性建模的性建模的Bayes方法。此模型也間接考慮了發(fā)現(xiàn)的缺陷不方法。此模型也間接考慮了發(fā)現(xiàn)的缺陷不被完全剔除的可能性。被完

38、全剔除的可能性。(3) Littlewood-Verrall模型模型32 Musa于于1975年發(fā)表此模型,主要貢獻在于提出將年發(fā)表此模型,主要貢獻在于提出將CPU執(zhí)行時間作為軟件可靠性的時間基準執(zhí)行時間作為軟件可靠性的時間基準。(4) Musa執(zhí)行時間模型執(zhí)行時間模型 Nelson最早于最早于1973年提出一個基于數(shù)據(jù)域模型并于年提出一個基于數(shù)據(jù)域模型并于1978年得以完善。年得以完善。 此模型是基于數(shù)據(jù)域模型的代表,成為此模型是基于數(shù)據(jù)域模型的代表,成為目前應(yīng)用最目前應(yīng)用最多的模型之一多的模型之一。 (5) Sukert模型比較工作模型比較工作 Sukert于于1976年給出其關(guān)于不同模型

39、的分析比較的試年給出其關(guān)于不同模型的分析比較的試驗報告,驗報告,開創(chuàng)了軟件可靠性模型比較研究的先河開創(chuàng)了軟件可靠性模型比較研究的先河。 模型比較研究已成為建模研究的一個基本方面。模型比較研究已成為建模研究的一個基本方面。(6) Nelson模型模型33 GoeI和和Okumoto于于1978年發(fā)表此模型,將軟件故障年發(fā)表此模型,將軟件故障次數(shù)描述為非齊次次數(shù)描述為非齊次Poisson過程。此模型是過程。此模型是NHPP模型的模型的代表。代表。 (7) GoelOkumoto NHPP模型模型 Musa于于1979年發(fā)表了一批軟件可靠性數(shù)據(jù),對軟年發(fā)表了一批軟件可靠性數(shù)據(jù),對軟件可靠性建模研究產(chǎn)

40、生重要影響。件可靠性建模研究產(chǎn)生重要影響。目前已成為軟件可靠目前已成為軟件可靠性建模研究的性建模研究的“標準標準”參考數(shù)據(jù)參考數(shù)據(jù)。之后。之后Musa,Ianninohe和和Okumoto于于1987年又發(fā)表了年又發(fā)表了“軟件可靠性軟件可靠性”一書,在一書,在軟件可靠性領(lǐng)域頗軟件可靠性領(lǐng)域頗受推崇。該書首次對眾多軟件可靠性受推崇。該書首次對眾多軟件可靠性模型給出了統(tǒng)一的數(shù)學(xué)描述。模型給出了統(tǒng)一的數(shù)學(xué)描述。 (8) Musa軟件可靠性數(shù)據(jù)軟件可靠性數(shù)據(jù)342.模型組成模型組成軟件可靠性模型通常由以下幾個部分組成:軟件可靠性模型通常由以下幾個部分組成: (1) 模型假設(shè)模型假設(shè)模型是實際情況的簡化

41、或規(guī)范化,總要包含若干假設(shè)。模型是實際情況的簡化或規(guī)范化,總要包含若干假設(shè)。 此假設(shè)認為軟件測試用例的選取代表軟件實際的運行此假設(shè)認為軟件測試用例的選取代表軟件實際的運行剖面,甚至認為測試用例是獨立隨機地選取。剖面,甚至認為測試用例是獨立隨機地選取。 代表性假設(shè)代表性假設(shè) 此假設(shè)實質(zhì)上是指可以用測試產(chǎn)生的軟件可靠性數(shù)據(jù)此假設(shè)實質(zhì)上是指可以用測試產(chǎn)生的軟件可靠性數(shù)據(jù)預(yù)測運行階段的軟件可靠性行為。預(yù)測運行階段的軟件可靠性行為。 此假設(shè)認為軟件故障是獨立發(fā)生于不同時刻,一個軟此假設(shè)認為軟件故障是獨立發(fā)生于不同時刻,一個軟件故障的發(fā)生不影響另一個軟件故障的發(fā)生。譬如在概率范件故障的發(fā)生不影響另一個軟件

42、故障的發(fā)生。譬如在概率范疇內(nèi),假設(shè)相鄰軟件故障間隔構(gòu)成一組獨立隨機變量,或假疇內(nèi),假設(shè)相鄰軟件故障間隔構(gòu)成一組獨立隨機變量,或假設(shè)一定時間內(nèi)軟件故障次數(shù)構(gòu)成一個獨立增量過程。設(shè)一定時間內(nèi)軟件故障次數(shù)構(gòu)成一個獨立增量過程。 獨立性假設(shè)獨立性假設(shè)35 此假設(shè)認為所有軟件此假設(shè)認為所有軟件故障的后果故障的后果(等級等級)相同相同,即建模,即建模過程只考慮軟件故障的具體發(fā)生時刻,不區(qū)分軟件故障的過程只考慮軟件故障的具體發(fā)生時刻,不區(qū)分軟件故障的性質(zhì)。性質(zhì)。 相同性假設(shè)相同性假設(shè) 軟件可靠性模型的輸出量變?yōu)樾阅芏攘?,如故障強度、軟件可靠性模型的輸出量變?yōu)樾阅芏攘?,如故障強度、殘留缺陷?shù)、可靠度等。在軟件

43、可靠性模型中性能度量通殘留缺陷數(shù)、可靠度等。在軟件可靠性模型中性能度量通常以數(shù)學(xué)表達式給山。常以數(shù)學(xué)表達式給山。 (2) 性能度量性能度量 某些可靠性度量的實際值無法直接獲得某些可靠性度量的實際值無法直接獲得(如殘留缺陷如殘留缺陷數(shù)數(shù)),這時需通過一定的方法估計參數(shù)的值,從而間接確,這時需通過一定的方法估計參數(shù)的值,從而間接確定可靠性度量的值。定可靠性度量的值。 (3)參數(shù)估計方法參數(shù)估計方法 當然,對于可直接獲得實際值的可靠性度量,便無當然,對于可直接獲得實際值的可靠性度量,便無需參數(shù)估計了。需參數(shù)估計了。 36 一個軟件可靠性模型要求一定的輸入數(shù)據(jù),即軟件可一個軟件可靠性模型要求一定的輸入

44、數(shù)據(jù),即軟件可靠性數(shù)據(jù)??啃詳?shù)據(jù)。不同類型的軟件可靠性模型可能要求不同類型不同類型的軟件可靠性模型可能要求不同類型的軟件可靠性數(shù)據(jù)。的軟件可靠性數(shù)據(jù)。 (4) 數(shù)據(jù)要求數(shù)據(jù)要求本書僅本書僅介紹三種最常用的軟件模型。介紹三種最常用的軟件模型。二、二、J - M (JelinskiMoranda) 模型模型 J M 模型是最早的軟件可靠性馬爾科夫過程的數(shù)學(xué)模型是最早的軟件可靠性馬爾科夫過程的數(shù)學(xué)模型,沿用了硬件可靠性的方法。模型,沿用了硬件可靠性的方法。 J M的假設(shè)是:的假設(shè)是: 軟件最初的錯誤數(shù)為軟件最初的錯誤數(shù)為常值常值N。用用 (i=1,2,N)表示在第表示在第(i-1)個錯誤被改正后,軟

45、件投入運行至第個錯誤被改正后,軟件投入運行至第i次次故障發(fā)生前這個階段的時間,且故障間隔時間故障發(fā)生前這個階段的時間,且故障間隔時間 是統(tǒng)是統(tǒng)計獨立的計獨立的。itit37 每次故障后總有并僅有一個錯誤被排除,因此每次故障后總有并僅有一個錯誤被排除,因此, ,系統(tǒng)的系統(tǒng)的故障率是階梯式下降故障率是階梯式下降的。的。 每個軟件錯誤一經(jīng)發(fā)現(xiàn)立即被修正,且不考慮修每個軟件錯誤一經(jīng)發(fā)現(xiàn)立即被修正,且不考慮修改錯誤的時間,也不產(chǎn)生新的錯誤。改錯誤的時間,也不產(chǎn)生新的錯誤。 在兩個相繼故障構(gòu)成的時間間隔內(nèi),軟件的故障在兩個相繼故障構(gòu)成的時間間隔內(nèi),軟件的故障率為常數(shù),其大小正比于軟件中的殘存錯誤數(shù)。率為常

46、數(shù),其大小正比于軟件中的殘存錯誤數(shù)。1. 可靠性特征量可靠性特征量(1) 按上述假設(shè)得出的軟件系統(tǒng)故障的密度函數(shù)為:按上述假設(shè)得出的軟件系統(tǒng)故障的密度函數(shù)為: )(,1-11 ,.2 , 1 e)( Nitfiitii38 (2) 故障率為:故障率為:)(2-11 )1( iNi遞減率無關(guān)。是比例常數(shù),與式中i (3) 可靠度函數(shù)為:可靠度函數(shù)為: )(3-11 e)()1( tiNitR392. 可靠性特征量估計 模型的模型的待估參數(shù)為待估參數(shù)為和和N。設(shè)設(shè)t1,t2,tn是試驗中實是試驗中實際測得的際測得的n次故障發(fā)生的時間次故障發(fā)生的時間間隔,則其極大似然方程為:間隔,則其極大似然方程為

47、: )(4-11 e ) 1( )( )1(11itiNniniiiNtfL運用極大似然估計法,則運用極大似然估計法,則5)-(11 011ln01ln111niniiniitiNNLtiNnL40可得模型參數(shù)的極大似然估計值可得模型參數(shù)的極大似然估計值 和和 分別為分別為 N6)-(11 /111111111niniiniiniiniittiNniNtitNn 發(fā)現(xiàn)發(fā)現(xiàn) n 個軟件錯誤后,停止測試。此時,軟件的可靠個軟件錯誤后,停止測試。此時,軟件的可靠性水平為性水平為 (1) 殘存錯誤數(shù)殘存錯誤數(shù) 7)-(11 nNNT41 (2) 故障率故障率8)-(11 nNT(3) 可靠度可靠度9)

48、-(11 e)(tnNitR(4)平均無故障工作時間平均無故障工作時間MTBF )10-(11 1MTBFnN 42 例例11-1 Jelinski和和Moranda曾在美國海軍艦隊計算機程曾在美國海軍艦隊計算機程序編制中心利用海軍戰(zhàn)術(shù)數(shù)據(jù)系統(tǒng)序編制中心利用海軍戰(zhàn)術(shù)數(shù)據(jù)系統(tǒng)(NTDS)的軟件故障數(shù)據(jù),的軟件故障數(shù)據(jù),對他們的模型作了驗證。對他們的模型作了驗證。NTDS包括包括38個不同的模塊,每個個不同的模塊,每個模塊都經(jīng)過開發(fā)、測試、使用三個階段。驗證所用的故障數(shù)模塊都經(jīng)過開發(fā)、測試、使用三個階段。驗證所用的故障數(shù)據(jù)是取自兩個大型模塊的軟件反饋報告。這個模塊在設(shè)計階據(jù)是取自兩個大型模塊的軟件

49、反饋報告。這個模塊在設(shè)計階段共發(fā)現(xiàn)了段共發(fā)現(xiàn)了26個錯誤,測試階段又發(fā)現(xiàn)了個錯誤,測試階段又發(fā)現(xiàn)了5個(表個(表11-1中中27-31)錯誤,在使用階段又發(fā)現(xiàn)了)錯誤,在使用階段又發(fā)現(xiàn)了3個(表個(表11-1中中32-34)錯誤。)錯誤。NTDS的數(shù)據(jù)見表的數(shù)據(jù)見表11-1,J-M根據(jù)交付使用前的數(shù)據(jù)計算的結(jié)根據(jù)交付使用前的數(shù)據(jù)計算的結(jié)果也示于表果也示于表11-1(見下頁見下頁)。43階段錯誤數(shù)n錯誤間隔時間(日)累計時問(日)JM預(yù)計的故障時問設(shè)計階段12345678910111213141516171819202122232425269121147258571619413861133791

50、21921323643455058637071777887919295981041051161491562472492504.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-1 NTDS 數(shù)據(jù)及預(yù)計結(jié)果數(shù)據(jù)及預(yù)計結(jié)果4428.13378727測測試試階階段段8493481433總的錯誤數(shù)總的錯誤數(shù)故障率系數(shù)故障率系數(shù)79832使使用用階階段段121.75401353166.440593045.6396122934.83844728J.M預(yù)計的故預(yù)計的故障時間障時間

51、累積時間累積時間 (日)(日)錯誤間隔錯誤間隔時間(日)時間(日)錯誤數(shù)錯誤數(shù)n階段階段2 .31N00685. 0表表11-1 續(xù)續(xù) 表表即,)得代入式(、錯誤間隔時間中的將表,00685. 02 .312158.31611111 Ntni 估計軟件共有估計軟件共有31.2個錯誤。實際上,此軟件三個階段共有個錯誤。實際上,此軟件三個階段共有34個錯誤,可見計算結(jié)果與實際數(shù)據(jù)大致吻合。個錯誤,可見計算結(jié)果與實際數(shù)據(jù)大致吻合。45 2模型假設(shè)模型假設(shè)三、三、Halstead模型模型1模型類別:模型類別:靜態(tài)經(jīng)驗?zāi)P?。靜態(tài)經(jīng)驗?zāi)P汀?(1) 程序是良好結(jié)構(gòu)化的,即程序不包含操作符、程序是良好結(jié)構(gòu)化

52、的,即程序不包含操作符、操作數(shù)、表達式的問題。操作數(shù)、表達式的問題。 (2) 以下方程近似成立:以下方程近似成立:11)-(11 loglog222121llllL 為程序中不同操作數(shù)個數(shù)。為程序中不同操作數(shù)個數(shù)。 2l式中: 為程序中不同操作符個數(shù);為程序中不同操作符個數(shù); 1l21LLL其中:其中:為程序中操作符出現(xiàn)總次數(shù);為程序中操作符出現(xiàn)總次數(shù); 為程序中操作數(shù)出現(xiàn)總次數(shù)。為程序中操作數(shù)出現(xiàn)總次數(shù)。 1L2L46程序殘留缺陷程序殘留缺陷 N 的估計值為的估計值為3參數(shù)估計參數(shù)估計這里這里V表示程序容量,表示程序容量, 即即12)-(11 /0EVN log212llLV。)為一常數(shù)(而

53、 300000EE47 例例11-2 某一匯編語言程序,由某一匯編語言程序,由9個模塊組成,包含約個模塊組成,包含約24955條匯編語言指令,如表條匯編語言指令,如表11-2所列。所列。N表表11-2 某匯編程序原始數(shù)據(jù)及計算結(jié)果某匯編程序原始數(shù)據(jù)及計算結(jié)果模模塊塊指令指令條數(shù)條數(shù)缺陷數(shù)缺陷數(shù)決策決策點數(shù)點數(shù)調(diào)用調(diào)用次數(shù)次數(shù)l1l2MA4 03210237228347l442102MB1 329812154418017618MC5 4539355236261057493MDl 6742611l13023120l26ME2 05l7131519736613871MF2 5133721718632

54、228737MG69916104321317616MH3 7925023311025260350MX3 4128041623043335780N48假設(shè)每條指令包含一個操作符和一個操作數(shù),則假設(shè)每條指令包含一個操作符和一個操作數(shù),則解解 :指令條數(shù)221LLL643/ 1調(diào)用次數(shù)決策次數(shù)又設(shè) lN 其中,其中,64表示總共有表示總共有64種機器語言指令。那么種機器語言指令。那么可由式可由式(11-11) 計算,代入式計算,代入式(11-12) 可可以得到程序殘留缺以得到程序殘留缺陷的估計值陷的估計值 ,見表,見表11-2 中最后一列中的值。中最后一列中的值。 2l49 由以上分析可以看出,由以

55、上分析可以看出,Halstead模型認為程序中模型認為程序中的操作符和操作數(shù)與其殘留缺陷密切相關(guān)。該模型的的操作符和操作數(shù)與其殘留缺陷密切相關(guān)。該模型的優(yōu)點優(yōu)點是無需測試數(shù)據(jù)。是無需測試數(shù)據(jù)。 盡管眾多事實表明,盡管眾多事實表明,VN可近似為常數(shù),但可近似為常數(shù),但E0取值取值卻未必為卻未必為3000。也許利用程序的若干模塊缺陷數(shù)。也許利用程序的若干模塊缺陷數(shù)(據(jù)此可據(jù)此可估計估計E0)去估計其它模塊的缺陷數(shù)更為合理。去估計其它模塊的缺陷數(shù)更為合理。 因此,可用于測試之前的軟件開發(fā)階段;該模型的因此,可用于測試之前的軟件開發(fā)階段;該模型的缺點缺點是其有效性有待進一步確認。是其有效性有待進一步確

56、認。50四、四、G-O (Goel-Okumoto NHPP)模型模型2模型假設(shè)模型假設(shè)1模型類別模型類別模型為模型為 動態(tài)、宏觀、面向錯誤數(shù)模型。動態(tài)、宏觀、面向錯誤數(shù)模型。 軟件軟件(測試測試)運行方式與預(yù)計運行方式與預(yù)計(實際實際)運行剖面相同。運行剖面相同。 (2) 對于任一組有限時間點對于任一組有限時間點 ,在對應(yīng)時在對應(yīng)時間段間段 內(nèi)分別發(fā)生的錯誤數(shù)為內(nèi)分別發(fā)生的錯誤數(shù)為 相互獨立。相互獨立。 mmttttt,01211 ,nttt 21mfff,21 (3) 每一缺陷有均等機會被檢測發(fā)現(xiàn),且等級相同。每一缺陷有均等機會被檢測發(fā)現(xiàn),且等級相同。51 (4) 任一時刻任一時刻 t 發(fā)生的軟件故障累積次數(shù)發(fā)生的軟件故障累積次數(shù)N (t)服從均服從均值為值為m(t)的的Poisson分布分布,均值,均值m(t)使得微小時間段使得微小時間段(t,t+t)內(nèi)軟件故障發(fā)生次數(shù)與內(nèi)軟件故障發(fā)生次數(shù)與 t 時刻軟件殘留缺陷數(shù)成正比。時刻軟件殘留缺陷數(shù)成正比。式中式中 為測試過程最終軟件發(fā)生故障的總數(shù);為測試過程最終軟件發(fā)生故障的總數(shù); )(13-11 )()()(tfmabtmttmb 為比例常數(shù)。為比例常數(shù)。 (5) m (t)是一個有界、非減函數(shù),且是一個有界、非減函

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論