国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

軟件演化環(huán)境下基于節(jié)點介數(shù)的構(gòu)件重要性度量方法

2017-11-01 17:14:42英,2
計算機應(yīng)用與軟件 2017年10期
關(guān)鍵詞:折線圖介數(shù)度量

成 蕾 林 英,2 李 彤

1(云南大學(xué)軟件學(xué)院 云南 昆明 650091)

王曉芳1 鄭交交1 李 響1

2(云南省軟件工程重點實驗室 云南 昆明 650091)

軟件演化環(huán)境下基于節(jié)點介數(shù)的構(gòu)件重要性度量方法

成 蕾1林 英1,2李 彤2*

1(云南大學(xué)軟件學(xué)院 云南 昆明 650091)

王曉芳1鄭交交1李 響1

2(云南省軟件工程重點實驗室 云南 昆明 650091)

在軟件演化中,構(gòu)件的重要性度量可以為軟件演化的控制和監(jiān)測提供依據(jù)。以軟件體系結(jié)構(gòu)為藍(lán)圖和支撐,提出軟件體系結(jié)構(gòu)有向圖模型,引入節(jié)點介數(shù)對構(gòu)件的重要性進(jìn)行度量。并對構(gòu)件的請求依賴、服務(wù)依賴進(jìn)行分析和研究,通過使用Pearson相關(guān)系數(shù)進(jìn)行分析,找出與節(jié)點介數(shù)最相關(guān)的因素。對大量開源軟件源代碼進(jìn)行實驗,實驗結(jié)果表明,用節(jié)點介數(shù)度量構(gòu)件的重要性是有效的,并且構(gòu)件的請求依賴和服務(wù)依賴的總和與構(gòu)件的節(jié)點介數(shù)最為相關(guān)。這也為下一步利用依賴關(guān)系衡量構(gòu)件重要性指明了另一個研究方向。

軟件體系結(jié)構(gòu) 軟件演化 構(gòu)件 有向圖 節(jié)點介數(shù)

0 引 言

軟件系統(tǒng)逐漸發(fā)展為服務(wù)和構(gòu)件的組合交付,并在社會的發(fā)展中出于需要被不斷地調(diào)整和擴展,使得軟件系統(tǒng)的規(guī)模增大,結(jié)構(gòu)出現(xiàn)了多種層次、不同粒度、多種集成的方式。人們用術(shù)語“演化”來描述這種不斷的改變[1,10,13]。這種普遍存在于軟件系統(tǒng)中,軟件系統(tǒng)逐漸變化直至達(dá)到理想形態(tài)的一系列的復(fù)雜變化活動就是軟件演化。

軟件具有構(gòu)造和演化兩個基本特性[1]。軟件體系結(jié)構(gòu)SA(software architecture)的發(fā)展已經(jīng)趨于成熟,作為藍(lán)圖支撐人們從宏觀層面對整體軟件結(jié)構(gòu)進(jìn)行把握。然而,隨著軟件系統(tǒng)功能和規(guī)模的發(fā)展,對軟件演化的掌握和控制變得越發(fā)復(fù)雜,難度也日益增加。傳統(tǒng)的度量方法在軟件演化中有著重要的貢獻(xiàn),展現(xiàn)了軟件演化的某些特性[2-3,14]。然則,這些傳統(tǒng)度量方法都共性地提早陷入軟件結(jié)構(gòu)中復(fù)雜的細(xì)節(jié),對于宏觀方面關(guān)注不夠,難以整體且全面地把握軟件結(jié)構(gòu)。

