以实践导向促进能力提升的软件工程课程教学探索
2024-01-02王红斌丁家满毛存礼
姜 瑛,王红斌,丁家满,毛存礼
(昆明理工大学 信息工程与自动化学院,云南 昆明 650500)
0 引言
昆明理工大学信息工程与自动化学院计算机科学与技术专业获批国家级一流本科专业建设点,是云南省首个通过工程教育专业认证和复认证的计算机类专业。软件工程是计算机类专业的核心课程,坚持立德树人,体现以学生发展为中心,注重学生德智体美劳全面发展。该课程首先在昆明理工大学信息工程与自动化学院计算机科学与技术专业开设,于2011 年、2014 年起向昆明理工大学信息工程与自动化学院物联网工程、软件工程专业本科生授课。经过多年建设,该课程已成为计算机类专业的特色课程,涉及计算机科学、数学、工程学和管理学等多学科的基本原理,帮助学生建立软件开发的系统性概念,为更深入学习和从事软件工程实践奠定了良好的基础。
学生在课程学习中培养分析问题、解决问题的能力,将其应用于后续的综合程序课程设计、毕业设计实践中。软件工程课程知识点多,基础理论较为抽象,传统教学中大量课时集中在软件工程基础理论和原理的讲解中,弱化了如何将软件工程理论应用于实际软件开发的思路和过程,对学生思维方式、工程能力和创新能力的训练不足。因此,该课程的教学改革重点解决以下问题:
(1)在有限学时内既要完成课程理论知识的讲解,又要着重培养学生将软件工程的理论知识转化为实践应用的能力。此外,需要让学生深入接触软件行业和实际的软件开发,了解社会对专业能力的要求,为未来的职业发展建立基础。
(2)软件工程相关技术发展迅速,涉及面广、实用性强,需要紧密跟踪软件工程的发展,在课程中持续融入新知识、新技术、新方法,充分发挥学生主动学习的积极性,引导学生建立自主学习和终身学习的观念。
(3)从解决简单问题升级到复杂工程问题,增加课程内容、练习、测试、实践的难度。通过系统化、科学化、工程化的软件开发体验,培养学生分析、解决复杂工程问题的能力,提升学生的创新思维和创新意识。
(4)将专业知识教育与思想政治教育相融合,增加软件工程师职业道德规范等专题讨论,全面提升学生的社会责任感、创新精神和实践能力。
1 相关工作
课程是人才培养的微观单元,是提升人才培养质量的重要基础环节。教育部发布的《关于一流本科课程建设的实施意见》明确指出,课程是人才培养的核心要素,课程质量直接决定人才培养质量[1]。基于软件工程课程特点,胡晓鹏等[2]分析了软件工程课程教学中存在理论知识枯燥、案例教学不成体系等问题,给出应用型课程建设核心内容,结合软件工程课程内容贯穿软件开发全过程的特点,提出“一轴六点四环两翼”的软件工程课程体系架构。孙小兵等[3]根据软件工程课程及其发展特点,提出建设实践驱动的软件工程教学案例库,介绍了14 种面向软件工程实践的课程案例库,这些案例库可根据软件开发环境和技术变化进行相应的更新。马丽等[4]根据信息产业岗位需求和CDIO“做中学”思想,将软件工程课程内容设计为与CDIO 能力逐级培养相适应的“构思、运作、设计、实现”等教学模块,在项目任务中将模块知识点进行分解,以构建相应的课程资源,建立多元化学习评价体系。陈永等[5]按照工程教育专业认证的理念和方法,对软件工程课程进行质量提升建设,从教学大纲规划设计、课程教学能力培养目标、课程考核内容设置、课程持续改进等环节进行分析。鲁亮等[6]以安顺学院为例,在大数据时代背景下,系统分析地方高校开展软件工程课程建设的充分性和必要性,从教学现状、教学方法、教学模式及教学过程改进等方面,详细探讨有关软件工程课程建设所面临的系列问题,并提出应对措施与建议。
然而,上述研究主要针对软件工程课程体系、教学案例、教学过程等方面进行探索和实践,对如何基于高阶性、创新性、挑战度的金课标准,针对促进学生能力提升的目标开展软件工程课程建设,却并未明确系统化的建设思路。
为此,本文探讨了软件工程课程系统化建设途径[7-9],通过课程内容反映软件工程领域的前沿性和时代性,在课程教学中强调互动性和针对性,基于实践导向着重培养学生分析、解决复杂工程问题的能力和创新能力。
2 立足实践实施混合式教学与翻转课堂
2016 年起,昆明理工大学信息工程与自动化学院的软件工程课程,按照工程教育认证标准制定课程教学目标,定义了课程目标与毕业要求间的关系,明确了学生学习软件工程课程后要达到的知识、能力和素质。课程紧密结合国家软件产业发展战略,以软件开发的需求分析、设计、编码、测试、维护及项目管理为主线,重新梳理软件工程的知识地图与思维导图,确定了包括软件开发方法、软件开发过程、软件开发实践及软件前沿专题在内的课程内容。课程要达到的课程目标包括:
(1)应用数学、自然科学、工程基础和计算机工程专业知识表达软件项目的相关需求,建立适当的系统分析与设计模型,分析并改进系统解决方案。
(2)应用数学、自然科学和工程科学的基本原理,识别、表达并通过文献研究分析软件开发的可行性,提出合理的解决方案。同时,运用计算机工程的思维方法,判断系统应用中设计指标的变化对系统造成的影响,然后提出优化解决方案。
(3)针对软件项目特性,设计满足特定需求的系统、单元或业务流程,并在设计环节中既体现创新意识,又考虑社会、健康、安全、法律、文化及环境等因素。
(4)基于科学原理,采用科学方法对软件项目进行研究,设计可行的方案,并开展系统研发、测试及分析,得到合理有效的结论。
(5)理解软件开发团队中每个角色的含义及对于整个团队环境和目标的意义,并在团队中做好自身角色承担的事情。
针对以上课程目标,作为昆明理工大学信息工程与自动化学院计算机类专业第一门开展基于自建慕课的混合式教学的专业课。2018 年9 月,软件工程慕课在智慧树平台上线运行后,提出了“立足实践导向,促进能力提升”的混合式教学方法,线上通过慕课完成知识教育,线下通过专题讨论、实践练习深化与巩固知识,实现学生的素质培养及能力提升。
课程建立了完整的线上+线下教学体系,学生学习路径如表1 所示。线上自建慕课完成软件工程基础知识的讲授,通过开发实例讲解与演示(慕课/线上)、思路讲解与分析(见面课/线上+线下)、实践练习与讨论(课堂/线下),将教学重点转移到通过课堂教学提升学生的能力方面。
Table 1 Learning path for software engineering course表1 软件工程课程学习路径
课程以实践为导向,在学生学习路径中所有环节都引入软件项目实践的相关内容,以培养和提升学生运用工程思维分析、解决实际问题的能力,达到课程目标。为了让学生在理解和掌握软件工程原理和方法后,将其应用到软件开发实践过程当中。本文在课程中立足实践导向,建立了翻转课堂的基本原则,具体为:
(1)让学生接触企业实际软件项目,了解相关行业软件开发现状,感受软件技术对人们工作和生活的改变。通过增加大量软件开发实例讲解与实践练习,锻炼学生学以致用的能力。
(2)向学生讲解行业发展的新动态及社会对软件人才的新要求,让学生了解新一轮世界科技革命和产业变革,通过探讨软件工程最新的技术发展和研究进展,拓宽学生视野和知识面。
(3)通过设计项目导向式的实践应用,增大软件开发实践题目难度,引导学生深入思考,在阶段性学习后应用相关理论知识解决复杂工程问题,激发学生的创新思维和意识。
课程在直播见面课上,以课程组开发的横向项目“小区物业收费管理系统”为例,详细讲解该系统的需求分析、设计、编码实现、协同开发等软件工程的核心环节,向学生展示一个实际系统开发的完整过程,让学生加强将理论知识应用在开发实践中的理解。在翻转课堂教学中,课程采用项目小组的形式实施实践练习,让学生承担软件分析人员、设计人员、程序员、测试人员等不同角色的任务,进一步了解软件实际开发过程。例如,课程选用当前的商品软件(如网上购物系统)或与相关软件研发企业合作后提炼的课程案例(APP 软件用户评论数据分析系统),针对课程目标设计小组讨论式学习任务,通过学生个人自主学习和团队小组讨论式学习共同完成[10]。在课堂上,学生根据其在项目组中的分工,在课堂上汇报、分享个人与小组的实践成果和学习心得,并进行小组间的讨论,以进一步提升自身分析、解决问题的能力。
由于软件工程相关技术发展迅速,涉及面广、实用性强,课程紧密跟踪软件工程的发展,课程内容、练习、测试、实践的难度持续增加。因此,需要通过系统化、科学化、工程化的软件开发体验,培养学生分析、解决复杂工程问题的能力,以进一步提升学生的创新思维和创新意识。
3 课程思政建设与学生学习能力培养
软件工程课程明确了课程的德育目标,设计了德育融入模式。通过昆明理工大学云南省人工智能重点实验室研发的云岭智能翻译机案例讲解、“轻松购”项目创新实践、杨芙清院士等杰出人物介绍,在教学中融入德育理念,不断改进教学方法。
在教学中,针对第3 个课程目标,本课程特别设计了软件工程师职业道德规范的专题讨论,要求学生课前学习智慧树平台上有关软件工程师的视频,事先了解软件工程相关的行业岗位,将IEEE 计算机协会和ACM 联合指导委员会的软件工程和职业实践专题组制定的《Software Engineering Code of Ethics and Professional Practice》(英文版)发给学生阅读。同时,课前将学生分为小组,查找与软件工程师的职业道德规范相关素材,并对素材进行整理与分析,让学生学习如何针对一个具体问题进行查找、分析、整理资料,使学生掌握软件工程师职业道德规范及对软件工程师的要求,结合自身情况和行业现状进行思考。
课堂讲授过程中,学生先汇报查找的素材与小组观点,通过师生互动、生生互动,对相关案例进行分析与总结,理论联系实际,采用启发式教学方式,让学生理解软件工程师职业道德规范的内涵,要求学生从软件工程师的角度思考软件工程师或软件开发工作与道德、经济、文化和法律等方面的关系,引导学生树立和践行社会主义核心价值观,为自身职业规划奠定基础。
课程通过在混合式教学过程中加强课上、课下的引导和教学,使德育教育充分渗入软件工程教育教学中,以提升学生学习的积极性和主动性,加强学生对专业的认同感,促进学生应用专业知识为国家作出贡献的使命感。
为了进一步突出以学生为中心的思想,通过分析线上、线下学习数据,对学生有疑问、不理解的知识点开展有针对性的课堂教学及实践练习。针对学生软件工程课程学习中主动性与针对性不足的现状,基于课程前期开展基于混合式教学的课程导学,以直播为特征的课程在线导学相关实践,提出基于形成性评价的软件工程课程导学方法[11]。
实践表明,应用基于形成性评价的课程导学模式,能提升学生学习软件工程课程的主动性和积极性,在解决复杂工程问题时学生的实践能力也得到一定提升。教师通过评估学生自主学习成效并分析存在的问题,进一步强化了学生自主学习的导向。
为了提升学生学习能力与课程教学效果,昆明理工大学信息工程与自动化学院教学团队基于软件工程的课程目标,探讨了目标导向的软件工程课程小组讨论式学习模式,设计小组讨论式学习任务,提出小组讨论式学习效果的综合评价体系[12]。通过学生自主学习和小组讨论式学习相互促进,有效支撑了课程目标达成,提升了学生解决复杂工程问题的实践能力。
4 多元化课程评价体系
工程教育认证是一项复杂的系统工程,涵盖内容广泛,核心问题是提升学生能力[9]。在工程教育认证中,为了评价课程知识、能力、素质等是否达到预期,需要对课程教学过程和教学结果进行课程目标达成度评价。由于目前线上平台主要考核学生对知识的掌握程度,本课程加大课堂练习、上机实践及分组讨论在成绩评定中的比例,以便对学生的实践能力进行针对性评价。因此,本课程设计了多元化的课程评价体系如表2所示。
Table 2 Evaluation system for software engineering course表2 软件工程课程评价体系
为了切实提升课程教学质量,本课程自2018年起实施教考分离,主要采用课程组自建题库组卷。2021 年起,本课程期末考试邀请国防科技大学软件工程课程组出题。出题前,将课程教学大纲、教材信息等提交给国防科技大学软件工程课程组,由其出A、B 卷试题并提供试题参考答案,试题覆盖5 个课程目标并与软件工程实际紧密相关。第三方试题的使用在一定程度上促进了学生重视学习,在期末考试准备上投入了更多时间。
5 课程教学效果分析
2018 年9 月起,本文课程已面向昆明理工大学信息工程与自动化学院计算机科学与技术、软件工程专业的本科生开展了基于自建慕课的混合式教学,学生对课程的评价结果均为优秀,对教学方法给予肯定。学习过程与结果表明,“立足实践导向,促进能力提升”的混合式教学方法进一步提升了教学针对性,增强了学生学习的主动性和积极性。本文课程2020年被认定为首批国家级一流本科课程。
近两期教学,面向昆明理工大学信息工程与自动化学院2019 级、2020 级计算机科学与技术专业本科生。2021-2022 学年课程期末考试采用国防科技大学(跨省985 高校)试题,由于难度略高于以往试题,学生考试成绩略有下降;2022-2023 学年期末考试采用国防科技大学(跨省985高校)试题难度基本与2021-2022 学年持平,学生考试成绩得到一定的提升,期末考试成绩如表3 所示。针对本课程的5 个课程目标,2021-2023 学年的课程目标达成情况如图1所示。
Fig.1 Comparative analysis of achievement for software engineering course objectives in the 2021-2023 academic year图1 2021-2023学年软件工程课程目标达成情况比较
Table 3 Comparison of final exam scores for software engineering course in the 2021-2023 academic year表3 2021-2023学年软件工程课程期末考试成绩对比
本课程的5 个目标是为了培养学生在面对复杂工程问题时,能进行分析与设计建模、提出优化思路、综合考虑多方因素、设计可行方案、有效开展团队协作等能力。由图1 可见,随着课程作业、实践等任务难度逐年增加,80%的课程目标达成呈现上升趋势,表明课程教学改革效果明显,学生在解决复杂工程问题时的能力得到了提升。
6 结语
通过实施“立足实践导向,促进能力提升”混合式教学方法,软件工程课程在教学效果、教学质量上均有较大提升。昆明理工大学信息工程与自动化学院课程团队将持续改进混合式教学方法,不断探索新的教学理念,借助信息化技术进一步提升教学效果,积极推广教学方法。