时间:2024-05-04
迟殿委 殷晨 乔立龙
摘 要:文章针对高职院校软件编程实践类课程传统的项目驱动教学模式存在的问题,提出基于软件工程学科的生命周期模型理论为依据,能根据课程不同授课阶段的项目规模动态匹配软件开发模型,进而设计相应教学过程实施方案,体现“项目驱動教学、学生主导项目、贴近企业岗位实际需求”的理念。文章基于相同的理念分别设计了线下、线上两套教学方案,有利于形成线上教学、线下教学两个平行的教学体系,并可实现二者之间的无缝切换,为采用混合式教学提供实践参考,也对出现重大突发状况时线下、线上教学之间的无缝切换提供可行的解决方案。
关键词:教学模式;软件工程;项目驱动;线下线上;可切换
0 引言
高职软件编程实践类型的课程具备较强的实践性和应用性[1],以培养具备软件工程师素质的应用型人才为目标的。因此,以项目驱动的教学方法贯穿人才培养全过程就成了必然选择[2-3]。
目前,大部分高职院校的教学模式已经由传统讲授式转变为理论教学和实践教学的结合。部分高职院校已经采用项目驱动教学的模式。但综合国内目前的研究现状,其中部分研究提出了项目驱动教学总体思路,但没有具体的可实施的教学方案;有的研究虽然提供了具体教学过程方案,但没有考虑与软件开发实际流程相匹配。总之,只用项目案例的驱动,却不将软件项目本身具有软件工程学科的典型流程与教学过程结合起来,在培养企业需要的软件工程师方面就会存在一定偏差。
同时,教学过程方案的设计还需要考虑完全线上教学的情况,使其在类似“新型冠状病毒”疫情这样的突发情况下能够顺利切换到线上教学,突发状况解除后能够顺利过渡到线下教学,形成两个平行可切换的教学体系。
1 线下教学过程实施方案设计
高职软件编程类课程的线下教学一般包含两种不同阶段:日常课堂讲授阶段和综合实训阶段。以下基于这两个阶段采用的项目案例特点分别为这两个阶段设计与之对应的教学过程实施方案。
1.1 日常新知识讲授阶段的项目驱动教学过程设计方案
一般日常教学阶段都是使用贯穿项目来驱动某个章节或单元的教学进程。这种项目特点是规模不大,用项目的某个功能模块驱动新知识点的讲解,随着课程推进,项目不断完善直至全部完成。
课堂讲授节点对软件开发相关文档编写要求较少,对团队合作沟通、快速实现功能要求较高。符合这样特点的软件开发模型是“敏捷开发模型”。敏捷开发能在短时间内开发出可运行的系统[4],更加重视沟通能力和团队合作意识的培养。
根据敏捷开发模型的思想,设计的线下教学过程实施方案如图1所示。
具体实施步骤如下:
(1)小组划分。项目驱动教学模式需要首先进行项目分组,模拟企业项目开发团队构成。小组规模一般建议每组4~6人,在日常教学中分组的作用主要体现为协同学习、协同开发;而在阶段实训和综合实训中,作用则体现为团队开发、分工合作。
(2)项目效果演示和需求讲解。教师对即将要讲解的知识点对应的功能模块效果进行演示,对具体需求进行讲解,引入学生对如何实现这样的效果的思考。
(3)组内成员对功能需求进行整理,重点对实现思路进行充分讨论。敏捷开发思想强调人的主观能动性,有利于发现问题和提出建议。小组讨论后将待解决的问题记录下来,一般情况下这些问题与即将讲授的新知识点有很高的相关性。
(4)汇集各组问题形成知识点,教师开启讲授模式。教师汇集学生普遍存在的问题,开始讲解相关新知识点。
(5)项目小组开发实践阶段。
首先,项目组集体确定软件开发的基本编程规范和开发原则,基本保证不同组员开发的代码具备一致的编程风格。
然后,进入编程实践阶段。由于日常教学功能案例规模较小,考虑采用敏捷开发模型中的结对编程方法。即2个同学形成一对,在一台计算机上共同编写代码,解决同一个问题,这种方式在提高学生编程能力的同时也增强了团队合作意识。
(6)学生演示功能模块的实现效果,教师总结。教师对项目组实现的功能进行评价,主要从基本需求完成度、界面和编码规范、有无创新三个层级去评价。并对同学们普遍存在的问题进行重点讲解,起到总结课讲授阶段知识点的作用。
1.2 课程综合实训阶段的项目驱动教学过程设计方案
综合实训项目,一般选择规模和复杂度接近企业真实开发项目。项目特点是业务比较复杂,但需求相对稳定,软件开发每个环节都需要清晰的项目文档,符合这些特点的项目考虑采用软件工程中典型瀑布开发模型。
在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。
软件编程类课程线下综合实训阶段教学过程实施方案设计如图2所示。
具体的教学过程实施步骤阐述如下:
(1)项目小组划分。这里沿用日常教学阶段的小组划分,因其成员在日常教学中形成了较好的默契度,因而可以提高本阶段学生的开发效率和沟通效率。
(2)教师进行需求讲解或项目总体效果演示时,应尽量采取项目直观效果演示,并做概要性需求讲解,具体需求交给项目小组根据演示系统自行整理和挖掘。
(3)需求分析阶段。各小组开展需求讨论,形成需求说明文档提交给老师审查。教师根据需求是否覆盖了项目的所有功能模块、核心功能描述是否准确等方面来对小组需求文档进行评价,并给出指导建议,学生根据评价结果选择进行需求调整或直接进入设计阶段。
(4)项目总体设计阶段。项目小组讨论确定项目的技术框架、系统功能结构、功能用例设计、数据库设计、人员分工等。该阶段结束后教师根据设计文档对各组总体设计进行监控和评价,并给出指导意见,以促进项目小组进行调整。
(5)项目实际开发阶段。开发阶段包含编码、单元测试和集成测试。小组团队开发的过程中每个组员密切合作来推进项目的进行。教师在这个阶段主要起到辅助指导和各项目组整体进度监控的作用。
(6)学生项目演示、答辩,教师总结并做出评价。教师扮演企业验收项目的用户角色。主要从基本需求完成度、界面和编码规范、有无创新三个层级去评价。对基本需求都没有完成的小组教师应协助找出原因,并进行教学反思。
最后,老师总结项目中涉及的教学目标的知识点,针对大家普遍存在的不足再做重点讲解。
总之,综合实训阶段基于瀑布模型改造的教学过程中,在软件开发的每个环节都有教师的参与,但主要是监控和评价、辅助指导,学生则完全经历了完整的软件项目开发流程,有利于培养符合企业实际岗位需要的软件工程师。
2 线上教学过程实施方案设计
考虑到线下教学和线上教学之间具备可切换性,线上教学的设计理念保持与线下教学一致。这使得线上教学的教学实施流程上与线下教学基本一致。
但线上教学中的实践教学方面常面临很多问题[5-6]。比如计算机硬件配置达不到,项目团队合作开发不易实施,项目实训过程和结果无法得到老师及时有效的监控和评价等。所以需要对部分教学环节进行再设计,使其符合线上教学特点,这样就保证了线下教学和线上教学在教学流程上的一致性,同时也解决了线上实践教学过程中存在的实际问题。
针对软件编程类课程线上教学的特点和实际情况,线上教学采用“MOOC平台+实训平台”相结合的方式设计线上教学过程。
2.1 日常课堂讲授阶段项目驱动教学过程设计方案
在日常课堂讲授阶段采用与线下教学在该阶段基本一致的教学过程实施方案,采用敏捷开发模型思想设计教学实施过程,如图3所示。
与线下教学日常讲授阶段设计的教学过程相比,图3所示的设计在基本流程节点上保持稳定,但每个节点的具体实施上存在区别,具体步骤阐述如下:
(1)需求讲解和演示阶段,教师将演示和需求讲解内容录成视频并发布到职教云平台的课前阶段,学生观看视频。
(2)项目组学习课前需求,使用腾讯会议、QQ群视频等方式进行需求讨论,梳理功能模块的实现思路,将亟待解决的问题汇总做好记录,方便在讲授阶段向老师反馈。
(3)课中直播讲授阶段。该阶段教师通过在线直播方式进行,教师根据学生反馈的问题开启相关新知识模块讲解。
(4)小组团队开发阶段。小组采用企业比较流行的团队开发工具,如git,svn,cvs等开放源代码的版本控制系统。这样可以实现多人共同开发同一个项目,既可以实现项目代码版本的不断更新和项目进度的推进,开发阶段可以在企业提供的实训平台上完成,也可以使项目小组根据团队开发工具单独创建一个项目。
(5)教师监控小组作业并评价。每个小组提交项目作业到职教云平台,或者如果实训平台支持作业提交功能,也可以提交到实训平台。教师需根据线上项目作业完成情况给予评价和反馈。
(6)直播回顾和总结。评价结束后,教师需要通过开启直播,对在评价过程中反映出来的问题进行总结,并对整个项目涉及的“知识模块”做总体回顾。
2.2 综合实训阶段的项目驱动线上教学过程设计方案
在综合实训阶段采用与线下教学在该阶段基本一致的教学过程实施方案。瀑布开发模型设计教学过程,如图4所示。
图4所示的在线教学设计与线下教学综合实训阶段设计的教学过程流程基本一致,但具体环节的实施方法上存在区别:
(1)综合实训项目需求讲解。教师在该阶段通过在线直播或录课方式讲解综合实训项目的功能需求,最好给学生具体效果演示。直播需要录像,以供学生课后反复观看,讨论。
(2)需求讨论和文档形成阶段。各项目小组通过在线会议讨论项目需求,按照软件工程的需求文档规范编写需求文档。
(3)提交需求文档,教师评价和反馈。教师在职教云平台提前设置需求阶段作业,项目小组须在截止时间之前完成需求文档并提交作业,教师在线批阅,根据需求文档是否准确、完整覆盖了项目的核心功能,给出通过或返修的意见。如果评价通过,项目小组即刻进入项目总体设计阶段。否则,返回步骤(2),根据老师的评价意见组织在线讨论,并再次完善需求文档重新提交。
(4)项目总体设计讨论和文档形成阶段。各项目小组通过在线会议根据项目需求讨论项目的功能模块划分和关系,数据库模型设计和系统架构选择等,形成总体设计文档,即软件工程中的概要设计文档。
(5)提交设计文档,教师评价和反馈。教师在职教云平台提前设置设计阶段作业,项目小组须在截止时间之前完成设计文档并提交作业,教师在线批阅,根据设计文档是否准确、完整表达了需求,系统架构和技术选型是否合理,并给出通过或返修的意见。
(6)项目团队基于在线实训平台开发阶段。学生登录在线实训平台,在已经搭建好开发环境的虚拟机上进行开发,教师通过登录实训平台可以随时查看学生目前开发进度,可以及时进行监控,并在必要时穿插直播指导以保障项目的按时顺利进行。
(7)项目组基于项目的最新版本进行集成测试,并按照功能模块的初始需求进行测试验证,将出现问题的代码及时与对应模块的负责人沟通,讨论修改。集成测试完毕,项目组准备答辩材料,进入项目展示和教师评价阶段。
(8)直播答辩和教师评价阶段。通过在线直播共享屏幕方式,项目组演示项目的最终效果并答辩。教师从需求完成度、项目过程文档和代码规范、是否有创新三个层次对项目进行评价,并给出公正的评分。
(9)项目组针对教师提出的评价和建议进行完善,并进行项目拓展。
3 结语
本文基于软件开发周期模型和软件编程类课程不同授课节点的项目特点,分别为线上教学、线下教学设计了一套具体可行的教学实施方案。方案符合企业软件开发的典型流程,充分考虑到学生在实践教学中的主体地位,这有利于高职院校培养符合软件工程师素质的应用型人才。由于两套方案是基于相同的设计理念,只是实施方式不同。所以具备可切换性,这对类似“新型冠状病毒”疫情这样的突发状况导致的被迫线上教学提供参考方案,也对疫情前后线上、线下教学的顺畅过渡具有一定的参考价值。
[参考文献]
[1]石秦峰.基于OBE的程序设计类课程教學改革探索[J].计算机教育,2016(3):106-110.
[2]栾兰.应用型本科专业基于校企合作的项目驱动式教学模式研究[J].教育现代化,2018(46):34-35.
[3]杨绍兰,张新富.“兴趣主导、项目驱动式教学”推动应用型人才培养[J].高教学刊,2018(22):77-79.
[4]殷海明,魏远旺.本科院校软件工程教学模式探索[J].嘉兴学院学报,2013(3):133-136
[5]厉兰洁,廖雪花.基于SPOC的C语言程序设计课程教学改革研究[J].计算机教育,2016(1) :74-76.
[6]徐胜舟.以学科竞赛驱动程序设计类课程教学改革研究[J].软件导刊,2015(5):180-182.
(编辑 姚 鑫)
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!