20世紀(jì)90年代,Bohner[8,11]在提出軟件變化分析過程框架的基礎(chǔ)上使用可達(dá)矩陣的概念闡述了軟件變化,但沒有給出組成要素對軟件貢獻(xiàn)大小的概念。Valverde等[13]首先對面向?qū)ο蟮能浖到y(tǒng)進(jìn)行了研究,他們把系統(tǒng)的類圖抽象為有向網(wǎng)絡(luò)圖。Myers[15]和Moura等[16]運用有向網(wǎng)絡(luò)來表示軟件系統(tǒng)的結(jié)構(gòu),在此基礎(chǔ)上提出了基于重構(gòu)的軟件模型。隨后,國內(nèi)一批研究人員如汪北陽等[19]使用加權(quán)網(wǎng)絡(luò)研究復(fù)雜軟件系統(tǒng)的軟件網(wǎng)絡(luò),王映輝等[17]、張朝昆等[18]開展軟件結(jié)構(gòu)的研究,獲得了一系列研究成果。

本文的工作主要分為兩個部分,一是基于構(gòu)件之間的關(guān)聯(lián)和有向圖的概念,提出SA模型,并引入節(jié)點介數(shù)作為衡量構(gòu)件在SA中的重要性指標(biāo),通過計算每個構(gòu)件的節(jié)點介數(shù),作為衡量構(gòu)件重要性的參考;其次為了進(jìn)一步研究與分析構(gòu)件之間請求依賴、服務(wù)依賴對構(gòu)件重要性的影響,使用Pearson相關(guān)系數(shù)分別計算這些依賴關(guān)系與節(jié)點介數(shù)的相關(guān)性。通過大量的實驗分析,表明節(jié)點介數(shù)與構(gòu)件的總依賴基本一致,依賴關(guān)系越強的構(gòu)件,其節(jié)點介數(shù)越高,因此節(jié)點介數(shù)這一指標(biāo)能夠為軟件演化過程中監(jiān)控和掌握重要構(gòu)件提供參考。

1 軟件體系結(jié)構(gòu)的模型

鑒于SA沒有公認(rèn)的定義,本文采用比較流行的簡單定義[6,9]:SA是組成系統(tǒng)的構(gòu)件與連接件的高層抽象,構(gòu)件之間的交互作用關(guān)系視為連接件。

構(gòu)件實現(xiàn)系統(tǒng)中需要的特定功能,符合一套接口標(biāo)準(zhǔn)并實現(xiàn)一組接口。在系統(tǒng)中表現(xiàn)為承擔(dān)一定功能的數(shù)據(jù)或計算單元,也表現(xiàn)為面向軟件體系架構(gòu)的可復(fù)用軟件模塊,是系統(tǒng)中實際存在的可更換部分。

本文不考慮其內(nèi)部結(jié)構(gòu),看做一個不透明的整體。把一個軟件系統(tǒng)實例視作一個SA時,SA中構(gòu)件之間的交互和依賴是有方向性的,構(gòu)件之間的交互是無權(quán)有向的,則可以將SA的模型定義如下:

定義1SA的模型。將一個軟件系統(tǒng)實例的SA的模型G描述為一個無權(quán)有向圖三元組

(1)NG是軟件系統(tǒng)實例的SA模型的名稱;

(2)V(G)是構(gòu)成軟件系統(tǒng)的構(gòu)件所代表的節(jié)點的集合;

(3)E(G)是構(gòu)成軟件系統(tǒng)的構(gòu)件間關(guān)系代表的無權(quán)有向邊的集合。

定義2構(gòu)件。一個節(jié)點所代表的構(gòu)件V的描述是一個二元組

(1)NC是構(gòu)件的名稱;

(2)FC是構(gòu)件的功能描述。

定義3構(gòu)件間關(guān)聯(lián)。將構(gòu)件間的交互關(guān)系作為無權(quán)有向邊E描述為一個三元組

(1)En是有向邊的唯一標(biāo)識;

(2)Vi是發(fā)起依賴的構(gòu)件,即起始節(jié)點;

(3)Vj是接受依賴的構(gòu)件,即終止節(jié)點;

(4) 即表示節(jié)點Vi指向節(jié)點Vj。

定義4構(gòu)件的請求依賴。在SA的模型G=中,構(gòu)件vi∈V(G),以構(gòu)件vi作為起始節(jié)點的邊的總數(shù)稱作構(gòu)件vi的請求依賴,記為dreq(vi)。

