基于Scrum敏捷方法的软件工程实践

摘要:将基于Scrum的敏捷软件开发方法应用于软件工程课程的实践教学过程中,能够克服传统教学方法的一些缺陷。既让学生体验到软件工程实施的全过程,又增强了学生的项目管理能力和开发能力,达到了培养目标,取得了良好的收效。

关键词:敏捷软件开发;Scrum;软件工程;实践教学

软件工程课程是一门理论性和实践性都很强的学科,现在已经成为计算机科学与技术、软件工程等专业的核心课程。软件工程课程的主要内容包含软件工程过程、软件工程方法与软件工程工具等三个方面。课程的教学旨在培养学生的软件工程素质,使其具备一定软件项目管理能力、软件设计能力和项目实施能力等。一方面,这门课程的大部分内容是前人经验性的总结,对于软件工程的实施有着重要的指导作用;另一方面,几乎没有工程项目经验的学生反而感觉概念烦多,内容枯燥,不太容易理解。因此,绝大多数的高校都开设了相应的实践课程,力求让学生通过实际动手加深对课程内容的理解。

软件工程实践课程教学方式主要分为二类,一类是课程实验[1-2],另一类是课程实训或课程设计[3-5]。课程实验学时少,时间分散,只能简单地练习一些软件工具。因而,有条件的高校都将开设学时长、时间集中并且能够实施较大项目案例的课程实训作为实践教学方式。为了更好地提高教学质量,一线教师们探索出了导师制[6]、软件维护导向法[7]和多Agent方法[8]等多种实训教学方法。在课程实训教学过程中,一般指导学生按照瀑布开发模型从可行性分析开始,按照需求分析、概要设计、详细设计、编码阶段的顺序直到测试阶段结束。采用经典的瀑布开发模型虽然可以让学生体验到软件工程实施的每个阶段,但是也存在着一些缺陷。首先,在瀑布开发模型中,下一个阶段的实施严重依赖于上一个阶段的成果。而学生由于缺乏项目经验,在各个阶段都会产生错误的规划或设计,而这种错误要等到后期才能发现,进而要不断地返工,影响学生的积极性。其次,由于没有客户角色,需求分析基本都是虚拟的,凭空想像居多。第三,瀑布模型产生过多的文档,极大地增加了工作量,影响项目的进度,学生在有限的时间内很难完成完整的项目,缺陷过多。第四,学生小组内部分工不均匀,过度依赖于少数优秀学生的工作。因而,在软件工程实训教学过程,需要一种能够提高开发效率,适合小团队的并能够充分调动学生内在积极性的教学方法。我们尝试将基于敏捷开发理念的Scrum方法应用于软件工程实践教学中,取得了良好的教学效果。

1.  Scrum方法分析

1.1敏捷软件开发方法

敏捷软件开发方法是以人为本,轻文档重产品的一类软件开发方法,与传统瀑布开发模型相比,属于轻量级模型。敏捷软件开发方法强调个体和交互胜过过程和工具;可以工作的软件胜过面面俱到的文档;与客户合作胜过正式谈判;响应变化胜过遵循计划。敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。

从年敏捷联盟成立至今,业界已经形成了多种敏捷方法。比较知名的有极限编程(ExtremeProgrammming,XP)、Scrum、特性驱动开发(FeatureDrivenDevelopment,FDD)等[9]。在国内外,越来越多的实际项目采用了敏捷开发方法并取得了成功。

1.2Scrum流程

Scrum方法是一种迭代式增量软件敏捷开发过程,每个迭代周期称为Sprint,开发团队会在此期间内完成所承诺的一组任务清单(Backlog)。Scrum方法的流程如图1所示。Sprint计划会议、每日Scrum会议、Sprint评审会议和Sprint回顾会议构成了Scrum方法的检查和调整环节。

1.2.1制定项目计划和产品清单

和传统的开发方法类似,Scrum方法需要在前期制定项目计划。但是在Scrum方法中,开发小组需要讨论产生一份产品的Backlog,并且按优先级进行排序。Backlog还需要对任务的工作量进行估算。项目实施期间,产品Backlog实际上就是一个待开发项目业务和技术特性的动态列表。

1.2.2Sprint计划会议

每个Sprint周期从计划会议开始,由产品负责人、ScrumMaster(类似于项目经理)和团队成员参加。计划会议确定产品的哪些Backlog将要在本次Spring迭代中实现。确定Backlog之后,需要将产品Backlog细化为SprintBacklog。团队的成员根据自己的兴趣领走工作量相当的任务,剩余的由ScrumMaster进行协调。

1.2.3每日Scrum会议

Scrum的每日会议由所有团队成员参加,会议被限制很短的时间之内,每次会议参会者必须站立讨论,所以也称为站立会议。会议内容很精简,每个团队成员只需要解释和回答三个问题:今天你完成了那些工作?明天你打算做什么?完成你的目标存在哪些什么障碍?每日会议的时间不宜过长。

1.2.4Sprint评审会议

在每个Sprint评审会议中,团队向产品负责人及其他感兴趣的涉众展示本次迭代中所完成的工作,并进一步确定下一步的工作内容。

1.2.5Sprint回顾会议

在新一次的Sprint迭代开始之前,ScrumMaster要组织团队召开Sprint回顾会议,作为开发过程自我调整与改进的一次机会。

