可靠性增長模型


可靠性增長建模

可靠性增長模型是對系統可靠性如何在整個測試過程中隨時間推移而演變的模擬。當識別出系統故障時,會糾正導致這些故障的潛在缺陷,並且透過系統測試和除錯,系統的可靠性應該會提高。接下來,必須將概念上的可靠性增長模型轉換為數學模型,以便預測可靠性。

可靠性增長建模需要將不同時間段觀察到的可靠性與顯示可靠性潛在變化的已知函式進行比較。例如,一個等步長函式意味著系統的可靠性隨著每次釋出線性增長。透過將觀察到的可靠性增長與其中一個函式進行比較,可以預測系統在未來某個時間點的可靠性。因此,可靠性增長模型可用於幫助專案規劃。

可靠性增長模型組透過測試來衡量和預測可靠性程式的改進。增長模型將系統的可靠性或故障率描述為時間或測試用例數量的函式。此類別中的模型如下所示。

Coutinho 模型

在對數-對數圖紙上,Coutinho 繪製了已識別缺陷的累積數量和採取的糾正措施的數量與累積測試周數的關係。令 N(t) 表示故障總數,t 表示整個測試持續時間。模型的故障率 λ(t) 可以表示為:

$$\mathrm{λ_{(t)} =\frac{N(t)}{t}= β_{0}t^{-β1}}$$

其中 $β_{0}$ 和 $β_{1}$ 是模型引數。可以使用最小二乘法估計此模型的引數。

Wall 和 Ferguson 模型

時間 t 處的故障總數 m(t) 可以寫成:

$$\mathrm{m_{(t)} = a_{0}[b(t)]^{3}}$$

其中 alpha0:和 alpha1:是未知引數。可以使用測試用例數或總測試時間來計算函式 b(t)。同樣,在時間 t 處,故障率函式由下式給出:

$$\mathrm{λ_{(t)} = m^{'(t)} = a_{0}βb^{'(t)[b(t)]^{β-1}}}$$

Wall 和 Ferguson 使用各種軟體故障資料評估了他們的模型,並發現故障資料與模型高度相關。

可靠性和增長模型受到批評

可靠性增長建模領域似乎面臨著與所謂的歷史主義相同的根本問題,即哲學問題。波普爾認為,長期預測不能應用於我們所有人都在其中糾纏的社會結構。而且,“明智的做法是立即逐一解決最緊迫和最真實的社會問題”

當我第一次遇到可靠性增長模型時,我感到有必要將波普爾的證偽性、確證性和簡單性原則應用於它們。以下是根據其預測能力和促進錯誤學習的能力對可靠性增長模型進行評估。這是根據波普爾的標準和使用統計分析完成的。必須解決以下問題:非常複雜的可靠性增長模型的預測能力是什麼?這項工作是否物有所值,或者它是否具有欺騙性?可靠性增長模型能教會我們什麼?哪些方法(如果有)更適合軟體工程師的工作?

可靠性增長模型的益處

經典的可靠性假設得到了廣泛的支援:大量的時間和精力都投入到收集、分類和分析硬體元件的故障率統計資料(Shooman,1990)。在特定條件下,硬體元件的壽命週期(首次故障發生的時間)可以建模為指數分佈的隨機變數。故障時間大於 t 的機率定義為某個物品(元件或系統)的可靠性函式 R(t)。此函式由 R(t) = 提供,其中故障率 l 為常數。

現在讓我們考慮一個存在某些錯誤的程式。假設操作配置檔案恆定,則可以預期恆定的故障率 l。可靠性函式看起來類似於上面顯示的硬體故障函式。

有一個重要的區別:故障現在被視為一個不導致永久缺陷的易變事件。該缺陷從一開始就存在。

我們預計會進行一些故障排除工作。因此,會出現一個新的和意想不到的故障率。從一開始,似乎就無法實現基於以往經驗評估故障率。

該怎麼辦?我們可以嘗試透過自己的努力擺脫這些困境。每個所謂的可靠性增長模型 (RGM) 都基於關於故障消除如何導致故障率變化的某些假設。

此假設是相應模型的核心。它旨在傳達 RGM 的經驗實質。

一個常見的假設是 Jelinski-Moranda 模型(Lyu,1996):透過消除缺陷,所有故障的故障率都會降低一個恆定值。

主要問題是這些假設是否可以得到驗證。

微不足道的可靠性預測

“微不足道的預測”是天氣預報中使用的一種策略:明天的天氣將與今天相同。這種小小的預測具有一定的預測能力。我很好奇一個簡單的可靠性增長模型是否可以根據統計標準與更復雜的模型競爭。

下一個微不足道的可靠性預測 (TRP) 模型不對可靠性增長做出任何假設。它適用於具有固定故障率的系統。在此前提下,可以使用過去故障之間的時間來計算平均故障間隔時間或其倒數故障率:使用最近的 - 例如五次或十次 - 連續故障之間的執行時間的平均值來確定平均故障間隔時間。

TRP 是一種簡單的模型,通常用於硬體可靠性。它具有任何公認理論都應該具有的所有組成部分 -

該概念易於理解,任何工程師都能夠看到其侷限性。

模型的適用性假設得到了很好的理解。

使用泊松分佈,可以輕鬆確定估計的精度 - 所謂的置信區間。

我們為什麼將 TRP 與假設可靠性增加的更詳細的模型進行競爭,因為我們知道它是在可靠性不變的前提下做出的?我們不知道在消除缺陷時故障率如何變化。系統可能會發生重大變化,變得更好或更糟。但是,假設根本沒有變化似乎是可以接受的,因為故障消除對系統可靠性的影響很小。

波普爾的標準

可靠性增長模型旨在根據以往經驗預測軟體行為。在這種情況下,以往經驗依賴於歷史資料;預測無法透過試驗進行驗證。

知識是合成的(或經驗性的),因為它涉及一些並非先驗有效的假設,必須透過經驗來驗證。它在那些僅依賴邏輯推理和數學的章節中是分析性的。波普爾 (1980) 對預測技術的合成或經驗實質(方法的預測強度)的標準如下 -

可證偽性:無論預測價值(或預測能力)如何,沒有任何預測技術在所有情況下都是正確的。必須有失敗的可能性。諸如“明天這裡會下雨或不會下雨”之類的陳述不被認為是經驗性的,因為無法對其進行爭論。

  • 確證 - 當(可證偽的)預測技術的預測價值已在各種情況下得到證明時,則認為該預測技術得到了確證。

  • 客觀性 - 預測和斷言是客觀的,因為它們可以進行主體間測試。

  • 簡單性 - 預測技術不應依賴於太多可更改的變數。因為否則,它的證偽規避就太簡單了,其預測價值也過低。

從波普爾標準看可靠性增長模型

在公正性方面,可靠性增長模型(RGM)並不比其他預測方法差。然而,在我看來,RGM未能滿足波普爾的所有標準。

波普爾的證偽標準不能用於可靠性增長模型。這主要是由於模型和引數的多樣性,使得幾乎不可能找不到一個與某些給定的實驗或現場資料相符的模型。

因此,這些模型未能滿足簡單性的標準。“簡單”在這種情況下並不意味著“易於理解”。在某些平面點上進行(基本)直線擬合比這些點可以用更高階曲線(不簡單)來近似的事實更具有說服力和經驗力。

因此,這些模型無法得到證實(從波普爾的意義上來說)。在我迄今為止看到的所有模型演示中,模型都是事後選擇並擬合到資料的。基於這些模型,我不知道有任何可證偽且非平凡的軟體可靠性預測技術。

更新於: 2021年10月30日

4K+ 閱讀量

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告