軟件可靠性課程複習要點

以下整理來自於Leo,因爲Leo不玩博客,且網上關於軟件可靠性這方面的資料微乎其微
所以本人厚顏無恥地拿過來標註原創發出,且希望Leo不會看到這篇博文,(逃)
因爲文章整理按點展開,故瑣碎難看。各位看客直接Ctrl+F搜索關鍵字。

軟件可靠性概念(定義)

–在規定條件下,在規定的時間內,軟件不引起系統失效的概率,該概率是系統輸入和系統使用的函數,也是軟件中存在的錯誤的函數;系統輸入將確定是否會遇到已存在的錯誤(如果錯誤存在的話);

–在規定的時間週期內,在所述條件下程序執行所要求的功能的能力。

軟件可靠性因素相關概念

可靠度

–軟件可靠度是指軟件在規定的條件下、規定的時間段內完成預定的功能的概率。或者說是軟件在規定時間內無失效發生的概率。
Rξ(t)=Pr{ξ>t}=1Fξ(t) R_\xi(t)=P_r\{\xi>t\}=1-F_\xi(t)

ξFR(t)t\xi爲隨機變量,F是其分佈函數,R(t)表示t時刻的可靠度

失效率

–失效率是指軟件在 T 時刻沒有發生失效的條件下,在 區間T+t內,當t很小時,單位時間內發生失效的概率。

在指數分佈下可靠度 R(t)=eλt1λtR(t)=e^{-\lambda t} 近似於 1-\lambda t

不可靠度F(t)=1R(t)=1eλtF(t)=1-R(t)=1-e^{-\lambda t}

平均失效間隔時間MTBF

MTBF:指兩次相鄰失效時間間隔的均值

MTTF(平均失效前時間):可以理解爲設備在規定的環境下,正常生產到發生下一次故障的平均時間。公式如下:

MTTF=0R(t)dt=1λMTTF=\int_0^{\infty}R(t)dt=\frac{1}{\lambda}(有些情況下)

軟件可靠性模型相關概念

軟件可靠性評估模型是隨機過程的一種表示形式,將軟件可靠性或直接相關的量表示成時間與軟件產品的特性或開發過程的函數。將失效過程的一般形式定義爲各因素,描述軟件失效與軟件缺陷之間關係的數學方程

假設條件原因

模型是實際情況的理想或簡單化,總是包含若干假設

標準假設

軟件運行方式和進行軟件可靠性預計時的軟件運行方式相同——確保預計結果的有效性

當檢測到缺陷時,各個失誤是獨立的——簡化推導

假設的四個公共條件

1.程序中的各個錯誤是相互獨立的(即標準假設2)

2.測試過程中檢測到的錯誤,都被排除,每次排錯只排除一個,且過程中不會引入新的錯誤

3.程序的失效率在每個失效間隔時間內是常數,錯誤以相等的可能發生

4.軟件的運行方式與預期的方式相似(即標準假設1)

評估模型的基本原理

對軟件可靠性測試或實際使用中收集的失效數據,利用統計知識分析其規律,建立一個參數模型,在數據的基礎上對該統計分佈的參數進行估計,從而在此模型基礎上對軟件可靠性進行定量估計或評價

定義

是將軟件失效過程的一般形式規定爲各因素,例如缺陷引入缺陷移除運行環境等的函數或數學表達式,是描述軟件失效與軟件缺陷之間關係的數學方程

模型類型

指數分佈的NHPP模型:JM模型、GO模型

非指數分佈的NHPP模型:MO模型

可靠性建模過程中的指標因素 失效數據 用到哪些數據 數據類型

指標因素

1、錯誤或者缺陷的排除過程和引入過程
2、運行環境

排錯引入過程

在JM、GO模型假設中,檢測到的錯誤都會被立刻排除,排錯時間可以忽略不計,每次排錯只排除一個錯誤,在排錯過程中不會引進新的錯誤

運行環境

測試環境要與實際運行環境相一致

失效數據

失效時間數據(完全失效數據):每一次失效發生的時間構成的失效數據

失效計數數據(不完全失效數據):由各時間段內發生的失效次數構成的失效數據

故障樹 故障樹的定義 故障樹的規範化過程中如何簡化

概念

故障樹分析法是在系統設計的過程中,通過對可能造成系統失敗的各種因素(包括硬件、軟件、環境、人爲因素)進行分析,畫出邏輯框圖(即故障樹),從而確定系統失敗原因的各種可能組合方式或其發生概率,以計算系統失效概率,採取相應措施,以提高系統可靠性的一種設計分析方法。

故障樹分析方法在系統可靠性分析,安全性分析和風險評價中有重要作用和地位。既可用於定性分析又可用於定量分析。

對於所研究系統的各類故障或不正常工作情況統稱爲故障事件,與之對立的是成功事件。

故障樹是一種爲研究系統某功能故障而建立的一種倒樹狀的邏輯因果關係圖。

故障樹主要由事件和邏輯門構成,事件用來描述系統或元部件的故障狀態,邏輯門把事件聯繫起來,表示事件間的邏輯因果關係

