朱家樂



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