《軟件實(shí)現(xiàn)徐東升》PPT課件.ppt_第1頁
《軟件實(shí)現(xiàn)徐東升》PPT課件.ppt_第2頁
《軟件實(shí)現(xiàn)徐東升》PPT課件.ppt_第3頁
《軟件實(shí)現(xiàn)徐東升》PPT課件.ppt_第4頁
《軟件實(shí)現(xiàn)徐東升》PPT課件.ppt_第5頁
已閱讀5頁,還剩78頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第7章:實(shí)現(xiàn),通常把編碼和測試統(tǒng)稱為實(shí)現(xiàn)。 所謂編碼就是把軟件設(shè)計(jì)結(jié)果翻譯成用某種程序設(shè)計(jì)語言書寫的程序。只有在這個(gè)階段,才能將軟件需求真正付諸實(shí)施。 軟件測試在軟件生命周期中橫跨兩個(gè)階段(編碼和測試階段)。 一般在編寫出每個(gè)模塊之后就對它做單元測試(程序員測試)。 在這個(gè)階段結(jié)束之后,對軟件系統(tǒng)還應(yīng)該進(jìn)行各種綜合測試,通常由專門的測試人員承擔(dān)這項(xiàng)工作。,目前,軟軟測試仍然是保證軟件質(zhì)量的關(guān)鍵步驟,它是對軟件規(guī)格說明、設(shè)計(jì)和編碼的最后復(fù)審。測試的工作量往往占軟件開發(fā)總工作量的40%以上。因此,無論怎樣調(diào)強(qiáng)軟件測試的重要性及它對軟件可靠性的影響都不過分。 通過測試發(fā)現(xiàn)錯(cuò)誤之后還必須診斷并改正錯(cuò)誤

2、,這就是調(diào)試的目的。調(diào)試是測試階段最困難的工作。 在對測試結(jié)果進(jìn)行收集和評價(jià)的時(shí)候,軟件的可靠性也開始明朗了。軟件可靠性模型使用故障率數(shù)據(jù),估計(jì)軟件將來出現(xiàn)故障的情況并預(yù)測軟件的可靠性。,計(jì)算機(jī)程序設(shè)計(jì)語言基本上可以分為兩大類: 1. 匯編語言:特殊場合使用; 2. 高級語言:明顯優(yōu)于匯編語言。 這兩種語言必須翻譯為機(jī)器語言才能在計(jì)算機(jī)上執(zhí)行,理論上講也可以直接使用機(jī)器語言進(jìn)行程序設(shè)計(jì),但幾乎沒有人使用,效率低,可讀性差。,7.1 編碼,7.1.1 選擇程序設(shè)計(jì)語言,程序設(shè)計(jì)語言的劃代:,根據(jù)2011年“TIOBE世界編程語言排行榜”統(tǒng)計(jì),對其中前10種常用編程語言的使用概率進(jìn)行排名,可以了解

3、目前常用編程語言的使用情況,并展現(xiàn)全球范圍內(nèi)編程語言的應(yīng)用趨勢。十種常用編程語言的使用排名如下表所示。,選擇語言的理想標(biāo)準(zhǔn): 1、為了使程序容易測試和維護(hù)以減少軟件的總成本,所選用的高級語言應(yīng)該有理想的模塊化機(jī)制,以及可讀性好的控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu); 2、為了便于調(diào)試和提高軟件可靠性,語言特點(diǎn)應(yīng)該使編譯程序能夠盡可能多地發(fā)現(xiàn)程序中的錯(cuò)誤; 3、為了降低軟件開發(fā)和維護(hù)的成本,選用的高級語言應(yīng)該有良好的獨(dú)立編譯機(jī)制。,選擇語言時(shí)除了考慮理論上的標(biāo)準(zhǔn),還必須同時(shí)考慮主要的實(shí)用標(biāo)準(zhǔn):,(1)系統(tǒng)用戶對編程語言的要求 (2)運(yùn)行目標(biāo)系統(tǒng)的環(huán)境中可以提供的編譯程序 (3)可以得到的軟件工具 (4)工程規(guī)模