特點

自上而下作層層追蹤分析

事件間的邏輯關係一目瞭然

在系統設計階段有助於判明系統的隱患和潛在故障

故障樹可作爲管理維修人員的管理維修指南

規範化

僅含有基本事件、中間事件、頂事件以及與或非三種邏輯門的故障樹

簡化

用相同轉移符號表示相同子樹、相似轉移符號表示相似子樹

用布爾代數法化簡,去掉明顯的邏輯多餘事件和邏輯多餘門

可靠度概念公式

軟件可靠度是指軟件在規定的條件下、規定的時間段內完成預定的功能的概率。或者說是軟件在規定時間內無失效發生的概率。ξFR(t)t\xi爲隨機變量,F是其分佈函數,R(t)表示t時刻的可靠度
Rξ(t)=Pr{ξ>t}=1Fξ(t)Rξ(t)=Pr{ξ>t}=1Fξ(t) R_\xi(t)=P_r\{\xi>t\}=1-F_\xi(t)R_\xi(t)=P_r\{\xi>t\}=1-F_\xi(t)

可靠度與不可靠度之間的函數關係

R(t)+F(t)=1R(t)+F(t)=1

根據指數分佈推斷計算系統的壽命

指數分佈是事件的時間間隔的概率

指數分佈:f=eλtf=e^{-\lambda t}

概率相關:P(X>t)=eλtP(X>t)=e^{-\lambda t}

割集的性質(重要度影響關係)

階數越小的最小割集越重要

在低階最小割集中出現的底事件比高階中的更重要

在相同階次下,在不同割集中重複出現次數越多的底事件越重要

故障樹相關過程

(1)選擇頂事件

(2)建立故障樹:規範化、事件邏輯門符號

(3)故障樹的定性分析:簡化(布爾表達式化簡)和求最小割集

(4)故障樹的定量分析:求頂事件發生的概率、重要度分析

(5)確定設計上的薄弱環節(找出問題所在)

(6)採取措施,提高產品的可靠性和安全性

幾何分佈性質

幾何分佈具有離散性,無記憶性(簡單來說就是後面事件發生的概率與前面事件是否發生無關)

U、Y、PLR 背景原理構造方法

序列似然比PLR

用來對兩個模型預計質量的相對優劣進行評定的一個指標。

PLR的總體思路是認爲軟件發生在軟件失效時間的分佈函數密度大的地方的可能性較大。預計軟件失效時間的分佈函數密度大的預計相比較而言更接近真實。

f爲模型的預計概率密度,若 PLR爲正無窮,則說明A優於B,爲0則說明B優於A,爲常數則說明兩者差不多。
PLR=fa(j)fb(j) PLR=\prod{\frac{f_a(j)}{f_b(j)}}

U圖

U圖是用來檢測預計和觀察的失效行爲之間系統而客觀的差別。

U圖的目的是用來判斷預測預計分佈函數是否均勻的接近於實際分佈函數。

ui= Fi( t) ,將n+ 1個 ui的值按升序分類, 用uj表示分類以後的序列( j = 0, 1, 2, …, n) , 把點( uj , j / ( n+ 1) ) 描在圖上。

Y圖

U圖能夠檢測出預計與顯示的偏差。但ks距離很小的U圖有時也會掩蓋了偏差,Y圖是通過對序列U進行變換後繪製的。Y圖對U作如下變換

xj=ln(1uj)yj=l=ijxi/l=ii+ntix_j=-ln(1-u_j),y_j=\sum_{l=i}^jx_i/\sum_{l=i}^{i+n}t_i

作圖方法與U圖作圖法一樣, 將 點( yj , j / ( n+ 1) ) 描在圖上並作出 45°線。 這時單位斜率線上產生的偏差表示預測中的趨勢。

可靠性測試概念、特點、對比 增長測試 驗證測試

概念

對軟件可靠性進行定量的評估或驗證,爲了達到和驗證軟件的可靠性定量要求而對軟件進行的測試

主要特徵

按照用戶實際使用軟件的方法測試軟件

增長測試

發現程序中影響軟件可靠性的故障,並排除故障實現軟件可靠性增長(軟件系統測試階段的末期)

流程:構造操作剖面->生成測試數據->測試運行->測試結果分析->排錯與迴歸測試/可靠性評估->可靠性進展分析->停止測試

驗證測試

驗證在給定的統計置信度下,軟件當前的可靠性是否滿足用戶要求(軟件驗收階段)

流程:構造操作剖面->生成測試數據->測試運行->測試結果分析->接收/拒收判決->可靠性評估

可靠性測試與一般測試的對比:
比較項目 軟件可靠性增長測試 一般軟件測試
測試目的 評估軟件可靠性水平,有效實現軟件可靠性增長 發現軟件的故障
測試效率 達到可靠性要求較快 達到可靠性要求較慢
測試數據方法生成 基於使用的測試,根據軟件的使用狀況構造操作剖面然後生成測試用例 基於需求/結構的測試,根據軟件的需求或結構生成測試用例
數據收集 需要收集測試輸出結果和失效時間等數據 只需要收集輸出結果
數據分析 通過失效數據進行分析 根據用例執行情況進行需求結構覆蓋分析
測試停止準則 滿足可靠性要求 某些要求的結構覆蓋率達到100%

