Ch軟件可靠性度量課件_第1頁
Ch軟件可靠性度量課件_第2頁
Ch軟件可靠性度量課件_第3頁
Ch軟件可靠性度量課件_第4頁
Ch軟件可靠性度量課件_第5頁
已閱讀5頁,還剩103頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2023/1/61§5.1引言5.1.1軟件可靠性工程及軟件可靠性軟件可靠性工程 應用統計技術,處理在軟件開發過程中或(和)運行期間所采集的失效數據,以便詳細說明并預計、估計和評價軟件的可靠性 研究內容包括軟件可靠性的基本概念和定義、軟件可靠性指標體系、可靠性建模、可靠性設計技術、測試技術和管理技術等2023/1/6www.china-onlineclass.2023/1/62軟件可靠性工程處理以下問題:確定某過程能否提供滿足可靠性要求的代碼為過程改進提供度量預測軟件維護階段的失效率,確定軟件維護工作量幫助進行安全性認證確定交付軟件產品的時間或停止測試的時機估計下次故障的可能時間為軟件更新或升級,標識需要重新設計的主要部件測定軟件的可靠性2023/1/6www.china-onlineclass.2023/1/63軟件可靠性可靠性是軟件的13個質量因素中最關鍵、最重要的軟件可靠性是指在規定時間和條件下軟件無故障運行的概率,是系統功能或軟件產品中存在的缺陷的函數軟件故障產生的原因是軟件缺陷,但缺陷并不一定導致故障的產生,高缺陷率的軟件的可靠性不一定就差軟件失效意味著軟件運行中斷或者無法完成所規定的任務2023/1/6www.china-onlineclass.2023/1/64幾個值得關注的問題:軟件的運行環境:軟件可靠性與運行環境密切相關軟件運行的時間間隔:商業軟件需要較高的運行時間間隔(較長的運行壽命),而任務關鍵軟件則需要在短時間內高效運行軟件失效的時機是隨機的,與硬件失效類似不同于軟件的正確性,對于持續運行的軟件其可靠性最終將歸于零(以失效結束);但正確性是軟件的特定的某次運行結果,要么為1,要么為02023/1/6www.china-onlineclass.2023/1/655.1.2軟件的缺陷、故障和失效缺陷(Error,錯誤):設計和構造進產品

總數是不可預知的,只能估計

缺陷分為已知和未知(新發現)的

缺陷分為已發現的和未發現的

已發現的缺陷包括已糾正的和未糾正的故障(Fault):運行結果錯誤

故障是缺陷的表現形式,是由存在的缺陷產生的

但缺陷并不一定導致故障,或者條件不具備,或者不會產生故障失效(Failure):系統不能完成所需要的功能而失敗

失效是故障在軟件運行時所產生的后果失效缺陷故障已糾正的缺陷2023/1/6www.china-onlineclass.2023/1/66軟件質量度量與軟件過程有什么關系?2023/1/6www.china-onlineclass.2023/1/67失效故障面向用戶面向開發者軟件運行偏離用戶需求程序執行輸出錯誤結果可根據對用戶應用的嚴重性等級分類可根據定位和排除故障的難度分類如,3次失效/1000CPU小時如,6個故障/1KLOC失效與故障的區別2023/1/6www.china-onlineclass.2023/1/685.1.3軟件失效軟件失效是隨機發生的描述失效的方法有三個:累計失效函數:即與某時間點相關的平均累計失效數失效率函數:用累計失效函數的變化率表示平均失效時間MTTF函數:對于一個時間段,表示若干相鄰失效時間間隔的平均值;對某個時間點,表示到下次失效的期望時間2023/1/6www.china-onlineclass.2023/1/69軟件失效率如果沒有缺陷,軟件失效率為0如果發現的缺陷能被及時、完全修復,失效率會趨向0實際上,發現的缺陷數會遞增,而糾正一個缺陷會引入更多的缺陷,因而失效率會增加時間失效率硬件軟件(實際)軟件(理想)2023/1/6www.china-onlineclass.2023/1/610§5.2軟件可靠性度量和建模5.2.1基本概念 軟件可靠性建模過程是根據軟件過去的故障行為建立軟件可靠性數學模型的過程

建模的目的是為了預計軟件將來的故障行為

