基于Scrum敏捷方法的软件工程实践教学探索

时间:2022-10-18 09:12:29

基于Scrum敏捷方法的软件工程实践教学探索

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

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

中图分类号:G642文献标识码:A文章编号:1009-3044(2011)19-4762-02

The Exploration of Practical Teaching on Software Engineering Course Based on Scrum Agile Method

LIN Xiao-yu, ZHONG Yi-wen, HUANG Shi-guo, WANG Li-jin

(College of Computer and Information Science, Fujian Agriculture and Forestry University, Fuzhou 350002, China)

Abstract: Scrum-based agile software development method used in the practical teaching of software engineering course, which can overcome some shortcomings of traditional teaching methods. That allow students to experience the whole process of the implementation of software engineering, but also enhance the ability of students to project management and development capability to meet the training goal, and achieved good effects.

Key words: agile software development; Scrum; software engineering; practical teaching

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

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

1 Scrum方法分析

1.1 敏捷软件开发方法

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

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

1.2 Scrum流程

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

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

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

1.2.2 Sprint计划会议

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

1.2.3 每日Scrum会议

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

1.2.4 Sprint评审会议

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

1.2.5 Sprint回顾会议

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

上一篇:探析地理信息系统在城市规划的应用 下一篇:小型高速混合制粒机测控系统的软件设计