構(gòu)件的請求依賴描述了構(gòu)件依賴其他模塊的程度和關(guān)系。構(gòu)件的請求依賴越高,則表示該構(gòu)件直接依賴的構(gòu)件數(shù)量越多,該構(gòu)件的行為也就越復(fù)雜,所在的構(gòu)件層次也就越高。

定義5構(gòu)件的服務(wù)依賴。在SA的模型G=中,構(gòu)件vi∈V(G),以構(gòu)件vi作為終止節(jié)點的邊的總數(shù)稱作構(gòu)件vi的服務(wù)依賴,記為dser(vi)。

構(gòu)件的服務(wù)依賴刻畫了構(gòu)件在SA中被其他模塊直接依賴的程度。構(gòu)件的服務(wù)依賴越高,構(gòu)件的直接被依賴性越強,在SA中的復(fù)用率也就越高,說明該構(gòu)件的行為功能越固定。

構(gòu)件的請求依賴與構(gòu)件的服務(wù)依賴的總和,稱為構(gòu)件的總依賴,記作dsum(vi)。

定義6節(jié)點介數(shù)。給定圖G=,節(jié)點vi∈V(G),在圖G中經(jīng)過節(jié)點vi的最短路徑總數(shù)目與圖G中所有的最短路徑之比稱為vi的節(jié)點介數(shù),記為C(vi)。則:

(1)

其中:δst是節(jié)點s到節(jié)點t的所有最短路徑的總數(shù)目,δst(v)是節(jié)點s到節(jié)點t的最短路徑數(shù)中經(jīng)過節(jié)點v的最短路徑數(shù)目。

節(jié)點介數(shù)是一個重要的全局幾何量,反應(yīng)了節(jié)點在整個圖中的作用和影響力。將SA的模型抽象為有向圖模型后,在SA演化中引入節(jié)點介數(shù),可以直觀地觀察到構(gòu)件對應(yīng)的節(jié)點在整個SA中的地位和影響力。節(jié)點介數(shù)是衡量構(gòu)件在SA演化時的關(guān)鍵程度和地位的重要指標(biāo),對掌握和控制構(gòu)件演化前后的影響范圍和強度有著直觀的指導(dǎo)作用和很強的現(xiàn)實意義。

在本文的實驗中,將類擬為構(gòu)件,類關(guān)系擬為SA的模型中的無權(quán)有向邊,其對應(yīng)關(guān)系如表1。

表1 SA的模型關(guān)系

2 演化環(huán)境下的構(gòu)件重要性度量

演化是所有軟件系統(tǒng)都必經(jīng)的活動,系統(tǒng)的整體結(jié)構(gòu)趨于復(fù)雜、構(gòu)件數(shù)量龐大,尋找出結(jié)構(gòu)中的重要構(gòu)件。為軟件演化的檢測和可控提供依據(jù)的同時,也是掌握和評價演化的一個重要方面,對軟件的演化工作顯得尤為重要。

2.1 構(gòu)件重要性度量方法

對構(gòu)件的重要性進(jìn)行度量,主要有5個步驟,包括:

(1) 獲取構(gòu)件和構(gòu)件間關(guān)聯(lián)。將源代碼中的類作為一個構(gòu)件,通過掃描源代碼,得到構(gòu)件名稱標(biāo)識和構(gòu)件之間的關(guān)系。

(2) 將構(gòu)件和構(gòu)件之間的關(guān)系數(shù)據(jù)進(jìn)行處理,并映射為鄰接矩陣。若構(gòu)件的個數(shù)為n,將構(gòu)件之間的關(guān)系映射為n維的鄰接矩陣M,并默認(rèn)M11,M22,…,Mnn的值為0,有特殊自調(diào)用的構(gòu)件除外;例如,若構(gòu)件1對構(gòu)件2有依賴關(guān)系,構(gòu)件2對構(gòu)件1沒有依賴關(guān)系,則M12的值為1,M21的值為0。

