新工科背景下“软件工程综合实验”课程教学探索与实践

2023-04-06 07:11彭天豪
教育教学论坛 2023年6期
关键词:软件实验过程

任 健,王 康,彭天豪

(北京航空航天大学 计算机学院,北京 100191)

一、课程改革的背景和意义

新工科建设是我国主动应对影响范围深远的新一轮科技革命与产业变革的战略行动。高校的课程体系和课程质量下培养的学生是否能够适应新的大环境下市场对人才的创新创业等方面的能力需求,是目前高校课程改革亟待解决的问题,同时也是必须迎接的新的挑战[1]。然而,现阶段软件工程的实验教学仍然存在不少问题,与社会对人才的要求还存在一定差距。因此,为了切实提升软件工程课程的实验教学质量,需要对实验教学过程存在的问题进行分析,并探索促进软件工程实验教学改革的策略,从而不断培养学生的发现、分析、解决问题及实践应用能力。此外,大数据时代的到来,为软件产业注入了生机与活力。而软件产业的繁荣与发展,离不开高素质综合性软件工程专业人才的支持。为培养更多高素质的软件工程人才,改革软件工程教学需要创新,这也适应了软件工程行业的发展方向。

二、软件工程实践类课程现状

“软件工程综合实验”是计算机相关专业的一门专业课程,也是一门综合独立实验课程,其目标是培养学生的软件综合开发能力和实践创新能力。专业综合实验课程往往涉及学科基础课、专业课等多门课程,加上课程内容跨度较广、难度较高,如何设计课堂教学案例,保证课程的教学目标和教学效果,成为该课程的一个教学难点[2]。目前的软件工程教学存在以下亟待解决的问题。其一,纯理论教学内容抽象。在学习软件工程相关专业课程时,大部分学生在前序课程中会积累一定的编程语言和软件开发的经验。若软件工程综合实验类课程不能促进学生将课程内容与开发实践有效联系,将会出现学生认为课程内容重复,产生一定抵触心理。其二,教学模式单一。软件工程学科涉及软件开发、运行和维护等内容,学生除了掌握必要的理论知识外,还应当具备熟练的分析、设计、测试能力。但是,软件工程课程的很多环节都没有体现对规范化教学和训练的考量,导致学生在软件工程项目实践中状况百出,团队合作经验不足,软件过程制品缺乏统一的规范,无法满足社会业界的生产实践活动需要。其三,教授规范化过程管理工具较少。尽管如Git等协同开发工具在学生群体中被普遍应用,但是如UML、RUCM和Microsoft Project等规范化的软件工程过程管理工具只有小部分学生有所接触,大部分学生并不了解软件生命周期各阶段制品的规范化管理对最终产品质量保障的作用。其四,教学学习效果评估颗粒度不细致。通常“软件工程综合实验”课程以学生组队完成指定项目或自选项目的形式进行,而且只在期中期末或项目评审阶段对项目整体成果和绩效进行阶段性评估,很难做到每周或者每月对每名学生的学习效果进行评估,所以部分学生的问题无法在项目实施过程中自动显现。

三、软件工程课程改革探索

在新工科大背景下如何对课程进行改革,以消除原有课程教学的弊端,适应人才培养的新需求,成为亟待解决的问题。

(一)开展教学内容专题化训练改革

软件工程综合实验要求学生针对现有的开源软件进行二次开发,遵照软件开发规范进行系统分析与设计,完成一个系统的综合开发任务。最后,提交规范化的实验报告,提高学生软件工程各阶段相关的系统文档撰写能力。

