張智 鄭卉 蔣依伶 袁歡歡 鄭明清
摘要:Github作為當(dāng)今最為流行的軟件項目托管平臺,集版本控制、信息交流、代碼分析、團隊協(xié)作為一體,使得軟件項目開發(fā)得以高效運作。該文主要從大學(xué)生創(chuàng)新項目的角度分析,作為剛剛接觸軟件項目開發(fā)的計算機專業(yè)本科生如何使用Github實現(xiàn)高效的團隊協(xié)作。
關(guān)鍵詞:Github;團隊協(xié)作;創(chuàng)新項目
中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2015)07-0206-03
Abstract: As the most popular software project hosting platform,Github sets the version control, information exchange, code analysis, teamwork development as a whole making the software project development running efficiently.the eaasy mainly analyses how to achieve the efficient teamwork software development with Github by us undergraduate students without much experience in software project based on the college students innovation projects.
Key words: Github;teamwork development;college students innovation project
江蘇省教育廳根據(jù)“江蘇省高等學(xué)校教學(xué)質(zhì)量與教學(xué)改革工程”總體安排,啟動實施了江蘇省高等學(xué)校大學(xué)生實踐創(chuàng)新訓(xùn)練計劃,旨在通過創(chuàng)新實踐項目來培養(yǎng)本科生的能力[1]。我們作為2012級計算機專業(yè)的學(xué)生參加本次創(chuàng)新訓(xùn)練計劃,在創(chuàng)新項目中遇到的一個最關(guān)鍵的問題,就是團隊協(xié)作:①項目小組成員之間的協(xié)作;②小組成員與指導(dǎo)老師之間的協(xié)作;③學(xué)生與社會外界的互動。這三點是我們此次創(chuàng)新項目團隊協(xié)作能力的主要培養(yǎng)目標(biāo)。傳統(tǒng)上,我們學(xué)生群體里面會使用QQ這類通訊社交軟件作為溝通與協(xié)作的平臺,通過QQ群來傳輸文件、交流代碼。但是,QQ畢竟只是一個滿足普通通訊需求的大眾軟件,對于軟件項目開發(fā)這種專業(yè)的需求,其功能只能算是勉強應(yīng)付,完全無法提供一套高效的團隊協(xié)作解決方案。這時我們想到了業(yè)界內(nèi)非常流行的軟件項目托管平臺Github。作為一款專為軟件開發(fā)者準(zhǔn)備的管理平臺,其為我們帶來了前所未有的團隊開發(fā)體驗,使我們的創(chuàng)新項目得以高效地運轉(zhuǎn)。
1 Github簡介及與傳統(tǒng)工具的比較
GitHub是一個分布式版本控制與項目托管系統(tǒng),于2008年上線。截至目前,除了Git代碼倉庫托管及Web管理界面以外,還提供了訂閱、討論組、文本渲染、在線文件編輯器、代碼片段分享等功能。正因為這些功能所提供的便利,又經(jīng)過長期的積累,GitHub的用戶活躍度很高,在開源世界里享有深遠的聲望,形成了一種社交編程文化[2]。
我們將Github與傳統(tǒng)的QQ客戶端在軟件開發(fā)所必須具備的功能上做了一個比較,如表1所示。可以明顯地發(fā)現(xiàn),QQ客戶端是無法滿足專業(yè)的軟件開發(fā)需求的,而Github作為專為開發(fā)者打造的管理系統(tǒng),基本勝任開發(fā)者的專業(yè)需求,可以保證軟件開發(fā)過程的高效率。
不過,QQ客戶端也有其優(yōu)于Github的地方,也就是其主要的功能——通訊。在QQ群里團隊成員可以非常方便地集體討論,交流意見,這一點是Github無法做到的。所以,從實際的角度出發(fā),結(jié)合使用Github與QQ輔助開發(fā),將獲得事半功倍的效果。
2 Github在創(chuàng)新項目中的實戰(zhàn)應(yīng)用
下面我們將就Github的具體功能來分析其如何實現(xiàn)在引言中提到的三點能力培養(yǎng)目標(biāo)。
2.1 項目小組成員之間的分工合作
項目小組成員之間的協(xié)作能力的一個重要體現(xiàn)就是高效地分工合作。Github以branch(分支)功能來管理團隊成員的分工問題。每一個小組成員,都可以在Gtihub上建立自己的分支(如圖1所示),負責(zé)自己的模塊,寫自己的代碼而完全不受其他組員的影響。這種分布式的思想即保證了開發(fā)過程的高效性與并行性。
不過,分工只是團隊開發(fā)的前一部分,接下來還要面對合并的問題。如果是傳統(tǒng)的方式,我們或許會將自己寫的那部分代碼以及編碼說明上傳到QQ群,然后統(tǒng)一由一個人(比如組長)負責(zé)合并。他將面臨諸多難題,包括準(zhǔn)確識別每個成員負責(zé)的模塊范圍,不能復(fù)制多也不能復(fù)制少;區(qū)分軟件編碼的公共區(qū)域;接口的定義與調(diào)用;軟件的公共配置。如果像這樣的工作次數(shù)有限,對于一個團隊來說是可以接受的,但如果開發(fā)周期較長,需要人工合并分支的次數(shù)很多,勢必造成很高昂的人力成本。事實上,以上提及的所有工作,Github可以全部代辦自動完成,合并分支準(zhǔn)確無誤而且非常迅速,如圖2所示,點擊“Create pull request”即可申請合并一個分支。只有一點,Github不能自己解決,那就是當(dāng)有兩個成員同時編輯了同一段代碼時,Github不知道應(yīng)該采用誰的,這就是所謂的沖突。不過Github會準(zhǔn)確找到發(fā)生沖突的位置與范圍,并告知提出合并的人,讓其決定采用誰的代碼。
2.2 項目進度管理與控制
在創(chuàng)新項目中,團隊成員與指導(dǎo)老師之間的互動交流是非常重要的。線下面對面地與老師交流當(dāng)然是最好最有效的方式,但我們不可能總是有時間與老師作當(dāng)面交流。此時我們需要一個能夠方便地連接學(xué)生與老師、方便地管理項目進度的平臺。在這個平臺上,所有人都要能夠清晰地看到項目的進展,代碼的貢獻者及增減變化,同時還要能夠針對具體某個點作出評論、提出建議。這些在Github上都有著對應(yīng)的解決方案。在合并分支之前,Github提供了一個非常全面的代碼審查與質(zhì)量管理的平臺。如圖3所示,左邊為原始代碼結(jié)構(gòu),右邊為某位成員的更新結(jié)果,紅色的代表被其刪除的語句,綠色代表新增添的語句。在整個視圖中,對比清晰,易于審查與管理。指導(dǎo)老師即便沒有與學(xué)生見面,也能很方便地掌握項目進展的狀況,并針對具體細節(jié)提出建議。
2.3 項目小組成員向社會外界求助與互動
在創(chuàng)新項目的任務(wù)進行中,有時會遇到整個小組都難以解決的瓶頸問題,此時向指導(dǎo)老師求助是一個可行的辦法,但有時候可能向社會外界求助會獲得更高的效率與更好的解決方案。Github本身也倡導(dǎo)所謂的social coding(社交編程)文化,希望所有Github參與者都能夠在整個世界范圍的IT圈獲得更廣泛的受益。軟件開發(fā)的產(chǎn)品是社會性的產(chǎn)品,我們作為軟件開發(fā)者,理所應(yīng)當(dāng)廣泛地接觸社會中的元素,從更多的途徑汲取養(yǎng)分。
Github本身為所有使用者提供了一個極其便捷的社交平臺。其一,所有公開的代碼倉庫都可以被方便地搜索到并方便地被大家fork(拷貝)到自己項目的目錄下,如圖4所示,只要在搜索欄中輸入關(guān)鍵字,便可以搜索到所有相關(guān)的代碼倉庫,點擊打開后的界面如圖5所示;其二,作為在Github上托管的項目的管理員,可以邀請別的任何Github用戶以第三方的身份參與自己的項目的開發(fā)。任何非項目正式參與者可以將該項目fork到自己的目錄下作為該項目的一個邏輯分支,獨立開發(fā),完成后只需申請合并即可。
2.4 項目小組對成員的總結(jié)與評價
定期對團隊的成員作小結(jié)與評價是項目管理的必需要求,也是增進團隊成員之間的了解、促進團隊成員更高效協(xié)作的重要措施。一個好的項目管理平臺應(yīng)當(dāng)具備完善的成員管理機制。對此Github也一并提供了比較完善的工具支持。
如圖6與圖7所示,每個人在項目中所做的貢獻數(shù)以及其與時間的函數(shù)關(guān)系都被詳細地記錄在系統(tǒng)內(nèi)。Github提供的數(shù)據(jù)可以很好地描述成員近期對項目的貢獻情況,方便團隊以及指導(dǎo)老師管理與分析。
3 結(jié)束語
省教育廳主辦的高等學(xué)校大學(xué)生實踐創(chuàng)新訓(xùn)練計劃,從多個角度培養(yǎng)并提高了我們大學(xué)本科生的工作實踐能力。對于我們計算機專業(yè)的學(xué)生來說,尤為重要的一項便是團隊協(xié)作開發(fā)的能力。使用Github作為團隊協(xié)作開發(fā)的工具,使我們切身經(jīng)歷了一個軟件項目的開發(fā)是如何做到高效運轉(zhuǎn)的,這也為我們今后投入正式工作積累了重要經(jīng)驗。
參考文獻:
[1]柏雙友,李偉,et al.Origin軟件在大學(xué)生創(chuàng)新項目中的應(yīng)用實踐[J].價值工程,2004(5):209-212.
[2]blueshadow. GitHub介紹[EB/OL].( 2014-10-17)http://blog.sina.com.cn/s/blog_72b936d80102v58z.html