湖北 冯雅洁 李巍
基于软件项目开发过程的
高职Java实践课程设计初探
湖北 冯雅洁 李巍
我国软件外包人才的缺口越来越大,对软件开发人才的质量要求也越来越高。近年来,高职院校积极适应市场需求,加大了计算机软件课程改革力度,致力于培养高质量的软件外包人才。本文结合软件企业项目开发的全过程,提出了在Java课程设计中融入软件项目开发的步骤、模拟软件开发人员角色、优化教学方法、突出实践教学,旨在提高学生综合职业能力、培养团队合作精神,培养专业人才。
软件项目开发过程;项目驱动;高职;Java课程设计
近年来,软件外包服务产业急速扩张,造成了软件外包人才的严重匮乏。2009年教育部和商务部联合下发了《教育部、商务部关于加强服务外包人才培养促进高校毕业生就业工作的若干意见》,其中明确提出了“各类高校要在相关专业开展服务外包人才培养工作,在高职高专、本科、研究生等层次培养高质量的服务外包人才……”,因此,高职高专院校承担起了大批量培养高质量的软件外包人才任务,是国家重托,历史使命。
软件外包公司中最为通用的程序语言为Java,大部分软件项目开发都使用Java语言,而当前有许多高职院校运用项目驱动教学法设计Java实践课程,也取得了十分显著的效果。笔者结合这一课题,应用项目驱动教学法进行软件项目开发过程的实践课程设计,此方法是以软件外包企业Java人才质量要求为导向、以软件外包企业软件项目开发管理全过程为视角,设计高职院校Java实践课程,利于培养高职高专院校的计算机专业人才。
高职院校教师实施基于软件项目开发过程Java课程设计,在Java实践课教学的每一环节融入软件开发的项目管理思想,以企业软件开发流程的规范来要求学生,这一系列的详尽工作都能使学生提前体验软件项目开发的具体步骤,适应软件开发的项目管理流程,从而缩短毕业生进入软件企业的适应期,提高高职院校毕业生的综合职业能力。
在Java实践课教学中以项目组的方式将学生进行分组,让学生分别担任项目组中的各种角色。整个Java项目开发的过程中,若遇到了困难、发现技术难题,则以小组为单位分析问题并讨论合理的解决方案。组员之间通力合作、各司其职完成开发任务。Java项目完成之后的成果展示和现场点评又能进一步的培养学生的集体荣誉感,从而增强学生的团队合作精神。
软件项目开发过程教学法具备了项目驱动教学法的基本特征——以学生为主体、以教师为主导。软件项目开发的全过程不仅学生主动参与软件开发、发现问题、解决问题的探究式学习过程,也是教师全程参与指导的过程。因此,实施基于软件项目开发过程的高职Java课程设计有利于师生之间的教学相长。
基于软件项目开发过程的高职Java课程设计具有诸多优势,那么我们将其具体的实施过程分为三大部分:准备期、执行期和考评期。
首先,对于Java实训项目的选择,教师坚持难度适中、能激发学生的积极性和涵盖教学大纲有关重点知识为原则。选择难度适中的项目,符合教育学中的“最近发展区”原理,让学生在教师的指导和帮助下发挥自身潜能,获取知识;选择难度适中的项目,使学生积极参与项目开发活动中,配合项目组其他成员做好开发任务;选择的项目要涵盖尽量多的知识点,如:Java语言基础知识、面向对象特性、Java的例外处理和I/O流、JSP与Servlet等等,使学生全面掌握Java语言的相关知识。
其次,选择项目后,让学生自由组合,5~10人为一个项目组。自行推选技术优的组员担任项目经理、Leader等角色,其他学生可以担任程序员、测试员等角色。并根据自己所扮演的角色来进行任务分配工作。
再次,准备期需要做需求分析和需求确认。以项目组为单位与老师(客户、需求方)一起讨论、分析所要开发的软件项目,讨论其项目可以分成几个重要的模块、分别需要完成哪些主要的功能、开发过程中有哪些注意事项等。双方达成一致后,由学生撰写正规的需求文档提供给教师做确认。
最后,根据双方确认后的文档编写项目计划表(Schedule),注明什么时间点、由哪些具体人员完成哪项任务。之后的整个开发执行期都要严格按照计划表实施开发任务,以便项目按时完成。
3.2.1 编码规范与软件测试并重
软件开发进度做好计划排期后,就进入执行期,开始真正的代码编写工作了,也就是俗称的Coding。在大多数计算机专业的学生看来,Coding就是简单的“敲代码”。然而,我们这里需要强调的却是比“敲代码”更简单、但更重要的事情——编码规范。以一个生命周期为5年的软件来说,可能在最初的1~2年都不需要维护,但是到了第3年,用户提出了新需求,希望升级软件版本,同时还希望提高软件运行速度。但是这个时候该软件最初的开发人员可能在负责其它的开发项目,又或者已经不在该软件公司就职了。所以为了改善软件的可读性,让程序员快速而准确地理解生疏的代码,代码编写规范就显得尤为重要。如Class变量的命名规则:Class变量的命名用一个小写字母开头,后面的单词用大写字母开头,如:index,currentImage;Static Final常量的命名所有字母都大写,并且能表示完整含义。如:PI,PASSWORD 等。
除了Coding之外,与其并重的就是软件测试工作了,即Testing。严格来说,软件测试从流程上分,应该经历:单元测试、集成测试、确认测试、系统测试和验收测试。这里从高职院校Java实践课程的角度来看,我们则需要多关注单元测试和集成测试。单元测试又称模块测试,主要由开发该模块的程序员自行测试。例如一个登录的页面,必须要提交正确的用户名和密码才可以登录系统,测试点包括:用户名是否存在、密码与用户名是否匹配等。集成测试就是在单元测试的基础上,将各个模块单元集成到一起进行测试。可以由项目组的任意人员进行,也可以同时进行。主要测试各个模块的功能组合起来是否能达到用户的需求效果、模块A是否会对模块B造成功能影响、各模块之间的数据读写是否有问题等。严格的软件测试是软件质量的重要保障,因此Coding和Testing是整个软件项目开发过程中举足轻重的两部分,也是整个占用时间和精力最多的部分。
关于Coding学生们大多耳熟能详,测试的时候出现错误,学生们也能及时发现。可对于如何调试自己编写的代码并找到导致出错的语句,大多数学生还是会感到颇有难度。软件测试与修改中最为通用的Debug技术,是旨在通过查看动态的变量变化而找到出错的Coding语句。在传统的Java教学,多以教师课前所做的PPT为演示讲稿,而Debug技术的动态性决定了其讲授方式若由简单的PPT呈现,会显得单调而枯燥。因此,教师可以在多媒体教室启动Eclipse服务器,并在Servlet程序中设置断点,再启动Debug模式并执行到断点所在语句,一步一步演示Eclipse平台上的debug技术全过程,让程序真正的运行起来。达到的效果不仅可以吸引学生的注意力,更是“授之以渔”。相信绝大多数学生都会受益匪浅。
3.2.3 项目进度控制与文档撰写
项目小组的负责人在软件开发执行期需要了解各个组员的项目开发任务是否如期完成,以便跟进项目开发的进度。可以要求小组成员以周为单位、以邮件等形式汇报项目完成情况。其内容包括:本周预计完成哪些工作、是否如期完成、下周预计完成哪些工作等。项目经理可以汇总这些信息,并知会教师。对于开发工作连续延期的小组成员,可以先由项目经理或Leader了解一下延期的原因。若是遇到了技术难题,可以小组内部讨论解决方案,或者向实践课教师寻求帮助。
另外,关于各种文档的撰写。如:软件测试文档等。这些文档是软件开发过程中阶段性的工作总结,也是整个软件项目的文控管理中不可或缺的组成部分,也需要项目组成员给予足够的重视。
项目开发完成之后的成果展示和教师现场点评工作,与项目驱动教学法基本相仿,因此不再赘述。这里引入的是一个新的考评方式——用户满意度调查,可占最终考评成绩的50%。在学生做完成果展示之后,所有学生都可以亲自动手操作该软件,然后针对软件的功能、易用性以及适用性三大方面做出评价并给出评分。具体可涉及软件产品的界面美观性、操作方便性、编码规范性、软件响应速度、开发文档是否规范和齐全等。每一项满意度调查的满分为10分,取其平均分为考评结果。这样让学生在自己的软件完成之后,还可以学习其他同学的开发成果,并互相交流经验,同时还可以参与实践课考评,充分调动学生自主性。
基于软件项目开发过程的高职Java实践课程设计方法突破了传统的软件课程设计方法,在任务驱动教学法的基础上,融入了企业项目管理元素,以软件外包项目开发的流程为指导、以软件外包企业严格的质量保障体系为依据对高职院校软件专业的学生进行培养。既锻炼了学生的职业能力和团队合作精神,又体现了“以学生为主体”和“在做中学”的教育思想,也是与时俱进的培养高质量软件外包人才的具体实施方法,符合软件外包企业的人才质量需求和高职教育的人才培养要求。
[1]中国国际投资促进会.中国服务外包企业研究报告[R].北京:China Sourcing(中文版),2009.
[2]曹纪清.软件外包人才高职教育学期项目的实践与探索[J].湖北职业技术学院院报,2010,13(2).
[3]韩冬.基于工作过程的高职软件开发与项目管理专业课程设计——以《Java语言程序设计》为例[J].科技信息,2010(32).
[4]钱宇虹.基于工作过程的高职软件项目开发综合实训开发探究[J].计算机教育,2008(20).
[5]黄能耿.基于工作过程的软件实训项目设计[J].无锡职业技术学院学报,2010(02).
(作者单位:黄冈科技职业学院)
(编辑 李艳华)