Thursday, April 2, 2009

Scrum介绍系列

更多精彩请到 http://www.139ya.com


转自: http://hu-bj.javaeye.com/blog/337380

Scrum介绍系列1--- 基础知识

Scrum 构造的产品迭代周期为Sprints, 工作的迭代时间一般为一到四周。Sprints 是有固定的周期——结束于固定明确的日期,无论该工作完成与否,从不延长。
在每一Sprint 的启始阶段,一个多职能的团队从已优先化的要求列表中挑选若干项目,并承诺在Sprint 的末期完成这些项目。
每一工作日,团队成员互相通告工作进度,并更新简易的剩余工作量直观表示图表。在Sprint 的末期,团队将对这一阶段工作结果作一展示并取得相关的反馈,为下一Sprint 做好准备。

Scrum 强调生产可以使用的产品,意指在Sprint 的末期产品的“完成”;在软件方面,是指编码已经被检测并可以随时交付使用。



Scrum介绍系列3--- 如何启动Scrum

Scrum 的第一步是产品所有者清晰地展示产品的未来景象(vision)。这些是以按需求的优先列表展示的,按客户和商业价值排序,最高价值的项目排在列表顶端。这就是Product Backlog,它存在(并发展)于产品的整个生命周期(图示2)。Product Backlog 包括许多的不同项目,例如功能(“使用户可以把所选书籍放入购物车”),开发需求(“重新改进处理流程模块,使其可以升级”),探索式的工作(“研究关于加速信用卡确认过程的方法”),和已知的bugs(“判断并修复定单流程中的错误”)。

Product Backlog 是由产品所有者随时更新,以反映客户需求的变化,竞争对手的发布,新的想法和见识,出现的技术障碍等等。



在项目开发的任何时候,Product Backlog 是唯一具有权威性的“需要完成的所有任务”的概况。只可以存在唯一一个Product Backlog;这就意味着产品所有者需要在所有的工作范围中作出优先项的决策。

Product Backlog 中的项目在规模上会相差甚远;有些大的项目通常在Sprint 计划会议上被划分为许多较小的项目,而小的项目有些会被合并为一。关于Scrum 的误解之一是它会阻止你记录详细的规范说明;而现实中,这是由产品所有者和开发团队共同决定详细资料的多少,这些从其中一个Product Backlog 到另一个有可能存在不同。一般的建议是,在所需的最少的空间中说明最重要的事情——换而言之,不需要描述某一项目的所有可能的详细资料,只需要阐述清楚产品被认为是完成品所具备的要求。在Product Backlog 列表中越底端的是更大和粗略的项目;当它们接近被开发时,产品所有者会添加更多的详细资料。


Scrum介绍系列4--- Sprint 计划会议


Sprint 计划会议是保证整个Scrum顺利进行的重要一环之一!如何开好,非常关键!

Sprint 计划会议在每一Sprint 的启始阶段进行。在Sprint 计划会议的第一部分,产品所有者和Scrum 开发团队(在ScrumMaster 的协助下)共同评审Product Backlog,讨论Backlog 中各项目的目标和背景,并提供Scrum 开发团队深入了解产品所有者想法的机会。在会议的第二部分,Scrum 开发团队从Product Backlog 中挑选项目并承诺在Sprint 的末期完成任务,从ProductBacklog 的顶端开始(换而言之,从对产品所有者具有最高优先权的项目开始)并按列表顺序依次工作。这是Scrum 的重要实践之一:开发团队决定承诺完成工作量的多少,而不是由产品所有者安排工作量。这就使任务的交付更可靠;第一,因为开发团队承诺工作量,而不是其他人代替其“承诺”工作量;第二,开发团队自己决定所需要的工作量,而不是其他人决定工作量“应该”是多少。产品的所有者对于开发团队承诺任务多少没有控制权,他或她只知道开发团队负责的项目是由Product Backlog 中按顺序从上至下进行的——换而言之,是从他或她选择的最重要的项目开始。开发团队可以从列表底层选择项目提前完成,如果其对于整个开发具有意义(比如,提升和快速完成较低优先权的项目,作为完成较高优先权项目的一部分)。