建模過程包括以下步驟:通過度量獲得歷史數據對故障數據進行分析,擬合成概率分布函數對擬合函數進行參數分析確定所期望的可靠性度量值并預測可能的故障行為2023/1/6www.china-onlineclass.2023/1/6115.2.2軟件可靠性度量參數軟件可靠性R(t)可定義為:在給定條件下,在時間[0,t]內,軟件無故障運行的概率若用T表示軟件無故障運行的時間間隔,F(t)為T的累積分布函數,則軟件可靠性可表示為:R(t)=1-F(t) t≥0故障率函數λ(t)為:其中,f(t)為F(t)的函數密度,即:2023/1/6www.china-onlineclass.2023/1/612λ(t)Δt是在時間[0,t]內軟件正常運行,在[t,t+Δt]內發生故障的條件概率,可得:密度函數f(t)、累積分布函數F(t)、可靠性函數R(t)和故障率函數λ(t)緊密相關,一般可由任一個惟一地確定另外三個,例如若λ(t)給定,則:根據f(t)或R(t)可計算平均失效時間函數MTTF,從而預測故障時間2023/1/6www.china-onlineclass.2023/1/6135.2.3軟件可靠性度量模型指數分布密度函數為分布函數為故障率函數為 (常數)具有指數壽命分布的軟件產品(故障率為常數)沒有老化現象,符合不需要維護的軟件的運行情況2023/1/6www.china-onlineclass.2023/1/614Weibull分布Weibull是更常用的分布,在許多工程領域的可靠性分析中都廣泛應用,如軸承磨損、河流泛濫等Weibull分布有兩個參數α、β(β為1時變為指數函數)函數密度為:分布函數為:故障率函數為:2023/1/6www.china-onlineclass.2023/1/615β>1β<1β=1tWeibull分布β=1時變為指數分布β=2時為Rayleigh分布研究表明,軟件項目的生命周期模式、項目的缺陷移除模式等都很好地符合Rayleigh模型2023/1/6www.china-onlineclass.2023/1/616數據收集和分析是度量軟件可靠性的最重要的先決條件,任何可靠性度量的有效性都與數據收集的有效性直接相關,數據收集過程必須有計劃、有組織地進行與軟件可靠性相關的數據包括:缺陷數據過程數據產品數據:如規模、功能、性能等§5.3軟件可靠性數據收集過程2023/1/6www.china-onlineclass.2023/1/6175.3.1缺陷數據的收集缺陷數據的收集常采用問答、報告形式,即發放問題報告表格要求有關人員填寫,收集并分析問題報告表格形成統計數據檢測到的缺陷已記錄的缺陷已評審的缺陷確認?結束缺陷報告采取措施?通過驗證?記錄不采取措施的原因記錄糾正驗證問題報告NoNoNoYesYesYes2023/1/6www.china-onlineclass.2023/1/6185.3.2過程數據的收集缺陷數據必須與過程融合才有價值,因而過程數據也需要收集。通常會將項目的持續時間作為主要關心的過程數據,但實際需要更細分與軟件可靠性測試過程相關的數據包括:CPU時間:具有與人無關性,但易忽略人的工作(如評審等)日歷時間:優點是易于收集,但沒有考慮階段特征,如某些技術在某階段更有效運行時間:是為測試而運行軟件的總時間,也未考慮階段特征其他數據:包括平均修復時間、完成每個過程活動的人數、軟件生命期各階段所用時間百分比、各階段所消耗的資源數量、各階段的開始、截止日期、各階段修復一個缺陷所需的工作量、各功能模塊的缺陷數,等等2023/1/6www.china-onlineclass.2023/1/619§5.4軟件的運行剖面軟件可靠性建模需要具備三個條件:軟件運行時間基準(日歷時間、運行時間、CPU時間)軟件運行過程收集的數據,是建模基礎軟件功能和運行環境 軟件運行剖面用于定量描述軟件的用戶運行環境,即軟件的功能和各功能的使用概率2023/1/6www.china-onlineclass.2023/1/6205.4.1軟件新系統的運行剖面不同的運行模式下各功能的使用概率不同不同運行模式的出現模式也不同運行模式1運行模式2功能功能使用概率2023/1/6www.china-onlineclass.2023/1/621運行剖面對軟件可靠性工程極具價值:可為開發過程的資源分配提供參考,有利于提高生產率、可靠性和加快開發速度有利于測試,可確保常用功能獲得更多測試有利于設計測試用例,以發現影響可靠性最大的故障根據功能的使用頻度可確定開發的優先級使功能描述更清晰,便于交流有助于用戶培訓2023/1/6www.china-onlineclass.2023/1/6225.4.2軟件運行剖面與可靠性的關系 軟件可靠性度量、評估和預測與軟件的某個特定的運行剖面密切相關 軟件測試期間,為節省時間和成本,通常每個運行剖面只測試一次,因而不能反映每個剖面的出現概率,由此獲得的可靠性數據也不能反映實際情況

要將測試期間獲得的可靠性值變換為實際值,可用以下公式:

其中,λu是實際的用戶環境下的故障密度,λT是測試值,C為測試壓縮系數2023/1/6www.china-onlineclass.2023/1/623C的含義是:在覆蓋全部輸入空間條件下,使用期間所要求的執行時間與測試階段所要求的執行時間之比C的計算公式為:其中, τk為輸入狀態k運行時的執行時間

Pk為輸入狀態k在運行期間的發生概率

QI為輸入狀態總數

Pmin為最少發生的輸入狀態的概率2023/1/6www.china-onlineclass.2023/1/624

5.4.3軟件運行剖面的建立運行剖面是關于系統如何運行的定量描述,建立步驟為:建立客戶剖面:分類描述要獲取該系統的客戶的使用模式建立用戶剖面:分類描述要使用該系統的用戶的使用模式定義系統模式剖面:根據執行過程描述系統運行模式確定功能剖面:劃分功能并確定各功能的發生概率確定運行剖面:確定系統各運行模式的發生概率2023/1/6www.china-onlineclass.2023/1/625§5.5軟件可靠性模型及應用

軟件可靠性建模是軟件可靠性工程的研究重點5.5.1與軟件可靠性模型有關的問題歷史背景 20世紀70年代,Telinski、Moranda、Shooman等人提出了軟件可靠性建模的問題,并使用建立的模型估計軟件現在和未來的可靠性

