張得光,李 兵,何 鵬,周華昱
(1.武漢大學a.軟件工程國家重點實驗室;b.復雜網絡研究中心武漢430072;2.武漢大學國際軟件學院,武漢430079)
基于軟件生態系統的開源社區特性研究
張得光1a,李 兵1b,2,何 鵬1a,周華昱1a
(1.武漢大學a.軟件工程國家重點實驗室;b.復雜網絡研究中心武漢430072;2.武漢大學國際軟件學院,武漢430079)
隨著開源社區的發展,可供獲取的開源軟件的數量與復雜性急劇增長,致使軟件系統之間由于開發者的交互、組件或模塊的依賴和使用工具的共享而相互關聯,形成開源軟件生態系統。從自然生態系統的角度,分析軟件生態系統的組成成分、知識鏈(網)結構,從軟件項目、同類主題和整個開源社區這3個級別構建軟件生態系統模型,根據自然生態系統的主要特征分析軟件生態系統的開放性、多樣性、調控性及可持續性。在Sourceforge.net開源社區中的分析結果表明,通過研究開源軟件生態系統的特性,有助于提高其生存能力以及知識的循環利用,確保系統的穩定性和健壯性。
開源社區;軟件生態系統;知識鏈;多樣性;可持續性
在軟件開發領域,一些具有工程背景的科學家嘗試從自然界獲取靈感,尋找解決本領域問題的方案。采用該方式已取得了很多成果,包括把自然選擇規律應用于計算機程序開發,設計遺傳算法[1],根據螞蟻的覓食行為提出路徑優化方案[2-4]等。隨著軟件系統開發規模的急劇增大,開發效率要求的不斷提高,加上軟件系統用戶群體日益增長及個性化用戶需求,單個系統之間變得不再彼此獨立,而是存在更多的互利共生關系,這促使人們再次轉向自然界,試圖從生態系統的角度重新研究軟件工程領域的應用。
生態系統一詞出自生物學,最早由英國生態學家泰勒于1935年提出,是指由生物群落與無機環境構成的統一整體。它的范圍沒有固定大小,相互交錯,是生態學領域的一個主要結構和功能單位[5]。與此類似,軟件生態系統(Software Ecosystem,SECO)也可視為軟件工程領域的一個主要結構和功能單位,屬于軟件工程研究的最高層次。
自2005年以來,軟件生態系統一直受到關注,如蘋果的iOS和谷歌的Android智能手機生態系統[6-7]、ODA(Open Design A lliance)開發組織生態系統[8]以及Eclipse和FOSS的開源生態系統[9-10]。有關軟件生態系統的定義,從技術、社會、業務等不同角度有不同說法。結合開源環境下的研究背景,本文采用文獻[11]中的定義:一個軟件生態系統是指在一個公共的技術平臺上,一群行為者通過相互交互形成大量軟件解決方案或服務。
隨著開源社區開發的流行,可供獲取的開源軟件數量與復雜性急劇增長,致使軟件系統之間由于開發者的交互、組件或模塊的依賴和使用工具的共享而被關聯起來,形成開源軟件生態系統。本文通過介紹有關生態系統的基礎知識與軟件生態系統的發展,探討開源軟件生態系統的組成成分、結構與模型,并從開放性、多樣性、調控性與可持續性方面對開源軟件生態系統進行分析。
2.1 自然生態系統
生態系統(自然生態系統)就是在一定空間范圍內,生物群落與非生物環境,通過能量流動、物質循環、信息傳遞而形成相互作用、相互依存的動態復合體[12]。換言之,生態系統就是在一個空間內生物群落與非生物環境形成具有一定功能的整體。生態系統不僅在空間上是個地理單元,還是一個功能單元,既有能量、信息的傳遞又有物質和物種的動態過程。任何一個自然生態系統都是開放系統,都有輸入和輸出的過程以維持動態平衡。
2.2 軟件生態系統
軟件生態系統最早由M esserchm itt[13]等人于2005年提出。由于軟件生態系統是一個新興的方向,諸多研究者從各自的背景投入研究,導致一些術語和特性不一致。文獻[14]將軟件生態系統劃分為以操作系統為中心、以應用為中心和終端用戶編程3類。文獻[15]從商業角度對軟件生態系統進行研究。文獻[16]從業務、架構和社會化3個維度探析軟件生態系統。
在軟件生態系統的研究方向上,文獻[17]從資源管理與多樣性方面對比了SECO與自然生態系統的異同,提出一個研究SECO關鍵特征的議程,討論如何確保SECO的穩定與健壯。文獻[18]結合不同的維度和方面,針對軟件生態系統提出一個初步的研究議程。文獻[19]研究軟件生態系統的系統映射,并總結了軟件生態系統研究的主要方面,包括開源軟件、生態系統建模等。結合上述研究背景,本文在開源環境下展開探討。
3.1 開源軟件生態系統組成
自然生態系統由生物群落和非生物環境組成,其中根據生物群落在物質和能量運動中的作用,又可以大致分為生產者、消費者和分解者3類。與此類似,一個典型的軟件生態系統可理解為由技術平臺、行為者和軟件解決方案或服務(及軟件項目)組成,如圖1所示。

