朱家樂(lè)
關(guān)鍵詞:Gitee;軟件實(shí)訓(xùn);分組教學(xué);Git;版本管理
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2023)10-0105-03
0 引言
軟件類課程的重要特點(diǎn)是理論與實(shí)踐聯(lián)系非常緊密,提倡手腦并用。學(xué)生經(jīng)過(guò)一段時(shí)間的理論知識(shí)的學(xué)習(xí)后,必須通過(guò)軟件實(shí)訓(xùn)課程的動(dòng)手訓(xùn)練,才能對(duì)理論知識(shí)有深刻的理解,提高軟件開(kāi)發(fā)能力。對(duì)于軟件實(shí)訓(xùn)課程,經(jīng)常采用分組教學(xué)的方式來(lái)推進(jìn)教學(xué)過(guò)程。軟件實(shí)訓(xùn)課程存在任務(wù)多、時(shí)間短等特點(diǎn),在兩周左右的時(shí)間內(nèi)需要完成系統(tǒng)設(shè)計(jì)、編碼、測(cè)試、答辯等過(guò)程,對(duì)單個(gè)學(xué)生來(lái)說(shuō)難度較大。采用分組教學(xué)的方式,可以模擬企業(yè)真實(shí)的軟件開(kāi)發(fā)場(chǎng)景,鍛煉學(xué)生的團(tuán)隊(duì)協(xié)作能力,提升學(xué)生職業(yè)能力。在分組教學(xué)的實(shí)踐過(guò)程中,傳統(tǒng)的方式多是手工操作,無(wú)法對(duì)學(xué)生代碼、教學(xué)過(guò)程進(jìn)行有效管理,需要有對(duì)應(yīng)的平臺(tái)支撐。在企業(yè)級(jí)軟件開(kāi)發(fā)過(guò)程中,Git已經(jīng)成為代碼版本管理的標(biāo)準(zhǔn)工具。Gitee是國(guó)內(nèi)基于Git的代碼托管平臺(tái),文章介紹了基于Gitee平臺(tái)進(jìn)行分組教學(xué)設(shè)計(jì)與實(shí)踐,可以有效支持軟件實(shí)訓(xùn)課程的分組教學(xué)過(guò)程。
1 相關(guān)工作
在傳統(tǒng)軟件實(shí)訓(xùn)課程實(shí)踐過(guò)程中,往往沒(méi)有重視版本控制系統(tǒng)的使用,學(xué)生通過(guò)本地存儲(chǔ)、U盤拷貝等方式進(jìn)行代碼保存和交流。版本控制系統(tǒng)提供版本管理功能,用于存儲(chǔ)、追蹤文件夾和文件的修改歷史,是軟件開(kāi)發(fā)者的必備工具,是軟件公司的基礎(chǔ)設(shè)施。Git是目前最流行的開(kāi)源版本控制系統(tǒng),其最大的特點(diǎn)是分布式。和SVN相比,Git客戶端并不只提取最新版本的文件快照,而是把代碼倉(cāng)庫(kù)完整地鏡像下來(lái),包括完整的歷史記錄[1]。GitHub是全球最流行的基于Git的開(kāi)源代碼庫(kù)以及版本控制系統(tǒng),已經(jīng)成為管理軟件開(kāi)發(fā)以及發(fā)現(xiàn)已有代碼的首選方法[2]。文獻(xiàn)[3]和文獻(xiàn)[4]分別提出了基于GitHub的協(xié)同式實(shí)驗(yàn)教學(xué)方法和問(wèn)題驅(qū)動(dòng)式編程實(shí)驗(yàn)教學(xué)方法。GitHub的缺點(diǎn)是在國(guó)內(nèi)訪問(wèn)速度比較慢,另外只有英文界面,對(duì)學(xué)生的英文要求比較高。Gitee 是開(kāi)源中國(guó)社區(qū)2013年推出的基于Git 的代碼托管服務(wù),目前已經(jīng)成為國(guó)內(nèi)最大的代碼托管平臺(tái)[5]。和GitHub相比,國(guó)內(nèi)訪問(wèn)的速度較快,全中文的頁(yè)面和文檔也更加友好。學(xué)生學(xué)會(huì)使用Gitee后可以很容易上手GitHub。
2 基于Gitee 的分組教學(xué)設(shè)計(jì)
南京工業(yè)職業(yè)技術(shù)大學(xué)的《小型應(yīng)用系統(tǒng)設(shè)計(jì)綜合實(shí)訓(xùn)》課程是面向軟件工程、人工智能、大數(shù)據(jù)等專業(yè)開(kāi)設(shè)的綜合實(shí)訓(xùn)課程,課程學(xué)時(shí)3周72學(xué)時(shí),是經(jīng)過(guò)計(jì)算機(jī)導(dǎo)論、程序設(shè)計(jì)基礎(chǔ)、數(shù)據(jù)庫(kù)等課程學(xué)習(xí)之后,進(jìn)行完整系統(tǒng)開(kāi)發(fā)訓(xùn)練的綜合項(xiàng)目。通過(guò)該綜合實(shí)訓(xùn),一方面培養(yǎng)學(xué)生通過(guò)Java等語(yǔ)言進(jìn)行應(yīng)用軟件開(kāi)發(fā)和數(shù)據(jù)庫(kù)應(yīng)用的能力,另一方面培養(yǎng)學(xué)生在軟件項(xiàng)目的需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)、用戶交互設(shè)計(jì)、系統(tǒng)測(cè)試、項(xiàng)目文檔撰寫等方面的能力,使學(xué)生經(jīng)歷應(yīng)用軟件開(kāi)發(fā)端到端的完整工作過(guò)程,提高軟件開(kāi)發(fā)職業(yè)能力。下面以該實(shí)訓(xùn)課程為例,重點(diǎn)介紹Gitee平臺(tái)相關(guān)操作部分。實(shí)訓(xùn)課程的參考項(xiàng)目計(jì)劃如表1所示。
2.1 Gitee 基本原理及操作
本階段,教師需指導(dǎo)學(xué)生學(xué)習(xí)Git基本原理及操作。Git是目前最流行的開(kāi)源版本控制系統(tǒng),其最大的特點(diǎn)是分布式。和SVN相比,Git客戶端并不只提取最新版本的文件快照,而是把代碼倉(cāng)庫(kù)完整地鏡像下來(lái),包括完整的歷史記錄。學(xué)生首先需要完成Git 軟件安裝,學(xué)會(huì)Gitee的基本原理和基本操作,尤其是Git基本命令??梢詤⒖糋itee官方文檔完成快速入門,注冊(cè)Gitee賬號(hào),創(chuàng)建第一個(gè)倉(cāng)庫(kù),提交第一行代碼。本階段學(xué)生需要理解Git工作區(qū)、暫存區(qū)、版本庫(kù)的基本概念,掌握基本的Git操作命令,包括創(chuàng)建倉(cāng)庫(kù)、克隆倉(cāng)庫(kù)、添加文件到暫存區(qū)、提交代碼、push代碼、pull代碼、分支管理等。Git基本原理及常用操作命令如圖1所示。
2.2 團(tuán)隊(duì)創(chuàng)建
下面基于Gitee平臺(tái)完成團(tuán)隊(duì)創(chuàng)建工作。首先,教師申請(qǐng)Gitee高校版賬號(hào),完成高??臻g地址的注冊(cè),邀請(qǐng)學(xué)生加入高??臻g。Gitee高校版支持倉(cāng)庫(kù)管理、團(tuán)隊(duì)管理、項(xiàng)目管理,是分組教學(xué)的基礎(chǔ)平臺(tái)。然后,學(xué)生線下完成分組,每組有一名組長(zhǎng),實(shí)行組長(zhǎng)負(fù)責(zé)制。根據(jù)學(xué)生分組信息,在Gitee中創(chuàng)建團(tuán)隊(duì),組長(zhǎng)負(fù)責(zé)維護(hù)本團(tuán)隊(duì)成員的信息。為了方便成績(jī)?cè)u(píng)定,要求學(xué)生注冊(cè)的姓名中包含學(xué)號(hào)、姓名等信息。最后,團(tuán)隊(duì)負(fù)責(zé)人創(chuàng)建團(tuán)隊(duì)Git倉(cāng)庫(kù),作為本團(tuán)隊(duì)代碼的唯一協(xié)作倉(cāng)庫(kù)。創(chuàng)建團(tuán)隊(duì)項(xiàng)目,團(tuán)隊(duì)項(xiàng)目須關(guān)聯(lián)本團(tuán)隊(duì)成員、團(tuán)隊(duì)Git倉(cāng)庫(kù)。教師最后負(fù)責(zé)檢查團(tuán)隊(duì)創(chuàng)建情況。本階段要求完成團(tuán)隊(duì)的創(chuàng)建及團(tuán)隊(duì)倉(cāng)庫(kù)、團(tuán)隊(duì)項(xiàng)目的創(chuàng)建,組長(zhǎng)負(fù)責(zé)維護(hù)相關(guān)信息的正確性。團(tuán)隊(duì)創(chuàng)建流程如圖2所示。
2.3 任務(wù)分配
團(tuán)隊(duì)相關(guān)資源創(chuàng)建完畢后,由各小組根據(jù)實(shí)訓(xùn)要求,進(jìn)行任務(wù)的分配和完成。本實(shí)訓(xùn)課程的主要任務(wù)包括:項(xiàng)目背景分析、需求分析、系統(tǒng)總體設(shè)計(jì)、系統(tǒng)詳細(xì)設(shè)計(jì)、系統(tǒng)編碼、系統(tǒng)測(cè)試、項(xiàng)目文檔撰寫、系統(tǒng)答辯等,任務(wù)的分配由各小組的組長(zhǎng)、組員討論確定。傳統(tǒng)的分組實(shí)訓(xùn)一般采用手工記錄的方式分配任務(wù),存在任務(wù)分配不透明、任務(wù)進(jìn)度不直觀等問(wèn)題。采用Gitee平臺(tái)后,各小組使用團(tuán)隊(duì)項(xiàng)目空間,進(jìn)行任務(wù)的創(chuàng)建、分配、狀態(tài)變更、關(guān)閉等,通過(guò)狀態(tài)看板監(jiān)控項(xiàng)目所有的任務(wù)狀態(tài)。任務(wù)可以關(guān)聯(lián)里程碑,利用燃盡圖的展示方式,可以直觀地預(yù)測(cè)工作何時(shí)全部完成。通過(guò)團(tuán)隊(duì)項(xiàng)目空間進(jìn)行任務(wù)管理后,各組員不但清楚了自己目前的任務(wù),也知道其他組員在做哪些任務(wù)。這樣促進(jìn)了任務(wù)分配公開(kāi)化、透明化、可視化,讓過(guò)程管理有跡可循。本階段要求利用團(tuán)隊(duì)項(xiàng)目空間進(jìn)行任務(wù)分配,創(chuàng)建里程碑。任務(wù)的分配和完成情況作為成績(jī)?cè)u(píng)定的依據(jù)之一。
2.4 版本管理
軟件產(chǎn)品最重要的管理是代碼版本管理。小組所有代碼提交到團(tuán)隊(duì)倉(cāng)庫(kù)中,各個(gè)組員通過(guò)倉(cāng)庫(kù)進(jìn)行代碼協(xié)作。典型的協(xié)作流程如下:1)每個(gè)小組創(chuàng)建本組代碼倉(cāng)庫(kù),使用單分支模型簡(jiǎn)化操作,只創(chuàng)建master 分支。2)每位組員克隆代碼倉(cāng)庫(kù)到本地,要求每次開(kāi)發(fā)新特性前先更新代碼,確保本地代碼最新,減少代碼沖突的概率。3)根據(jù)分配給自己的任務(wù),先提交代碼到本地倉(cāng)庫(kù)。4)一個(gè)任務(wù)開(kāi)發(fā)完畢后,及時(shí)push代碼到遠(yuǎn)程倉(cāng)庫(kù)。5)如果遇到代碼沖突,務(wù)必解決沖突后再上傳代碼。學(xué)生將直觀感受到團(tuán)隊(duì)協(xié)作場(chǎng)景下,代碼是如何通過(guò)Git倉(cāng)庫(kù)協(xié)作的。學(xué)生將學(xué)會(huì)掌握版本管理技能,如更新代碼、代碼沖突、合并代碼、提交代碼等。本階段要求代碼使用本團(tuán)隊(duì)的Git倉(cāng)庫(kù)進(jìn)行協(xié)作,避免使用本地存儲(chǔ)、U盤拷貝的土方法。Git版本管理的典型流程如圖3所示。
2.5 成績(jī)?cè)u(píng)價(jià)
經(jīng)過(guò)系統(tǒng)演示和小組答辯后,評(píng)定學(xué)生的最終成績(jī)。學(xué)生的成績(jī)由團(tuán)隊(duì)成績(jī)和個(gè)人成績(jī)組成。團(tuán)隊(duì)協(xié)作情況、系統(tǒng)演示情況和答辯情況決定了團(tuán)隊(duì)成績(jī),任務(wù)完成情況、代碼提交情況和個(gè)人實(shí)訓(xùn)日志決定了個(gè)人成績(jī)。通過(guò)Gitee平臺(tái)可以查看組員的任務(wù)分配、完成情況,統(tǒng)計(jì)組員的代碼提交次數(shù)等,作為過(guò)程成績(jī)的依據(jù)。
3 實(shí)踐結(jié)果
以信息管理系統(tǒng)綜合實(shí)訓(xùn)為例,班級(jí)共有46人,分成8個(gè)小組,每組5到6人。線下分組完成后,在Gi?tee平臺(tái)上進(jìn)行團(tuán)隊(duì)資源的創(chuàng)建,包括團(tuán)隊(duì)成員加入、8個(gè)團(tuán)隊(duì)項(xiàng)目、8個(gè)團(tuán)隊(duì)倉(cāng)庫(kù)。學(xué)生在團(tuán)隊(duì)倉(cāng)庫(kù)的首頁(yè)寫上團(tuán)隊(duì)名稱、團(tuán)隊(duì)口號(hào)、團(tuán)隊(duì)成員分工等信息,提升團(tuán)隊(duì)歸屬感和榮譽(yù)感。實(shí)訓(xùn)課程結(jié)束后,首先基于Gitee統(tǒng)計(jì)8個(gè)小組的工作情況,作為團(tuán)隊(duì)成績(jī)?cè)u(píng)定依據(jù)之一,各小組工作統(tǒng)計(jì)如圖4所示。
通過(guò)分析,發(fā)現(xiàn)各組創(chuàng)建的任務(wù)數(shù)和成員數(shù)大致相同,說(shuō)明任務(wù)分配的力度比較大,基本上是每個(gè)同學(xué)負(fù)責(zé)一塊。也發(fā)現(xiàn)有個(gè)別小組未進(jìn)行任務(wù)分配,需要進(jìn)一步了解情況。從倉(cāng)庫(kù)提交的次數(shù)看,共進(jìn)行了342次提交,平均每個(gè)小組40次提交,說(shuō)明學(xué)生基本掌握了如何使用Git進(jìn)行代碼版本管理、代碼協(xié)作。再基于Gitee統(tǒng)計(jì)小組成員的貢獻(xiàn),作為個(gè)人成績(jī)?cè)u(píng)定依據(jù)之一。各小組內(nèi)部呈現(xiàn)出明顯的領(lǐng)頭羊特征,啟示教師要注重引導(dǎo)同學(xué)之間的互幫互助、共同進(jìn)步,尤其要重視優(yōu)秀學(xué)生的帶頭作用。以第3組為例,各組員工作統(tǒng)計(jì)如圖5所示。
4 結(jié)束語(yǔ)
隨著IT行業(yè)及教育的蓬勃發(fā)展,教育方法和內(nèi)容需要和產(chǎn)業(yè)流程緊密聯(lián)系。文章針對(duì)傳統(tǒng)軟件實(shí)訓(xùn)課程分組教學(xué)存在的問(wèn)題,提出了基于Gitee平臺(tái)的分組教學(xué)方法。實(shí)踐表明,該方法提高了學(xué)生的團(tuán)隊(duì)意識(shí)、協(xié)作意識(shí)、職業(yè)素養(yǎng),提升了分組教學(xué)的過(guò)程管理能力。后續(xù)將進(jìn)一步探索企業(yè)級(jí)軟件管理流程在教學(xué)中的應(yīng)用,如靜態(tài)檢查、自動(dòng)測(cè)試、自動(dòng)部署等,推進(jìn)Git成為軟件開(kāi)發(fā)類課程的標(biāo)準(zhǔn)版本管理工具。