• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

      2017-11-01 17:14:42英,2
      關(guān)鍵詞:折線圖介數(shù)度量

      成 蕾 林 英,2 李 彤

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

      王曉芳1 鄭交交1 李 響1

      2(云南省軟件工程重點(diǎn)實(shí)驗(yàn)室 云南 昆明 650091)

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

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

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

      王曉芳1鄭交交1李 響1

      2(云南省軟件工程重點(diǎn)實(shí)驗(yàn)室 云南 昆明 650091)

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

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

      0 引 言

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      構(gòu)件的請(qǐng)求依賴描述了構(gòu)件依賴其他模塊的程度和關(guān)系。構(gòu)件的請(qǐng)求依賴越高,則表示該構(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é)點(diǎn)的邊的總數(shù)稱作構(gòu)件vi的服務(wù)依賴,記為dser(vi)。

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

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

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

      (1)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      (2)

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

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

      2.2 算 法

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

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

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

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

      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

      例如在實(shí)驗(yàn)一中用Eclipse 3.0獲得的部分矩陣如下:

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

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

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

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

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

      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é)點(diǎn)介數(shù)計(jì)算算法。

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

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

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

      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 實(shí)驗(yàn)分析

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

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

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

      3.1 實(shí)驗(yàn)一

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

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

      圖1 Eclipse 3.0的分布折線圖

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

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

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

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

      3.2 實(shí)驗(yàn)二

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

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

      圖2 Jabref的分布折線圖

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

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

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

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

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

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

      4 結(jié) 語(yǔ)

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

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

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

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

      [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é)報(bào),2005,33(8):1381-1386.

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

      [19] 汪北陽(yáng),呂金虎.復(fù)雜軟件系統(tǒng)的軟件網(wǎng)絡(luò)結(jié)點(diǎn)影響分析[J].軟件學(xué)報(bào),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。國(guó)家自然科學(xué)基金項(xiàng)目(61379032)。成蕾,碩士,主研領(lǐng)域:軟件工程理論與方法。林英,副教授。李彤,教授。王曉芳,碩士。鄭交交,碩士。李響,碩士。

      猜你喜歡
      折線圖介數(shù)度量
      有趣的度量
      模糊度量空間的強(qiáng)嵌入
      Optimization Design of Miniature Air Quality Monitoring System Based on Multi-Sensor Fusion Technology
      迷向表示分為6個(gè)不可約直和的旗流形上不變愛(ài)因斯坦度量
      讓折線圖顯示在一個(gè)單元格中
      再多也不亂 制作按需顯示的折線圖
      美化Excel折線圖表
      基于電氣介數(shù)的電力系統(tǒng)脆弱線路辨識(shí)
      地質(zhì)異常的奇異性度量與隱伏源致礦異常識(shí)別
      樹(shù)形網(wǎng)絡(luò)的平均介數(shù)*
      刚察县| 林州市| 吉安市| 金昌市| 汉沽区| 炎陵县| 武隆县| 富民县| 江安县| 香河县| 六枝特区| 蕉岭县| 金溪县| 宝丰县| 筠连县| 石家庄市| 乌鲁木齐县| 阜新| 巫溪县| 天全县| 西丰县| 叙永县| 巴彦淖尔市| 涞源县| 葵青区| 章丘市| 军事| 溧水县| 于都县| 雷州市| 时尚| 宜春市| 仁寿县| 伊吾县| 正镶白旗| 清徐县| 轮台县| 泉州市| 宣化县| 朔州市| 县级市|