4、(5)程序員掌握的編程語言知識(shí) (6)軟件可移植性要求 (7)軟件的應(yīng)用領(lǐng)域,1.程序內(nèi)部的文檔 選取含義鮮明的名字,如果使用縮寫,縮寫規(guī)則要一致,并給每個(gè)名字加注釋; 通常在每個(gè)模塊開始處要有一段注釋,描述模塊功能、算法、接口特點(diǎn)等; 程序清單布局應(yīng)利用適當(dāng)?shù)碾A梯形式,使程序的層次結(jié)構(gòu)清晰明顯。,7.1.2 寫程序的風(fēng)格,2.數(shù)據(jù)說明 數(shù)據(jù)說明的次序應(yīng)該標(biāo)準(zhǔn)化,如按數(shù)據(jù)類型確定說明的次序; 多個(gè)變量名在一個(gè)語句中說明時(shí),應(yīng)該按字母順序排列這些變量; 如果設(shè)計(jì)時(shí)使用了復(fù)雜的數(shù)據(jù)結(jié)構(gòu),應(yīng)該用注釋說明實(shí)現(xiàn)該數(shù)據(jù)結(jié)構(gòu)的方法和特點(diǎn)。,3. 語句構(gòu)造 不要為了節(jié)省空間而把多個(gè)語句寫在同一行; 盡量避免復(fù)

5、雜的條件測試; 盡量減少對“非”條件的測試; 避免大量使用循環(huán)嵌套和條件嵌套; 利用括號(hào)使邏輯表達(dá)式或算術(shù)表達(dá)式的運(yùn)算次序清晰直觀。,4. 輸入輸出 對所有輸入數(shù)據(jù)都進(jìn)行檢驗(yàn); 檢查輸入項(xiàng)重要組合的合法性; 保持輸入格式簡單; 使用數(shù)據(jù)結(jié)束標(biāo)記,不要要求用戶指定數(shù)據(jù)的數(shù)目; 明確提示交互式輸入的請求,詳細(xì)說明可用的選擇或邊界數(shù)值; 當(dāng)程序設(shè)計(jì)語言對格式有嚴(yán)格要求時(shí),應(yīng)保持輸入格式一致; 設(shè)計(jì)良好的輸出報(bào)表; 給所有輸出數(shù)據(jù)加標(biāo)志。,5. 效率 效率是性能要求,因此應(yīng)該在需求分析階段確定效率方面的要求。 效率是靠好設(shè)計(jì)來提高的。 程序的效率和程序的簡單程度是一致的,不要犧牲程序的清晰性和可讀性來

6、不必要地提高效率。,效率主要指處理機(jī)時(shí)間、存儲(chǔ)器容量和輸入/輸出效率三個(gè)方面。 效率問題 A程序運(yùn)行時(shí)間 B存儲(chǔ)器效率 C輸入/輸出效率,(1) 程序運(yùn)行時(shí)間 寫程序之前先簡化算術(shù)的和邏輯的表達(dá)式; 仔細(xì)研究嵌套的循環(huán),以確定是否有語句可以從內(nèi)層往外移; 盡量避免使用多維數(shù)組; 盡量避免使用指針和復(fù)雜的表; 使用執(zhí)行時(shí)間短的算術(shù)運(yùn)算; 不要混合使用不同的數(shù)據(jù)類型; 盡量使用整數(shù)運(yùn)算和布爾表達(dá)式。 在效率是決定性因素的應(yīng)用領(lǐng)域,盡量使用有良好優(yōu)化特性的編譯程序,以自動(dòng)生成高效目標(biāo)代碼。,(2) 存儲(chǔ)器效率 使用能保持功能域的結(jié)構(gòu)化控制結(jié)構(gòu),是提高效率的好方法。 在微處理機(jī)中如果要求使用最少的存儲(chǔ)

7、單元,則應(yīng)選用有緊縮存儲(chǔ)器特性的編譯程序,在非常必要時(shí)可以使用匯編語言。 提高執(zhí)行效率的技術(shù)通常也能提高存儲(chǔ)器效率。提高存儲(chǔ)器效率的關(guān)鍵同樣是“簡單”。,(3) 輸入輸出的效率 如果用戶為了給計(jì)算機(jī)提供輸入信息或?yàn)榱死斫庥?jì)算機(jī)輸出的信息,所需花費(fèi)的腦力勞動(dòng)是經(jīng)濟(jì)的,那么人和計(jì)算機(jī)之間通信的效率就高。因此,簡單清晰同樣是提高人機(jī)通信效率的關(guān)鍵。,例1:注釋,/* ADD AMOUNT TO TOTAL */ TOTAL = AMOUNT+TOTAL,/* ADD MONTHLY-SALES TO ANNUAL-TOTAL */ TOTAL = AMOUNT+TOTAL,例2:視覺組織空格,(A1

8、7)ANDNOT(B49)ORC,(A17) AND NOT (B49) OR C,例3:視覺組織移行,IF () THEN IF () THEN ELSE ENDIF ELSE ENDIF,例4:數(shù)據(jù)說明標(biāo)準(zhǔn)化,INTEGER size,length,width,cost,price,INTEGER cost,length,price,size,width,例5:一行一條語句,FOR I:=1 TO N-1 DO BEGIN T:=I; FOR J:=I+1 TO N DO IF AJI THEN BEGIN WORK:=AT; AT:=AI; AI:=WORK; END END;,FOR