Sprint 计划会议通常会持续几个小时——开发团队对于承诺完成的任务作出认真地抉择,这些责任要求通过仔细地考虑以达到成功的目标。团队将从估算每一成员拥有的完成Sprint 相关工作的时间开始——换句话说,是团队成员平均的工作时间减去他们花费在检修bug 和其他必要的维护工作,参加各种会议,回复电子邮件,午休等的时间。大多数人会有4 到6 个小时每个工作日可以完成Sprint 相关的工作。(图示3)

当可利用时间确定下来,开发团队会从Product Backlog 的顶端第一项开始工作——换句话说,从产品所有者的最高优先权项开始——团队共同工作,将其分配为小块任务,并记录在SprintBacklog 中(图示4)。当任务确定后,团队成员可以自愿承担任务,在考虑任务间依赖关系和次序的情况下,给每一项任务估算时间,并保证每一个人的工作量合理。在此流程中将会和产品所有者有往复交流,阐明要点,核实交易,将较大型Backlog 分割成小块,并保证开发团队真正全面了解开发的需求。开发团队将按Product Backlog 序列继续计划,直至消耗所有可利用时间。在会议的末期,开发团队将提供所有任务的列表,并写明每一项工作由谁完成和他们的估算时间(一般以小时计算或每天的一小部分)。许多开发团队也使用可视任务跟踪工具,利用墙体面积大小的任务板,任务(写在便签上)在Sprint 中跨越栏目,“未开始”,“在进行”,“需校验”,和“已完成”。



Scrum 的重要支柱之一是当Scrum 开发团队确认承诺任务后,产品所有者在此Sprint 期间不可以添加新的需求。这就意味着即使在Sprint 中途,产品所有者想要添加新要求,他或她在下一新的Sprint 开始前不可能作出任何变更的决定。如果一个外部情况出现致使项目优先级的变化,意味着如果开发团队按原计划工作将会是浪费时间,产品所有者此时可以结束该 Sprint;意味着开发团队停止一切工作,重新开始Sprint 计划会议等等。此种决断会产生很大的影响,除非在非常特别情况下,不会采用这种方式。

保证开发团队在Sprint 中目标不被变换有着正面影响。首先,开发团队确信在工作开始时的承诺是不会变化,这样会集中开发团队的注意力。第二,这样也可以培养产品所有者在安排 Product Backlog 中项目的优先权时,适时作出正确的抉择。他们知道任务的承诺是在整个Sprint 中不可变更的,使其在决定从哪一项目开始工作更为细心。

作为回报,产品所有者也可以得到两个好处。首先,他或她有充分的信心,开发团队对所承诺任务强烈负责,并随着时间推移,Scrum 开发团队将会做的很好。第二,产品所有者可以在下一Sprint 开始前,提出他或她希望的变动。在这一点上,增加条件,删减条件,更改条件和重新排列优先权都可以被接受。但产品所有者不可以在Sprint 进行中提出任何变更,他或她只是需要等待一个Sprint 的完成时间或更短。不再僵持于是否变化——方向的变更,条件的变更,或只是简单的想法的变更——可能正式此原因,使得产品所有者成为Scrum 拥护者中最热衷的成员。


Scrum介绍系列8--- 如何开始下一个Sprint

在Sprint 评审会议之后,产品所有者将提取所有建议,和在Sprint 中产生的新的优先权项目,并将这些项目合并于Product Backlog 之中;增加新的项目,现有项目进行了更改,重新排序或删除。当Product Backlog 的更新完毕,循环周期可以再次开始,以下一个Sprint 计划会议为开端。

许多开发团队感觉在每个Sprint 末期进行优先化的会议很有意义,和产品所有者一起对下一Sprint 中的Product Backlog 项目进行评审。除了给开发团队的一个机会提醒产品所有者其未注意的事项——技术维护,比如——此会议也开始了在Sprint 计划会议之前所需的初步想法。

在各Sprint 之间没有间隔期——开发团队通常在下午时间进行了Sprint 评审,第二天上午就进行下一Sprint 计划会议。Agile 开发的价值观之一是“可持续性“,只有在正常的工作时间和劳动强度下,开发团队才可以继续此周期的持续。

No comments: