基于Java实训平台的独立实践模式研究与实施
2018-06-01卢慧雅
卢慧雅,王 磊
(1.北京信息科技大学 信息管理学院,北京100192;2.北京信息科技大学 信息管理学院,北京100192)
0 引 言
随着信息时代的发展,Java语言在21世纪初陆续引入高校,并已经成为计算机大类相关专业的核心课程,对应的课程教学大纲要求学生不仅深刻理解面向对象的设计思想,还熟练掌握编程能力和方法技巧,特别是在当前新工科背景下,程序设计类的课程教学特别需要贯彻培养学生分析问题、解决问题和拓展创新的能力;然而,传统的实践环节往往被忽视,实验内容单一、缺乏吸引力,无法激发学生动手实践的兴趣。
1 背景分析
笔者基于信管专业Java授课实例进行分析:Java课程教学计划要求理论授课之后,安排16学时的独立实践,最终目标是要求学生熟练运用所学知识,独立完成一个工程项目,掌握编程、调试方法,培养创新思维,提高动手能力。在过去的实践教学中,往往是教师下发难度不等的几个项目,简要介绍需求和功能后,由学生自行认领项目。代码编写没有严格的开发规范,整个过程以教师的零散答疑为主,不集中授课,基本属于“放养”式。传统的独立实践教学过程如图1所示。
图1 传统的独立实践教学过程
这种实践模式导致学生在动手实践时,感到没有头绪、无从下手,很难培养真正的开发兴趣和动手能力,具体存在的问题包括:①项目难度等级存在差异,少部分学生基础薄弱,不敢也不想选择难度较高的项目,造成整体教学目标效果较差;②实现过程缺乏监管和互动,学生遇到的问题大部分是共性的,教师却很难组织有效的课堂教学;③任务实施缺乏记录和管理,学生提交的代码为最终合成版,关键的分析能力和解题思路无从体现,更不能保存、回溯和统计。这种形式化的实践模式已经不能满足专业技术人才培养的要求,迫切需要探索一种新思维和新方法。
2 模式研究
着眼于“精细化”培养方式,课题组与优秀企业合作,探讨并引入一种全新的实训平台实践机制——基于Java实训平台的独立实践模式[1]。首先,该平台可以低成本导入企业的真实项目案例,项目具备完整的真实软件开发流程,充分结合实训平台全在线、全维度的优势,使学生在真实的信息环境中学习变为可能;其次,该平台的项目可降低技术的理解难度,使学生在应用实践上不降低项目的业务复杂度;最后,该平台可对学生的每一步软件开发流程进行细致的监控及检查运行结果,真正提升教师的工程实践教学能力及项目实施监控能力。
该平台所部署的实训项目紧扣教学大纲,已在企业环境中成熟应用并经过适当剪裁,充分考虑了启发性、综合性和实用性。平台引导学生逐步完成系统分配的任务,要求提交的产品必须符合规则约定,最后打包交付完整的工程项目。每一个节点都真实、完整地记录学生的实训过程,教师可以清晰探查进展情况,切实提高教师的教学效率和调整学生的学习状态。
3 实施方案及步骤
Java实训平台选取“开发团队人员调度软件”作为独立实践项目。该软件基于文本界面,要求学生以现有的公司空闲成员,组建一个开发团队,组建过程包括将状态为FREE的成员添加到团队中并可领用设备或从团队中删除某成员,还可以列出团队中所有成员。团队成员类型包括架构师、设计师和程序员(不包括普通职员),团队中不同类型的成员有数量限制。实训平台已在项目中预设模拟整合数据,部分数据见表1。
该平台教学目标设定为学生熟悉Java面向对象的高级特性,进一步掌握编程技巧和调试方法。该项目涉及类的继承、接口和多态、对象的关联、static和final修饰符、特殊类和一维数组的使用、异常处理等知识点,是一个难度较高的综合性设计项目。项目包含3类模块,分类如图2所示,其中view视图模块为主控者,负责显示菜单界面和处理用户操作;service服务模块为管理者,使用数组管理公司员工和团队成员,功能操作失败时抛出自定义异常;domain实体模块包含所有员工及其子类。
3.1 项目设置启动
首先,完成项目初始化工作。教师登录实训平台,设置“开发团队人员调度软件”项目的起始和截止日期,可以弹性修改是否逾期提交。系统已经预置若干子任务,以实现的先后顺序作为划分依据,然后按照每组一人的方式分配组号和任务,启动项目。
表1 “开发团队人员调度软件”部分模拟数据
图2 “开发团队人员调度软件”模块分类
3.2 项目流程控制
学生登录实训平台,点击“开发团队人员调度软件”项目,进入流程控制页面,如图3所示。
在图3中,“需求分析”“任务及计划”子任务由平台提供文档,“第一步”深色子任务表示正在进行,“第二步”“第三步”浅色子任务表示尚未开始,醒目的箭头引导学生逐步完成项目。子任务既有时间限制,又有顺序要求,学生不能随意超前或滞后选择某个节点,需要严格规范软件开发流程。单击“第一步”子任务图标,系统显示预置的需求和设计说明,包含功能及界面描述、模块分类、类成员名称等。
具体细节描述如下:①教师先对任务涉及的知识点开展15 min左右的授课,必要时辅以流程图,启发思路,然后编写部分示范性代码,重点讲解开发规范,如属性定义、方法名称、算法优化设计等;②随后学生自行完成余下的代码,教师全程跟踪,遇到共性问题,马上组织集中答疑;③学生再对代码进行测试,教师可以在此阶段指导学生选取模拟数据,编写测试方法进行功能验证,运行无误后在平台里提交源文件。在这些步骤中,须严格检查文件的格式,包括类名称、属性名、方法名,如果不符合规范将显示错误信息,学生依据反馈继续修改,直至符合要求为止。教师可以下载学生不同任务节点的源文件进行审阅检查,为过程管理提供一手详实指标。
图3 “开发团队人员调度软件”流程控制
3.3 项目验收总结
项目上传完毕后,Java实训平台按照内置的评价准则自动评判,策略如下:首先,系统将学生提交的项目代码与模板代码进行匹配,根据匹配度给出第1部分分数,占比40%;其次,系统在后台对项目代码进行编译,如果编译通过则给出第2部分分数,占比35%;最后,系统在后台沙箱运行已经编译的项目代码,如果正确运行则给出第3部分分数,占比25%。页面显示总评意见和3项累加后的分数,教师也可以下载并运行代码,进行人工审核,修改意见和分数。学生还需要填写课程实践报告,详细描述分析过程、开发过程、项目部署、问题解决等。改进后的实践教学过程如图4所示。
图4 改进后的实践教学过程
此外,教师还可以进一步拓展教学思路[2],如引导学生思考如何使用集合组件代替数组,学习集合框架[3]的特性,理解数据的存储结构,然后继续引导学生思考如何使用GUI组件[4]设计图形化界面,以提升显示效果。
4 教学效果
经过一个完整的软件模拟开发周期的实践与验证,课题组发现学生在需求分析、软件设计、代码编写、整合测试、项目部署、归纳总结等各阶段的分析与实践能力得到了明显的提高,不仅完成了既定教学大纲和内容的设置与要求,还提升了开发兴趣与积极性。教学在如下方面取得比较好的效果:①理论教学中的知识点合理穿插在项目案例里,使得学生对晦涩的概念逐渐清晰化,深刻认识了“面向对象”的编程思想,更好地理解Java设计理念和模式[5];②逐步掌握了项目任务的拆分方法,能够使用“包”层的方式迭代构建项目,分析编码中出现的问题原因,学会使用单步调试加以解决,为以后参加“大创”项目或比赛积累经验;③独立实践结束后进行延伸思考,学生继续学习不同的完善方案[6],有助于克服程序设计过程中的“畏难”“抵触”情绪,为后续的信息系统分析与设计、Java企业级开发等课程奠定良好的基础。
5 结 语
区别于传统的实践教学模式,本文配合Java理论教学提出的Java实训平台不仅融合Java语言的技术特征,而且具有综合性、实用性和趣味性,解决了实践课程[7]中教学互动不利的尴尬,大大提升了教学质量与效果。该平台作为独立实践项目的载体,以任务驱动[8]为导向,按照流程节点记录学生的过程文件,保存在数据库中。实训项目趣味真实,课堂气氛积极踊跃,激发了学生内在的主动性和思考性,切实提升了编程和调试能力。经过有效实施与验证,教学目标更加具体、明确,教学过程更加敏捷、有效,对学生有重要指导意义;同时该方式切实提高了教师的项目管控能力,取得了比较好的教学效果。事实上,在项目实施过程中,诸如评价准则的细化、子任务的划分、代码的查重等方面还有待进一步检验和提升,以便更好地适应专业发展和人才培养的需要。
[1] 张璞.“案例驱动+项目导向”的Java程序设计课程教学模式研究[J]. 计算机教育, 2017(2): 58-61.
[2] 尉哲明, 冀素琴. 基于Java的综合课程设计研究与实践[J]. 计算机教育, 2015(3): 23-25.
[3] 孙宇霞, 郑千忠. Java开发课堂实录[M]. 北京: 清华大学出版社, 2016: 115-118.
[4] 田智. Java程序设计习题实训精编[M]. 西安: 西安电子科技大学出版社, 2017: 124-138.
[5] 耿祥义, 张跃平. Java设计模式[M]. 北京: 清华大学出版社, 2009: 78-88.
[6] 尉哲明. 基于Java的综合课程设计[M]. 北京: 清华大学出版社, 2014: 35-41.
[7] 赵晓雷. 项目教学法在Java程序设计实验教学中的应用研究[J]. 渭南师范学院学报, 2016, 31(6): 32-36.
[8] 佘燕达, 齐悦. 对“面向对象程序设计(Java)”课程教学模式改革的思考[J]. 通化师范学院学报, 2015(4): 46-47.