浏览 4456 次
锁定老帖子 主题:Scrum 摘要
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-23
Scrum 理论是基于一个国外的学科,叫《过程动态学,建模及控制》,什么意思呢?过程控制方法有两种:预定义过程控制和经验性过程控制。预定义过程就是在执行之前先要制定详细的计划,然后严格按照计划执行,这种控制方式在过程比较简单的情况下比较适用,但是如果过程不可能预测的非常详尽的话,预定义过程就显得力不从心,这时候“经验过程控制”就更合适于过程控制。 经验过程控制讲究“检查”和“调整“,就是在执行过程中不断的检查是否出现问题然后根据实际情况来调整过程的执行。 这两种过程各有优缺点。 预定义过程在当今软件业仍然有着广泛的应用,为什么呢?就是因为预定义过程可以在项目开始之前就能给出大概的项目预算和风险评估,这样投资人才可能放心的投资项目。当然它的弊端就是应对变化的风险很差,尤其在于软件开过程中,变化是不可避免的,很多情况是不可预知的,所以预定义过程在这种情况下就显得力不从心。 下面谈谈scrum如果用经验过程控制来进行项目管理。 典型的瀑布式项目的分工一般是:项目经理,team lead, developer, 需求分析员,系统构架师,测试人员。往往测试人员、需求分析人员和开发人员在不同的team,之间通过书面的交流,这是典型的预定义开发方式。 Scrum的角色和职责: Scrum角色有team,scrum master和product 负责人 Scrum Master:负责组织team进行开发,对team进行指导和观察,对出现的问题进行纠正。Scrum Master不是项目经理,不能对team下命令,只能提供指导。另外,scrum master要阻止team以外所有干扰team 工作的因素,所以scrum master 被比作“牧羊犬“,保护羊群并且指导羊群的方向。 Team: 负责需求分析和开发工作,所有工作都自行组织。 产品负责人:负责提出需求和排列需求的优先级。 Scrum 的principles: 1.“The art of possible” “可能性的艺术”是scrum一个显著的原则,它强调人们想事情的时候不应该把注意力集中在“不能做的事情”,而是应该把注意力放在“什么事情可以做或者可能做”,不要被诸多的不确定性因素所困扰,先做可以做的,然后看有什么新的发现,有什么新的思维出现。这完全是基于经验过程控制理论 2. Self-Organization Team自行决定开发和解决问题的方法,因为没有人比team自己更了解他们的系统。 而且这种team自组织的方式,相比较manager派发任务而言,能够使团队士气高涨,让队员有更多的责任感。 另外就是让开发工作变成一件有趣的事情。 3. communication scrum强调沟通,团队在工作过程中要随时可以进行面对面的及时有效的沟通,反对团队内部文档沟通的方式,一切沟通障碍都要被去除。 比如传统公司之间的隔间,非常严重的阻碍了交流,应除去。 4.daily visibility into the project 经验过程控制的基础就是让项目透明,让问题浮现,因为这样才能够进行检查和调整。 所以每天都要有站立会议供大家来交流问题。 另外就是velocity chart和burn up(down)chart来显示速度和项目进度。 5.incremental product delivery 基于“art of possible”, scrum会在每个迭代周期完成可以完成具有高优先级的需求,从而实现每个迭代都可以deliver business value。这样客户就可以递增的拿到可用的产品,从而可以进一步提出更加现实可用的需求。 其实每一个iterative development都可以deliver 业务功能,但是没有特别的强调,只是scrum严格强调这一点。因为它是基于经验过程理论的自然的产物。 Scrum 相对于传统开发方式的values: 1.迭代交付让客户在项目完成以前就可以拿到可使用的产品,增加了客户满意度、项目成功的几率和后续需求提出的准确性。 尤其是抵御变化的能力较强。 2.“art of possible”可以让项目尽快启动,并且快速出成果。 3.“daily visibility”可以把项目的问题有效的呈现出来,有利于及时的解决问题。 4.self-organization有利于激发团队士气,让最了解系统的人做正确的事情。 Scrum的各个环节: 1.quick start 任何项目开始的时候投入的资源都比较少,对于scrum,一般会有2到3个人,包括dev,BA来开始对项目进行分析,找到master stories。 2.前期分析结束后,会投入更多的dev来进行开发,并且有每日的简会。简会的价值就在于:检查和调整,检查进度是否一致,是不是出现了新的问题,然后调整下一步的工作, 而不是简单的向scrum master汇报工作。 3.dev开发story的同时,BA做新的story卡。 4.新卡做好以后,由客户根据业务需要来排列优先级 5.而后组织dev对story card进行工作量的评估,不是以人天为单位,而是以point。 4.开发过程大多采用XP,XP和scrum配合的相当好 5.每个迭代结束的时候要向客户展示产品。 Scrum开发方式面对定价项目的竞标 1.客户可以在任何一个迭代结束的时候停止项目,仍然可以得到可以上线的产品。 2.scrum 对于变化的抵御能力较强,任何一个迭代开始之前,客户都可以修改需求,而且无需付费,这在定价合同的竞标上有很大优势。 Scrum在实施过程中通常会遇到的问题 1.scrum的实施必须以公司的企业文化为背景,必须和企业文化相融合,否则很难成功。 2.没有人能绝对预测以后会发生什么事,尤其是情况不明的时候。 所以在每一个迭代做estimation的时候,预估不准确是正常现象,尤其是在前几个迭代。 3.很多情况下,在业务功能开始实现之前会做一些基础设施的建设,这些工作在前几个iteration会占较大比重,而且优先级比较高,但是同时,每个迭代也要进行业务功能的发布, 因为基础设施需要实际的业务功能来验证其正确性。 Reference 《scrum 敏捷项目管理》by Ken Schwaber 《Agile Software Development With Scrum》by Ken Schwaber and Mike Beedle http://www.scrumalliance.org 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-12-27
恩,很好,解决了我当下的困惑。
|
|
返回顶楼 | |
发表时间:2009-10-01
谢谢你的文章,简洁明了。让我快速了解了scrum的概要。
|
|
返回顶楼 | |