文/中山职业技术学院 何 成
1.背景分析
现有普通高等教育存在着重数量轻质量、重知识传授轻创新能力培养、重文凭轻素质、重学历轻高层次内容研究的现象,致使现有从事信息工作的人员素质偏低、知识老化、创新意识不强。因此,现在的高职院校亟须一套能够快速适应市场需求变化的人才培养机制。其他国内重点高职院校的软件专业也对此进行了一些探索,取得了一些成绩。比如无锡科技职业学院的“政产学”三位一体软件人才培养模式,深圳职业技术学院的融入印度NIIT 软件人才培养模式,广东轻工职业技术学院提出并实践“三阶段技能递进式”软件技术专业人才培养模式。
中山职业技术学院软件技术专业提出的将综合软件产品融入整个课程体系作为贯穿的支柱,这是对现有高职软件专业人才培养方案的一种创新,目前在国内尚未有相关研究和探索。中山职业技术学院软件技术专业在坚持“工学结合、项目过程化”的人才培养模式的基础上,经过多年的探索,结合高职学生素质特点及软件技术人才的职业特点,为满足用人单位对高职学生IT人才岗位能力的要求,创造性地推出了“以产品开发为主线”的人才培养模式。即以典型性产品为主线,各专业方向的核心课程围绕产品开发流程而展开课堂教学,实践教学采用模拟实现相类似的产品,加深学生的理解及动手能力,学生通过完整的产品及市场需求来树立对专业的整体认识,通过产品树立对软件产品的开发过程及知识体系的全局思维。
中山职业技术学院软件技术专业于2007年开始招生,2012年成功申报为广东省重点培育专业,2014年成功确立为广东省重点专业建设单位。软件技术专业作为中山职业技术学院信息技术专业群的重点专业之一,从2010 年开始进行“以产品开发为主线”人才培养模式探索与实践,目前已与中山市同携智能手机软件有限公司合作开展游戏开发人才培养,毕业生深受软件开发行业用人单位的欢迎。中山职业技术学院软件技术专业“以产品开发为主线”人才培养模式改革,对高职院校专业建设具有一定的参考和借鉴作用。
2.构建思路
(1) 分解产品,构建课程体系
“以产品开发为主线”的人才培养模式是指各专业方向教学团队与有关软件企业密切协作,共同选取典型软件产品,对开发该产品所必需的知识与技能进行分解,围绕产品开发流程设置核心课程、构建知识体系,通过理论与实践一体化教学实现或模拟实现该产品,全景展现软件产品开发过程,突出实践能力培养,有效提高学生的整体素质和技能水平,确保人才培养质量。“以产品开发为主线”的人才培养模式以主流软件技术应用为中心,以产品开发工作过程为导向,把产品分解为项目(子系统或部件),围绕项目设计重构知识体系,通过项目实施强化技能训练,能够较好地达到高职教育培养目标,已在实践中收到良好效果。软件技术专业的课程体系架构于三到四个典型软件产品,专业课程体系围绕这些软件产品的实现进行构建,软件技术专业各个专业方向与本地企业开展深度合作,企业参与人才培养方案的制定,参与“典型软件产品”的确定和开发。课程体系中的软件产品原型来自企业或本校信息技术应用需求的真实项目。专业教师和企业技术骨干共同分析开发这些软件产品的工作过程,将整个开发过程分解成若干个紧密联系的工作任务,分别融入5个学期的专业课程中,借此构建以产品开发为主线的课程体系。
(2)分步实施
分步实施的主要思路就是在软件产品的讲授过程中把“教”和“学”分成三个主要的阶段:第一个阶段是教师讲解软件开发过程,在这个阶段主要讲解课程并给学生演示一个游戏产品的完整的开发过程,主要的代码由教师完成,学生根据教师布置的作业来完成游戏项目中约20%的工作量,通过这个阶段学生将学会如何进行一个软件产品的开发。第二个阶段为教师辅导学生进行第二个游戏产品的开发,这个软件产品由教师事先进行开发完成,完成后将这个游戏产品分解为10个左右的子项目,这10个子项目作为作业由学生逐步完成,在这个游戏的开发过程中,学生完成主要的代码编写工作,而教师则只是在学生特别有困难的地方将代码提供给学生,通过这种方式引导学生完成软件产品的开发工作。第三个阶段则是完全由学生自己主导完成一个游戏产品的开发,教师仅仅是给学生提供一些简单的支持,其中90%以上的代码都是通过项目小组的形式由学生自己完成(表1)。
表1 以软件产品开发为主线的人才培养模式的三个主要阶段
1.统一思想认识
在传统的软件技术专业人才培养过程中,一般都是讲述软件开发的基本方法和理论,软件专业的学生在毕业后仍然需要进行很长时间的适应,才能将自己所学的理论知识应用于具体的软件产品开发过程。针对高职学生在校时间短、学生的理论基础薄弱的情况,我校软件技术专业大胆尝试,直接在教学过程中引导学生进行软件开发,整个教学过程以软件产品开发为主线,直接讲授在开发过程所需要用到的知识点和技术,讲授具体知识点在产品开发过程中的应用,讲述开发工具和算法,主要培养学生开发软件产品的各种能力。这样就避免了学生学习到知识仍然不知道产品开发从何下手的情况。
2.选择典型产品
软件技术专业各个专业方向与本地企业开展深度合作,企业参与人才培养方案的制定,参与“典型软件产品”的确定和开发。软件产品原型来自企业或本校信息技术应用需求的真实项目。专业教师和企业技术骨干共同分析开发这些软件产品的工作过程,将整个开发过程分解成如图1所示的若干个子项目。目前,软件技术专业游戏开发方向已经完成的典型游戏软件产品库如表2所示。
表2 软件技术专业游戏开发方向“典型软件产品”库
图1 游戏开发方向课程体系构建过程
以上游戏产品包含了目前市场上主流的游戏类型,包括平台游戏、益智游戏、塔防游戏和基础动作游戏等类型,这些游戏的开发过程用到了Unity这个主流的游戏引擎中的界面设计、粒子系统设计、二维动画设计、三维动画设计、UI设计以及主要游戏算法等绝大多数游戏元素的开发和设计技术。
3.构建课程体系
根据调研结果,软件技术专业游戏开发在四门主要的专业课程中确定了四个典型软件产品作为课程体系的载体。将每个软件产品分解为若干个子项目,将子项目与专业课程对应融合,根据软件典型开发过程设置课程顺序,同时兼顾基础课程和课程难度,然后将子项目对应的专业课程分布到学生在校学习的五个学期,最终完成课程体系的构建,形成基于软件开发过程和以软件产品为主线的课程体系。构建过程参考图1。
例如,软件技术专业游戏开发方向以俄罗斯方块游戏、悟空传奇、植物大战僵尸和超级玛丽游戏这四款产品作为课程体系的主线,将每一款游戏产品分解为多个子项目,最后将这几个子项目对应到游戏专业方向的多门专业课程中,具体的构建过程参见图2。
图2 “游戏开发专业方向”课程体系实现过程
4.分步实施
(1)多个课程联合实现一个软件产品
由于在基础课程中,学生没有学习到本专业的深层次的专业知识,往往不知道自己学习的东西将应用在什么地方,如何应用。但是在我们的人才培养方案,学生一开始就清楚了解在校期间将要开发设计的四个教学中将要学习的游戏产品和四个作为课程作业将要开发的游戏产品。在课程教学内容的安排上,在基础的JAVA编程课程中,教师讲解的便是在后面的游戏产品开发过程中需要用到的游戏类型。在第一学期的游戏美术基础中,学生学到的都是在以后的游戏开发过程中需要用到的游戏卡通、游戏界面设计等,而且在这些课程中完成的美术资源的开发和设计都会直接用于后期的游戏开发过程。另外,在游戏算法设计这个课程中,则集中和详细地讲解在四个游戏中需要用到的碰撞检测、寻路算法、跟踪算法、回避算法等主要算法。通过这种方式,真正实现多门课程协同配合,在不同课程中讲授和设计一个游戏产品的不同模块或者不同的内容,从而共同完成一个游戏产品的开发过程。
在“以产品开发为主线”的人才培养模式的实施过程中,课程之间的相关衔接是整个实施过程中的重要环节。整个课程体系的教学内容都是围绕几个典型软件产品的实现来开展,基于软件开发过程进行课程设置。以软件技术专业的游戏开发方向为例,游戏方向确定的典型产品有超级玛丽游戏、植物大战僵尸、俄罗斯方块游戏和悟空传奇四款游戏产品,对应的专业课程有面向对象程序设计、游戏美术基础、游戏引擎入门、游戏算法设计、游戏引擎进阶等。面向对象程序设计完成以上四款游戏产品中基本类的设计,游戏美术基础完成以上四款游戏产品的界面、游戏角色等游戏资源的设计和制作,游戏算法设计通过学习碰撞检测、寻路算法、跟踪算法、回避算法等主要算法完成以上四款游戏产品的功能。
(2)加强基础能力训练
软件技术专业充分利用省级实训基地建设成果,针对专业基础能力、专业核心能力、综合就业能力采用层层递进的培养方式。在专业基础课程部分借助在线测试系统采用“量化培养方式”对学生进行专业基础能力训练;基于软件产品的开发对学生进行专业核心能力训练;通过顶岗实习的企业项目或创新创业项目进行就业综合能力培养。学生经过三个阶段的能力训练,一步一个台阶,逐渐提高职业能力,顺利走上工作岗位,成为高端技能型软件人才。
以学生为中心的“量化培养方式”训练专业基础能力。软件技术专业通过调研得出学生的软件开发能力与学生编写过的代码数量成正比关系,一般情况下,学生在校期间代码写得越多,软件技术应用能力就越强。为了夯实学生的专业基础能力,采用以下三种方式进行训练。
①利用“在线测试系统”对学生进行编程基础训练
软件技术专业自行研发的程序在线测试系统是一个基于B/S 结构的在线程序与算法设计练习、竞赛平台,主要功能可分为用户管理、题库管理、在线提交、在线比赛及在线排名、在线讨论等。该系统改变了以往单纯依靠教师讲授、学生练习的教学模式,为学生提供了大量练习和竞赛题目,学生可在线提交解决相关练习和竞赛题的程序代码,系统可以自动编译程序代码,生成可执行文件,并根据已存储的测试用例,从程序的正确性、程序运行总时间、耗费内存、单用例执行时间、程序返回结果等各方面评测程序代码,并精确返回各方面的评测结果。
软件技术专业学生从入学的第1门编程语言课开始,通过该系统来培养程序思维能力和语法算法基础,要求在第一学期完成200题,第二学期完成400题,没有完成的学生不能参加编程语言基础课和进阶课程的期末考试,通过在线测试系统两个学期的做题训练,学生可以完成约15000行的编码训练。编程语言课程作为专业的平台,可以实现专业教师集体备课,合理安排教学进度,改革评价标准和评价方式。自2012年开始,软件技术专业编程能力基础课程充分利用实训基地的实训条件和自主研发的“在线测试系统”开展编程能力训练,提供实训室给大一新生进行晚修,并从大二学生中挑选编程能力较强的学生分配到大一新生班,晚修期间负责指导新生在测试系统做题。编程能力课程的考核由三部分组成:平时正确完成的题数(50%)+编程能力测验(2次,20%)+期末编程能力考评(30%)。课程的三种考核都通过在线测试系统完成。
②专业课程中“四阶段”教学过程深化基础能力训练
在专业课程教学过程中,基于典型产品中分解出来的子项目,将教学过程分成“个人照着做”“个人模仿做”“小组协同做”“个人独立做”四个阶段,通过这四个阶段的教学,学生基本完成约3个项目,大约3-4万行代码的训练。
③“以赛促教”式基础编码能力训练
蓝桥杯全国软件人才大赛目前是全国规模最大的比赛,为了进一步激发学生学习兴趣和巩固编程基础,软件技术专业自2012年以来组成竞赛教师团队,每年都组织和选拔学生参加工信部组织的“蓝桥杯”软件和信息技术专业人才大赛,对于编程特别有兴趣的学生进行辅导,激发潜力,为提升学生专业核心能力奠定坚实基础。
(3)突出技术应用能力培养
第一,基于“软件产品开发”训练专业核心能力。
软件技术专业结合专业特点,充分利用实践育人体系,采用以实训室为主的常规教学方式和以工作室为主的辅助教学方式。常规教学方式中,学生通过完成课程体系中的典型游戏软件产品开发训练专业核心能力。辅助教学方式中,学生通过完成工作室的软件产品任务开发训练专业核心能力。
①课程体系中的典型软件产品培养专业核心能力
教学过程中采用“项目-任务”驱动模式,专业课程通过实现子项目的教学任务完成对学生能力目标、知识目标、职业目标的培养。课程体系中的专业课程位置按照企业对应的典型产品开发顺序进行设置,学生完成五个学期的专业课程学习,同时也完成了两个典型软件产品的设计和开发。学生的训练场所以实践育人体系中的实训室为主。
②基于工作室的学分替换制度培养专业核心能力
软件技术专业实践育人体系按照专业方向建成了四个专业工作室。学生根据自己的专业兴趣和特长可以选择加入实践教学体系中各专业方向的工作室,通过参与工作室中的软件产品开发训练专业核心能力。对于参与工作室项目的学生,如果能力已经达到人才培养方案中的要求,可实施“学分替换”制度,学生可以免修对应的专业课程。学分替换采用工作室指导教师负责制,学生在学期初进行申请,学期中间由指导教师进行任务安排和评价,期末需要经过专业和学院两级答辩,最后由学院答辩小组评定成绩。
第二,企业真实项目和创新创业项目训练就业综合能力。
①顶岗实习企业项目训练就业综合能力
软件技术专业根据课程设置在第六学期安排学生到校企合作企业进行为期6个月的顶岗实习,学生在顶岗实习期间参与企业的项目,在真实的社会环境中锻炼就业能力。
②创新创业项目训练就业综合能力
对于少部分特别有创新精神和有创业计划的学生,软件技术专业响应国家“大众创业、万众创新”的号召,充分利用校内创新创业的条件,积极鼓励和指导他们参与创新创业项目,学生团队撰写创新创业项目申报书进行申请,学校评审通过后给予一定经费支持和场地支持。这部分学生可以不参与企业顶岗实习,通过创新项目的开发和运维,培养专业技术应用能力、团队能力和创新能力等。
软件技术专业在近10年的建设中,基于“以产品开发为主线”人才培养模式,通过实践育人体系保障了人才培养质量。本专业近四年的就业率都是100%,从麦可思公司的调查报告来看,11届学生毕业六个月之后的收入排在全校第四,12届和14届都是全校第一,14届收入高于同类院校13%;从就业竞争力来看,14届的毕业生全校排名第二,高于同类院校的同类专业。
软件技术专业的毕业生因为专业能力强,工作表现特别出色,深受企业青睐,近年来不仅本专业的毕业生待遇明显高于本校其他专业,而且供不应求,出现企业提前到学校来“预定”学生的现象。
“以产品开发为主线”的人才培养模式以主流软件技术应用为中心,以产品开发工作过程为导向,把产品分解为项目,围绕项目设计重构知识体系,通过项目实施强化技能训练,能够较好地达到高职教育培养目标,已在实践中收到良好效果。