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