9、I:=1 TO N-1 DO BEGIN T:=I; FOR J:=I+1 TO N DO IF AJI THEN BEGIN WORK:=AT; AT:=AI; AI:=WORK; END END;,例6:強(qiáng)調(diào)清晰性,AI=AI+AT; AT=AI-AT; AI=AI-AT;,WORK=AT; AT=AI; AI=WORK;,例7:簡單直接,for (i=1; i=n; i+) for (j=1; j=n; j+) Vij=(i/j)*(j/i),for (i=1; i=n; i+) for (j=1; j=n; j+) if (i=j) Vij=1; else Vij=0;,例8:避免不必

10、要的轉(zhuǎn)移,IF (XY) GOTO 30 IF (YZ) GOTO 50 SMALL=Z GOTO 70 30 IF (XZ) GOTO 60 AMALL=Z GOTO 70 50 SMALL=Y GOTO 70 60 SMALL=X 70 CONTINUE,SMALL=X; IF (YSMALL) SMALL=Y; IF (ZSMALL) SMALL=Z;,例9:避免使用空ELSE和IFTHEN IF語句,if (char=a) if (char=z) cout “This is a letter.”; else cout “This is not a letter.”;,if (char=

11、a ,例10:少用否定條件,if ( !(char 9) ),if (char = 0 & char = 9),程序設(shè)計(jì)工具實(shí)例:Visual C,運(yùn)用Visual C+ 開發(fā)工具需要掌握: C語言特點(diǎn)、語法; Windows編程基礎(chǔ); MFC相關(guān)知識(shí); Visual C集成開發(fā)工具環(huán)境的使用;,一、C語言特點(diǎn)、語法: C+語言是在C語言的基礎(chǔ)是擴(kuò)展而成的,兩種語言的基本語法和語義是相同。 C+中加入了面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)的特征: 封裝性:通過“類”把屬性和函數(shù)組合在一起。 繼承性:派生類可從先前定義的基類中繼承函數(shù)和屬性。 多態(tài)性:一個(gè)函數(shù)名,由不同的對象解釋執(zhí)行,可得到不同的執(zhí)行效果

12、。,二、Windows編程基礎(chǔ): API: API是Windows應(yīng)用程序編程接口。 API是一個(gè)程序內(nèi)(或一組相關(guān)程序內(nèi))的一組函數(shù)調(diào)用,程序員用它創(chuàng)建其他程序。 程序員不必知道函數(shù)內(nèi)部,只要知道API的函數(shù)原型及返回值。 API的函數(shù)原型及返回值形式可由相關(guān)的技術(shù)規(guī)范資料獲得。,三、MFC: MFC,即Microsoft基本類,該類庫封裝了SDK(軟件開發(fā)工具包)結(jié)構(gòu)、功能及應(yīng)用程序框架內(nèi)部技術(shù)。 它提供了許多可以重用的類,使得Windows程序員避免了許多重復(fù)性工作。,四、Visual C集成開發(fā)工具環(huán)境 1)開發(fā)工具的使用; 2)掌握Win32程序開發(fā)流程 ; 一個(gè)win32程序由兩大

13、塊組成: 程序代碼; 用戶接口資源:菜單,對話框,圖標(biāo),光標(biāo)等; 這些資源的實(shí)際內(nèi)容(二進(jìn)制代碼)由各種工具產(chǎn)生,并以各種擴(kuò)展名的文件存在 。,7.2.1 軟件測試的目標(biāo),7.2 軟件測試基礎(chǔ),因?yàn)檐浖こ痰钠渌A段都是“建設(shè)性”的,每個(gè)階段都通過技術(shù)復(fù)審排除錯(cuò)誤來提高系統(tǒng)的可靠性的,所以人們會(huì)自然而然地想象“測試是為了表明程序是正確的”、“成功的測試是沒有發(fā)現(xiàn)錯(cuò)誤的測試”等,但是這種想法與測試的真正目的恰恰相反。事實(shí)上,在測試階段,測試人員努力設(shè)計(jì)出一系列測試方案,目的是為了“破壞”已經(jīng)建造好的軟件系統(tǒng),竭力證明程序中的錯(cuò)誤,不能按照預(yù)定的要求正確工作。,G.Myers給出有關(guān)測試的一些規(guī)則

14、,這些規(guī)則可以看作是測試的目標(biāo)或者是定義: (1)測試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程; (2)好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測試方案; (3)成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測試。 發(fā)現(xiàn)問題是為了解決問題 ,測試階段的根本目標(biāo)是盡可能多地發(fā)現(xiàn)并排除軟件中潛藏的錯(cuò)誤,最終把一個(gè)高質(zhì)量的軟件系統(tǒng)交給用戶使用。這個(gè)根本目標(biāo)與上述目標(biāo)并不矛盾。,只有正確地認(rèn)識(shí)測試的目標(biāo),才能設(shè)計(jì)正確的測試方案,就會(huì)力求設(shè)計(jì)出最能暴露錯(cuò)誤的測試方案,否則,就會(huì)設(shè)計(jì)出一些不易暴露錯(cuò)誤的測試方案。從心量學(xué)的角度來看,由程序的編寫者自己進(jìn)行測試是不恰當(dāng)?shù)?。因此,在綜合測試階段通常由其他人員

15、組成測試小組來完成測試工作。,7.2.2 軟件測試準(zhǔn)則,1)所有測試都應(yīng)該能追溯到用戶需求; 2)應(yīng)該遠(yuǎn)在測試前就制定出測試計(jì)劃; 3)把Pareto原理應(yīng)用到軟件測試中; 4)應(yīng)該從“小規(guī)?!睖y試開始,并逐步進(jìn)行“大規(guī)?!睖y試; 5)窮舉測試是不可能的;包含所有可能情況的測試稱為窮盡測試。 6)為了達(dá)到最佳測試效果,應(yīng)該由獨(dú)立的第三方從事測試工作。,黑盒測試(功能測試): 如果已經(jīng)知道軟件應(yīng)該具有的功能,可以通過測試來檢驗(yàn)是否每個(gè)功能都能正常使用,這種測試稱黑盒測試。 把程序看作一個(gè)黑盒子; 完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程; 是在程序接口進(jìn)行的測試。,7.2.3 測試方法,白盒測試(結(jié)構(gòu)

16、測試): 如果知道軟件內(nèi)部工作過程,可以通過測試來檢驗(yàn)軟件內(nèi)部動(dòng)作是否按照規(guī)格說明書的規(guī)定正常進(jìn)行,這種測試稱為白盒測試。 把程序看成裝在一個(gè)透明的盒子里; 測試者完全知道程序的結(jié)構(gòu)和處理算法; 按照程序內(nèi)部的邏輯測試程序,檢測程序中的主要執(zhí)行通路是否都能按預(yù)定要求正確工作。,黑盒測試不可能實(shí)現(xiàn)窮盡測試: 假設(shè)有程序P,輸入量微A和B,輸出量為C。 如果計(jì)算機(jī)的字長為32位,A和B的數(shù)據(jù)類型都是整數(shù)類型。將A和B的可能取值進(jìn)行排列組合,輸入數(shù)據(jù)的可能性有:232232264種。 假設(shè)這個(gè)程序執(zhí)行一次需要1毫秒,要完成所有的測試,計(jì)算機(jī)需要連續(xù)工作5億年。,白盒測試也不能實(shí)現(xiàn)窮盡測試: 圖中所示

17、的一個(gè)小程序的控制流程。曲線代表執(zhí)行次數(shù)不超過20的循環(huán),循環(huán)體中共有5條通路。 可能執(zhí)行的路徑有520條,近似為1014條可能的路徑。 如果完成一個(gè)路徑的測試需要1毫秒,那么整個(gè)測試過程需要3170年。,黑盒測試與白盒測試優(yōu)缺點(diǎn)比較:,1.模塊測試(單元測試) 它把每個(gè)模塊作為單獨(dú)的實(shí)體來測試。 保證每個(gè)模塊作為一個(gè)單元能正確運(yùn)行; 發(fā)現(xiàn)的往往是編碼和詳細(xì)設(shè)計(jì)的錯(cuò)誤。 2.子系統(tǒng)測試 子系統(tǒng)測試是把經(jīng)過單元測試的模塊放在一起形成一個(gè)子系統(tǒng)來測試;著重測試模塊的接口。,7.2.4 軟件測試的步驟,3.系統(tǒng)測試 系統(tǒng)測試是把經(jīng)過測試的子系統(tǒng)裝配成一個(gè)完整的系統(tǒng)來測試。 發(fā)現(xiàn)的往往是軟件設(shè)計(jì)中的錯(cuò)

18、誤,也可能發(fā)現(xiàn)需求說明中的錯(cuò)誤; 不論是子系統(tǒng)測試還是系統(tǒng)測試,都兼有檢測和組裝兩重含義,通常稱為集成測試。,4.驗(yàn)收測試 驗(yàn)收測試把軟件系統(tǒng)作為單一的實(shí)體進(jìn)行測試; 它是在用戶積極參與下進(jìn)行的,而且可能主要使用實(shí)際數(shù)據(jù)(系統(tǒng)將來要處理的信息)進(jìn)行測試; 發(fā)現(xiàn)的往往是系統(tǒng)需求說明書中的錯(cuò)誤。,5. 平行運(yùn)行 同時(shí)運(yùn)行新開發(fā)出來的系統(tǒng)和將被它取代的舊系統(tǒng),以便于比較新舊兩個(gè)系統(tǒng)的處理結(jié)果; 可以在準(zhǔn)生產(chǎn)環(huán)境中運(yùn)行新系統(tǒng)而又不冒風(fēng)險(xiǎn); 用戶能有一段熟悉新系統(tǒng)的時(shí)間; 可以驗(yàn)證用戶指南和使用手冊之類的文檔; 能夠以準(zhǔn)生產(chǎn)模式對新系統(tǒng)進(jìn)行全負(fù)荷測試,可以用測試結(jié)果驗(yàn)證性能指標(biāo)。,7.2.5 測試階段的

19、信息流,輸入信息有兩類: 軟件配置:包括需求說明書、設(shè)計(jì)說明書和源程序清單等; 測試配置:包括測試計(jì)劃和測試方案。,7.8 調(diào)試,調(diào)試是在測試發(fā)現(xiàn)錯(cuò)誤之后排除錯(cuò)誤的過程。 軟件錯(cuò)誤的外部表現(xiàn)和它的內(nèi)在原因之間可能并沒有明顯的聯(lián)系。 調(diào)試就是把癥狀和原因聯(lián)系起來的尚未被人深入認(rèn)識(shí)的智力過程。,7.8.1 調(diào)試過程,調(diào)試發(fā)生在測試之后。 調(diào)試過程從執(zhí)行一個(gè)測試用例開始,評估測試結(jié)果,如果發(fā)現(xiàn)實(shí)際結(jié)果與預(yù)期結(jié)果不一致,則這種不一致就是一個(gè)癥狀,它表明在軟件中存在著隱藏的問題。 調(diào)試過程試圖找出產(chǎn)生癥狀的原因,以便改正錯(cuò)誤。,軟件錯(cuò)誤的特征: (1) 癥狀和產(chǎn)生癥狀的原因可能在程序中相距甚遠(yuǎn); (2)

20、當(dāng)改正了另一個(gè)錯(cuò)誤之后,癥狀可能暫時(shí)消失了; (3)癥狀可能實(shí)際上并不是由錯(cuò)誤引起的(例如,舍入誤差) (4)癥狀可能是由不易跟蹤的人為錯(cuò)誤引起的; (5)癥狀可能是由定時(shí)問題而不是由處理問題引起的; (6)可能很難重新產(chǎn)生完全一樣的輸入條件(例如,輸入順序不確定的實(shí)時(shí)應(yīng)用系統(tǒng)); (7)癥狀可能時(shí)有時(shí)無,這種情況在硬件和軟件緊密地耦合在一起的嵌入式系統(tǒng)中特別常見; (8)癥狀可能是由分布在許多任務(wù)中的原因引起的,這些任務(wù)運(yùn)行在瑣的處理機(jī)上。,7.8.2 調(diào)試途徑,有下列3種調(diào)試途徑可以采用: 蠻干法 回溯法 原因排除法,1. 蠻干法 蠻干法可能是尋找軟件錯(cuò)誤原因的最低效的方法。其他方法都失敗

