蔡云鹭 林其堃 曾志廉
摘要:研究基于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.
【通联编辑:王力】