(3) 以鄰接矩陣M為基礎(chǔ),計算出每個節(jié)點的構(gòu)件請求依賴、構(gòu)件服務(wù)依賴和構(gòu)件的總依賴。

(4) 計算每個節(jié)點的節(jié)點介數(shù)。計算全圖的最短路徑,得到全圖的最短路徑總數(shù)目以及各個節(jié)點的經(jīng)過該節(jié)點的最短路徑數(shù)目后,根據(jù)式(1)計算每個構(gòu)件的節(jié)點介數(shù)。根據(jù)節(jié)點介數(shù)的大小度量出在SA中的重要構(gòu)件。

(5) 分別計算構(gòu)件的請求依賴、構(gòu)件的服務(wù)依賴、構(gòu)件的總依賴與節(jié)點介數(shù)的Pearson相關(guān)系數(shù)。根據(jù)式(2)分別進(jìn)行計算,并研究與分析和節(jié)點介數(shù)最相關(guān)的因素。

在本文中使用的Pearson相關(guān)系數(shù)的計算公式為:

(2)

在Pearson相關(guān)系數(shù)的定義中:相關(guān)系數(shù)絕對值在[0.8,1.0],是極強相關(guān);相關(guān)系數(shù)絕對值在[0.6,0.8],是強相關(guān);相關(guān)系數(shù)絕對值在[0.4,0.6],是中等程度相關(guān);相關(guān)系數(shù)絕對值在[0.2,0.4],是弱相關(guān);絕對值在[0,0.2],是極弱相關(guān)或無相關(guān)。

使用Pearson相關(guān)系數(shù)來計算節(jié)點構(gòu)件的請求依賴、構(gòu)件的服務(wù)依賴、構(gòu)件的總依賴和節(jié)點介數(shù)的相關(guān)性。在實驗中,節(jié)點介數(shù)、構(gòu)件的請求依賴、構(gòu)件的服務(wù)依賴、構(gòu)件的總依賴之間,兩個變量的觀測值是成對的,每對觀測值之間相互獨立,且他們的標(biāo)準(zhǔn)差均不為0,那么Pearson相關(guān)系數(shù)就是有定義的。

2.2 算 法

算法1獲取SA模型的鄰接矩陣算法。

輸入:構(gòu)件名稱標(biāo)識鏈表Name和構(gòu)件間交互關(guān)系鏈表Connection。

輸出:SA的模型的鄰接矩陣Matrix。

初始化:二維數(shù)組Matrix用于存儲SA模型的鄰接矩陣,Matrix的行列長度均等同于鏈表Name的長度。

Begin

For i ← 0 to length[Connection] do

row ← get index of component name 1 from Connection[i] in Name

column ← get index of component name 2 from Connection[i] in Name

Matirx[row][column] = 1

EndFor

End

例如在實驗一中用Eclipse 3.0獲得的部分矩陣如下:

得到SA模型的鄰接矩陣之后便可以計算出每個構(gòu)件的請求依賴和服務(wù)依賴。在計算構(gòu)件的請求依賴時,Matrix[i][]這一列中有多少個1,最后累積相加所得的結(jié)果便是節(jié)點vi所對應(yīng)的構(gòu)件的請求依賴;同樣地,在計算構(gòu)件的服務(wù)依賴時,Matrix[][j]這一行中有多少個1,最后累積相加所得的結(jié)果便是節(jié)點vj所對應(yīng)的構(gòu)件的服務(wù)依賴。每個構(gòu)件的請求依賴和服務(wù)依賴相加就得到節(jié)點的總依賴。

算法2SA有向圖模型的全圖最短路徑算法。

輸入:SA模型的鄰接矩陣Matrix。

輸出:SA模型的全圖最短路徑Pathes。

初始化:鏈表Pathes用于存儲圖中所有的最短路徑。

Begin

For i ← 1 to length[Matrix] do

For j ← 1 to length[Matrix[i]] do

shortest(i,j) = minWeight(i,j)

EndFor

EndFor

For k ← 1 to length[Matrix] do

For i ← 1 to length[Matrix] do

For j ← 1 to length[Matrix] do