第一,本课程教学目标为学习和综合运用多种软件工程方法,从事相应的软件工程活动,对软件工程活动中出现的实际问题进行合理有效的处置,通过实验对方法的实施效果进行客观的分析和评判。整个课程一共分为三个专题模块,其中每个专题的分配时间依据学生的表现和反馈适当调整,每个专题内的子过程分别持续一至两周。第二,定义软件项目。学生自由组队后小组交流各成员特点和偏好,并和教师商议讨论确定实验项目。主要有两种方案供学生选择,一是在各开源平台上探索相关项目,并以此项目为基础提取高层次需求,更新和完善该开源项目;二是基于调查和调研提取的新的需求,从零开始,开发新的软件项目。软件工程实验过程包括软件需求分析、需求评审、软件设计与实现、软件测试、软件测试评审5个阶段。不限制软件工程项目开发架构,鼓励使用瀑布模型、敏捷模型。第三,软件工程实验过程管理。过程分为软件项目计划与监控、软件配置管理、实验追踪与分析。设计此专题的目的是促进项目推进过程、软件代码管理、成员贡献分工可控化和可视化。学生要有条理、有秩序地协作推进软件工程过程。学生需要针对每一专题的每个过程进行总结和汇报,保障学生在每个过程中都认真参与。

(二)课堂教学形式多样化改革

翻转课堂最早于2011年提出[3],该方法是对学习过程的两个阶段,即知识传授阶段和知识内化阶段进行颠倒[4]。翻转课堂现已成为美国主流的创新教学模式[5],同时也在全球教育界引起了广泛关注[6]。软件工程实验教学改变原有单一的“填鸭式”教学方式,积极推进开展“教师引导方向、学生探索细节、师生探讨教学相长”的翻转课堂模式。在“软件工程综合实验”课程开展过程中,翻转课堂模式实施的具体过程为:(1)教师布置下一阶段任务,提供相关的学习资源,并明确任务的产出。(2)学生对任务进行调研和分析,通过小组讨论将任务分解并分工,通过独立探索和协作产出阶段性成果。(3)小组进行阶段性成果汇报,总结问题并进行下一阶段的任务活动。(4)教师、助教和其他学生听取小组的定期汇报,进行过程监督,发现问题并提出意见。(5)教师、助教和其他小组结合任务进度和成果质量对小组和小组成员进行考核评价[7]。

(三)学习过程管理和评估方式改革

课程伊始,学生自行组成6~8人的开发团队,每个团队负责开发经教师认可的自选项目。每个开发团队都要配备软件开发过程中的各个角色,包括项目经理、需求分析人员、编码人员、测试人员、开发辅助过程管理人员等。此外,教师和助教除教学身份外,还要扮演甲方角色,以客户视角对产品做出评价和建议。在软件开发的各个阶段,小组的每个成员需要履行自己所扮演角色的职责,并通过周会制度与其他成员分享阶段性的问题与进展,探讨自己对软件工程的理解,从不同的角度对软件工程整体理论形成更深入的认识。

课程采用团队互相评审和团队内绩效管理结合的方法。引入软件需求评审和软件测试评审方法。通过网上互相评审和会议评审开展代码审查、需求和测试过程互评。此举有两大好处:一是每个小组能够从不同的视角重新审视自己的文档和产品,在之后的软件开发过程中能从更全面的角度推进产品。二是互评的过程可以充分保障并有效提高产品和文档的质量。当局者迷,很多企业的小组互评模式已经充分验证了这个道理。

在学生团队内部采取协商规则、民主评价方式进行团队成员绩效管理。在课程开始时,由团队内部制定贡献度评分标准;课程收尾时,团队内部成员结合贡献分评价标准对其他成员进行评价,得到每个人对团队的贡献度,作为最后课程得分的参考。通过团队内绩效评价,教师能够了解团队健康程度,从而进一步调动学生积极性,提升教学效果[8]。

(四)丰富教授软件工程辅助工具

在需求分析和提取阶段,北京航空航天大学计算机学院针对RUCM方法开发出了相应的建模工具[9-10],学生可以使用工具对程序逻辑判断等结构进行建模。在需求分析和系统设计阶段,统一建模语言(Unified Modeling Language,UML)可视化工具[11],如StarUML和Visio,让学生在实践中理解“建模不等于画图”的要义[12-13]。在项目推进过程中引入Microsoft Project作为小组项目的管理工具,可以帮助项目管理者实现时间、资源、成本计划和控制。

通过上述工具的学习和使用,学生在实践过程中可以深刻体会比文字描述更直观、逻辑更严谨的信息传递效果,这也是使用这些建模和管理工具的重要意义。正确理解和使用针对需求分析、系统分析及项目过程管理的非编码工具是软件工程能力的核心体现,在实践中锻炼使用上述工具的能力是软件工程专业学生的必修课。

(五)教学学习成果绩效的细粒度自动评估

在软件开发阶段,学生被要求在各自组内分工完成各类文档的撰写及项目代码的开发,代码及文档在群体化开发网站的提交行为会影响团队中的其他成员。在评审阶段,学生审阅其他小组的文件和代码并指出项目存在的问题,学生提出的问题会影响问题所在团队的所有成员。

基于学生每周在软件开发过程中的交互数据,通过构建学生时空交互图反映学生间的相互影响情况。基于学生在群体化学习模式中的互动表现,探索学生在团队项目中的互动方式,以及互动影响学生在协作学习环境中的课程成绩的原因。教师还需要智能辅导工具推断协作软件开发过程中学生交互的潜在影响。利用针对图神经网络的解释模型,教师可以分析学生在学习过程中是否相互影响和影响的程度。

每个学生的最终得分取决于他们对项目的贡献,以及团队最终交付的软件产品的质量。教师可以使用图神经网络及相应的解释模型,通过挖掘学生的行为数据,特别是他们的互动行为,分析每个项目的完成过程,从而更加准确地评价小组项目中每个学生的学业成绩,客观地分析各成员的能力和偏好,帮助学生进行组队和分配任务。

四、教学改革效果评价

软件工程综合实践类课程内容、教学模式等的改革与实践表明,通过以实际问题为中心、由应用案例组织的教学,学生能够以批判性的眼光看待问题,学会将理论知识运用于实际问题的解决。本次“软件工程综合实验”课程的改革成果具体可以总结为以下三个方面。

(一)建立新的符合行业标准的授课模式

“软件工程综合实验”课程教学改革解决了国内该课程的综合性和实用性不足等问题,为软件工程综合实验课程建立新的符合行业标准的授课模式。同时,提出了适应新工科背景下满足我国实际需求和学生适应能力的教学方法体系,并以“软件工程综合实验”课程为教学改革试点,提出了满足相关行业标准、实际需求和学生适应能力三项准则的教学内容和教学方法改革方案。

(二)提高学生专业能力的培训效果

教学过程以学生组队进行生产实践为主,通过专题化训练提高学生对软件生命周期各阶段成果的理解和掌握水平,通过翻转课堂教学实践及分组互评锻炼学生撰写各阶段文档及团队间交流展示的能力。课程改革教学效果表明,实践环节提高了学生对软件生产过程的把握程度和完成程度,同时加深了学生对软件行业各类标准的认识和理解。

(三)增强教师对学生学习过程的绩效感知能力,提高学生互动协作能力

教师通过学生使用相关工作软件的提交质量、互动数据及互评分数的矩阵,可以每周获取一次绩效评估,每月获取一次互动协作能力评估,增强教师对参与实验课程学生的成绩和互动协作能力的实时感知,有利于实现通过实验过程提高学生互动协调能力的目标。

结语

新工科背景下,“软件工程综合实验”课程改革是一项系统工程。本文提出软件工程理论与实践专题结合的教学内容、课程教学采用多模式结合的教学方式、合作创新的学习方式等教学改革方案,解决了国内该课程现有的综合性和实用性不足等问题。在丰富学生理论知识的同时,提高学生的动手能力、创新能力及团队合作能力,并对今后更好地拓展和完善软件工程综合实践类课程的教学方法提供一定的借鉴。

猜你喜欢
软件实验过程
禅宗软件
描写具体 再现过程
临终是个怎样的过程
做个怪怪长实验
软件对对碰
NO与NO2相互转化实验的改进
实践十号上的19项实验
在这个学习的过程中收获最大的是哪些,为什么?
谈软件的破解与保护