1. 引言
工程教育认证是国际上公认的工程教育质量保证体系,是高等教育质量保障体系的重要组成,已受到众多国家和地区的认可。2016年我国成为《华盛顿协议》正式会员,标志着我国工程教育又迈出了重大步伐,截至2022年底,全国共有321所普通高等学校2385个专业通过了工程教育认证[1]。近年来,越来越多的高校认可并实践工程教育专业认证的核心理念——“以学生为中心,以产出为导向,持续改进”[2]。这就要求在专业建设中,必须优化课程体系,深化教学改革,规范教学过程,严格质量管理,进而促进专业内涵式发展和提高人才培养质量。
“面向产出”是工程教育认证的一个核心理念,充分体现“以学生为中心”,即教学实施过程必须围绕学习效果来进行,强调以学生的信息反馈为主线索的“反向设计、持续改进”闭环教学设计理念,设置合适的课程实践能力培养路线,有计划、有步骤地引导学生进行课程实践,促进教学的持续改进,提高学生的获得感[3]。
软件工程课程作为软件工程专业本科学生的必修课程,“软件工程”在国内外都是大学计算机科学教育体系中的核心课程之一,它包括的概念多且较抽象,理论性强且难理解,实践性高且难掌握,因此,秉承工程教育的理念,应对课程的教学目标、教学内容、教学方法、考核方式等方面进行改革。
2. 软件工程教学目前存在的不足
在解决复杂工程问题能力培养的总路线中,软件工程是其中重要的组成部分,目前软件工程课程的教学存在以下问题。
1) 学生掌握课程内容存在一定困难。学生普遍没有大型软件和项目的开发实践经验,没有机会遇到实际的困难,因此对于软件工程中介绍的理论、方法和工具,常常感觉难以深入理解,学过以后容易忘记。
2) 过程性评价有待加强。学生在课程实践中最大的困扰是错误无法被及时指出,等到教师阶段性评审的时候,问题已经不小,涉及改动面很大,严重地打击了学生的开发积极性,阻碍了学生在实践探索中的深入思考,学生的学习体验和学习效果都无法达到预期效果,进而影响了学生整体的创造性。此外,阶段性任务考核要求往往比较宽泛,导致小组内出现“滥竽充数”的现象,教师也难以及时发现这部分组员的能力训练实际上是不达标的。
3) 缺乏深层团队分工合作。在实际教学中,存在分工任务细化程度不够、学生参与度不均匀、无法激励全部成员积极参与等问题,阻碍了复杂工程问题解决能力培养的全覆盖。
4) 能力训练目标不明确。过去,软件工程课程对学生的训练多是以项目驱动,学生自行选题或教师给定题目,学生在课时内分阶段地提交项目相关文档,教师分阶段地评审学生的“产品”,最后结合“产品”的运行效果,教师给予学生期末成绩。学生只是按照教师的要求完成任务,然而,学生并不了解这个任务跟他的能力有何关系,自然很难发现自身欠缺的能力,也无法进行针对性的训练。
3. 以面向产出为引领合理确定课程教学目标对毕业要求的支撑关系
教学目标的制定是教育教学活动的出发点和基础。对于教师来说,制定合理的教学目标是教学工作的重要组成部分,根据学科教学内容和学生发展需要确定并明确表达的在一定教育过程中应完成的学习任务。培养目标和毕业要求既是专业认证的关键成果,更是学校、专业培养人才的工作指南——明确“培养什么人”的问题。一方面,培养目标和毕业要求要符合认证标准,另一方面,围绕培养目标和毕业要求建立课程体系,以及直接面向教学实践的课程内容、教学方法、考核方式要切实保证培养目标和毕业要求的实现——明确“怎么培养人”的问题。
通过对2021级软件工程专业1~4班在校生、毕业生及用人单位的调研,充分吸收多方意见的基础上,修订专业培养目标和毕业要求,软件工程课程目标对毕业要求的支撑关系见表1。
Table 1. The supporting relationship between software engineering course objectives and graduation requirements
表1. 软件工程课程目标对毕业要求的支撑关系
毕业要求 |
毕业要求指标点 |
课程目标 |
课程目标权重 |
毕业要求2 问题分析:能够应用数学、自然科学和工程科学的基本原理,识别、表达、并通过文献研究分析复杂工程问题,以获得有效结论。 |
指标点2.1 能应用数学、软件工程及专业知识,理解软件工程生命周期的各个阶段,识别和判断软件工程生命周期中的关键环节和核心问题,并对问题进行定义和表述。 |
课程目标1 理解软件工程的重要性,熟悉软件生存周期及各个阶段的任务。 |
0.1 |
毕业要求7 环境和可持续发展:能够理解和评价针对复杂工程问题的专业工程实践对环境、社会可持续发展的
影响。 |
指标点7.3 能评价软件生命周期中可能对社会和环境造成的影响。 |
课程目标2 具备对软件开发的可行性分析
能力。 |
0.1 |
毕业要求6 工程与社会:能够基于工程相关背景知识进行合理分析,评价专业工程实践和复杂工程问题解决方案对社会、健康、安全、法律以及文化的影响,并理解应承担的责任。 |
指标点6.2 能分析、评价应用型复杂软件系统的解决方案和工程实践对社会、法律、安全、健康与文化的影响,能理解应承担的责任。 |
课程目标3 具备融合多学科知识,应用面向对象方法和结构化分析方法,应用各种需求分析工具进行软件需求分析,编写规范的软件需求规格说明书的能力。 |
0.3 |
毕业要求3 设计/开发解决方案:能够设计针对复杂工程问题的解决方案,设计满足特定需求的系统、单元(部件)或工艺流程,并能够在设计环节中体现创新意识,考虑社会、健康、安全、法律、文化以及环境等因素。 |
指标点3.1 了解软件生命周期,具备系统级的认知和实践能力,掌握软件工程开发模型,了解影响设计目标和技术方案的各种因素。 |
课程目标4 具备应用面向对象设计方法和结构化设计方法设计数据库、软件架构和软件模块的能力,在项目设计中,能学习和应用新的技术、框架进行创新设计,并能应用各种设计工具进行软件设计和文档写作。 |
0.3 |
毕业要求11 项目管理:理解并掌握工程管理原理与经济决策方法,并能在多学科环境中应用。 |
指标点11.3 能在多学科环境下,在软件工程实践的过程中,运用工程管理与成本预算方法。 |
课程目标5 具备扎实的软件工程基础知识,熟悉软件生命周期的各个环节和相关文档规范,能应用软件工程生命周期模型对软件工程项目进行有效的管理。 |
0.2 |
4. 构建学生为主体的全过程多样化课程考核体系
课程考核以检验课程目标的达成情况为手段,进而评价学生学习成果的达成情况。考核环节包括平时考核、实验考核和期末考核等,总评成绩以百分计,满分100分,各考核环节所占分值比例及考核细则如下。
平时考核,20%,主要考核学生平时课堂知识学习的情况,包括学生课堂提问、作业考核等成绩。平时考核项目全部利用超星平台来开展,对应课程目标1~5,重点考核学生在教学过程中是否能跟上教学进度,是否能够理解和掌握软件工程的每一个过程。平时作业1、平时作业5是提交实验报告。平时作业2、3、4是随堂测试,每次共有10题,10分钟左右完成,系统自动评分,能及时让学生查漏补缺。平时考核与教学目标对应关系见表2。
Table 2. Corresponding relationship between regular assessment and teaching objectives
表2. 平时考核与教学目标对应关系
作业内容 |
教学目标 |
目标1 |
目标2 |
目标3 |
目标4 |
目标5 |
平时作业1:业务流程图的画法 |
√ |
|
|
|
|
平时作业2:可行性分析及研发策划 |
|
√ |
|
|
|
平时作业3:面向对象开发方法 |
|
|
|
√ |
|
平时作业4:软件需求分析 |
|
|
√ |
|
|
平时作业5:软件项目的风险管理 |
|
|
|
|
√ |
实验考核,30%,根据每个实验的实验情况和实验报告质量评分。根据课程实验要求,本实验为开放实验,根据兴趣和爱好确定课题,选定开发项目,通过7个实验项目体现出项目开发计划、客户调研与需求分析、软件设计、项目开发、项目测试、项目发布与维护,能对软件项目进行合理规范的管理。实验考核与教学目标对应关系见表3。
Table 3. Correspondence between experimental assessment and teaching objectives
表3. 实验考核与教学目标对应关系
实验内容 |
教学目标 |
目标1 |
目标2 |
目标3 |
目标4 |
目标5 |
实验一 软件开发团队与选题 |
√ |
|
|
|
|
实验二 软件可行性分析 |
|
√ |
|
|
|
实验三 Rational Rose应用 |
|
|
|
√ |
|
实验四 需求分析及文档 |
|
|
√ |
|
|
实验五 软件设计及文档 |
|
|
|
√ |
|
实验六 软件测试与调试应用 |
|
|
|
√ |
|
实验七 软件项目管理应用 |
|
|
|
|
√ |
期末考核,50%,采用分组协作的方式完成综合项目,以5~7人为一小组协作完成自选项目的分析、设计、实现、测试及相应文档的编写。要求项目有一定实际意义,功能相对完整,界面简洁,用户友好,可顺利运行。
其中,综合项目的考核内容及各部分成绩占比如下:
1) 项目文档,40%,含软件开发计划、需求分析、系统分析、系统设计、测试结果分析、开发总结等内容。
2) 组内互评,20%,期末每人对组内其他成员的工作量、协作与沟通能力的评价。
3) 过程跟踪,20%,包含项目进度安排及推进情况,组内任务分配及完成,组内协作与沟通情况。
4) 答辩情况,20%,主要考查学生对项目内容掌握的熟悉程度。
综合项目各考核项成绩比例及具体评价标准如表4所示。
Table 4. Assessment criteria for comprehensive projects in software engineering courses
表4. 软件工程课程综合项目考核标准
评价项目 |
成绩 |
优秀 (≥90分) |
良好 (80~90) |
中等 (70~80) |
及格 (60~70) |
不及格 (<60) |
项目文档 (40%) |
文档结构严谨,逻辑性强,内容完整;文字表述准确流畅;文档格式和图表使用规范、符合要求;能反映出对复杂软件工程问题的分析和解决过程,具有一定的创新型设计。 |
文档结构较为合理,内容比较完整;文字表述准确;文档格式较规范;图表使用较为规范、符合要求;对复杂软件工程问题的分析和解决方案合理可行。 |
文档结构合理,内容基本完整;文字表达流畅;文档格式基本规范;图表使用基本规范、符合要求;对复杂软件工程问题的分析和解决方案基本可行。 |
文档结构合理,完成了文档中的主要内容;文档格式和图表使用基本符合要求。 |
未提交;或文档内容缺失较多;未使用规定文档模板,文档格式完全不符合要求。 |
组内互评 (20%) |
按规定模板完成,组内其他成员均认可该成员工作量充实,沟通顺畅。 |
多数组内成员认可该成员工作量较足,协作能力较好 |
多数组内成员认可该成员工作量一般,协作能力一般 |
多数组内成员认可该成员工作量基本满足,基本可沟通 |
组内成员多数不认可该成员工作量和协作能力。 |
过程跟踪 (20%) |
进度安排合理可行,任务分配明确,任务基本按进度完成。 |
进度安排较为合理可行,任务分配较为明确,任务基本能够按进度完成。 |
进度安排基本合理可行,任务分配基本明确,任务基本可以按进度完成。 |
进度安排基本合理可行,任务分配不够明确,任务勉强完成。 |
进度安排合理不够可行,任务分工不明确,任务未能按进度完成。 |
答辩情况 (20%) |
能够非常准确地回答老师关于实验的问题,表述十分清晰、逻辑性非常强,对实验方法理解深刻。 |
能够准确地回答老师关于实验的问题,表述清晰、逻辑性强,对实验方法理解正确。 |
能够比较准确地回答老师关于实验的问题,表述比较清晰、逻辑性比较强,对实验方法理解正确。 |
能够回答老师关于实验的问题,表述不够清晰、逻辑性不够强,对实验方法理解正确。 |
不能够回答老师关于实验的问题,对实验方法理解不正确。 |
《软件工程》课程涉及5个课程教学目标,以能力递进为训练原则,从易到难、从单一问题到复杂问题、从个人到团队的进阶方式,安排了平时作业、实验作业和综合大项目作业。通过一系列的课程作业及训练,达到对学生解决复杂工程问题能力的培养。
5. 过程性产出的课程目标达成度分析及持续改进
5.1. 学生整体课程目标达成情况
2021级软件工程专业1、2、3、4班学生整体课程目标达成评价的柱状图如图1所示,课程目标1、2、3、4、5达成值分别为0.925、0.912、0.944、0.919、0.918,本课程目标达成阈值为0.6,课程目标全部达成,其中课程目标1、3、4、5达成水平较高。
Figure 1. Achievement of “Software Engineering” course objectives for students in classes 1~4 of the 2021 software engineering major
图1. 2021级软件工程专业1~4班学生“软件工程”课程目标达成度
课程目标1:达成度0.925,反映出学生能够理解软件工程的重要性,熟悉软件生存周期及各个阶段的任务。该目标达成度相对理想。学生能够掌握常用的软件开发模型(模式),做好软件开发准备及选题,熟悉相应的软件开发环境,完成软件立项建议书。学生提交的文档由于经验的欠缺在内容上仍然存在一些问题,后续可适当提供指导。
课程目标2:达成度0.912,反映出学生能够根据所选的软件项目,对该项目进行可行性分析,写出可行性分析报告,制定初步的软件开发计划,具备对软件开发的可行性分析能力。为保证理想的教学效果,教师提供了相关科研项目的可行性分析报告,最大限度地帮助学生掌握课程核心知识点,解决实操中遇到的难题,并注意为不同水平的学生提供相应水平的指导。
课程目标3:达成度0.944,反映出学生能够融合多学科知识,应用面向对象方法和结构化分析方法,应用各种需求分析工具进行软件需求分析,具备编写规范的软件需求规格说明书的能力。该目标达成度相对理想,符合预期,也说明当前目标设置下本课程实验实践教学的有效性。未来可以适当加大实验和实践难度,尝试持续改进。
课程目标4:达成度0.919,反映出学生能够积极主动适应软件行业的快速发展趋势,较好应用面向对象设计方法设计数据库、软件架构和软件模块,在项目设计中,能学习和应用新的技术、框架进行创新设计,并能应用各种工具进行软件设计、实施、测试和文档写作。该目标达成度较课程目标3略有下降,教学实践过程中学生的注意力、精力相对前期略有下降,需要老师多关心学生的变化,及时进行提醒,引领着学生的思维和注意力。
课程目标5:达成度0.918,反映出学生能够较好理解软件项目管理的特点、过程和内容,熟悉软件项目过程管理各阶段的任务和技术方法,掌握软件项目管理的常用工具、文档及应用。因软件研发项目的实际情况具体,学生在对照风险检查表进行自查、追踪研发项目中所发生的问题的能力需要加强,才能更好地对风险事项进行汇总。
5.2. 学生个体课程目标达成情况
通过对2021级软件工程专业1、2、3、4班114名学生的教学数据分析,在经过2023~2024学年第一学期的能力训练,由学生个体课程目标达成情况散点图2~6可知,学生个人的各个目标整体达成度均较好,其中课程目标2达成情况稍差,达成度在0.8以上的人数为112人,占比约为98%,有1人未达成,占比约1%。课程目标3的达成情况较为理想,达成度在0.8以上的人数为113人,占比约为99%,有1人未达成,占比约1%。课程目标1、4、5的达成情况与预期基本一致,课程目标1、课程目标4和课程目标5的未达成人数均为1人,占比约为1%,达成度在0.8以上的人数为113人,占比约为99%。
Figure 2. Scatter plot of achievement degree for Goal 1
图2. 目标1达成度散点图
Figure 3. Scatter plot of achievement degree for Goal 2
图3. 目标2达成度散点图
Figure 4. Scatter plot of achievement degree for Goal 3
图4. 目标3达成度散点图
Figure 5. Scatter plot of achievement degree for Goal 4
图5. 目标4达成度散点图
Figure 6. Scatter plot of achievement degree for Goal 5
图6. 目标5达成度散点图
5.3. 坚持课程持续改进,形成质量自觉
持续改进机制是质量保障“评价–反馈–改进”得以闭环运行的前提,是将质量意识、质量标准、质量评价、质量管理等落实到教育教学各环节,将教育思想、管理制度、教学行为、条件保障等不同层次质量文化统一起来的基本途径。
1) 持续更新教学内容。由于软件开发技术更迭频繁,未来的教学过程中仍应持续更新教学内容,避免教授过时的技术,并根据本校学情设计并提供更为详尽的、多元化的实操指导,并引导学生利用开发文档提升学生能力。
2) 完善辅助教学资源。丰富题库,完成在线课程建设,完善教材和实验教材内容,为教学过程和考核过程提供有力支撑。
3) 持续轻技术重能力。保持弱化对于技术细节的讲授与考核,继续强调学生对于复杂工程问题的分析、设计和解决能力的培养,侧重学生学习能力和创新能力的培养和提升。
4) 改进考核评价模式。丰富考试类型,在小组学习讨论、实践时,全方位多维度评价学生学习过程和结果,提升学生利用协作平台解决复杂工程问题的意识以及团体意识和工程意识。
5) 相关课程的综合应用。在课堂、实验等多个教学环节中增加对实际软件工程的分析和实现的比重,引导学生利用文献检索、软件工程等其他相关课程所学交叉融合地应用在本课程中。
6) 利用榜样力量。为部分优秀的小组和组长提供展示风采的机会和平台,进一步认可学生的学习能动性及组织管理能力,刺激其他同学进行效仿,从而提高学习积极性和主动性。
6. 结语
经过2021级软件工程专业本科学生的课程教学改革实践,结果表明改革效果良好,有益于提高学生的抽象能力、逻辑思维能力、归纳能力、团队协作能力等,对于培养学生的软件综合素质,提高学生的软件开发能力和软件项目管理能力具有重要的意义。教学改革是一个系统工程,还需继续探索,深刻理解OBE理念,持续改进和实践,发挥软件工程课程在培养应用型人才中的作用,满足计算机人才市场需求。
基金项目
成都大学计算机学院2023年微课程项目(SmartIT_G076)。