圖1 開源軟件生態系統組成
(1)開源社區是一個開源軟件合作開發社區,它集成了很多不同規模、不同性質的開源項目,為軟件開發提供了整套生命周期服務。作為軟件生態系統的一個技術平臺,開源社區是開源軟件開發者進行開發管理的集中場所,為開發者提供合作交流環境。
(2)能量是自然生態系統正常運轉的動因,在軟件生態系統中,這種能量來自知識的利用。開源社區有著來自不同國家、不同文化與專業知識背景的開發者,若將開發者所具有的專業技能、管理經驗、文化背景等信息統稱為知識,則開發者為知識的攜帶者或生產者,他們利用自己的知識為項目做出貢獻。知識在開發者的合作過程中也有不斷完善與提升,所以,知識是促進軟件生態系統正常運轉的驅動力。
(3)軟件項目作為開發目標,為完成某一個開源項目的開發,項目管理者根據項目的需求組織滿足條件的開發團隊,利用開發者的知識實現項目功能。因此,開源項目實為知識的消費者,群體智能的產物。
(4)用戶根據對社區發布軟件的使用情況,將體驗信息反饋給開發者,開發者在得到用戶反饋信息的基礎上,對開源項目展開進一步改進工作,所以用戶是知識的體驗者,發揮利用知識產物與促進項目完善的作用。
因此,開源軟件生態系統主要由社區平臺,分別作為知識的生產者、消費者和體驗者的開發者,軟件項目和用戶組成,在組成成分上表現為一個社會-技術網絡,需要指出的是,一些情況下用戶也是開發者。
3.2 開源軟件生態系統結構
任何生態系統都有一定的結構,一個穩定的軟件生態系統在結構上不但有自己與眾不同的成分和知識獲取行為,而且不同生態系統之間還有共同之處。下面主要介紹開源軟件生態系統在結構上的一般規律與系統模型。
3.2.1 知識鏈結構
在軟件生態系統中,開發者-項目-用戶通過知識的利用相互建立起關聯關系,這種關聯關系稱為知識鏈,可簡述為開發者通過各種學習方式豐富自身知識,再利用擁有的知識為參與的項目做出貢獻,最后用戶下載使用所開發的項目,根據使用情況反饋體驗信息,反饋信息又將成為開發者進一步改進的目標,最終形成一個循環往復的過程,整個過程如圖2所示。

