新工科背景下软件工程课程案例教学改革实践

作者: 王帅 莫惠玲

摘  要:随着我国信息化建设和发展水平不断提高,新工科理念逐渐在高等教育工作中得以贯彻。在此背景下,软件工程作为计算机类专业的重要基础课程,旨在培养适应社会发展、具有扎实理论知识和综合实践能力的综合性人才。通过分析智能科学与技术、交通工程专业学生的特点,结合教学过程反馈,对于传统授课过程中遇到的瓶颈和弊端进行总结。基于上述知识,围绕教学方法、教学资源和测评体系等内容进行分析。探索面向软件工程的教学改革思路和方法,达到保证授课效果、提升学生素质的目的,为相关课程的建设和教学提供借鉴。

关键词:软件工程;案例教学;课程设计;教学改革;测评体系

中图分类号:G642      文献标志码:A          文章编号:2096-000X(2025)04-0129-05

Abstract: With the continuous improvement of China's information construction and development level, new engineering concepts are gradually implemented in higher education work. Under this context, the software engineering course, as an important basic course for computer majors, aims to cultivate comprehensive talents who adapt to social development and have solid theoretical knowledge and comprehensive practical ability. Through analyzing the characteristics of students majoring in intelligent science and technology and traffic engineering, combined with the feedback of teaching process, the bottleneck and drawbacks encountered in the traditional teaching process are summarized. Based on the above knowledge, the paper analyzes the teaching methods, teaching resources and evaluation system. To explore the teaching reform ideas and methods for software engineering, this paper is aimed at achieving the purpose of ensuring the teaching effect and improving the quality of students. This work may provide reference for the construction and teaching of related courses.

Keywords: software engineering; case teaching; curriculum design; teaching reform; assessment and evaluation criteria

党的二十大报告指出,加快建设网络强国、数字中国。习近平总书记深刻指出,加快数字中国建设,就是要适应我国发展新的历史方位,全面贯彻新发展理念,以信息化培育新动能,用新动能推动新发展,以新发展创造新辉煌[1]。在信息化大潮的推动下,大数据、人工智能、5G、元宇宙、ChatGPT等技术得到了蓬勃发展,智能化的概念也深入到生产、生活、学习、工作等方方面面。面对着信息化和智能化的挑战,我国高等院校积极推进教学体系改革,推动工科专业进行实践教学体系优化与创新,构建迎合现代化发展、符合时代潮流的人才培养体系。2017年,教育部提出了新工科的教学理念[2],进一步指明高等教育发展、改革和创新的方向,贯彻国家发展战略,为高质量经济发展、实现社会主义现代化建设培养高素质人才。在新工科体系发展和建设过程中,高等教育工作者应不断探索适用于现代化教学的新理念、新方法,构建以综合素质培养为目标的教育新体系,形成适用于信息化时代的新模式,提升授课效果,保障教学质量。本文结合中山大学智能工程学院软件工程课程在智能科学与技术专业、交通工程专业学生上的授课实践经验,探讨和分析对于该课程进行教学改革的必要性及可行路径,为新工科课程的改革和提升提供经验及参考。

一  软件工程课程简介和当前存在问题

软件工程课程具有广泛的属性和内涵,其知识体系涵盖可行性分析、需求分析、形式化说明、总体设计、详细设计、实现、测试和维护、面向对象建模等软件工程学理论和方法。软件工程课程有助于使学生了解软件开发的过程和方法,提高软件开发的质量和效率,旨在培养学生软件开发的基本技术和思维,帮助其树立科学的软件开发观念,形成良好的编程习惯,锻炼创新思维和解决问题能力;同时,通过示例,阐明文档和说明性文字对于复杂软件系统开发的重要作用,为从事计算机领域相关研究和工程应用提供基础。

