何中威 范鑫
【摘要】 軟件的可靠性是確保用戶使用的前提,軟件缺陷將嚴(yán)重影響用戶體驗。本文簡要介紹了軟件缺陷預(yù)測,并對其相關(guān)技術(shù)進行了研究,以期為軟件開發(fā)人員提供參考。
【關(guān)鍵詞】 軟件缺陷 預(yù)測技術(shù) 復(fù)雜性度量 預(yù)測原理
隨著計算機軟件系統(tǒng)規(guī)模不斷增大以及邏輯復(fù)雜性不斷增強,其潛在的或未被測試出的缺陷則會影響軟件質(zhì)量?;诖?,本文通過研究軟件缺陷預(yù)測技術(shù),可幫助測試人員有效評估軟件的可靠性,掌握軟件質(zhì)量狀態(tài),從而確定其是否達到使用標(biāo)準(zhǔn)。
一、軟件缺陷預(yù)測
軟件缺陷預(yù)測技術(shù)自出現(xiàn)以來,在軟件領(lǐng)域一直極為活躍,其對軟件質(zhì)量分析、減少開發(fā)時間、降低開發(fā)成本等方面具有重要的價值。軟件缺陷預(yù)測技術(shù)是指按照軟件的基本屬性規(guī)模、復(fù)雜性、開發(fā)方法和過程,以及已知缺陷來預(yù)測潛在但還未被發(fā)現(xiàn)的缺陷[1]。軟件缺陷預(yù)測技術(shù)能幫助測試人員掌握軟件失效模式、了解質(zhì)量狀態(tài),并決定軟件是否交予用戶使用。軟件缺陷預(yù)測技術(shù)可分成動態(tài)缺陷預(yù)測與靜態(tài)缺陷預(yù)測[2]。動態(tài)缺陷預(yù)測技術(shù)是以缺陷產(chǎn)生時間為基礎(chǔ),對系統(tǒng)缺陷隨時間分布實施預(yù)測的技術(shù);該技術(shù)利用時間分布統(tǒng)計、挖掘軟件的缺陷,尋找缺陷基于軟件開發(fā)周期的引入與移除規(guī)律。靜態(tài)缺陷預(yù)測技術(shù)是指采用軟件規(guī)模、復(fù)雜度、開發(fā)過程等可度量缺陷的元素及已有缺陷,預(yù)測軟件潛在但還未暴露的缺陷;該技術(shù)以缺陷盡早檢測為原則,既可減少缺陷修復(fù)成本,又能縮短缺陷修復(fù)時間。
二、軟件復(fù)雜性度量及其與缺陷預(yù)測的關(guān)系
軟件復(fù)雜性度量與模塊錯誤分布具有緊密的關(guān)聯(lián)。即:正開發(fā)軟件模塊的復(fù)雜性度量與軟件生命周期的測試和運行過程中所發(fā)現(xiàn)的錯誤數(shù)量之間存在直接相關(guān)性[3]。將復(fù)雜性度量作為輸入,能有效預(yù)測軟件可靠性。軟件模塊出錯傾向可直接反映軟件的可靠性(外部質(zhì)量屬性),但不可直接獲得。故在缺陷預(yù)測模型中輸入軟件復(fù)雜性度量(內(nèi)部質(zhì)量屬性),可獲得各軟件模塊出錯傾向的預(yù)測值,從而間接反映軟件的可靠性。
三、軟件缺陷預(yù)測技術(shù)原理
軟件缺陷預(yù)測旨在幫助研究人員在軟件開發(fā)早期宏觀的認(rèn)識該系統(tǒng)。其可區(qū)分系統(tǒng)各模塊出錯傾向,在軟件測試、修改過程中有效配置資源,以提升軟件開發(fā)效率、減少開發(fā)成本。軟件缺陷預(yù)測技術(shù)原理如圖2所示,軟件缺陷預(yù)測過程分為三部分,即:特征選擇處理復(fù)雜性度量數(shù)據(jù)集、建立缺陷預(yù)測模型、模型預(yù)測結(jié)果。
1、特征選擇處理復(fù)雜性度量數(shù)據(jù)集。在軟件缺陷預(yù)測訓(xùn)練過程中,首先應(yīng)收集該軟件早期版本或測試數(shù)據(jù),獲得相關(guān)經(jīng)驗。軟件復(fù)雜性度量數(shù)據(jù)集包括兩部分,即復(fù)雜性度量屬性集與測試歷史數(shù)據(jù)。軟件復(fù)雜性度量屬性集可視為樣本數(shù)據(jù)的“屬性”,而測試歷史數(shù)據(jù)則可認(rèn)為是樣本數(shù)據(jù)相對應(yīng)的“值”。這樣一來,軟件復(fù)雜性度量數(shù)據(jù)集就以“屬性——值”的樣本形式構(gòu)成。樣本“值”是一類布爾型數(shù)據(jù),即:有或無出錯傾向,屬性則是來自于軟件開發(fā)過程中的復(fù)雜性度量屬性集。
2、建立缺陷預(yù)測模型。以“屬性——值”樣本形式構(gòu)成的軟件復(fù)雜性度量數(shù)據(jù)集有效反映了復(fù)雜性度量屬性集與樣本是否存在出錯傾向之間具有一定的相關(guān)關(guān)系,即軟件缺陷預(yù)測模型在實質(zhì)上屬于模式識別范圍[4]。構(gòu)建軟件缺陷預(yù)測模型的過程則是利用機器學(xué)習(xí)算法建立模型結(jié)構(gòu),并明確復(fù)雜性度量屬性之間依賴性強弱的一個過程,包括模型結(jié)構(gòu)學(xué)習(xí)與參數(shù)學(xué)習(xí)兩個過程。
3、模型預(yù)測結(jié)果。軟件缺陷預(yù)測模型的預(yù)測過程是在預(yù)測集上實現(xiàn)的,與訓(xùn)練過程的訓(xùn)練集完全不同。因構(gòu)建好的缺陷預(yù)測模型可利用模型結(jié)構(gòu)和參數(shù)對復(fù)雜性度量與預(yù)測結(jié)果間的關(guān)系進行定量表達,也就是說,給定一個軟件模塊的復(fù)雜性度量數(shù)據(jù)集,利用已訓(xùn)練預(yù)測模型就能分析此模塊有無缺陷,從而完成軟件缺陷的預(yù)測。
四、結(jié)論
綜上,軟件的可靠性不能直接獲得,只能以復(fù)雜性度量作為輸入間接反映軟件的缺陷。首先以特征選擇處理復(fù)雜性度量數(shù)據(jù)集,然后構(gòu)建缺陷預(yù)測模型,進而利用該模型獲得相應(yīng)的預(yù)測結(jié)果。
參 考 文 獻
[1] 王海強.軟件缺陷預(yù)測技術(shù)分析[J].科技傳播,2015,(1):132-133.
[2] 喬輝.軟件缺陷預(yù)測技術(shù)研究[J].解放軍信息工程大學(xué),2013:3-4.
[3] 李大鵬.一種集成類層次和系統(tǒng)層次的面向?qū)ο筌浖?fù)雜性度量集[J].計算機研究與發(fā)展,2010,(S1):237-242.
[4] 馮大成.基于復(fù)雜性的軟件缺陷預(yù)測[J].計算機工程與設(shè)計,2011,32(1):213-217.