If (shortest(i,k)+shortest(k,j) < shortest(i,j)) Then

shortest(i,j) = shortest(i,k)+shortest(k,j)

EndIf

EndFor

EndFor

EndFor

End

算法3SA模型的節(jié)點介數(shù)計算算法。

輸入:SA模型的全圖最短路徑Pathes,構(gòu)件名稱標(biāo)識鏈表Name。

輸出:SA模型的各個構(gòu)件的節(jié)點介數(shù)。

初始化:鏈表Betweenness用于存儲SA模型的節(jié)點介數(shù),鏈表Betweenness的長度等同于構(gòu)件名稱標(biāo)識鏈表Name的長度。

Begin

For i ← 0 to length[Name] do

k = 0

For j ← 0 to length[Pathes] do

If Name[i] exists in Pathes[j]

k ← k + 1

Else continue

EndIf

EndFor

Betweenness[i] = k/length[Pathes]

EndFor

End

3 實驗分析

本文選取的開源軟件近一百種,包括各種功能,例如軟件開發(fā)平臺、編程語言源代碼包、開源專業(yè)性軟件等,可按照節(jié)點的數(shù)量分為三類:節(jié)點數(shù)小于50的小規(guī)模軟件,節(jié)點數(shù)在50至200的中規(guī)模軟件,節(jié)點數(shù)大于200的大規(guī)模軟件。

結(jié)果發(fā)現(xiàn),本文的方法是切實有效的,且與軟件的規(guī)模和功能種類無關(guān),其構(gòu)件的總依賴和節(jié)點介數(shù)的走向趨勢總是相符的。但是節(jié)點介數(shù)的體現(xiàn)與軟件的結(jié)構(gòu)設(shè)計有關(guān),在那些擁有良好設(shè)計、體系結(jié)構(gòu)的軟件中,所得實驗結(jié)果最為理想,不僅其構(gòu)件的總依賴和節(jié)點介數(shù)的變化總是趨于同步,而且構(gòu)件之間的節(jié)點介數(shù)的區(qū)別更加明顯;反之,沒有良好的體系結(jié)構(gòu)支撐的軟件系統(tǒng)中,構(gòu)件之間的節(jié)點介數(shù)幾近一致,導(dǎo)致構(gòu)件之間的度量困難。

由于篇幅的限制,最后選取屬于大規(guī)模軟件的Eclipse 3.0和屬于中規(guī)模的Jabref的源碼作為典型的兩個實驗示例進(jìn)行分析。

3.1 實驗一

使用Eclipse 3.0的源代碼作為實驗數(shù)據(jù)。

圖1為Eclipse 3.0的構(gòu)件的請求依賴、構(gòu)件的服務(wù)依賴的分布曲線和構(gòu)件的總依賴、節(jié)點介數(shù)的百分比折線圖。由于節(jié)點介數(shù)的取值在[-1,1]之間,范圍變化小,而總依賴的值遠(yuǎn)大于節(jié)點介數(shù)的值,為了更清楚地看到總依賴和節(jié)點介數(shù)的關(guān)系和走向趨勢,采用百分比折線圖進(jìn)行分析。在圖中Y軸表示了構(gòu)件的請求依賴、構(gòu)件的服務(wù)依賴的大小,X軸代表節(jié)點。

圖1 Eclipse 3.0的分布折線圖

通過觀察折線圖的走向,不難發(fā)現(xiàn)構(gòu)件的請求依賴和構(gòu)件的服務(wù)依賴之間是沒有明顯的相關(guān)關(guān)系,即構(gòu)件的請求依賴和構(gòu)件的服務(wù)依賴之間沒有呈現(xiàn)規(guī)律的對應(yīng)關(guān)系,請求依賴高的構(gòu)件可能服務(wù)依賴高也可能服務(wù)依賴低。而構(gòu)件的總依賴和節(jié)點介數(shù)的起伏走向基本是一致的,意味著總依賴高的構(gòu)件節(jié)點介數(shù)也高。構(gòu)件的節(jié)點介數(shù)越高,構(gòu)件在軟件體系結(jié)構(gòu)中的功能、位置也就越重要。

