第二章 文獻探討
第二節 硬體可靠度與軟體可靠度
第二節 硬體可靠度與軟體可靠度
一、硬體可靠度
一個複雜的系統,如通訊系統,是由許多硬體元件及軟體元件所組成。然而 整個系統可能會因為部分元件故障進而導致整體系統故障。硬體失效的原因有損 耗、疲勞、溫度、電應力或是設計磁化率所導致。根據硬體故障的時間,可以分 為以下兩類(Teng, Pham & Jeske, 2006):
(一)永久性硬體失效:
指硬體失效或退化,且復原重做的工作無法容易完成,一旦當中一個硬體元 件無法正常運作時,就會被認為是永久性故障。永久性硬體故障又可以進一步分 為以下兩類:
1. 總硬體失效:整體硬體元件停止運作,無論元件工作重做次數多寡。例如:CPU 燒毀,則工作無法完成,直到CPU更換才能完成。
2. 局部硬體失效:部分硬體元件停止運作。例如:電腦記憶體是由許多資料段所 組成,而且通常這些資料段不會同時間一起發生失效。如果這些資料段發生失 效,卻還是繼續運作,就算是個局部硬體失效。在這種狀況下,假使這些失效 資料段沒有被軟體再次使用,但是電腦仍然可以繼續運作,那麼系統很有可能 會退化降級,而且回應速度會變緩慢。
(二)暫時性硬體失效:
指暫時性硬體失效是指被干擾的操作環境所引起的失效。例如:假使環境溫 度超出特定數值或是資料數據因強電磁波動而造成變更,都有可能使CPU會暫時性 的停止工作。在這狀況下,系統有可能會得到錯誤結果。在上述範例當中,高溫 度的操作環境及電磁波干擾都是環境干擾,一般失效在干擾消失後可以被解決,
其結果顯示,暫時性硬體失效可於工作重作後被移除。
9
二、軟體可靠度
軟體可靠度類似於硬體可靠度,兩者屬於隨機過程,且可藉由機率分配來做 說明,然而軟體可靠度與硬體可靠度的相異點在意義上軟體不會磨損、燒毀或惡 化,但隨著軟體測試時間的增加,軟體發生失效的機率也會隨之增加,最後導致 軟體可靠度的降低。圖 6 為軟體可靠度模型基本構想圖,在任何特定環境與時間 中,根據觀察軟體運作預計的失效機率數據所製成的曲線,降低軟體系統失效機 率的原因為發現及移除軟體故障。此目的有兩點(Lyu, 1996):
1. 預測軟體達到特定目標所需的額外時間。
2. 預測軟體測試完成後的期望可靠度。
圖 6 軟體可靠度模型基本構想圖 資料來源:Lyu(1996)
軟體可靠度可分為資料驅動模型(Data-driven Model)與分析模型(Analytical Model),前者可區分為類神經網路模型(Neural Network Model)與支援向量機
(Support Vector Machine);後者為軟體可靠度成長模型,可區分為確定型軟體可 靠度模型(Deterministic Software Reliability Model)與機率型軟體可靠度模型
(ProbabilisticSoftware Reliability Model)(江雅婷,2012;陳木龍,2010)。
確定型軟體可靠度主要研究程式中運算元、運算子及程式中錯誤數目與機器
10
指令數目,再細分出軟體衡量(Software Metric)與複雜衡量(Complexity Metric)
兩個分類。機率型軟體可靠度則將失效發生與錯誤移除當作是一個機率事件,但 目前因為許多學者投入此類研究,使得不同的觀點影響最後的分類,1991年Xie將 可靠度區分為馬可夫模型(Markov Models)、非齊次卜瓦松過程模型、操作輸入 模型(Input-domain-based Models)、貝式模型(Bayesian Models)、統計資料分 析模型(Statistical Data Analysis Models)、注入標籤模型(Seeding and Tagging Models)、軟體結構模型(Software Metrics Models);2006年,Pham學者將可靠 度以時間機率區分為植錯型(Error Seeding)、失效率(Failure Rate)、曲線符合
(Curve Fitting)、可靠度成長(Reliability Growth)、馬可夫架構(Markov Structure)、 時間序列(Time-series)、非齊次卜瓦松過程。圖7根據陳木龍(2010)研究中分 類圖所延伸及修改。
圖 7 軟體可靠度模型分類圖 資料來源:陳木龍(2010)
11
軟體可靠度在開發及測試新軟體產品中已經越來越重要,而錯誤的程式碼是 造成軟體失效的原因之一,且錯誤數會隨程式碼的增加而呈現倍數成長,如圖 8 所示(Feton & Pfleeger, 1997),其原因可能會因為不正確的邏輯、敘述或是資料 輸入錯誤等,發生失效還需要等到執行含有錯誤程式碼才會被發現,假如沒有執 行到含有錯誤程式碼時,那這錯誤可能永遠都不會被發現,雖然檢測到的錯誤會 立即移除,但是在測試過程當中新的錯誤仍會加入,因此,這整個過程變得非常 耗時及複雜。當含有錯誤的軟體發佈到市場上,會為軟體開發公司帶來高額損失,
雖然發佈前軟體的除錯及測試能有效降低錯誤內容,但也會增加開發成本,因此,
開發人員若能在時間內找到軟體最佳停止測試時間點是很重要的。剩餘錯誤數、
失效率、可靠度需求、總系統成本等都可以用來確定最佳的測試時間的標準。
圖 8 程式碼行數與找到的錯誤數之關係 資料來源:Feton, N. E.與Pfleeger, S. L.(1997);謝爾廉(2000)
軟體可靠度從本質上可以分為兩種(Wood, 1996;李嘉華,2014):
1. 試圖從設計參數中預測軟體可靠度(又稱缺陷密度,Defect Density)模型,
可以從程式碼特性、行數、輸入和輸出的資料等參考資料計算出軟體內的錯 誤數目。
2. 從測試資料預設軟體可靠度(又稱軟體可靠度成長模型,SRGM),模型試圖 透過具有一定特性的已知函數與過去實際失效數據來預測未來軟體失效行 為。
12
SRGM 為根據以下假設(Huang & Lin, 2006): 1. 故障偵測過程遵循 NHPP。
2. 在任何時間中軟體系統失效為系統中的剩餘故障所引起。
3. 所 有 偵 測到 的 錯誤 可 以被 歸 為 前 置 錯 誤 ( Leading Faults ) 或 相 依 錯 誤
(Dependent Faults),而錯誤總數是有限的。
4. 在時間間隔中偵測到的前置錯誤平均數與系統中的剩餘前置錯誤平均數成正 比。此外,該比例會隨時間而變動。
5. 在時間間隔中偵測到的相依錯誤平均數與系統中的剩餘相依錯誤平均數成正 比,及系統時間內總錯誤數中的前置錯誤移除率。該比例會隨時間而變動。
6. 偵測到的相依故障可能不會立即移除,且會延後至錯誤偵測過程。
7. 在錯誤移除過程中沒有新的錯誤產生。
目前現有研究中的軟體可靠度模型,多以觀察軟體產品在測試中的失效次數,
又以 NHPP 為基礎所建立的軟體可靠度成長模型最符合實際情形,本研究以 NHPP 為基礎建立之軟體可靠度成長模型作為探討。NHPP 通常用來描述失效趨勢(可 靠度成長),並提供測試過程中軟體失效現象的分析架構並畫出失效適配曲線,當 中預測未來失效數目通常以指數型或 S 型曲線呈現,如圖 9 所示(Yamada, 2014)。
13
圖 9 軟體可靠度成長曲線 資料來源:Yamada(2014)