蔡云鷺 林其堃 曾志廉



摘要:研究基于SVN版本控制系統的Java Web實驗教學模式,從實驗課程目標和教學實踐的技術需求出發,提出了基于SVN+Tomcat+MySQL開發環境和NetBeans開發工具的系統設置與管理方案。介紹了獨立實驗和團隊綜合實驗的設置方法,總結了基于NetBeansIDE的實驗流程, 實現了對實驗項目的代碼進行版本控制和托管。新實驗模式下的代碼同步、項目管理和團隊協作使實驗模式接軌于企業生產模式,有效地提高了學生的實驗積極性和實驗效率。
關鍵詞:Java Web實驗教學;Subversion;代碼同步;版本控制
中圖分類號:TP391.7? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)14-0041-03
Abstract:To research Java Web course experimental teaching mode based on the technique of SVN version control. In order to achieve the goals ofexperimentalobjectives and the technical requirements of teaching, a System setup and management scheme based on SVN+Tomcat+MySQL and NetBeans IDE are proposed.The independent experiment and the team comprehensive experiment setup is introduced and the experimental process based on NetBeans IDE realizing the version control and hosting of the experimental code is summarized. The new experimental environment for code synchronization, project managementandteam collaborationrealize the connection between experimental teaching and corporate work mode, which effectively improves the teaching practice. Students' experimental enthusiasm and personal programming ability, teamwork awareness has also been significantly enhanced by the experimental method reform.
Key words: Java Web experiment teaching; Subversion; code synchronization;versioncontrol
1 前言
Java Web開發技術是Java EE的核心技術,是開發各種Web應用的首選技術之一。Java Web編程技術課程旨在培養學生掌握Java Web程序開發的基本理論和核心技術,課程的主要實驗有:Servlet模型、HTTP請求與響應對象、會話管理、JSP基本語法與頁面指令、Web組件重用與JavaBeans、JDBC訪問數據庫、Servlet事件處理、Servlet過濾器的使用和MVC設計模式等。在傳統的實驗教學模式下,教學側重于學生完成教學大綱規定的實驗任務,按要求完成相應的實驗報告,對學生能力培養的系統性以及工程應用能力的培養重視不足,越來越難以滿足企業對Web開發人員的專業素養和實踐技能的要求。目前,程序設計類實驗教學不足之處主要表現在以下方面:1)學生的實驗過程對教師是透明的,按照傳統的實驗流程,學生的編碼過程只依賴機房計算機或個人計算機,教師看到的只有最終呈現的實驗結果,整個編碼過程對于教師幾乎是透明的,無法監督過程,難以實施過程化考核;2)實驗代碼收集、整理和運行測試過程煩瑣,難以對代碼質量進行全面的測試和評估;3)項目代碼無法同步,一個實驗項目往往難以在實驗課堂的機房完成,學生希望實驗課上的項目進度能完好無損地同步到自己的個人計算機,以持續開發,這個過程中的代碼同步問題亟待高效的解決;4)缺乏高效的團隊協作平臺,在團隊合作項目中,團隊成員的開發進度難以掌握,代碼沖突等問題在所難免,導致實驗效果不佳,對團隊協作的輕視往往與企業的團隊開發理念背道而馳。
將SVN版本控制系統引入到JavaWeb實驗教學中,在SVN+Tomcat+MySQL開發環境下,基于NetBeans或Eclipse集成開發環境,通過構建基于SVN的實驗教學生態環境,可以有效解決以上問題。Subversion(SVN)是一個開源的集中式版本控制系統,按照修改的版本來管理文件和目錄。每個SVN服務器系統存放若干個中心版本庫,版本庫可以記錄每一次文件和目錄的修改,可以將文件和目錄回滾到以前的版本,并可以對比檢查所做的更改。SVN版本控制管理工具被廣泛應用于軟件開發過程。國內外教育工作者也將SVN版本控制系統引入到在教學應用或管理方面[4-6]。
2 系統架構
系統集成了Subversion(https://subversion.apache.org)和Apache,基于B/S可視化模式,通過搭建Apache服務器與SVN管理網站(https://github.com/mfreiholz/iF.SVNAdmin),所有的信息都可以通過瀏覽器訪問,也可以通過NetBeans和Eclipse等集成開發環境(IDE)訪問SVN版本庫,系統架構如圖1所示。
系統具有以下特點。
1)操作界面友好。教師可以通過web瀏覽器管理SVN服務器,創建、修改、查看代碼倉庫都變得十分簡便。學生無需安裝客戶端,通過瀏覽器即可查看自己的項目文件或者提交進度。
2)跨平臺和多地點工作。實驗項目文件可以通過瀏覽器進行訪問,允許學生可以通過不同的操作平臺快速查詢自己的SVN版本庫數據。服務器架設于校園網,校外可以通過VPN訪問,無論是在機房、宿舍還是校外師生都可以隨時隨地訪問代碼倉庫。
3)與IDE緊密集成。目前的主流IDE,如NetBeans和Eclipse等都集成了SVN的開發插件,學生易學易用,通過簡單設置即可訪問SVN版本庫。
3 SVN版本庫的設置與管理
在JavaWeb的實驗教學中實驗通常分為獨立實驗和綜合實驗,獨立實驗由個人獨立完成,綜合實驗由小組成員共同合作完成。為達到預定的實驗效果,對SVN的配置與管理方案成為關鍵。SVN具有完善的權限管理體系,其權限設置特點包括:可以為SVN中每個目錄設置相互獨立的讀寫權限;用戶對下層目錄的讀寫權限繼承自上層目錄,且對于下層目錄的權限不能大于上層;用戶對一個目錄的讀寫權限可以繼承自所屬用戶組,用戶對該目錄的權限可以高于用戶組權限。
3.1獨立實驗的設置
獨立實驗的設置與管理的基本要求是:學生之間不能相互查看實驗代碼;教師可以查看或修改學生代碼;教師查看和測試代碼時應該盡可能的便利和高效。
基于上述特點,可以通過權限設置以滿足教學需求。具體規則:只創建一個代碼倉庫,并設置教師組和學生組;所有用戶組具有代碼倉的根目錄的讀寫權限;根目錄下設置實驗模板目錄,用于存放實驗要求和實驗的模板,教師組對該目錄具有讀寫權限,學生組只有讀取權限;根目錄下每個學生都有自己的目錄,以學號命名,除了教師組和學生本人具有讀寫權限外,學生組的其他成員不具有任何權限。如圖2所示。
由于在SVN中每個倉庫都有獨立的URL,所以獨立實驗中只創建了一個代碼倉庫,教師只需要通過一個URL就可以訪問到所有學生的所有實驗項目,極大地方便了教師查閱;另一方面,由于學生不能訪問別人的項目,有效達到了獨立完成實驗的目的。
3.2綜合實驗的設置
綜合實驗的設置與管理要求是:不同項目組的代碼不能相互查看,但是組內成員可以查看其他成員的代碼以跟進項目開發進度或提出修改意見;教師可以任意查看不同項目組的代碼以跟進并指導實驗。
由于版本控制系統的設計本來就是為了團隊協作而產生,所以對于集體項目的設置相對于個人項目而言較為簡單。權限設置方案:根據項目分組情況,為每個項目分配一個代碼倉庫;除了教師組對所有代碼倉庫均具有讀寫權限外,每個項目組成員僅對所在組的代碼倉庫具有讀寫權限,而對其他項目組的代碼倉庫無讀寫權限;每個項目組成員可以查看組內其他成員的代碼,以便與其他組員進行團隊協作。
3.3 SVN的用戶配置與權限管理
SVN是以配置文件的方式對用戶及其權限進行配置,所有的用戶信息保存在passd文件中,文件的用戶信息記錄格式為:username:password。其中每條記錄對應著一個用戶名和口令,password為加密后的口令而非明文口令。用戶必須經授權才可以操作源碼倉庫,本例中為每個學生配置一個以學號命名的倉庫文件夾,每個學生用戶均需要單獨授權。SVN中的授權文件為authz,其中的授權信息記錄內容格式為:
[reponame:/floderpath]
username=authorization
其中reponame為倉庫名字,floderpath是該倉庫下授權給用戶的文件夾路徑;username為用戶名或用戶組名,組名前要加“@”前綴,;authorization為給予的權限,讀取權限為“r”,寫入權限為“w”。
Linux系統的shell作為操作系統的外殼,為用戶提供了使用操作系統的接口。shell是解釋執行的腳本語言,可直接調用linux命令,它是命令語言、命令解釋程序及程序設計語言的統稱。基于SVN的用戶配置與授權管理機制,結合本應用中用戶配置與權限管理場景,可以編寫shell腳本實現批量建立學生用戶。首先,可以使用Excel或其他文本編輯工具建立用戶列表文件錄入用戶名及口令,保存為文本文件格式備用;然后運行Shell腳本程序遍歷用戶文件,每次讀取一個用戶名和口令,重復以下三個步驟。
1)新增用戶
調用apache服務器內置的程序htpasswd生成用戶口令的md5密文,把用戶名及其口令的md5密文寫入到SVN配置文件passd中(例:/usr/bin/htpasswd -bd /home/svn/passd $USERNAME $PASSWORD),建立新用戶,并把新用戶添加到學生組(student)中。
2)調用SVNAPI,為每個新用戶新增一個倉庫文件夾
例:svn mkdir -m "INFO: create a new folder for $USERNAME" $URL/$USERNAME
其中$URL是通過apache訪問文件夾的URL。
3)新用戶授權
為SVN配置文件autuz新增記錄,為新用戶授權。每個用戶對自己的文件夾有讀寫權限,同用戶組的其他成員對該文件夾沒有讀寫權限,至此新增用戶結束,新用戶可以通過用戶名與口令訪問SVN,具有對已授權目錄的讀寫權限。
4 基于SVN版本庫的實驗教學
基于NetBeansIDE的實驗流程如圖3所示。
1)拷貝實驗模板,創建自己的實驗副本(Copy)
實驗模板目錄中提供了各個實驗的實驗要求、實驗指導以及實驗模板,學生在進行實驗前需要將對應實驗的目錄拷貝到以自己學號命名的目錄。
2)在實驗模板的基礎上進行實驗操作(Modify)
學生在自己的目錄下按照1)中拷貝的實驗要求和實驗指導,利用實驗模板進行實驗操作。
3)提交或保存實驗代碼(Commit)
學生提交或保存實驗代碼可以將代碼提交至服務器,教師可以通過服務器跟蹤實驗進度(如圖4)。如果實驗未完成或者需要繼續完善,則可以通過Copy操作將代碼下載到本地計算機。
5 總結
基于SVN技術構建的全新實驗環境重構了傳統的實驗方式。有利于學生適應企業開發模式和流程,提高了競爭力;教師能更多地參與到學生的實驗開發過程,為收集實驗代碼提供了便利;鍛煉了學生團隊協作能力。Web開發是當今IT行業發展最快速的領域之一,新技術、新模式不斷涌現,高校教學應緊跟發展趨勢,追蹤技術熱點,綜合利用各種技術進行教學內容與實驗模式的重構。
參考文獻:
[1] 王貴鑫,昝鄉鎮.基于團隊協作的項目驅動教學模式實踐[J].實驗技術與管理,2018,35(5):205-207.
[2] 鐘文鋒,付小龍,杜炤.基于SVN的校級統一信息系統版本管理系統的設計與實現[J].中國教育信息化,2011(23):55-57.
[3] 石樂義,李陽.網絡安全在線開放實驗實踐探索[J].實驗室研究與探索,2018,37(9):215-219.
[4] 楊健,陳春玲,宗平.版本控制工具軟件Subversion在課程設計中的應用[J].計算機教育,2008(4):117-121.
[5] Reid K L,Wilson G V.Learning by doing[J].ACM SIGCSE Bulletin,2005,37(1):272-276.
[6] 王海豐,李金霞,張鯤.基于SVN版本控制的程序設計類課程教學研究[J].軟件,2018,39(4):218-221.
[7] Mike Mason.陶文譯.版本控制之道:使用Subversion[M].北京:電子工業出版社,2007.
[8] 李存燕,洪玫.Github中開發人員的行為特征分析[J].計算機科學,2019,46(2):152-158.
[9] 郭穎奇,肖勇.新技術驅動下的高校實驗教學發展及研究綜述[J].實驗室研究與探索,2017,36(9):179-183.
[10] 李永飛,郭曉欣.Java Web應用開發課程目標的研究與設定[J].計算機教育,2018(5):127-129.
[11] 甘玲.基于項目開發的面向對象方法課程教學新模式[J].計算機教育,2014(4):43-46.
【通聯編輯:王力】