經近40年的發展,軟件可靠性模型已有很多種2023/1/6www.china-onlineclass.2023/1/626軟件可靠性模型的分類 Musa、Okumoto根據模型的5個特征進行分類:時間域(timedomain):日歷時間、執行時間或CPU時間類別(Category):軟件在無限的時間內可能經歷的故障數是有限的還是無限的型(Type):軟件在運行時間t時的失效數分布分類種類(Class):故障密度對時間的函數分布(僅對有限故障類)族(Family):故障密度對它的期望故障數的函數分布(僅對無限故障類)2023/1/6www.china-onlineclass.有限故障數模型種類型泊松分布二項式分布其他指數分布Mussa(1975)MorandaSchneidewindGoel-OkumotoJelinski-MorandaShoomanGoel-OkumotoMussaKeiller-LittlewoodWeibull分布Schick-wolvertonWagonerC1分布Schick-wolverton帕雷多分布LittlewoodGamma分布Y-O-O無限故障數模型族型T1T2T3泊松分布幾何分布MorandaMussa-Okumoto線性倒數Littlewood-Verrall二次多項式倒數Littlewood-Verrall冪Crow有限故障數模型種類型泊松分布二項式分布其他指數分布Mussa2023/1/6285.5.2軟件可靠性模型參數與軟件可靠性模型相關的參數有:ETF:軟件中固有缺陷數,是固定的ETV:同上,是變化的,在開發、維護過程中隨時添加EC(t):某時刻已糾正的缺陷數ED(t):某時刻已發現的缺陷數P:在修正缺陷過程中測試的循環次數,常假定

P=ED(t)=EC(t)EC(p):直到第p次測試才修正的缺陷數λ0:起始故障率λp:當前故障率θ:故障率的變化τ:累計執行時間α:增長率N:測試用例運行總數S:成功的測試用例運行總數2023/1/6www.china-onlineclass.2023/1/6296.5.3軟件可靠性模型Musa模型基本模型假設:①每個缺陷對故障率的貢獻是相同的;②每修正一個缺陷故障率均勻地減少,即故障率對時間的導數是常數;③軟件固有的故障總數是有限的,但不固定,即修正缺陷時可能產生新缺陷Musa模型:2023/1/6www.china-onlineclass.2023/1/630

利用基本模型可估計要達到某可靠性目標還必須要發現(檢測出)的缺陷數和需要的時間,有助于計劃人力和時間

設要達到的可靠性目標為λf,則需發現的故障數Nf為: 為達到這一目標所需時間Tf為:當前已檢測出的累積缺陷數為達到故障率目標或MTTF目標必須要檢出的累計缺陷數為達到目標還需檢測出的缺陷數為達到目標需要的時間測試時間已檢出的累計缺陷數2023/1/6www.china-onlineclass.2023/1/631對數模型假設:①每個缺陷對故障率的貢獻不同;②常用的功能的缺陷可及早被檢出,故障率的變化隨時間減少;③軟件固有的故障總數是無限的Musa模型:Nf和Tf為:2023/1/6www.china-onlineclass.2023/1/632Goel-Okumoto模型假設:缺陷對時間的分布是非時對齊的,即發現的缺陷不一定會立即消除(適用于開發早期)基本模型:其中,ab為常數,與單位時間內發生的缺陷有關可得:修正模型:故障密度函數為Weibull分布2023/1/6www.china-onlineclass.2023/1/6335.5.4軟件可靠性模型的適用條件模型假設適用階段難易度Mussa基本模型①優先固有缺陷數②常數故障率③指數分布集成測試后EMussa對數模型①無限固有缺陷數②對數分布③故障率隨時間變化單元測試到系統測試EGoel-Ukumoto①非時齊缺陷分布②缺陷可能因修復而產生③指數、Weibull分布集成測試后M2023/1/6www.china-onlineclass.2023/1/634§5.6軟件可靠性測試5.6.1軟件測試的類型與軟件可靠性相關的測試主要是動態測試單元測試:對匯編單元進行測試集成測試:對匯編單元接口的測試驗收測試:驗收并確認實現了所有需求回歸測試:對與修正的缺陷的軟件部件的再測試2023/1/6www.china-onlineclass.2023/1/6355.6.2軟件可靠性測試方法利用在其他測試中的數據收集來檢驗軟件可靠性的測試基本步驟是:仔細研究開發過程和軟件問題報告確定使用那些或那個模型來度量軟件可靠性執行一種有效的方法來收集問題報告缺陷數據、過程數據和產品數據,收集集成測試期間及以后的數據按照模型規定的原理和方法,將數據輸入選定的模型,直接估計軟件可靠性或間接地估計與其有關的參數根據估計結果進行決策:軟件能否被釋放(發布)?是否需要增加測試時間以達到可靠性目標?如果需要,還需要多少時間?2023/1/6www.china-onlineclass.2023/1/636Beta測試 可以直接反映可靠性水平系統軟件證明測試 在要求時間內、在實際的使用環境中運行系統,不對系統進行維護,收集發現的故障數,以決定整個系統能否通過可靠性測試基于測試時間的軟件證明測試 在相對較長時間內對軟件的運行進行軟件證明測試基于測試輸入的軟件證明測試 只針對特定的測試用力進行軟件證明測試2023/1/6www.china-onlineclass.2023/1/637軟件證明測試方法測試前,先由測試者和用戶共同確定以下三個參數:用戶風險因子α:是由用戶承擔的軟件可靠性未達目標而通過測試的風險生產者風險因子β:是由開發者承擔的可靠性已達目標而未被接受的風險鑒別因子γ:是最大可接受的失效密度和失效密度目標的比值2023/1/6www.china-onlineclass.2023/1/638確定可靠性測試判定標準根據已確定的三個參數繪制軟件可靠性證明測試判定圖確定拒絕線和接受線規格化是指將測試時間或測試用例數乘以故障率目標值規格化的測試時間或測試輸入在測試期間發現的累計缺陷數測試通過測試未完測試失敗接受線拒絕線2023/1/6www.china-onlineclass.2023/1/639測試開始后,失效發生時,將對應的累計故障數和測試時間或測試用例數在圖中標出判定測試結果:通過或失敗都表示測試結束,若測試未完成,則繼續測試注:基于測試用例的證明測試具有隨機性,不同測試可能得到不同結果,為此可采用模塊化方法選擇測試用例,以保證測試的客觀性2023/1/6www.china-onlineclass.2023/1/6405.6.3軟件可靠性測試的實施過程1、概述軟件可靠性測試有兩類:開發測試:包括性能測試、加載測試、回歸測試,目的是發現和修正單元及其集成的缺陷確認測試:一般只進行加載測試,目的是為了確定軟件部件或系統是否被接受 對于軟件可靠性建模,開發測試收集的是分組數據,是不完整的,而確認測試獲得的是完全數據2023/1/6www.china-onlineclass.2023/1/641軟件可靠性測試過程模型 開發業務剖面是軟件可靠性測試的重要環節,因為可靠性目標與業務剖面關系密切軟件可靠性目標開發系統業務剖面準備測試軟件可靠性定量評估軟件可靠性模型執行測試收集、整理故障數據對比需求與構造設計和實現集成測試和確認測試接受或拒絕2023/1/6www.china-onlineclass.2023/1/6423、測試的目的