采用式(2)計算度和節(jié)點介數(shù)的相關(guān)性,用Pearson相關(guān)系數(shù)來判斷度和節(jié)點介數(shù)之間是否存在如折線圖所呈現(xiàn)出的相關(guān)關(guān)系。表2為Eclipse 3.0相關(guān)性分析。

表2 Eclipse3.0相關(guān)性分析

由Pearson相關(guān)系數(shù)值的計算結(jié)果可以看出,折線圖所展示出的趨勢是正確的。構(gòu)件的總依賴與節(jié)點介數(shù)為強正相關(guān),構(gòu)件的總依賴越大節(jié)點介數(shù)也越大,構(gòu)件的服務(wù)依賴和請求依賴分別與節(jié)點介數(shù)為中等程度正相關(guān),而請求依賴與服務(wù)依賴之間是極弱負(fù)相關(guān)或無相關(guān)。

3.2 實驗二

使用Jabref的源代碼作為實驗數(shù)據(jù)。

圖2為Jabref的構(gòu)件的請求依賴、構(gòu)件的服務(wù)依賴的分布曲線和構(gòu)件的總依賴、節(jié)點介數(shù)的百分比折線圖。Y軸表示了構(gòu)件的請求依賴和構(gòu)件的服務(wù)依賴的大小,X軸代表節(jié)點。

圖2 Jabref的分布折線圖

在Jabref的折線圖中,構(gòu)件的請求依賴和服務(wù)依賴沒有呈現(xiàn)規(guī)律的相關(guān)趨勢,而構(gòu)件的總依賴和節(jié)點介數(shù)的起伏幾乎重疊,這表明,在Jabref中,總依賴高的構(gòu)件其節(jié)點介數(shù)也高。

表3 Jabref相關(guān)性分析

Jabref的相關(guān)性分析再次證明折線圖展示的相關(guān)趨勢是正確的。構(gòu)件的請求依賴和服務(wù)依賴之間是極弱正相關(guān)或不相關(guān),構(gòu)件的請求依賴、服務(wù)依賴分別與節(jié)點介數(shù)強正相關(guān),總依賴與節(jié)點介數(shù)極強正相關(guān),節(jié)點介數(shù)隨總依賴的增大而增大。

通過計算Eclipse 3.0和Jabref的構(gòu)件的服務(wù)依賴和請求依賴的Pearson相關(guān)系數(shù),可見構(gòu)件的服務(wù)依賴和請求依賴的分布是沒有規(guī)律的,它們之間不存在相關(guān)性。

根據(jù)Pearson相關(guān)系數(shù)分析可知,在軟件體系結(jié)構(gòu)中,構(gòu)件的總依賴和節(jié)點介數(shù)均呈現(xiàn)極強正相關(guān),而構(gòu)件的服務(wù)依賴與節(jié)點介數(shù)的Pearson相關(guān)系數(shù)和構(gòu)件的請求依賴與節(jié)點介數(shù)的Pearson相關(guān)系數(shù)的趨勢變化并不穩(wěn)定。由節(jié)點介數(shù)的定義可知,一個構(gòu)件的節(jié)點介數(shù)與該構(gòu)件的服務(wù)依賴、請求依賴和總依賴有著直接的關(guān)系,當(dāng)一個構(gòu)件的總依賴越大,那么這個構(gòu)件在整個軟件體系結(jié)構(gòu)中的地位和重要程度也就越高,相應(yīng)的節(jié)點介數(shù)越高;反之,若一個構(gòu)件的總依賴越低,甚至沒有,那么這個構(gòu)件在整個軟件體系結(jié)構(gòu)中的地位和重要程度越低,節(jié)點介數(shù)也就越低。

構(gòu)件的總依賴與其變化最密切相關(guān),通過節(jié)點介數(shù)來判斷構(gòu)件在整個軟件體系結(jié)構(gòu)中的地位和重要程度的時候,構(gòu)件的總依賴也是一個關(guān)鍵的判斷因素。

