谈谈我理解的敏捷开发

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

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

敏捷开发” 知多少?

敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方式。

它并不是一门技术,而是一种开发方式,也就是一种软件开发的流程。它会指导我们用规定的环节去一步一步完成项目的开发。因为它采用的是迭代式开发,所以这种开发方式的主要驱动核心是人。

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

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

Scrum 和 XP

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

文章开头谈敏捷的时候更注重的是概念性的,并没有谈到实际敏捷开发的实际应用情景。这里开始之所以聊 Scrum 和 XP,因为这就是敏捷开发的具体方式了。在实际开发中,你可以采用 Scrum 方式也可以采用 XP 方式。

Scrum 和 XP 的区别是,Scrum 偏重于过程,XP 则偏重于实践,但是实际中,两者是结合一起应用的。

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

产品负责人(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个小时)

时间: 2024-10-26 23:13:30

谈谈我理解的敏捷开发的相关文章

谈谈我理解的敏捷开发--转载

"敏捷开发" 几乎成了互联网家户喻晓的一个热门话题.每个人都在聊敏捷.Scrum.XP. 我对"敏捷"的认识还算是在一个正在探索的阶段.网上有非常多的资料,五花八门,对于初学者来说无形之中会设了很多的坎.刚好借此机会写个文章帮助自己进行知识的梳理和总结,另外一方面也希望对刚接触的人有所帮助. "敏捷开发" 知多少? 敏捷开发(Agile Development)是一种以人为核心.迭代.循序渐进的开发方式. 它并不是一门技术,而是一种开发方式,也就

聊聊敏捷开发

从我个人入行短暂的经历来看,敏捷开发和瀑布开发两种软件开发流程是现在的WEB开发中提到的比较多的.工作中也有大牛们分享对两种开发流程的优缺点的比较分析,但我个人是没有经历过瀑布开发的,没有经历也就谈不上理解.下面就站在一个软件开发工程师的角度,谈谈我个人对敏捷开发的一些理解. 图1 对敏捷开发的理解 如上图所示,软件开发的一般流程可以认为是:需求分析.系统设计.系统研发.系统测试,最后也就是系统上线.敏捷开发之所以敏捷,我认为是对总体的项目进行了分解,项目并非一次完成目的,而是分解成了多期的小目

敏捷开发实战(三)--每日晨会,是否只是摆设?

经过上面总结的两篇博文敏捷开发实践(一)–谈谈我对敏捷开发的理解和敏捷开发实战(二)–你真的了解Scrum吗?,我们已经对Scrum进行了整体的认识和学习,这篇博文我们一起讨论和学习,我在实施敏捷的过程发现的一个问题. 问题描述 相信实施过敏捷开发的博友,每天会在同样的时间和同样的地点召开会议,此会议在Scrum五大活动中被称为每日Scrum会议. 有这样的一种现象,团队中的新成员刚开始接触Scrum时,积极性会特别高,在会议中会比较积极的发言,但是对于大部分经过长时间开发的老成员来说,经常会在

敏捷开发中的10大错误认识

敏捷开发中的10大错误认识 原文:http://www.computerweekly.com/opinion/The-top-10-myths-about-agile-development 作者:Peter Measey 译者:张某人ER  http://blog.csdn.net/xinxing__8185/article/ 摘要:对于快速发展的敏捷软件开发领域,本文将对其最常见的错误认识进行分析. 在如今全球市场的背景下,如何可以灵活变通,对于一个企业来讲,已然变得至关重要,因此,IT系统

敏捷开发实践(一)--谈谈我对敏捷开发的理解

随着敏捷开发越来越流行,人人都在谈敏捷,人人也都在学习scrum等敏捷开发方法...当然,自己也是敏捷开发的实施者和受益者. 背景 我们公司引入敏捷开发的时间并不长,在实施敏捷的过程还存在一些问题,自己在实施敏捷的过程也存在很多的疑惑(毕竟原来没有学过,和真实的经历,体会),所以最近一直在学习敏捷,看敏捷的视频和阅读相关资料,同时结合自己实施敏捷的经验,通过分享博文进行一下简单的总结,目的有四: 1. 详细的介绍和学习一下敏捷开发 2. 和CSDN的大牛们一起分享交流,学习,提高一下 3. 总结

谈谈敏捷开发

我对敏捷开发是源于10多年前看了一本关于迭代开发的书,从而对迭代开发有了一些兴趣.从那时开始有了迭代开发的概念.随着项目经验的增加迭代的重要性也越发觉得明显.随后进入了提倡敏捷开发的公司,被迫式的接触了许多"敏捷开发",随着项目经历越来越多,慢慢的就开始有了更新的认识和想法. 但是在接触敏捷开发这个体系之前,自己有机会做一个项目,那个时候我开始将自己认为更有利于项目的管理工作做了一些应用,那个阶段我的主要做法是: 1.项目中开始划分更短的制品交互周期,而不是以前那样等待产品开发完毕后发

对敏捷开发的理解

以往,我们选择的最多的是瀑布式开发,大体分为需求分析.设计.编码.测试和维护这几个阶段.但是随着计算机产业与时代的不断跟进,这种模式也多少承受了时代的厚重感,渐渐跟不上了.那么,为了提高开发效率和响应能力,敏捷开发应声而出. 敏捷开发是以用户的需求为核心,采用迭代.循序渐进的方法进行软件开发.何为敏捷,就是能应声而动.在传统开发,我们对用户的需求是又爱又恨,没有需求,进展就开不下去,而如果中途用户更改需求,也就意味着过程需要重载,很容易就变成了一改改全部的问题.而敏捷开发,它可以把一个大项目分成

谈谈敏捷开发(转)

原文地址 http://www.cnblogs.com/5207/p/6179009.html#3762210 我对敏捷开发是源于10多年前看了一本关于迭代开发的书,从而对迭代开发有了一些兴趣.从那时开始有了迭代开发的概念.随着项目经验的增加迭代的重要性也越发觉得明显.随后进入了提倡敏捷开发的公司,被迫式的接触了许多"敏捷开发",随着项目经历越来越多,慢慢的就开始有了更新的认识和想法. 但是在接触敏捷开发这个体系之前,自己有机会做一个项目,那个时候我开始将自己认为更有利于项目的管理工作

Project Management: 敏捷开发纵横谈

摘要:在IT界中,“敏捷”是一个很酷的词汇,“敏捷”的相关理论可谓铺天盖地.“敏捷”一词实质没有统一定义,各家有自家的说法,本教程将让你了解“敏捷”的来龙去脉,抓住“敏捷”本质,并能在工作中实践“敏捷”. 特别声明:如需转载此文,请给出指向本网站的连接,如下:作者:张传波摘自:http://www.umlonline.cn如不能按此要求,请不要转载此文. 大纲:“敏捷”陷阱为什么会有“敏捷”这个说法?极限编程敏捷开发RUP敏捷开发的实质是什么?如何才能敏捷起来? 正文: “敏捷”陷阱 小甲想到某