可靠性設計 避錯設計簡化設計 容錯設計 原則 方法

避錯設計

避錯設計是在軟件開發設計過程中,針對軟件的具體特點,充分應用有效的軟件工程技術、方法、工具,加強軟件工程管理,避免軟件錯誤的引入,從而保證和提高軟件的可靠性。

方法:

通用類設計風格: 1.程序編寫清楚,不要過分靈巧

​ 2.簡明直接地說明用意

​ 3.儘量使用庫函數

​ 4.保證特殊情況特殊處理

結構類設計風格: 1.避免不必要的分支

​ 2.使用括號避免二義性

​ 3.調用公共函數代替重複的表示

健壯性設計: 1.模塊調用時檢測參數合法性

​ 2.檢查輸入數據的數據類型

監控定時器設計:提供監控定時器或類似措施,確保處理器或計算機系統具有處理程序超時或死循環的能力;監控定時器採用獨立時鐘源和獨立的硬件實現

異常保護設計:分析軟件運行過程中各種可能的異常情況,設計相應的保護措施。異常處理措施必須使系統轉入安全狀態,並保持計算機處於運行狀態。

簡化設計

應從模塊的獨立性、扇入扇出以及單入口單出口等採取措施,同時還應綜合考慮模塊的複雜度和規模等因素。

獨立性準則:提高模塊內聚度,降低耦合度,實現獨立性

單入口單出口要求:除中斷情形外,模塊應使用單入口和單出口控制結構

扇入扇出原則:將模塊在邏輯上構成分層次結構,在不同的層次上允許不同的扇入扇出數

容錯設計

一定程度上對自身故障具有屏蔽能力,在一定程度上能從故障狀態恢復到正常狀態、軟件故障時能在一定程度上完成預期的功能以及在一定程度上具有容錯能力

基本活動:故障檢測(方法:軟件自測試)、破壞估計、故障恢復、故障隔離、繼續服務

軟件容錯技術:爲了實現軟件容錯,一般都要使用某種形式的冗餘,這種冗餘既可以是設計(算法)冗餘,也可以是數據冗餘。設計冗餘是利用相異的軟件模塊來實現軟件容錯。

分配方法

等同分配

串聯部件可靠度:Ri=R1nR_i=R^\frac{1}{n}

並聯部件可靠度:Ri=1[1R]1nR_i=1-[1-R]^\frac{1}{n}

阿林斯分配

假定軟件系統爲串聯繫統,n個部件失效率爲常數,系統的容許失效率爲λs\lambda_s,各部件的失效率爲λi\lambda_i,根據此算得加權因子ωi=λiλi\omega_i=\frac{\lambda_i}{\sum{\lambda_i}},各部件分配的容許失效率λi=ωiλs\lambda^*_i=\omega_i*\lambda_s

agree分配(主要)

Rmniiλi=nilnRnωiti 設系統的可靠度爲R,若系統由m個分系統組成,各分系有n_i個單元, 則分配給第i個系統的失效率爲 \lambda_i=-\frac{n_ilnR}{n\omega_it_i}

IRi(ti)=1lnRninωi=11Rninωi 分配給第 I 個系統的可靠度 R_i(t_i)=1-\frac{-lnR^\frac{n_i}{n}}{\omega_i}=1-\frac{1-R^\frac{n_i}{n}}{\omega_i}

故障樹相關

選擇頂事件、建立故障樹
故障樹的定性分析

a)故障樹的規範化

b)規範化後的簡化

c)求最小割集

故障樹的定量分析

a)求頂事件發生的概率(即系統的不可靠度Fs(t)F_s(t)

設每個事件發生的概率爲PiP_i最小割集的發生概率爲Ki=PiPiKiK_i=\prod{P_i},其中P_i屬於K_i,則頂事件發生的概率爲
P(T)=P(i=1nKi)=()i=1nP(Ki) P(T)=P(∪_{i=1}^nK_i)=(粗略計算或最小割集相互獨立)\sum_{i=1}^nP(K_i)
當最小割集不相互獨立且要求精確計算時,應當使用容斥原理。

b)重要度分析

1.第i個零件的概率重要度:Δgi(t)=δFs(t)δFi(t)\Delta g_i(t)=\frac{\delta F_s(t)}{\delta F_i(t)},其中Fs(t)F_s(t)爲系統不可靠度函數,Fi(t)F_i(t)爲第i個元部件的不可靠度,Δgi\Delta g_i即爲s對i求偏導的結果

2.關鍵重要度:IiCR(t)=Fi(t)Fs(t)Δgi(t)I^{CR}_i(t)=\frac{F_i(t)}{F_s(t)}*\Delta g_i(t)

3.結構重要度:Iiϕ=12n1niϕI^{\phi}_i=\frac{1}{2^{n-1}}*n^{\phi}_i

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章