高校软件工程专业实践教学探索
2023-10-30吉雪芸李爱华
吉雪芸,胡 冲,李爱华
(1.保定学院 数据科学与软件工程学院,河北 保定 071000;2.保定学院 人工智能学院,河北 保定 071000)
随着2016年我国加入了国际工程联盟《华盛顿协议》,解决复杂工程问题(Complex Engineering Problems)的能力成为本科生培养的基本要求,本科工程教育不仅要深入理解和把握复杂工程问题,更要培养学生具有解决复杂工程问题的能力[1]。同时,伴随着软件需求越来越高,涉及的领域越来越广泛,解决复杂工程问题的能力已成为软件工程专业的主要培养目标。
近年来,高校围绕软件工程专业的实践教学展开了研究和探索,如贾经冬等将腾讯开发平台引入并应用于软件工程实践课程教学的过程之中[2],周喜红在产学研实践方面进行了培养软件工程专业本科生解决复杂工程问题能力的探讨[3],吉雪芸等提出了以能力为导向的产学研一体化研究[4]。这些研究并没有剖析复杂工程问题包含的实践领域。然而,在解决复杂工程问题的实践领域的能力培养、完善软件工程的实践教学体系、落实处于前沿的实践项目、制定判断或者衡量教学效果的标准等方面,还需要进一步的探索和研究。为此,笔者进行了以提高学生解决复杂工程问题能力为目标的软件工程专业实践教学改革,以期进一步提升学生的综合能力。
一、高校软件工程专业实践教学改革的必要性
根据《华盛顿协议》认证专业提供的知识体系,复杂工程问题的界定包含8种知识,其中涉及实践领域的知识有3个方面:(1)为工程实践领域提供理论框架和知识体系的工程专业知识,大部分处于本学科的前沿;(2)在实践领域支持工程设计的知识;(3)工程学科实践领域中工程实践(技术)的知识[5]。对于软件工程专业来说,培养学生解决复杂工程问题的能力,其实践教学内容必须包含这3个方面。
复杂工程问题的主要表征为:必须运用深入的工程原理经过分析才可能解决,需求涉及技术、工程等多方面因素,并可能相互有一定冲突,需要通过建立合适的抽象模型才能解决,在建模过程中需要体现出创造性等条件因素。解决复杂工程问题需要具备的能力和素质由专业能力、综合素质以及社会能力组成,其中专业能力包括多学科知识应用能力、复杂工程问题分析能力、复杂工程系统设计与开发能力、文献研究与实验分析能力、现代工具使用能力[1]。由此,软件工程专业实践教学的目标为培养学生复杂工程问题分析能力、复杂工程系统设计与开发能力、现代工具使用能力等。因此,对软件工程专业原有的课程体系进行改革,形成新的围绕解决复杂工程问题能力的实践教学是非常必要的。
二、软件工程专业实践教学体系
(一)实践教学课程群建设
所有的课程在技术、技能或者理论知识点均具备实践领域的知识特征[5],对培养学生解决复杂工程问题的能力起到决定性的作用。例如,Java方向企业级应用开发的实践教学课程群分成3个模块:专业基础课、职业与实践课、项目实践课。课程群如图1所示。
图1 企业级应用Java方向实践教学课程群
将培养复杂工程问题解决能力作为最终目标,明确每门课程在整个体系中起到的作用,按照各个技术方向、前驱基础理论和培养能力进行细化,有助于教师对教学内容的强调,对师生教学活动起到更好的指导作用。以“Java项目综合实践”课程为例,部分技术方向、前驱理论知识及培养能力见表1。
表1 “Java项目综合实践”课程内容与理论基础、复杂工程专业能力的对应关系
(二)实践项目案例
根据实践教学培养学生解决复杂工程问题能力这一目标,选择适合的实践项目案例。这些案例可以从目前已经运行的产品中选择,也可以由教师或者专家根据市场需求提出。案例之间必须有技术上的传承以及功能上紧密的联系,要将典型项目案例融入到软件工程实践教学的相关课程或者教学环节中,开展有针对性的教学,构建有理论依据的实践教学体系。
软件开发技术和市场软件产品的结合相当紧密,热门市场需求从B/S模式的Web应用到分布式Web应用以及移动Web应用,技术要求越来越广泛,产品复杂性也越来越高。教师必须随时学习新技术,掌握开发工具,与企业(尤其是互联网企业)保持同步,同时保持先进的开发理念,才能更好地完成授课任务。通过在北京、天津以及保定各个软件公司的调研,2015年到2022年Java Web应用的主要技术如表2所示。
表2 2015—2022年Java Web应用相关技术
从表2可以看出,软件工程实践类课程的教学内容与Java企业级APP开发技术的更新必须是同步的,这些主流技术都具有复杂性和整合性等特点,这些特点在实践项目案例中必须得到体现。而主流开发技术随着市场的需求会逐步发生变化,因此实践教学的内容应随之进行调整,比如2005—2008年的软件技术专业,专业课程开设C#.net开发以及Java开发两个方向,基础部分面向全部学生开设,项目部分由学生自主选择,Java开发方向使用SSH框架;2008—2012年,随着大型电商成为市场热点,为了让学生更好地了解高可用、高并发的分布式技术,对实践类课程进行了调整,改为必修Java方向;2013年开设基于安卓平台的Java开发以及Java Web开发两个方向;目前Java方向包含有基于大型Web应用的Java方向、安卓平台的Java方向,Python方向包含大数据平台等。实践类课程的Java相关部分实践案例见表3。
表3中的实践案例都具备复杂工程问题特征,即:(1)在软件架构上,需要运用工程原理进行分析与设计;(2)在软件功能层次结构的设计上,需要建立模型;(3)需要运用多项前沿技术才能实现软件功能;(4)需求上具有创新性,并不断更新。
(三)企业实习见习、毕业设计实践环节
通过参与实践项目案例,学生初步具备了复杂工程问题的解决能力。而真正具备这种能力,则需要把案例中获得的经验应用到实习见习和毕业设计中。
实习见习是巩固实践技能、学习前沿技术和工具的重要环节。考察学生在企业实习见习环节,总结出使用的技术工具、实现的软件功能以及对应的能力如表4所示。从表4可以看出,软件功能是市场上企业应用的主流,对学生复杂工程问题解决能力要求极高,因此企业实习见习有助于培养学生解决复杂工程问题的能力。
表4 技术工具及实现软件功能、对应能力
毕业论文是体现学生四年专业水平的重要方式,是实践教学的重要环节,也是提升学生解决复杂工程问题能力的重要时机。从选题到设计、开发、软件的成型,学生遇到的一系列问题都会促进学生能力的提高。软件工程专业的毕业论文选题大都围绕企业前沿问题或者社会需求,涉及到市场先进技术。教师在指导学生毕业论文的过程中,除了技术上的实现外,还需要强调软件的社会化需求,比如用户体验、现有技术及解决方案等,敦促学生将实际问题转化为软件成果。
(四)制定衡量教学效果的标准
对于实践教学的考核评价体系,目前多数高校已经确定了考核模式,比如,必须包含过程性考核,考核方式必须多样性等等,但是并没有对考核标准进行界定,故无法清晰地描述教学效果。为了衡量教学效果,软件工程专业的实践教学考核应分为成果考核和能力考核,成果考核考查学生是否完成教学项目案例,能力考核必须考查学生是否完成具备复杂性问题特征的任务,比如,对功能的改进和建议,对原理的思考和探索,对架构、模式的创造性设想,撰写有创新点的论文等。软件工程实践教学考核方式见图2。
三、软件工程实践教学的实施效果
实践教学的实施效果受各方面因素影响,但是大体可以从以下两方面看出,采用基于培养解决复杂工程问题能力的软件工程实践教学,收到了一定成效。
(一)专业对口率及毕业3个月内工作胜任情况
专业对口率是指毕业后从事的工作,是否跟求学时所学内容相关。这一指标可以直接印证实践教学是否在学生择业中起到作用。另外,毕业生是否胜任岗位也可以由毕业3个月内工作胜任情况来得到证实。表5显示经过实践教学环节,某应用型本科院校软件工程专业学生的就业质量。
表5 软件工程毕业生就业质量统计
由表5可以看出,在已经就业的学生中,超过60%所在的岗位是和本专业相关的。这里说的相关,是指毕业后从事软件开发、测试、运维等工作,而编程教师、电子商务、新媒体运营等岗位都没有计入专业对口率的统计之中。
(二)社会认可度
为了进一步证实实践教学体系的教学效果,笔者对北京、上海、天津、河北等12家2020届毕业生就业单位进行了访谈,其中对入职人员掌握岗位技能满意程度非常满意的有4家,基本满意的有8家。由此可见,企业对应届毕业生的工作能力认可度较高,实践教学体系的教学效果普遍得到肯定。
随着社会的发展,不断培养出符合企业需求的具备解决复杂工程问题能力的软件工程人才,仍是高校软件工程专业实践教学改革的方向。高校软件工程专业教师要不断提高实践教学水平,为培养出符合社会实际需求的软件工程人才而不懈努力。