張得光,李 兵,何 鵬,周華昱
(1.武漢大學(xué)a.軟件工程國家重點(diǎn)實(shí)驗室;b.復(fù)雜網(wǎng)絡(luò)研究中心武漢430072;2.武漢大學(xué)國際軟件學(xué)院,武漢430079)
基于軟件生態(tài)系統(tǒng)的開源社區(qū)特性研究
張得光1a,李 兵1b,2,何 鵬1a,周華昱1a
(1.武漢大學(xué)a.軟件工程國家重點(diǎn)實(shí)驗室;b.復(fù)雜網(wǎng)絡(luò)研究中心武漢430072;2.武漢大學(xué)國際軟件學(xué)院,武漢430079)
隨著開源社區(qū)的發(fā)展,可供獲取的開源軟件的數(shù)量與復(fù)雜性急劇增長,致使軟件系統(tǒng)之間由于開發(fā)者的交互、組件或模塊的依賴和使用工具的共享而相互關(guān)聯(lián),形成開源軟件生態(tài)系統(tǒng)。從自然生態(tài)系統(tǒng)的角度,分析軟件生態(tài)系統(tǒng)的組成成分、知識鏈(網(wǎng))結(jié)構(gòu),從軟件項目、同類主題和整個開源社區(qū)這3個級別構(gòu)建軟件生態(tài)系統(tǒng)模型,根據(jù)自然生態(tài)系統(tǒng)的主要特征分析軟件生態(tài)系統(tǒng)的開放性、多樣性、調(diào)控性及可持續(xù)性。在Sourceforge.net開源社區(qū)中的分析結(jié)果表明,通過研究開源軟件生態(tài)系統(tǒng)的特性,有助于提高其生存能力以及知識的循環(huán)利用,確保系統(tǒng)的穩(wěn)定性和健壯性。
開源社區(qū);軟件生態(tài)系統(tǒng);知識鏈;多樣性;可持續(xù)性
在軟件開發(fā)領(lǐng)域,一些具有工程背景的科學(xué)家嘗試從自然界獲取靈感,尋找解決本領(lǐng)域問題的方案。采用該方式已取得了很多成果,包括把自然選擇規(guī)律應(yīng)用于計算機(jī)程序開發(fā),設(shè)計遺傳算法[1],根據(jù)螞蟻的覓食行為提出路徑優(yōu)化方案[2-4]等。隨著軟件系統(tǒng)開發(fā)規(guī)模的急劇增大,開發(fā)效率要求的不斷提高,加上軟件系統(tǒng)用戶群體日益增長及個性化用戶需求,單個系統(tǒng)之間變得不再彼此獨(dú)立,而是存在更多的互利共生關(guān)系,這促使人們再次轉(zhuǎn)向自然界,試圖從生態(tài)系統(tǒng)的角度重新研究軟件工程領(lǐng)域的應(yīng)用。
生態(tài)系統(tǒng)一詞出自生物學(xué),最早由英國生態(tài)學(xué)家泰勒于1935年提出,是指由生物群落與無機(jī)環(huán)境構(gòu)成的統(tǒng)一整體。它的范圍沒有固定大小,相互交錯,是生態(tài)學(xué)領(lǐng)域的一個主要結(jié)構(gòu)和功能單位[5]。與此類似,軟件生態(tài)系統(tǒng)(Software Ecosystem,SECO)也可視為軟件工程領(lǐng)域的一個主要結(jié)構(gòu)和功能單位,屬于軟件工程研究的最高層次。
自2005年以來,軟件生態(tài)系統(tǒng)一直受到關(guān)注,如蘋果的iOS和谷歌的Android智能手機(jī)生態(tài)系統(tǒng)[6-7]、ODA(Open Design A lliance)開發(fā)組織生態(tài)系統(tǒng)[8]以及Eclipse和FOSS的開源生態(tài)系統(tǒng)[9-10]。有關(guān)軟件生態(tài)系統(tǒng)的定義,從技術(shù)、社會、業(yè)務(wù)等不同角度有不同說法。結(jié)合開源環(huán)境下的研究背景,本文采用文獻(xiàn)[11]中的定義:一個軟件生態(tài)系統(tǒng)是指在一個公共的技術(shù)平臺上,一群行為者通過相互交互形成大量軟件解決方案或服務(wù)。
隨著開源社區(qū)開發(fā)的流行,可供獲取的開源軟件數(shù)量與復(fù)雜性急劇增長,致使軟件系統(tǒng)之間由于開發(fā)者的交互、組件或模塊的依賴和使用工具的共享而被關(guān)聯(lián)起來,形成開源軟件生態(tài)系統(tǒng)。本文通過介紹有關(guān)生態(tài)系統(tǒng)的基礎(chǔ)知識與軟件生態(tài)系統(tǒng)的發(fā)展,探討開源軟件生態(tài)系統(tǒng)的組成成分、結(jié)構(gòu)與模型,并從開放性、多樣性、調(diào)控性與可持續(xù)性方面對開源軟件生態(tài)系統(tǒng)進(jìn)行分析。
2.1 自然生態(tài)系統(tǒng)
生態(tài)系統(tǒng)(自然生態(tài)系統(tǒng))就是在一定空間范圍內(nèi),生物群落與非生物環(huán)境,通過能量流動、物質(zhì)循環(huán)、信息傳遞而形成相互作用、相互依存的動態(tài)復(fù)合體[12]。換言之,生態(tài)系統(tǒng)就是在一個空間內(nèi)生物群落與非生物環(huán)境形成具有一定功能的整體。生態(tài)系統(tǒng)不僅在空間上是個地理單元,還是一個功能單元,既有能量、信息的傳遞又有物質(zhì)和物種的動態(tài)過程。任何一個自然生態(tài)系統(tǒng)都是開放系統(tǒng),都有輸入和輸出的過程以維持動態(tài)平衡。
2.2 軟件生態(tài)系統(tǒng)
軟件生態(tài)系統(tǒng)最早由M esserchm itt[13]等人于2005年提出。由于軟件生態(tài)系統(tǒng)是一個新興的方向,諸多研究者從各自的背景投入研究,導(dǎo)致一些術(shù)語和特性不一致。文獻(xiàn)[14]將軟件生態(tài)系統(tǒng)劃分為以操作系統(tǒng)為中心、以應(yīng)用為中心和終端用戶編程3類。文獻(xiàn)[15]從商業(yè)角度對軟件生態(tài)系統(tǒng)進(jìn)行研究。文獻(xiàn)[16]從業(yè)務(wù)、架構(gòu)和社會化3個維度探析軟件生態(tài)系統(tǒng)。
在軟件生態(tài)系統(tǒng)的研究方向上,文獻(xiàn)[17]從資源管理與多樣性方面對比了SECO與自然生態(tài)系統(tǒng)的異同,提出一個研究SECO關(guān)鍵特征的議程,討論如何確保SECO的穩(wěn)定與健壯。文獻(xiàn)[18]結(jié)合不同的維度和方面,針對軟件生態(tài)系統(tǒng)提出一個初步的研究議程。文獻(xiàn)[19]研究軟件生態(tài)系統(tǒng)的系統(tǒng)映射,并總結(jié)了軟件生態(tài)系統(tǒng)研究的主要方面,包括開源軟件、生態(tài)系統(tǒng)建模等。結(jié)合上述研究背景,本文在開源環(huán)境下展開探討。
3.1 開源軟件生態(tài)系統(tǒng)組成
自然生態(tài)系統(tǒng)由生物群落和非生物環(huán)境組成,其中根據(jù)生物群落在物質(zhì)和能量運(yùn)動中的作用,又可以大致分為生產(chǎn)者、消費(fèi)者和分解者3類。與此類似,一個典型的軟件生態(tài)系統(tǒng)可理解為由技術(shù)平臺、行為者和軟件解決方案或服務(wù)(及軟件項目)組成,如圖1所示。
圖1 開源軟件生態(tài)系統(tǒng)組成
(1)開源社區(qū)是一個開源軟件合作開發(fā)社區(qū),它集成了很多不同規(guī)模、不同性質(zhì)的開源項目,為軟件開發(fā)提供了整套生命周期服務(wù)。作為軟件生態(tài)系統(tǒng)的一個技術(shù)平臺,開源社區(qū)是開源軟件開發(fā)者進(jìn)行開發(fā)管理的集中場所,為開發(fā)者提供合作交流環(huán)境。
(2)能量是自然生態(tài)系統(tǒng)正常運(yùn)轉(zhuǎn)的動因,在軟件生態(tài)系統(tǒng)中,這種能量來自知識的利用。開源社區(qū)有著來自不同國家、不同文化與專業(yè)知識背景的開發(fā)者,若將開發(fā)者所具有的專業(yè)技能、管理經(jīng)驗、文化背景等信息統(tǒng)稱為知識,則開發(fā)者為知識的攜帶者或生產(chǎn)者,他們利用自己的知識為項目做出貢獻(xiàn)。知識在開發(fā)者的合作過程中也有不斷完善與提升,所以,知識是促進(jìn)軟件生態(tài)系統(tǒng)正常運(yùn)轉(zhuǎn)的驅(qū)動力。
(3)軟件項目作為開發(fā)目標(biāo),為完成某一個開源項目的開發(fā),項目管理者根據(jù)項目的需求組織滿足條件的開發(fā)團(tuán)隊,利用開發(fā)者的知識實(shí)現(xiàn)項目功能。因此,開源項目實(shí)為知識的消費(fèi)者,群體智能的產(chǎn)物。
(4)用戶根據(jù)對社區(qū)發(fā)布軟件的使用情況,將體驗信息反饋給開發(fā)者,開發(fā)者在得到用戶反饋信息的基礎(chǔ)上,對開源項目展開進(jìn)一步改進(jìn)工作,所以用戶是知識的體驗者,發(fā)揮利用知識產(chǎn)物與促進(jìn)項目完善的作用。
因此,開源軟件生態(tài)系統(tǒng)主要由社區(qū)平臺,分別作為知識的生產(chǎn)者、消費(fèi)者和體驗者的開發(fā)者,軟件項目和用戶組成,在組成成分上表現(xiàn)為一個社會-技術(shù)網(wǎng)絡(luò),需要指出的是,一些情況下用戶也是開發(fā)者。
3.2 開源軟件生態(tài)系統(tǒng)結(jié)構(gòu)
任何生態(tài)系統(tǒng)都有一定的結(jié)構(gòu),一個穩(wěn)定的軟件生態(tài)系統(tǒng)在結(jié)構(gòu)上不但有自己與眾不同的成分和知識獲取行為,而且不同生態(tài)系統(tǒng)之間還有共同之處。下面主要介紹開源軟件生態(tài)系統(tǒng)在結(jié)構(gòu)上的一般規(guī)律與系統(tǒng)模型。
3.2.1 知識鏈結(jié)構(gòu)
在軟件生態(tài)系統(tǒng)中,開發(fā)者-項目-用戶通過知識的利用相互建立起關(guān)聯(lián)關(guān)系,這種關(guān)聯(lián)關(guān)系稱為知識鏈,可簡述為開發(fā)者通過各種學(xué)習(xí)方式豐富自身知識,再利用擁有的知識為參與的項目做出貢獻(xiàn),最后用戶下載使用所開發(fā)的項目,根據(jù)使用情況反饋體驗信息,反饋信息又將成為開發(fā)者進(jìn)一步改進(jìn)的目標(biāo),最終形成一個循環(huán)往復(fù)的過程,整個過程如圖2所示。
圖2 知識鏈結(jié)構(gòu)
除水平方向的知識鏈外,開發(fā)者與項目之間的參與關(guān)系可形成一個貢獻(xiàn)網(wǎng)絡(luò),可以根據(jù)參與同一個項目開發(fā)的開發(fā)者間存在一條合作邊的投影方式,建立一個開發(fā)者合作網(wǎng)絡(luò),而合作網(wǎng)絡(luò)中的任何一條連通路徑又是一條知識鏈,知識鏈之間交叉又形成知識網(wǎng)。
3.2.2 開源軟件生態(tài)系統(tǒng)模型
在業(yè)界已經(jīng)開發(fā)了一系列有關(guān)分布式存儲和產(chǎn)品管理方面的生態(tài)系統(tǒng)建模方法。本文探討基于非盈利、免費(fèi)的開源環(huán)境下的軟件生態(tài)系統(tǒng)。參照個體、種群、群體和生態(tài)系統(tǒng)生態(tài)學(xué)的劃分標(biāo)準(zhǔn),將軟件生態(tài)系統(tǒng)依次劃分為3個不同的等級,圖3分別從單個軟件項目、同類主題和整個開源社區(qū)3個級別構(gòu)建軟件生態(tài)系統(tǒng)模型。
(1)軟件項目級主要研究單個開源軟件項目開發(fā)者-項目-用戶知識網(wǎng)。
(2)同類主題級主要研究某一類主題下的開發(fā)者合作網(wǎng)絡(luò)與項目依賴網(wǎng)絡(luò)。大部分開源項目的開發(fā)者人數(shù)較少、主題較單一,屬于小項目,這些小項目在缺乏資源時可向同類主題下的其他團(tuán)隊尋求幫助,實(shí)現(xiàn)團(tuán)隊間跨項目、組織邊界的合作。另外,可以根據(jù)項目之間的依賴關(guān)系,在已有的小項目基礎(chǔ)上構(gòu)建更大的項目,減少重復(fù)開發(fā)過程。
(3)開源社區(qū)級主要研究整個開源社區(qū)的開發(fā)者與項目。以Sourceforge.net為代表,在整個社區(qū)中,無論是人力資源還是項目資源都相當(dāng)豐富,然而據(jù)相關(guān)統(tǒng)計表明,很多項目因未能及時找到合適的開發(fā)人選而被延時或停滯,另外有大量人力處于空閑狀態(tài)。所以,該級別的軟件生態(tài)系統(tǒng)有必要采取措施加強(qiáng)開發(fā)者的合作,促進(jìn)社區(qū)知識的循環(huán)利用。
圖3 不同級別的軟件生態(tài)系統(tǒng)模型
從軟件生態(tài)系統(tǒng)角度討論軟件工程實(shí)踐,無論是哪個級別下的軟件生態(tài)系統(tǒng),都是為了實(shí)現(xiàn)知識重用或循環(huán)利用,提高開發(fā)效率和軟件開發(fā)質(zhì)量。
一個穩(wěn)定的生態(tài)系統(tǒng)包括4個主要的共同特征:開放性,多樣性,調(diào)控性和可持續(xù)性,其中,開放性代表整個生態(tài)系統(tǒng)與外部,或生態(tài)系統(tǒng)內(nèi)部之間應(yīng)該具有交流和轉(zhuǎn)化功能,時刻保持一種動態(tài)平衡;多樣性是指系統(tǒng)內(nèi)部物種種類豐富與均衡;調(diào)控性是指系統(tǒng)對干擾具有一定的抵抗能力和在受到干擾后具有一定的恢復(fù)能力,對發(fā)生的變化能加以協(xié)調(diào)、保持穩(wěn)定;可持續(xù)性是指一種可以長久維持的過程或狀態(tài)。同樣地,一個穩(wěn)定的軟件生態(tài)系統(tǒng)也應(yīng)該具備以上特性。
4.1 開放性
開源環(huán)境下的軟件生態(tài)系統(tǒng)具有開放性。首先,項目的源代碼是公開可供任何感興趣的開發(fā)者直接下載,或通過CVS,SVN,Git方式導(dǎo)出至本地位置,做出修改后再將新內(nèi)容提交,由于社區(qū)隨時都可能有新開發(fā)者加入,因此這種與外部交流的情形隨時都可能發(fā)生;其次,很多開源社區(qū)為了給開發(fā)者提供良好的合作交流環(huán)境,還提供諸多交互渠道,如郵件列表、bug庫、版本控制日志、論壇等,為充分利用用戶的反饋信息,一些社區(qū)還為開源項目提供用戶評分機(jī)制。這些都有利于開源社區(qū)(開源軟件生態(tài)系統(tǒng))的生存和發(fā)展。
無疑軟件生態(tài)系統(tǒng)的開放性是開源社區(qū)動態(tài)發(fā)展的前提,開放的系統(tǒng)才能不斷有新資源、新知識的投入,而不至于造成封閉式局部發(fā)展。
4.2 多樣性
多樣性在軟件生態(tài)系統(tǒng)中扮演重要的角色,除了數(shù)量多之外,還包括開發(fā)者角色多樣性、項目屬性多樣性。在Sourceforge.net社區(qū)中部署的項目數(shù)量已達(dá)40多萬,開發(fā)者或用戶數(shù)上百萬,該社區(qū)資源的豐富是毋庸置疑。眾所周知,一個軟件開發(fā)團(tuán)隊中,由于開發(fā)者自身開發(fā)經(jīng)驗和實(shí)踐能力的差別,擁有不同知識的開發(fā)者通常扮演不同的角色。同時,不同項目實(shí)現(xiàn)的功能不一樣,使得對開發(fā)者角色的需求也不同,所以,保持開發(fā)者角色的多樣性,有利于更好地滿足項目開發(fā)需求。
除了開發(fā)者角色的多樣性,在軟件生態(tài)系統(tǒng)中,保持軟件項目屬性的多樣性也非常必要。軟件項目作為知識的消費(fèi)者或捕食者,項目每個屬性涉及的元素越多,面向社區(qū)組織開發(fā)者的方向也就越廣。例如項目aatopendcd是一個提高OpenDChub的腳本,涉及互聯(lián)網(wǎng)中繼交談與文件共享2個主題,支持5種開發(fā)語言,使得項目在組織開發(fā)者團(tuán)隊時,既可能有對互聯(lián)網(wǎng)中繼交談方向感興趣的開發(fā)者,也可能有對文件共享方向感興趣的開發(fā)者自愿參與提供貢獻(xiàn);同時可以是來自不同語言優(yōu)勢上的開發(fā)者。
在Sourceforge.net社區(qū)中,統(tǒng)計發(fā)現(xiàn)開發(fā)者角色共有22種,且每種角色的開發(fā)者數(shù)都不少于200,為生態(tài)系統(tǒng)角色的多樣性提供很好的保障。一個開源項目提供的屬性除了主題和開發(fā)語言之外還有目標(biāo)受眾、數(shù)據(jù)庫環(huán)境、適用的操作系統(tǒng)、UI和項目狀態(tài)與使用的開源認(rèn)證等。根據(jù)對前4個屬性的統(tǒng)計發(fā)現(xiàn),每個屬性都涉及較廣的范疇,主題、目標(biāo)受眾、開發(fā)語言和數(shù)據(jù)庫的分別有261類、19類、71類、34類。表1列出了每個開發(fā)者的角色與項目相關(guān)屬性的統(tǒng)計信息,其中,M ax,M in,Avg分別表示項目在某屬性上取值個數(shù)的最大值、最小值、平均值。
表1 每個開發(fā)者的角色與項目相關(guān)屬性統(tǒng)計信息
4.3 調(diào)控性
調(diào)控性也即穩(wěn)定性,分為2種:(1)受到干擾時的抵抗能力;(2)受到干擾后的恢復(fù)能力。在開源環(huán)境下,開發(fā)者的參與行為是動態(tài)的。受外界環(huán)境或開發(fā)者自身因素的影響,隨時都有開發(fā)者可能離開或加入現(xiàn)有的團(tuán)隊,當(dāng)面臨這種人員變動的情況,尤其是團(tuán)隊已有核心成員的離去,離開前團(tuán)隊在該角色上是否有合適的候補(bǔ)成員,以及離開后,團(tuán)隊是否能夠在有限的時間內(nèi)恢復(fù)到之前的運(yùn)轉(zhuǎn)狀態(tài)。一個穩(wěn)定的生態(tài)系統(tǒng)需要具備在不影響已有平衡的前提下解決這類問題的能力。
開發(fā)者角色多樣性與項目屬性多樣性有助于增強(qiáng)軟件生態(tài)系統(tǒng)的抵抗能力和恢復(fù)能力。通過角色的多樣性可以在受干擾時將任務(wù)暫由相似角色的其他開發(fā)者代理;通過項目屬性多樣性,如果團(tuán)隊中某一角色的唯一開發(fā)者離開,可以面向更廣的范圍引入具備該角色能力的候補(bǔ)成員,以便更早地恢復(fù)正常狀態(tài)。
4.4 可持續(xù)性
生態(tài)系統(tǒng)的資源是有限的,開發(fā)者的知識是不可回收的,但卻可以通過與其他開發(fā)者合作或共享實(shí)現(xiàn)知識傳遞。雖然Sourceforge.net軟件生態(tài)系統(tǒng)具備開放性、多樣性和調(diào)控性特征,但還需要保證系統(tǒng)能夠可持續(xù)發(fā)展。據(jù)統(tǒng)計表明,在Sourceforge.net開源社區(qū)生態(tài)系統(tǒng)中,開發(fā)者之間(開發(fā)者與項目之間)表現(xiàn)為一個稀疏的合作網(wǎng)絡(luò),這種稀疏性直接反映了知識的低利用率。如果知識沒能得到很好地利用,意味著大量開發(fā)者處于空閑狀態(tài),待開發(fā)的項目得不到完善,將不利于生態(tài)系統(tǒng)的可持續(xù)發(fā)展。為解決稀疏性問題,節(jié)約軟件生態(tài)系統(tǒng)資源,必須確保已有的知識能夠最大程度地得到充分利用,產(chǎn)生更多價值??刹扇〉拇胧┌ㄩ_發(fā)者間合作推薦、項目任務(wù)推薦,提供小項目/組件的集成,對社區(qū)狀態(tài)的監(jiān)控,提供好的開發(fā)環(huán)境減少人員流動,采用更好的知識循環(huán)利用方法等。
本文之所以從生態(tài)系統(tǒng)角度探討開源軟件社區(qū)的工程實(shí)踐,不僅是為了從一個更全面、系統(tǒng)的維度看待軟件開發(fā)與維護(hù)過程,也是為了從長遠(yuǎn)角度更好地協(xié)調(diào)整個過程,使得能在有限的資源情況下完成更多的工程任務(wù)。
Sourceforge.net社區(qū)作為目前最流行的開源社區(qū)之一,是規(guī)模相對更龐大、知名度更廣的一個社區(qū),本文選取該社區(qū)作為案例分析對象。在3.2.2節(jié)已指出,可以從項目、類別和整個開源社區(qū)3個不同的級別上對軟件生態(tài)系統(tǒng)建模,本文選擇從整個開源社區(qū)級別對其特性展開分析。
5.1 開放性分析
Sourceforge.net社區(qū)平臺是一個開源軟件合作開發(fā)社區(qū),它集成了很多不同規(guī)模、不同性質(zhì)的開源項目,為軟件開發(fā)提供了整套生命周期服務(wù)。以2個月為時間段,統(tǒng)計社區(qū)從2007年2月-2008年10月期間的開發(fā)者數(shù)與項目數(shù)(統(tǒng)計數(shù)據(jù)僅基于該社區(qū)數(shù)據(jù)庫dumps中獲取的數(shù)據(jù))。
從圖4可以看出,社區(qū)開發(fā)者數(shù)與項目數(shù)都呈現(xiàn)逐步增長趨勢,而該增長趨勢與社區(qū)軟件生態(tài)系統(tǒng)的開放性是不可分的。正是開源社區(qū)生態(tài)系統(tǒng)的開放性,促使更多來自不同國家、有著不同文化背景和專業(yè)知識的開發(fā)者加入社區(qū)。
圖4 開發(fā)者與項目數(shù)量增長情況
此外,以2008年6月-2008年8月期間為例,統(tǒng)計了項目的開發(fā)者數(shù)變化情況,發(fā)現(xiàn)一些項目的開發(fā)者在2個月內(nèi)增多,而另外一些項目的開發(fā)者數(shù)則減少,如圖5所示。正是由于社區(qū)的開放性,開發(fā)者可以自愿參與各項目,以至于項目開發(fā)者數(shù)存在波動。統(tǒng)計發(fā)現(xiàn),這段時間內(nèi)共有2 258個項目的開發(fā)者人數(shù)發(fā)生了變化,其中有1 638個項目的開發(fā)者人數(shù)增加了,累計增加2 586人,有620個項目的開發(fā)者人數(shù)減少了,累計減少806人,說明整體上加入的人數(shù)比離開的人數(shù)多,從而證明圖4中的增長趨勢。
圖5 2個月內(nèi)項目開發(fā)者人數(shù)的變化
5.2 多樣性分析
在Sourceforge.net開源社區(qū)中,不同的開發(fā)者扮演不同角色,不同項目有不一樣的屬性特征。社區(qū)多樣性不僅體現(xiàn)在開發(fā)者與項目的數(shù)量上,還體現(xiàn)在開發(fā)者角色與項目屬性上。因此,分別從開發(fā)者角色的多樣性與項目屬性的多樣性兩方面進(jìn)行研究。
5.2.1 開發(fā)者角色多樣性
在軟件開發(fā)團(tuán)隊中,由于開發(fā)者自身經(jīng)驗和能力的差別,不同開發(fā)者通常擔(dān)任不同角色,分配不同的任務(wù),因而在開發(fā)過程中的貢獻(xiàn)不一,有著不同程度的重要性。同時,不同項目實(shí)現(xiàn)的功能通常不一樣,使得對不同角色開發(fā)者的需求也不同,所以,保持開發(fā)者角色的多樣性,有利于更好地滿足項目開發(fā)需求。
在收集到的開發(fā)者與項目數(shù)據(jù)表中,保存了每個開發(fā)者在項目中的角色信息。對Sourceforge.net生態(tài)系統(tǒng)中開發(fā)者的角色類型進(jìn)行統(tǒng)計,共有22種常用角色,且每種角色的開發(fā)者數(shù)都不少于200,為生態(tài)系統(tǒng)角色的多樣性提供了很好的保障。圖6給出了角色的開發(fā)者數(shù)分布情況,其中大部分成員是以軟件開發(fā)者角色的身份加入,其次是項目管理員。
圖6 開發(fā)者角色分布
由于Sourceforge.net開源社區(qū)主要以完善軟件項目開發(fā)為主,因此開發(fā)者和項目管理2個角色占大多數(shù)。從圖6中還可以看出,有一部分開發(fā)者是以全能手(all-hands person)的角色參與,在其他角色供不應(yīng)求時這類角色可以及時充當(dāng)替補(bǔ)成員,這無疑為Sourceforge.net生態(tài)系統(tǒng)在抵御人員變動和外界干擾時提供又一道防線。
圖7為社區(qū)每個開發(fā)者扮演角色數(shù)與每個項目中包括的角色數(shù)的比例分布,需要注意的是,考慮到一個只參與一個項目的開發(fā)者或只有一個開發(fā)者參與的項目的角色肯定只有一種,所以圖7在統(tǒng)計開發(fā)者與項目角色數(shù)時,過濾了這種情況的對象。從圖7中可以看到,80%以上的開發(fā)者或項目涉及角色不超過2種,說明開發(fā)者從事的工作比較集中,開源項目的功能都不是特別復(fù)雜。
圖7 開發(fā)者/項目角色人數(shù)累積分布
通過對角色分布的了解,總體上Sourceforge.net生態(tài)系統(tǒng)保持了良好的開發(fā)者角色多樣性,當(dāng)一個項目中某一角色的開發(fā)者發(fā)生變化時,在該生態(tài)系統(tǒng)中有足夠具有相同或相似實(shí)踐能力的候補(bǔ)成員,用以確保整個生態(tài)系統(tǒng)的穩(wěn)定運(yùn)轉(zhuǎn)。
5.2.2 項目屬性多樣性
除了開發(fā)者角色的多樣性,在軟件生態(tài)系統(tǒng)中,保持項目屬性的多樣性對組織一個既能完成任務(wù)又能夠有效合作的團(tuán)隊也非常有幫助。不難理解如果一個捕食者只以一種獵物為捕食對象,對其生存必然帶來風(fēng)險。軟件項目類似于捕食者,為了開發(fā)更成功,一個項目的各屬性應(yīng)盡可能涉及更廣,以便能夠吸引更多開發(fā)者的參與。
文本只列舉了4個項目屬性作為代表分析,為了便于理解,圖8中標(biāo)記了一些較典型的元素:
(1)主題表示一個項目的開發(fā)方向,該屬性在很大程度上決定了項目所需知識的來源。從表1統(tǒng)計數(shù)據(jù)可看出,Sourceforge.net軟件生態(tài)系統(tǒng)中的項目共涉及261個主題。從圖8(a)可知,動態(tài)內(nèi)容(Dynam ic Content)與軟件開發(fā)(Softw are Development)2個主題所占比重最多。
(2)目標(biāo)受眾指一個項目的服務(wù)對象,通常服務(wù)越廣泛,軟件開發(fā)難度越高,但項目的存活能力越強(qiáng)。在Sourceforge.net軟件生態(tài)系統(tǒng)中軟件項目的目標(biāo)受眾共19類,主要面向開發(fā)者和終端用戶。
(3)開發(fā)語言表示一個項目所采用的實(shí)現(xiàn)工具,每種語言都有自身的特點(diǎn),使用不同語言的開發(fā)者數(shù)也不一樣。在Sourceforge.net軟件生態(tài)系統(tǒng)中部共涉及71種語言,主要有Java,C++,C和PHP這4種比較流行的語言。
(4)數(shù)據(jù)庫表示一個項目所使用的數(shù)據(jù)存儲環(huán)境,可供使用的數(shù)據(jù)庫環(huán)境有34種,M ySQL和JDBC為主要的數(shù)據(jù)庫存儲環(huán)境。
圖8 項目屬性分布
由元素(1)~元素(4)可知,在Sourceforge.net軟件生態(tài)系統(tǒng)中,項目的每一個屬性都涉及較廣的范疇,即不少于19類。此類項目資源庫可以滿足用戶的特定需求,尤其是項目的重用,可避免重復(fù)開發(fā)來提高軟件生態(tài)系統(tǒng)資源的利用價值。
5.3 調(diào)控性分析
開源社區(qū)軟件生態(tài)系統(tǒng)調(diào)控性體現(xiàn)在受到干擾時的抵抗能力與受到干擾后的恢復(fù)能力,前者可以通過分析社區(qū)項目中開發(fā)者數(shù)與角色數(shù)的關(guān)系,后者通過分析在缺少特定角色的開發(fā)者時,能否及時從外界找到合適的候補(bǔ)成員。
在軟件生態(tài)系統(tǒng)中,為了使項目在受干擾時任務(wù)能夠暫由其他相似角色的開發(fā)者代理完成,團(tuán)隊中角色與開發(fā)者之間會建立一對多的關(guān)系,即每個角色對應(yīng)多個開發(fā)者,如圖9所示,項目中角色越多,每種角色對應(yīng)的平均開發(fā)者數(shù)也逐漸增多,當(dāng)角色數(shù)增加到一定程度(大于11)時,項目中開發(fā)者數(shù)不會增多,而是會有一個急劇的下降。因為社區(qū)開源項目中具有十幾個角色的項目極少,且當(dāng)項目人數(shù)比較多時,一部分開發(fā)者可同時擔(dān)任多種角色,不需要增加更多的開發(fā)者。
圖9 項目開發(fā)者與角色數(shù)的關(guān)系
如果將開發(fā)者以往參與的項目的屬性與該開發(fā)者在項目中的角色信息,定性地表示一個開發(fā)者擁有的知識,那么一個開發(fā)者是否具備參與某一項目的能力,可通過其知識的滿足情況來確定。越多的屬性得到滿足表示該開發(fā)者知識被利用的機(jī)會越大。一個項目的屬性涉及內(nèi)容越廣,能夠參與的開發(fā)者數(shù)也越多,從而知識利用率也會增大。若采用開發(fā)者各屬性的組合數(shù)表示一個開發(fā)者的知識在項目中被利用的機(jī)會數(shù),如表2所示(數(shù)字分別代表各
屬性對應(yīng)的編號),則開發(fā)者A,B,C在Sourceforge. net軟件生態(tài)系統(tǒng)中知識被利用的機(jī)會至少分別為:144(2×2×3×3×4=144),16(1×4×2×1×2= 16),1。表2中的最后一列表示從SourceForge開源社區(qū)中抽取的某個項目的屬性描述,可計算出滿足該項目知識需求的組合數(shù)為48(3×4×2×2=48)。根據(jù)3個開發(fā)者擁有的知識,不難發(fā)現(xiàn)在不考慮角色時3個開發(fā)者都適合參與該項目,只不過參與的機(jī)會從大到小的順序依次為A,B,C。若開發(fā)者以往參與項目的屬性中至少有一個與項目Project相同,則稱該開發(fā)者滿足項目Project的知識需求。在整個社區(qū)所有的210 216名開發(fā)者中,統(tǒng)計得到滿足知識需求的開發(fā)者有166 563名(79.2%),說明項目Project在社區(qū)中的調(diào)控性較好。
表2 開發(fā)者知識與項目屬性的定性表示
本文統(tǒng)計了社區(qū)中開發(fā)者與項目在以上屬性的組合數(shù)情況,如圖10所示,其中,開發(fā)者與項目的組合數(shù)最小為1,開發(fā)者zorankovacevic擁有最多的組合數(shù)1×2×9×6×7=756,而項目sem xq-suite的組合數(shù)為6×4×6×7=1 008。可見,在開發(fā)者-項目貢獻(xiàn)網(wǎng)絡(luò)中,知識的利用方式比較多,具備很高的調(diào)控空間。
圖10 開發(fā)者與項目的組合數(shù)分布
5.4 可持續(xù)性分析
在Sourceforge.net軟件生態(tài)系統(tǒng)中,雖然開發(fā)者角色和項目屬性滿足多樣性,參與知識的利用方式也具備調(diào)控性,但開發(fā)者之間(開發(fā)者與項目之間)卻表現(xiàn)為一個稀疏的網(wǎng)絡(luò),這種稀疏性直接反映了知識的低利用率。上述現(xiàn)象表明軟件生態(tài)系統(tǒng)中知識沒有得到很好地利用,大量開發(fā)者處于空閑狀態(tài),不利于生態(tài)系統(tǒng)的可持續(xù)發(fā)展。為解決開發(fā)者的合作稀疏性問題,將開發(fā)者擁有的知識進(jìn)行定性定量表示,更好地表述社區(qū)開發(fā)者所具有的知識量,幫助開發(fā)者及時了解社區(qū)中哪些成員與自己有相似的知識,或哪些成員具有特定的知識可供求助和交流。
文獻(xiàn)[20]開發(fā)了一款根據(jù)開發(fā)者間共同參與項目數(shù)、相同的項目屬性數(shù)和傳遞關(guān)系排序的REngine推薦系統(tǒng)。該系統(tǒng)能夠很好地為一個輸入的開發(fā)者找到最可能建立合作的社區(qū)開發(fā)者,其中,在定量實(shí)驗分析中,該方法的推薦精度可達(dá)83.33%。將文獻(xiàn)[20]的研究成果應(yīng)用到Sourceforge.net社區(qū)軟件生態(tài)系統(tǒng)中,為一個開發(fā)者推薦最可能的合作者,從而促進(jìn)開發(fā)者間的合作,提高知識利用率,同時在合作過程中開發(fā)者的知識也會不斷地完善與提升,并且知識是促進(jìn)軟件生態(tài)系統(tǒng)正常運(yùn)轉(zhuǎn)的驅(qū)動力,所以,這有利于軟件生態(tài)系統(tǒng)的可持續(xù)發(fā)展。除了開發(fā)者合作推薦,還可以是開發(fā)者-項目任務(wù)的推薦,甚至是項目-項目之間依賴/組合的推薦??傊?,通過提供合理的推薦,減少不必要的耗費(fèi),可促進(jìn)生態(tài)系統(tǒng)的可持續(xù)發(fā)展。
本文受自然生態(tài)系統(tǒng)的啟發(fā),嘗試從生態(tài)系統(tǒng)角度探討開源軟件社區(qū),形成軟件生態(tài)系統(tǒng)觀。分析開源軟件生態(tài)系統(tǒng)的組成成分、知識鏈結(jié)構(gòu),從軟件項目、同類主題和整個開源社區(qū)這3個級別構(gòu)建軟件生態(tài)系統(tǒng)模型,并根據(jù)自然生態(tài)系統(tǒng)的主要特征分析軟件生態(tài)系統(tǒng)的開放性、多樣性、調(diào)控性及可持續(xù)性?;赟ourceforge.net開源社區(qū)數(shù)據(jù)的驗證結(jié)果表明,軟件生態(tài)系統(tǒng)與自然生態(tài)系統(tǒng)在特征方面具有很多共性。
[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] 蔡曉明,蔡博峰.生態(tài)系統(tǒng)的理論和實(shí)踐[M].北京:化學(xué)工業(yè)出版社,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
張得光,李 兵,何 鵬,等.基于軟件生態(tài)系統(tǒng)的開源社區(qū)特性研究[J].計算機(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);國家自然科學(xué)基金資助項目(61273216,61272111,61202032);湖北省重大科技創(chuàng)新計劃基金資助項目(2013AAA020);武漢市青年科技晨光計劃基金資助項目(2014070404010232)。
張得光(1991-),男,碩士研究生,主研方向:社會網(wǎng)絡(luò),軟件工程;李 兵(通訊作者),教授、博士;何 鵬,博士研究生;周華昱,學(xué)士。
2014-10-29
2014-12-11 E-m ail:980746188@qq.com