4 結(jié) 語

實驗證明使用節(jié)點介數(shù)度量軟件演化環(huán)境下的構(gòu)件的重要性,是有效的,補充了傳統(tǒng)的度量方法在掌握軟件體系結(jié)構(gòu)宏觀特性方面的不足。

在整個軟件體系結(jié)構(gòu)中,構(gòu)件的請求依賴高的節(jié)點往往獨立性較差,對底層構(gòu)件或其他基礎(chǔ)構(gòu)件的依賴較強,耦合度高,功能比較復(fù)雜;構(gòu)件的服務(wù)依賴高的節(jié)點通常內(nèi)聚度高,結(jié)構(gòu)穩(wěn)定并且功能單一。

通過對構(gòu)件的總依賴和節(jié)點介數(shù)的計算,可以清晰地度量構(gòu)件在整個軟件體系結(jié)構(gòu)中的重要性。在軟件體系結(jié)構(gòu)演化的時候,可以更好地把握這些重要的節(jié)點的演化過程,降低演化風(fēng)險,有助于監(jiān)控管理那些在演化活動中比較難控制的活動和構(gòu)件。軟件體系結(jié)構(gòu)中構(gòu)件的請求依賴和服務(wù)依賴沒有規(guī)律的相關(guān)關(guān)系,而構(gòu)件的總依賴和節(jié)點介數(shù)之間通常表現(xiàn)為強正相關(guān)或極強正相關(guān),即總依賴高的構(gòu)件節(jié)點介數(shù)也高。

總依賴與節(jié)點介數(shù)極強正相關(guān),為構(gòu)件的重要性度量指明了另一個研究方向,尤其是在一個龐大的軟件體系結(jié)構(gòu)中時,如何在計算時對源代碼中數(shù)量眾多的節(jié)點進(jìn)行降維,從而更加快速地計算構(gòu)件的總依賴是下一步的研究重點。

[1] Bianchi A,Caivano D,Marengo V,et al.Iterative reengineering of legacy systems[J].IEEE Transactions on Software Engineering,2003,29(3):225-241.

[2] Zeng J,Sun H L,Liu X D,et al.Dynamic Evolution Mechanism for Trustworthy Software Based on Service Composition[J].Journal of Software,2010,21(2):261-276.

[3] Song W,Ma X X,Lu J.Instance migration in dynamic evolution of web service compositions[J].Chinese Journal of Computers,2009,32(9):1816-1831.

[4] Huang G,Mei H,Yang F Q.Runtime recovery and manipulation of software architecture of component-based systems[J].Automated Software Engineering,2006,13(2):257-281.

[5] Wilfredo T.Software Fault Tolerance:A Tutorial[J].Pomales,2000,1(2):220-232.

[6] Liu Y,Zhang S K,Wang L F,et al.Component-Based Software Frameworks and Role Extension Form[J].Journal of Software,2003,14(8).

[7] Brunet J,Murphy G C,Serey D,et al.Five Years of Software Architecture Checking:A Case Study of Eclipse[J].IEEE Software,2015,32(5):1-1.

[8] Bohner S A.Impact analysis in the software change process:a year 2000 perspective[C]//International Conference on Software Maintenance.IEEE Computer Society,1996:42-51.

[9] Shaw M,Garlan D.Software architecture:perspectives on an emerging discipline[J].Prentice Hall,2010,24(1):129-132.

[10] Ambriola V,Tortora G.Advances in Software Engineering and Knowledge Engineering[M].World Scientific,1993.

[11] Bohner S A.Software change impacts-an evolving perspective[C]//International Conference on Software Maintenance.IEEE Computer Society,2002:263.

[12] Drange P G,Dregi M,Hof P V.On the Computational Complexity of Vertex Integrity and Component Order Connectivity[J].Algorithmica,2014,8889:285-297.

[13] Valverde S,Cancho R F I,Sole R V.Scale-free Networks from Optimal Design[J].Europhysics Letters,2002,60(4):512-517.

