楊宏偉,王煥坤,李慶全
(裝甲兵工程學院 技術保障工程系,北京 100072)
軟件結構描述了軟件實體元素方法、屬性、類、包以及它們之間的相互關系,在很大程度上直接影響著軟件的功能、性能、安全性及可靠性等指標。因此,在進行軟件可靠性分配前,對軟件系統結構進行分析是非常有必要的。
目前,在軟件可靠性分配的研究中往往是基于軟件系統中模塊間相互獨立、沒有交互的假設上。然而現實情況并非如此,由于要處理繁雜的事務,現在的軟件系統通常都很復雜,由許多互相作用的模塊構成。近年來,一些研究者對大量面向對象軟件系統的類圖進行了研究,發現軟件系統的結構大多數都展現出 “小世界”和“無尺度”等復雜網絡特性[1]。對于這類軟件的可靠性分配問題,可以用網絡分析法(ANP)進行探討。
軟件系統復雜性的完整定義應當包括軟件的內部結構和外部特性兩個方面,其中內部結構反映軟件的靜態復雜性,而外部特性則反映軟件的動態復雜性。本文主要討論軟件內部結構的復雜性。
復雜系統不一定要有很大的規模,因為引起系統復雜行為的主要原因并不是元件的數量,而是元件之間的交互。所以元件之間的交互方式對復雜系統的特性及行為的影響是一個不可忽視的方面,也是復雜系統研究的關鍵問題之一。軟件系統也是如此,單個類或模塊只能完成有限的功能,而在系統范圍內,所有類或模塊協同交互才能完成用戶期望的功能。因此,軟件系統模塊間的關系和交互的復雜性也是判斷軟件結構復雜性的重要因素[1]。由此可知復雜軟件系統的結構不再是簡單的層次結構,模塊之間的復雜關系使軟件結構呈現網絡化。
對于軟件網絡的抽象方式,研究人員從不同的層面均給予了不同的定義,例如節點可以是類、子程序、構件和子系統等[2],邊可以是面向對象設計中的類間關系或包間關系等[3],也可以是面向過程設計中的函數間調用或子程序間調用等[4]。
2002年,Valverde[2]等人首先研究了軟件網絡。他們通過逆向工程方法從程序代碼得到系統的類圖,然后將系統的類圖作為研究對象,用網絡圖來表示軟件系統,即網絡中的節點表示類,邊代表類之間的交互關系。這樣,抽象的軟件網絡可以用一個二元組來定義:

式中,Ws={si|i=1,2,…,N},表示由 N 個類 si組成的集合;Es={ei|i=1,2,…,N}是所有類之間關系 ei的集合。
這里將軟件系統理解為由多個模塊組成,通過模塊間相互協調、相互作用來實現系統的多種功能。軟件系統的可靠性分配就是以系統實用性為目標,在可靠性指標下限和開發費用為約束條件下,在設計階段明確各個模塊的可靠性指標值,使系統在約束條件下實現實用性最大化[5]。
對用戶來說,系統的可靠性最直接的體現是在系統的實用性,且用戶對系統可用性的評價是基于對系統功能可靠性的評價。因此,這里以系統的實用性最大化為目標。
設軟件可用性與軟件模塊以及這些模塊的可靠性為線性關系,可以定義可用性為:

其中,wmi為模塊i的全局重要度,rmi為模塊i的可靠性。
目標函數:

由式(2)可以看出,模塊 i的重要度越大,可靠性越高,則系統的實用性也越高。
(1)可靠性下限約束
設di為模塊i的可靠性下限值,稱為 “最低可接受的”可靠性水平[6],它可以由軟件工程師在軟件產品的計劃和設計階段確定,則:

一個模塊的售價vi是這樣決定的:設V表示用戶愿意為購買軟件產品而付的價錢(即產品的市場價格),在用戶對軟件產品的評價過程中,wmi為模塊i的重要度,于是模塊i的價格為[7]:

假定可靠性與費用呈線性關系[8],αi表示對模塊i施加可靠性為 rmi時的一般開銷,βi為可調整的成本開銷,a等于1減去軟件開發者的利潤率,vi是模塊i的售價(為模塊i的設計完成成本),模塊i的實際成本一定不能超過它,即:

若C為有限的開發費用,則各模塊可靠性成本的總和必須小于C,即:

綜合式(2)、(3)、(5)、(6),可建立軟件可靠性分配模型如下:

可靠性分配就是通過模型求解出rmi的值。對于模型中的參數,本文重點探討如何確定模塊的重要度wmi。
ZAHEDI F和ASHRAFI N采用層次分析法AHP(Analytic Hierarchy Process)建立軟件系統的層次模型,而后進行模塊重要度評估[9]。這里由于模塊間的相互作用關系,系統呈現網絡化的組織結構,已不能再用AHP方法,下面主要通過網絡分析法(ANP)對模塊重要度進行評估。
網絡分析法 ANP(Analytic Network Process)的決策過程可以分為兩大類:一是在控制層的決策,由于控制層元素相互獨立,所以其決策過程與AHP方法相同;二是在網絡層的決策,由于網絡層元素間存在相互影響,其決策過程中引入了超矩陣的應用和分析。
基于ANP求解問題的基本流程如圖1所示。

圖1 ANP的決策流程
作為系統功能需求的提出者,用戶最明白系統需要具備哪些功能;作為系統的設計者和開發者(程序員)最熟悉系統的整體結構,從而也最了解該由哪些模塊組成這些功能。因此,這里以軟件用戶的觀點,劃分s項功能為 f1,f2,…,fs;然后以軟件程序員的觀點進一步將功能劃分為 n個的模塊組 C1,C2,…,Cn,共 m 個模塊,每個功能可能調用多于一個模塊。
(1)控制層
控制層的目標層是基于用戶觀點的,是用戶對軟件可靠性與可用性的總體評估。總體評估是基于軟件屬性或功能,因此,控制層的決策準則為軟件系統能夠提供給用戶的功能。
(2)網絡層
每個功能又是通過不同的模塊組合實現的。模塊之間不是簡單的相互獨立關系,而是存在反饋依存關系,形成網絡結構。
軟件系統的ANP結構如圖2所示。

圖2 軟件系統的ANP結構
結合軟件系統的ANP網絡模型,在控制層主要由用戶對各項功能對系統的重要程度作比較評估;在網絡層主要由程序員對各個模塊對各項功能的重要程度作比較評估。
3.3.1 功能重要度指標WF
軟件用戶通過比較兩項功能重要度,按照“1-9”標度規則,構造判斷矩陣AF。計算矩陣AF的最大特征值λmax對應的特征向量WF,計算一致性指標:

一般情況下當C.I≤0.1時,認為判斷矩陣可以接受,否則需要調整判斷矩陣。
3.3.2 模塊局部重要度指標WMfi
傳統ANP方法在構造判斷矩陣時都有兩個評估準則,在元素兩兩比較時需要在某目標準則條件下,先比較兩元素i、j相對于該準則下的第三個元素 (稱為次準則)的重要程度 wi與 wj,然后再通過 wi/wj得到元素 i與元素j重要度比值[10]。這種通過兩步比較的方法不是很直觀,容易混亂決策者的思維,產生錯誤。相對來說一步直接比較是比較直觀且較容易被理解。
下面主要介紹一種利用一步直接比較來構造網絡層的超矩陣。
(1)構造模塊間判斷矩陣。這里將判斷矩陣分為兩種:一是以控制層功能fi為單一準則的判斷矩陣;二是以網絡層模塊組Cj中元素為單一準則的判斷矩陣,并計算出排序向量矩陣。
(2)構造超矩陣。將所有網絡層元素的排序向量矩陣組合,由此得到控制層功能fi下的超矩陣,記為W。

(3)構造模塊組權矩陣。同樣,這里將元素組間判斷矩陣分為兩種:一是以控制層功能fi為單一準則的判斷矩陣;二是以網絡層模塊組Cj為單一準則的判斷矩陣,對應得到兩個矩陣Afi和ACj,此時元素組權矩陣可表示為:

