陳丁
摘要:當(dāng)今工程教育越來(lái)越注重培養(yǎng)工科學(xué)生的工程實(shí)踐能力,以項(xiàng)目為基礎(chǔ)的教學(xué)方法得到越來(lái)越多的認(rèn)同。本文通過分析和討論計(jì)算機(jī)工程實(shí)踐課程教學(xué)的現(xiàn)狀及問題,結(jié)合GitLab項(xiàng)目管理平臺(tái)的特點(diǎn),分別從實(shí)踐的體系結(jié)構(gòu)、教學(xué)模式、過程考核管理、團(tuán)隊(duì)組織等方面入手,提出了利用Gitlab平臺(tái)開展高校計(jì)算機(jī)工程實(shí)踐課程教學(xué)的解決方案,最后分析這種模式的意義和影響。
關(guān)鍵詞:Gitlab;開源軟件;工程實(shí)踐;項(xiàng)目驅(qū)動(dòng)
中圖分類號(hào):G642.0 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1674-9324(2015)52-0123-02
一、背景及現(xiàn)狀
工程實(shí)踐教學(xué)是地方高校培養(yǎng)應(yīng)用型人才的重要環(huán)節(jié),工程實(shí)踐教學(xué)可以促進(jìn)學(xué)生鞏固知識(shí),鍛煉學(xué)生分析問題、解決問題的能力,其效果直接影響著課程的教學(xué)質(zhì)量。在計(jì)算機(jī)工程實(shí)踐教學(xué)中,以項(xiàng)目驅(qū)動(dòng)的教學(xué)方法在越來(lái)越多的工科院校中運(yùn)用,這種教學(xué)模式通過運(yùn)用來(lái)自現(xiàn)實(shí)工程項(xiàng)目或模擬現(xiàn)實(shí)項(xiàng)目的案例,創(chuàng)造真實(shí)或接近真實(shí)的工程環(huán)境,以實(shí)現(xiàn)傳授工程學(xué)科知識(shí)、鍛煉學(xué)生工程技能的目標(biāo)。在以項(xiàng)目驅(qū)動(dòng)的工程實(shí)踐教學(xué)過程中,首先教師布置多個(gè)項(xiàng)目題目,并對(duì)每個(gè)項(xiàng)目的背景和要求等做出說(shuō)明,同學(xué)們根據(jù)自己的能力和愛好選擇某個(gè)題目來(lái)完成,在同學(xué)們完成項(xiàng)目實(shí)踐的過程中,教師對(duì)其進(jìn)行相關(guān)指導(dǎo),最后教師根據(jù)同學(xué)們的完成情況做出評(píng)價(jià)和打分。但在運(yùn)用這種教學(xué)模式過程中也暴露出如下問題。
1.項(xiàng)目過程不透明,過程化考核管理難。過程化考核是現(xiàn)代教育改革發(fā)展趨勢(shì)之一,但由于參加工程實(shí)踐的同學(xué)多,教師沒法做到一對(duì)一的教學(xué)管理和跟蹤,一般只能根據(jù)平時(shí)的考勤和學(xué)生提問。由于無(wú)法進(jìn)行過程化的考核和監(jiān)督,會(huì)出現(xiàn)部分學(xué)生利用網(wǎng)上類似的代碼來(lái)完成項(xiàng)目。
2.一人一題,無(wú)法提高團(tuán)隊(duì)協(xié)作。為避免出現(xiàn)抄襲和窩工的現(xiàn)象,在選題過程中我們盡量讓學(xué)生獨(dú)立完成一個(gè)題目,但是由于一個(gè)真實(shí)工程項(xiàng)目的工作量普遍偏大,因此學(xué)生沒法在2~3周的時(shí)間內(nèi)獨(dú)立完成所有功能要求,而且做出來(lái)的東西也相對(duì)比較粗糙。但如果一個(gè)題目讓多個(gè)學(xué)生去完成,又會(huì)出現(xiàn)一些能力差的同學(xué)窩工偷懶,無(wú)法真實(shí)鍛煉和評(píng)價(jià)出每個(gè)學(xué)生的能力。
3.編碼混亂,代碼質(zhì)量不高。雖然在選題前教師就給出了編碼規(guī)范,但是由于項(xiàng)目工作量偏大以及考評(píng)要求,大部分學(xué)生都把精力集中到完成項(xiàng)目的功能要求上,而忽視了代碼規(guī)范和質(zhì)量。
4.項(xiàng)目代碼保存度較差,后續(xù)應(yīng)用價(jià)值不大。目前對(duì)學(xué)生完成的工程項(xiàng)目代碼,只是上交給相關(guān)負(fù)責(zé)教師,在學(xué)院級(jí)別沒有一個(gè)集中統(tǒng)一的管理,一些完成較好的項(xiàng)目作業(yè)沒法作為案例分享給下一屆學(xué)生,并且學(xué)生們完成的項(xiàng)目作業(yè)也沒法二次開發(fā)并應(yīng)用到現(xiàn)實(shí)場(chǎng)景中。
針對(duì)以上問題,我們提出了利用工業(yè)級(jí)的Gitlab代碼管理平臺(tái)對(duì)學(xué)生們完成的工程實(shí)踐項(xiàng)目進(jìn)行跟蹤管理及評(píng)估,以適應(yīng)現(xiàn)代工程教育不斷發(fā)展的要求,培養(yǎng)出符合社會(huì)需求的應(yīng)用型人才,提高計(jì)算機(jī)工程實(shí)踐課程的教學(xué)效果。
二、基于Gitlab平臺(tái)教學(xué)實(shí)施的可行性
GitLab是一個(gè)利用Ruby on Rails開發(fā)的開源應(yīng)用程序,實(shí)現(xiàn)一個(gè)自托管的Git項(xiàng)目倉(cāng)庫(kù),可通過Web界面進(jìn)行訪問公開或者私人項(xiàng)目。它擁有與Github類似的功能,能夠?yàn)g覽源代碼,管理缺陷和注釋,可以管理團(tuán)隊(duì)對(duì)倉(cāng)庫(kù)的訪問。它非常易于瀏覽提交過的版本并提供一個(gè)文件歷史庫(kù),團(tuán)隊(duì)成員可以利用內(nèi)置的簡(jiǎn)單聊天程序(Wall)進(jìn)行交流。它還提供了一個(gè)代碼片段收集功能可以輕松實(shí)現(xiàn)代碼復(fù)用,便于日后有需要時(shí)進(jìn)行查找。
1.Gitlab的特點(diǎn)。①它是使用Git進(jìn)行分布式的版本控制項(xiàng)目,具備代碼審查、問題追蹤、活動(dòng)信息、維基和持續(xù)集成。②它能容納25000+的用戶群同時(shí)在一臺(tái)服務(wù)器上,LDAP/AD組同步和日志審計(jì)。③它是一個(gè)開源軟件,由社區(qū)驅(qū)動(dòng)、700+貢獻(xiàn)者檢查完善代碼,方便集成。④在業(yè)界內(nèi)具有很多成功應(yīng)用的案例,如開源中國(guó)代碼托管平臺(tái)等。
2.對(duì)學(xué)生能力的要求。除了要求學(xué)生熟練掌握使用Git對(duì)項(xiàng)目代碼進(jìn)行版本管理,項(xiàng)目的實(shí)施也可以是以團(tuán)隊(duì)小組為單位來(lái)展開,在碰到疑惑和問題時(shí),除了向教師求教外,還應(yīng)該通過自學(xué)或同學(xué)間的互相幫助,廣泛開展交流、溝通與互相合作來(lái)解決問題。在合作過程中,還可以提高學(xué)生的人際交往和溝通表達(dá)能力。
3.對(duì)教師能力的要求。應(yīng)用型大學(xué)的雙師型教師不僅具有專業(yè)的理論知識(shí),還要具有相當(dāng)?shù)墓こ添?xiàng)目經(jīng)驗(yàn),需要熟悉企業(yè)項(xiàng)目開發(fā)的工作流程和管理模式,具有作為系統(tǒng)分析員(系統(tǒng)架構(gòu)師)的系統(tǒng)分析與設(shè)計(jì)能力,才能有效地組織工程實(shí)踐內(nèi)容,培養(yǎng)學(xué)生的理論知識(shí)與專業(yè)技能,以及職業(yè)素質(zhì)及社會(huì)適應(yīng)能力。
三、基于Gitlab平臺(tái)教學(xué)的實(shí)施
通過Gitlab平臺(tái),把實(shí)踐教學(xué)的學(xué)習(xí)和互動(dòng)延伸到課外,教師無(wú)需到實(shí)驗(yàn)室就能掌握整個(gè)項(xiàng)目的進(jìn)展情況,項(xiàng)目進(jìn)行中可以及時(shí)對(duì)代碼進(jìn)行評(píng)審,保證代碼質(zhì)量,項(xiàng)目完成后可以對(duì)項(xiàng)目進(jìn)行統(tǒng)計(jì)分析,對(duì)項(xiàng)目小組成員工作進(jìn)行評(píng)價(jià)。
1.項(xiàng)目發(fā)布。教師首先在gitlab平臺(tái)上建立好一個(gè)基本的項(xiàng)目結(jié)構(gòu)框架,并邀請(qǐng)選題的學(xué)生成為該項(xiàng)目的開發(fā)人員,這時(shí)學(xué)生就可以使用Git工具將Gitlab上的代碼克隆到本地代碼倉(cāng)庫(kù)中。項(xiàng)目成員就可以根據(jù)任務(wù)分工,在自己的機(jī)器上完成其對(duì)應(yīng)的項(xiàng)目功能。
2.項(xiàng)目過程跟蹤管理。教師可以要求項(xiàng)目成員必須每天晚上10點(diǎn)前提交項(xiàng)目代碼,每天提交的代碼記錄情況將作為過程化考核的依據(jù)。這樣就可以實(shí)時(shí)發(fā)現(xiàn)團(tuán)隊(duì)成員中開放進(jìn)度偏慢的學(xué)生,及時(shí)找出原因,避免窩工。
3.代碼質(zhì)量分析。教師可以根據(jù)編碼規(guī)范,利用系統(tǒng)對(duì)提交的代碼進(jìn)行審核,對(duì)不符合代碼規(guī)范和要求的系統(tǒng)可以拒絕其提交,同時(shí)也可以利用系統(tǒng)的質(zhì)量分析功能,對(duì)已提交的代碼進(jìn)行質(zhì)量評(píng)審。
4.項(xiàng)目貢獻(xiàn)評(píng)價(jià)。當(dāng)整個(gè)實(shí)踐項(xiàng)目完成后,教師需要分別對(duì)項(xiàng)目團(tuán)隊(duì)成員的工作進(jìn)行評(píng)價(jià)。通過gitlab的統(tǒng)計(jì)功能,教師可以依據(jù)其貢獻(xiàn)率客觀、公正的對(duì)項(xiàng)目成員進(jìn)行打分。
四、遇到的問題和下一步的研究方向
目前我們對(duì)Gitlab在工程實(shí)踐教學(xué)的應(yīng)用探索還處在起步階段,在應(yīng)用中遇到了很多的問題,例如:由于gitlab是針對(duì)企業(yè)級(jí)的代碼版本管理軟件一些流程,并不一定適合我們的教學(xué)要求,因此界面可用性問題,工具比較獨(dú)立,很難整合使用,項(xiàng)目在線部署功能還有待加強(qiáng);個(gè)別工具的性能還有待優(yōu)化;等等。針對(duì)這些問題,我們制訂了下一階段的研究計(jì)劃。
1.代碼相似度分析。為規(guī)避抄襲現(xiàn)象,需要對(duì)學(xué)生上傳代碼進(jìn)行相似度分析,這是在Gitlab所沒有實(shí)現(xiàn)的。
2.在線實(shí)時(shí)項(xiàng)目部署。根據(jù)學(xué)生上傳的項(xiàng)目代碼,可以在線對(duì)項(xiàng)目進(jìn)行發(fā)布,及時(shí)跟蹤檢查項(xiàng)目的完成情況。
3.對(duì)代碼活動(dòng)進(jìn)一步數(shù)據(jù)分析。這可以幫助教師全面掌握學(xué)生在學(xué)習(xí)中遇到的問題,針對(duì)教學(xué)資源和支持服務(wù)的質(zhì)量反饋等數(shù)據(jù),為下一步的決策提供有利的數(shù)據(jù)支持。
4.優(yōu)化實(shí)時(shí)聊天功能,為學(xué)生支持服務(wù)提供有利的工具保證。
5.界面可用性優(yōu)化。優(yōu)化界面設(shè)計(jì),使其更加符合中國(guó)人的使用習(xí)慣和審美觀。
五、結(jié)論
通過采用業(yè)界流行Gitlab代碼版本管理平臺(tái)作為計(jì)算機(jī)工程實(shí)踐項(xiàng)目的嘗試,為在工程實(shí)踐教學(xué)中的問題找到了一條新的解決途徑,并且可以利用開源系統(tǒng)開放的特點(diǎn)在此基礎(chǔ)上做二次開發(fā),既能節(jié)省軟件的開發(fā)和維護(hù)的使用成本,又能比較完全的滿足各學(xué)校實(shí)際的需求,還能隨著開源軟件的升級(jí)而得到升級(jí)服務(wù)。
參考文獻(xiàn):
[1]劉海山,郭偉.工程管理專業(yè)實(shí)驗(yàn)實(shí)踐課程教學(xué)的探索[J].實(shí)驗(yàn)室科學(xué),2015,(01).
[2]宋冬生.Git——版本管理之利器[J].程序員,2007,(11).