[14] Eiben A E,Smith J.From evolutionary computation to the evolution of things[J].Nature,2015,521(7553):476-482.

[15] Myers C R.Software systems as complex networks:structure,function,and evolvability of software collaboration graphs[J].Physical Review E,2003,68(4 Pt 2):352-375.

[16] de Moura A P,Lai Y C,Motter A E.Signatures of small-world and scale-free properties in large computer programs[J].Physical Review E Statistical Nonlinear & Soft Matter Physics,2003,68(2):017102.

[17] 王映輝,王立福.軟件體系結(jié)構(gòu)演化模型[J].電子學(xué)報,2005,33(8):1381-1386.

[18] 張朝昆,崔勇,唐翯祎,等.軟件定義網(wǎng)絡(luò)(SDN)研究進(jìn)展[J].軟件學(xué)報,2015,26(1):62-81.

[19] 汪北陽,呂金虎.復(fù)雜軟件系統(tǒng)的軟件網(wǎng)絡(luò)結(jié)點影響分析[J].軟件學(xué)報,2013,24(12):2814-2829.

AMETHODOFCOMPONENTIMPORTANCEMEASUREMENTBASEDONNODEBETWEENNESSINSOFTWAREEVOLUTIONENVIRONMENT

Cheng Lei1Lin Ying1,2Li Tong2*Wang Xiaofang1Zheng Jiaojiao1Li Xiang1

1(CollegeofSoftware,YunnanUniversity,Kunming650091,Yunnan,China)2(KeyLaboratoryforSoftwareEngineeringofYunnanProvince,Kunming650091,Yunnan,China)

In software evolution, the importance measure of components can provide the basis for the control and monitoring of software evolution. With software architecture as blueprint and support, this paper proposes a software architecture directed graph model, and introduces node betweenness to measure the importance of components. And the component request dependence and service dependence are analyzed and studied. By using the Pearson correlation coefficient analysis, the factors which are most related to the node betweenness are found out. Through the experiment of a large number of open source software source code, the experimental results show that it is effective to use node betweenness to measure the importance of component, and the sum of component request dependence and the component service dependence is the most correlative factor to betweenness. This also points to another research direction for measuring the importance of components by using dependencies.

Software architecture Software evolution Component Directed graph Node betweenness

TP311

A

10.3969/j.issn.1000-386x.2017.10.005

2016-12-12。國家自然科學(xué)基金項目(61379032)。成蕾,碩士,主研領(lǐng)域:軟件工程理論與方法。林英,副教授。李彤,教授。王曉芳,碩士。鄭交交,碩士。李響,碩士。

猜你喜歡
折線圖介數(shù)度量
有趣的度量
模糊度量空間的強嵌入
Optimization Design of Miniature Air Quality Monitoring System Based on Multi-Sensor Fusion Technology
迷向表示分為6個不可約直和的旗流形上不變愛因斯坦度量
讓折線圖顯示在一個單元格中
再多也不亂 制作按需顯示的折線圖
電腦愛好者(2018年2期)2018-01-31 19:07:26
美化Excel折線圖表
電腦愛好者(2017年1期)2017-04-14 10:16:22
基于電氣介數(shù)的電力系統(tǒng)脆弱線路辨識
地質(zhì)異常的奇異性度量與隱伏源致礦異常識別
樹形網(wǎng)絡(luò)的平均介數(shù)*
古交市| 柞水县| 黎川县| 临夏县| 扬州市| 沿河| 南投市| 永康市| 洛南县| 平定县| 廉江市| 桦南县| 合作市| 噶尔县| 黔东| 东丽区| 凤台县| 上林县| 九台市| 白沙| 黄龙县| 安康市| 策勒县| 乐昌市| 广西| 上蔡县| 峨边| 武宁县| 珲春市| 托里县| 博兴县| 麻江县| 平乡县| 霍山县| 湘乡市| 昂仁县| 五峰| 天水市| 天镇县| 清涧县| 旬邑县|