第一章 緒論
隨著科技的發展與人類對軟體系統的依賴逐漸增加,軟體系統的品質也因此 開始扮演著越來越重要的角色。為了確保軟體品質,軟體開發人員會在軟體設計 完成後進行一系列軟體測試相關的工作。在這過程當中,軟體可靠度的定義逐漸 形成並開始成為軟體品質的象徵性指標。因此,許多專家學者們在過去幾十年來,
提出了許多軟體可靠度成長模型,以預測軟體系統的失效行為。
1.1 研究背景與動機
科技的發展帶動了電腦硬體設備從性能到品質的提高,軟體系統也逐漸成為 電腦系統最核心的部分之一。伴隨著是越大的軟體系統,其複雜度就會越高,軟 體的開發成本也提高了許多,再加上錯誤的數目是會隨著程式碼行數的增加而呈 幾何倍數成長(Fenton & Pfleeger, 1998; 如圖 1),因此如何有效提升軟體品質 並降低軟體開發與維護成本,近年來已成為軟體工程(Software Engineering)重 要的課題。
圖 1
程式碼行數與找到的錯誤數目之關係 資料來源:Feton & Pleeger (1997)
2
軟體可靠度研究在過去三十多年來,已有多位學者提出了各類軟體可靠度成 長模型(Software Reliability Growth Models, SRGMs)以評估軟體的可靠度。當 中又以非齊次卜瓦松過程(Non-Homogeneous Poisson Process, NHPP)為基礎之 模型居多。首次成功使用非齊次卜瓦松過程的概念來分析軟體失效行為是 Goel A.L. 與 Okumoto K. 兩位學者於 1979 年所提出的 G-O 模型。後來在此基礎上,
陸續有學者提出了很多基於非齊次卜瓦松過程之軟體可靠度成長模型(Goel &
Okumoto, 1979; Yamada et al., 1983; Yamada et al., 1986; Ho et al., 2003; Teng &
Pham, 2006; Huang et al., 2007; Zheng, 2009; Sharma et al., 2010; Khatri et al., 2012;
Kapur et al., 2012),主要目的為預測軟體開發完成後可能發生之失效行為。
雖已發展有一段時間,但由於研究者對軟體失效的觀察角度不同,導致所建 立之模型不具有普遍通用性,目前尚未發展出一套全面性且能準確預測軟體失效 行為之軟體可靠度模型,因此,本研究將嘗試以非齊次卜瓦松過程為基礎,建構 一軟體可靠度成長模型,作為評估軟體可靠度之參考依據。
1.2 研究目的與範圍
軟體可靠度(Software Reliability)是一項重要的軟體品質指標。隨著電腦系 統的普及與系統功能的規模擴大,可靠度的概念漸漸得到重視,做好軟體可靠度 的預測即可有效提高軟體測試的結果。許多專家學者也因此針對軟體可靠度進行 了許多的探討與分析,並發展出相關的理論與知識,應用於實務中。一般來說,
軟體開發人員在軟體開發完成後,會進行軟體測試來確保軟體品質。在這過程中,
軟體當中所存在的錯誤將被發現、修正和移除。然而,現有軟體可靠度成長模型 當中大多數假設失效發生時,軟體中的錯誤將立即被發現,接著立即被移除,這 顯然是不符合實際狀況的。通常一個軟體系統發生故障等情形,軟體測試人員需 要一定的時間尋找導致此故障的錯誤,而當找到該錯誤之後,軟體測試人員又要
3
花一定的時間進行修正,因此從偵測到錯誤到最後錯誤的修正和移除,會有一定 的時間延遲。若能將此延遲現象考慮到軟體可靠度模型當中,或許能在軟體測試 過程中更準確的預測軟體失效。
另外,會影響軟體測試結果還有一項重要的因素,為測試心力(Testing Effort, TE),即軟體測試過程所消耗之各項資源,可以以一函數呈現。早期的軟體可靠 度成長模型大多不考慮 TE,或是把 TE 假設為隨著時間的消耗率為一常數(Lyu, 1996; Pham, 2000),此不合理的假設多多少少影響了軟體可靠度成長模型對於軟 體失效的預測結果。因此若能準確的掌握 TE 隨著時間變化對軟體測試所造成的 影響,將可提高軟體可靠度模型於軟體測試的測試結果。
在現有軟體可靠度成長模型中,以非齊次卜瓦松過程所建立的模型較為廣泛 地應用在軟體可靠度工程中。此類模型把測試過程當成是一種表示為均值函數
(Mean Value Function, MVF)的計數過程(Counting Process),確定均值函數 即可估計出軟體的可靠度,當中也考慮了許多概念,包含:完美除錯(Perfect Debugging)環境下的 NHPP 可靠度成長模型、不完美除錯(Imperfect Debugging)
環境下的 NHPP 可靠度成長模型,考慮測試覆蓋率(Testing Coverage)的 NHPP 可靠度成長模型等等(Pham, 2006)。NHPP 模型最大的優點在於其自身之可組 合性,只要透過不同組合之錯誤偵測率函數與故障內容函數即可建構出各種不一 樣的可靠度成長模型,且皆能充分呈現出可靠度隨著時間所產生的變化(Lai &
Garg, 2012)。然而,在這些軟體可靠度成長模型當中,大部分只考慮單一概念 或因素至模型中,較少有模型會結合兩三種概念進行建構,加上早期軟體可靠度 成長模型大多數假設軟體測試階段之除錯過程中錯誤將被完全移除且不會再產 生新的錯誤,種種不合理之假設讓現有軟體可靠度成長模型減少了本身對軟體失 效行為的預測準確度。
因此,本研究的目的為結合除錯延遲(Time-Delayed Fault-Removal)與測試 心力函數兩者之特性至錯誤偵測率函數中,以及於故障內容函數中考量到了不完
4
美除錯的可能性,以建構新的軟體可靠度成長模型,並評估其是否擁有更佳的預 測軟體失效行為的能力。
1.3 研究方法與流程
本研究將以非齊次卜瓦松過程為基礎,結合除錯時間延遲觀點與測試心力
(Testing Effort)的概念至錯誤偵測率函數中,並於故障內容函數中考量到了不 完美除錯的概念,以建構軟體可靠度成長模型,藉此評估其是否能夠更準確的預 測軟體失效行為。模型建構完成後,將透過多組歷史實際失效數據,讓新模型與 現有模型進行比較分析,以觀察新模型是否擁有更佳的預測軟體失效結果的能 力。
本研究基本架構為:第一章先針對研究問題界定研究動機、目的與範圍;第 二章則整理可靠度、軟體可靠度與軟體可靠度成模型之相關文獻;在第三章中決 定求解方法;第四章模型建構部分則以 NHPP 模型為基礎,結合延遲與測試心力 的概念;模型建構完成後即進行測試與分析,若分析結果不佳或不合理,則進行 數學模式的修正與檢討,直至模型無誤後,再進行模型標準之比較,最後在第五 章提出結論與建議。本研究流程如圖 1 所示。
5
圖 2 研究流程
6