何 鵬,李 兵,程 璨,b,曾 誠(chéng)
(1.武漢大學(xué)a.軟件工程國(guó)家重點(diǎn)實(shí)驗(yàn)室計(jì)算機(jī)學(xué)院,b.國(guó)際軟件學(xué)院,c.復(fù)雜網(wǎng)絡(luò)研究中心,武漢430072;2.湖北大學(xué)計(jì)算機(jī)與信息工程學(xué)院,武漢430062)
近十多年來(lái),復(fù)雜網(wǎng)絡(luò)理論研究逐漸得到深入和推廣,其應(yīng)用非常廣泛,涉及社會(huì)學(xué)、生物、計(jì)算機(jī)等領(lǐng)域。在軟件工程領(lǐng)域,軟件系統(tǒng)尤其是大型軟件系統(tǒng)規(guī)模的持續(xù)增長(zhǎng)引發(fā)系統(tǒng)復(fù)雜性的質(zhì)變,許多大型軟件系統(tǒng)在內(nèi)部結(jié)構(gòu)、外部交互、演化方式等維度上表現(xiàn)出新特性[1]。從結(jié)構(gòu)方面,由于規(guī)模變大,從局部度量系統(tǒng)內(nèi)部結(jié)構(gòu)復(fù)雜性變得越來(lái)越困難,網(wǎng)絡(luò)思想有助于從全局的角度解決這一問(wèn)題。根據(jù)軟件系統(tǒng)內(nèi)部實(shí)體(如包,類(lèi)、方法、組件等)間的依賴(lài)關(guān)系,將軟件系統(tǒng)抽象為一個(gè)網(wǎng)絡(luò),即軟件網(wǎng)絡(luò)。從參與者角度而言,軟件系統(tǒng)的開(kāi)發(fā)不再是單個(gè)精英團(tuán)隊(duì)或?qū)<宜芡瓿?,而是依靠大眾開(kāi)發(fā),利用群體智慧才能達(dá)到目標(biāo),是一個(gè)典型的“社會(huì)-技術(shù)”交融系統(tǒng)。技術(shù)層面分析主要是對(duì)已有軟件采用逆向工程方法抽象其組織結(jié)構(gòu),構(gòu)建軟件網(wǎng)絡(luò);社會(huì)層面分析主要是根據(jù)社區(qū)群體交互采用社會(huì)網(wǎng)絡(luò)分析方法,挖掘群體行為。復(fù)雜網(wǎng)絡(luò)與軟件工程的交叉研究,已引起了眾多學(xué)者的關(guān)注與認(rèn)可,如李兵等[2]基于軟件網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)度量開(kāi)源軟件系統(tǒng)的復(fù)雜性,提高軟件設(shè)計(jì)質(zhì)量;Bhattachary等[3]根據(jù)軟件網(wǎng)絡(luò)中節(jié)點(diǎn)的重要性進(jìn)行缺陷預(yù)測(cè),為測(cè)試人員提供檢測(cè)優(yōu)先順序;鑒于軟件拓?fù)浣Y(jié)構(gòu)的多粒度性,潘偉豐等[4]分別從軟件包、類(lèi)和方法3個(gè)粒度研究了開(kāi)源軟件系統(tǒng)的演化特性。
軟件網(wǎng)絡(luò)的研究結(jié)合了復(fù)雜網(wǎng)絡(luò)和軟件工程理論,它以軟件系統(tǒng)的結(jié)構(gòu)特征為切入點(diǎn),將復(fù)雜網(wǎng)絡(luò)的理論應(yīng)用到軟件工程領(lǐng)域。持續(xù)演化是計(jì)算機(jī)軟件的固有特性,了解和發(fā)現(xiàn)軟件演化規(guī)律,有助于提高軟件產(chǎn)品質(zhì)量,降低軟件開(kāi)發(fā)和維護(hù)成本。針對(duì)軟件演化問(wèn)題,Lehman提出8個(gè)典型的定律,涉及軟件的規(guī)模、質(zhì)量、復(fù)雜度、生產(chǎn)率與開(kāi)發(fā)過(guò)程等[5]。目前,隨著軟件的網(wǎng)絡(luò)化趨勢(shì)越來(lái)越明顯,軟件與網(wǎng)絡(luò)的關(guān)系更加密不可分,用網(wǎng)絡(luò)的觀點(diǎn)來(lái)分析軟件演化,為軟件工程實(shí)踐提供了新的視角。然而,軟件開(kāi)發(fā)是一個(gè)社會(huì)性(“人”)和技術(shù)性(“軟件”)匯聚的過(guò)程[6],很多已有研究只是從技術(shù)層面出發(fā),探索了軟件系統(tǒng)技術(shù)維度的復(fù)雜性與應(yīng)用。在軟件生命周期中,從需求獲取、到系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā),以及后期維護(hù)等階段都離不開(kāi)人的參與,即軟件系統(tǒng)的社會(huì)屬性。軟件的結(jié)構(gòu)決定功能,而Conway定律[7]指出系統(tǒng)的最終設(shè)計(jì)結(jié)構(gòu)等同于設(shè)計(jì)系統(tǒng)的組織成員之間的交互結(jié)構(gòu)。因此,一個(gè)軟件系統(tǒng)既是一個(gè)技術(shù)依賴(lài)的制品,也涉及一個(gè)社會(huì)交互的群體,其網(wǎng)絡(luò)模型可抽象為一個(gè)社會(huì)-技術(shù)網(wǎng)絡(luò)[8]。
軟件系統(tǒng)在不斷適應(yīng)環(huán)境和需求變化的過(guò)程中持續(xù)演化,軟件演化作為一種技術(shù),主要關(guān)心對(duì)軟件進(jìn)行修改的方法;作為一種現(xiàn)象,主要關(guān)心誰(shuí)驅(qū)動(dòng)的演化以及演化效果如何[1]?;谏鐣?huì)-技術(shù)網(wǎng)絡(luò)模型,本文嘗試從軟件演化分析角度探討社會(huì)-技術(shù)網(wǎng)絡(luò)中的協(xié)同演化問(wèn)題,彌補(bǔ)已有研究工作只從單一網(wǎng)絡(luò)層面審視軟件的演化過(guò)程。本文采用類(lèi)依賴(lài)關(guān)系描述軟件網(wǎng)絡(luò),任務(wù)參與關(guān)系描述開(kāi)發(fā)者網(wǎng)絡(luò),基于復(fù)雜網(wǎng)絡(luò)度量研究與驗(yàn)證開(kāi)源軟件系統(tǒng)版本演化過(guò)程中存在的規(guī)律。本文的主要工作為:構(gòu)建開(kāi)源軟件系統(tǒng)的社會(huì)-技術(shù)網(wǎng)絡(luò)模型,統(tǒng)計(jì)開(kāi)源軟件系統(tǒng)中軟件網(wǎng)絡(luò)與開(kāi)發(fā)者網(wǎng)絡(luò)的網(wǎng)絡(luò)規(guī)模、平均度、最短路徑、聚類(lèi)系數(shù)、社區(qū)結(jié)構(gòu)網(wǎng)絡(luò)度量指標(biāo)等;依次對(duì)比分析兩類(lèi)網(wǎng)絡(luò)在10個(gè)軟件版本中網(wǎng)絡(luò)指標(biāo)的演化趨勢(shì),發(fā)掘它們演化規(guī)律的一致性與差異。
Valverde等[9]首次將復(fù)雜網(wǎng)絡(luò)方法引入軟件結(jié)構(gòu)分析中,將軟件系統(tǒng)的類(lèi)圖用無(wú)向網(wǎng)絡(luò)來(lái)表示,分析軟件網(wǎng)絡(luò)中的復(fù)雜網(wǎng)絡(luò)特性(如“小世界”和“無(wú)標(biāo)度”),認(rèn)為軟件開(kāi)發(fā)中局部?jī)?yōu)化過(guò)程可能是導(dǎo)致軟件網(wǎng)絡(luò)呈現(xiàn)這些特性的原因。Valverde等[10]還考慮了類(lèi)之間的有向性,構(gòu)建有向網(wǎng)絡(luò)對(duì)系統(tǒng)結(jié)構(gòu)進(jìn)行研究,發(fā)現(xiàn)除了以上特性外,軟件網(wǎng)絡(luò)同時(shí)具有層次性和模塊性。隨后,一些研究者從不同方面(開(kāi)發(fā)語(yǔ)言、項(xiàng)目規(guī)模、分析粒度等)再次驗(yàn)證了軟件網(wǎng)絡(luò)的諸多特性并成功應(yīng)用于工程實(shí)踐[10-11,13-15]。
在軟件生命周期中,軟件處在一個(gè)不斷變化的環(huán)境(新需求、新應(yīng)用環(huán)境、性能改進(jìn)等)中,為適應(yīng)環(huán)境軟件系統(tǒng)必須不斷演化。Jenkins等[16]對(duì)軟件包之間的關(guān)系進(jìn)行建模,分析一系列版本中軟件架構(gòu)圖的結(jié)構(gòu)穩(wěn)定性。Wang等[17]獲取了Linux kernel模塊233個(gè)版本的類(lèi)調(diào)用網(wǎng)絡(luò),研究軟件網(wǎng)絡(luò)的演化特性。李兵等[2]將復(fù)雜網(wǎng)絡(luò)與演化算法相結(jié)合,提出一種新的軟件網(wǎng)絡(luò)演化模型,發(fā)現(xiàn)該方法能夠很好地刻畫(huà)實(shí)際軟件系統(tǒng)復(fù)雜網(wǎng)絡(luò)特性的涌現(xiàn)過(guò)程。潘偉豐等[4]更是從包、類(lèi)和方法3個(gè)粒度分析了軟件網(wǎng)絡(luò)中節(jié)點(diǎn)度、聚類(lèi)系數(shù)、最短路徑等指標(biāo)的演化特性。Businge等[18]研究了Eclipse系統(tǒng)及相關(guān)插件的演化規(guī)律,發(fā)現(xiàn)結(jié)果基本滿(mǎn)足Lehman的8項(xiàng)目演化定律。
軟件開(kāi)發(fā)團(tuán)隊(duì)的演化對(duì)軟件質(zhì)量也會(huì)帶來(lái)很大影響,研究開(kāi)發(fā)者網(wǎng)絡(luò)的演化有助于更好地理解團(tuán)隊(duì)成員在參與開(kāi)發(fā)過(guò)程中的改變。Ngamkajornwiwat等[19]使用社會(huì)網(wǎng)絡(luò)分析方法研究了KOffice項(xiàng)目開(kāi)發(fā)者社區(qū)的演化。Hong等[20]討論分析了開(kāi)發(fā)者合作網(wǎng)絡(luò)中冪律分布、模塊性和社區(qū)大小等屬性的演化。Datta等[21]在IBM提供的Jazz平臺(tái)上,將開(kāi)發(fā)者合作網(wǎng)絡(luò)的平均最短路徑、聚集系數(shù)、巨型組件大小和平均度等指標(biāo)與科學(xué)家合作網(wǎng)絡(luò)進(jìn)行時(shí)間序列的演化對(duì)比。Kumar等[22]研究了貢獻(xiàn)者數(shù)、社區(qū)大小、聚類(lèi)系數(shù)等6個(gè)指標(biāo)的演化。此外,Cataldo等[23]、Lim等[24]、Sharma等[25]應(yīng)用社會(huì)網(wǎng)絡(luò)分析方法分別分析了分布式項(xiàng)目、合作網(wǎng)絡(luò)與涉眾投入關(guān)系、項(xiàng)目測(cè)試階段團(tuán)隊(duì)的演化。
以上研究工作存在一個(gè)主要的不足:局限于單個(gè)網(wǎng)絡(luò)層面分析軟件系統(tǒng)中的演化問(wèn)題,忽略了軟件系統(tǒng)的社會(huì)-技術(shù)一致性,以及開(kāi)發(fā)者合作網(wǎng)絡(luò)與軟件網(wǎng)絡(luò)之間的相互影響。軟件是由人開(kāi)發(fā)的,現(xiàn)實(shí)中,由于人員的動(dòng)態(tài)調(diào)整,尤其是核心成員的變動(dòng),可能使得原有的設(shè)計(jì)方案受到影響,最后導(dǎo)致軟件結(jié)構(gòu)發(fā)生變化。針對(duì)此類(lèi)情況,僅從軟件網(wǎng)絡(luò)或開(kāi)發(fā)者網(wǎng)絡(luò)的演化分析并不能全面反應(yīng)實(shí)際軟件系統(tǒng)的演化問(wèn)題。
本文的研究主要分為3部分,首先利用我們團(tuán)隊(duì)開(kāi)發(fā)的聚焦爬蟲(chóng)工具從Sourcforge.net網(wǎng)站爬取開(kāi)源項(xiàng)目Vuze的郵件列表信息,并結(jié)合使用TortoiseSVN工具導(dǎo)出該項(xiàng)目的版本日志信息;根據(jù)網(wǎng)上提供的項(xiàng)目版本信息,使用Dependencyfinder工具解析源代碼構(gòu)建軟件網(wǎng)絡(luò),再根據(jù)所獲取的項(xiàng)目歷史信息構(gòu)建開(kāi)發(fā)者網(wǎng)絡(luò);基于所得的軟件網(wǎng)絡(luò)與開(kāi)發(fā)者網(wǎng)絡(luò),進(jìn)行協(xié)同演化分析,圖1為整個(gè)研究的框架。
1) 數(shù)據(jù)獲取。我們的工作需要具備獲取項(xiàng)目源代碼和修改日志相關(guān)信息的權(quán)限,所以選取開(kāi)源軟件為實(shí)驗(yàn)對(duì)象。開(kāi)源軟件Vuze(原名Azureus)是一款知名的采用BitTorrent協(xié)議的P2P文件共享客戶(hù)端軟件,可用于查找/下載種子文件。該軟件項(xiàng)目的開(kāi)發(fā)信息都公開(kāi)部署在開(kāi)源平臺(tái)Sourceforge.net上,任何感興趣的開(kāi)發(fā)者都可以為項(xiàng)目提供個(gè)人的貢獻(xiàn)。通常一個(gè)成功的開(kāi)源軟件在其生命周期中都會(huì)有一系列版本,本文選取從版本4.3.1.0開(kāi)始的10個(gè)連續(xù)版本作為演化分析對(duì)象,為便于描述,我們將版本V4310標(biāo)記為1,依此類(lèi)推版本V4502標(biāo)記為10。
針對(duì)每個(gè)目標(biāo)版本,我們先編譯源代碼并將編譯后的壓縮文件.zip導(dǎo)入dependencyFinder中,得到.xml解析文件;然后利用自行開(kāi)發(fā)的工具分析.xml解析文件,獲取類(lèi)之間的依賴(lài)關(guān)系并保存為.net網(wǎng)絡(luò)格式;最后利用網(wǎng)絡(luò)可視化工具Gephi即可呈現(xiàn)對(duì)應(yīng)的軟件網(wǎng)絡(luò)。另外,我們根據(jù)對(duì)應(yīng)版本的提交時(shí)間,有選擇地爬取項(xiàng)目的郵件列表信息與提交日志。我們先對(duì)開(kāi)發(fā)者信息進(jìn)行去重,例如Paul Gardner與P.Gardner實(shí)際上是指同一個(gè)開(kāi)發(fā)者;以往在對(duì)郵件列表信息處理時(shí),會(huì)發(fā)現(xiàn)同一個(gè)開(kāi)發(fā)者使用多個(gè)郵箱進(jìn)行交互的情況,而本次處理過(guò)程中并未發(fā)現(xiàn)此類(lèi)情況。最后我們把在同一個(gè)線(xiàn)程出現(xiàn)和修改了同一個(gè)類(lèi)文件的開(kāi)發(fā)者間視為有一條合作連邊,構(gòu)建無(wú)向非加權(quán)開(kāi)發(fā)者網(wǎng)絡(luò)。表1列出了首尾兩個(gè)版本中軟件網(wǎng)絡(luò)與開(kāi)發(fā)者網(wǎng)絡(luò)的統(tǒng)計(jì)信息。
圖1 研究框架Fig.1 The framework of our study
表1 項(xiàng)目統(tǒng)計(jì)信息Tab.1 Statistics of the project vuze
2) 網(wǎng)絡(luò)模型。軟件網(wǎng)絡(luò)模型:根據(jù)選取的粒度不同,常用的軟件網(wǎng)絡(luò)有包級(jí)軟件網(wǎng)絡(luò)、類(lèi)級(jí)軟件網(wǎng)絡(luò)和方法級(jí)軟件網(wǎng)絡(luò)??紤]到包級(jí)粒度過(guò)于粗糙而方法級(jí)粒度一定程度上太細(xì)會(huì)加重?cái)?shù)據(jù)處理負(fù)擔(dān),本文所使用的網(wǎng)絡(luò)是基于類(lèi)之間依賴(lài)關(guān)系的軟件網(wǎng)絡(luò)(Software Dependency Network,簡(jiǎn)稱(chēng)SDN),定義為:Gc=(Vc,Ec),其中Vc為節(jié)點(diǎn)集,即為開(kāi)源軟件中所有的類(lèi)和接口;Ec為節(jié)點(diǎn)對(duì)之間的邊集,即為對(duì)象之間的關(guān)聯(lián)關(guān)系。在CDN中,4種情況下類(lèi)A與類(lèi)B之間被視為存在關(guān)聯(lián)關(guān)系:類(lèi)A與類(lèi)B之間有繼承關(guān)系;類(lèi)A與接口B之間有實(shí)現(xiàn)關(guān)系;類(lèi)A中有類(lèi)B的變量;類(lèi)A中的方法調(diào)用了類(lèi)B對(duì)象。在軟件實(shí)現(xiàn)中,類(lèi)之間的依賴(lài)關(guān)系是有向的,而考慮到開(kāi)發(fā)者合作的相互性,我們的軟件網(wǎng)絡(luò)為無(wú)向非加權(quán)網(wǎng)絡(luò),即類(lèi)A與類(lèi)B之間只有存在以上4種關(guān)系中的至少一種便有eab=1,否則eab=0。關(guān)于軟件網(wǎng)絡(luò)的詳細(xì)介紹,推薦感興趣的讀者參考我們之前的工作[4]。
開(kāi)發(fā)者網(wǎng)絡(luò)模型:開(kāi)源軟件社區(qū)中的開(kāi)發(fā)者大部分是來(lái)自世界各地的志愿者,他們加入一個(gè)開(kāi)源軟件的開(kāi)發(fā)主要是為了增加開(kāi)發(fā)經(jīng)驗(yàn)和體檢虛擬團(tuán)隊(duì)合作的樂(lè)趣,通過(guò)知識(shí)共享、信息交互體現(xiàn)群體智慧在軟件開(kāi)發(fā)過(guò)程中的作用。開(kāi)發(fā)者可以通過(guò)各種交互渠道,如郵件列表、版本控制工具CVS/SVN/Git、Bug庫(kù)和論壇等,來(lái)實(shí)現(xiàn)交互。在構(gòu)建開(kāi)發(fā)者合作網(wǎng)絡(luò)(Developer Collaboration Network,簡(jiǎn)稱(chēng)DCN)過(guò)程中,用Gd=(Vd,Ed)表示一個(gè)開(kāi)發(fā)者網(wǎng)絡(luò),其中Vd代表參與項(xiàng)目的開(kāi)發(fā)者,Ed為開(kāi)發(fā)者之間的合作,即若開(kāi)發(fā)者C與開(kāi)發(fā)者D參與了同一任務(wù)(包括bug修復(fù),功能改進(jìn))則被視為存在一條合作連邊ecd=1,否則ecd=0。本文沒(méi)有考慮兩個(gè)開(kāi)發(fā)者間的合作次數(shù)。
圖2是社會(huì)-技術(shù)網(wǎng)絡(luò)模型構(gòu)建示意圖,一個(gè)開(kāi)發(fā)者發(fā)現(xiàn)問(wèn)題后提交相應(yīng)報(bào)告,其他感興趣的開(kāi)發(fā)者可以對(duì)看到的報(bào)告有選擇地提供修改建議,例如開(kāi)發(fā)者4提交報(bào)告report 1后,開(kāi)發(fā)者3提出修改意見(jiàn),開(kāi)發(fā)者1在開(kāi)發(fā)者3的基礎(chǔ)上再次提交修改,最后由開(kāi)發(fā)者2解決。這種在修改過(guò)程中開(kāi)發(fā)者間形成的關(guān)系可視為合作關(guān)系。同時(shí),提交的報(bào)告可能涉及一個(gè)或多個(gè)軟件包,在一個(gè)包中又常包含多個(gè)類(lèi),類(lèi)與類(lèi)之間通過(guò)前面提到的4種關(guān)系建立關(guān)聯(lián)。開(kāi)發(fā)者通過(guò)對(duì)相應(yīng)類(lèi)的修改來(lái)解決問(wèn)題,這種修改關(guān)系使得開(kāi)發(fā)者合作網(wǎng)絡(luò)與軟件依賴(lài)網(wǎng)絡(luò)關(guān)聯(lián)起來(lái),從而構(gòu)成一個(gè)雙層的社會(huì)-技術(shù)網(wǎng)絡(luò)(Socio-Technical Network,簡(jiǎn)稱(chēng)STN)。
圖2 社會(huì)-技術(shù)網(wǎng)絡(luò)模型示意圖Fig.2 A simple example and its corresponding socio-technical network model
網(wǎng)絡(luò)的節(jié)點(diǎn)數(shù)與邊數(shù)直接反映了一個(gè)網(wǎng)絡(luò)的規(guī)模,一個(gè)開(kāi)源軟件系統(tǒng)的軟件網(wǎng)絡(luò)節(jié)點(diǎn)代表系統(tǒng)中類(lèi)的個(gè)數(shù),而邊代表類(lèi)之間的依賴(lài)關(guān)系,功能越多類(lèi)越多,邊越多系統(tǒng)越復(fù)雜。因此,軟件網(wǎng)絡(luò)規(guī)模的變化能夠體現(xiàn)軟件系統(tǒng)內(nèi)部結(jié)構(gòu)復(fù)雜性的變化。與軟件網(wǎng)絡(luò)相對(duì)應(yīng),開(kāi)源社區(qū)開(kāi)發(fā)者合作網(wǎng)絡(luò)中節(jié)點(diǎn)代表參與的社區(qū)開(kāi)發(fā)者,開(kāi)源社區(qū)中的開(kāi)發(fā)者可自由選擇感興趣的項(xiàng)目,因此節(jié)點(diǎn)規(guī)模間接反映項(xiàng)目的受歡迎程度;開(kāi)發(fā)者間的合作緊密程度可通過(guò)網(wǎng)絡(luò)的連邊進(jìn)行體現(xiàn),邊越多表示開(kāi)發(fā)者間合作越緊密,加權(quán)網(wǎng)絡(luò)中邊的權(quán)重還可表示合作的頻率。已有研究關(guān)注開(kāi)發(fā)者潛在合作同行的推薦,以緩解合作的稀疏性[26]。
為分析兩類(lèi)網(wǎng)絡(luò)節(jié)點(diǎn)與邊的演化情況,圖3與圖4分別給出了它們?cè)?0個(gè)版本中的變化趨勢(shì),其中橫軸表示每個(gè)版本對(duì)應(yīng)的版本序列號(hào)(1-10),縱軸表示對(duì)應(yīng)的指標(biāo)值(其他圖的軸意思類(lèi)似)。圖3顯示SDN網(wǎng)絡(luò)與DCN網(wǎng)絡(luò)的節(jié)點(diǎn)數(shù)均隨時(shí)間不斷增多,只是增長(zhǎng)趨勢(shì)有所不同。SDN網(wǎng)絡(luò)中節(jié)點(diǎn)與邊的增長(zhǎng)在一定周期內(nèi)幅度很小,之后存在一個(gè)大的增加,隨后又保持相對(duì)穩(wěn)定,如版本1-3,4-7,8-10這3個(gè)階段增長(zhǎng)幅度很少,可能的解釋是這些階段主要負(fù)責(zé)系統(tǒng)的維護(hù)工作,無(wú)新的功能添加;而3-4,7-8之間卻有一個(gè)大幅度的增長(zhǎng),分別增加了90和98個(gè)類(lèi)文件,說(shuō)明在這兩個(gè)階段版本間有新的功能添加。SDN網(wǎng)絡(luò)規(guī)模的演化也表明大致3-4個(gè)版本周期后會(huì)有一次大的更新。
圖3 軟件網(wǎng)絡(luò)與開(kāi)發(fā)者網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)演化Fig.3 Evolution of nodes in SDN and DCN
圖4 軟件網(wǎng)絡(luò)與開(kāi)發(fā)者網(wǎng)絡(luò)邊數(shù)演化Fig.4 Evolution of edges in SDN and DCN
雖然同樣呈增長(zhǎng)趨勢(shì),但DCN網(wǎng)絡(luò)與SDN網(wǎng)絡(luò)的演化趨勢(shì)明顯存在差異。首先,開(kāi)發(fā)者數(shù)量線(xiàn)性增長(zhǎng)更明顯,不存在周期性增長(zhǎng)的現(xiàn)象,其中一個(gè)主要原因可能與開(kāi)源社區(qū)的零散、自由的松耦合合作方式有關(guān),感興趣的開(kāi)發(fā)者任何時(shí)刻都可以參與項(xiàng)目提供貢獻(xiàn),這種自愿性使得項(xiàng)目成員隨時(shí)間一直增長(zhǎng),經(jīng)歷10個(gè)版本,開(kāi)發(fā)者數(shù)由原來(lái)的38人增加到144人。其次,DCN網(wǎng)絡(luò)中邊的增長(zhǎng)幅度相對(duì)更緩慢,說(shuō)明合作并不緊密;在版本6-9期間,網(wǎng)絡(luò)的合作僅增加了18。需要注意的是,DCN網(wǎng)絡(luò)中開(kāi)發(fā)者既可以自由加入,同樣可以隨時(shí)離開(kāi),所以這里的增長(zhǎng)都是相對(duì)前一個(gè)時(shí)間段而言。
實(shí)驗(yàn)結(jié)果表明:DCN網(wǎng)絡(luò)與SDN網(wǎng)絡(luò)的規(guī)模隨時(shí)間均滿(mǎn)足持續(xù)增長(zhǎng)規(guī)律,只是SDN網(wǎng)絡(luò)節(jié)點(diǎn)與邊的增長(zhǎng)趨勢(shì)表現(xiàn)出一定的周期性,而DCN網(wǎng)絡(luò)的線(xiàn)性增長(zhǎng)趨勢(shì)更明顯,但節(jié)點(diǎn)與邊增長(zhǎng)不同步。
節(jié)點(diǎn)度用來(lái)表示一個(gè)節(jié)點(diǎn)與網(wǎng)絡(luò)中其他節(jié)點(diǎn)的直接連接情況,一個(gè)網(wǎng)絡(luò)的平均節(jié)點(diǎn)度可表示為 〈 k〉=為網(wǎng)絡(luò)中節(jié)點(diǎn)總數(shù),deg(i)為節(jié)點(diǎn)i的度。平均節(jié)點(diǎn)度可用刻畫(huà)網(wǎng)絡(luò)的連接程度,即〈k〉越大,網(wǎng)絡(luò)的連接度越好。在軟件網(wǎng)絡(luò)中,〈k〉越大表示類(lèi)之間相互調(diào)用越直接,系統(tǒng)運(yùn)行越靈活;在開(kāi)發(fā)者網(wǎng)絡(luò)中,〈k〉越大表示開(kāi)發(fā)者間合作更方便,便于知識(shí)的共享。已有工作表明一些典型網(wǎng)絡(luò)(如科學(xué)家合作網(wǎng)絡(luò)[27]、語(yǔ)言網(wǎng)[28])的平均度呈近似線(xiàn)性增長(zhǎng)的演化趨勢(shì),然而,是否本文中STN網(wǎng)絡(luò)的兩層網(wǎng)絡(luò)也有近似的增長(zhǎng)趨勢(shì)。
圖5為SDN網(wǎng)絡(luò)與DCN網(wǎng)絡(luò)平均度〈k〉的演化情況,首先,很明顯兩類(lèi)網(wǎng)絡(luò)均滿(mǎn)足近似線(xiàn)性增長(zhǎng)的演化趨勢(shì),與已有的研究結(jié)果保持一致;其次,SDN網(wǎng)絡(luò)的〈k〉比DCN網(wǎng)絡(luò)的〈k〉要大,例如版本1時(shí),前者的〈k〉為10.3,而后者為4.38,這與兩類(lèi)網(wǎng)絡(luò)本身的規(guī)模有關(guān),而SDN網(wǎng)絡(luò)的〈k〉不如DCN網(wǎng)絡(luò)的〈k〉增長(zhǎng)幅度大,前者10個(gè)版本的增長(zhǎng)幅度僅為0.1左右,而后者從4.38增長(zhǎng)到6.39,說(shuō)明SDN網(wǎng)絡(luò)的結(jié)構(gòu)相對(duì)于DCN網(wǎng)絡(luò)更穩(wěn)定,因?yàn)榘姹镜纳?jí)更多是在已有的基礎(chǔ)上進(jìn)行修復(fù)與添加新功能,并不會(huì)影響系統(tǒng)的整體架構(gòu),而開(kāi)發(fā)團(tuán)隊(duì)中個(gè)別成員的加入可能會(huì)使得整個(gè)團(tuán)隊(duì)合作氣氛變得更加活躍,合作更頻繁。然后,從整體上而言,兩類(lèi)網(wǎng)絡(luò)的增長(zhǎng)并不同步,在SDN網(wǎng)絡(luò)中,版本3至版本5的SDN網(wǎng)絡(luò)〈k〉有一個(gè)增長(zhǎng)趨勢(shì),而對(duì)應(yīng)的DCN網(wǎng)絡(luò)中〈k〉表現(xiàn)卻相對(duì)穩(wěn)定,甚至相對(duì)于前一個(gè)版本2有下降趨勢(shì)。另外,從版本5之后,DCN網(wǎng)絡(luò)的〈k〉變化明顯加快。
實(shí)驗(yàn)結(jié)果表明:SDN網(wǎng)絡(luò)與DCN網(wǎng)絡(luò)的平均度均滿(mǎn)足近似線(xiàn)性增長(zhǎng),即復(fù)雜性不斷增長(zhǎng);DCN網(wǎng)絡(luò)的增長(zhǎng)幅度更大但平均度數(shù)值始終比SDN網(wǎng)絡(luò)小,且兩類(lèi)網(wǎng)絡(luò)的平均度增長(zhǎng)不同步。
網(wǎng)絡(luò)的最短路徑(L)和聚類(lèi)系數(shù)(C)是衡量“小世界”特性的兩個(gè)基本指標(biāo),L定義為網(wǎng)絡(luò)中所有節(jié)點(diǎn)對(duì)最短路徑的平均值:為任意節(jié)點(diǎn)對(duì)i和j之間的最短路徑,N為網(wǎng)絡(luò)的節(jié)點(diǎn)數(shù),常用于衡量網(wǎng)絡(luò)中節(jié)點(diǎn)間的信息傳播能力,在SDN網(wǎng)絡(luò)與DCN網(wǎng)絡(luò)中分別可用于反映系統(tǒng)調(diào)試過(guò)程中類(lèi)之間的響應(yīng)效率與開(kāi)發(fā)者間知識(shí)共享的能力。C定義為網(wǎng)絡(luò)中所有節(jié)點(diǎn)的鄰接節(jié)點(diǎn)間的連接緊密程度的均值:-1),ni,li分別為節(jié)點(diǎn)i的鄰接節(jié)點(diǎn)數(shù)與這些鄰接節(jié)點(diǎn)間實(shí)際的連接數(shù)。該指標(biāo)有助于檢測(cè)軟件系統(tǒng)設(shè)計(jì)中的依賴(lài)關(guān)系,以及開(kāi)發(fā)者間“合作者的合作者”之間的合作關(guān)系。
圖6給出了SDN網(wǎng)絡(luò)與DCN網(wǎng)絡(luò)的最短路徑L的演化情況,很明顯兩個(gè)網(wǎng)絡(luò)L的演化趨勢(shì)很相似,都隨時(shí)間逐漸變小,且L的數(shù)值規(guī)模相同均小于4。從下降幅度而言,由于SDN網(wǎng)絡(luò)在演化過(guò)程中整體更穩(wěn)定,所以L變化幅度更小,與預(yù)期的實(shí)驗(yàn)結(jié)果相吻合。更有趣的是,兩類(lèi)網(wǎng)絡(luò)的L都表現(xiàn)出一定程度的階段性下降,說(shuō)明網(wǎng)絡(luò)中存在部分更重要的節(jié)點(diǎn),由于這些節(jié)點(diǎn)的加入使得網(wǎng)絡(luò)的節(jié)點(diǎn)拓?fù)渚嚯x變得更近。
圖5 軟件網(wǎng)絡(luò)與開(kāi)發(fā)者網(wǎng)絡(luò)平均度〈k〉的演化Fig.5 Evolution of〈k〉in SDN and DCN
圖6 軟件網(wǎng)絡(luò)與開(kāi)發(fā)者網(wǎng)絡(luò)平均最短路徑長(zhǎng)度的演化Fig.6 Evolution of average path length Lin SDN and DCN
圖7是聚類(lèi)系數(shù)C的演化結(jié)果,可以看到SDN網(wǎng)絡(luò)中C有先減后增的變化趨勢(shì),雖然這種變化相對(duì)于DCN網(wǎng)絡(luò)非常輕微。在DCN網(wǎng)絡(luò)中,聚類(lèi)系數(shù)C明顯呈增長(zhǎng)趨勢(shì),說(shuō)明社區(qū)中合作者的合作者更傾向于建立新的合作。整體上,10個(gè)版本的DCN網(wǎng)絡(luò)聚類(lèi)系數(shù)C比SDN的要大,結(jié)合最短路徑特性,可見(jiàn)兩類(lèi)網(wǎng)絡(luò)都有“小世界”特性,且DCN網(wǎng)絡(luò)中節(jié)點(diǎn)連接更緊密。鑒于DCN網(wǎng)絡(luò)規(guī)模比SDN網(wǎng)絡(luò)小很多,加上開(kāi)發(fā)者合作的定義原本就相對(duì)較為粗糙,所以其“小世界”現(xiàn)象更顯著。
實(shí)驗(yàn)結(jié)果表明:SDN網(wǎng)絡(luò)與DCN網(wǎng)絡(luò)均有“小世界”特性,兩類(lèi)網(wǎng)絡(luò)的最短路徑L都表現(xiàn)出階段性下降,但DCN網(wǎng)絡(luò)聚類(lèi)效果比SDN網(wǎng)絡(luò)越來(lái)越明顯。
現(xiàn)實(shí)網(wǎng)絡(luò)中,社區(qū)結(jié)構(gòu)是一種非常普遍的現(xiàn)象,如社交網(wǎng)絡(luò)中人以類(lèi)聚,表現(xiàn)為同一社區(qū)的節(jié)點(diǎn)連接緊密,跨社區(qū)的節(jié)點(diǎn)連接比較稀疏。直觀上,SDN網(wǎng)絡(luò)中同一個(gè)模塊內(nèi)的類(lèi)依賴(lài)比較緊密(高內(nèi)聚),不同模塊中的類(lèi)盡量保持不必要的依賴(lài)(低耦合),SDN網(wǎng)絡(luò)中的社區(qū)結(jié)構(gòu)有助于為軟件重構(gòu)提供依據(jù);而DCM網(wǎng)絡(luò)中根據(jù)成員的抱團(tuán)現(xiàn)象有助于了解開(kāi)發(fā)者的實(shí)踐技能,便于任務(wù)分配與人員調(diào)度。模塊度常用于衡量網(wǎng)絡(luò)社區(qū)劃分結(jié)果的好壞,社區(qū)劃分算法很多,如Newman等[29]的快速劃分方法、Blondel等[30]的啟發(fā)式方法,考慮到文章中軟件網(wǎng)絡(luò)的規(guī)模相對(duì)比較大,我們采用了Blondel等人提出的劃分方法,該方法主要份兩個(gè)階段:第1階段,初始化每個(gè)節(jié)點(diǎn),假設(shè)每個(gè)節(jié)點(diǎn)為一個(gè)獨(dú)立的社區(qū);第2階段,對(duì)每個(gè)節(jié)點(diǎn)i,計(jì)算該節(jié)點(diǎn)從它的社區(qū)移動(dòng)到其鄰接節(jié)點(diǎn)j的社區(qū)時(shí)所產(chǎn)生的收益ΔQ,最后將節(jié)點(diǎn)i合并到正收益最大的那個(gè)社區(qū)。重復(fù)以上步驟,直到不再有可合并的情況。ΔQ的計(jì)算公式為
其中,Σin為社區(qū)C中所有的連邊數(shù),Σtot為網(wǎng)絡(luò)中所有連接到社區(qū)C中節(jié)點(diǎn)的連邊數(shù),ki為與節(jié)點(diǎn)i相連的連邊數(shù),ki,in為節(jié)點(diǎn)i與社區(qū)C中節(jié)點(diǎn)的連邊數(shù),m為整個(gè)網(wǎng)絡(luò)的連邊數(shù)。
我們分析了SDN網(wǎng)絡(luò)與DCM網(wǎng)絡(luò)模塊度在10個(gè)版本中的演化趨勢(shì),如圖8所示,結(jié)果顯示兩個(gè)網(wǎng)絡(luò)的模塊性都存在波動(dòng)性,但整體性有下降趨勢(shì)。根據(jù)開(kāi)源軟件的開(kāi)發(fā)特性,受時(shí)間、資源等因素的影響,為確保不影響軟件運(yùn)行的前提下,一旦發(fā)現(xiàn)問(wèn)題必須盡快修改而且可能由不同的開(kāi)發(fā)者完成,加上新成員對(duì)軟件結(jié)構(gòu)偏陌生,導(dǎo)致修改后的軟件結(jié)構(gòu)變得更加復(fù)雜,模塊性衰退。DCM網(wǎng)絡(luò)中,模塊度變化越大,可能的原因有:核心人員的變動(dòng),使得原來(lái)的組織結(jié)構(gòu)發(fā)生變化;新任務(wù)的分配,使得人員重新調(diào)整,一個(gè)開(kāi)發(fā)者可能由一個(gè)項(xiàng)目組調(diào)配到另外一個(gè)項(xiàng)目組。對(duì)比兩個(gè)網(wǎng)絡(luò)的模塊度值,SDN網(wǎng)絡(luò)比DCM網(wǎng)絡(luò)的模塊度值大,而且波動(dòng)相對(duì)更小。
圖7 軟件網(wǎng)絡(luò)與開(kāi)發(fā)者網(wǎng)絡(luò)聚類(lèi)系數(shù)的演化Fig.7 Evolution of clustering coefficient Cin SDN and DCN
圖8 軟件網(wǎng)絡(luò)SDN與開(kāi)發(fā)者網(wǎng)絡(luò)DCN模塊度的演化Fig.8 Evolution of modularity in SDN and DCN
實(shí)驗(yàn)結(jié)果表明:SDN網(wǎng)絡(luò)與DCN網(wǎng)絡(luò)的模塊度在不同版本中都有波動(dòng),DCN中波動(dòng)更大而SDN網(wǎng)絡(luò)的模塊度值偏大,但兩者整體都表現(xiàn)為下降趨勢(shì)。
很明顯,DCN網(wǎng)絡(luò)與SDN網(wǎng)絡(luò)的規(guī)模差別甚大,他們的演化方式也不同。一個(gè)成型的軟件系統(tǒng)在維護(hù)過(guò)程中僅需修改少量的模塊,而開(kāi)發(fā)人員變化可能更大。開(kāi)源社區(qū)中開(kāi)發(fā)者往往分布在世界各地,不受時(shí)間、地域和文化等因素的約束,任何有能力的個(gè)人都可以提供問(wèn)題的解決方案,甚至一些開(kāi)發(fā)者只是在某一個(gè)版本中做出貢獻(xiàn),在以后的版本中都不加參與。這種“低門(mén)檻”正是為什么DCN網(wǎng)絡(luò)節(jié)點(diǎn)呈明顯的線(xiàn)性增長(zhǎng)的一個(gè)主要原因。軟件系統(tǒng)的每個(gè)版本并不會(huì)一直有新的功能添加,有些版本只是修改上一版本中存在的缺陷問(wèn)題,這種修復(fù)工作一般不會(huì)導(dǎo)致網(wǎng)絡(luò)規(guī)模的明顯變化。另外,SDN網(wǎng)絡(luò)規(guī)模與DCN網(wǎng)絡(luò)規(guī)模并不成正比,表明開(kāi)發(fā)團(tuán)隊(duì)的壯大并不會(huì)直接影響系統(tǒng)內(nèi)部結(jié)構(gòu)的復(fù)雜性。
平均度〈k〉可反映一個(gè)網(wǎng)絡(luò)中節(jié)點(diǎn)的平均連接程度,在軟件工程實(shí)踐中,SDN網(wǎng)絡(luò)〈k〉有助于項(xiàng)目負(fù)責(zé)人根據(jù)需要對(duì)新建與維護(hù)的工作量進(jìn)行成本預(yù)測(cè),DCN網(wǎng)絡(luò)〈k〉可為評(píng)估項(xiàng)目完成時(shí)間與團(tuán)隊(duì)協(xié)調(diào)代價(jià)提供參考;加上SDN網(wǎng)絡(luò)與DCN網(wǎng)絡(luò)最短路徑均小于6,聚類(lèi)系數(shù)較大且隨時(shí)間還有不同程度的增大,說(shuō)明在STN網(wǎng)絡(luò)中,盡管SDN網(wǎng)絡(luò)與DCN網(wǎng)絡(luò)的一些指標(biāo)增長(zhǎng)并不同步,但隨著時(shí)間的變化,兩類(lèi)網(wǎng)絡(luò)中節(jié)點(diǎn)的直接或間接的關(guān)聯(lián)關(guān)系會(huì)越來(lái)越明顯。根據(jù)開(kāi)發(fā)者的開(kāi)發(fā)歷史信息與DCN網(wǎng)絡(luò)的“小世界”特性,一個(gè)修改任務(wù)可以很快分配到具備完成任務(wù)能力的人手中。
隨著需求的變動(dòng)與運(yùn)行環(huán)境的改變,軟件系統(tǒng)的結(jié)構(gòu)會(huì)相應(yīng)變動(dòng),而模塊度的波動(dòng)是最直觀的體現(xiàn)。SDN網(wǎng)絡(luò)模塊度的演化可用于軟件重構(gòu),例如兩個(gè)版本間的模塊度大幅度下降意味著存在重構(gòu)點(diǎn)。相對(duì)于SDN網(wǎng)絡(luò),DCN網(wǎng)絡(luò)的抱團(tuán)現(xiàn)象不明顯且波動(dòng)較大,說(shuō)明社區(qū)開(kāi)發(fā)者更多的是小范圍的局部合作,整體上合作比較稀疏。眾所周知,這種合作不利于知識(shí)的傳播,所以可根據(jù)DCN網(wǎng)絡(luò)中模塊度的變化對(duì)社區(qū)成員合作進(jìn)行協(xié)調(diào),提供更多的交互渠道,建立開(kāi)發(fā)者推薦和激勵(lì)方法。
通過(guò)對(duì)比STN網(wǎng)絡(luò)中DCN網(wǎng)絡(luò)與SDN網(wǎng)絡(luò)在一些指標(biāo)上的演化,我們得到了一些有趣的發(fā)現(xiàn),但本文也存在一些不足之處:首先,10個(gè)版本的時(shí)間跨度并不相等,我們僅以網(wǎng)上提供的提交時(shí)間為劃分基準(zhǔn),雖然在數(shù)據(jù)處理過(guò)程中不可避免會(huì)引入一些偏差,但實(shí)驗(yàn)結(jié)果表明,這些小的偏差并沒(méi)有影響最終的演化分析,所以,文中的發(fā)現(xiàn)具有一定的代表性。其次,開(kāi)發(fā)者的歷史信息只考慮了郵件列表和提交日期,針對(duì)開(kāi)發(fā)者間的合作,我們假設(shè)參與同一個(gè)任務(wù)的開(kāi)發(fā)者間存在合作,且構(gòu)建的DCN網(wǎng)絡(luò)為無(wú)權(quán)網(wǎng)絡(luò),無(wú)法呈現(xiàn)他們之間的合作次數(shù)。雖然DCN網(wǎng)絡(luò)的定義比較狹隘,但很多已有研究工作采用了這種基于“共事”關(guān)系構(gòu)建DCN網(wǎng)絡(luò)的方法,并證實(shí)了這種 DCN 網(wǎng)絡(luò)的有效性[18-20]。
隨軟件版本的更新,軟件網(wǎng)絡(luò)與開(kāi)發(fā)者合作網(wǎng)絡(luò)的規(guī)模不斷增大,軟件網(wǎng)絡(luò)以3-4個(gè)版本為周期有規(guī)律地增長(zhǎng),而開(kāi)發(fā)者合作網(wǎng)絡(luò)呈明顯的線(xiàn)性增長(zhǎng);兩類(lèi)網(wǎng)絡(luò)的平均度均滿(mǎn)足近似線(xiàn)性增長(zhǎng),但整體上增長(zhǎng)并不一致;它們均有“小世界”特性,且最短路徑都表現(xiàn)為階段性下降,但開(kāi)發(fā)者間局部合作更明顯;它們的社區(qū)結(jié)構(gòu)都不斷地變化,且整體上模塊度呈下降趨勢(shì),但開(kāi)發(fā)者合作網(wǎng)絡(luò)的變化更大??傊覀兊墓ぷ靼l(fā)現(xiàn)開(kāi)源軟件系統(tǒng)的社會(huì)-技術(shù)網(wǎng)絡(luò)模型中兩類(lèi)網(wǎng)絡(luò)既有共性又有差異,一定程度上既相互促進(jìn)又相互影響。
我們的下一步工作將主要關(guān)注兩個(gè)方面:引入更多的版本,考慮不同語(yǔ)言(除Java之外)、不同規(guī)模的軟件系統(tǒng)作為研究對(duì)象,進(jìn)一步驗(yàn)證并豐富我們的結(jié)論;軟件網(wǎng)絡(luò)中類(lèi)之間的依賴(lài)實(shí)際是有向帶權(quán)重的,開(kāi)發(fā)者合作網(wǎng)絡(luò)中合作的次數(shù)也會(huì)對(duì)結(jié)果產(chǎn)生一定影響,因此,考慮邊的方向與權(quán)重,能使結(jié)論更貼近現(xiàn)實(shí)和更具一般性。
[1] 王懷民,吳文峻,毛新軍,等.復(fù)雜軟件系統(tǒng)的成長(zhǎng)性構(gòu)造與適應(yīng)性演化[J].中國(guó)科學(xué):信息科學(xué),2014,44(6):743-761.Wang Huaimin,Wu Wenjun,Mao Xinjun,et al.Growing construction and adaptive evolution of complex software system[J].Scientia Sinica Informationis,2014,44(6):743-761.
[2] 李兵,王浩,李增揚(yáng),等.基于復(fù)雜網(wǎng)絡(luò)的軟件復(fù)雜性度量研究[J].電子學(xué)報(bào),2006,32(12A):2371-2375.Li Bing,Wang Hao,Li Zengyang,et al.Software complexity metrics based on complex networks[J].Acta Electronica Sinica,2006,32(12A):2371-2375.
[3] Bhattacharya P,Iliofotou M,Neamtiu I,et al.Graph-based analysis and prediction for software evolution[C]//Proceedings of the 34th International Conference on Software Engineering(ICSE).Zurich,Switzerland:IEEE,2012:419-429.
[4]Pan W F,Li B,Ma Y T,et al.Multi-granularity evolution analysis of software using complex network theory[J].Journal of System Science and Complexity,2010,24(4):1-14.
[5] Lehman M M,Ramil J F,Wernick P D,et al.Metrics and laws of software evolution-the nineties view[C]//Proceedings of the 4th International Symposium on Software Metrics.Washington,USA:ACM,1997:20-32.
[6] Kleinberg J.The convergence of social and technological networks[J].Communications of the ACM,2008,51(11):66-72.
[7] Conway M E.How do committees invent[J].Datamation,1968,14(4):28-31.
[8] Zanetti M S.The co-evolution of socio-technical structures in sustainable software development:Lessons from the open source software communities[C]//Proceedings of the 34th International Conference on Software Engineering.Zurich,Swizerland:IEEE,2012:1587-1590.
[9] Valverde S,Cancho R,and Sole R.Scale-free networks from optimal design[J].Euro physics Letters,2002,60(4):512-517.
[10]Valverde S and Sole R.Hierarchical small worlds in software architecture[DB/OL].arXiv preprint cond-mat/0307278,2003.
[11]Subelj L.Software systems through complex networks science:review,analysis and applications[C]//Proceedings of the First International Workshop on Software Mining.Beijing,China:ACM,2012:9-16.
[12]Chatzigeorgiou A,Melas G.Trends in object-oriented software evolution:investigating network properties[C].Proceedings of the 34th International Conference on Software Engineering.Zurich,Switzerland:IEEE,2012:1309-1312.
[13]Valverde S and Sole R.Network motifs in computational graphs:a case study in software architecture[J].Physical Review E,2005,72(2):026107.
[14]Tosun A,Turhan B,and Bener A.Validation of network measures as indicators of defective modules in software systems[C]//Proceedings of the 5th International Conference on Predictor Models in Software Engineering.Vancouver,Canada:ACM,2009:9.
[15]Steidl D,Hummel B,Juergens E.Using network analysis for recommendation of central software classes[C]//Proceedings of the 19th Working Conference on Reverse Engineering.Kingston,Canada:IEEE,2012:93-102.
[16]Jenkins S,Kirk S R.Software architecture graphs as complex networks:a novel partitioning scheme to measure stability and evolution[J].Information Science,2007,17(12):2587-2601.
[17]Wang L,Wang Z,Yang C,et al.Linux kernels as complex networks:a novel method to study evolution[C]//Proceedings of IEEE International Conference on Software Maintenance.Edmonton,Canada:IEEE,2009:41-50.
[18]Businge J,Serebrenik A,Brand M.An empirical study of the evolution of eclipse third-party plug-ins[C]//Proceedings of the Joint ERCIM Workshop on Software Evolution and International Workshop on Principles of Software Evolution Antwerp,Belgium:ACM,2010:63-72.
[19]Ngamkajornwiwat K,Zhang D,Koru A G,et al.An exploratory study on the evolution of OSS developer communities[C]//Proceedings of the 41st Annual Hawaii Int′l Conf on System Sciences.Hawaii:IEEE,2008:305-305.
[20]Hong Q,Kim S,Cheung S,et al.Understanding a developer social network and its evolution[C]//Proceedings of 27th IEEE International Conference on Software Maintenance.Williamsburg,USA:IEEE,2011:323-332.
[21]Datta S,Sindhgatta R,and Sengupta B.Evolution of developer collaboration on the Jazz Platform:a study of a large scale agile project[C]//Proceedings of the 4th India Software Engineering Conference,2011:21-30.
[22]Kumar A,Gupta A.Evolution of developer social network and its impact on bug fixing process[C]//Proceedings of the 6th India Software Engineering Conference.New Delhi,India:ACM,2013:63-72.
[23]Cataldo M,Herbsleb J D.Communication networks in geographically distributed software development[C]//Proceedings of the 2008ACM conference on Computer supported cooperative work.San Digeo,USA:ACM,2008:579-588.
[24]Lim S L,Bentley P J.Evolving relationships between social networks and stakeholder involvement in software projects[C]//Proceedings of the 13th annual conference on Genetic and evolutionary computation.Dublin,Ireland:ACM,2011:1899-1906.
[25]Sharma V S,Kaulgud V.Studying team evolution during software testing[C]//Proceedings of the 4th International Workshop on Cooperative and Human Aspects of Software Engineering.Waikiki,Honolulu,USA:ACM,2011:72-75.
[26]何鵬,李兵,楊習(xí)輝.Roster:一種開(kāi)發(fā)者潛在同行推薦方法[J].計(jì)算機(jī)學(xué)報(bào),2014,37(4):859-872.He Peng,Li Bin,Yang Xihui.Roster:an approach to potential peer recommendation[J].Chinese Journal of Computers,2014,37(4):859-872.
[27]Barabasi A L,Jeong H,Neda Z.Evolution of the social network of scientific collaborations[J].Physica A,2002,311(3/4):590-614.
[28]Sole R,Corominas-Murtra B,Valverde S,et al.Language networks:their structure,function,and evolution[J].Complexity,2010,15(6):20-26.
[29]Newman M E J.Fast algorithm for detecting community structure in networks[J].Physical Review,2004,69(6):006133.
[30]Blondel V D,Guillaume J L,Lambiotte R.Fast unfolding of communities in large networks[J].Journal of Statistical Mechanics:Theory and Experiment,2008,10:P10008.
復(fù)雜系統(tǒng)與復(fù)雜性科學(xué)2015年2期