摘 要:復(fù)雜軟件結(jié)構(gòu)可以看作是一個(gè)有向網(wǎng)絡(luò)圖,該有向網(wǎng)絡(luò)圖的網(wǎng)絡(luò)結(jié)點(diǎn)為軟件系統(tǒng)的某種粒度單元,比如包、類(lèi)、組件等都可以稱(chēng)為網(wǎng)絡(luò)結(jié)點(diǎn),他們之間的依賴(lài)關(guān)系就構(gòu)成了整個(gè)軟件網(wǎng)絡(luò)。本文對(duì)軟件網(wǎng)絡(luò)做了簡(jiǎn)要介紹,研究和分析了軟件依賴(lài)關(guān)系及其統(tǒng)計(jì)特性,并對(duì)網(wǎng)絡(luò)結(jié)點(diǎn)在復(fù)雜軟件中的影響進(jìn)行了分析,最后提出了軟件網(wǎng)絡(luò)關(guān)鍵結(jié)點(diǎn)這一概念。
關(guān)鍵詞:復(fù)雜軟件系統(tǒng);軟件網(wǎng)絡(luò)結(jié)點(diǎn);軟件結(jié)構(gòu)
中圖分類(lèi)號(hào):TP311.52
1 軟件網(wǎng)絡(luò)結(jié)構(gòu)
軟件體系結(jié)構(gòu)的好壞直接影響著軟件的質(zhì)量,關(guān)于軟件體系結(jié)構(gòu)的研究一直備受人們的重視。隨著軟件實(shí)現(xiàn)的功能越來(lái)越強(qiáng)大,復(fù)雜度越來(lái)越高,軟件結(jié)構(gòu)出現(xiàn)了多層次、不同粒度的方式[1]。復(fù)雜軟件的網(wǎng)絡(luò)結(jié)構(gòu)思想是基于圖論中有向網(wǎng)絡(luò)圖的概念發(fā)展而來(lái)的,應(yīng)用統(tǒng)計(jì)學(xué)的方法對(duì)軟件網(wǎng)絡(luò)各個(gè)特性進(jìn)行研究,如幾何性質(zhì)、結(jié)構(gòu)穩(wěn)定學(xué)等。網(wǎng)絡(luò)結(jié)點(diǎn)對(duì)復(fù)雜軟件有著一定的影響,對(duì)結(jié)點(diǎn)影響的分析可以促進(jìn)對(duì)軟件體系結(jié)構(gòu)的完善。
對(duì)于任一軟件系統(tǒng)S,我們用一個(gè)三元組來(lái)表示S的網(wǎng)絡(luò)拓?fù)錂C(jī)構(gòu),軟件系統(tǒng)S的網(wǎng)絡(luò)結(jié)構(gòu)包括頂點(diǎn)集V、邊集E以及邊與頂點(diǎn)的關(guān)系集合f,這三個(gè)元素構(gòu)成了網(wǎng)絡(luò)拓?fù)涞娜MG=
V(G)=﹛vi|vi∈S,i=1,…,n,n≥1﹜,E(G)=﹛ej|ej∈S,j=1,…,m,m≥1﹜。
通常把類(lèi)看作是軟件網(wǎng)絡(luò)中的網(wǎng)絡(luò)結(jié)點(diǎn),類(lèi)是主要研究對(duì)象,類(lèi)與類(lèi)之間的關(guān)系看成連接結(jié)點(diǎn)的有權(quán)邊,這樣就得到了軟件結(jié)構(gòu)網(wǎng)絡(luò)拓?fù)鋱D[2],我們用下圖表示軟件靜態(tài)結(jié)構(gòu)與其對(duì)應(yīng)的網(wǎng)絡(luò)拓?fù)鋱D,使用類(lèi)作為有向網(wǎng)絡(luò)圖中的網(wǎng)絡(luò)結(jié)點(diǎn),圖中共有4個(gè)網(wǎng)絡(luò)結(jié)點(diǎn)。
(a)UML類(lèi)關(guān)系協(xié)作圖 (b)網(wǎng)絡(luò)拓?fù)鋱D
圖1 靜態(tài)類(lèi)圖與其網(wǎng)絡(luò)拓?fù)鋱D
2 軟件系統(tǒng)中的依賴(lài)關(guān)系
圖1描述的軟件網(wǎng)絡(luò)是一個(gè)全連通的有向網(wǎng)絡(luò)圖,我們以類(lèi)為單元抽取軟件系統(tǒng)中的網(wǎng)絡(luò)結(jié)點(diǎn)A,B,C,如圖2所示,A,B,C之間存在明顯的依賴(lài)關(guān)系,根據(jù)圖2可以看出,A與C是連通的,C的缺陷可以通過(guò)方法f()傳遞給B的方法d(),C的缺陷不能傳遞到A,圖2這種表示方式不能夠?qū)Y(jié)點(diǎn)的依賴(lài)關(guān)系進(jìn)行準(zhǔn)確的描述,所以需要找到一個(gè)更合適的描述方法對(duì)軟件結(jié)構(gòu)中網(wǎng)絡(luò)結(jié)點(diǎn)的依賴(lài)關(guān)系進(jìn)行真實(shí)準(zhǔn)確的反映,如果結(jié)點(diǎn)B僅僅依賴(lài)C中的方法f(),這種關(guān)系我們使用加權(quán)值來(lái)表示,也就是使用加權(quán)軟件網(wǎng)絡(luò)來(lái)描述各結(jié)點(diǎn)的依賴(lài)關(guān)系[3]。
圖2 軟件依賴(lài)關(guān)系示意圖
3 加權(quán)網(wǎng)絡(luò)的統(tǒng)計(jì)特性及網(wǎng)絡(luò)結(jié)點(diǎn)影響分析
對(duì)復(fù)雜軟件的加權(quán)網(wǎng)絡(luò)模型的研究具有重要意義,本文根據(jù)加權(quán)網(wǎng)絡(luò)的統(tǒng)計(jì)特性,對(duì)結(jié)點(diǎn)強(qiáng)度和結(jié)點(diǎn)強(qiáng)度分布進(jìn)行了分析研究,并進(jìn)一步對(duì)結(jié)點(diǎn)影響進(jìn)行了分析,提出了關(guān)鍵結(jié)點(diǎn)的概念。
3.1 結(jié)點(diǎn)強(qiáng)度及結(jié)點(diǎn)影響分析
根據(jù)圖論中關(guān)于有向加權(quán)圖的概念可以得知,軟件網(wǎng)絡(luò)機(jī)構(gòu)中每個(gè)網(wǎng)絡(luò)結(jié)點(diǎn)的度都可以分為入度和出度,在對(duì)加權(quán)軟件網(wǎng)絡(luò)進(jìn)行描述時(shí),我們使用結(jié)點(diǎn)度ki與結(jié)點(diǎn)強(qiáng)度Si這兩個(gè)參數(shù)共同描述。將結(jié)點(diǎn)強(qiáng)度Si定義為 ,其中wij為i到j(luò)的權(quán)值,Ni為結(jié)點(diǎn)i的鄰接點(diǎn)集合。在加權(quán)軟件網(wǎng)絡(luò)中,入度表示結(jié)點(diǎn)被相鄰點(diǎn)的依賴(lài),而出度表示結(jié)點(diǎn)對(duì)相鄰點(diǎn)的依賴(lài),在結(jié)點(diǎn)強(qiáng)度中,邊的權(quán)值是很重要的因素,結(jié)點(diǎn)強(qiáng)度綜合了入度與出度以及相應(yīng)邊的權(quán)值,結(jié)點(diǎn)強(qiáng)度又可以分為入點(diǎn)強(qiáng)度和出點(diǎn)強(qiáng)度。入點(diǎn)強(qiáng)度越大,則此結(jié)點(diǎn)對(duì)其余與其連通的結(jié)點(diǎn)的影響也就越大,隨著而來(lái)的是結(jié)點(diǎn)的缺陷以及缺陷傳播到與其連通的結(jié)點(diǎn)的概率也變大;出點(diǎn)強(qiáng)度越大,對(duì)與其連通的結(jié)點(diǎn)的依賴(lài)程度也就越大,積累與其連通的結(jié)點(diǎn)缺陷的概率也就變大。
3.2 結(jié)點(diǎn)強(qiáng)度分布及結(jié)點(diǎn)影響分析
復(fù)雜軟件系統(tǒng)中軟件網(wǎng)絡(luò)的每個(gè)結(jié)點(diǎn)的結(jié)點(diǎn)強(qiáng)度可以構(gòu)成一個(gè)結(jié)點(diǎn)強(qiáng)度分布,將其用P(n)表示,P(n)可以描述某一結(jié)點(diǎn)強(qiáng)度為n的概率。對(duì)于加權(quán)軟件網(wǎng)絡(luò)而言,軟件網(wǎng)絡(luò)各結(jié)點(diǎn)間的相互影響以及密切程度可以通過(guò)結(jié)點(diǎn)強(qiáng)度來(lái)表示,強(qiáng)度分步則表示了整個(gè)軟件依賴(lài)關(guān)系的復(fù)雜度以及結(jié)點(diǎn)的強(qiáng)度分布。通過(guò)分析發(fā)現(xiàn),結(jié)點(diǎn)強(qiáng)度較小的結(jié)點(diǎn)更傾向于連接強(qiáng)度大的結(jié)點(diǎn),這種現(xiàn)象造成了軟件結(jié)點(diǎn)呈冪律分布的情況,新加入的結(jié)點(diǎn)傾向于連接強(qiáng)度較大、最早出現(xiàn)于軟件網(wǎng)絡(luò)中的結(jié)點(diǎn)。
3.3 關(guān)鍵結(jié)點(diǎn)
我們將那些對(duì)軟件網(wǎng)絡(luò)有著較大影響的結(jié)點(diǎn)成為關(guān)鍵結(jié)點(diǎn)。關(guān)鍵結(jié)點(diǎn)的具體定義是一個(gè)結(jié)點(diǎn)集合,集合內(nèi)的結(jié)點(diǎn)的出點(diǎn)強(qiáng)度與入點(diǎn)強(qiáng)度均遠(yuǎn)遠(yuǎn)高于軟件網(wǎng)絡(luò)中的平均出點(diǎn)和入點(diǎn)強(qiáng)度。通過(guò)對(duì)這些結(jié)點(diǎn)的研究分析,關(guān)鍵結(jié)點(diǎn)與其他結(jié)點(diǎn)相比,具有更強(qiáng)的缺陷聚集以及缺陷傳播的能力。
軟件工程中,如果面對(duì)的軟件規(guī)模較大,功能較為復(fù)雜,我們習(xí)慣采取分而治之的方法將整個(gè)軟件進(jìn)行分解,直至分解到一個(gè)個(gè)很小的易于實(shí)現(xiàn)的模塊,通過(guò)這種方法來(lái)解決復(fù)雜度高、規(guī)模較大的軟件設(shè)計(jì)。這樣造成的后果是,軟件網(wǎng)絡(luò)結(jié)點(diǎn)的路徑變得很長(zhǎng),核心功能模塊對(duì)應(yīng)的網(wǎng)絡(luò)結(jié)點(diǎn)的出度和入度變大,根據(jù)上述的新加入結(jié)點(diǎn)連接原則,核心網(wǎng)絡(luò)結(jié)點(diǎn)的度會(huì)越來(lái)越大,關(guān)鍵結(jié)點(diǎn)對(duì)整個(gè)軟件的影響也就越來(lái)越大,在軟件網(wǎng)絡(luò)結(jié)構(gòu)中,關(guān)鍵結(jié)點(diǎn)具有重要作用。
4 結(jié)束語(yǔ)
隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,軟件應(yīng)經(jīng)應(yīng)用到各個(gè)領(lǐng)域,軟件不斷向大規(guī)?;?、高復(fù)雜度的方向發(fā)展,所以,軟件體系結(jié)構(gòu)對(duì)于軟件的質(zhì)量越來(lái)越重要[4][5]。本文介紹了復(fù)雜軟件系統(tǒng)的軟件網(wǎng)絡(luò)結(jié)構(gòu),將軟件系統(tǒng)中的類(lèi)抽象為網(wǎng)絡(luò)結(jié)點(diǎn),對(duì)結(jié)點(diǎn)強(qiáng)度及結(jié)點(diǎn)分布度及結(jié)點(diǎn)影響進(jìn)行了分析,通過(guò)對(duì)有向網(wǎng)絡(luò)圖中邊的一些特性的分析,重點(diǎn)研究了網(wǎng)絡(luò)結(jié)點(diǎn)與結(jié)點(diǎn)間的密切程度及影響關(guān)系,最后介紹了關(guān)鍵結(jié)點(diǎn)的相關(guān)內(nèi)容。在未來(lái)的工作中,關(guān)于軟件可靠性分析及結(jié)構(gòu)優(yōu)化等問(wèn)題有待于進(jìn)一步研究[6]。
參考文獻(xiàn):
[1]李博,趙海,劉紅.大規(guī)模軟件網(wǎng)絡(luò)類(lèi)結(jié)點(diǎn)中介度分析[J].東北大學(xué)學(xué)報(bào)(自然科學(xué)版),2010(07):929-932.
[2]霍巖,楊占坤,趙海.大規(guī)模軟件網(wǎng)絡(luò)結(jié)點(diǎn)中生代指數(shù)解法研究[J].計(jì)算機(jī)應(yīng)用于軟件,2011(02):14-16.
[3]李兵,馬于濤,劉婧.軟件系統(tǒng)的復(fù)雜網(wǎng)絡(luò)研究[J].力學(xué)研究,2008(06):805-813.
[4]韓明暢,李德毅,劉常昱.軟件中的網(wǎng)絡(luò)化特征及其對(duì)軟件質(zhì)量的貢獻(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2006(03):9-10.
[5]馬于濤,何克清,李兵.網(wǎng)絡(luò)化軟件的復(fù)雜網(wǎng)絡(luò)特性實(shí)證[J].軟件學(xué)報(bào),2011(03):381-407.
[6]閆棟,祁國(guó)寧.大規(guī)模軟件系統(tǒng)的無(wú)標(biāo)度特性與演化模型[J].物理學(xué)報(bào),2006(08):3799-3806.
作者簡(jiǎn)介:張婷(1984-),女,寧夏銀川人,碩士,助理講師,主要研究方向:計(jì)算機(jī)。
作者單位:寧夏職業(yè)技術(shù)學(xué)院,寧夏銀川 750021