引言

近十多年來,復雜網(wǎng)絡理論研究逐漸得到深入和推廣,其應用非常廣泛,涉及社會學、生物、計算機等領域。在軟件工程領域,軟件系統(tǒng)尤其是大型軟件系統(tǒng)規(guī)模的持續(xù)增長引發(fā)系統(tǒng)復雜性的質(zhì)變,許多大型軟件系統(tǒng)在內(nèi)部結(jié)構(gòu)、外部交互、演化方式等維度上表現(xiàn)出新特性。從結(jié)構(gòu)方面,由于規(guī)模變大,從局部度量系統(tǒng)內(nèi)部結(jié)構(gòu)復雜性變得越來越困難,網(wǎng)絡思想有助于從全局的角度解決這一問題。根據(jù)軟件系統(tǒng)內(nèi)部實體(如包,類、方法、組件等)間的依賴關系,將軟件系統(tǒng)抽象為一個網(wǎng)絡,即軟件網(wǎng)絡。從參與者角度而言,軟件系統(tǒng)的開發(fā)不再是單個精英團隊或?qū)<宜芡瓿桑且揽看蟊婇_發(fā),利用群體智慧才能達到目標,是一個典型的“社會-技術(shù)”交融系統(tǒng)。技術(shù)層面分析主要是對已有軟件采用逆向工程方法抽象其組織結(jié)構(gòu),構(gòu)建軟件網(wǎng)絡;社會層面分析主要是根據(jù)社區(qū)群體交互采用社會網(wǎng)絡分析方法,挖掘群體行為。復雜網(wǎng)絡與軟件工程的交叉研究,已引起了眾多學者的關注與認可,如李兵等基于軟件網(wǎng)絡的拓撲結(jié)構(gòu)度量開源軟件系統(tǒng)的復雜性,提高軟件設計質(zhì)量;Bhattachary等根據(jù)軟件網(wǎng)絡中節(jié)點的重要性進行缺陷預測,為測試人員提供檢測優(yōu)先順序;鑒于軟件拓撲結(jié)構(gòu)的多粒度性,潘偉豐等分別從軟件包、類和方法3個粒度研究了開源軟件系統(tǒng)的演化特性。
軟件網(wǎng)絡的研究結(jié)合了復雜網(wǎng)絡和軟件工程理論,它以軟件系統(tǒng)的結(jié)構(gòu)特征為切入點,將復雜網(wǎng)絡的理論應用到軟件工程領域。持續(xù)演化是計算機軟件的固有特性,了解和發(fā)現(xiàn)軟件演化規(guī)律,有助于提高軟件產(chǎn)品質(zhì)量,降低軟件開發(fā)和維護成本。針對軟件演化問題,Lehman提出8個典型的定律,涉及軟件的規(guī)模、質(zhì)量、復雜度、生產(chǎn)率與開發(fā)過程等。目前,隨著軟件的網(wǎng)絡化趨勢越來越明顯,軟件與網(wǎng)絡的關系更加密不可分,用網(wǎng)絡的觀點來分析軟件演化,為軟件工程實踐提供了新的視角。然而,軟件開發(fā)是一個社會性(“人”)和技術(shù)性(“軟件”)匯聚的過程,很多已有研究只是從技術(shù)層面出發(fā),探索了軟件系統(tǒng)技術(shù)維度的復雜性與應用。在軟件生命周期中,從需求獲取、到系統(tǒng)的設計與開發(fā),以及后期維護等階段都離不開人的參與,即軟件系統(tǒng)的社會屬性。軟件的結(jié)構(gòu)決定功能,而Conway定律指出系統(tǒng)的最終設計結(jié)構(gòu)等同于設計系統(tǒng)的組織成員之間的交互結(jié)構(gòu)。因此,一個軟件系統(tǒng)既是一個技術(shù)依賴的制品,也涉及一個社會交互的群體,其網(wǎng)絡模型可抽象為一個社會-技術(shù)網(wǎng)絡。
軟件系統(tǒng)在不斷適應環(huán)境和需求變化的過程中持續(xù)演化,軟件演化作為一種技術(shù),主要關心對軟件進行修改的方法;作為一種現(xiàn)象,主要關心誰驅(qū)動的演化以及演化效果如何。基于社會-技術(shù)網(wǎng)絡模型,本文嘗試從軟件演化分析角度探討社會-技術(shù)網(wǎng)絡中的協(xié)同演化問題,彌補已有研究工作只從單一網(wǎng)絡層面審視軟件的演化過程。本文采用類依賴關系描述軟件網(wǎng)絡,任務參與關系描述開發(fā)者網(wǎng)絡,基于復雜網(wǎng)絡度量研究與驗證開源軟件系統(tǒng)版本演化過程中存在的規(guī)律。本文的主要工作為:構(gòu)建開源軟件系統(tǒng)的社會-技術(shù)網(wǎng)絡模型,統(tǒng)計開源軟件系統(tǒng)中軟件網(wǎng)絡與開發(fā)者網(wǎng)絡的網(wǎng)絡規(guī)模、平均度、最短路徑、聚類系數(shù)、社區(qū)結(jié)構(gòu)網(wǎng)絡度量指標等;依次對比分析兩類網(wǎng)絡在10個軟件版本中網(wǎng)絡指標的演化趨勢,發(fā)掘它們演化規(guī)律的一致性與差異。
1 相關工作
Valverde等首次將復雜網(wǎng)絡方法引入軟件結(jié)構(gòu)分析中,將軟件系統(tǒng)的類圖用無向網(wǎng)絡來表示,分析軟件網(wǎng)絡中的復雜網(wǎng)絡特性(如“小世界”和“無標度”),認為軟件開發(fā)中局部優(yōu)化過程可能是導致軟件網(wǎng)絡呈現(xiàn)這些特性的原因。Valverde等還考慮了類之間的有向性,構(gòu)建有向網(wǎng)絡對系統(tǒng)結(jié)構(gòu)進行研究,發(fā)現(xiàn)除了以上特性外,軟件網(wǎng)絡同時具有層次性和模塊性。隨后,一些研究者從不同方面(開發(fā)語言、項目規(guī)模、分析粒度等)再次驗證了軟件網(wǎng)絡的諸多特性并成功應用于工程實踐。在軟件生命周期中,軟件處在一個不斷變化的環(huán)境(新需求、新應用環(huán)境、性能改進等)中,為適應環(huán)境軟件系統(tǒng)必須不斷演化。Jenkins等對軟件包之間的關系進行建模,分析一系列版本中軟件架構(gòu)圖的結(jié)構(gòu)穩(wěn)定性。Wang等獲取了Linux kernel模塊233個版本的類調(diào)用網(wǎng)絡,研究軟件網(wǎng)絡的演化特性。李兵等將復雜網(wǎng)絡與演化算法相結(jié)合,提出一種新的軟件網(wǎng)絡演化模型,發(fā)現(xiàn)該方法能夠很好地刻畫實際軟件系統(tǒng)復雜網(wǎng)絡特性的涌現(xiàn)過程。潘偉豐等更是從包、類和方法3個粒度分析了軟件網(wǎng)絡中節(jié)點度、聚類系數(shù)、最短路徑等指標的演化特性。Businge等研究了Eclipse系統(tǒng)及相關插件的演化規(guī)律,發(fā)現(xiàn)結(jié)果基本滿足Lehman的8項目演化定律。
軟件開發(fā)團隊的演化對軟件質(zhì)量也會帶來很大影響,研究開發(fā)者網(wǎng)絡的演化有助于更好地理解團隊成員在參與開發(fā)過程中的改變。Ngamkajornwiwat等使用社會網(wǎng)絡分析方法研究了KOffice項目開發(fā)者社區(qū)的演化。Hong等討論分析了開發(fā)者合作網(wǎng)絡中冪律分布、模塊性和社區(qū)大小等屬性的演化。Datta等在IBM提供的Jazz平臺上,將開發(fā)者合作網(wǎng)絡的平均最短路徑、聚集系數(shù)、巨型組件大小和平均度等指標與科學家合作網(wǎng)絡進行時間序列的演化對比。Kumar等研究了貢獻者數(shù)、社區(qū)大小、聚類系數(shù)等6個指標的演化。此外,Cataldo等、Lim等、Sharma等應用社會網(wǎng)絡分析方法分別分析了分布式項目、合作網(wǎng)絡與涉眾投入關系、項目測試階段團隊的演化。
以上研究工作存在一個主要的不足:局限于單個網(wǎng)絡層面分析軟件系統(tǒng)中的演化問題,忽略了軟件系統(tǒng)的社會-技術(shù)一致性,以及開發(fā)者合作網(wǎng)絡與軟件網(wǎng)絡之間的相互影響。軟件是由人開發(fā)的,現(xiàn)實中,由于人員的動態(tài)調(diào)整,尤其是核心成員的變動,可能使得原有的設計方案受到影響,最后導致軟件結(jié)構(gòu)發(fā)生變化。針對此類情況,僅從軟件網(wǎng)絡或開發(fā)者網(wǎng)絡的演化分析并不能全面反應實際軟件系統(tǒng)的演化問題。
本文來源:http://www.nvnqwx.com/shiyongwen/1657962.htm