圖2 知識鏈結構
除水平方向的知識鏈外,開發者與項目之間的參與關系可形成一個貢獻網絡,可以根據參與同一個項目開發的開發者間存在一條合作邊的投影方式,建立一個開發者合作網絡,而合作網絡中的任何一條連通路徑又是一條知識鏈,知識鏈之間交叉又形成知識網。
3.2.2 開源軟件生態系統模型
在業界已經開發了一系列有關分布式存儲和產品管理方面的生態系統建模方法。本文探討基于非盈利、免費的開源環境下的軟件生態系統。參照個體、種群、群體和生態系統生態學的劃分標準,將軟件生態系統依次劃分為3個不同的等級,圖3分別從單個軟件項目、同類主題和整個開源社區3個級別構建軟件生態系統模型。
(1)軟件項目級主要研究單個開源軟件項目開發者-項目-用戶知識網。
(2)同類主題級主要研究某一類主題下的開發者合作網絡與項目依賴網絡。大部分開源項目的開發者人數較少、主題較單一,屬于小項目,這些小項目在缺乏資源時可向同類主題下的其他團隊尋求幫助,實現團隊間跨項目、組織邊界的合作。另外,可以根據項目之間的依賴關系,在已有的小項目基礎上構建更大的項目,減少重復開發過程。
(3)開源社區級主要研究整個開源社區的開發者與項目。以Sourceforge.net為代表,在整個社區中,無論是人力資源還是項目資源都相當豐富,然而據相關統計表明,很多項目因未能及時找到合適的開發人選而被延時或停滯,另外有大量人力處于空閑狀態。所以,該級別的軟件生態系統有必要采取措施加強開發者的合作,促進社區知識的循環利用。

圖3 不同級別的軟件生態系統模型
從軟件生態系統角度討論軟件工程實踐,無論是哪個級別下的軟件生態系統,都是為了實現知識重用或循環利用,提高開發效率和軟件開發質量。
一個穩定的生態系統包括4個主要的共同特征:開放性,多樣性,調控性和可持續性,其中,開放性代表整個生態系統與外部,或生態系統內部之間應該具有交流和轉化功能,時刻保持一種動態平衡;多樣性是指系統內部物種種類豐富與均衡;調控性是指系統對干擾具有一定的抵抗能力和在受到干擾后具有一定的恢復能力,對發生的變化能加以協調、保持穩定;可持續性是指一種可以長久維持的過程或狀態。同樣地,一個穩定的軟件生態系統也應該具備以上特性。
4.1 開放性
開源環境下的軟件生態系統具有開放性。首先,項目的源代碼是公開可供任何感興趣的開發者直接下載,或通過CVS,SVN,Git方式導出至本地位置,做出修改后再將新內容提交,由于社區隨時都可能有新開發者加入,因此這種與外部交流的情形隨時都可能發生;其次,很多開源社區為了給開發者提供良好的合作交流環境,還提供諸多交互渠道,如郵件列表、bug庫、版本控制日志、論壇等,為充分利用用戶的反饋信息,一些社區還為開源項目提供用戶評分機制。這些都有利于開源社區(開源軟件生態系統)的生存和發展。
無疑軟件生態系統的開放性是開源社區動態發展的前提,開放的系統才能不斷有新資源、新知識的投入,而不至于造成封閉式局部發展。
4.2 多樣性
多樣性在軟件生態系統中扮演重要的角色,除了數量多之外,還包括開發者角色多樣性、項目屬性多樣性。在Sourceforge.net社區中部署的項目數量已達40多萬,開發者或用戶數上百萬,該社區資源的豐富是毋庸置疑。眾所周知,一個軟件開發團隊中,由于開發者自身開發經驗和實踐能力的差別,擁有不同知識的開發者通常扮演不同的角色。同時,不同項目實現的功能不一樣,使得對開發者角色的需求也不同,所以,保持開發者角色的多樣性,有利于更好地滿足項目開發需求。
除了開發者角色的多樣性,在軟件生態系統中,保持軟件項目屬性的多樣性也非常必要。軟件項目作為知識的消費者或捕食者,項目每個屬性涉及的元素越多,面向社區組織開發者的方向也就越廣。例如項目aatopendcd是一個提高OpenDChub的腳本,涉及互聯網中繼交談與文件共享2個主題,支持5種開發語言,使得項目在組織開發者團隊時,既可能有對互聯網中繼交談方向感興趣的開發者,也可能有對文件共享方向感興趣的開發者自愿參與提供貢獻;同時可以是來自不同語言優勢上的開發者。
在Sourceforge.net社區中,統計發現開發者角色共有22種,且每種角色的開發者數都不少于200,為生態系統角色的多樣性提供很好的保障。一個開源項目提供的屬性除了主題和開發語言之外還有目標受眾、數據庫環境、適用的操作系統、UI和項目狀態與使用的開源認證等。根據對前4個屬性的統計發現,每個屬性都涉及較廣的范疇,主題、目標受眾、開發語言和數據庫的分別有261類、19類、71類、34類。表1列出了每個開發者的角色與項目相關屬性的統計信息,其中,M ax,M in,Avg分別表示項目在某屬性上取值個數的最大值、最小值、平均值。

