论文部分内容阅读
[摘 要]学科竞赛是促进人才培养的重要手段之一,为了更好地指导和参加应用软件开发类学科竞赛,在指导和备赛过程中引入了Scrum敏捷开发方法,即在参赛项目的启动阶段、实施阶段和结束阶段融合Scrum方法进行角色划分、系统分解、任务估算、进度管理、过程跟踪和控制等,取得了良好的效果。实践应用效果表明,Scrum的应用有助于提高项目开发效率和项目质量,全面提升了参赛学生的实践开发能力和工程素养。
[关键词]学科竞赛;Scrum;敏捷开发方法;工程素质
[中图分类号] G64 [文献标识码] A [文章编号] 2095-3437(2019)05-0079-04
学科竞赛是培养大学生创新能力和工程素质的重要手段,也是用人单位选拔人才的重要依据之一[1],特别是对于计算机等工科专业的大学生而言,参加各项学科竞赛可以提升学生的工程实践能力、工程创新能力和综合素质,促进专业建设和教育教学改革。
2017年12月14日,中国高等教育学会“高校竞赛评估与管理体系研究”专家工作组在杭州预发布《中国高校创新人才培养暨学科竞赛评估结果》,指出学科竞赛的参赛水平和参赛成绩已成为检验和评估高校综合实力和创新人才培养效果的一项重要指标,在后续的竞赛评估中,还将考虑学科竞赛拓展、延伸的内容,包括高校学科竞赛类教学成果奖、学科竞赛类教学改革论文等[2]。各高校均在积极借助各项学科竞赛活动来提升人才培养质量,对现有的人才培养模式进行改革和创新,促进学科和专业的建设与发展。
目前,为了提高学生的创新能力和实践能力,针对计算机相关专业学生,教育部及相关部委联合国内外知名IT企业主办了一系列应用软件开发类学科竞赛。为了更好地指导和准备这些学科竞赛,我们引入了当前在软件项目开发中广泛使用的Scrum敏捷软件开发过程,以便构建更加科学、规范的指导和备赛体系,在提高软件开发效率的同时提升软件作品的质量。
一、Scrum概述
Scrum是管理软件项目的一个轻量级的敏捷软件方法[3],它简单、易用、灵活,但是又具有高度的纪律性,非常适用于周期不长、规模不大、团队成员不太多的项目的开发,而很多应用软件开发类学科竞赛所要求的参赛作品均属于此类型项目。
在Scrum中,将软件项目开发过程划分成多个迭代周期,每个周期称为一个冲刺(Sprint),通常一个周期为2~4周,即10~20个工作日,不允许随意修改一个冲刺的起始时间和工作范围。在每个冲刺阶段,开发团队通过完成一系列开发任务产生一个可以交付的软件版本,每一个开发任务称之为一个订单项,一个冲刺阶段中包含的所有订单项构成了一个冲刺订单(Sprint Backlog),冲刺订单是一个冲刺阶段所完成任务清单。所有的冲刺订单构成了整个项目的产品订单(Product Backlog),产品订单是整个项目的概要文档,它包含将要开发的系统或者产品的需求清单,这些需求已确定优先级,包括功能需求、非功能需求和其他约束条件,产品订单又称为用户故事。冲刺订单是产品订单的子集,包含每一个冲刺所包含的需求信息,又称为迭代任务清单。
在Scrum中包含Scrum团队、客户、管理层等角色,其中Scrum团队是整个Scrum的核心,包含产品负责人(Product Owner)、Scrum教练(Scrum Master)、开发团队(Scrum Team)。产品负责人代表客户意愿,他们负责收集与产品相关的所有信息,并且编写用户故事,列出优先级,并放入产品订单中;Scrum教练是整个团队的导师和组织者,负责提高团队的开发效率,找出有问题的订单项,并且去除那些影响团队交付冲刺目标的障碍;开发团队负责产品的研发工作,通常是一个由10名以下开发人员组成的小团队,组员选择自己的任务,而非别人强制加以分配,团队中的角色不分等级,分工协作,共同实现项目目标。
在具体实施时,Scrum包含了一系列活动,包括冲刺计划会议、每日站立会议、评审会议和回顾会议。冲刺计划会议在每个冲刺开始时召开,主要是细化需求、分解任务和估算工作。每日站立会议是一个团队日常沟通的会议,每天早上召开,时间控制在15分钟以内,主要回答三个问题:昨天完成了哪些工作?今天将要做什么?遇到了哪些障碍?在召开站立会议后要更新燃尽图(Burndown Chart)。评审会议是在每个冲刺结束前演示所完成的工作并接受评价的会议。回顾会议是在冲刺结束后召开的周期性自我持续改进的会议,主要用于总结工作中的经验和教训,以便更好地开展下一个冲刺阶段的工作。这些活动构成了一个完整的冲刺,通过若干个冲刺最终完成项目的全部开发工作。
作为一种敏捷开发方法,Scrum遵循敏捷软件开发宣言中的“可以工作的软件胜过面面俱到的文档”,文档少而精,包含冲刺订单、产品订单和燃尽图,其中燃尽图用于以图形化方式直观地显示当前冲刺尚未完成的任务或订单项的数目。为了更清晰地了解每个成员的工作完成情况,在Scrum中还引入了任务看板和计划纸牌等工作进行项目管理,其中任务看板采用可视化的方式跟踪任务完成情况,通过不同的泳道可以清晰了解每一项工作的进度,及时发现工作进度中存在的一些问题;计划纸牌用于对工作量进行估算,可以估算产品订单中订单项的规模和冲刺订单中任务所需完成时间。
Scrum因其简单易用,在现代软件项目开发中得以广泛应用,很多知名企业在软件开发过程中也运用了Scrum开发过程,实践经验表明Scrum可以有效地提高项目开发效率,降低项目开发风险。同时,一些高校也将Scrum方法引入软件工程实践教学[4-5]、软件开发实训[6-7]等教学环节中,取得了良好的教学效果。
二、基于Scrum的学科竞赛指导和备赛
目前很多计算机类学科竞赛非常注重企业的参与,强调学以致用,部分应用软件开发类竞赛直接引入企业的真实项目,由企业命题,学生再按照企业所给出的项目需求和技术要求完成项目开发任务,通过评估最终成果的完成程度、专业水平、创新性和工程化来对作品进行打分。这些竞赛的赛题来源于企业,企业也非常希望参赛团队能够按照真实的企业开发流程来進行开发工作,中国大学生服务外包创新创业大赛(主办单位:教育部、商务部和无锡市人民政府)、“中国软件杯”大学生软件设计大赛(主办单位:工业和信息化部、教育部、江苏省人民政府)、中国大学生计算机设计大赛(软件服务外包)(主办单位:中国高等教育学会、教育部四个计算机和软件专业教指委)等国家级竞赛都属于此类赛事。因此,为了构建一套科学合理的参赛体系,我们在指导和备赛的过程中引入了Scrum敏捷软件开发过程。 (一)项目启动阶段
在项目启动阶段,根据Scrum方法对团队成员进行分工,考虑到学生参赛团队的特殊性,学生没有企业真实开发经验,专业技术水平和经验方面都有所欠缺,因此教师在其中既扮演客户和公司管理层的角色,又扮演Scrum教练的角色,指导参赛团队按照Scrum的流程开展项目开发工作并且及时解决学生在开发过程中遇到的一些问题和阻碍。同时,由一名综合素质较高、团队组织和协调能力较强的学生担任产品负责人(Product Owner),主要负责与教师讨论需求,细化需求,确定产品订单中的需求列表,该学生同时也可以担任参赛团队的队长。其他学生担任开发团队成员,大家分工合作,承担项目的开发工作。为了让学生更好地准备学科竞赛,学校提供了备赛专用机房,参赛团队每天在机房集中备赛。
在项目启动阶段,指导教师和学生一起讨论项目需求,将待开发系统的功能分为三类,分别为核心功能、扩展功能和创新功能。核心功能和扩展功能通常是赛题中明确提出需要实现的功能,由产品负责人负责列出需求清单并和Scrum教练以及开发团队成员一起确定需求的优先级,通常核心功能的优先级最高,对应的需求订单项一般位于靠前的冲刺,扩展功能的优先级较低,可放入相对靠后的冲刺阶段。创新功能是项目的特色和亮点,需要整个Scrum团队中的各个成员一起去挖掘,创新功能也是由企业命题的软件开发类竞赛中评委打分的一个重要依据,会有多个参赛团队选择同一赛题,因此创新和创意是一个重要的评价指标,也是作品能够胜出的关键。为此,对于一个应用软件开发者而言,需要在项目启动和实施阶段从功能、技术等角度探寻创新点,在基本功能和扩展功能的基础上实现一些合理的、实用的创新功能。
(二)项目实施阶段
在项目实施阶段,首先在Scrum教练的指导下,根据项目本身的规模和难度,将整个项目的开发过程划分为若干个冲刺,为了更好地指导和跟踪参赛团队的项目完成进度,一个冲刺通常为5~10天,即1~2个星期。对于每个冲刺而言,参照Scrum方法的要求,确定好每一个冲刺的起始时间和需要完成的冲刺订单项,编制每一个冲刺的团队日历,召开计划会议、每日站立会议、评审会议和回顾会议。
在每一次冲刺计划会议中,指导教师和参赛学生从产品订单中选择若干需求构成本次冲刺的冲刺订单,对冲刺订单中的订单项进行分解和细化并估算。产品负责人按照优先级的顺序,挑选产品订单中优先级相对较高的订单项任务放入本次冲刺订单中,并与Scrum开发团队一起将任务分解成小的功能模块,团队成员详细讨论如何按需求完成这些功能模块,估计完成每个功能模块所需的大概时间。在冲刺任务确定后,团队成员自行挑选和认领工作任务,在认领时可以综合考虑任务的难度、工作量的平衡等因素,作为一个具备自我组织和自我管理能力的Scrum团队而言,大家会以团队利益和目标为重挑选任务,能力较强的学生选取一些难度稍大的任务。
在日常项目开发工作中,引入了计划纸牌和看板等工具进行项目管理,团队成员使用计划纸牌估算任务所需工作量,如果两名学生的估算结果有较大差距,双方需要陈述估算的理由和依据,直到估算结果相近为止。使用看板可以让指导教师和参赛团队成员更好地了解项目的进展情况,将看板划分为“To Do”“Doing”和“Done”等泳道,并且用不同颜色的不干胶标签纸表示不同成员的任务,提供了任务进度的可视化管理。如图1所示,参赛团队在备赛过程中使用任务看板跟踪项目进度。
在备赛过程中,Scrum团队每天早上都召开站立会议,团队成员逐个回答“昨天做了什么”“今天要做什么”以及“遇到了哪些困难”这三个问题,由产品负责人记录和整理这些问题的答案,并将遇到的困难及时反馈给指导教师。每天的站立会议结束后需要更新燃尽图,如图2所示,可以使用燃尽图直观地展示在一个冲刺阶段中工作任务的完成情况。
在每一个冲刺结束时,参照Scrum方法的流程召开评审会议和回顾会议。评审会议主要是对冲刺阶段的工作成果进行演示和汇报,在Scrum中要求每一个冲刺阶段都产生一个可以交付的版本,评审会议主要由产品负责人介绍新版本的技术架构和实现功能等,详细介绍较上一个版本新增功能,所有团队成员均需要参加评审会议并及时提出意见和建议。在评审会议之后需要召开回顾会议,团队成员及时总结在本冲刺阶段中的经验和教训,以便在下一个冲刺阶段改进。
通过引入Scrum开发方法,参赛团队能够明确工作目标和人员分工,及时发现在项目开发中遇到的问题并和指导教师一起讨论解决方案,极大提高项目开发效率,降低项目风险。
(三)项目结束阶段
在项目结束阶段,首先会按照赛事要求整理和完善相关文档,包括需求文档、设计文档、测试文档、用户操作手册等,依据Scrum方法的要求,在项目结束后召开项目总结会议,逐一检查产品订单中各个产品项的完成情况,记录在开发过程中遇到的问题和解决方法。对于大部分应用软件开发类竞赛而言,需要录制项目的演示视频,一旦进入决赛则需要进行项目答辩和现场演示。团队需制作好项目答辩PPT并进行多轮彩排和预演,项目演示视频突出项目的核心功能、特色和创新点,并邀请企业相关专家和往届获奖师生进行点评。根据以往的经验,正式答辩前团队内部至少组织三轮以上的项目现场演示和预答辩。通常评委们从功能、性能、创新点、技术解决方案等方面准备至少20个以上的问题,团队成员可以分工准备这些问题的答案并预演。一系列预答辩可为正式项目答辩做好充分的准备。
在项目结束时,指導教师和参赛团队将对产品负责人和团队成员的工作进行评估,发现本次参赛过程中存在的一些问题和待改进之处,为今后更好地开发软件项目和参赛积累经验。赛后,无论比赛成绩如何,指导教师都应要求所有参赛学生总结本次参赛的收获和体会,既要有团队总结,也要有个人总结,这些总结将形成文字材料,不断积累,不断优化,有助于后续更好地参加相关学科竞赛工作和从事软件项目的研发工作。 三、实施效果
近年来,湖南中医药大学有超过200名学生参加中国大学生服务外包创新创业大赛、“中国软件杯”大学生软件设计大赛和中国大学生计算机设计大赛(软件服务外包)等应用软件开发类学科竞赛,在指导和备赛过程中采用了Scrum敏捷开发方法,取得了良好的成绩。近四年我校累计获得省部级三等奖及以上40项,其中国家级一等奖3项,2016年曹幼仪等同学在第七届中国大学生服务外包创新创业大赛中凭借“厂车管理系统”获得企业命题类全国一等奖,2017年姜怀琛等同学在第10届中国大学生计算机设计大赛软件服务外包全国总决赛中凭借“基于混合交通的最佳出行方案规划系统”获得一等奖,2018年毛振等同学在第九届中国大学生服务外包创新创业大赛中凭借“人工智能在企业培训中的应用项目”获得企业命题类全国一等奖。
下面以中国大学生服务外包创新创业大赛(简称“服创大赛”)为例加以详细说明,从2016年至2018年,湖南中医药大学信息科学与工程学院先后有100多名学生报名参赛,参赛人数及获奖人数如图3所示。2016年获国家级一等奖1项,三等奖1项;2017年获国家级二等奖2项,三等奖1项;2018年获国家级一等奖1项,二等奖1项,三等奖6项。
此外,基于学生参加软件开发类竞赛的优秀作品,以湖南中医药大学名义登记计算机软件著作权10多项,申报发明专利1项;通过对参赛作品进行深入的研究和拓展,学生发表相关科研论文3篇,成功申报湖南省大学生研究性学习和创新性实验计划项目2项,建设校级创新创业孵化基地2个。此外,2015~2017年均有优秀参赛学生保送至中南大学、湖南大学等知名高校攻读硕士研究生。参赛学生就业率高达100%,部分学生高薪就职于百度、腾讯等知名IT企业。学科竞赛对学生综合能力和素质提升效果显著,得到知名企业和兄弟院校的一致认可。
四、结语
学科竞赛在计算机类人才培养过程中发挥着非常重要的作用。实践应用效果表明,Scrum作为一种在软件公司广泛使用的敏捷开发方法,有效提高了项目开发效率和学生参与项目开发的积极性,学生可以將主要时间和精力放到项目的实现和创新上,一定程度上减轻了文档撰写的压力,同时采用迭代式的开发可以有效降低项目开发风险,指导教师可以及时了解项目的完成情况并根据实际情况对开发过程进行合理的优化和调整。通过学习和掌握Scrum,让学生更为真实地了解了企业一线开发模式,从而全面提升了学生的开发水平、工程素养和实践动手能力。
[ 参 考 文 献 ]
[1] 王晓勇,俞松坤.以学科竞赛引领创新人才培养[J].中国大学教学,2007(12):59-60.
[2] 陆国栋,陈临强,何钦铭,等.高校学科竞赛评估:思路、方法和探索[J].中国高教研究,2018(2):63-68.
[3] 张智海,周国祥.Scrum方法的研究与分析[J].合肥工业大学学报(自然科学版),2010(2):197-200.
[4] 林晓宇,钟一文,黄世国,等.基于Scrum敏捷方法的软件工程实践教学探索[J].电脑知识与技术,2011(19):4762-4763.
[5] 徐建军,董威,谭庆平,等.基于Scrum敏捷开发模型的软件工程实践课程探索[J].大学教育,2015(4):115-116.
[6] 邢如意.Scrum敏捷实践在软件实训教学中的应用[J].软件导刊,2014(4):199-201.
[7] 蒙焕念.软件开发实训教学中Scrum敏捷开发方法的应用研究[J].广西教育,2014(47):59-60.
[责任编辑:钟 岚]
[关键词]学科竞赛;Scrum;敏捷开发方法;工程素质
[中图分类号] G64 [文献标识码] A [文章编号] 2095-3437(2019)05-0079-04
学科竞赛是培养大学生创新能力和工程素质的重要手段,也是用人单位选拔人才的重要依据之一[1],特别是对于计算机等工科专业的大学生而言,参加各项学科竞赛可以提升学生的工程实践能力、工程创新能力和综合素质,促进专业建设和教育教学改革。
2017年12月14日,中国高等教育学会“高校竞赛评估与管理体系研究”专家工作组在杭州预发布《中国高校创新人才培养暨学科竞赛评估结果》,指出学科竞赛的参赛水平和参赛成绩已成为检验和评估高校综合实力和创新人才培养效果的一项重要指标,在后续的竞赛评估中,还将考虑学科竞赛拓展、延伸的内容,包括高校学科竞赛类教学成果奖、学科竞赛类教学改革论文等[2]。各高校均在积极借助各项学科竞赛活动来提升人才培养质量,对现有的人才培养模式进行改革和创新,促进学科和专业的建设与发展。
目前,为了提高学生的创新能力和实践能力,针对计算机相关专业学生,教育部及相关部委联合国内外知名IT企业主办了一系列应用软件开发类学科竞赛。为了更好地指导和准备这些学科竞赛,我们引入了当前在软件项目开发中广泛使用的Scrum敏捷软件开发过程,以便构建更加科学、规范的指导和备赛体系,在提高软件开发效率的同时提升软件作品的质量。
一、Scrum概述
Scrum是管理软件项目的一个轻量级的敏捷软件方法[3],它简单、易用、灵活,但是又具有高度的纪律性,非常适用于周期不长、规模不大、团队成员不太多的项目的开发,而很多应用软件开发类学科竞赛所要求的参赛作品均属于此类型项目。
在Scrum中,将软件项目开发过程划分成多个迭代周期,每个周期称为一个冲刺(Sprint),通常一个周期为2~4周,即10~20个工作日,不允许随意修改一个冲刺的起始时间和工作范围。在每个冲刺阶段,开发团队通过完成一系列开发任务产生一个可以交付的软件版本,每一个开发任务称之为一个订单项,一个冲刺阶段中包含的所有订单项构成了一个冲刺订单(Sprint Backlog),冲刺订单是一个冲刺阶段所完成任务清单。所有的冲刺订单构成了整个项目的产品订单(Product Backlog),产品订单是整个项目的概要文档,它包含将要开发的系统或者产品的需求清单,这些需求已确定优先级,包括功能需求、非功能需求和其他约束条件,产品订单又称为用户故事。冲刺订单是产品订单的子集,包含每一个冲刺所包含的需求信息,又称为迭代任务清单。
在Scrum中包含Scrum团队、客户、管理层等角色,其中Scrum团队是整个Scrum的核心,包含产品负责人(Product Owner)、Scrum教练(Scrum Master)、开发团队(Scrum Team)。产品负责人代表客户意愿,他们负责收集与产品相关的所有信息,并且编写用户故事,列出优先级,并放入产品订单中;Scrum教练是整个团队的导师和组织者,负责提高团队的开发效率,找出有问题的订单项,并且去除那些影响团队交付冲刺目标的障碍;开发团队负责产品的研发工作,通常是一个由10名以下开发人员组成的小团队,组员选择自己的任务,而非别人强制加以分配,团队中的角色不分等级,分工协作,共同实现项目目标。
在具体实施时,Scrum包含了一系列活动,包括冲刺计划会议、每日站立会议、评审会议和回顾会议。冲刺计划会议在每个冲刺开始时召开,主要是细化需求、分解任务和估算工作。每日站立会议是一个团队日常沟通的会议,每天早上召开,时间控制在15分钟以内,主要回答三个问题:昨天完成了哪些工作?今天将要做什么?遇到了哪些障碍?在召开站立会议后要更新燃尽图(Burndown Chart)。评审会议是在每个冲刺结束前演示所完成的工作并接受评价的会议。回顾会议是在冲刺结束后召开的周期性自我持续改进的会议,主要用于总结工作中的经验和教训,以便更好地开展下一个冲刺阶段的工作。这些活动构成了一个完整的冲刺,通过若干个冲刺最终完成项目的全部开发工作。
作为一种敏捷开发方法,Scrum遵循敏捷软件开发宣言中的“可以工作的软件胜过面面俱到的文档”,文档少而精,包含冲刺订单、产品订单和燃尽图,其中燃尽图用于以图形化方式直观地显示当前冲刺尚未完成的任务或订单项的数目。为了更清晰地了解每个成员的工作完成情况,在Scrum中还引入了任务看板和计划纸牌等工作进行项目管理,其中任务看板采用可视化的方式跟踪任务完成情况,通过不同的泳道可以清晰了解每一项工作的进度,及时发现工作进度中存在的一些问题;计划纸牌用于对工作量进行估算,可以估算产品订单中订单项的规模和冲刺订单中任务所需完成时间。
Scrum因其简单易用,在现代软件项目开发中得以广泛应用,很多知名企业在软件开发过程中也运用了Scrum开发过程,实践经验表明Scrum可以有效地提高项目开发效率,降低项目开发风险。同时,一些高校也将Scrum方法引入软件工程实践教学[4-5]、软件开发实训[6-7]等教学环节中,取得了良好的教学效果。
二、基于Scrum的学科竞赛指导和备赛
目前很多计算机类学科竞赛非常注重企业的参与,强调学以致用,部分应用软件开发类竞赛直接引入企业的真实项目,由企业命题,学生再按照企业所给出的项目需求和技术要求完成项目开发任务,通过评估最终成果的完成程度、专业水平、创新性和工程化来对作品进行打分。这些竞赛的赛题来源于企业,企业也非常希望参赛团队能够按照真实的企业开发流程来進行开发工作,中国大学生服务外包创新创业大赛(主办单位:教育部、商务部和无锡市人民政府)、“中国软件杯”大学生软件设计大赛(主办单位:工业和信息化部、教育部、江苏省人民政府)、中国大学生计算机设计大赛(软件服务外包)(主办单位:中国高等教育学会、教育部四个计算机和软件专业教指委)等国家级竞赛都属于此类赛事。因此,为了构建一套科学合理的参赛体系,我们在指导和备赛的过程中引入了Scrum敏捷软件开发过程。 (一)项目启动阶段
在项目启动阶段,根据Scrum方法对团队成员进行分工,考虑到学生参赛团队的特殊性,学生没有企业真实开发经验,专业技术水平和经验方面都有所欠缺,因此教师在其中既扮演客户和公司管理层的角色,又扮演Scrum教练的角色,指导参赛团队按照Scrum的流程开展项目开发工作并且及时解决学生在开发过程中遇到的一些问题和阻碍。同时,由一名综合素质较高、团队组织和协调能力较强的学生担任产品负责人(Product Owner),主要负责与教师讨论需求,细化需求,确定产品订单中的需求列表,该学生同时也可以担任参赛团队的队长。其他学生担任开发团队成员,大家分工合作,承担项目的开发工作。为了让学生更好地准备学科竞赛,学校提供了备赛专用机房,参赛团队每天在机房集中备赛。
在项目启动阶段,指导教师和学生一起讨论项目需求,将待开发系统的功能分为三类,分别为核心功能、扩展功能和创新功能。核心功能和扩展功能通常是赛题中明确提出需要实现的功能,由产品负责人负责列出需求清单并和Scrum教练以及开发团队成员一起确定需求的优先级,通常核心功能的优先级最高,对应的需求订单项一般位于靠前的冲刺,扩展功能的优先级较低,可放入相对靠后的冲刺阶段。创新功能是项目的特色和亮点,需要整个Scrum团队中的各个成员一起去挖掘,创新功能也是由企业命题的软件开发类竞赛中评委打分的一个重要依据,会有多个参赛团队选择同一赛题,因此创新和创意是一个重要的评价指标,也是作品能够胜出的关键。为此,对于一个应用软件开发者而言,需要在项目启动和实施阶段从功能、技术等角度探寻创新点,在基本功能和扩展功能的基础上实现一些合理的、实用的创新功能。
(二)项目实施阶段
在项目实施阶段,首先在Scrum教练的指导下,根据项目本身的规模和难度,将整个项目的开发过程划分为若干个冲刺,为了更好地指导和跟踪参赛团队的项目完成进度,一个冲刺通常为5~10天,即1~2个星期。对于每个冲刺而言,参照Scrum方法的要求,确定好每一个冲刺的起始时间和需要完成的冲刺订单项,编制每一个冲刺的团队日历,召开计划会议、每日站立会议、评审会议和回顾会议。
在每一次冲刺计划会议中,指导教师和参赛学生从产品订单中选择若干需求构成本次冲刺的冲刺订单,对冲刺订单中的订单项进行分解和细化并估算。产品负责人按照优先级的顺序,挑选产品订单中优先级相对较高的订单项任务放入本次冲刺订单中,并与Scrum开发团队一起将任务分解成小的功能模块,团队成员详细讨论如何按需求完成这些功能模块,估计完成每个功能模块所需的大概时间。在冲刺任务确定后,团队成员自行挑选和认领工作任务,在认领时可以综合考虑任务的难度、工作量的平衡等因素,作为一个具备自我组织和自我管理能力的Scrum团队而言,大家会以团队利益和目标为重挑选任务,能力较强的学生选取一些难度稍大的任务。
在日常项目开发工作中,引入了计划纸牌和看板等工具进行项目管理,团队成员使用计划纸牌估算任务所需工作量,如果两名学生的估算结果有较大差距,双方需要陈述估算的理由和依据,直到估算结果相近为止。使用看板可以让指导教师和参赛团队成员更好地了解项目的进展情况,将看板划分为“To Do”“Doing”和“Done”等泳道,并且用不同颜色的不干胶标签纸表示不同成员的任务,提供了任务进度的可视化管理。如图1所示,参赛团队在备赛过程中使用任务看板跟踪项目进度。
在备赛过程中,Scrum团队每天早上都召开站立会议,团队成员逐个回答“昨天做了什么”“今天要做什么”以及“遇到了哪些困难”这三个问题,由产品负责人记录和整理这些问题的答案,并将遇到的困难及时反馈给指导教师。每天的站立会议结束后需要更新燃尽图,如图2所示,可以使用燃尽图直观地展示在一个冲刺阶段中工作任务的完成情况。
在每一个冲刺结束时,参照Scrum方法的流程召开评审会议和回顾会议。评审会议主要是对冲刺阶段的工作成果进行演示和汇报,在Scrum中要求每一个冲刺阶段都产生一个可以交付的版本,评审会议主要由产品负责人介绍新版本的技术架构和实现功能等,详细介绍较上一个版本新增功能,所有团队成员均需要参加评审会议并及时提出意见和建议。在评审会议之后需要召开回顾会议,团队成员及时总结在本冲刺阶段中的经验和教训,以便在下一个冲刺阶段改进。
通过引入Scrum开发方法,参赛团队能够明确工作目标和人员分工,及时发现在项目开发中遇到的问题并和指导教师一起讨论解决方案,极大提高项目开发效率,降低项目风险。
(三)项目结束阶段
在项目结束阶段,首先会按照赛事要求整理和完善相关文档,包括需求文档、设计文档、测试文档、用户操作手册等,依据Scrum方法的要求,在项目结束后召开项目总结会议,逐一检查产品订单中各个产品项的完成情况,记录在开发过程中遇到的问题和解决方法。对于大部分应用软件开发类竞赛而言,需要录制项目的演示视频,一旦进入决赛则需要进行项目答辩和现场演示。团队需制作好项目答辩PPT并进行多轮彩排和预演,项目演示视频突出项目的核心功能、特色和创新点,并邀请企业相关专家和往届获奖师生进行点评。根据以往的经验,正式答辩前团队内部至少组织三轮以上的项目现场演示和预答辩。通常评委们从功能、性能、创新点、技术解决方案等方面准备至少20个以上的问题,团队成员可以分工准备这些问题的答案并预演。一系列预答辩可为正式项目答辩做好充分的准备。
在项目结束时,指導教师和参赛团队将对产品负责人和团队成员的工作进行评估,发现本次参赛过程中存在的一些问题和待改进之处,为今后更好地开发软件项目和参赛积累经验。赛后,无论比赛成绩如何,指导教师都应要求所有参赛学生总结本次参赛的收获和体会,既要有团队总结,也要有个人总结,这些总结将形成文字材料,不断积累,不断优化,有助于后续更好地参加相关学科竞赛工作和从事软件项目的研发工作。 三、实施效果
近年来,湖南中医药大学有超过200名学生参加中国大学生服务外包创新创业大赛、“中国软件杯”大学生软件设计大赛和中国大学生计算机设计大赛(软件服务外包)等应用软件开发类学科竞赛,在指导和备赛过程中采用了Scrum敏捷开发方法,取得了良好的成绩。近四年我校累计获得省部级三等奖及以上40项,其中国家级一等奖3项,2016年曹幼仪等同学在第七届中国大学生服务外包创新创业大赛中凭借“厂车管理系统”获得企业命题类全国一等奖,2017年姜怀琛等同学在第10届中国大学生计算机设计大赛软件服务外包全国总决赛中凭借“基于混合交通的最佳出行方案规划系统”获得一等奖,2018年毛振等同学在第九届中国大学生服务外包创新创业大赛中凭借“人工智能在企业培训中的应用项目”获得企业命题类全国一等奖。
下面以中国大学生服务外包创新创业大赛(简称“服创大赛”)为例加以详细说明,从2016年至2018年,湖南中医药大学信息科学与工程学院先后有100多名学生报名参赛,参赛人数及获奖人数如图3所示。2016年获国家级一等奖1项,三等奖1项;2017年获国家级二等奖2项,三等奖1项;2018年获国家级一等奖1项,二等奖1项,三等奖6项。
此外,基于学生参加软件开发类竞赛的优秀作品,以湖南中医药大学名义登记计算机软件著作权10多项,申报发明专利1项;通过对参赛作品进行深入的研究和拓展,学生发表相关科研论文3篇,成功申报湖南省大学生研究性学习和创新性实验计划项目2项,建设校级创新创业孵化基地2个。此外,2015~2017年均有优秀参赛学生保送至中南大学、湖南大学等知名高校攻读硕士研究生。参赛学生就业率高达100%,部分学生高薪就职于百度、腾讯等知名IT企业。学科竞赛对学生综合能力和素质提升效果显著,得到知名企业和兄弟院校的一致认可。
四、结语
学科竞赛在计算机类人才培养过程中发挥着非常重要的作用。实践应用效果表明,Scrum作为一种在软件公司广泛使用的敏捷开发方法,有效提高了项目开发效率和学生参与项目开发的积极性,学生可以將主要时间和精力放到项目的实现和创新上,一定程度上减轻了文档撰写的压力,同时采用迭代式的开发可以有效降低项目开发风险,指导教师可以及时了解项目的完成情况并根据实际情况对开发过程进行合理的优化和调整。通过学习和掌握Scrum,让学生更为真实地了解了企业一线开发模式,从而全面提升了学生的开发水平、工程素养和实践动手能力。
[ 参 考 文 献 ]
[1] 王晓勇,俞松坤.以学科竞赛引领创新人才培养[J].中国大学教学,2007(12):59-60.
[2] 陆国栋,陈临强,何钦铭,等.高校学科竞赛评估:思路、方法和探索[J].中国高教研究,2018(2):63-68.
[3] 张智海,周国祥.Scrum方法的研究与分析[J].合肥工业大学学报(自然科学版),2010(2):197-200.
[4] 林晓宇,钟一文,黄世国,等.基于Scrum敏捷方法的软件工程实践教学探索[J].电脑知识与技术,2011(19):4762-4763.
[5] 徐建军,董威,谭庆平,等.基于Scrum敏捷开发模型的软件工程实践课程探索[J].大学教育,2015(4):115-116.
[6] 邢如意.Scrum敏捷实践在软件实训教学中的应用[J].软件导刊,2014(4):199-201.
[7] 蒙焕念.软件开发实训教学中Scrum敏捷开发方法的应用研究[J].广西教育,2014(47):59-60.
[责任编辑:钟 岚]