通過在規定的業務剖面下運行軟件系統,確認是否能夠完成于業務剖面相關的任務:正確地完成規定的功能滿足性能要求不完成沒有規定的功能提供運行中的故障數據4、用戶責任用戶要參與軟件測試:規定測試要求,如測試條件和環境評審和批準測試程序評審和批準每一需求的認證方法和技術提供測試環境和人員要球組織獨立的測試組織2023/1/6www.china-onlineclass.2023/1/6435、測試的準備和執行

測試準備:準備測試用例、測試程序并決定要使用的自動化測試工具 測試用例設計須考慮可靠性定量要求和成本及效率,測試用例的數量和類型選擇要與業務剖面及發生概率一致,且考慮到隨機性 測試程序與特定的業務剖面相關,要考慮發生概率

測試執行:從性能測試開始進行加載測試,要考慮業務剖面和運行模式已分配執行時間和測試用例

測試執行過程需進行故障識別,記錄故障發生時間和嚴重性

對于發現的故障,需要填寫故障報告:引發故障的缺陷什么時候、在那里出現?原因是什么?如何定位?什么時候該定位被確認?要進行的修改有哪些?2023/1/6www.china-onlineclass.2023/1/6446、測試結果的應用

用戶根據測試結果評估可靠性并進行決策 開發者由此產生軟件更新需求,或者改進過程和設計7、需要注意的問題測試人員獨立于開發者的程度將影響測試結果測試時間計劃不周會導致在開發過程后期發現缺陷的風險增加測試等級及相應的測試時間分配選擇不得將不能保證在不犧牲質量的前提下降低成本測試工具的選擇將影響測試效率和完整性2023/1/6www.china-onlineclass.2023/1/645§5.7軟件故障數據的趨向性分析5.7.1趨向性分析的含義及作用

軟件可靠性建模的基礎是測試數據,但由于不同的可靠性模型基于的假設不同,導致可靠性分析方法的離散性,原因主要是:軟件的自然特征及相應的失效數據是離散的所采用的開發方法和確認方法不同數據收集的組織有差別分析的目的、要求各種各樣

