摘 要: 針對(duì)網(wǎng)絡(luò)結(jié)構(gòu)的軟件系統(tǒng),通過(guò)構(gòu)造軟件系統(tǒng)的ANP結(jié)構(gòu),結(jié)合用戶和程序員的觀點(diǎn),對(duì)超矩陣的構(gòu)造進(jìn)行了改進(jìn),提出基于改進(jìn)型ANP的模塊重要度評(píng)估方法。以軟件實(shí)用性最大化為目標(biāo)函數(shù)、以可靠性下限和開(kāi)發(fā)費(fèi)用為約束條件,建立了可靠性分配模型。并以某工廠實(shí)力信息管理系統(tǒng)為例,對(duì)算法進(jìn)行了驗(yàn)證。
關(guān)鍵詞: 軟件網(wǎng)絡(luò);可靠性分配;ANP;超矩陣
軟件結(jié)構(gòu)描述了軟件實(shí)體元素方法、屬性、類、包以及它們之間的相互關(guān)系,在很大程度上直接影響著軟件的功能、性能、安全性及可靠性等指標(biāo)。因此,在進(jìn)行軟件可靠性分配前,對(duì)軟件系統(tǒng)結(jié)構(gòu)進(jìn)行分析是非常有必要的。
目前,在軟件可靠性分配的研究中往往是基于軟件系統(tǒng)中模塊間相互獨(dú)立、沒(méi)有交互的假設(shè)上。然而現(xiàn)實(shí)情況并非如此,由于要處理繁雜的事務(wù),現(xiàn)在的軟件系統(tǒng)通常都很復(fù)雜,由許多互相作用的模塊構(gòu)成。近年來(lái),一些研究者對(duì)大量面向?qū)ο筌浖到y(tǒng)的類圖進(jìn)行了研究,發(fā)現(xiàn)軟件系統(tǒng)的結(jié)構(gòu)大多數(shù)都展現(xiàn)出“小世界”和“無(wú)尺度”等復(fù)雜網(wǎng)絡(luò)特性[1]。對(duì)于這類軟件的可靠性分配問(wèn)題,可以用網(wǎng)絡(luò)分析法(ANP)進(jìn)行探討。
1 軟件網(wǎng)絡(luò)觀
1.1 軟件的復(fù)雜性
軟件系統(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)鍵問(wè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ǎn)單的層次結(jié)構(gòu),模塊之間的復(fù)雜關(guān)系使軟件結(jié)構(gòu)呈現(xiàn)網(wǎng)絡(luò)化。
1.2 軟件的網(wǎng)絡(luò)結(jié)構(gòu)
對(duì)于軟件網(wǎng)絡(luò)的抽象方式,研究人員從不同的層面均給予了不同的定義,例如節(jié)點(diǎn)可以是類、子程序、構(gòu)件和子系統(tǒng)等[2],邊可以是面向?qū)ο笤O(shè)計(jì)中的類間關(guān)系或包間關(guān)系等[3],也可以是面向過(guò)程設(shè)計(jì)中的函數(shù)間調(diào)用或子程序間調(diào)用等[4]。
2002年,Valverde[2]等人首先研究了軟件網(wǎng)絡(luò)。他們通過(guò)逆向工程方法從程序代碼得到系統(tǒng)的類圖,然后將系統(tǒng)的類圖作為研究對(duì)象,用網(wǎng)絡(luò)圖來(lái)表示軟件系統(tǒng),即網(wǎng)絡(luò)中的節(jié)點(diǎn)表示類,邊代表類之間的交互關(guān)系。這樣,抽象的軟件網(wǎng)絡(luò)可以用一個(gè)二元組來(lái)定義:
假定可靠性與費(fèi)用呈線性關(guān)系[8],αi表示對(duì)模塊i施加可靠性為rmi時(shí)的一般開(kāi)銷,βi為可調(diào)整的成本開(kāi)銷,a等于1減去軟件開(kāi)發(fā)者的利潤(rùn)率,vi是模塊i的售價(jià)(為模塊i的設(shè)計(jì)完成成本),模塊i的實(shí)際成本一定不能超過(guò)它,即:
3.2 軟件系統(tǒng)的ANP結(jié)構(gòu)[10]
作為系統(tǒng)功能需求的提出者,用戶最明白系統(tǒng)需要具備哪些功能;作為系統(tǒng)的設(shè)計(jì)者和開(kāi)發(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è)模塊。
?。?)控制層
控制層的目標(biāo)層是基于用戶觀點(diǎn)的,是用戶對(duì)軟件可靠性與可用性的總體評(píng)估??傮w評(píng)估是基于軟件屬性或功能,因此,控制層的決策準(zhǔn)則為軟件系統(tǒng)能夠提供給用戶的功能。
?。?)網(wǎng)絡(luò)層
每個(gè)功能又是通過(guò)不同的模塊組合實(shí)現(xiàn)的。模塊之間不是簡(jiǎn)單的相互獨(dú)立關(guān)系,而是存在反饋依存關(guān)系,形成網(wǎng)絡(luò)結(jié)構(gòu)。
軟件系統(tǒng)的ANP結(jié)構(gòu)如圖2所示。
一般情況下當(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,然后再通過(guò)wi/wj得到元素i與元素j重要度比值[10]。這種通過(guò)兩步比較的方法不是很直觀,容易混亂決策者的思維,產(chǎn)生錯(cuò)誤。相對(duì)來(lái)說(shuō)一步直接比較是比較直觀且較容易被理解。
下面主要介紹一種利用一步直接比較來(lái)構(gòu)造網(wǎng)絡(luò)層的超矩陣。
?。?)構(gòu)造模塊間判斷矩陣。這里將判斷矩陣分為兩種:一是以控制層功能fi為單一準(zhǔn)則的判斷矩陣;二是以網(wǎng)絡(luò)層模塊組Cj中元素為單一準(zhǔn)則的判斷矩陣,并計(jì)算出排序向量矩陣。
?。?)構(gòu)造超矩陣。將所有網(wǎng)絡(luò)層元素的排序向量矩陣組合,由此得到控制層功能fi下的超矩陣,記為W。
4 案例
本文以某一工廠實(shí)力信息管理系統(tǒng)為例,對(duì)上述方法進(jìn)一步說(shuō)明和驗(yàn)證。該軟件系統(tǒng)功能結(jié)構(gòu)如圖3所示。
系統(tǒng)要求各模塊的可靠度不低于0.9,軟件開(kāi)發(fā)的投資為495 000元,利潤(rùn)率為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所示。
通過(guò)求解上述模型,可以得出此軟件系統(tǒng)的可靠性分配的目標(biāo)值為:
RM=(0.982 0.963 0.900 0.976 0.984 0.978 0.900 0.963 0.900 0.931 0.900)
U=0.961 3,即為約束條件下可得到的最大軟件實(shí)用性。從結(jié)果中可知,可靠性指標(biāo)較高的模塊為:C11、C12、C14、C21、C22、C32。因此,在軟件系統(tǒng)的開(kāi)發(fā)過(guò)程需要投入較大人力物力以保證其完成的質(zhì)量,才能最終滿足用戶對(duì)軟件實(shí)用性的要求。
目前軟件可靠性分配研究中,對(duì)于具有網(wǎng)絡(luò)結(jié)構(gòu)的軟件可靠性分配討論比較少。本文首先對(duì)軟件的網(wǎng)絡(luò)結(jié)構(gòu)的存在性、普遍性進(jìn)行了說(shuō)明;然后結(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)中,沒(méi)有依賴與影響關(guān)系的限制,能更準(zhǔn)確地描述軟件系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu);(2)在ANP決策中,綜合了用戶和程序員的觀點(diǎn),降低了決策者單方面的主觀因素的影響;(3)通過(guò)改進(jìn)ANP中超矩陣的構(gòu)造,方法更加清晰、直觀、容易理解,且在一定程度上減少了計(jì)算量;(4)ANP方法能夠有效地解決網(wǎng)絡(luò)結(jié)構(gòu)的軟件系統(tǒng)可靠性分配問(wèn)題。
參考文獻(xiàn)
[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)的可靠性分配的故障樹(shù)分析法[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].中國(guó)控制與決策學(xué)術(shù)年會(huì)論文集,2006:1235-1242.