21、時(shí)才使用這種方法。 這種方法印出內(nèi)存的內(nèi)容,激活對運(yùn)行過程的跟蹤,在程序中到處都寫上WRITE(輸出)語句。 更多情況下只會(huì)浪費(fèi)時(shí)間和精力。必須首先進(jìn)行周密的思考,有明確的目的,盡量減少無關(guān)信息的數(shù)量。,2. 回溯法 回溯是一種相當(dāng)常用的調(diào)試方法,當(dāng)調(diào)試小程序時(shí)這種方法是有效的。 具體做法是,從發(fā)現(xiàn)癥狀的地方開始,人工沿程序的控制流往回追蹤分析源程序代碼,直到找出錯(cuò)誤原因?yàn)橹埂?隨著程序規(guī)模擴(kuò)大,應(yīng)該回溯的路徑數(shù)目也變得越來越大,以至徹底回溯變成完全不可能了。,3. 原因排除法 對分查找法 歸納法 演繹法,對分查找法: 如果已經(jīng)知道每個(gè)變量在程序內(nèi)若干個(gè)關(guān)鍵點(diǎn)的正確值,則可以用賦值語句或輸入語

22、句在程序中點(diǎn)附近“注入”這些變量的正確值,然后運(yùn)行程序并檢查所得到的輸出。 如果輸出結(jié)果是正確的,則錯(cuò)誤原因在程序前半部分;反之,錯(cuò)誤原因在程序后半部分。 對錯(cuò)誤原因所在的那部分重復(fù)使用這個(gè)方法,直到把出錯(cuò)范圍縮小到容易診斷的程度為止。,歸納法: 是從個(gè)別現(xiàn)象推斷出一般性結(jié)論的思維方法。 首先把和錯(cuò)誤有關(guān)的數(shù)據(jù)組織起來進(jìn)行分析,以便發(fā)現(xiàn)可能的錯(cuò)誤原因。 然后導(dǎo)出對錯(cuò)誤原因的一個(gè)或多個(gè)假設(shè),并利用已有的數(shù)據(jù)來證明或排除這些假設(shè)。 演繹法: 從一般原理或前提出發(fā),經(jīng)過排除和精化的過程推導(dǎo)出結(jié)論。 首先設(shè)想出所有可能的出錯(cuò)原因,然后試圖用測試來排除每一個(gè)假設(shè)的原因。,7.9 軟件可靠性,1. 軟件可

23、靠性定義 軟件可靠性:是程序在給定的時(shí)間間隔內(nèi),按照規(guī)格說明書的規(guī)定成功地運(yùn)行的概率。,7.9.1 基本概念,2. 軟件的可用性 軟件可用性是:程序在給定的時(shí)間點(diǎn),按照規(guī)格說明書的規(guī)定,成功地運(yùn)行的概率。 對故障可修復(fù)系統(tǒng),應(yīng)同時(shí)使用可靠性和可用性來衡量。 可靠性和可用性的區(qū)別是:可靠性是在0到t時(shí)間間隔內(nèi),系統(tǒng)沒有失效的概率。而可用性是在t時(shí)刻,系統(tǒng)是正常運(yùn)行的概率。,如果在t時(shí)刻,系統(tǒng)是可用的,則有兩種可能: 1)在0到t時(shí)刻這段時(shí)間內(nèi),系統(tǒng)一直沒有失效(可靠); 2)在0到t時(shí)刻這段時(shí)間內(nèi)失效過,但是系統(tǒng)修復(fù)后運(yùn)行到t時(shí)刻時(shí)情況良好。,如果在一段時(shí)間內(nèi),軟件系統(tǒng)故障停機(jī)時(shí)間分別為:td1