軟件可靠性模型的有限假設和故障數據的離散性是矛盾的,K.Kanoun于1997年提出的趨向性分析方法用于揭示軟件可靠性隨時間的演化趨勢,實踐證明具有很高的實用性2023/1/6www.china-onlineclass.2023/1/6465.7.2軟件故障數據工程模型軟件故障數據數據收集數據過濾數據分割壽命期分類數據按部件分類數據故障嚴重性分類數據描述性統計可靠性評估可靠性度量描述性分析趨向性分析模型應用2023/1/6www.china-onlineclass.2023/1/647數據收集收集的故障數據包括:表征產品本身、開發過程及使用環境的數據,如軟件規模、語言、功能、確認和驗證方法、使用工具、加載等與故障及其修正相關的數據,如故障發生時間、故障特征、故障影響結果、缺陷類型、缺陷位置等數據過濾對收集的數據進行分析和過濾,需濾出的數據有:與軟件無關的外在數據錯誤的或虛假的問題報告重復數據2023/1/6www.china-onlineclass.2023/1/648數據分割根據需求將收集到的數據進行分割,可使分析更具體分割方法包括:根據故障的嚴重性等級分割根據生命期階段分割根據缺陷所在的軟件部件分割數據工程分析根據工程應用不同,對分割的數據進行不同的分析:描述性分析:基于統計原理,用圖、表進行綜合,以識別最有用的現象,如故障的發生條件與嚴重性的關系等,與可靠性評估沒有直接關系,有利于設計和開發趨向性分析:分析可靠性隨時間的變化趨勢,有助于評估可靠性模型的有效性模型應用:選擇趨向性模型,涉及可靠性度量問題2023/1/6www.china-onlineclass.2023/1/6495.7.3趨向性分析經驗表明,根據故障時間間隔或某時間間隔內的累積故障數,或故障密度,可以了解軟件系統是否會變得越來越可靠,或反之。但有時,這種預測是錯誤的,因為定量度量并不總是可信的用形式化統計檢驗方法提高趨向性分析的可信度似乎更有效該方法的基礎是計算Laplace因子2023/1/6www.china-onlineclass.2023/1/650若T為觀測時間,對于[0,T]內的故障時間數據,Laplace因子為:其中,θj實在第j-1個故障后,從系統重啟到發生第j個故障的時間,N(T)是在[0,T]內的故障數對于分組數據,這里n(i)是在第i個時間單位內的故障數,即第i個分組;k為觀測的時間單位數,即分組數據的組數2023/1/6www.china-onlineclass.2023/1/651Laplace因子的值有以下含義:負值表示故障密度減少,可靠性增加正值表示故障密度增加,可靠性降低若作-2~2間震蕩,表示可靠性處于穩定狀態全局趨向性局部趨向性可靠性降低可靠性降低可靠性增加可靠性降低可靠性增加2023/1/6www.china-onlineclass.2023/1/6525.7.4趨向性分析結果的應用軟件開發階段的趨向性分析可預測軟件可靠性的可能趨向及持續時間,以便開發者、測試人員采取有針對性的措施加以控制對于軟件可靠性的定量評估,趨向性分析有助于選擇適用的可靠性模型,采取以下策略:在可靠性增長時,多數模型都可用可靠性趨向穩定時,可選擇常數故障率模型若可靠性降低,接著又增長,建議選擇S模型(Yamada、Ohba模型)若可靠性持續降低,應等待,因為存在需要處理的問題2023/1/6www.china-onlineclass.2023/1/653小結軟件質量度量,特別是可靠性度量,是一個軟件企業走向成熟、規模化、正規化的必由之路,盡管實施起來有難度,甚至很困難,但必須去做。軟件質量度量是改善開發過程,提高企業的CMM等級,改善產品質量的關鍵2023/1/6www.china-onlineclass.2023/1/654本章結束……2023/1/6www.china-onlineclass.2023/1/655§5.1引言5.1.1軟件可靠性工程及軟件可靠性軟件可靠性工程 應用統計技術,處理在軟件開發過程中或(和)運行期間所采集的失效數據,以便詳細說明并預計、估計和評價軟件的可靠性 研究內容包括軟件可靠性的基本概念和定義、軟件可靠性指標體系、可靠性建模、可靠性設計技術、測試技術和管理技術等2023/1/6www.china-onlineclass.2023/1/656軟件可靠性工程處理以下問題:確定某過程能否提供滿足可靠性要求的代碼為過程改進提供度量預測軟件維護階段的失效率,確定軟件維護工作量幫助進行安全性認證確定交付軟件產品的時間或停止測試的時機估計下次故障的可能時間為軟件更新或升級,標識需要重新設計的主要部件測定軟件的可靠性2023/1/6www.china-onlineclass.2023/1/657軟件可靠性可靠性是軟件的13個質量因素中最關鍵、最重要的軟件可靠性是指在規定時間和條件下軟件無故障運行的概率,是系統功能或軟件產品中存在的缺陷的函數軟件故障產生的原因是軟件缺陷,但缺陷并不一定導致故障的產生,高缺陷率的軟件的可靠性不一定就差軟件失效意味著軟件運行中斷或者無法完成所規定的任務2023/1/6www.china-onlineclass.2023/1/658幾個值得關注的問題:軟件的運行環境:軟件可靠性與運行環境密切相關軟件運行的時間間隔:商業軟件需要較高的運行時間間隔(較長的運行壽命),而任務關鍵軟件則需要在短時間內高效運行軟件失效的時機是隨機的,與硬件失效類似不同于軟件的正確性,對于持續運行的軟件其可靠性最終將歸于零(以失效結束);但正確性是軟件的特定的某次運行結果,要么為1,要么為02023/1/6www.china-onlineclass.2023/1/6595.1.2軟件的缺陷、故障和失效缺陷(Error,錯誤):設計和構造進產品

總數是不可預知的,只能估計

缺陷分為已知和未知(新發現)的

缺陷分為已發現的和未發現的

已發現的缺陷包括已糾正的和未糾正的故障(Fault):運行結果錯誤

故障是缺陷的表現形式,是由存在的缺陷產生的

但缺陷并不一定導致故障,或者條件不具備,或者不會產生故障失效(Failure):系統不能完成所需要的功能而失敗

