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