表1 每個開發者的角色與項目相關屬性統計信息
4.3 調控性
調控性也即穩定性,分為2種:(1)受到干擾時的抵抗能力;(2)受到干擾后的恢復能力。在開源環境下,開發者的參與行為是動態的。受外界環境或開發者自身因素的影響,隨時都有開發者可能離開或加入現有的團隊,當面臨這種人員變動的情況,尤其是團隊已有核心成員的離去,離開前團隊在該角色上是否有合適的候補成員,以及離開后,團隊是否能夠在有限的時間內恢復到之前的運轉狀態。一個穩定的生態系統需要具備在不影響已有平衡的前提下解決這類問題的能力。
開發者角色多樣性與項目屬性多樣性有助于增強軟件生態系統的抵抗能力和恢復能力。通過角色的多樣性可以在受干擾時將任務暫由相似角色的其他開發者代理;通過項目屬性多樣性,如果團隊中某一角色的唯一開發者離開,可以面向更廣的范圍引入具備該角色能力的候補成員,以便更早地恢復正常狀態。
4.4 可持續性
生態系統的資源是有限的,開發者的知識是不可回收的,但卻可以通過與其他開發者合作或共享實現知識傳遞。雖然Sourceforge.net軟件生態系統具備開放性、多樣性和調控性特征,但還需要保證系統能夠可持續發展。據統計表明,在Sourceforge.net開源社區生態系統中,開發者之間(開發者與項目之間)表現為一個稀疏的合作網絡,這種稀疏性直接反映了知識的低利用率。如果知識沒能得到很好地利用,意味著大量開發者處于空閑狀態,待開發的項目得不到完善,將不利于生態系統的可持續發展。為解決稀疏性問題,節約軟件生態系統資源,必須確保已有的知識能夠最大程度地得到充分利用,產生更多價值。可采取的措施包括開發者間合作推薦、項目任務推薦,提供小項目/組件的集成,對社區狀態的監控,提供好的開發環境減少人員流動,采用更好的知識循環利用方法等。
本文之所以從生態系統角度探討開源軟件社區的工程實踐,不僅是為了從一個更全面、系統的維度看待軟件開發與維護過程,也是為了從長遠角度更好地協調整個過程,使得能在有限的資源情況下完成更多的工程任務。
Sourceforge.net社區作為目前最流行的開源社區之一,是規模相對更龐大、知名度更廣的一個社區,本文選取該社區作為案例分析對象。在3.2.2節已指出,可以從項目、類別和整個開源社區3個不同的級別上對軟件生態系統建模,本文選擇從整個開源社區級別對其特性展開分析。
5.1 開放性分析
Sourceforge.net社區平臺是一個開源軟件合作開發社區,它集成了很多不同規模、不同性質的開源項目,為軟件開發提供了整套生命周期服務。以2個月為時間段,統計社區從2007年2月-2008年10月期間的開發者數與項目數(統計數據僅基于該社區數據庫dumps中獲取的數據)。
從圖4可以看出,社區開發者數與項目數都呈現逐步增長趨勢,而該增長趨勢與社區軟件生態系統的開放性是不可分的。正是開源社區生態系統的開放性,促使更多來自不同國家、有著不同文化背景和專業知識的開發者加入社區。

