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