该课程面向智能科学与技术专业及交通工程专业的大三学生,授课对象已经具有较为扎实的编程基础,大部分已经掌握C语言、Python、MATLAB等多门编程语言或者开发工具的使用,对于测试方法的使用也有一定的认识。通过以往课程的实践作业和上机题目解答,学生基本掌握了常见编程语法和工具箱的使用知识,能够独立解决一些较为简单的编程问题,也具备一定的团队合作经验;但是尚缺乏对于软件开发的科学认识,不了解软件设计和实现的基本过程,对于开发过程中涉及到的思想和模型也缺乏认知。在此基础上,本课程以软件危机的来源为突破口,介绍自二十世纪七八十年代以来由于软件项目数量攀升和复杂度极具提高带来的工程问题,通过介绍科学的软件开发思想,从软件的背景(可行性分析)、起源(需求分析)、形态展示(形式化说明技术)、实现和测试及维护等几个角度,全面且具体地介绍软件系统的全生命周期,依托案例分析,讲述科学软件思想的重要性和必要性。采用分组实践作业的形式,考察学生对于理论知识的掌握程度,并对于所设计软件开发方案的科学性和技术性进行考察及评估。通过该课程的学习,帮助学生树立科学合理、体系完整的软件开发思想,并将所学的编程知识加以实践;以实际需求为引导,鼓励学生进行创新性设计,达到学而能用、学有所用、学以致用的目的。

但是,在课程教学实践的过程中,笔者根据教学实际情况,对于学生的反馈进行总结、归纳,考虑当前软件产业飞速发展的现状,发现课程教学存在如下问题。

第一,课程理论知识与编程实践之间存在障碍,学生学习兴趣不高。软件工程理论源于工程实践,尝试将科学的管理思想和方法引入到软件项目管理中。因此,学生不仅需要掌握软件开发的专业知识,还需要对于软件开发的流程和项目背景有较为深刻的认识,才能对于课程涉及的理论和思想有深入理解。但是在当前阶段,绝大部分学生并未接触现实软件的研发工作,对于课程涉及的需求响应、维护、测试等知识没有客观认识,单纯的理论讲授并不能使学生了解软件开发过程中各个阶段性任务的重要作用,难以引发学生的学习兴趣。与实操简单、技术具体的编程课程相比,软件工程的理论较为抽象,仅仅依靠个人无法在短时间内完全复现理论框架和模型体系;而诸如“白盒法”、“黑盒法”、集成测试等成熟理论和方法虽然经过了业界检验,证明了其价值和作用,但这些方法往往更适用于大型软件的性能测试和检验,在学生能够实现的中、小型软件或者程序的调试过程中价值不明显。基于这些因素,一些学生认为软件工程相关理论的学习和实践对于其个人发展贡献不大,对于理论框架的了解浅尝辄止,缺乏兴趣进行深入的研究和探索,因而造成了授课效果的下降。

第二,课程教学过程中融入了案例分析等要素,但是案例质量参差不齐,时效性不强,难以响应信息化、智能化发展的要求。考虑到软件工程课程的实操性和实践性,案例教学是该课程常用的授课方法,旨在通过具体的软件设计和实现示例,将理论知识通过具体开发案例呈现,将理论要点具象化,增强知识点的可理解性,便于学生学习和记忆。考虑到软件工程理论发展已经颇具渊源,一些经典案例虽然在教科书中得以收录,但是个别案例的应用背景和研发起源已然无法满足当下发展需要。较为陈旧的专家系统、数据库、人机交互等软件已然被近些年兴起的云储存、语音助手、虚拟化系统、ChatGPT等技术或软件取代,针对经典系统的深入分析已然无法满足当下学生对于新知识、新技术的要求。另外,移动支付已然兴起,线上社交和媒体已经深入日常生活,诸如健康码、大数据分析、智能物流等应用在疫情防控阶段得以实现和发展,学生经历了这些技术的发展,也体会到这些新兴应用带来的便捷。经典教材中的案例一般不具有时效性,难以与这些应用产生关联,这对于教学工作的开展带来了困难。