圖4 開發者與項目數量增長情況
此外,以2008年6月-2008年8月期間為例,統計了項目的開發者數變化情況,發現一些項目的開發者在2個月內增多,而另外一些項目的開發者數則減少,如圖5所示。正是由于社區的開放性,開發者可以自愿參與各項目,以至于項目開發者數存在波動。統計發現,這段時間內共有2 258個項目的開發者人數發生了變化,其中有1 638個項目的開發者人數增加了,累計增加2 586人,有620個項目的開發者人數減少了,累計減少806人,說明整體上加入的人數比離開的人數多,從而證明圖4中的增長趨勢。

圖5 2個月內項目開發者人數的變化
5.2 多樣性分析
在Sourceforge.net開源社區中,不同的開發者扮演不同角色,不同項目有不一樣的屬性特征。社區多樣性不僅體現在開發者與項目的數量上,還體現在開發者角色與項目屬性上。因此,分別從開發者角色的多樣性與項目屬性的多樣性兩方面進行研究。
5.2.1 開發者角色多樣性
在軟件開發團隊中,由于開發者自身經驗和能力的差別,不同開發者通常擔任不同角色,分配不同的任務,因而在開發過程中的貢獻不一,有著不同程度的重要性。同時,不同項目實現的功能通常不一樣,使得對不同角色開發者的需求也不同,所以,保持開發者角色的多樣性,有利于更好地滿足項目開發需求。
在收集到的開發者與項目數據表中,保存了每個開發者在項目中的角色信息。對Sourceforge.net生態系統中開發者的角色類型進行統計,共有22種常用角色,且每種角色的開發者數都不少于200,為生態系統角色的多樣性提供了很好的保障。圖6給出了角色的開發者數分布情況,其中大部分成員是以軟件開發者角色的身份加入,其次是項目管理員。

圖6 開發者角色分布
由于Sourceforge.net開源社區主要以完善軟件項目開發為主,因此開發者和項目管理2個角色占大多數。從圖6中還可以看出,有一部分開發者是以全能手(all-hands person)的角色參與,在其他角色供不應求時這類角色可以及時充當替補成員,這無疑為Sourceforge.net生態系統在抵御人員變動和外界干擾時提供又一道防線。
圖7為社區每個開發者扮演角色數與每個項目中包括的角色數的比例分布,需要注意的是,考慮到一個只參與一個項目的開發者或只有一個開發者參與的項目的角色肯定只有一種,所以圖7在統計開發者與項目角色數時,過濾了這種情況的對象。從圖7中可以看到,80%以上的開發者或項目涉及角色不超過2種,說明開發者從事的工作比較集中,開源項目的功能都不是特別復雜。

圖7 開發者/項目角色人數累積分布
通過對角色分布的了解,總體上Sourceforge.net生態系統保持了良好的開發者角色多樣性,當一個項目中某一角色的開發者發生變化時,在該生態系統中有足夠具有相同或相似實踐能力的候補成員,用以確保整個生態系統的穩定運轉。
5.2.2 項目屬性多樣性
除了開發者角色的多樣性,在軟件生態系統中,保持項目屬性的多樣性對組織一個既能完成任務又能夠有效合作的團隊也非常有幫助。不難理解如果一個捕食者只以一種獵物為捕食對象,對其生存必然帶來風險。軟件項目類似于捕食者,為了開發更成功,一個項目的各屬性應盡可能涉及更廣,以便能夠吸引更多開發者的參與。
文本只列舉了4個項目屬性作為代表分析,為了便于理解,圖8中標記了一些較典型的元素:
(1)主題表示一個項目的開發方向,該屬性在很大程度上決定了項目所需知識的來源。從表1統計數據可看出,Sourceforge.net軟件生態系統中的項目共涉及261個主題。從圖8(a)可知,動態內容(Dynam ic Content)與軟件開發(Softw are Development)2個主題所占比重最多。
(2)目標受眾指一個項目的服務對象,通常服務越廣泛,軟件開發難度越高,但項目的存活能力越強。在Sourceforge.net軟件生態系統中軟件項目的目標受眾共19類,主要面向開發者和終端用戶。
(3)開發語言表示一個項目所采用的實現工具,每種語言都有自身的特點,使用不同語言的開發者數也不一樣。在Sourceforge.net軟件生態系統中部共涉及71種語言,主要有Java,C++,C和PHP這4種比較流行的語言。
(4)數據庫表示一個項目所使用的數據存儲環境,可供使用的數據庫環境有34種,M ySQL和JDBC為主要的數據庫存儲環境。