最后將模塊組權矩陣A與超矩陣W相乘,得到加權超矩陣W。
(4)超矩陣運算。參考文獻[11]運用矩陣分析的方法,根據可約性和最大特征根的重數對超矩陣進行分類,得到了6種類型的超矩陣和相應的4種計算方法,這里不再贅述。
由于超矩陣的計算過程復雜,一般要使用輔助工具計算,因此,本文使用ANP決策軟件Super Decision進行計算,以獲得模塊局部重要度指標WMfi。
3.3.3 求解模塊全局重要度指標WM
由 WM=(WMf1,WMf2, …,WMfs)·WF 可得模塊全局重要度指標WM。
本文以某一工廠實力信息管理系統為例,對上述方法進一步說明和驗證。該軟件系統功能結構如圖3所示。

圖3 工廠實力信息管理系統功能結構
系統要求各模塊的可靠度不低于0.9,軟件開發的投資為495 000元,利潤率為50%,則有:a=0.5,C=495 000。
其中,C13數據修改調用 C11數據錄入;C21數據統計調用C14數據查詢;C22數據匯總調用C21數據統計和C12數據導入;C32報表生成調用 C21數據統計和 C22數據匯總;C33數據打印調用C21數據統計、C22數據匯總以及C32報表生成;C42計劃生成調用 C21數據統計、C22數據匯總和C41數據分析。由此,可得該軟件系統基于ANP的網絡結構如圖4所示。

圖4 工廠實力信息系統基于ANP的網絡結構
(1)采用問卷調查的形式收集用戶的評估意見,根據第3.3.1節,得:
WF=(0.335 4,0.304 9,0.246 3,0.113 4)T
(2)同樣,也采用問卷調查的形式收集程序員評估意見,而后分別用傳統的ANP方法和改進型ANP方法進行超矩陣的構造,最后用Super Decision軟件進行輔助決策,得到結果如表1所示。

表1 模塊重要度評估表
從表中的結果可知,傳統ANP與改進型ANP所得到的評估結果基本一致,但是在超矩陣的構造過程中改進型ANP的計算量明顯要低于傳統的ANP。
設軟件產品的售價為 1 000 000元,應用式(4)可計算出(以下計算均取單位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)
本文取:

將上述求得的參數代入可靠性分配模型中,得:

通過求解上述模型,可以得出此軟件系統的可靠性分配的目標值為:

U=0.961 3,即為約束條件下可得到的最大軟件實用性。從結果中可知,可靠性指標較高的模塊為:C11、C12、C14、C21、C22、C32。 因此, 在軟件系統的開發過程需要投入較大人力物力以保證其完成的質量,才能最終滿足用戶對軟件實用性的要求。
目前軟件可靠性分配研究中,對于具有網絡結構的軟件可靠性分配討論比較少。本文首先對軟件的網絡結構的存在性、普遍性進行了說明;然后結合ANP理論討論了具有網絡結構的軟件可靠性分配方法,并對傳統的ANP方法進行了改進;最后將該方法應用于案例中進行驗證,得出如下結論:(1)在ANP結構中,沒有依賴與影響關系的限制,能更準確地描述軟件系統網絡結構;(2)在 ANP決策中,綜合了用戶和程序員的觀點,降低了決策者單方面的主觀因素的影響;(3)通過改進ANP中超矩陣的構造,方法更加清晰、直觀、容易理解,且在一定程度上減少了計算量;(4)ANP方法能夠有效地解決網絡結構的軟件系統可靠性分配問題。
[1]何克清,馬于濤,劉婿,等.軟件網絡[M].北京:科學出版社,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].北京.清華大學出版社,2007.
[6]左云霞.基于遺傳算法與AHP的軟件可靠性分配方法[D].西安:西北工業大學,2007:13-18.
[7]徐仁佐,向劍文,肖英柏.面向多用戶軟件系統的可靠性分配的故障樹分析法 [J].小型微型計算機系統,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].中國控制與決策學術年會論文集,2006:1235-1242.