第三,考核及测评方法较为单一,难以评估教学效果,缺乏对于学生知识掌握程度的合理考评标准。软件工程相关知识具有较强的工程价值,面向真实存在的软件行业危机,通过执行科学开发流程,运用综合管控策略,结合用户环境需要,综合保障软件系统的可用性和可靠性,提升其应对风险和不确定因素的鲁棒性能。从知识点考察的角度来说,笔试作答的形式将知识体系过于细化,过分强调具体知识点对于软件开发过程的影响和作用,缺乏对于软件生命周期的全流程监控。因此,笔试测试的形式难以对于学生的知识掌握程度进行有效考察,反而让学生误以为“死记硬背”才是本课程考核的关键。从实践的角度来说,指导学生进行软件开发是一种可选的考评方法,如由学生自行组队,自有选题,完成软件设计和开发任务,并进行汇报展示。这种模式类似现实软件产品开发流程,在完成任务过程中能够综合测试学生对于软件开发理论的掌握程度,也考察了其编程实践、逻辑分析及语言表达能力。从形式上来讲,这种依托于软件开发的考核方法更加符合课程设计的需要,而且将考核压力分散到数周的教学和实践环节中,容易被学生接受。但是,软件的开发过程包括调研、设计、编码、测试等多个流程,具有一定的工作量,一般来讲无法独立完成,因而需要多个同学进行组队配合。在小组组队的过程中,每个人的任务具有一定的针对性,如同学甲主要负责软件功能和架构设计,同学乙负责编码实现,同学丙负责软件系统的测试,同学丁负责文档记录和汇报展示。这种方式也存在一定的局限性:其一,学生在完成作业过程中的任务较为单一,对于其他人负责的任务或者工作涉猎较少,因而并未实际参与到软件全流程的开发和实践过程;其二,个别学生存在惰性,在执行任务过程中不愿付出时间进行学习和实践,而小组作业主要展示的是整个团队的成果,对于个人的贡献缺乏有效考量,“滥竽充数”“浑水摸鱼”的现象屡见不鲜;其三,日常生活接触到软件种类很多,个别学生试图通过课程的学习全面掌握复杂软件的全栈、全平台设计方法,对于课程安排进行质疑,提出过诸如为什么本课程不讲授Java编程语言、为什么不讲解Android编程、为什么不讲解Kotlin脚本语言等等问题。从学生的角度出发,软件开发和实现的重点在于代码编写;而从软件工程理论的角度出发,科学的项目管理和资源调度方案直接影响着软件开发的成本和质量。由于知识层次和主要任务不同,学生的期望和行业的要求并未达成统一,这也为课程的有效评估带来困难。

综上,由于理论知识体系、行业发展要求、学生学习规划等因素,软件工程课程在教学和实践过程遇到了一些困难,一些学生对于课程安排提出了疑问,传统的评测方法也难以满足课程考核需要。在智能化技术广泛应用的当下,结合新工科的发展需求,如何对软件工程的授课体系和教学方法进行改革和创新,是亟待解决的问题。

二  新工科背景下软件工程课程的教学方法

软件工程的知识体系围绕真实软件研发涉及到的理论体系和实践方法,以章节式的形式进行展开,结合软件的全生命周期,具体讲授软件工程的基本原理、技术方法、开发全过程;从宏观管控层面,介绍了软件项目组织和管理等方面知识,突出了用户需求对于开发过程的重要价值,展现了应用环境对于软件测试和使用的约束,印证了科学管理策略对于复杂系统的关键作用。根据上述内容知识和理论体系,课程在教学过程中可能涉及到案例分析和展示,包括工程原理案例库、开发方法案例库、测试方案案例库、软件实例案例库、开发文档案例库以及项目管理案例库等等。在教学过程中,合理运用案例资源,穿插讲解理论知识,能够有效提升课程的丰富程度,吸引学生的注意力,保持课堂趣味性,同时寓教于乐、寓教于例,将枯燥、抽象的理论知识进行具象化,便于理解和记忆[3]。在课程迭代过程中,往届学生也完成了一些软件作业,这些软件的来源和背景往往与学生的日常学习、生活、娱乐活动紧密相关。对于这些作业的展示与讲解能够更好地将学生自身生活和学习进行结合,拉近理论知识和实际应用之间的距离,为学生的实践和未来规划提供信息与指引。与此同时,我国软件产业的发展也历经艰难,很多领域的产品都有“落后—跟跑—追赶—超越”的发展历史,在不断探索、实践、试错的过程中,从业人员的智慧也值得学生学习和关注。课程设计应该关注软件产业发展历史蕴含的思政元素,充分发挥思政育人效果,将创新精神、理想信念、奋斗热情等思政要素与案例紧密结合[4],通过分析使学生受到感染和鼓舞,达到潜移默化、润物无声的授课效果。应用这些思想和方法,软件工程课程包括如下教学方法。

经典小说推荐

杂志订阅

友情链接