为了不落后他人于是我也开始学习Scrum今天主要是对我最近阅读的相关资料根据自己的理解用自己的话来讲述Scrum中的各个环节主要目的有两个一个是进行知识的总结另外一个是觉得网上很多学习资料的讲述方式让初学者不太容易理解所以我决定写一篇扫盲性的博文同时试着也与园内的朋友一起分享交流一下希望对初学者有帮助。什么是敏捷开发敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。怎么理解呢首先我们要理解它不是一门技术它是一种开发方法也就是一种软件开发的流程它会指导我们用规定的环节去一步一步完成项目的开发而这种开发方式的主要驱动核心是人它采用的是迭代式开发为什么说是以人为核心我们大部分人都学过瀑布开发模型它是以文档为驱动的为什么呢因为在瀑布的整个开发过程中要写大量的文档把需求文档写出来后开发人员都是根据文档进行开发的一切以文档为依据而敏捷开发它只写有必要的文档或尽量少写文档敏捷开发注重的是人与人之间面对面的交流所以它强调以人为核心。什么是迭代迭代是指把一个复杂且开发周期很长的开发任务分解为很多小周期可完成的任务这样的一个周期就是一次迭代的过程同时每一次迭代都可以生产或开发出一个可以交付的软件产品。关于Scrum和XP前面说了敏捷它是一种指导思想或开发方式但是它没有明确告诉我们到底采用什么样的流程进行开发而Scrum和XP就是敏捷开发的具体方式了你可以采用Scrum方式也可以采用XP方式Scrum和XP的区别是Scrum偏重于过程XP则偏重于实践但是实际中两者是结合一起应用的这里我主要讲Scrum。什么是ScrumScrum的英文意思是橄榄球运动的一个专业术语表示“争球”的动作把一个开发流程的名字取名为Scrum我想你一定能想象出你的开发团队在开发一个项目时大家像打橄榄球一样迅速、富有战斗激情、人人你争我抢地完成它你一定会感到非常兴奋的。而Scrum就是这样的一个开发流程运用该流程你就能看到你团队高效的工作。【Scrum开发流程中的三大角色】产品负责人Product Owner主要负责确定产品的功能和达到要求的标准指定软件的发布日期和交付的内容同时有权力接受或拒绝开发团队的工作成果。流程管理员Scrum Master主要负责整个Scrum流程在项目中的顺利实施和进行以及清除挡在客户和开发工作之间的沟通障碍使得客户可以直接驱动开发。开发团队Scrum Team主要负责软件产品在Scrum规定流程下进行开发工作人数控制在5~10人左右每个成员可能负责不同的技术方面但要求每成员必须要有很强的自我管理能力同时具有一定的表达能力成员可以采用任何工作方式只要能达到Sprint的目标。Scrum流程图//------------------------下面我们开始讲具体实施流程但是在讲之前我还要对一个英文单词进行讲解。什么是SprintSprint是短距离赛跑的意思这里面指的是一次迭代而一次迭代的周期是1个月时间即4个星期也就是我们要把一次迭代的开发内容以最快的速度完成它这个过程我们称它为Sprint。如何进行Scrum开发1、我们首先需要确定一个Product Backlog按优先顺序排列的一个产品需求列表这个是由Product Owner 负责的2、Scrum Team根据Product Backlog列表做工作量的预估和安排3、有了Product Backlog列表我们需要通过 Sprint Planning MeetingSprint计划会议 来从中挑选出一个Story作为本次迭代完成的目标这个目标的时间周期是1~4个星期然后把这个Story进行细化形成一个Sprint Backlog4、Sprint Backlog是由Scrum Team去完成的每个成员根据Sprint Backlog再细化成更小的任务细到每个任务的工作量在2天内能完成5、在Scrum Team完成计划会议上选出的Sprint Backlog过程中需要进行 Daily Scrum Meeting每日站立会议每次会议控制在15分钟左右每个人都必须发言并且要向所有成员当面汇报你昨天完成了什么并且向所有成员承诺你今天要完成什么同时遇到不能解决的问题也可以提出每个人回答完成后要走到黑板前更新自己的 Sprint burn downSprint燃尽图6、做到每日集成也就是每天都要有一个可以成功编译、并且可以演示的版本很多人可能还没有用过自动化的每日集成其实TFS就有这个功能它可以支持每次有成员进行签入操作的时候在服务器上自动获取最新版本然后在服务器中编译如果通过则马上再执行单元测试代码如果也全部通过则将该版本发布这时一次正式的签入操作才保存到TFS中中间有任何失败都会用邮件通知项目管理人员7、当一个Story完成也就是Sprint Backlog被完成也就表示一次Sprint完成这时我们要进行 Srpint Review Meeting演示会议也称为评审会议产品负责人和客户都要参加最好本公司老板也参加每一个Scrum Team的成员都要向他们演示自己完成的软件产品这个会议非常重要一定不能取消8、最后就是 Sprint Retrospective Meeting回顾会议也称为总结会议以轮流发言方式进行每个人都要发言总结并讨论改进的地方放入下一轮Sprint的产品需求中下面是运用Scrum开发流程中的一些场景图上图是一个 Product Backlog 的示例。上图就是每日的站立会议了参会人员可以随意姿势站立任务看板要保证让每个人看到当每个人发言完后要走到任务版前更新自己的燃尽图。