失效是故障在軟件運行時所產生的后果失效缺陷故障已糾正的缺陷2023/1/6www.china-onlineclass.2023/1/660軟件質量度量與軟件過程有什么關系?2023/1/6www.china-onlineclass.2023/1/661失效故障面向用戶面向開發者軟件運行偏離用戶需求程序執行輸出錯誤結果可根據對用戶應用的嚴重性等級分類可根據定位和排除故障的難度分類如,3次失效/1000CPU小時如,6個故障/1KLOC失效與故障的區別2023/1/6www.china-onlineclass.2023/1/6625.1.3軟件失效軟件失效是隨機發生的描述失效的方法有三個:累計失效函數:即與某時間點相關的平均累計失效數失效率函數:用累計失效函數的變化率表示平均失效時間MTTF函數:對于一個時間段,表示若干相鄰失效時間間隔的平均值;對某個時間點,表示到下次失效的期望時間2023/1/6www.china-onlineclass.2023/1/663軟件失效率如果沒有缺陷,軟件失效率為0如果發現的缺陷能被及時、完全修復,失效率會趨向0實際上,發現的缺陷數會遞增,而糾正一個缺陷會引入更多的缺陷,因而失效率會增加時間失效率硬件軟件(實際)軟件(理想)2023/1/6www.china-onlineclass.2023/1/664§5.2軟件可靠性度量和建模5.2.1基本概念 軟件可靠性建模過程是根據軟件過去的故障行為建立軟件可靠性數學模型的過程

建模的目的是為了預計軟件將來的故障行為

建模過程包括以下步驟:通過度量獲得歷史數據對故障數據進行分析,擬合成概率分布函數對擬合函數進行參數分析確定所期望的可靠性度量值并預測可能的故障行為2023/1/6www.china-onlineclass.2023/1/6655.2.2軟件可靠性度量參數軟件可靠性R(t)可定義為:在給定條件下,在時間[0,t]內,軟件無故障運行的概率若用T表示軟件無故障運行的時間間隔,F(t)為T的累積分布函數,則軟件可靠性可表示為:R(t)=1-F(t) t≥0故障率函數λ(t)為:其中,f(t)為F(t)的函數密度,即:2023/1/6www.china-onlineclass.2023/1/666λ(t)Δt是在時間[0,t]內軟件正常運行,在[t,t+Δt]內發生故障的條件概率,可得:密度函數f(t)、累積分布函數F(t)、可靠性函數R(t)和故障率函數λ(t)緊密相關,一般可由任一個惟一地確定另外三個,例如若λ(t)給定,則:根據f(t)或R(t)可計算平均失效時間函數MTTF,從而預測故障時間2023/1/6www.china-onlineclass.2023/1/6675.2.3軟件可靠性度量模型指數分布密度函數為分布函數為故障率函數為 (常數)具有指數壽命分布的軟件產品(故障率為常數)沒有老化現象,符合不需要維護的軟件的運行情況2023/1/6www.china-onlineclass.2023/1/668Weibull分布Weibull是更常用的分布,在許多工程領域的可靠性分析中都廣泛應用,如軸承磨損、河流泛濫等Weibull分布有兩個參數α、β(β為1時變為指數函數)函數密度為:分布函數為:故障率函數為:2023/1/6www.china-onlineclass.2023/1/669β>1β<1β=1tWeibull分布β=1時變為指數分布β=2時為Rayleigh分布研究表明,軟件項目的生命周期模式、項目的缺陷移除模式等都很好地符合Rayleigh模型2023/1/6www.china-onlineclass.2023/1/670數據收集和分析是度量軟件可靠性的最重要的先決條件,任何可靠性度量的有效性都與數據收集的有效性直接相關,數據收集過程必須有計劃、有組織地進行與軟件可靠性相關的數據包括:缺陷數據過程數據產品數據:如規模、功能、性能等§5.3軟件可靠性數據收集過程2023/1/6www.china-onlineclass.2023/1/6715.3.1缺陷數據的收集缺陷數據的收集常采用問答、報告形式,即發放問題報告表格要求有關人員填寫,收集并分析問題報告表格形成統計數據檢測到的缺陷已記錄的缺陷已評審的缺陷確認?結束缺陷報告采取措施?通過驗證?記錄不采取措施的原因記錄糾正驗證問題報告NoNoNoYesYesYes2023/1/6www.china-onlineclass.2023/1/6725.3.2過程數據的收集缺陷數據必須與過程融合才有價值,因而過程數據也需要收集。通常會將項目的持續時間作為主要關心的過程數據,但實際需要更細分與軟件可靠性測試過程相關的數據包括:CPU時間:具有與人無關性,但易忽略人的工作(如評審等)日歷時間:優點是易于收集,但沒有考慮階段特征,如某些技術在某階段更有效運行時間:是為測試而運行軟件的總時間,也未考慮階段特征其他數據:包括平均修復時間、完成每個過程活動的人數、軟件生命期各階段所用時間百分比、各階段所消耗的資源數量、各階段的開始、截止日期、各階段修復一個缺陷所需的工作量、各功能模塊的缺陷數,等等2023/1/6www.china-onlineclass.2023/1/673§5.4軟件的運行剖面軟件可靠性建模需要具備三個條件:軟件運行時間基準(日歷時間、運行時間、CPU時間)軟件運行過程收集的數據,是建模基礎軟件功能和運行環境 軟件運行剖面用于定量描述軟件的用戶運行環境,即軟件的功能和各功能的使用概率2023/1/6www.china-onlineclass.2023/1/6745.4.1軟件新系統的運行剖面不同的運行模式下各功能的使用概率不同不同運行模式的出現模式也不同運行模式1運行模式2功能功能使用概率2023/1/6www.china-onlineclass.2023/1/675運行剖面對軟件可靠性工程極具價值:可為開發過程的資源分配提供參考,有利于提高生產率、可靠性和加快開發速度有利于測試,可確保常用功能獲得更多測試有利于設計測試用例,以發現影響可靠性最大的故障根據功能的使用頻度可確定開發的優先級使功能描述更清晰,便于交流有助于用戶培訓2023/1/6www.china-onlineclass.2023/1/6765.4.2軟件運行剖面與可靠性的關系 軟件可靠性度量、評估和預測與軟件的某個特定的運行剖面密切相關 軟件測試期間,為節省時間和成本,通常每個運行剖面只測試一次,因而不能反映每個剖面的出現概率,由此獲得的可靠性數據也不能反映實際情況

