楊婷 賈嵐 原變青



摘要:隨著計算機軟件技術(shù)的發(fā)展,軟件規(guī)模及軟件功能也在不斷擴充,在軟件系統(tǒng)的設(shè)計和開發(fā)過程中,如何確保所開發(fā)的軟件系統(tǒng)能夠滿足既定的可靠性指標,軟件可靠性分配技術(shù)則是其中必不可少的環(huán)節(jié)。該文分析了可靠性分配的原理,給出了在進行軟件可靠性分配時,應(yīng)遵循的原則以及分配的步驟,在此基礎(chǔ)上,給出了基于McCabe軟件復雜性的間接度量,為后續(xù)進一步迭代分配軟件可靠性提供依據(jù)。
關(guān)鍵詞:軟件可靠性分配;軟件復雜度;McCabe度量、復雜系數(shù)
中圖分類號:TP311 文獻標識碼:A
1概述
隨著計算機軟件技術(shù)的發(fā)展,軟件規(guī)模及軟件功能也在不斷擴充,軟件系統(tǒng)的結(jié)構(gòu)也越來越復雜,在計算機系統(tǒng)的實現(xiàn)過程中,由軟件實現(xiàn)的功能所占比例也不斷增加,同時,由軟件失效導致系統(tǒng)失效的次數(shù)也遠超過硬件所導致的系統(tǒng)失效次數(shù)。因此,如何確保所開發(fā)的軟件系統(tǒng)能夠滿足既定的可靠性指標,使軟件既能保證進度要求,又能降低生產(chǎn)成本,是當前軟件可靠性工程中要解決的一個重要問題。在軟件可靠性工程的設(shè)計和開發(fā)階段,首要任務(wù)則是在各功能模塊或組件之間完成可靠性指標的分配任務(wù)。
本文分析了可靠性分配的原理,給出了在進行軟件可靠性分配時,應(yīng)遵循的原則以及分配原理,在此基礎(chǔ)上,給出了基于MaCabe軟件復雜性的間接度量,為后續(xù)進一步迭代分配軟件可靠性提供依據(jù)。
2軟件可靠性分配原則及分配步驟
2.1分配原則
在軟件可靠性工程中,軟件可靠性分配過程和軟件可靠性預(yù)測過程正好相反,可靠性預(yù)測是一種合成方法,即:從底向上逐步完成系統(tǒng)指標的計算和評估,而可靠性分配過程則是一種分解方法,即:從頂向下逐層完成系統(tǒng)指標的分解和分配,根據(jù)初次分配的結(jié)果,搞清楚分配的指標與預(yù)測值之間的差距,進一步采取一定的措施加以修正。
因此,在進行軟件可靠性指標分配時,需遵循如下兩個原則:
1)要保證滿足系統(tǒng)可靠性要求;
2)要平衡設(shè)置各模塊或部件的可靠性指標。
針對第2)條原則,需要注意兩點,一是在每個部件或模塊的設(shè)計和開發(fā)過程中,要綜合權(quán)衡時間、難度、風險、重要度等因素的差距;二是要使整個系統(tǒng)的開發(fā)成本最低。
2.2分配步驟
軟件可靠性分配是一種從頂向下逐層分解的過程,以下給出軟件可靠性分配步驟,如圖1所示。
1)確定軟件可靠性指標:軟件系統(tǒng)的可靠性指標是軟件系統(tǒng)在特定的環(huán)境(條件)下,在給定的時間內(nèi),不發(fā)生故障的工作的概率,即可靠度R,除可靠度指標外,分配的指標也可以是故障率,或系統(tǒng)的MTBF(故障平均時間間隔)。
2)根據(jù)系統(tǒng)需求規(guī)格說明書,找出軟件的剖面及邊界。
3)按照功能說明,在考慮系統(tǒng)的結(jié)構(gòu)特性以及收集的歷史數(shù)據(jù)的特性(如存在哪些可靠性已知的類似模塊),將系統(tǒng)自頂向下分解為不同的部件或模塊。
4)選用一定的數(shù)學模型分配給整個系統(tǒng),確定了整個系統(tǒng)的可靠性指標后,再根據(jù)具體功能和影響因子具體分配給部件或模塊。
5)根據(jù)初次分配的結(jié)果,搞清楚分配的可靠性指標與預(yù)測值之間的差距,進一步采取相應(yīng)的措施加以修正。
3基于MaCabe軟件復雜性的間接度量及可靠性分配
3.1軟件復雜性的McCabe間接度量
軟件復雜性主要體現(xiàn)現(xiàn)在程序的復雜性上,軟件越復雜,在開發(fā)和維護過程中所消耗的資源也越多。因此,軟件的復雜性可以作為軟件所需資源投入量的一個間接度量。此外,軟件越復雜,在設(shè)計中出現(xiàn)錯誤的可能性也越大,這是一種合乎邏輯的推理,盡管復雜性與軟件中的錯誤數(shù)未必呈現(xiàn)出簡單的正比關(guān)系,但是存在這種正相關(guān)趨勢則是肯定無疑的。
本文給出McCabe復雜性度量方法,并以此作為復雜性因子,給出了基于復雜性因子的分配方法,為后續(xù)進一步迭代分配軟件可靠性提供方法依據(jù)。
軟件復雜性的度量可以從執(zhí)行程序指令以及結(jié)構(gòu)關(guān)系來研究。
以下考慮程序指令間的相互關(guān)系,即結(jié)構(gòu)上的錯綜程度,來研究程序結(jié)構(gòu)的復雜性。
將程序中的每個處理步驟和判定符收縮為一個點,將有關(guān)的點用線段連接起來,就得到抽象的程序流圖。有向圖中從某一節(jié)點出發(fā)的路,如果最終又回到原來的節(jié)點,則稱這樣的路為回路。如果在有向圖中,任意一個節(jié)點至少可以找出一條路通向其他任意的一個節(jié)點,這樣的有向圖稱為強連接有向圖。
用V(G)表示有向圖中的回路數(shù),用m表示圖中的弧的數(shù)目,n表示節(jié)點數(shù),對于強連接的有向圖,若用回路數(shù)V(G)來表示其復雜性,則可以證明V(G)由下列公式給出:
V(G)=m-n+1
上式稱為程序的循環(huán)性度量,又稱為McCabe復雜性度量。如圖2所示,圖(a)和圖(b)都表示程序流圖,按上式計算得:
V(G)=13-11+1=3
圖(b)按上式計算得:
V(G)=10-7+1=4
上面的方法同樣可以度量程序的循環(huán)結(jié)構(gòu),通常,循環(huán)結(jié)構(gòu)復雜的程序,往往出錯率也會高。通過比較上面的兩個程序流圖,可預(yù)知圖(b)隱含的錯誤數(shù)大于圖(a)所含錯誤數(shù)。
3.2基于復雜性系數(shù)的軟件可靠性分配方法
本節(jié)將給出基于復雜性系數(shù)的軟件可靠性分配方法,該方法將系統(tǒng)失效率分配到各個模塊中。若某一部件或模塊的復雜系數(shù)越大,那么為達到一定的可靠性而花的維護費用也越大,因此,該模塊或部件所分配的失效率也將越高。
以下給出具體的分配步驟:
1)確定軟件系統(tǒng)總的失效率。
2)確定模塊數(shù)M。
3)確定每一部件或模塊的復雜性因子wi。
4)確定每一部件或模塊實際運行的時間ti,以及任務(wù)的時間T。
5)計算失效率的調(diào)整系數(shù):
4結(jié)束語
軟件可靠性分配方法與硬件可靠性分配方法相比,模型的選擇和分配的靈活度都存在差異。已知的軟件可靠性分配方法很多都借鑒了硬件可靠性的技術(shù),同時考慮了軟件自身的特點和性質(zhì),進而形成了符合軟件特性的軟件可靠性分配方法。本文給出了基于McCabe軟件復雜性的間接度量,為進一步迭代分配軟件可靠性提供依據(jù),后續(xù)可以進一步研究基于復雜性、重要度以及調(diào)用強度等因素的可靠性分配技術(shù)。