張祎(1975-),女,漢族,重慶銅梁,碩士,副教授,研究方向:軟件技術(shù)。
摘要:在開源軟件開發(fā)中,一般以自愿參加和開放服務(wù)為基本原則,由此吸引了更多的軟件開發(fā)者加入其中。但開源社區(qū)合作協(xié)調(diào)管理是一個(gè)相對(duì)棘手的問題。對(duì)此,本文探究了開源軟件開發(fā)者和源代碼協(xié)調(diào)性的網(wǎng)絡(luò)建設(shè),分析了元網(wǎng)絡(luò)中的依存關(guān)系對(duì)軟件成功的影響情況,并從中介性、等級(jí)性、邊緣性和一致性等方面研究了相互依存中的協(xié)調(diào)性問題,為更好地協(xié)調(diào)軟件開發(fā)中開發(fā)者和源代碼之間的關(guān)系提供參考。
關(guān)鍵詞:開源軟件;開發(fā)者;源代碼;協(xié)調(diào)性;網(wǎng)絡(luò)建設(shè)
一、引言
就開源軟件開發(fā)者社區(qū)來看,因?yàn)殚_發(fā)者來源于全國(guó)各地,而他們可以通過互聯(lián)網(wǎng)實(shí)現(xiàn)協(xié)同開發(fā),使用在線源代碼管理工具應(yīng)用、缺陷管理系統(tǒng)和電子郵件列表管理等項(xiàng)目,基于自身興趣參與到開源軟件開發(fā)中。從商業(yè)視角來看,他們不需要承擔(dān)其他責(zé)任,對(duì)開發(fā)進(jìn)度和貢獻(xiàn)可以自行決定。因此,在這種開放環(huán)境中,開源軟件社區(qū)確保了必要的約束并且非常分散。為了讓開源軟件開發(fā)項(xiàng)目順利推進(jìn),需要有可靠的協(xié)調(diào)方式,確保開發(fā)者和源代碼之間的協(xié)調(diào)。因此,需要研究軟件開發(fā)中的協(xié)調(diào)機(jī)制。這種協(xié)調(diào)機(jī)制的構(gòu)建實(shí)際上就是對(duì)依存關(guān)系的管理。以往,研究者對(duì)于提升開發(fā)者之間的依存關(guān)系也有一些研究。例如,通過設(shè)計(jì)結(jié)構(gòu)矩陣來對(duì)軟件源代碼結(jié)構(gòu)進(jìn)行分析,Oh等人研究了開發(fā)者依存網(wǎng)絡(luò)特性對(duì)網(wǎng)絡(luò)動(dòng)態(tài)穩(wěn)定性的影響[1]。Cataldo等人的研究得出,在跨地域合作的軟件開發(fā)中,需求容易出現(xiàn)變動(dòng),且可能超出團(tuán)隊(duì)界限。有效的協(xié)調(diào)互動(dòng)可以縮減開發(fā)時(shí)間,然而,現(xiàn)有研究還沒有將源代碼和開發(fā)者依存網(wǎng)絡(luò)聯(lián)系起來,也沒有對(duì)開源軟件的開發(fā)協(xié)調(diào)性進(jìn)行專門的分析[2]。
探究軟件源代碼和開發(fā)者之間的依存關(guān)系,主要是從開源軟件開發(fā)的中介性、等級(jí)性、邊緣性、一致性以及鄰接性等層面開展研究,并研究依存網(wǎng)絡(luò)特性對(duì)最終軟件項(xiàng)目成功的影響。
二、相關(guān)概念介紹
(一)開源軟件和CVS數(shù)據(jù)
開源軟件(Open Source Software,簡(jiǎn)稱OSS)即開發(fā)者和項(xiàng)目是網(wǎng)絡(luò)中的節(jié)點(diǎn),在一個(gè)開發(fā)者和一個(gè)項(xiàng)目中工作,此時(shí)開發(fā)者和項(xiàng)目之間存在一條邊,被分為開發(fā)者和項(xiàng)目?jī)刹糠帧M再|(zhì)界定間沒有邊,屬于二分網(wǎng)絡(luò)。它能夠有效地轉(zhuǎn)換成開發(fā)者網(wǎng)絡(luò)或項(xiàng)目網(wǎng)絡(luò),能夠從開源社區(qū)開發(fā)源代碼配置管理工具(CVS),以集中對(duì)小組、時(shí)間戳以及開發(fā)者信息進(jìn)行提取[3]。時(shí)間戳指的是開發(fā)者最早和最新提交到特定項(xiàng)目的時(shí)間。基于這些信息,在構(gòu)建開發(fā)者網(wǎng)絡(luò)時(shí),即使兩個(gè)開發(fā)者在一個(gè)相同的項(xiàng)目中,只有在同一時(shí)間同一項(xiàng)目中工作的情況下才可以構(gòu)建相互連接,也就是所說的時(shí)間窗口重疊。
(二)開發(fā)依存網(wǎng)絡(luò)的表示
以元網(wǎng)絡(luò)為基礎(chǔ),基于源代碼管理工具歷史記錄,能夠針對(duì)每個(gè)軟件項(xiàng)目獲取三個(gè)依存關(guān)系網(wǎng)絡(luò)。這些相關(guān)網(wǎng)絡(luò)屬于無向加權(quán)網(wǎng)絡(luò),開發(fā)者、模塊是其網(wǎng)絡(luò)節(jié)點(diǎn),而它們之間的關(guān)聯(lián)即為網(wǎng)絡(luò)的邊。目前的開發(fā)依存網(wǎng)絡(luò)包含了模塊依存網(wǎng)絡(luò)、開發(fā)者依存網(wǎng)絡(luò)以及模塊開發(fā)者依存網(wǎng)絡(luò)。在模塊依存網(wǎng)絡(luò)中,如果兩個(gè)模塊在同一時(shí)間段內(nèi)由兩個(gè)或更多的開發(fā)者進(jìn)行操作,這兩個(gè)模塊之間就會(huì)形成依存關(guān)系,這種依存關(guān)系的權(quán)重即代表兩個(gè)模塊共同接受操作的次數(shù)。在開發(fā)者依存網(wǎng)絡(luò)中,如果兩個(gè)開發(fā)者同一時(shí)間段內(nèi)至少開發(fā)同一個(gè)模塊,那么這兩個(gè)開發(fā)者之間就會(huì)形成依存關(guān)系,這種依存關(guān)系權(quán)重代表的是兩個(gè)開發(fā)者共同產(chǎn)生操作的次數(shù),此時(shí)的節(jié)點(diǎn)大小代表這個(gè)節(jié)點(diǎn)的度數(shù)。在模塊開發(fā)者依存網(wǎng)絡(luò)中,如果開發(fā)者在某個(gè)時(shí)間段內(nèi)對(duì)一個(gè)模塊進(jìn)行了修改,就表示兩個(gè)模塊之間存在依存關(guān)系,相關(guān)權(quán)重代表的是修改次數(shù)[4]。
三、目前開源軟件開發(fā)中面臨的問題
現(xiàn)有的開源軟件開發(fā)工作時(shí)間限制是參與開源項(xiàng)目的最大障礙之一。DigitalOcean的研究發(fā)現(xiàn),大多數(shù)參與開源項(xiàng)目的開發(fā)人員每周花在開源項(xiàng)目上的時(shí)間在1到5小時(shí)之間。他們認(rèn)為目前面臨的兩個(gè)主要挑戰(zhàn)是“缺乏資源/時(shí)間”和“技術(shù)債務(wù)”。
除了時(shí)間限制之外,開源世界有時(shí)對(duì)那些試圖涉足的人來說并不友好[5]。當(dāng)項(xiàng)目面臨繁重的文檔義務(wù)時(shí),開源項(xiàng)目貢獻(xiàn)者之間的溝通也會(huì)很快中斷。當(dāng)(大多數(shù))開源項(xiàng)目受到時(shí)間和資源的限制時(shí),首先受到影響的是文檔化程度。如果沒有完整的文檔,新人將面臨非常陡峭的學(xué)習(xí)曲線,除非他們對(duì)該項(xiàng)目非常熟悉,否則很難作出貢獻(xiàn)。
與科技行業(yè)的其他領(lǐng)域一樣,軟件項(xiàng)目缺乏多樣性和包容性。DigitalOcean的研究發(fā)現(xiàn),雖然大多數(shù)開發(fā)人員認(rèn)為過去幾年開源包容性有所改善,但少數(shù)群體成員不同意——26%的少數(shù)群體成員不同意開源包容性,相比之下,非少數(shù)群體的這一比例僅為12%。開源項(xiàng)目治理的貢獻(xiàn)者已經(jīng)尋求各種解決方案來減少有害行為,例如通過禁令和積極審計(jì)來執(zhí)行行為準(zhǔn)則,但即使是這些解決方案也嚴(yán)重依賴于從事這些項(xiàng)目的審計(jì)員[6]。
就目前而言,開源貢獻(xiàn)介于“愛好”和“志愿工作”之間。開發(fā)人員將時(shí)間投入到開源項(xiàng)目中,所做的重要?jiǎng)?chuàng)新工作往往無法得到各方的認(rèn)可,尤其是從這項(xiàng)工作中受益的公司。開源軟件的產(chǎn)生方式(即大多數(shù)資源很少或沒有資源的人如何構(gòu)建、開發(fā)和在線更新軟件)與開源技術(shù)在開發(fā)中所扮演的角色差別較大。
四、開發(fā)協(xié)調(diào)和項(xiàng)目成果的關(guān)系分析
(一)開發(fā)協(xié)調(diào)性和項(xiàng)目成功
軟件開發(fā)者和源代碼模塊依存關(guān)系的網(wǎng)絡(luò)特性對(duì)于開發(fā)中的協(xié)調(diào)必然會(huì)產(chǎn)生一定影響。通過從上述五個(gè)方面分析開發(fā)者和模塊相互依存的協(xié)調(diào)性問題,可以發(fā)現(xiàn)協(xié)調(diào)性與開源軟件項(xiàng)目的成功有關(guān)。
與傳統(tǒng)項(xiàng)目不同,開源軟件項(xiàng)目的目標(biāo)并不是盈利。雖然目前有一些公司最終會(huì)買斷某些開源軟件的版權(quán),但是所有的開源軟件項(xiàng)目最初的組織和發(fā)展都是由開發(fā)者的興趣驅(qū)動(dòng)的。因此,不應(yīng)該以金錢去衡量項(xiàng)目的價(jià)值[7]。相反,可以嘗試從技術(shù)的角度來評(píng)估開發(fā)者在軟件項(xiàng)目的開發(fā)和操作方面的參與程度。研究表明,當(dāng)相關(guān)軟件項(xiàng)目的操作總次數(shù)增加時(shí),這個(gè)項(xiàng)目在技術(shù)層面上的成功率也隨之增加。
(二)依存網(wǎng)絡(luò)一致性對(duì)項(xiàng)目成功的影響
開源軟件的開發(fā)本質(zhì)是軟件開發(fā)者個(gè)體基于合作來開展對(duì)開源軟件的開發(fā)工作,在軟件開發(fā)中貢獻(xiàn)自己的力量和智慧。一般來說,能夠參與到軟件開發(fā)中的個(gè)體會(huì)組成一個(gè)相對(duì)固定的團(tuán)隊(duì),來負(fù)責(zé)軟件的開發(fā)、更新和維護(hù)工作。就依存網(wǎng)絡(luò)一致性來看,它與網(wǎng)絡(luò)密度特性有一定關(guān)聯(lián),表示模塊或開發(fā)者與其他個(gè)體之間存在合作且能夠保持一致性的概率。密度特性代表的是網(wǎng)絡(luò)邊數(shù)和最大可能邊數(shù)之間的比值。在開發(fā)者之間,依存關(guān)系越多,意味著他們的溝通成本也就越大,對(duì)應(yīng)的引起項(xiàng)目操作的總次數(shù)則會(huì)減少[8]。然而,如果有更多的開發(fā)者參與到項(xiàng)目中,項(xiàng)目的活躍度會(huì)明顯提升,這也會(huì)使得項(xiàng)目操作的總次數(shù)不斷增加。如果軟件模塊之間的依存關(guān)系比較理想,就能夠流暢地進(jìn)行知識(shí)共享,這有助于開發(fā)者對(duì)項(xiàng)目做出更大的貢獻(xiàn),并增加項(xiàng)目操作次數(shù)。較少的模塊依存關(guān)系將使任務(wù)的分工更明確、簡(jiǎn)單,從而提升項(xiàng)目操作總次數(shù)。因此,可以提出以下幾點(diǎn)假設(shè):
①開發(fā)者依存網(wǎng)絡(luò)的一致性對(duì)軟件項(xiàng)目成功有消極作用。
②開發(fā)者數(shù)量對(duì)軟件項(xiàng)目成功的影響是正面的。
③模塊依存網(wǎng)絡(luò)的一致性對(duì)軟件項(xiàng)目成功有積極影響。
④模塊數(shù)量對(duì)軟件項(xiàng)目成功有消極影響。
(三)依存網(wǎng)絡(luò)邊緣性對(duì)項(xiàng)目成功的影響
在某個(gè)具體的開源項(xiàng)目中,當(dāng)開發(fā)者組成一個(gè)開發(fā)者社區(qū)時(shí),可以排除開發(fā)者和開發(fā)社區(qū)之外其他開發(fā)者之間的關(guān)系。就依存網(wǎng)絡(luò)的邊緣性來看,它與網(wǎng)絡(luò)模塊的特性密切相關(guān),代表著依存網(wǎng)絡(luò)中的小團(tuán)隊(duì),在這個(gè)團(tuán)隊(duì)中,成員之間的依存關(guān)系密切,而團(tuán)隊(duì)之間的依存關(guān)系稀疏,具有邊緣分割的特性。在開源軟件開發(fā)中,開發(fā)者之間的一致性較高會(huì)導(dǎo)致溝通成本增加。而開發(fā)者依存網(wǎng)絡(luò)模塊的特性越高,表示交互越少,開發(fā)者能夠更獨(dú)立和迅速地響應(yīng)操作。這樣可以控制溝通成本,并增加項(xiàng)目操作的總次數(shù)[9]。同理,在模塊依存網(wǎng)絡(luò)中,模塊特性越高,表示其獨(dú)立性較高,此時(shí)軟件項(xiàng)目模塊設(shè)計(jì)可以適當(dāng)減少交互,降低溝通成本,這對(duì)于增加項(xiàng)目操作總次數(shù)有一定積極作用。因此,可以提出以下幾點(diǎn)假設(shè):
①開發(fā)者依存網(wǎng)絡(luò)邊緣性對(duì)軟件項(xiàng)目成功有積極影響。
②模塊依存網(wǎng)絡(luò)邊緣性對(duì)軟件項(xiàng)目成功有積極作用。
(四)依存網(wǎng)絡(luò)等級(jí)性對(duì)項(xiàng)目成功的影響
一般而言,開發(fā)者選擇加入某開源軟件社區(qū)是以興趣為基礎(chǔ)和引導(dǎo)的。他們可以根據(jù)自己的時(shí)間來安排工作,并為軟件代碼開發(fā)貢獻(xiàn)自己的力量。對(duì)于有等級(jí)結(jié)構(gòu)的傳統(tǒng)組織如何有效管理日常活動(dòng)等級(jí)性對(duì)項(xiàng)目成功的影響如何,需要具體分析。可以借助依存網(wǎng)絡(luò)的中心獨(dú)特性來對(duì)組織等級(jí)性進(jìn)行描述。等級(jí)性描述組織通過集權(quán)實(shí)現(xiàn)重要信息的傳播,而中心度較高的網(wǎng)絡(luò)中,知識(shí)分布是不均勻的,大部分知識(shí)集中在一些中心度高的位置。在中心度較高的開發(fā)者依存網(wǎng)絡(luò)中,相關(guān)指令可以實(shí)現(xiàn)高效而直接地傳遞,這有助于增加項(xiàng)目總操作的次數(shù)。但需要注意的是,在中心度較高的模塊依存網(wǎng)絡(luò)中,因?yàn)橹R(shí)集中度較高,一些模塊的負(fù)擔(dān)會(huì)因此增大,這種模塊設(shè)計(jì)模式可能不夠高效。因此,可以提出幾點(diǎn)假設(shè):
①開發(fā)者依存網(wǎng)絡(luò)等級(jí)性對(duì)軟件項(xiàng)目成功有積極影響。
②模塊依存網(wǎng)絡(luò)等級(jí)性對(duì)軟件項(xiàng)目成功有消極影響。
(五)依存網(wǎng)絡(luò)中介性對(duì)項(xiàng)目成功的影響
在軟件開發(fā)的過程中,需要開發(fā)者進(jìn)行合作,相關(guān)軟件模塊也需要進(jìn)行相互調(diào)用。其中,中介性模式是一個(gè)重要研究方向。網(wǎng)絡(luò)分析過程中,相關(guān)網(wǎng)絡(luò)之間的特性就是這類中介性描述的主要結(jié)果。因此,可以將依存網(wǎng)絡(luò)中介性和網(wǎng)絡(luò)特性之間的關(guān)系理解為開發(fā)者或模塊通過中介路徑進(jìn)行信息發(fā)掘,最終實(shí)現(xiàn)任務(wù)的完成[10]。
在此次研究中,認(rèn)為在開發(fā)者依存網(wǎng)絡(luò)中扮演信息橋角色的開發(fā)者被視為中介者。如果兩個(gè)開發(fā)者希望進(jìn)行合作互助,則需要構(gòu)建一條信息傳遞通道。在具有較高依存網(wǎng)絡(luò)關(guān)系的開發(fā)中,中介的作用更為重要,信息傳遞更加通暢,對(duì)應(yīng)的軟件項(xiàng)目操作總次數(shù)也會(huì)更多。同樣,在模塊依存網(wǎng)絡(luò)中,具有信息橋梁作用的模塊被視為適配器,能夠促進(jìn)各模塊之間的有效配合。開發(fā)者可以借助適配器來獲得信息,避免混亂的模塊調(diào)用。如果模塊依存網(wǎng)絡(luò)之間的特性較高,模塊的適配器功能也就越好,因此軟件項(xiàng)目操作次數(shù)也會(huì)更多。據(jù)此,提出了幾點(diǎn)假設(shè):
①開發(fā)者依存網(wǎng)絡(luò)的中介性對(duì)軟件項(xiàng)目有積極影響。
②模塊依存網(wǎng)絡(luò)的中介性對(duì)軟件項(xiàng)目有消極影響。
(六)依存網(wǎng)絡(luò)鄰接性對(duì)項(xiàng)目成功的影響
進(jìn)行開源軟件開發(fā)時(shí),某開發(fā)者希望從其他開發(fā)者那里獲得幫助,但對(duì)能夠幫助到他的人不夠熟悉,所以他必然會(huì)求助他熟悉的人借助網(wǎng)絡(luò)連接獲得其他開發(fā)者的幫助。軟件模塊調(diào)用也是如此,在軟件模塊的調(diào)用過程中,也需要通過網(wǎng)絡(luò)尋找需要調(diào)用的其他模塊。在這個(gè)過程中,開發(fā)者之間或模塊之間在網(wǎng)絡(luò)上的鄰近性大小也成了一個(gè)關(guān)鍵問題。依存網(wǎng)絡(luò)的鄰近性和網(wǎng)絡(luò)相近特性相關(guān),代表的是網(wǎng)絡(luò)節(jié)點(diǎn)快速獲得信息的能力。因此,可以提出以下幾點(diǎn)假設(shè):
①開發(fā)者依存網(wǎng)絡(luò)的鄰接性對(duì)軟件項(xiàng)目有積極影響。
②模塊依存網(wǎng)絡(luò)的鄰接性對(duì)軟件項(xiàng)目有消極影響。
五、結(jié)束語
通過大量的開源軟件開發(fā)社區(qū)數(shù)據(jù),對(duì)相關(guān)假設(shè)以及估計(jì)模型進(jìn)行驗(yàn)證,對(duì)實(shí)際開源軟件項(xiàng)目管理提出意見,最終得出結(jié)論:成功的開源軟件開發(fā)項(xiàng)目的開發(fā)者依存網(wǎng)絡(luò)需要具備低一致性、高邊緣性、高等級(jí)性、高中介性和高鄰接性。此外,它的模塊依存網(wǎng)絡(luò)應(yīng)確保高一致性、高邊緣性、低等級(jí)性、高中介性以及低鄰接性。
作者單位:張祎 雅安職業(yè)技術(shù)學(xué)院
參" 考" 文" 獻(xiàn)
[1]吳江,胡斌,張金隆.開源軟件開發(fā)者和源代碼協(xié)調(diào)性的網(wǎng)絡(luò)分析[J].科研管理,2011,32(8):133-141,150.
[2]侯冠基,張堯,周二專,等.一種基于開源軟件的新型電力系統(tǒng)網(wǎng)格計(jì)算平臺(tái)[J].電力系統(tǒng)自動(dòng)化,2009,33(1):56-60.
[3]張為軍.計(jì)算機(jī)行業(yè)開源現(xiàn)象分析——基于知識(shí)和制度理論[D].廣東:中山大學(xué),2009.
[4]RICHARDEAU FABIEN.開源軟件在中國(guó)的傳播機(jī)制研究[D].上海:上海交通大學(xué),2008.
[5]陳光沛,魏江,李拓宇.開源社區(qū):研究脈絡(luò)、知識(shí)框架和研究展望[J].外國(guó)經(jīng)濟(jì)與管理,2021,43(2):84-102.
[6]趙麗.從軟件源代碼的技術(shù)特征看開源軟件與反向工程的法律屬性[J].武漢科技學(xué)院學(xué)報(bào),2010,23(6):22-26.[7]崔亞奇.面向源代碼的開源軟件安全檢測(cè)研究[D].華北電力大學(xué),2020.
[8]壽增,許睿超,馬驍,等.基于數(shù)據(jù)依賴圖聚類的開源軟件靜態(tài)分析系統(tǒng)[J].中國(guó)電子科學(xué)研究院學(xué)報(bào),2022,17(8):743-747,772.
[9]江彥.開源是中國(guó)的戰(zhàn)略選擇——訪中國(guó)開放源代碼軟件(OSS)推進(jìn)聯(lián)盟主席陸首群[J].通信管理與技術(shù),2009(1):48-52.
[10]薛崧.使用開源數(shù)字圖書館軟件有關(guān)的問題與對(duì)策[J].現(xiàn)代情報(bào),2006,26(10): 82-84,87.