1. 引言
为适应国家战略、经济结构及产业发展的需要,教育部在2017年启动了新工科建设 [1]。新工科建设的目标是培养工程实践能力强、能适应经济新常态、具有国际竞争力的创新型人才,新工科要求高校更加注重学生实践能力和综合素质的培养 [2]。软件工程专业作为一个典型的工科专业,为培养软件产业的专门人才而设立,该专业不仅具有一般工科专业的特点,还具有知识更新快的特点。软件企业为了适应软件产业快速发展的新业态形势,迫切希望招聘到能快速适应软件企业研发要求的毕业生,这就需要毕业生具有良好的工程实践能力和综合素质 [3]。当前高校的教育依旧存在理论强而实践弱的问题,导致毕业生的实践能力难以达到企业的岗位要求 [4]。面对新形势、新要求,如何主动适应社会需求,实现人才培养与社会需求的无缝对接是软件工程专业人才培养亟待解决的问题 [5]。作者将结合自己IT企业的工作经历以及多年的高校教学实践,分析传统软件工程专业实践教学中的不足,并以新工科理念为指引提出一种切实有效的实践教学模式。
2. 传统软件工程专业实践教学中的问题
2.1. 实践教学的设计缺乏系统性
传统软件工程专业的实践教学缺乏系统性设计,实践教学主要围绕理论课程开展,如果理论课程的设置不利于实践教学的开展,将导致相关实践教课程的内容难以衔接、冲突或低效等问题,从而造成教学资源及学生精力的白白浪费。新工科需要软件工程专业的学生具有开发大软件、大系统以及驾驭大应用的工程实践能力 [2]。这种不成体系、松散的实践教学不利于新工科人才培养。
2.2. 实践教学与理论教学不匹配
在软件工程专业的课程授课过程中,存在理论脱离实践的问题。有些理论课须要实践的支撑才能让学生理解相关知识。比如《软件工程》课程中涉及许多软件开发的概念,其中许多概念只有结合具体的软件项目讲解才能让学生理解透彻,而当前在《软件工程》课程的教学过程中存在从头到尾讲理论的现象,教学过程抽象乏味,教学效果不甚理想,其它专业课程的教学也存在类似问题。
2.3. 实践教学的组织形式相对落后
传统实践教学的组织形式与软件企业的真实项目研发过程存在较大差异。传统实践教学主要以教师为主导,教师布置实践教学任务,学生各自去实现任务,学生的疑问主要由教师解答。整个实践教学过程与理论课教学过程类似,实践教学没有参照企业的软件研发流程。学生无法体会软件企业的研发过程,学生的团队协作的能力也得不到锻炼,这对于学生今后快速融入软件企业的工作是不利的。
2.4. 指导教师的软件研发能力不足
软件产业具有技术更新频繁的特点,要让学生的技术水平满足社会要求,教师的水平就必须与时俱进,而教师的软件研发能力往往滞后于社会发展,从而导致学生所学的知识相对过时。另外,近年来入职高校的教师多为善于理论研究的学术型博士,学术型博士往往缺乏项目实践经验,这对于实践教学的开展也是不利的。因此,保证指导教师的实践教学水平与时俱进是一个需要认真对待的问题。
3. 新工科理念下的实践教学改革
传统软件工程教育模式难以满足新工科人才培养需求。如何培养出专业动手能力强、综合素质高并具有良好创新能力的软件工程专业人才是当前高校亟需解决的课题。为了推动软件工程专业的新工科建设,许多高校进行了相关人才培养模式的探索与实践。福州大学傅明建等人提出了基于项目驱动的软件工程实践教学模式,西安理工大学张爱玲等人提出了建立面向企业需求的软件工程人才培养理念,中国石油大学吴春雷等人提出了构建多层次、系统化的软件工程实践教学新体系 [2]。面向新工科建设理念并结合我校软件工程专业实践教学的实际,本文将阐述一种递进式的软件工程专业实践教学模式。
3.1. 递进式实践教学课程体系设计
依据新工科理念,软件工程专业实践教学的人才培养目标是使学生在软件方面具备扎实的工程实践能力并具有良好的综合素质 [2]。人才培养目标的实现很大程度上依赖于教学体系,科学的制定实践教学体系十分重要 [6]。实践教学体系包括为实现人才培养目标而设置的所有实践教学课程,并确定各门课程开设的先后顺序,以及每门课程的课时与要求等。当然,实践教学体系的设计也不能脱离理论课程教学体系而单独设计的,实践教学体系与理论课程教学体系必须相向而行、相辅相成,二者的课程设置应整体规划、同步设计,从而使理论课程与实践课程相互支撑、充分融合,共同促进人才培养目标的实现。
目前我校软件工程专业设有多个专业方向,其中包括:软件开发方向、虚拟现实方向、大数据方向以及物联网方向等。每个专业方向都制定了实践教学人才培养目标。以软件工程(软件开发方向)专业为例,实践教学的人才培养目标是使学生具备综合性复杂软件项目的研发能力与良好的综合素质。为了便于人才培养目标的逐步实现,又将整体目标分为若干个阶段分步实施,每个阶段完成预定的实践教学任务,并保证各阶段能很好地过渡与衔接,以便学生的实践能力得到递进式的持续提升。图1为新工科理念下的软件工程专业递进式实践教学课程体系。
如图1所示,学生实践能力的培养分为基础程序能力、高级程序能力、综合项目能力以及复杂项目能力四个阶段。实践能力培养的四个阶段按照从低年级到高年级的顺序递进式设置,其中:① 基础程序能力阶段主要让学生掌握程序设计的基本方法与典型算法、掌握计算机硬件构成等方面的知识。② 高级程序能力阶段主要让学生掌握主流软件开发语言、数据库技术、计算机网络原理,操作系统等知识,并具备将上述技术结合在一起进行软件研发的能力。③ 综合项目能力阶段主要让学生掌握综合软件项目的研发能力,在软件设计过程中将互联网及WEB等技术融入软件研发过程中,使学生的软件研发能力得到更进一步的提升。④ 复杂项目能力阶段主要培养学生灵活运用多种软件技术进行复杂项目研发的能力,学生可在教师工作室或校企协作平台参与真实软件项目的研发,使学生的软件研发能力得到全面提升,为学生顺利就业打下坚实基础。另外,在综合素质的培养方面主要包括了软件规范、自主学习、团队协作、创新能力以及国际视野等。在实践教学的每个一个阶段,都将综合素质的培养融入其中,并在实践教学的组织实施过程中进行考核。实践证明,依据递进式的实践教学体系进行实践教学收到了良好的教学效果,能很好地保证学生实践动手能力和综合素质的逐步提升。