要將測試期間獲得的可靠性值變換為實際值,可用以下公式:

其中,λu是實際的用戶環境下的故障密度,λT是測試值,C為測試壓縮系數2023/1/6www.china-onlineclass.2023/1/677C的含義是:在覆蓋全部輸入空間條件下,使用期間所要求的執行時間與測試階段所要求的執行時間之比C的計算公式為:其中, τk為輸入狀態k運行時的執行時間

Pk為輸入狀態k在運行期間的發生概率

QI為輸入狀態總數

Pmin為最少發生的輸入狀態的概率2023/1/6www.china-onlineclass.2023/1/678

5.4.3軟件運行剖面的建立運行剖面是關于系統如何運行的定量描述,建立步驟為:建立客戶剖面:分類描述要獲取該系統的客戶的使用模式建立用戶剖面:分類描述要使用該系統的用戶的使用模式定義系統模式剖面:根據執行過程描述系統運行模式確定功能剖面:劃分功能并確定各功能的發生概率確定運行剖面:確定系統各運行模式的發生概率2023/1/6www.china-onlineclass.2023/1/679§5.5軟件可靠性模型及應用

軟件可靠性建模是軟件可靠性工程的研究重點5.5.1與軟件可靠性模型有關的問題歷史背景 20世紀70年代,Telinski、Moranda、Shooman等人提出了軟件可靠性建模的問題,并使用建立的模型估計軟件現在和未來的可靠性

經近40年的發展,軟件可靠性模型已有很多種2023/1/6www.china-onlineclass.2023/1/680軟件可靠性模型的分類 Musa、Okumoto根據模型的5個特征進行分類:時間域(timedomain):日歷時間、執行時間或CPU時間類別(Category):軟件在無限的時間內可能經歷的故障數是有限的還是無限的型(Type):軟件在運行時間t時的失效數分布分類種類(Class):故障密度對時間的函數分布(僅對有限故障類)族(Family):故障密度對它的期望故障數的函數分布(僅對無限故障類)2023/1/6www.china-onlineclass.有限故障數模型種類型泊松分布二項式分布其他指數分布Mussa(1975)MorandaSchneidewindGoel-OkumotoJelinski-MorandaShoomanGoel-OkumotoMussaKeiller-LittlewoodWeibull分布Schick-wolvertonWagonerC1分布Schick-wolverton帕雷多分布LittlewoodGamma分布Y-O-O無限故障數模型族型T1T2T3泊松分布幾何分布MorandaMussa-Okumoto線性倒數Littlewood-Verrall二次多項式倒數Littlewood-Verrall冪Crow有限故障數模型種類型泊松分布二項式分布其他指數分布Mussa2023/1/6825.5.2軟件可靠性模型參數與軟件可靠性模型相關的參數有:ETF:軟件中固有缺陷數,是固定的ETV:同上,是變化的,在開發、維護過程中隨時添加EC(t):某時刻已糾正的缺陷數ED(t):某時刻已發現的缺陷數P:在修正缺陷過程中測試的循環次數,常假定

P=ED(t)=EC(t)EC(p):直到第p次測試才修正的缺陷數λ0:起始故障率λp:當前故障率θ:故障率的變化τ:累計執行時間α:增長率N:測試用例運行總數S:成功的測試用例運行總數2023/1/6www.china-onlineclass.2023/1/6836.5.3軟件可靠性模型Musa模型基本模型假設:①每個缺陷對故障率的貢獻是相同的;②每修正一個缺陷故障率均勻地減少,即故障率對時間的導數是常數;③軟件固有的故障總數是有限的,但不固定,即修正缺陷時可能產生新缺陷Musa模型:2023/1/6www.china-onlineclass.2023/1/684

利用基本模型可估計要達到某可靠性目標還必須要發現(檢測出)的缺陷數和需要的時間,有助于計劃人力和時間

