錢 麗,陳 路,尹春嬌,陳秀明
(1.安徽新華學(xué)院信息工程學(xué)院,安徽 合肥2300881;2.中國科學(xué)技術(shù)大學(xué),安徽 合肥230026)
研究軟件可靠性是為了能夠發(fā)現(xiàn)軟件運(yùn)行過程中可能存在的缺陷,同時借助排除軟件缺陷來提高軟件可靠性,提高軟件可靠性評估的預(yù)測水平也為軟件質(zhì)量管理提供決策支持[1].本文基于失效數(shù)據(jù)分析軟件可靠性發(fā)展趨勢,首先以MUSA J D采集的貝爾實(shí)驗(yàn)室Beta 軟件系統(tǒng)運(yùn)行過程中的失效數(shù)據(jù)作為研究對象;然后利用指數(shù)函數(shù)模型擬合失效數(shù)據(jù)發(fā)展趨勢;最后進(jìn)行軟件可靠性趨勢分析,為選擇合適的軟件可靠性模型提供了有利的參考依據(jù).
軟件失效是指功能部件執(zhí)行其規(guī)定功能的能力喪失,或者出現(xiàn)偏離預(yù)期結(jié)果的行為,軟件失效行為可以按照嚴(yán)重程度劃分成輕度、中度、致命和災(zāi)難性失效等級別,而且不同系統(tǒng)對軟件失效級別的定義也存在不同.
軟件可靠性受到失效時間、失效次數(shù)的制約,假設(shè)某個軟件在單位時間內(nèi)發(fā)生失效次數(shù)較多,或者發(fā)生失效行為的時間間隔較短,那么軟件可靠性就較差.
軟件失效原理包涵四個方面,如圖1 所示:
圖1 軟件失效原理
(1)錯誤(error):指的是軟件設(shè)計人員在開發(fā)過程中因?yàn)槭韬觥⑹д`或者錯誤導(dǎo)致軟件失效的行為.
(2)缺陷(defect):指的是程序員開發(fā)的代碼當(dāng)中存在一個或者多個錯誤、失效編碼行為,一旦軟件設(shè)計文檔的描述不準(zhǔn)確、功能需求不合理、功能存在遺漏都會造成軟件缺陷的存在.
(3)故障(fault):指的是軟件運(yùn)行階段出現(xiàn)了用戶不希望看到或者用戶無法接受的狀況,一般都是軟件運(yùn)行錯誤.
(4)失效(failure):軟件運(yùn)行過程中出現(xiàn)缺陷行為或者軟件功能無法滿足用戶需求都造成軟件失效.
軟件失效數(shù)據(jù)分為完全數(shù)據(jù)和不完全數(shù)據(jù)兩類:(1)完全數(shù)據(jù)也稱為失效時間數(shù)據(jù),是指每次失效發(fā)生的間隔時間或者累計時間;(2)不完全數(shù)據(jù)也稱為失效計數(shù)數(shù)據(jù),是指單位時間發(fā)生的失效數(shù)或者累計失效數(shù).
根據(jù)失效數(shù)據(jù)的類型收集相應(yīng)的數(shù)據(jù),需要確保失效數(shù)據(jù)收集的準(zhǔn)確性、完整性和及時性.失效數(shù)據(jù)收集首先需要確定數(shù)據(jù)類型,然后制定收集計劃以及確定所需的收集工具,最后分析失效數(shù)據(jù)并且評價失效數(shù)據(jù).
軟件可靠性失效數(shù)據(jù)的分析方法主要有拉圖形法、拉普拉斯法、曲線圖技術(shù)、數(shù)據(jù)建模技術(shù)等方法,不同失效數(shù)據(jù)分析技術(shù)具有各自的使用場合和優(yōu)勢.以下首先介紹圖形法在判斷數(shù)據(jù)趨勢中存在的局限性,然后采用拉普拉斯法對失效數(shù)據(jù)進(jìn)行趨勢分析,最后根據(jù)失效數(shù)據(jù)的發(fā)展趨勢選擇相應(yīng)的可靠性模型.
圖2 圖形法測試失效數(shù)據(jù)趨勢圖
圖形法是分析軟件失效數(shù)據(jù)集的工具之一,它能夠非常直觀、快速、簡單地體現(xiàn)軟件失效數(shù)據(jù)的集中性和相關(guān)性特征.圖形分析法主要對軟件使用時間、累計失效數(shù)目、平均時間段失效數(shù)目等各種變量之間關(guān)系進(jìn)行分析,以下圖2 反映的是累計軟件失效次數(shù)和時間之間存在的函數(shù)關(guān)系,橫坐標(biāo)是時間信息,縱坐標(biāo)是累計軟件失效次數(shù).
圖2 中顯示的兩條曲線,一條曲線是MO 模型,它是針對對數(shù)函數(shù)模型;另一條曲線是GO 模型,它是針對指數(shù)函數(shù)模型,這兩個模型存在著顯著的區(qū)別,然而圖中這兩個模型對數(shù)據(jù)的擬合非常相似,說明圖形法對不同模型比較的效果不好,它只能粗略判斷數(shù)據(jù)趨勢,因此存在一定的局限性.
拉普拉斯法主要用于分析軟件失效數(shù)據(jù)變化趨勢,它是檢驗(yàn)失效數(shù)據(jù)趨勢的一種有效的方法.拉普拉斯法分析的數(shù)據(jù)即可以是軟件軟件失效時間間隔,也可以是失效強(qiáng)度.下面分別以拉普拉斯失效間隔時間和失效強(qiáng)度為對象,分析軟件可靠性發(fā)展趨勢.
圖3 失效數(shù)據(jù)趨勢分析圖
(1)失效間隔時間
以下選擇軟件失效間隔時間作為分析的對象,設(shè)失效間隔時間θj,j=1,2,3……L 為隨機(jī)變量Ti的一個實(shí)現(xiàn),可以按照以下公式1 對每一個失效i計算相應(yīng)的拉普拉斯因子u(i):
通過公式1 計算出的軟件失效數(shù)據(jù)在每一個點(diǎn)的拉普拉斯因子后就可以分析失效數(shù)據(jù)趨勢.在實(shí)際的應(yīng)用中需要考慮正態(tài)分布下顯著水平值,顯著性水平是估計總體參數(shù)落在某一區(qū)間內(nèi)可能犯錯誤的概率,如果顯著水平取值0.05,那么對所有的點(diǎn)i 有如下情況:|u(i)|<1.96 成立時,表明軟件可靠性趨勢是穩(wěn)定的;當(dāng)|u(i)|<1.96 不滿足時,說明軟件可靠性趨勢是不穩(wěn)定的.
(2)軟件失效強(qiáng)度
以下選擇軟件失效強(qiáng)度作為分析對象,如果把某個失效時間間隔[0,T]劃分成k 個等長的單位時間,那么在第i 個時間中觀測到的失效數(shù)為n(i),拉普拉斯因子表達(dá)式為公式2:
假設(shè)N(k)表示到時刻k 所發(fā)生的累積失效數(shù),則N(k)可以表達(dá)為公式3:
將公式(3)代入公式2 中得出公式(4):
公式(4)中如果拉普拉斯因子u(k)減少,表示失效強(qiáng)度降低,那么軟件可靠性就會增強(qiáng);如果拉普拉斯因子u(k)增加,表示失效強(qiáng)度增加,那么軟件可靠性就會降低.
分析失效數(shù)據(jù)的發(fā)展趨勢是為了有效地選擇軟件可靠性模型,從而對軟件可靠性進(jìn)行科學(xué)地評估和預(yù)測.失效數(shù)據(jù)可靠性分析結(jié)果通常有以下四種類型:(1)可靠性穩(wěn)定趨勢:這種情況一般是軟件缺陷的修復(fù)對軟件系統(tǒng)沒有太多影響,或者存在軟件缺陷被忽略的情況.針對可靠性穩(wěn)定趨勢建模一般采用指數(shù)分布模型,例如失效時間服從指數(shù)分布模型或者HPP 模型等.(2)可靠性增長:一般是在修復(fù)軟件系統(tǒng)缺陷之后,軟件缺陷減少,這種情況可以采用J-M 模型、G-O 模型進(jìn)行可靠性建模;(3)可靠性下降:一般是在測試的初級階段發(fā)生,其原因可能是增加了系統(tǒng)的新用戶、采用不同方式激活系統(tǒng)、改變測試數(shù)據(jù)集、修改軟件缺陷后引起新的BUG 等原因,這種情況首先需要檢查系統(tǒng)代碼和安全性能,然后選擇相應(yīng)的軟件可靠性模型;(4)可靠性先降后升:針對這種情況可采用Y-O 模型、Ohba 三參數(shù)NHPP 等模型建模.
本實(shí)例以拉普拉斯失效強(qiáng)度為測試對象來分析軟件可靠性趨勢.首先對Beta 軟件運(yùn)行過程中單位時間的失效數(shù)進(jìn)行收集;然后通過MATLAB編程實(shí)現(xiàn)對拉普拉斯因子u(k)的計算,導(dǎo)出軟件失效數(shù)據(jù)趨勢分析圖;最后分析軟件可靠性發(fā)展趨勢,基于失效數(shù)據(jù)集的特點(diǎn)和規(guī)律選擇相應(yīng)的軟件可靠性模型.
本次實(shí)驗(yàn)采用軟件可靠性評測權(quán)威機(jī)構(gòu)IEEE Computer Society Press and McGraw-Hill Book Company 發(fā)布的J1.DAT[2]失效數(shù)據(jù),該數(shù)據(jù)記錄了Beta 軟件運(yùn)行過程中單位時間的失效數(shù),一共有62 個失效數(shù)據(jù).為了更好的表現(xiàn)軟件可靠性發(fā)展趨勢,本次實(shí)驗(yàn)提取了前42 個數(shù)據(jù)作為失效趨勢分析對象,如表1 所示.表中第一列是以星期為時間單位,第二列是每個星期觀測到的失效數(shù).
表1 軟件失效數(shù)據(jù)
由表1 的數(shù)據(jù)可知收集的失效數(shù)據(jù)為單位時間內(nèi)觀測到的失效數(shù),通過MATLAB 編程實(shí)現(xiàn)對拉普拉斯失效因 子u(k)的計算,即公式2 的計算,部分代碼如下:
根據(jù)失效強(qiáng)度計算出拉普拉斯失效因子u(k)后,再通過MATLAB 工具仿真失效數(shù)據(jù)趨勢分析圖3:
前面章節(jié)提到拉普拉斯因子u(k)的變化和軟件可靠性成反比關(guān)系,根據(jù)圖3 分析軟件可靠性發(fā)展趨勢.該系統(tǒng)在第13 周之前可靠性大致是降低趨勢;在第13 周至28 周期間可靠性大致是增長趨勢,即該系統(tǒng)在第28 周之前的可靠性趨勢是先降后升;在第31 周以后該系統(tǒng)的軟件可靠性大致趨于穩(wěn)定.
研究軟件可靠性模型對提升軟件質(zhì)量具有重要的意義,本文研究基于失效數(shù)據(jù)的軟件可靠性趨勢,對軟件可靠性領(lǐng)域的問題提出了一些解決方法.
(1)軟件可靠性模型的選擇是基于失效數(shù)據(jù)集的特點(diǎn)和規(guī)律進(jìn)行的,在軟件運(yùn)行階段收集失效數(shù)據(jù)集,借助失效數(shù)據(jù)模型的假設(shè)條件和使用范圍,選擇和分析軟件可靠性模型;
(2)通過對可靠性軟件失效原理的分析,以及對Beta 軟件運(yùn)行期間收集的失效數(shù)據(jù)進(jìn)行處理和分析,為軟件可靠性模型的選擇提供了科學(xué)的參考依據(jù).
[1] 錢麗,萬家華,陳秀明.基于混沌理論軟件可靠性定性仿真建模方法[J].四川大學(xué)學(xué)報(自然科學(xué)版),2015,52(2):312-318.
[2] http://www.cse.cuhk.edu.hk/~lyu/book/reliability/data.html.