Figure 1. The course system of progressive practical teaching in software engineering
图1. 软件工程专业递进式实践教学课程体系
3.2. 递进式实践教学选题设计
实践教学的开展依托于具体的实践教学选题,科学地设计实践教学选题对于实践教学的高效开展具有重要作用。实践教学的选题设计应从整体性和阶段性两个方面去考虑,整体性方面要保证实践教学的总体目标能最终实现,阶段性方面要考虑各阶段任务的合理分配,相邻阶段的实践教学能很好的衔接与递进。比如,Java语言是目前软件企业广泛采用的主流开发语言,以培养学生在Java方面的软件研发能力为例,实践教学的总体目标是让学生具备利用Java高级技术进行综合性软件研发的能力,而阶段性目标则可以分为四个步骤具体实施,如图2所示。
如图2所示,依据Java方向的软件研发能力的培养规律,我校软件工程专业开设了C/C++,Java, Java Web以及Java高级技术四门核心课程,这四门课程按其先后顺序具有良好的相关性与递进性。这四门课程都开设了相应的实践教学课程,每门课程的实训任务都对应一个实践教学选题,如图2,四个选题分别为:选题A、选题B、选题C以及选题D。其中,完成选题D的任务要以选题C中技术为基础,并结合本阶段所学技术共同完成;完成选题C的任务要以选题B中技术为基础,并结合本阶段所学技术共同完成;以此类推直至选题A的任务完成。反过来看四个选题,从选题A到选题D,选题难度及技术不断加深、循序渐进,体现出对学生在Java方向的软件研发实践能力的递进式、持续性培养。另外,依据实践教学的经验,各阶段选题的业务背景类似为宜,这样学生可以节省用于理解不同业务背景所花的时间,可以把更多的精力专注在技术训练上,从而有利于学生技术水平的快速提升。实践证明,这种递进式的实践教学选题设计对于学生实践能力的快速养成具有很好的帮助。

