软件开发实训教学中Scrum敏捷开发方法的应用

点赞:12290 浏览:48741 近期更新时间:2024-02-23 作者:网友分享原创网站原创

【摘 要】在软件开发实训教学中实施Scrum敏捷开发方法,比使用传统的“瀑布模型”更有利于学生实践能力的培养.具体实施办法为:组建开发团队,实行双教师教学,约定开发规范,精简开发流程,结对编程,以强带弱,相互促进,持续集成、交换测试.

【关 键 词】Scrum敏捷开发方法软件开发实训教学应用

【中图分类号】G【文献标识码】A

【文章编号】0450-9889(2014)12C-0059-03

一、问题的提出

1970年温斯顿罗伊斯在软件开发中提出了著名的“瀑布模型”.该模型将软件生命周期划分为制订计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本阶段,各阶段工作必须按次序自上而下开展,每个阶段要撰写大量文档,并对工作结果进行严格验证,只有上一阶段工作结束,才能开启下一阶段工作.这种开发模式应对上世纪60年代出现的软件危机问题,是一种很好的解决方案,成为了软件开发模型的经典.

当前,随着软件开发技术的进步,人们发现“瀑布模型”灵活性差,不适用于需求不明确的软件项目,很多软件企业已不再使用“瀑布模型”,但它作为软件开发模型的经典仍广泛应用在高校软件开发实训课堂中.实际上,应用“瀑布模型”进行教学的高校计算机软件开发相关专业学生毕业时的动手能力远远达不到企业的要求,这说明该教学方法和实训模式存在问题.为了提高学生实践能力,很多高校与计算机软件开发培训机构或企业进行联合办学,以弥补学校实训教学能力的不足.

二、“瀑布模型”实训教学存在的问题

应用“瀑布模型”进行的实训教学中主要存在如下问题:

首先,学生把握项目需求的能力差,难以达到“瀑布模型”对开发者的要求.“瀑布模型”适用于需求明确的项目,要求开发者具有很强的整体把握能力和前瞻性.但是对于初学开发的学生来说,需求再明确的项目,他们也不能很准确地把握细节,导致实训进程不能按计划正常开展,影响了实训效果.在实际教学中,虽然很多实训项目在以往的教材中有类似的解决方案,但是区别还是存在的,学生看不到软件在实际应用中可能出现的问题,到了项目开发后期才发现错误,导致实训项目失败.

其次,在“瀑布模型”开发的每一个阶段,都要求撰写细致准确的文档,这大大占用了学生的实训时间.据统计,如果严格按瀑布模型的要求来撰写文档,消耗的时间至少是整个实训时间的1/5.本来实训课堂留给学生实训的时间就不多,对一些效率低的学生来说,文档还没写完实训期就结束了,整个实训过程变成了纸上谈兵的演练.

最后,“瀑布模型”实训方式过时,学生不能学以致用,实训技能与企业要求脱节.当今的软件开发中,已经很难看见完全实施“瀑布模型”的企业,大家都已对“瀑布模型”进行了改进或者实施其他更先进的开发方法.教育部曾多次指出,高校教育应怎么写作地方和行业,密切与行业、企业合作,为企业提供人才培养和技术怎么写作支撑.这要求我们必须改革过时的实训模式,使教学与行业结合,与企业接轨.

三、Scrum敏捷开发方法概述

近年来,很多先进的软件开发模型在实际应用中得到了推广,这里要特别提出的是敏捷开发.著名IT组织VersionOne在2013年进行的敏捷现状调查结果显示,在全世界收集的3501份调查报告中,使用敏捷开发方法的占88%,其中使用Scrum敏捷开发方法或Scrum变种开发方法的占73%.这个调查数据充分说明了敏捷开发方法在行业中的主导地位.

敏捷开发(Agiledevelopment)是一种以人为核心、迭代、循序渐进的开发方法,它把项目分割分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征.敏捷开发方法包括Scrum、Crystal和极限编程(XP)等,是一组开发方法的总称.它也是软件开发的一个过程管理框架,遵循了敏捷开发的主要价值观:个人与交互重于开发过程与工具,可用的软件重于面面俱到的文档,与客户的合作重于对合同的谈判,响应变化胜过遵循计划.