設要達到的可靠性目標為λf,則需發現的故障數Nf為: 為達到這一目標所需時間Tf為:當前已檢測出的累積缺陷數為達到故障率目標或MTTF目標必須要檢出的累計缺陷數為達到目標還需檢測出的缺陷數為達到目標需要的時間測試時間已檢出的累計缺陷數2023/1/6www.china-onlineclass.2023/1/685對數模型假設:①每個缺陷對故障率的貢獻不同;②常用的功能的缺陷可及早被檢出,故障率的變化隨時間減少;③軟件固有的故障總數是無限的Musa模型:Nf和Tf為:2023/1/6www.china-onlineclass.2023/1/686Goel-Okumoto模型假設:缺陷對時間的分布是非時對齊的,即發現的缺陷不一定會立即消除(適用于開發早期)基本模型:其中,ab為常數,與單位時間內發生的缺陷有關可得:修正模型:故障密度函數為Weibull分布2023/1/6www.china-onlineclass.2023/1/6875.5.4軟件可靠性模型的適用條件模型假設適用階段難易度Mussa基本模型①優先固有缺陷數②常數故障率③指數分布集成測試后EMussa對數模型①無限固有缺陷數②對數分布③故障率隨時間變化單元測試到系統測試EGoel-Ukumoto①非時齊缺陷分布②缺陷可能因修復而產生③指數、Weibull分布集成測試后M2023/1/6www.china-onlineclass.2023/1/688§5.6軟件可靠性測試5.6.1軟件測試的類型與軟件可靠性相關的測試主要是動態測試單元測試:對匯編單元進行測試集成測試:對匯編單元接口的測試驗收測試:驗收并確認實現了所有需求回歸測試:對與修正的缺陷的軟件部件的再測試2023/1/6www.china-onlineclass.2023/1/6895.6.2軟件可靠性測試方法利用在其他測試中的數據收集來檢驗軟件可靠性的測試基本步驟是:仔細研究開發過程和軟件問題報告確定使用那些或那個模型來度量軟件可靠性執行一種有效的方法來收集問題報告缺陷數據、過程數據和產品數據,收集集成測試期間及以后的數據按照模型規定的原理和方法,將數據輸入選定的模型,直接估計軟件可靠性或間接地估計與其有關的參數根據估計結果進行決策:軟件能否被釋放(發布)?是否需要增加測試時間以達到可靠性目標?如果需要,還需要多少時間?2023/1/6www.china-onlineclass.2023/1/690Beta測試 可以直接反映可靠性水平系統軟件證明測試 在要求時間內、在實際的使用環境中運行系統,不對系統進行維護,收集發現的故障數,以決定整個系統能否通過可靠性測試基于測試時間的軟件證明測試 在相對較長時間內對軟件的運行進行軟件證明測試基于測試輸入的軟件證明測試 只針對特定的測試用力進行軟件證明測試2023/1/6www.china-onlineclass.2023/1/691軟件證明測試方法測試前,先由測試者和用戶共同確定以下三個參數:用戶風險因子α:是由用戶承擔的軟件可靠性未達目標而通過測試的風險生產者風險因子β:是由開發者承擔的可靠性已達目標而未被接受的風險鑒別因子γ:是最大可接受的失效密度和失效密度目標的比值2023/1/6www.china-onlineclass.2023/1/692確定可靠性測試判定標準根據已確定的三個參數繪制軟件可靠性證明測試判定圖確定拒絕線和接受線規格化是指將測試時間或測試用例數乘以故障率目標值規格化的測試時間或測試輸入在測試期間發現的累計缺陷數測試通過測試未完測試失敗接受線拒絕線2023/1/6www.china-onlineclass.2023/1/693測試開始后,失效發生時,將對應的累計故障數和測試時間或測試用例數在圖中標出判定測試結果:通過或失敗都表示測試結束,若測試未完成,則繼續測試注:基于測試用例的證明測試具有隨機性,不同測試可能得到不同結果,為此可采用模塊化方法選擇測試用例,以保證測試的客觀性2023/1/6www.china-onlineclass.2023/1/6945.6.3軟件可靠性測試的實施過程1、概述軟件可靠性測試有兩類:開發測試:包括性能測試、加載測試、回歸測試,目的是發現和修正單元及其集成的缺陷確認測試:一般只進行加載測試,目的是為了確定軟件部件或系統是否被接受 對于軟件可靠性建模,開發測試收集的是分組數據,是不完整的,而確認測試獲得的是完全數據2023/1/6www.china-onlineclass.2023/1/695軟件可靠性測試過程模型 開發業務剖面是軟件可靠性測試的重要環節,因為可靠性目標與業務剖面關系密切軟件可靠性目標開發系統業務剖面準備測試軟件可靠性定量評估軟件可靠性模型執行測試收集、整理故障數據對比需求與構造設計和實現集成測試和確認測試接受或拒絕2023/1/6www.china-onlineclass.2023/1/6963、測試的目的

通過在規定的業務剖面下運行軟件系統,確認是否能夠完成于業務剖面相關的任務:正確地完成規定的功能滿足性能要求不完成沒有規定的功能提供運行中的故障數據4、用戶責任用戶要參與軟件測試:規定測試要求,如測試條件和環境評審和批準測試程序評審和批準每一需求的認證方法和技術提供測試環境和人員要球組織獨立的測試組織2023/1/6www.china-onlineclass.2023/1/6975、測試的準備和執行

測試準備:準備測試用例、測試程序并決定要使用的自動化測試工具 測試用例設計須考慮可靠性定量要求和成本及效率,測試用例的數量和類型選擇要與業務剖面及發生概率一致,且考慮到隨機性 測試程序與特定的業務剖面相關,要考慮發生概率

測試執行:從性能測試開始進行加載測試,要考慮業務剖面和運行模式已分配執行時間和測試用例

測試執行過程需進行故障識別,記錄故障發生時間和嚴重性

對于發現的故障,需要填寫故障報告:引發故障的缺陷什么時候、在那里出現?原因是什么?如何定位?什么時候該定位被確認?要進行的修改有哪些?2023/1/6www.ch

溫馨提示

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

評論

0/150

提交評論