圖8 項目屬性分布
由元素(1)~元素(4)可知,在Sourceforge.net軟件生態系統中,項目的每一個屬性都涉及較廣的范疇,即不少于19類。此類項目資源庫可以滿足用戶的特定需求,尤其是項目的重用,可避免重復開發來提高軟件生態系統資源的利用價值。
5.3 調控性分析
開源社區軟件生態系統調控性體現在受到干擾時的抵抗能力與受到干擾后的恢復能力,前者可以通過分析社區項目中開發者數與角色數的關系,后者通過分析在缺少特定角色的開發者時,能否及時從外界找到合適的候補成員。
在軟件生態系統中,為了使項目在受干擾時任務能夠暫由其他相似角色的開發者代理完成,團隊中角色與開發者之間會建立一對多的關系,即每個角色對應多個開發者,如圖9所示,項目中角色越多,每種角色對應的平均開發者數也逐漸增多,當角色數增加到一定程度(大于11)時,項目中開發者數不會增多,而是會有一個急劇的下降。因為社區開源項目中具有十幾個角色的項目極少,且當項目人數比較多時,一部分開發者可同時擔任多種角色,不需要增加更多的開發者。

圖9 項目開發者與角色數的關系
如果將開發者以往參與的項目的屬性與該開發者在項目中的角色信息,定性地表示一個開發者擁有的知識,那么一個開發者是否具備參與某一項目的能力,可通過其知識的滿足情況來確定。越多的屬性得到滿足表示該開發者知識被利用的機會越大。一個項目的屬性涉及內容越廣,能夠參與的開發者數也越多,從而知識利用率也會增大。若采用開發者各屬性的組合數表示一個開發者的知識在項目中被利用的機會數,如表2所示(數字分別代表各
屬性對應的編號),則開發者A,B,C在Sourceforge. net軟件生態系統中知識被利用的機會至少分別為:144(2×2×3×3×4=144),16(1×4×2×1×2= 16),1。表2中的最后一列表示從SourceForge開源社區中抽取的某個項目的屬性描述,可計算出滿足該項目知識需求的組合數為48(3×4×2×2=48)。根據3個開發者擁有的知識,不難發現在不考慮角色時3個開發者都適合參與該項目,只不過參與的機會從大到小的順序依次為A,B,C。若開發者以往參與項目的屬性中至少有一個與項目Project相同,則稱該開發者滿足項目Project的知識需求。在整個社區所有的210 216名開發者中,統計得到滿足知識需求的開發者有166 563名(79.2%),說明項目Project在社區中的調控性較好。

表2 開發者知識與項目屬性的定性表示
本文統計了社區中開發者與項目在以上屬性的組合數情況,如圖10所示,其中,開發者與項目的組合數最小為1,開發者zorankovacevic擁有最多的組合數1×2×9×6×7=756,而項目sem xq-suite的組合數為6×4×6×7=1 008。可見,在開發者-項目貢獻網絡中,知識的利用方式比較多,具備很高的調控空間。