Figure 2. Design of progressive practical teaching topic
图2. 递进式实践教学选题设计
3.3. 实践教学的组织实施
软件工程专业的毕业生主要面向软件企业从事软件研发工作,因此参照软件企业的研发模式开展实践教学十分必要,这将有利于学生提前熟悉软件企业的工作模式,为以后快速融入企业的研发打下良好基础。实践教学的组织实施一般要从团队组建、任务分配、项目研发、工作考勤及评价机制等几个方面着手。实践教学的场地可以根据教学不同需求进行选择,我校提供了课程公共实验室、教师工作室以及校企协作平台等实验环境供选择。
针对每一次的实践教学,首先由指导教师依据实践教学计划发布相应的实训任务,接着学生自行组合形成若干个研发小组,通常每个小组4~6个人,并选出一人担任组长,组长类似于企业中的项目负责人。接下来各小组将实训任务分配给每个小组成员。对于低年级简单的实训任务,一般要求每组的每个学生提交一份独立的实训成果,而对于高年级综合性的项目,因项目需要小组成员协同完成,则要求以小组为单位提交实训成果。在软件研发过程中,如果组员遇到疑难问题,首先在小组内部讨论并试图解决,如果小组内部解决不了才向教师寻求帮助,这样既锻炼了学生团队协作的能力,又能降低教师的教学负担。
科学的评价机制是调动学生实训积极性的重要因素,因此实践教学应认真设计评价机制。评价机制可参照软件企业真实评价机制并结合学校的实际情况进行设计。在实践教学的评价中,要将学生的个人成绩与团队成绩关联起来,即每个学生的最终成绩由其个人在实训期间的成绩与其所在研发小组的团队成绩共同构成,这样既锻炼了每个学生的独立工作能力,也培养了学生的团队协作能力。另外针对学生在自主学习、团队协作、创新能力以及国际视野等综合素质方面的表现也要进行合理评价。实践证明这种参照企业的实践教学组织形式,对于学生今后快速融入软件企业的研发工作起到了很好的作用。
3.4. 实践教学的师资培养
实践教学指导教师的能力与水平直接影响实践教学的效果。针对软件行业知识快速更新的特点,教师必须与时俱进,及时掌握软件行业的新技术与新趋势。我校软件学院在师资培养方面采用了“走出去与请进来”相结合的方法,首先把全院相关教师分批轮流派到软件企业进行学习并参与软件企业真实的项目研发工作,且每批去企业的学习时间不少于半年,教师在企业接受类似于企业员工的考核,从而保证学习的效果。其次我院定期把软件企业的优秀工程师请到学院指导学生的实践教学或者进行技术培训,我校软件工程学院与上海、厦门、北京以及南昌的多家软件企业进行了校企合作,并取得了良好的成果。通过上述做法,我院教师的实践能力与水平得到了很好的保证,这为实践教学的顺利开展打下了坚实的基础。
4. 总结
本文以新工科理念为指引,以培养能适应软件行业要求的优秀人才为目标,具体从软件工程专业学生的实践动手能力和综合素质着手,对软件工程专业的实践教学进行了有益探究。本文阐述了一种递进式的实践教学模式,具体包括实践教学体系、选题设计、组织实施及师资培养等几个方面。整个实践教学要聚焦核心培养目标,合理分解实践教学步骤,对学生的能力和素质进行递进式培养。通过采用该实践教学方法,我校软件工程专业学生的人才培养质量稳步提升,学生的就业率、就业质量、竞赛获奖率及获奖层次等都有了明显提升。面对新就业形态以及软件技术的飞速发展,软件工程专业的实践教学模式必须与时俱进,并不断总结和优化,只有这样高校才能培养出符合时代要求的软件工程专业人才。
基金项目
江西省高等学校教学改革研究课题(编号:JXJG-20-7-16);江西理工大学教学改革研究课题(编号:XJG-2020-27)。