楊宏偉,王煥坤,李慶全
(裝甲兵工程學(xué)院 技術(shù)保障工程系,北京 100072)
軟件結(jié)構(gòu)描述了軟件實(shí)體元素方法、屬性、類、包以及它們之間的相互關(guān)系,在很大程度上直接影響著軟件的功能、性能、安全性及可靠性等指標(biāo)。因此,在進(jìn)行軟件可靠性分配前,對(duì)軟件系統(tǒng)結(jié)構(gòu)進(jìn)行分析是非常有必要的。
目前,在軟件可靠性分配的研究中往往是基于軟件系統(tǒng)中模塊間相互獨(dú)立、沒有交互的假設(shè)上。然而現(xiàn)實(shí)情況并非如此,由于要處理繁雜的事務(wù),現(xiàn)在的軟件系統(tǒng)通常都很復(fù)雜,由許多互相作用的模塊構(gòu)成。近年來,一些研究者對(duì)大量面向?qū)ο筌浖到y(tǒng)的類圖進(jìn)行了研究,發(fā)現(xiàn)軟件系統(tǒng)的結(jié)構(gòu)大多數(shù)都展現(xiàn)出 “小世界”和“無尺度”等復(fù)雜網(wǎng)絡(luò)特性[1]。對(duì)于這類軟件的可靠性分配問題,可以用網(wǎng)絡(luò)分析法(ANP)進(jìn)行探討。
軟件系統(tǒng)復(fù)雜性的完整定義應(yīng)當(dāng)包括軟件的內(nèi)部結(jié)構(gòu)和外部特性兩個(gè)方面,其中內(nèi)部結(jié)構(gòu)反映軟件的靜態(tài)復(fù)雜性,而外部特性則反映軟件的動(dòng)態(tài)復(fù)雜性。本文主要討論軟件內(nèi)部結(jié)構(gòu)的復(fù)雜性。
復(fù)雜系統(tǒng)不一定要有很大的規(guī)模,因?yàn)橐鹣到y(tǒng)復(fù)雜行為的主要原因并不是元件的數(shù)量,而是元件之間的交互。所以元件之間的交互方式對(duì)復(fù)雜系統(tǒng)的特性及行為的影響是一個(gè)不可忽視的方面,也是復(fù)雜系統(tǒng)研究的關(guān)鍵問題之一。軟件系統(tǒng)也是如此,單個(gè)類或模塊只能完成有限的功能,而在系統(tǒng)范圍內(nèi),所有類或模塊協(xié)同交互才能完成用戶期望的功能。因此,軟件系統(tǒng)模塊間的關(guān)系和交互的復(fù)雜性也是判斷軟件結(jié)構(gòu)復(fù)雜性的重要因素[1]。由此可知復(fù)雜軟件系統(tǒng)的結(jié)構(gòu)不再是簡單的層次結(jié)構(gòu),模塊之間的復(fù)雜關(guān)系使軟件結(jié)構(gòu)呈現(xiàn)網(wǎng)絡(luò)化。
對(duì)于軟件網(wǎng)絡(luò)的抽象方式,研究人員從不同的層面均給予了不同的定義,例如節(jié)點(diǎn)可以是類、子程序、構(gòu)件和子系統(tǒng)等[2],邊可以是面向?qū)ο笤O(shè)計(jì)中的類間關(guān)系或包間關(guān)系等[3],也可以是面向過程設(shè)計(jì)中的函數(shù)間調(diào)用或子程序間調(diào)用等[4]。
2002年,Valverde[2]等人首先研究了軟件網(wǎng)絡(luò)。他們通過逆向工程方法從程序代碼得到系統(tǒng)的類圖,然后將系統(tǒng)的類圖作為研究對(duì)象,用網(wǎng)絡(luò)圖來表示軟件系統(tǒng),即網(wǎng)絡(luò)中的節(jié)點(diǎn)表示類,邊代表類之間的交互關(guān)系。這樣,抽象的軟件網(wǎng)絡(luò)可以用一個(gè)二元組來定義:
式中,Ws={si|i=1,2,…,N},表示由 N 個(gè)類 si組成的集合;Es={ei|i=1,2,…,N}是所有類之間關(guān)系 ei的集合。
這里將軟件系統(tǒng)理解為由多個(gè)模塊組成,通過模塊間相互協(xié)調(diào)、相互作用來實(shí)現(xiàn)系統(tǒng)的多種功能。軟件系統(tǒng)的可靠性分配就是以系統(tǒng)實(shí)用性為目標(biāo),在可靠性指標(biāo)下限和開發(fā)費(fèi)用為約束條件下,在設(shè)計(jì)階段明確各個(gè)模塊的可靠性指標(biāo)值,使系統(tǒng)在約束條件下實(shí)現(xiàn)實(shí)用性最大化[5]。
對(duì)用戶來說,系統(tǒng)的可靠性最直接的體現(xiàn)是在系統(tǒng)的實(shí)用性,且用戶對(duì)系統(tǒng)可用性的評(píng)價(jià)是基于對(duì)系統(tǒng)功能可靠性的評(píng)價(jià)。因此,這里以系統(tǒng)的實(shí)用性最大化為目標(biāo)。
設(shè)軟件可用性與軟件模塊以及這些模塊的可靠性為線性關(guān)系,可以定義可用性為:
其中,wmi為模塊i的全局重要度,rmi為模塊i的可靠性。
目標(biāo)函數(shù):
由式(2)可以看出,模塊 i的重要度越大,可靠性越高,則系統(tǒng)的實(shí)用性也越高。
(1)可靠性下限約束
設(shè)di為模塊i的可靠性下限值,稱為 “最低可接受的”可靠性水平[6],它可以由軟件工程師在軟件產(chǎn)品的計(jì)劃和設(shè)計(jì)階段確定,則:
一個(gè)模塊的售價(jià)vi是這樣決定的:設(shè)V表示用戶愿意為購買軟件產(chǎn)品而付的價(jià)錢(即產(chǎn)品的市場價(jià)格),在用戶對(duì)軟件產(chǎn)品的評(píng)價(jià)過程中,wmi為模塊i的重要度,于是模塊i的價(jià)格為[7]:
假定可靠性與費(fèi)用呈線性關(guān)系[8],αi表示對(duì)模塊i施加可靠性為 rmi時(shí)的一般開銷,βi為可調(diào)整的成本開銷,a等于1減去軟件開發(fā)者的利潤率,vi是模塊i的售價(jià)(為模塊i的設(shè)計(jì)完成成本),模塊i的實(shí)際成本一定不能超過它,即:
若C為有限的開發(fā)費(fèi)用,則各模塊可靠性成本的總和必須小于C,即:
綜合式(2)、(3)、(5)、(6),可建立軟件可靠性分配模型如下:
可靠性分配就是通過模型求解出rmi的值。對(duì)于模型中的參數(shù),本文重點(diǎn)探討如何確定模塊的重要度wmi。
ZAHEDI F和ASHRAFI N采用層次分析法AHP(Analytic Hierarchy Process)建立軟件系統(tǒng)的層次模型,而后進(jìn)行模塊重要度評(píng)估[9]。這里由于模塊間的相互作用關(guān)系,系統(tǒng)呈現(xiàn)網(wǎng)絡(luò)化的組織結(jié)構(gòu),已不能再用AHP方法,下面主要通過網(wǎng)絡(luò)分析法(ANP)對(duì)模塊重要度進(jìn)行評(píng)估。
網(wǎng)絡(luò)分析法 ANP(Analytic Network Process)的決策過程可以分為兩大類:一是在控制層的決策,由于控制層元素相互獨(dú)立,所以其決策過程與AHP方法相同;二是在網(wǎng)絡(luò)層的決策,由于網(wǎng)絡(luò)層元素間存在相互影響,其決策過程中引入了超矩陣的應(yīng)用和分析。
基于ANP求解問題的基本流程如圖1所示。
圖1 ANP的決策流程
作為系統(tǒng)功能需求的提出者,用戶最明白系統(tǒng)需要具備哪些功能;作為系統(tǒng)的設(shè)計(jì)者和開發(fā)者(程序員)最熟悉系統(tǒng)的整體結(jié)構(gòu),從而也最了解該由哪些模塊組成這些功能。因此,這里以軟件用戶的觀點(diǎn),劃分s項(xiàng)功能為 f1,f2,…,fs;然后以軟件程序員的觀點(diǎn)進(jìn)一步將功能劃分為 n個(gè)的模塊組 C1,C2,…,Cn,共 m 個(gè)模塊,每個(gè)功能可能調(diào)用多于一個(gè)模塊。
(1)控制層
控制層的目標(biāo)層是基于用戶觀點(diǎn)的,是用戶對(duì)軟件可靠性與可用性的總體評(píng)估??傮w評(píng)估是基于軟件屬性或功能,因此,控制層的決策準(zhǔn)則為軟件系統(tǒng)能夠提供給用戶的功能。
(2)網(wǎng)絡(luò)層
每個(gè)功能又是通過不同的模塊組合實(shí)現(xiàn)的。模塊之間不是簡單的相互獨(dú)立關(guān)系,而是存在反饋依存關(guān)系,形成網(wǎng)絡(luò)結(jié)構(gòu)。
軟件系統(tǒng)的ANP結(jié)構(gòu)如圖2所示。
圖2 軟件系統(tǒng)的ANP結(jié)構(gòu)
結(jié)合軟件系統(tǒng)的ANP網(wǎng)絡(luò)模型,在控制層主要由用戶對(duì)各項(xiàng)功能對(duì)系統(tǒng)的重要程度作比較評(píng)估;在網(wǎng)絡(luò)層主要由程序員對(duì)各個(gè)模塊對(duì)各項(xiàng)功能的重要程度作比較評(píng)估。
3.3.1 功能重要度指標(biāo)WF
軟件用戶通過比較兩項(xiàng)功能重要度,按照“1-9”標(biāo)度規(guī)則,構(gòu)造判斷矩陣AF。計(jì)算矩陣AF的最大特征值λmax對(duì)應(yīng)的特征向量WF,計(jì)算一致性指標(biāo):
一般情況下當(dāng)C.I≤0.1時(shí),認(rèn)為判斷矩陣可以接受,否則需要調(diào)整判斷矩陣。
3.3.2 模塊局部重要度指標(biāo)WMfi
傳統(tǒng)ANP方法在構(gòu)造判斷矩陣時(shí)都有兩個(gè)評(píng)估準(zhǔn)則,在元素兩兩比較時(shí)需要在某目標(biāo)準(zhǔn)則條件下,先比較兩元素i、j相對(duì)于該準(zhǔn)則下的第三個(gè)元素 (稱為次準(zhǔn)則)的重要程度 wi與 wj,然后再通過 wi/wj得到元素 i與元素j重要度比值[10]。這種通過兩步比較的方法不是很直觀,容易混亂決策者的思維,產(chǎn)生錯(cuò)誤。相對(duì)來說一步直接比較是比較直觀且較容易被理解。
下面主要介紹一種利用一步直接比較來構(gòu)造網(wǎng)絡(luò)層的超矩陣。
(1)構(gòu)造模塊間判斷矩陣。這里將判斷矩陣分為兩種:一是以控制層功能fi為單一準(zhǔn)則的判斷矩陣;二是以網(wǎng)絡(luò)層模塊組Cj中元素為單一準(zhǔn)則的判斷矩陣,并計(jì)算出排序向量矩陣。
(2)構(gòu)造超矩陣。將所有網(wǎng)絡(luò)層元素的排序向量矩陣組合,由此得到控制層功能fi下的超矩陣,記為W。
(3)構(gòu)造模塊組權(quán)矩陣。同樣,這里將元素組間判斷矩陣分為兩種:一是以控制層功能fi為單一準(zhǔn)則的判斷矩陣;二是以網(wǎng)絡(luò)層模塊組Cj為單一準(zhǔn)則的判斷矩陣,對(duì)應(yīng)得到兩個(gè)矩陣Afi和ACj,此時(shí)元素組權(quán)矩陣可表示為:
最后將模塊組權(quán)矩陣A與超矩陣W相乘,得到加權(quán)超矩陣W。
(4)超矩陣運(yùn)算。參考文獻(xiàn)[11]運(yùn)用矩陣分析的方法,根據(jù)可約性和最大特征根的重?cái)?shù)對(duì)超矩陣進(jìn)行分類,得到了6種類型的超矩陣和相應(yīng)的4種計(jì)算方法,這里不再贅述。
由于超矩陣的計(jì)算過程復(fù)雜,一般要使用輔助工具計(jì)算,因此,本文使用ANP決策軟件Super Decision進(jìn)行計(jì)算,以獲得模塊局部重要度指標(biāo)WMfi。
3.3.3 求解模塊全局重要度指標(biāo)WM
由 WM=(WMf1,WMf2, …,WMfs)·WF 可得模塊全局重要度指標(biāo)WM。
本文以某一工廠實(shí)力信息管理系統(tǒng)為例,對(duì)上述方法進(jìn)一步說明和驗(yàn)證。該軟件系統(tǒng)功能結(jié)構(gòu)如圖3所示。
圖3 工廠實(shí)力信息管理系統(tǒng)功能結(jié)構(gòu)
系統(tǒng)要求各模塊的可靠度不低于0.9,軟件開發(fā)的投資為495 000元,利潤率為50%,則有:a=0.5,C=495 000。
其中,C13數(shù)據(jù)修改調(diào)用 C11數(shù)據(jù)錄入;C21數(shù)據(jù)統(tǒng)計(jì)調(diào)用C14數(shù)據(jù)查詢;C22數(shù)據(jù)匯總調(diào)用C21數(shù)據(jù)統(tǒng)計(jì)和C12數(shù)據(jù)導(dǎo)入;C32報(bào)表生成調(diào)用 C21數(shù)據(jù)統(tǒng)計(jì)和 C22數(shù)據(jù)匯總;C33數(shù)據(jù)打印調(diào)用C21數(shù)據(jù)統(tǒng)計(jì)、C22數(shù)據(jù)匯總以及C32報(bào)表生成;C42計(jì)劃生成調(diào)用 C21數(shù)據(jù)統(tǒng)計(jì)、C22數(shù)據(jù)匯總和C41數(shù)據(jù)分析。由此,可得該軟件系統(tǒng)基于ANP的網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖4 工廠實(shí)力信息系統(tǒng)基于ANP的網(wǎng)絡(luò)結(jié)構(gòu)
(1)采用問卷調(diào)查的形式收集用戶的評(píng)估意見,根據(jù)第3.3.1節(jié),得:
WF=(0.335 4,0.304 9,0.246 3,0.113 4)T
(2)同樣,也采用問卷調(diào)查的形式收集程序員評(píng)估意見,而后分別用傳統(tǒng)的ANP方法和改進(jìn)型ANP方法進(jìn)行超矩陣的構(gòu)造,最后用Super Decision軟件進(jìn)行輔助決策,得到結(jié)果如表1所示。
表1 模塊重要度評(píng)估表
從表中的結(jié)果可知,傳統(tǒng)ANP與改進(jìn)型ANP所得到的評(píng)估結(jié)果基本一致,但是在超矩陣的構(gòu)造過程中改進(jìn)型ANP的計(jì)算量明顯要低于傳統(tǒng)的ANP。
設(shè)軟件產(chǎn)品的售價(jià)為 1 000 000元,應(yīng)用式(4)可計(jì)算出(以下計(jì)算均取單位1 000元):
(v1v2v3v4v5v6v7v8v9v10v11)=(38.56 63.15 14.30 101.35 88.55 75.54 19.65 23.45 15.55 39.35 20.45)
本文?。?/p>
將上述求得的參數(shù)代入可靠性分配模型中,得:
通過求解上述模型,可以得出此軟件系統(tǒng)的可靠性分配的目標(biāo)值為:
U=0.961 3,即為約束條件下可得到的最大軟件實(shí)用性。從結(jié)果中可知,可靠性指標(biāo)較高的模塊為:C11、C12、C14、C21、C22、C32。 因此, 在軟件系統(tǒng)的開發(fā)過程需要投入較大人力物力以保證其完成的質(zhì)量,才能最終滿足用戶對(duì)軟件實(shí)用性的要求。
目前軟件可靠性分配研究中,對(duì)于具有網(wǎng)絡(luò)結(jié)構(gòu)的軟件可靠性分配討論比較少。本文首先對(duì)軟件的網(wǎng)絡(luò)結(jié)構(gòu)的存在性、普遍性進(jìn)行了說明;然后結(jié)合ANP理論討論了具有網(wǎng)絡(luò)結(jié)構(gòu)的軟件可靠性分配方法,并對(duì)傳統(tǒng)的ANP方法進(jìn)行了改進(jìn);最后將該方法應(yīng)用于案例中進(jìn)行驗(yàn)證,得出如下結(jié)論:(1)在ANP結(jié)構(gòu)中,沒有依賴與影響關(guān)系的限制,能更準(zhǔn)確地描述軟件系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu);(2)在 ANP決策中,綜合了用戶和程序員的觀點(diǎn),降低了決策者單方面的主觀因素的影響;(3)通過改進(jìn)ANP中超矩陣的構(gòu)造,方法更加清晰、直觀、容易理解,且在一定程度上減少了計(jì)算量;(4)ANP方法能夠有效地解決網(wǎng)絡(luò)結(jié)構(gòu)的軟件系統(tǒng)可靠性分配問題。
[1]何克清,馬于濤,劉婿,等.軟件網(wǎng)絡(luò)[M].北京:科學(xué)出版社,2008.
[2]VALVERDE S, CANEHO R, SOLE R.Seale free networks from optimal design[J].EuroPhysics Letters,2002,60 (4):512-517.
[3]SOLE R V,VALVERDE S.Information theory of complex networks: on evolution architectural constraints[J].Lect Notes Physical, 2004, 65(1):189-207.
[4]MYERS C R.Software systems as complex networks:Structure, function, and resolvability of software collaboration graphs[J].Physical Review E, 2003, 68(4): 046-116.
[5]徐仁佐.軟件可靠性工程[M].北京.清華大學(xué)出版社,2007.
[6]左云霞.基于遺傳算法與AHP的軟件可靠性分配方法[D].西安:西北工業(yè)大學(xué),2007:13-18.
[7]徐仁佐,向劍文,肖英柏.面向多用戶軟件系統(tǒng)的可靠性分配的故障樹分析法 [J].小型微型計(jì)算機(jī)系統(tǒng),2001,22(3):329-332.
[8]MARY E H, MING Z, OHLSSON N.Planning models for software reliability and cost[J].IEEE Transaction on Software Engineering,1998,24(6):420-434.
[9]ZAHEDI F.ASHRAFI N.Software reliability allocation based on structure, utility, price and cost[J].IEEE Transaction Software Engineering, 1991, 17(4):345-356.
[10]SAATY T L,VARGAS L G.Decision making with the analytic network Process[M].Springer Science Business Media, LLC, 2006.
[11]吳志彬,陳義華.ANP中超矩陣排序算法研究[D].中國控制與決策學(xué)術(shù)年會(huì)論文集,2006:1235-1242.