陈立岩 杨丰 谭龙
摘 要:以培养软件工程师为目标,构建工程应用型人才培养体系,阐述了学生工程实践能力培养的实施方案,其中包括构建科学的课程体系、科学的教学团队、科学的组织教学、采用专业导师制、有效的评价体系等一系列教学改革,以期培养出现代企业需求的人才。
关键词:软件工程师;培养体系;应用型人才
中图分类号:G642.0 文献标识码:A 文章编号:1002-4107(2018)04-0011-02
近年来,我国互联网发展很快,尤其进入“互联网+”时代后,亟须大量高素质的从事软件开发与维护的专业人才。目前,相关从业人员400多万,每年还在以80万人的需求递增。虽然中国高等教育蓬勃发展培养了大量IT相关的专业毕业生,但这些毕业生大多实践经验不足,不适应企业的工作,从而产生高校培养技术滞后与企业先进的技术需求相矛盾,导致这种矛盾的原因:一方面是大多数高校仍按照传统的教学计划设计课程,所讲授的内容跟不上软件技术的发展,知识与软件开发实践脱节、实践环节组织薄弱等。另一方面,学生缺乏社会活动体验和软件实际开发经验,很难理解软件工程课程中的概念、原理。他们普遍感到该课程的学习枯燥无味,课程结束后通常感觉没学到东西。因此,如何设计先进的教学内容、合理组织实践教学,构建更合理的软件工程教学框架,是软件工程教学改革的重点[1-2]。
软件工程专业的特点是实践性突出、应用性强,以培养“系统分析與设计工程师、软件开发类工程师、系统测试和软件维护员”等人才为目标,课程群设置为“基础教育”“专业基础”“校内基地实训”和“校外实习”等[3]。抓好基础是关键,为加强学生动手能力,黑龙江大学软件学院在教改中增加了软件工程实践类课程,在课程中增加教师的配备,指导学生上机,学生学懂了做会了,就会有成就感,从而产生兴趣。
目前,很多高校软件工程教育者、学术界研究者及软件产业界的工程技术人员从不同角度对课程设计和教学实施进行了积极思考和探索,并取得了一定的进展,例如,在教育部高等学校计算机科学与技术教学指导委员会主导下,清华大学、浙江大学、南京大学等国内名校计算机部门的专家组成课题组,共同研究提出了软件工程课程教学实施方案的总体框架,分别从课程实验与综合实训两个方面设计实践教学方案,并推广学习南京大学的教学经验。近年来,笔者在教学中,根据学生的特点,开展了一系列教学探索。
一、教学中存在的问题
(一)软件工程教育师资力量不足
目前,很多国内高校中承担软件工程类课程的教师普遍为年轻教师,他们大多数经历了计算机专业从本科→硕士→博士的过程,这部分教师一直从事理论研究工作,缺少软件开发的经验,造成教师上课偏重于理论知识和方法的教授,缺少与产业界密切联系的实例,对于同样没有实践经历的学生来说,这就使得软件工程课程听起来晦涩难懂,空洞乏味。
师资力量不足的另一个表现就是大班授课。除了实验班、特长班以外,多数学校由于师资紧张,也由于学校经费有限,均实行大班授课,例如,由2~3个自然班组成一个教学班,配备一个主讲教师。教师没有更多精力带领学生开展有针对性的实践训练和指导,倾向于课堂理论教学,客观上削弱了学生软件工程学习体验和学习积极性,很难取得好的教学效果。
(二)软件工程实践教学环节有待提高
现有的软件工程实践教学素材多数是任课教师自己设计,或者从互联网下载,通常缺乏系统设计,或分析设计材料不够贴近学生,或者各种素材之间联系比较松散,使得教师和学生们在软件工程实践环节没有明确统一的指导框架,不利于学生实践环节的培养。
在软件工程教学安排中,软件工程课程有课程实验,但这仅是结合学习的内容写文档,没有真正地完成一个项目,学生实践机会不是很多,更没有综合性的实践活动,这样导致学生可能到大四毕业设计前都没有接触过完整的项目,使得学生毕业设计完成起来很有困难。
二、软件工程教育的几点对策
(一)构建科学的课程体系
在2014版的教学计划中,黑龙江大学软件学院对软件工程相关课程做了重大调整,将大二原来的两门课(软件工程概论和uml与面向对象分析和设计)变成一门课,之后又增加一门课程——软件工程综合设计,增加了实践环节以提高学生的项目开发能力,并且在大三开设的软件系统分析与设计课程之后又增加了软件工程综合实践。这两门课都是在实验室进行的上机课,不但要求学生对项目有分析设计的能力,而且也要完成编码,这样就弥补了大二、大三没有实践类课程的不足,学生能够主动运用计算机语言和学过的其他知识比如数据库、计算机网络等完成一个相对完整的小项目。学生不仅有成就感,而且对今后的毕业设计及工作带来很大帮助。
(二)构建科学的教学团队
整个软件工程学科建设已形成了基本成熟的教学梯队,包括软件工程概论、软件系统分析与设计,软件测试、软件工程管理,由于软件发展的需要,教师也需要不断学习,以黑龙江大学为例,我们在实践中摸索出一种团队教学模式。定期组织软件工程教学研讨会,按照所讲授的课程分成4个教学小组,团队集体备课,定期商讨每门课选定的知识点以及讲授顺序,这样,既能将软件工程理论全程覆盖,又避免了课程之间的重复讲授,并且在研讨会上我们互相学习,共同商量制定各种教学材料。尤其是教学样例和实验讲义部分,我们摸索出一种符合社会需求,适合学生接受程度的教学模式。
(三)科学地组织教学
欲修的课程较多强调编程,较少关注设计,导致一种惯性思维——跳过设计直接编程。比如,C++、java语言,授课时更多的是讲解如何编写一个类型、类间的继承、重写、多态等编写规则及各种不同异常、多线程等在程序上的运用,而较少用标准制图的方式描述类型的设计以及类型间的逻辑关联。所以在软件工程课堂教学中,增加贴近学生生活的案例,通过制图过程,学生对一个项目有完整的认识,增加他们开发的信心,通过练习题的形式,要求学生重绘指定的图纸,以加深记忆。另外,也通过一定的讨论,重新审视整个图纸的逻辑关系,加深记忆。
毕竟纸上谈兵,不会给学生一种成就感,所以在软件工程的上机实践环节,分组选题,完成所选题目的分析设计以及编码过程,这样就促使学生主动学习,参照已有的案例画需求设计阶段的相关图形,在学生认真分析和设计过程中再进行编码,这减少了编码的返工次数,提高成功率。在实践环节,为了更好地发挥指导作用,加大教师的投入显得特别重要,按照每组2人,每11~12个组分配一个教师,这样教师能了解每个学生的情况,而且也避免了因大班授课指导不过来的问题,事实也证明,在指导学生完成大实验上,教师起到很大的作用。
(四)采用专业导师制
为了加强对软件工程专业学生的专业学习和项目研发的指导,提高学生的工程实践能力,根据学生的数量,教师可将学生分为每20名学生为一组,选派一名导师负责学生在校全过程的指导,聘请有良好职业道德,工作责任心强,并作为主要负责人参与过至少一项省级以上的科研项目,最好有带学生参加软件开发类竞赛经历的教师担任专业导师。
专业导师针对新生,指导其掌握大学的学习规律和学习方法,端正学习态度,树立良好的学风,了解学生的学习情况并对专业学习和动手能力培养进行指导;针对高年级的学生,原则上要求学生进入导师的研发团队,参与导师的项目研发或各类竞赛项目。导师经常性地到创新实践基地指导学生,培养学生的工程实践能力、团队合作意识和敬业精神;加强就业指导,协助学生完成职业设计和职业规划,充分利用现有资源,向用人单位推荐毕业生[4]。
(五)有效的评价体系
对于软件工程这种技术性較强课程的考核主要分为学生评价与教师评价两个方面。学生分成若干项目组,在教师指导下进行项目的构思和设计,然后由各组独立进行项目的研发和实现,最后是教师评价。教师评价主要通过软件分析、设计报告,软件产品演示、程序思路的讲解等,该环节打分占80%,学生采用互评打分,项目结束时,各组由教师抽签决定选一个学生用PPT对项目的整个过程进行讲解,分享观点和心得,其他各组给分,占总分的20%,为避免部分学生在团队内部混学分的现象,教师要标记各组中表现较差的学生,并且在最后打分时是由教师给分,其他学生将两次分数的总和作为该组成绩,团队成员讨论,按照每个成员的贡献大小排出次序,这组最高分的学生成绩是这组的打分成绩,其他学生成绩依次降低,分差不低于3分,这样好学生就不会聚堆,好学生为体现他们的个人能力,就要带头选题成组,促进了学生们学习的积极性。以项目为基础对学生进行专业实践能力和实际开发能力的培养,让学生参与到实际软件项目的制作开发中,这样才能使学生毕业后进入企业很快成为合格的专业技术人才。
黑龙江大学软件学院经过两年的教学改革,专业培养目标和毕业定位渐趋于合理,工程型师资队伍的力量显著增强,校内外实践环节也有明显的改善,学生的学习兴趣和求知欲望普遍高涨,学生的动手能力增强。软件工程专业已成为学校理科就业率最高的专业之一,近几年毕业生的就业率在85%以上,毕业生的就业质量越来越高。
参考文献:
[1]杨爱民,邓芳,高飞. 软件工程专业人才培养模式的研究与探讨[J].计算机教育,2016,(3).
[2]朴勇,周勇,陈鑫等. 软件工程教学中关于抽象思维和形象思维能力培养的思考[J].计算机教育,2015,(17).
[3]陈智勇,文益民,邓珍荣等.以培养软件工程师为目标的计算机科学与技术本科人才培养体系[J].计算机教育,2015,(9).
[4]张德江. 应用型人才培养的定位问题及模式探析[J].中国高等教育,2011,(18).