Scrum敏捷开发过程是迭代的增量开发,整个开发过程由若干个短周期的迭代组成,每一个迭代周期称为Sprint(冲刺),每个迭代实现不同的特性,迭代中重大的、优先级高或风险高的特性优先实现.Scrum敏捷开发方法重视软件的可用性,强调与客户的沟通,开发过程能够快速响应用户需求变更,尽早处理风险问题.

四、Scrum敏捷开发方法在软件开发实训教学中的优势

相对于“瀑布模型”,Scrum敏捷开发方法具有更多适合软件开发实训教学的优势,主要表现在如下方面:

第一,能够快速响应需求变更.与实际开发相似,学生的实训项目都是在重复多次的修正需求、修改设计后才交付实现的.Scrum敏捷开发方法中的Sprint都很小,即使需求变更很大,也可以在短时间内修改设计完成开发.而“瀑布模型”希望需求是稳定的,但不变只是愿望,变化才是永恒.如果在软件设计后期提出需求变更,那会是一种灾难.这种影响小则使实训进度不可控,重则导致实训项目失败.

第二,Scrum敏捷开发方法要求尽早编码,尽快开发出系统原型,尽早使客户见到可运行的软件,暴露项目的技术风险,从而提出优化意见.这恰好迎合了学生开发实训时急切渴望进行编程实现的心理,激发了学生学习的积极性.而“瀑布模型”要迟实现,要尽可能把需求分析透彻,设计完整,完成文档编写后才能进行编码实现.这个过程对急切渴望编程的学生无疑是一种打击.

第三,Scrum敏捷开发方法不要求文档面面俱到,更注重于软件可用性设计.在敏捷开发中,很多文档只是一个草图,大部分文档在集成测试阶段产生,而且只写有必要的文档.所以实训团队不需要安排专人撰写完备的开发文档,从而使学生有时间专注于开发实训工作.第四,Scrum敏捷开发方法能更全面地培养学生的软件开发技能.在Scrum项目中,每个开发成员主动认领开发任务,开发过程涉及的设计、编码和单元测试全部是个人独立完成,实际上一个人承担了传统开发模式中系统架构师、程序员、测试员和产品构建经理等角色工作.这种实训方式有助于提升学生软件开发的单兵作战能力,从而快速适应企业软件开发工作的各个环节.

五、Scrum敏捷开发方法在软件开发实训教学中的实施

综上所述,在软件开发实训教学中使用Scrum敏捷开发方法,可以更好地促进教学,提高学生实践能力,实现教学与行业结合,与企业接轨.具体实施方法如下:

软件开发实训教学中Scrum敏捷开发方法的应用参考属性评定
有关论文范文主题研究: 关于软件开发的论文范文检索 大学生适用: 学院论文、专科论文
相关参考文献下载数量: 40 写作解决问题: 写作技巧
毕业论文开题报告: 论文任务书、论文前言 职称论文适用: 技师论文、职称评副高
所属大学生专业类别: 写作技巧 论文题目推荐度: 免费选题

(一)组建开发团队,实行双教师教学

在实训中,可将教师和学生按Scrum敏捷团队角色分组,主要有以下三类角色:一是ProductOwner(产品负责人).该角色可安排熟悉产品需求的教师承担,负责产品需求的提炼、条目化和优先级排序.二是ScrumMaster(团队负责人).该角色可安排熟悉Scrum开发流程的教师承担,负责整个Scrum团队的协作运行,并协作解决非技术问题.三是Team团队成员.Team团队由Team小组长和3~5名小组成员组成.小组长由开发能力较强的学生担任,其他成员根据开发能力强弱穿插分配.每班学生可分为若干个Team团队,每个开发实训项目由一个或多个开发小组的学生在老师指导下完成开发任务.

在实训开发课堂中,之所以要实行双教师教学,一是开发团队角色需要,二是为了让教师能在实训过程中相互讨论,取长补短,弥补高校教师在实践经验上的不足,提高实训教学的整体质量.

(二)约定开发规范,精简开发流程