圖10 開發者與項目的組合數分布
5.4 可持續性分析
在Sourceforge.net軟件生態系統中,雖然開發者角色和項目屬性滿足多樣性,參與知識的利用方式也具備調控性,但開發者之間(開發者與項目之間)卻表現為一個稀疏的網絡,這種稀疏性直接反映了知識的低利用率。上述現象表明軟件生態系統中知識沒有得到很好地利用,大量開發者處于空閑狀態,不利于生態系統的可持續發展。為解決開發者的合作稀疏性問題,將開發者擁有的知識進行定性定量表示,更好地表述社區開發者所具有的知識量,幫助開發者及時了解社區中哪些成員與自己有相似的知識,或哪些成員具有特定的知識可供求助和交流。
文獻[20]開發了一款根據開發者間共同參與項目數、相同的項目屬性數和傳遞關系排序的REngine推薦系統。該系統能夠很好地為一個輸入的開發者找到最可能建立合作的社區開發者,其中,在定量實驗分析中,該方法的推薦精度可達83.33%。將文獻[20]的研究成果應用到Sourceforge.net社區軟件生態系統中,為一個開發者推薦最可能的合作者,從而促進開發者間的合作,提高知識利用率,同時在合作過程中開發者的知識也會不斷地完善與提升,并且知識是促進軟件生態系統正常運轉的驅動力,所以,這有利于軟件生態系統的可持續發展。除了開發者合作推薦,還可以是開發者-項目任務的推薦,甚至是項目-項目之間依賴/組合的推薦。總之,通過提供合理的推薦,減少不必要的耗費,可促進生態系統的可持續發展。
本文受自然生態系統的啟發,嘗試從生態系統角度探討開源軟件社區,形成軟件生態系統觀。分析開源軟件生態系統的組成成分、知識鏈結構,從軟件項目、同類主題和整個開源社區這3個級別構建軟件生態系統模型,并根據自然生態系統的主要特征分析軟件生態系統的開放性、多樣性、調控性及可持續性。基于Sourceforge.net開源社區數據的驗證結果表明,軟件生態系統與自然生態系統在特征方面具有很多共性。
[1] Goldberg D E.Genetic Algorithm s and Machine Learning[J].Machine Learning,1988,3(2):95-99.
[2] Bilchev G,Parmee I C.The Ant Colony Metaphor for Searching Continuous Design Spaces[C]//Proceedings of AISB Workshop on Evolutionary Computing. Sheffield,UK:Springer-Verlag,1995:25-39.
[3] Grossberg S.Nonlinear Neural Networks:Principles,Mechanism s,and Architectures[J].Neural Networks,1988,1(1):17-61.
[4] Yang X S.Engineering Optimizations via Natureinspired Virtual Bee Algorithm s[C]//Proceedings of the 1st International Conference on Interplay Between Natural and Artificial Computation.Berlin,Germ any:Springer-Verlag,2005:317-323.
[5] Tansley A G.The Use and Abuse of Vegetational Concepts and Term s[J].Ecology,1935,16(3):284-307.
[6] Anvaari M,Jansen S.Evaluating Architectural Openness in Mobile Software Platform s[C]//Proceedings of the 4 th European Conference on Software Architecture. New York,USA:ACM Press,2010:85-92.
[7] Idu A,van de Zande T,Jansen S.Multi-homing in the Apple Ecosystem Why and How Developers Target Multiple Apple App Stores[C]//Proceedings of International Conference on Management of Emergent Digital Ecosystem s.New York,USA:ACM Press,2011:122-128.
[8] van Angeren J,Kabbedijk J,Popp K M.A Survey of Associate Models Used Within Large Software Ecosystem s[C]//Proceedings of the 3rd International Workshop on Software Ecosystem s.Brussels,Belgium:[s.n.],2011:27-39.
[9] ScacchiW.Free/Open Source Soft ware Development:Recent Research Results and Emerging Opportunities[C]// Proceedings of the 6th Joint Meeting on European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering. New York,USA:ACM Press,2007:459-468.
[10] Mizushima K,Ikawa Y.A Structure of Co-creation in an Open Source Software Ecosystem:A Case Study of the Eclipse Community[C]//Proceedings of PICMET'11. Washington D.C.,USA:IEEE Press,2011:1-8.
[11] Bosch J,Bosch-Sijtsema P.From Integration to Com position:On the Im pact of Software Product Lines,Global Development and Ecosystem s[J].The Journal of System s and Software,2010,83(1):67-76.
[12] 蔡曉明,蔡博峰.生態系統的理論和實踐[M].北京:化學工業出版社,2012.
[13] Messerschm itt D,Szyperski C.Software Ecosystem:Understanding An Indispensable Technology and Industry[M].Cambrige,USA:M IT Press,2005.
[14] Bosch J.From Software Product Lines to Software Ecosystems[C]//Proceedings of the 13th International Software Product Line Conference.New York,USA:ACM Press,2009:111-119.
[15] Jansen S,Brinkkemper S.Business Network Management as a Survival Strategy:A Tale of Two Software Ecosystem s[C]//Proceedings of the 1st International Workshop on Software Ecosystem s.Falls Church,USA:[s.n.],2009:34-48.
[16] Campbell P R J,Ahmed F.A Three-dimensional View of Software Ecosystems[C]//Proceedings of the 4th European Conference on Software Architecture.New York,USA:ACM Press,2010:81-84.
[17] Dhungana D,Groher I.Software Ecosystem s vs.Natural Ecosystem s[C]//Proceedings of the 4th European Conference on Software Architecture.New York,USA:ACM Press,2010:96-102.
[18] Werner C M L.A Proposal for Software Ecosystem s Engineering[C]//Proceedings of the 3 rd International Workshop on Software Ecosystem s.New York,USA:ACM Press,2011:40-51.
[19] Barbosa O,A lves C.A Systematic Mapping Study on Software Ecosystem s[C]//Proceedings of IWSECO'11. Brussels,Belgium:[s.n.],2011:15-26.
[20] Surian D,Liu Nian,David L,et al.Recommending People in Developers Collaboration Network[C]// Proceedings of the 18th Working Conference on Reverse Engineering.Washington D.C.,USA:IEEE Press,2011:379-388.
編輯 陸燕菲
Characteristic Study of Open-source Comm unity Based on Software Ecosystem
ZHANG Deguang1a,LIBing1b,2,HE Peng1a,ZHOU Huayu1a
(1a.State Key Laboratory of Software Engineering;1b.Research Center of Complex Network,Wuhan University,Wuhan 430072,China;2.International School of Software,Wuhan University,Wuhan 430079,China)
With the development of open-source community,the number and complexity of available open-source software increases rapidly,then software systems becomes interdependent on account of the interaction between developers,dependence between components or modules and sharing of tools,and it form s open-source Software Ecosystem(SECO).This paper analyzes the composition,know ledge chain(Web)structure of SECO from the perspective of ecosystem,builds SECO model from three levels which includes software projects,similar themes and the entire open-source community.It analyzes four characteristics which includes openness,diversity,regulation and sustainability according to the main feature of ecosystems.It uses Sourceforge.net open-source community as a case study,indicates that the study of the open-source SECO is helpful to improve the survival ability and know ledge reuse by the effective strategies,and maintain its stability and health.
open-source community;Software Ecosystem(SECO);know ledge chain;diversity;sustainability
張得光,李 兵,何 鵬,等.基于軟件生態系統的開源社區特性研究[J].計算機工程,2015,41(11):106-113.
英文引用格式:Zhang Deguang,Li Bing,He Peng,et al.Characteristic Study of Open-source Community Based on Software Ecosystem[J].Computer Engineering,2015,41(11):106-113.
1000-3428(2015)11-0106-08
A
TP301
10.3969/j.issn.1000-3428.2015.11.019
國家“973”計劃基金資助項目(2014CB340401);國家自然科學基金資助項目(61273216,61272111,61202032);湖北省重大科技創新計劃基金資助項目(2013AAA020);武漢市青年科技晨光計劃基金資助項目(2014070404010232)。
張得光(1991-),男,碩士研究生,主研方向:社會網絡,軟件工程;李 兵(通訊作者),教授、博士;何 鵬,博士研究生;周華昱,學士。
2014-10-29
2014-12-11 E-m ail:980746188@qq.com