24、 , td2 , ,正常運(yùn)行時(shí)間分別為:tu1 , tu2 , ,則系統(tǒng)的穩(wěn)態(tài)可用性定義為:,其中Tup= tui , Tdown= tdi,如果引入系統(tǒng)平均無故障時(shí)間MTTF和平均維修時(shí)間MTTR的概念,則上面公式的系統(tǒng)穩(wěn)態(tài)可用性變成:,平均維修時(shí)間MTTR是修復(fù)一個(gè)故障平均需要用的時(shí)間,取決于維護(hù)人員的技術(shù)水平和對系統(tǒng)熟悉程度,也和系統(tǒng)的可維護(hù)性有重要關(guān)系。 平均無故障時(shí)間MTTF是系統(tǒng)按照規(guī)格說明書規(guī)定成功地運(yùn)行的平均時(shí)間,取決于系統(tǒng)中潛伏的錯(cuò)誤數(shù)量,因此和測試的關(guān)系十分密切。,1. 符號(hào) 估算MTTF時(shí)使用到下列符號(hào) ET測試之前程序中故障總數(shù); IT程序長度(機(jī)器指令總數(shù)); 測試(

25、包括調(diào)試)時(shí)間; Ed() 在0至期間發(fā)現(xiàn)的錯(cuò)誤數(shù); Ec() 在0至期間改正的錯(cuò)誤數(shù);,7.9.2 估算平均無故障時(shí)間MTTF的方法,2. 基本假定 可作出下列假定: 1)單位長度里的故障數(shù)ET/ IT近似為常數(shù)。一些統(tǒng)計(jì)數(shù)字表明,通常有:0.510-2ET/ IT210-2。 2)失效率正比于軟件中剩余的(潛藏的)故障數(shù),而平均無故障時(shí)間MTTF與剩余的故障數(shù)成反比。 3)調(diào)試過程沒有引入新的故障,也就是說發(fā)現(xiàn)的每一個(gè)錯(cuò)誤都立即正確地改正了,即Ec()= Ed()。,系統(tǒng)剩余的故障數(shù)為: Er() = ET- Ec() 所以單位長度程序中剩余的故障數(shù)為: r () = ET / IT -

26、Ec()/ IT,3. 估算平均無故障時(shí)間MTTF 因?yàn)槠骄鶡o故障時(shí)間與單位長度程序中剩余的故障數(shù)r ()成反比,所以:,其中:K為常數(shù),它的值根據(jù)經(jīng)驗(yàn)選取,經(jīng)典值是200。,由上式變換后得到程序中改正的錯(cuò)誤數(shù):,根據(jù)對軟件平均無故障時(shí)間的要求,可以估計(jì)需要改正多少個(gè)錯(cuò)誤后,測試工作就可以結(jié)束。,估算平均無故障時(shí)間的公式,可以評價(jià)軟件測試的進(jìn)展情況。,4. 估計(jì)錯(cuò)誤總數(shù)的方法 程序中的錯(cuò)誤總數(shù)ET與程序規(guī)模、類型、開發(fā)環(huán)境、開發(fā)方法論、開發(fā)人員的技術(shù)水平和管理水平等都有密切關(guān)系。 估計(jì)ET的兩個(gè)方法: 植入錯(cuò)誤法 分別測試法,植入錯(cuò)誤法: 在測試之前由專人在程序中隨機(jī)地植入一些錯(cuò)誤。 測試之后

27、,根據(jù)測試小組發(fā)現(xiàn)的錯(cuò)誤中原有的和植入的兩種錯(cuò)誤的比例,來估計(jì)程序中原有錯(cuò)誤的總數(shù)ET 。,假設(shè)人為地植入的錯(cuò)誤數(shù)為Ns,經(jīng)過一段時(shí)間的測試之后發(fā)現(xiàn)ns個(gè)植入的錯(cuò)誤,此外還發(fā)現(xiàn)了n個(gè)原有的錯(cuò)誤。 如果可以認(rèn)為測試方案發(fā)現(xiàn)植入錯(cuò)誤和發(fā)現(xiàn)原有錯(cuò)誤的能力相同,則能夠估計(jì)出程序中原有錯(cuò)誤的總數(shù)為 =n/nsNs,s,n ns,其中: 是故障總數(shù)ET的估計(jì)值;,分別測試法: 植入錯(cuò)誤法的基本假定是所用的測試方案發(fā)現(xiàn)植入錯(cuò)誤和發(fā)現(xiàn)原有錯(cuò)誤的概率相同。 植入錯(cuò)誤法人為植入的錯(cuò)誤與原有程序錯(cuò)誤可能性質(zhì)很不相同,發(fā)現(xiàn)它們的難度也不同,用此法估計(jì)的錯(cuò)誤數(shù)有時(shí)可能不太準(zhǔn)確。 如果有辦法隨機(jī)地把程序中一部分原有的錯(cuò)誤

溫馨提示

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

評論

0/150

提交評論