谈谈我理解的敏捷开发

“敏捷开发” 几乎成了互联网家户喻晓的一个热门话题。每一个人都在聊敏捷、Scrum、XP。程序员

我对“敏捷”的认识还算是在一个正在探索的阶段。网上有很是多的资料,五花八门,对于初学者来讲无形之中会设了不少的坎。恰好借此机会写个文章帮助本身进行知识的梳理和总结,另一方面也但愿对刚接触的人有所帮助。编程

敏捷开发” 知多少?服务器

敏捷开发(Agile Development)是一种以人为核心、迭代、按部就班的开发方式。网络

它并非一门技术,而是一种开发方式,也就是一种软件开发的流程。它会指导咱们用规定的环节去一步一步完成项目的开发。由于它采用的是迭代式开发,因此这种开发方式的主要驱动核心是人。单元测试

那为何说人才是主要的驱动核心了?咱们学过瀑布开发模型,它是以文档做为驱动,开发人员都是根据产品部门提供的需求文档进行开发的,一切的核心是文档,因此说文档是这个模型中的一个核心。而敏捷开发的意义在于它只关注文档中的重要点,或者尽量的去简化文档,敏捷开发其实更注重的是人与人之间的沟通、交流。因此它强调以人为核心。测试

迭代:迭代是指把一个复杂且开发周期很长的开发任务,分解为不少小周期可完成的任务,这样的一个周期就是一次迭代的过程;同时每一次迭代均可以生产或开发出一个能够交付的软件产品。

Scrum 和 XP spa

Scrum: 英文意思是橄榄球运动的一个专业术语,表示“争球”的动做;把一个开发流程的名字取名为Scrum,我想你必定能想象出你的开发团队在开发一个项目时,
你们像打橄榄球同样迅速、富有战斗激情、人人你争我抢地完成它,你必定会感到很是兴奋的。而Scrum就是这样的一个开发流程,运用该流程,你就能看到你团队高效的工做。
XP:极限编程(Extreme Programming)。可参考:http://blog.csdn.net/fw0124/article/details/48713959

文章开头谈敏捷的时候更注重的是概念性的,并无谈到实际敏捷开发的实际应用情景。这里开始之因此聊 Scrum 和 XP,由于这就是敏捷开发的具体方式了。在实际开发中,你能够采用 Scrum 方式也能够采用 XP 方式。.net

Scrum 和 XP 的区别是,Scrum 偏重于过程,XP 则偏重于实践,可是实际中,二者是结合一块儿应用的。3d

Scrum开发流程中你会常常听到三个项目角色,好比 PO \ SM \ ST ,对于一个刚接触敏捷开发的初学者来讲,听到这种简称心里仍是极为崩溃的,我当初也是感同身受。这里顺便简单的补充下关于这三个角色的一个简介code

产品负责人(Product Owner):主要负责肯定产品的功能和达到要求的标准,指定软件的发布日期和交付的内容,同时有权力接受或拒绝开发团队的工做成果。
流程管理员(Scrum Master):主要负责整个Scrum流程在项目中的顺利实施和进行,以及清除挡在客户和开发工做之间的沟通障碍,使得客户能够直接驱动开发。
开发团队(Scrum Team):主要负责软件产品在Scrum规定流程下进行开发工做,人数控制在5~10人左右,每一个成员可能负责不一样的技术方面,但要求每成员必需要有很强的自我管理能力,同时具备必定的表达能力;成员能够采用任何工做方式,只要能达到Sprint的目标。

Scrum 的流程图:(如下图片来自网络)

读到这里,我想你对敏捷开发应该有了一个初步的认识了。接着咱们继续聊下敏捷开发的具体开发流程。

在此以前,咱们先来谈个在敏捷开发中最长听到的单词 “Sprint” 。谈到这个词,以往我第一次听到的时候私下去查了,各类各样的解释,真是十脸懵逼。借着此次机会也给你们简单的解释下。

请看如下小段落:

Sprint:是短距离赛跑的意思,这里面指的是一次迭代,而一次迭代的周期是1个月时间(即4个星期),也就是咱们要把一次迭代的开发内容以最快的速度完成它,这个过程咱们称它为 Sprint

那么最后咱们来细聊下如何进行 Scrum 的开发。

1.首先咱们须要确认一个 PB ( Product Backlog , 即按优先顺序排列的一个产品需求列表) ,这是由 PO(Product Owner) 负责的

2.ST(Scrum Team) 会根据 PB 列表,进行工做量的预估和安排

3.有了 PB 列表,咱们须要经过 Sprint Planning Meeting( Sprint 计划会议)来从中挑选出一个 Story 做为本次迭代完成的目标,这个目标的时间周期是1~4个星期,而后把这个Story进行细化,造成一个Sprint Backlog

4.Sprint Backlog 是由 ST 去完成的,每一个成员根据Sprint Backlog再细化成更小的任务(细到每一个任务的工做量在2天内能完成)

5.在Scrum Team完成计划会议上选出的Sprint Backlog过程当中,须要进行 Daily Scrum Meeting(每日站立会议),每次会议控制在15分钟左右,每一个人都必须发言,而且要向全部成员当面汇报你昨天完成了什么,而且向全部成员承诺你今天要完成什么,同时遇到不能解决的问题也能够提出,每一个人回答完成后,要走到黑板前更新本身的 Sprint burn down(Sprint燃尽图)

6.作到每日集成,也就是天天都要有一个能够成功编译、而且能够演示的版本;不少人可能尚未用过自动化的每日集成,其实TFS就有这个功能,它能够支持每次有成员进行签入操做的时候,在服务器上自动获取最新版本,而后在服务器中编译,若是经过则立刻再执行单元测试代码,若是也所有经过,则将该版本发布,这时一次正式的签入操做才保存到TFS中,中间有任何失败,都会用邮件通知项目管理人员

7.当一个Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,这时,咱们要进行 Srpint Review Meeting(演示会议),也称为评审会议,产品负责人和客户都要参加(最好本公司老板也参加),每个Scrum Team的成员都要向他们演示本身完成的软件产品(这个会议很是重要,必定不能取消)

8.最后就是 Sprint Retrospective Meeting(回顾会议),也称为总结会议,以轮流发言方式进行,每一个人都要发言,总结并讨论改进的地方,放入下一轮Sprint的产品需求中

下面是运用 Scrum 开发流程中的一些场景图:

每日站立会议,参会人员能够随意姿式站立,任务看板要保证让每一个人看到,当每一个人发言完后,要走到任务版前更新本身的燃尽图

(任务看版包含 未完成、正在作、已完成 的工做状态,假设你今天把一个未完成的工做已经完成,那么你要把小卡片从未完成区域贴到已完成区域。每一个人的工做进度和完成状况都是公开的,若是有一我的的工做任务在某一个位置放了好几天,你们都能发现他的工做进度出现了什么问题(成员人数最好是5~7个,这样每人可使用一种专用颜色的标签纸,一眼就能够从任务版看出谁的工做进度快,谁的工做进度慢)

 

(计划纸牌,它的做用是防止项目在开发过程当中,被某些人所领导。

怎么用的呢?好比A程序员开发一个功能,须要5个小时,B程序员认为只须要半小时,那他们各自取相应的牌,藏在手中,最后摊牌,若是时间差距很大,那么A和B就能够讨论A为何要5个小时)

相关文章
相关标签/搜索