实训开始前,开发团队应约定统一的开发规范和流程,以便学生掌握团队开发方法,并养成良好的编码习惯.图1为经过精简的Scrum实训开发过程模型.

图1Scrum开发过程模型

图1是Scrum开发的一个迭代周期.其中,ProductBacklog为软件产品总的需求条目,这些需求多以用户故事(Userstory)的形式展现,ProductOwned负责维护,SprintBacklog是ProductBacklog的一部分,通过计划会议(PlanningMeeting)讨论选定,是需要在当前迭代(Sprint)中完成的需求条目,圆环为迭发(Sprint)的过程,一般周期为2~4周,迭代过程包含分析―设计―实现―测试等工作.迭发过程中,Team成员每天进行15分钟的站立会议(Dailymeeting),主要汇报昨天做了什么、今天要做什么和遇到了什么问题.Scrummaster每天负责绘制任务燃尽图(BurnDownChart),以曲线展现当前Sprint任务的剩余量,这对团队开发有很大的鼓舞作用.每一次迭发完成后,教师要组织Team团队成员召开评审会议(ReviewMeeting),发布一个可执行的软件版本(Release),并让相关人员和团队成员提出优化意见.


(三)结对编程,以强带弱,相互促进

学生的学习能力和实践能力是强弱不一的.在实训过程中,教师的指导作用固然重要,但师生间的沟通往往没有学生间的沟通那么自如.因此,可以安排一个能力强的学生与一个能力弱的学生结对编程,充分发挥先进学生的带头作用,让后进学生有机会学习别人优秀的学习方法和实践经验,互相监督,互相促进,最终实现实训目标.

(四)持续集成,交换测试

在我们的实训中,并没有设立专门的软件测试小组,开发团队只是对软件进行了简单的单元测试.如果整个项目都要等到软件开发后期才进行集成测试,项目失败的风险就会很高.Scrum要求团队开发要尽可能频繁地进行集成测试,也就是持续集成.持续集成可以尽可能快地发现集成错误,通常每个成员每天至少集成一次,也可能进行多次集成.每次集成都通过自动化的构建(包括编译、发布、自动化测试)来验证,减少开发团队进行集成测试的时间消耗.实践基础好的团队可尝试实施测试驱动开发(TDD),即先编写测试代码,后编写功能代码,用测试代码驱动功能开发,这可以降低自动化测试的出错率,提高软件运行质量.如要进行人工测试,可安排各个开发团队进行交换测试,因为他人测试比自己测试更容易发现软件存在的错误.(下转第87页)(上接第60页)

总之,Scrum敏捷开发方法是一种新兴的软件开发方法,很多实践方法和理论还在不断地研究中.实训教学终究是以传授技能为主,不需要拘泥于Scrum开发的全部形式,教师可对Scrum开发方法进行修剪和优化,从而更好地实现教学目标.自2013年起,柳州师范高等专科学校在软件开发实训教学中实施Scrum敏捷开发方法,现已成功开发了教学质量监控系统、科研工作管理系统两个真实项目,用户对软件的满意度很高,实训教学取得了良好的效果,但相关管理制度和实训措施还需要进一步探索和优化.

【参考文献】

[1]VersionOneInc.8thAnnualStateofAgile[R].VersionOneInc,2013

[2]MikeCohn.Scrum敏捷软件开发[M].北京:清华大学出版社,2010

[3]FrederickP.Brooks,Jr.人月神话[M].北京:清华大学出版社,2007

[4]陈国栋,罗省贤.Scrum敏捷软件开发方法实践中的改进和应用[J].计算机技术与发展,2011(12)

[5]HenrikKniberg.ScrumandXPfromtheTrenches[M].MediaInc,2007

[6]商惠华.计划驱动下敏捷开发过程的软件质量管理[J].汕头大学学报(自然科学版),2011(4)

【基金项目】广西高等教育教学改革工程项目(2013JGB301)

【作者简介】蒙焕念(1981-),男,广西宾阳人,柳州师范高等专科学校教务处系统分析师(高级工程师),硕士,研究方向:软件工程、教育信息化.

(责编王一)