2.Scrum方法在软件工程实践教学中的应用

2.1角色分配

参与到Scrum方法过程的角色主要有三种:产品负责人、ScrumMaster和开发团队。产品负责人代表客户的意愿,负责收集来自所有系统涉众的需求,确定这些需求的优先级。ScrumMaster相当于项目负责人,但是这种角色并非团队的领导,保护团队在每个Sprint执行期间不受外界干扰。团队指所有其他直接参与到项目实施过程的项目组成员,是一个具备设计、开发和测试等混合技能的项目团队。

在软件工程实训开始之前,首先让学生自由组队,每个团队的人数限制在5-6人之间,并推荐一个具备一定管理能力的学生作为ScrumMaster。产品负责人由教师担任,人数比较多的班级可邀请助教、研究生或高年级的学长参与。他们作为客户代表对产品提出任何需求的权利。

2.2实施过程

我们为参加软件工程实训的学生专门建立了一个实训机房。实训室中,用档板将不同的小组隔开,每个小组配备一台服务器和六台PC机。

在实训正式开始之后,教师参与到每个小组的前期项目计划,并确定产品的Backlog,让学生对产品的任务、工作量以及优先级有明确的认识。一个Sprint的周期可以根据学生的实训时长灵活设定,但是要保证所有小组都遵循同样的Sprint开发周期,一般对于为期6周的实训,可将每7天定为一个Sprint周期。

在接下来的Sprint计划会议上。产品负责人、ScrumMaster和开发团队全部参加。教师逐个解释每个Backlog的优先级,由团队挑选出能在这个Sprint周期内完成的Backlog,并将Backlog分解为任务列表,并对每个任务估算工作量。开发小组的学生们可根据自己的兴趣和专长认领相关的任务。

每日Scrum会议必须在每个工作日的同一时间和地点进行。教师不参与,但是可以旁听。由于是站立会议,所以学生可以分散到实训室的各个角落甚至室外进行,避免受到干扰。

在日常工作中,所有的学生都有任务在身,并且在一个Sprint周期结束之后的评审会议上必须展示成果,所以学生都不得不为自己所领的那份任务而努力工作。在每日工作结束之前,必须对项目中所有签入的代码进行一次集成和回归测试。这种自我管理的方式大大提高了效率,实际上是一种无需惩罚却可起到督促作用的方法,一部分比较懒散的学生在团队其它成员努力工作面前也不得不完成自己的那份工作。

2.3考核

课程设计或课程实训的考核难点在于难以对学生的工作进行定量,可能引起不公。以往的软件工程课程设计一般注重文档的形成,教师通过查阅学生文档来了解学生的工作量。这种考核方法可能引起本末倒置,没有完成产品的小组却可能获得较高的分数。而在基于Scrum方法的软件工程课程实训过程,教师全程参与了学生的各个Sprint周期,获得每个学生的Backlog。所以很轻易地掌握每个学生的工作量。

3.结束语

将一种敏捷软件开发方法的典型代表——Scrum方法应用于软件工程课程的实践教学过程中,能够克服传统教学方法的一些缺陷。首先,避免了设计不周导致频繁返工的情况导致项目流产的可能,Scrum方法分为小的Sprint开发周期,每个周期内可进行设计、开发和测试工作。学生如果在一个Sprint周期内发现了设计上的缺陷可随时修改,重新设计实现并测试。实际上提高了项目的成品率。其次,担任产品负责人的教师作为客户代表对项目提出实际的需求和指导。第三,将文档压缩到够用即可的情况,避免产生过多的文档,增加学生不必要的负担。第四,由于教师掌握到每位学生的工作量,所以可以更公平地考核学生。第五,自我管理的敏捷方式能够激发学生动力,鞭策懒散的学生。我们经过探索试验,发现将Scrum敏捷方法用于软件工程实践即让学生体验到软件工程实施的全过程,又增强了学生的项目管理能力和开发能力,达到了培养目标,取得了良好的收效。

参考文献:

[1]任传成,吕文志,潘东静.软件工程实验课程的教学研究与实践[J].福建电脑,(7):.

[2]彭鑫,赵文耘,钱乐秋.软件工程实验教学研究与实践[J].计算机教育,(20):15-17.

[3]周荣辉.软件工程实践教学的实践[J].计算机教育,(11):-.

[4]张宇宏,王军.软件工程导论实践教学探讨[J].计算机教育,(17):-.

[5]汪斌.软件工程实践教学改革研究[J].福建电脑,(3):-.

[6]孙旋.基于项目-导师制的软件工程实践教学模式探索[J].河南教育,(6):65-66.

[7]彭鑫,赵文耘,钱乐秋.以软件维护为导向的软件工程实践教学[J].计算机教育,(20):22-24.

[8]张琳.基于多Agent的软件工程实践教学模型研究[J].北京邮电大学学报(社会科学版),,11(2):97-.

[9]桑大勇,王瑛,吴丽华.敏捷软件开发方法与实践[M].西安:西安电子科技大学出版社,:8.

作者:林晓宇,钟一文,黄世国,王李进(福建农林大学计算机与信息学院,福建福州)

(本文年发布于《电脑知识与技术》)

                







































甘露聚糖肽副作用
儿童白癜风的治疗



转载请注明:http://www.zjiaren.com/kfff/11431.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了