Scrum开发流程最佳实践

Scrum开发流程最佳实践
Scrum开发流程最佳实践

1.角色分工、职责与义务

本流程内按不同的职责将人员划分为四个角色:PO(Product Owner),PD(Product Designer)和开发人员和架构组(Architect)。

1.1.PO的职责与义务

1)PO的职责为收集提出的需求并对其进行分析,输出产品为可以直接应用于产品设计与

开发的需求文档。

2)需求文档是产品设计与开发过程中针对产品功能的唯一参考文档。

3)需求文档应当包含产品设计和开发中需要使用到的全部功能性信息,包括且不限于主要

功能模块划分、详细用例描述、系统输入与输出数据的定义等等。

4)需求文档必须为针对客户需求进行分析总结的结果,其中对功能的描述应具有通用性,

而不应仅针对用户提出某些特定场景。

5)需求文档中所有的内容都应是确定的和无疑义的,应保证任何人通过阅读需求文档所得

出的理解是基本一致的。

6)任何在系统使用过程中可以录入的数据都不是需求的一部分。

7)对需求文档进行的任何修改都应留有历史记录,记录中应包含新增或修改的章节、修改

的内容、进行修改的时间和修改人的姓名。

8)PO对需求文档中的内容拥有最终解释权。

9)PO需要提供的文档如下:

必须提供的文档:需求文档

非必须的文档:辅助其他人员理解需求的参考资料(比如行业规范,网站上的介绍,宣传资料,自己做的图表等等)

1.2.PD的职责与义务

1)PD的职责为按照需求文档进行界面和用户体验设计,输出产品为界面设计及相关说明

文档。

2)界面设计中应当完整体现需求文档中描述的全部功能。

3)界面设计不但应包含正常流程的界面和用户体验设计,也应当覆盖异常流程。

4)在不同页面中相同类型的元素(如:按钮、表格等),其样式应保持一致。

5)界面设计应直接体现最终产品的静态显示效果。

6)界面设计如以原型或屏幕截图的方式提供,那么其中应提供一份对基本的使用流程及一

些功能上的重难点进行描述的说明文档。

7)PD对界面设计中用户体验及显示样式部分拥有最终解释权。

8)PD需要提供的文档如下:

必须提供的文档:UI设计(静态图片或者Prototype再加上必要的文字说明)

非必须的文档:暂无

1.3.开发人员的职责与义务

1)开发人员的职责为按照需求文档和界面设计文档进行产品框架和模块的设计与开发,输

出产品为可使用的软件产品。

2)最终的软件产品中应该完整包含需求文档中描述的全部功能。

3)最终的软件产品的界面样式应与界面设计基本一致,在界面排列及元素间间隔上允许有

一定的差异,但不应影响界面整体的美观。

4)开发人员需要提供的文档如下:

必须提供的文档:软件的开发设计文档(包括内部模块划分,接口设计,数据库设计等等),开发计划(可按迭代补全)

非必须的文档:软件的部署(使用)说明,开发环境部署说明,测试数据等

1.4.架构组的职责与义务

1)管理非功能性需求。大多数非功能性需求都是技术层面的,且对软件架构有很大影响的。

架构组要对系统的重用、扩展、安全、性能、伸缩性、简洁等做系统级的把握。

2)定义系统架构。理解系统业务需求和非功能性需求,在兼顾需求和限制的前提下,定义

软件架构,分解模块、层和组件,进行职责划分,确定最终系统使用特定技术部署到特定的环境以后的样子等。

3)技术评估和选型。做出技术决策,确保团队朝着正确的方向前进。

4)评价和确认系统架构的实现。

5)全程参与。与开发团队及其它相关人紧密协作,参与所有与项目有关的会议:设计、开

发、评审、需求规划等,来保证架构和所在环境的无缝的集成。

6)指导团队架构和设计。架构组应做出具体的设计决定,软件开发人员按照决定构建系统。

开发人员可能不接受架构组选择的设计模式,开发人员可以改进它,但还是最可能的按照架构组的描述实现。

7)保证质量。保证质量是架构组的职责中很大的一部分。保证质量可以通过代码标准、设

计原则、持续集成、自动化单元测试和代码覆盖分析等实现。

8)编写代码和测试。架构组需要知道代码的质量如何,以便更好的理解架构设计对实现上

的影响。

9)参与改进Story、增加约束、完善描述和验收标准。在Scrum 迭代开始前预先设计软件

架构,以便把设计涉及的Story“串接”起来。

10)架构组需要提供的文档如下:

必须提供的文档:架构设计文档(包括模块划分,接口设计,使用的技术,部署方式等

等)

非必须的文档:其他辅助理解架构设计的图表,以及相关的学习资料

2.角色内协作行为规范

2.1.PO部分

1)需求文档的内容应该为整个PO团队的共同讨论和分析的结果,不应为某一人的产品。

要保证每个需求都是PO组达成的统一结果。

2.2.PD部分

暂无

2.3.架构组和开发人员部分

1)在产品开发中应用的技术应该以稳定为主。任何对技术的选择应该并仅需获得架构师和

主要开发人员的一致意见,并且一个技术一经选定并应用到实际开发过程中,无正当合理理由,不可更换。

注1:正当合理理由包括且不限于原技术功能不完整、有重大安全漏洞且通过对其维护者的了解无法及时修复、严重的性能问题等等。

注2:非正当合理理由包括且不限于原技术在不影响功能的前提下对系统的扩展性造成负面影响、追求新技术但新技术与原技术为针对相似问题或领域的不同解决方案而非前者是后者的升级版本。

2)产品的架构、数据库及主要功能模块的设计及相关的变动只有在获得架构师及全体开发

人员的一致同意后才可付诸实施。

3)任何开发人员在向代码库提交代码前必须对自己的改动进行编译和测试,以保证提交后

代码库中的代码可以通过编译并正常运行。

4)每一次提交应该包含开发人员本地的全部改动,而不可改动多处但只提交一处。

5)在提交重要的实现或改动前,开发人员应邀请至少一位其他的开发人员进行审核,以保

证提交代码的质量。

6)开发人员进行生产活动的周期称为迭代,在其中需要完成指定的任务并输出一定的产品,

一个迭代一般为两周。

7)在迭代的最后一天,全部开发人员应举行总结会,对整个迭代的开发过程、遇到的问题、

输出的产品进行评估和总结,以便改善后续的开发过程。

8)在总结会举行之前,该迭代的输出产品应该构建完毕并交付PO和测试人员。

9)计划会和总结会其他人员也可参加。

2.4.架构组部分

1)框架设计文档应该为整个架构组的共同讨论的结果。

3.跨角色协作行为规范

3.1.概述

1)各角色之间的协调、讨论和审阅应只针对对应角色的输出产品和相关的时间节点,不应

针对其生产对应产品的过程与方法。

2)一个角色的下游角色是指在工作中需要使用本角色输出产品的角色,即PO的下游角色

为PD和开发,PD的下游角色为架构师/组和开发人员,架构师/组的下游角色为开发人员,开发人员的下游角色为PO(注:因为开发的成果应由PO和PD进行确认)。

3.2.时间节点部分

1)项目管理中的时间节点包括交付需求文档、界面设计、软件产品的时间和交付内容,其

中按需要可以分别划分为阶段性的时间节点和最终的时间节点。

2)时间节点的设定应该充分考虑相关人员的技术能力和正常范围内的工作时间,并应留有

余地。

3)任何针对时间节点及对应节点输出产品内容的设定和变更应获得对应角色及其全部下

游角色负责人员的同意,未经同意的相关变更无效。

4)任何由于上游角色延迟交付或部分交付产品而对下游角色的生产计划的影响,下游角色

的生产计划应顺延。

3.3.需求文档及产品设计部分

1)需求文档和产品设计在交付前应当得到相关下游角色负责人员的确认,经过确认的文档

或设计可以交付。

2)如果讨论双方对文档或设计中的内容无法达成一致,那么应参考第一章中对最终解释权

的描述进行解决。

3)任何通过口头、邮件、会议、Sametime等讨论方式得出的结论只在被添加至文档或设

计内并得到全部参与原讨论人员的确认后生效,而相关的确认必须使用邮件方式进行。

如某一角色中有多名人员参与了会议且其中包含对应角色的负责人员,可由角色的负责人员进行统一确认。未经文档化和最终确认的任何改动无效。

4)在计划会确定的一个迭代中的任务不得更改,如要更改,需要重开计划会议征得所有开

发人员和PD的同意。

3.4.软件产品部分

1)软件产品的交付应该由PO和QA两个方面共同进行确认,在功能、界面、缺陷数等各

方面满足指定的要求。

4.AiO-Scrum实施规范

4.1 几个必须的会议

1)Release Meeting

Product owner负责发起Release planning会议,需要参加的是Architect,开发,PD,测试的代表;PM可选参加(邀请人员要到位)。该会议的目标是指定一个产品开发周期由几个release组成,每个release都要指定交付日程表。该会议结束时,应该有一个类似下表一样的发布计划:

2)Sprint Planning

Product Owner负责发起Sprint planning会议,需要参加的是Architect、开发、PD和测试的代表;PM可选参加(邀请人员要到位)。这个会议该会议分为两阶段,第一阶段,确定需求是什么,Product owner主导向整个team介绍这个sprint要实现的feature, 根据team的反馈来取舍,调整这些feature. Product owner对backlog的优先级进行排序,然后挑选出合适的feature,发布到Redmine上;第二阶段,决定怎么实现需求,Development team主导这个会议,从第一阶段的feature中,分解task. 共同评估每个task,比如task的完成的定义,涉及的技术细节,交付的结果,需要的工作小时。然后再决定谁来take这个task,谁是reviewer。这两个会议可以分开由各自主导方发起,但是必须邀请上述各方(无论是required还是optional),在sprint之内如果需要取消该会议,主导方必须经过参与方的同意。

3)Daily Scrum

Development team 举行站立式的每日会议,开发和测试必须参加,PO和PD可选,目标是简短有效的交流。每天查看burn up 或者burn down图来检查项目的整体进展。实践中我们也可以交流遇到的技术难点和意料之外的情况。这是对Sprint planning会议结果执行的每日考评。严格来说,不能修改/增加/减少已经定下的feature和task。如果要修改,必须要product owner和team一致同意,但是要非常慎重。这个由开发team 自由决定。

4)Sprint Review

由development team发起,而PO、PD必须参与的会议,PM可选参加。会议流程如下:

a)先讨论那些feature和task已经完成,侧重于feature层面

b)向product owner演示已经完成的feature

c)product owner可以介绍产品需求和市场是否有变化,从而为下阶段的sprint做好

准备

下面的观点可作为实践的参考:

a)每个sprint review都是一次内部的产品发布,因此介绍和演示团队在产品上取得的

进展是主要内容,而不要变成具体每个task的讨论。更不需要每个developer来轮

流演示自己的task.

b)没有完成的feature和task需要仔细讨论原因,寻找经验和教训。是否因为目标定

的太多没有给团队留下余量,通常我们都会对目标工作量打8折作为实际工作量,

是否高估或者低估了技术问题。比如一个没有想到的用户体验问题引入了一连串的

技术解决方案。

5)Sprint Retrospective Development team在Sprint review会议之后和下一个sprint planning

会议之前,developers和PD,PO代表是required参加,其他PM等可选参加。召开这个会议的目的是,总结经验教训,提出在后面的sprint 需要改进的地方。这个阶段每个developer可以轮流阐述自己的观点,遵照下面的流程:

a)What have you done in the last sprint?

这部分内容可以简单快速,因为实践中每个task都会被review后才视为结束。

b)What unsolved problems have you found?

这部分有效的内容将加入到backlog中。

c)Share your suggestions about process, technique.

这部分有效的内容也将加入到backlog中。

d)Adjust focus factor

在会议中,需要针对现有团队的Sprint实施情况,决定下一个Spirit的Focus Factor。

4.2 其他实践

1)单元测试

a)只为公有接口编写单元测试

b)包含边界情况

c)提交代码之前,执行单元测试,不提交没通过单元测试的代码

d)维护测试代码

2)代码review

a)每次提交有人review,记录review人员的信息在commit message中。不提交没有经

过review的代码。

b)在特殊情况下,酌情选择多人review。例如临发布,重要更改,疑难bug的修复等。

5.代码管理和发布规范

除了日常管理,强调我们容易出错的流程

1)对每个项目架设专门的编译测试服务器。

服务器的功能至少包括,周期性(比如说一小时)更新最新的代码,编译整个工程,如果编译不通过自动发邮件提示所有开发者注意。

服务器的功能最好包括,对编译出来的结果作最基本的自动测试,比如说尝试运行系统看是否成功,导入数据库脚本看是否出错。如果有问题自动发邮件提示所有开发者。

服务器的理想功能包括,周期性自动编译并通过某些自动化的脚本来作smoke test,比如说运行起来系统自动点击某个按钮,或者是通过脚本调用ws来检查输出是否正确,如果smoke test不通过,发邮件提示所有开发者。

2)对每个项目架设专门的发布服务器

每天某个固定时间把当前最新的代码下载编译发布出来,同时导入最基本的测试数据,供PO和QA测试使用。这个过程最好也可以用脚本自动完成。

6.其他常见问题

暂无

PS:本文档随着开发实践的进行,不断迭代完善。注意,任意发起方,需要在SVN进行更改,提交并邮件通知所有人,公示一周,如果没有人有意见,即可生效。

SCRUM开发流程

SCRUM的基础知识 Scrum 是迭代的,增量型的流程。Scrum 构造的产品迭代周期为Sprints, 工作的迭代时间一般为一到四周。Sprints 是有固定的周期——结束于固定明确的日期,无论该工作完成与否,从不延长。在每一Sprint 的启始阶段,一个多职能的团队从已优先化的要求列表中挑选若干项目,并承诺在Sprint 的末期完成这些项目。每一工作日,团队成员互相通告工作进度,并更新简易的剩余工作量直观表示图表。在Sprint 的末期,团队将对这一阶段工作结果作——展示并取得相关的反馈,为下一Sprint 做好准备。Scrum 强调生产可以使用的产品,意指在Sprint 的末期产品的“完成”;在软件方面,是指编码已经被检测并可以随时交付使用。 Scrum 中的角色 在Scrum 中有三个基本的角色:产品所有者,开发团队成员和ScrumMaster。 产品所有者(Product Owner)负责收集相关于产品的所有信息——从客户或产品的终端使用者,开发团队成员和项目管理者中获取——并将信息转化为产品的形式。在一些情况下,产品所有者正是客户本人;在另一些情况下,客户可能是有不同需求的成百上千的人。产品所有者这一角色在许多企业中是由产品经理或产品市场经理担任。 开发团队成员构建客户将会购买的产品:软件,网站,或者是任何一种产品。Scrum 团队通常包括五到十个成员,尽管团队大到15 个成员和小到3 个成员也有很好的收效。团队应该包括所有交付工作所需的专门人员——例如,一个软件项目的开发团队包括程序员,界面设计师,检测员,市场人员和研究人员。开发团队不仅构建产品,他们也向产品所有者提供让产品尽善尽美的建议和想法。开发项目包括15 个或以上的人员时,通常会被划分为若干的Scrum 团队,每一团队注重于产品开发的不同方面,并相互紧密的协作。团队成员同时可以参与其他项目开发,这样比只限制开发团队致力于Scrum 更能提高生产效率。团队内部成员也可以在不同Sprint 中变化,但是这样会减少整个团队的生产效率。 ScrumMaster 的任务是以任何方式帮助整个团队取得成功。ScrumMaster 不是团队中的经理;他或她是服务于整个团队,帮助团队铲除壁垒而取得成功。协助团队会议,并支持Scrum 的实践。在一些团队中会有某一人专心致力于担任ScrumMaster,而另一些团队可以是其中一个成员兼职担任(此人会适当减少日常工作量)。一个好的ScrumMaster 可以有不同的背景和学科:项目管理,工程技术,设计,检测。ScrumMaster 和产品所有者不应是同一人;有时, ScrumMaster 可能会号召拒绝产品所有者(例如,他们有时会在某一Sprint 中期试图加入新的条件)的要求。不同于项目经理,ScrumMaster 不会指示和分配工作——他们只是协助流程的实施,推动团队自我组织和管理。 除以上三个角色之外,还有其他对于项目成功作出重要贡献的人员:可能其中最重要的是经理。他们的角色在Scrum 中的发展, 他们仍保持了相当重要的位置——他们支持开发团队使用Scrum,他们为整个项目的开发提供知识,技术和各种必要的协助。在Scrum 中,这些人转化了以前“保姆”式的角色(布置任务,收取进程报告,和其他一些谨小慎微的管理方式),取而代之的是承担起更多的“指导“作用(指导职业发展,在职辅导培训,扮演魔鬼的代言人,协助铲除障碍,帮助解决问题,提供创新的建议和指导团队成员的技能发展)。为了能更好地实现这一变化,经理们需要改进他们的管理方式方法。

敏捷开发Scrum

https://www.360docs.net/doc/6e5197478.html, 个人管理-使用Scrum来敏捷自己 每个人都有自己的生活和自己的职业或事业,如果把经营个人成长作为一个项目来看,那么在这个个人管理项目中,我们每个人都是这个项目的管理者和执行者。 Scrum敏捷开发方法 如果你是一名开发人员,那么现在还不知道Scrum方法,那么你就out了。Scrum是一种现在普遍流行并且很好的一种基于管理为主的敏捷项目开发方法。我之前blog中全面概要的介绍了一下Scrum方法,如果你不熟悉的而又想了解下面内容,请你最好去去仔细看看我这篇文章《流程-从IT方法论来谈Scrum》,因为下面我将描述我们如何基于Scrum方法来进行个人管理项目的执行。 价值观 在Agile Software Development with Scrum一书中指出,Scrum的核心价值观是:承诺、专注、公开、敬重和勇气,它提倡自我管理、涌现机制、可视性和评估/适应循环的根本原则,这些价值观对个人管理依然非常有效。 1. 承诺(Commitment):我们是否经常暗下决心,一定要戒掉游戏,一定要完成这 个任务,但是最后是不是仍旧还存在脑子里。如果你有这种现象,那么你需要做的就是自己对自己承诺,自己相信自己,如果自己都不能相信自己,那么谁又能相信你呢? 2. 专注(Focus):要事第一,对一件事情投入100%去做好 3. 公开(Openness):有人说,能力就像怀孕一样,时间久了才能看出来,你个人 的学习、个人的Open都需要公开的表达才能让别人知道 4. 敬重(Respect):三人行必有我师,空杯心态,尊重每一个人,向不同的学习

Scrum介绍(中文版)

Copyright ? 2010 https://www.360docs.net/doc/6e5197478.html, 专业的敏捷开发社区 Scrum 中文网 Scrum介绍 Scrum中文网 https://www.360docs.net/doc/6e5197478.html, 版权说明:本文部分资料及图片翻译自Pete Deemer 的Introduction to Scrum for Managers and Executives 以及Mike Cohn 的An Introduction to Scrum.

专业的敏捷开发社区 Scrum 中文网 许多企业面临的问题与挑战 ? 产品投放市场的时间太慢 ? 项目失败的比例高的离谱 ? 投资回报低,经常失败 ? 对变化与变更的响应,难度大且成本高 ? 客户体验及客户为导向很差 ? 软件质量不过关 ? 生产力需要大幅提高 ? 员工士气,动力及责任感很低 ? 需要普遍的微观管理 ? 人员流失率特别高 ......

专业的敏捷开发社区 Scrum 中文网 越来越多的企业开始使用Scrum 解决这些问题 ?Google ?IBM ?Nokia ?Siemens ?Philips ?Accenture ?Sun ?UbisoB ?Bleum ?SAP ? Microsoft ? Infosys ? Oracle ? Wipro ? Motorola ? Yahoo! ? Schneider ? Agilent ? Irdeto ? Double Click ? Autodesk ? Tencent ? Plenware ? Trendmicro ? Moody ’s ? StarCite

专业的敏捷开发社区 Scrum 中文网 哪些类型的项目已经在使用Scrum ?大型企业级软件项目 ?商业软件产品 ?消费者软件项目/大型网站 ?美国FDA批准的应用于X射线和MRI的软件 ?高可靠性系统(99.9999%以上) ?财务支付系统 ?智能家居项目 ?战斗机项目 ?大型数据库应用 ?嵌入式电信系统 ?手机项目 ?CMMI5级的组织 ?多地点同步开发 ?支撑和维护项目 ?非软件项目 ? ……

Scrum开发流程中的三大角色学习资料

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

//------------------------ 下面,我们开始讲具体实施流程,但是在讲之前,我还要对一个英文单词进行讲解。 什么是Sprint? Sprint是短距离赛跑的意思,这里面指的是一次迭代,而一次迭代的周期是1个月时间(即4个星期),也就是我们要把一次迭代的开发内容以最快的速度完成它,这个过程我们称它为Sprint。 如何进行Scrum开发? 1、我们首先需要确定一个Product Backlog(按优先顺序排列的一个产品需求列表),这个是由Product Owner 负 责的; 2、Scrum Team根据Product Backlog列表,做工作量的预估和安排; 3、有了Product Backlog列表,我们需要通过Sprint Planning Meeting(Sprint计划会议)来从中挑选出 一个Story作为本次迭代完成的目标,这个目标的时间周期是1~4个星期,然后把这个Story进行细化,形成一个Sprint Backlog; 4、Sprint Backlog是由Scrum Team去完成的,每个成员根据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的产品需求中;

敏捷开发简介

敏捷开发简介 2009-04-21 17:46:34.0 来源:https://www.360docs.net/doc/6e5197478.html, 关键词:Scrum精益开发敏捷开发 在软件工业界,敏捷开发已成为众多高效开发团队的制胜之道。它不仅被许多中小公司青睐,在全球一百强的企业中,敏捷也已大行其道,受到许多资深项目管理者和开发人员的推崇。欧美软件企业中,有近半企业已采用敏捷方法进行开发。大多数尚未应用敏捷的企业,也都对其有所了解,而且很多在计划实施。中国的外企,外包公司和许多知名企业也都开始采用了敏捷方法。例如,腾讯内部几乎所有的开发团队都在实施敏捷。 敏捷方法给这些企业也已带来了巨大的收益。据业内资深人士和长期从事敏捷咨询的服务公司透露,采用敏捷开发的团队一般会提高3-10倍的效率,软件的质量也有了更加可靠的保证。同时,敏捷开发的应用也给团队内的每个成员提供了良好的发展机会。他们的技术和合作水平都能得到响应的提高。敏捷的成功来源于其方法本身的适用性和团队对它的深入理解和合理运用。下面我们就对敏捷开发做一个简单的介绍和讨论。 敏捷开发由几种轻量级的软件开发方法组成。它们包括:极限编程(XP),Scrum,精益开发(Lean Development),动态系统开发方法(DSDM),特征驱动开发(Feature Driver Development),水晶开发(Cristal Clear)等等。所有这些方法都具有以下共同特征,它们也是敏捷开发的原则和方法:1.迭代式开发。即整个开发过程被分为几个迭代周期,每个迭代周期是一个定长或不定长的时间块每个迭代周 期持续的时间一般较短,通常为一到六周。 2.增量交付。产品是在每个迭代周期结束时被逐步交付使用,而不是在整个开发过程结束的时候一次性交付使 用。每次交付的都是可以被部署到用户应用环境中被用户使用的、能给用户带来即时效益和价值的产品。3.开发团队和用户反馈推动产品开发。敏捷开发方法主张用户能够全程参与到整个开发过程中。这使需求变化 和用户反馈能被动态管理并及时集成到产品中。同时,团队对于用户的需求也能及时提供反馈意见。 4.持续集成。新的功能或需求变化总是尽可能频繁地被整合到产品中。一些项目是在每个迭代周期结束的时候 集成,有些项目则每天都在这么做。 5.开发团队自我管理。拥有一个积极的、自我管理的、具备自由交流风格的开发团队,是每个敏捷项目必不可少的条件。人是敏捷开发的核心。敏捷开发总是以人为中心建立开发的过程和机制,而非把过程和机制强加给 人。 简史 许多人认为,相比于“传统”的瀑布开发模式,敏捷开发是一种“现代”的开发模式。但是,实际上敏捷方法,特别是迭代和增量开发方法(IID)起源于20世纪30年代的一些非软件项目。而最早引入一些敏捷方法的项目之一就是20世纪60年代初的美国航天局水星计划。在这个项目中,一些极限编程方法如测试先行等也被使用。此后,迭代和增量开发被IBM联邦系统部(FSD)和沃森研究中心(Watson Research Center)采纳。有趣的是一些研究人员甚至在关于瀑布开发模式的最早的论文中发现了敏捷开发的线索。在这篇论文中,温斯顿.罗伊斯(Winston Royce)建议在一个项目中使用两次瀑布模式,也就是使用两次迭代。 20世纪70年代,最早的有记载的使用迭代和增量开发的主要项目之一,是为第一艘美国三叉戟潜艇开发的第一指挥和控制系统。该项目有大约一百万行代码,进行得非常成功。迭代和增量开发从此开始稳步发展,越来越多的项目开始使用这种开发模式。在1976年,Tom Gilb在他的著作《软件度量》(“Soft ware Metrics”)一书中阐述了他的迭代和增量开发实践,这可能就是第一部阐述这种方法的书籍。迭代和增量开发的另一次出色发挥,是在一个美国宇航局航天飞机软件的开发项目。这个项目负责开发其航空电子设备的软件系统。改项目由IBM联邦系统部(IBM FSD)在1977至1980年完成。一些典型的敏捷做法,如使用8个周迭代以及用反馈推动开发循序渐进等方法都在该项目中得以应用。 20世纪80年代,更多的出版物和更多的项目应用进一步推进了迭代开发的发展。在1895年,巴里贝母(Barry Boehm)正式定义了使用迭代开发的螺旋模型(Spiral model)。80年代初,在美国国防部发生

Scrum开发流程介绍

一、Scrum开发流程介绍 SCRUM 方法是由Ken Schwaber 和Jeff Sutherland 提出,旨在寻求充分发挥面向对象和构件技术的开发方法,是对迭代式面向对象方法的改进,名称来自英式橄榄球(在比赛中每个队员都应时刻保持对场上全局的判断,然后通过集体行动,奋力实现同一目标──胜利)。SCRUM 方法最初实践于Easel 公司(1993 年) ,现已被数十家公司数百个项目开发中应用,适用于需求难以预测的复杂商务应用产品的开发。SCRUM 提出的SCRUM Meeting、Sprint、Backlog、SCRUM Master 、SCRUM Team 、Demo 等模式已被PLOP 作为组织和过程模式(Organizational and Process Pattern)的标准。 SCRUM 的基本假设是:开发软件就像开发新产品,无法一开始就能定义Final Product 的规程,过程中需要研发、创意、尝试错误,所以没有一种固定的流程可以保证项目成功。Scrum 有明确的最高目标,熟悉开发流程中所需具备的最佳典范与技术,具有高度自主权,紧密地沟通合作,以高度弹性解决各种挑战,确保每天、每个阶段都朝向目标有明确的推进,因此,SCRUM 非常适用于产品开发项目。 SCRUM 开发流程通常以1-6 周为一个迭代周期,每个迭代周期叫做一个Sprint,由客户提供新产品的需求规格开始,开发团队与客户于每一个阶段开始时挑选该完成的规格部份,开发团队必须尽力于每个周期后交付成果,团队每天用15 分钟开会检视每个成员的进度与计划,了解所遭遇的困难并设法排除,决定第二天的任务安排,这样的短会就叫做scrum meeting。 SCRUM 较为有特色的,是它特别强调开发队伍和管理层的交流协作。每天,开发队伍都会向管理层汇报进度,如果有问题,也会向管理层要求帮助解决。SCRUM方法的开发过程包括三个过程:(1) 计划和体系结构设计(确定性过程)Backlog;(2) Sprint(经验性过程)(3) 交付和巩固(确定性过程)SCRUM 过程认为一个产品的开发将一直持续下去,除非经风险评估后认为应停止。产品交付后的巩固活动类似于传统方法中的维护和改善,目的在于整理Sprint 期压力下忽略的工作,为下一阶段的开发做准备,以便轻装上阵。SCRUM 对过程的管理有很多独特的方法。SCRUM 在实践中大大提高了生产率(据软件生产率组织的Capers Jones 称可提高 6 倍)。 名词解释: 1、SCRUM Meeting:团队每天用15 分钟开会检视每个成员的进度与计划,了 解所遭遇的困难并设法排除,决定第二天的任务安排,这样的短会就叫做

Scrum开发流程最佳实践

1.角色分工、职责与义务 本流程内按不同的职责将人员划分为四个角色:PO(Product Owner),PD(Product Designer)和开发人员和架构组(Architect)。 1.1.PO的职责与义务 1)PO的职责为收集提出的需求并对其进行分析,输出产品为可以直接应用于产品设计与 开发的需求文档。 2)需求文档是产品设计与开发过程中针对产品功能的唯一参考文档。 3)需求文档应当包含产品设计和开发中需要使用到的全部功能性信息,包括且不限于主要 功能模块划分、详细用例描述、系统输入与输出数据的定义等等。 4)需求文档必须为针对客户需求进行分析总结的结果,其中对功能的描述应具有通用性, 而不应仅针对用户提出某些特定场景。 5)需求文档中所有的内容都应是确定的和无疑义的,应保证任何人通过阅读需求文档所得 出的理解是基本一致的。 6)任何在系统使用过程中可以录入的数据都不是需求的一部分。 7)对需求文档进行的任何修改都应留有历史记录,记录中应包含新增或修改的章节、修改 的内容、进行修改的时间和修改人的姓名。 8)PO对需求文档中的内容拥有最终解释权。 9)PO需要提供的文档如下: 必须提供的文档:需求文档 非必须的文档:辅助其他人员理解需求的参考资料(比如行业规范,网站上的介绍,宣传资料,自己做的图表等等) 1.2.PD的职责与义务 1)PD的职责为按照需求文档进行界面和用户体验设计,输出产品为界面设计及相关说明 文档。 2)界面设计中应当完整体现需求文档中描述的全部功能。 3)界面设计不但应包含正常流程的界面和用户体验设计,也应当覆盖异常流程。 4)在不同页面中相同类型的元素(如:按钮、表格等),其样式应保持一致。 5)界面设计应直接体现最终产品的静态显示效果。 6)界面设计如以原型或屏幕截图的方式提供,那么其中应提供一份对基本的使用流程及一 些功能上的重难点进行描述的说明文档。 7)PD对界面设计中用户体验及显示样式部分拥有最终解释权。

Scrum敏捷开发框架规范 中文版

Scrum指南 Scrum的权威指南: 游戏规则 2013年7月由Ken Schwaber和Jeff Sutherland开发并维护

目录 Scrum指南的目的 (3) Scrum的定义 (3) Scrum理论 (3) 透明性 (3) 检视 (4) 调整 (4) Scrum团队 (4) 产品负责人 (4) 开发团队 (5) Scrum Master (5) Scrum事件 (6) Sprint (7) Sprint计划会议 (8) 每日Scrum站会 (9) Sprint评审会议 (9) Sprint回顾会议 (10) Scrum工件 (11) 产品待办列表 (11) Sprint待办列表 (12) 增量 (12) 工件的透明性 (12) “完成”的定义 (13) 结束语 (13) 致谢 (13) 人们 (14) 历史 (14) 翻译 (14) ?2014 https://www.360docs.net/doc/6e5197478.html, and ScrumInc. Offered for license under the Attribution Share-Alike license of Creative

Scrum指南的目的 Scrum是用于开发和支持复杂产品的框架。这份指南包含了Scrum的定义,其中包括Scrum的角色、事件、工件,以及把它们组织到一起的规则。Ken Schwaber和Jeff Sutherland创造了Scrum,Scrum指南也由他们撰写提供。他们是Scrum指南的后盾。 Scrum的定义 Scrum: Scrum是一个框架,在这个框架中人们可以解决复杂的自适应问题,同时也能高效并有创造性地交付尽可能高价值的产品。 Scrum是: ?轻量级的 ?容易理解的 ?难以精通的 自上世纪90年代初期以来,Scrum就已经应用于管理复杂产品的开发。Scrum不是开发产品的一种流程或一项技术,而是一个框架,在这个框架里可以应用各种流程和技术。Scrum能使产品管理和开发实践的相对功效(relative efficacy)显现出来,以便进行改进。 Scrum框架由Scrum团队及其相关的角色、事件、工件和规则组成。框架中的每个模块都有其特定的目的,对Scrum的成功实施和运用都至关重要。 Scrum的规则把事件、角色和工件组织在一起,管理着它们之间的关系和交互。Scrum 的规则会贯穿这份文档。 实施Scrum的方案根据情况不同而不同,在这里不作介绍。 Scrum理论 Scrum基于经验型流程控制理论,或者称为经验主义。经验主义主张知识源于经验,而决策基于已知的事物。Scrum采用迭代增量式的方法来优化可预测性和管理风险。 透明性、检视、调整是经验型流程的三大支柱,支撑起每个经验型控制流程的实施。 透明性 流程中的关键环节必须为那些对产出负责的人可见。要拥有透明性,就要为这些关键环节制定统一的标准,这样所有留意这些环节的人都会对观察到的事情有统一的理解。 例如: ?2014 https://www.360docs.net/doc/6e5197478.html, and ScrumInc. Offered for license under the Attribution Share-Alike license of Creative

SCRUM框架及基本知识

1什么是SCRUM 一个轻量级的软件开发方法 Scrum是一个敏捷开发框架,是一个增量的、迭代的开发过程.。在这个框架中,整个开发周期包括若干个小的跌代周期,每个小的的跌代周期称为一个Sprint,每个Sprint的建议长度2到4周。在Scrum中,使用产品Backlog来管理产品或项目的需求,产品backlog是一个按照商业价值排序的需求列表,列表条目的体现形式通常为用户故事。Scrum的开发团队总是先开发的是对客户具有较高价值的需求。在每个Sprint中,Scrum开发团队从产品Backlog中挑选最有价值的需求进行开发。Sprint中挑选的需求经过Sprint计划会议上的分析、讨论和估算得到一个Sprint的任务列表,我们称它为Sprint backlog。在每个迭代结束时,Scrum团队将交付潜在可交付的产品增量。 一个简单的开发框架 图表 1 一个简单的开发框架 Scrum由三个角色,六个时间箱,四个工件组成: 三个角色: 1. 产品负责人(Product Owner) 2. Scrum Master 3. Scrum团队 六个时间箱: 1. Sprint 2. 发布计划会议(Release Planning Meeting) 3. Sprint计划会议(Sprint Planning Meeting)

4. 每日站会(Daily Scrum Meeting) 5. Sprint评审会议(Sprint Review Meeting) 6. Sprint回顾会议(Sprint Retrospective Meeting) 四个工件 1. 产品Backlog(Product Backlog) 2. 发布燃尽图(Release Burndown Chart) 3. SprintBacklog(Sprint Backlog) 4. Sprint燃尽图(Sprint Burndown Chart) 一个经历过时间考验的开发过程 Scrum最早由Jeff Sutherland在1993年提出,Ken Schwaber 在1995年OOPSLA会议上形式化了Scrum开发过程,并向业界公布。之后,Scrum成为领先的敏捷开发方法之一,目前世界上有超过500家公司在使用Scrum。 2Scrum三个角色及其职责介绍 每个Scrum团队包括3个角色:产品负责人(Product Owner), ScrumMaster和 Scrum 团队。产品负责人 产品负责人的职责: 确定产品的功能,负责维护产品Backlog。 决定产品的发布日期和发布内容。 为产品的投资回报率(ROI)负责。 根据市场价值确定功能优先级。 在每个Sprint开始前调整功能和调整功能优先级。 在Sprint结束时接受或拒绝接受开发团队的工作成果。 产品负责人是一个人,而不是一个委员会。可能会有一些委员会向产品负责人提出建议或影响他的决策,但要想改变某条目的优先级必须先说服产品负责人。实施Scrum的企业可能发现这样会影响他们制定优先级和需求的方法。 为保证产品负责人的工作取得成功,企业中的所有人员都必须尊重他的决定。任何人都不得要求团队按照另一套优先级开展工作,团队也不允许听从任何人带有威胁恐吓性的指令。产品负责人

scrum开发流程

Scrum开发流程 一、什么是Scrum? 开发软件就像开发新产品,无法一开始就能定义软件产品最终的规程,过程中需要研发、创意、尝试错误,所以没有一种固定的流程可以保证专案成功。Scrum 将软件开发团队比拟成橄榄球队,有明确的最高目标,熟悉开发流程中所需具备的最佳典范与技术,具有高度自主权,紧密地沟通合作,以高度弹性解决各种挑战,确保每天、每个阶段都朝向目标有明确的推进。 Scrum 开发流程通常以30 天(或者更短的一段时间)为一个阶段,由客户提供新产品的需求规格开始,开发团队与需求方于每一个阶段开始时挑选该完成的规格部分,开发团队必须尽力于30 天后交付成果,团队每天用15 分钟开会检查每个成员的进度与计划,了解所遭遇的困难并设法排除。 二、Scrum角色定义及名次解释 (一)有关Scrum的角色定义

(二)有关Scrum的名次解释 三、Scrum的过程简单介绍 1、我们首先需要确定一个Product Backlog(按优先顺序排列的一个产品需求列表),这个是由Product Owner 负责的; 2、Scrum Team根据Product Backlog列表,做工作量的预估和安排; 3、有了Product Backlog列表,我们需要通过Sprint Planning Meeting(Sprint计划会议)来从中挑选出一个Story作为本次迭代完成的目标,这个目标的时间周期是1~4个星期,然后把这个Story进行细化,形成一个Sprint Backlog; 4、Sprint Backlog是由Scrum Team去完成的,每个成员根据Sprint Backlog再细化成更小的任务(细到每个任务的工作量在2天内能完成); 5、在Scrum Team完成计划会议上选出的Sprint Backlog过程中,需要进行Daily Scrum Meeting(每日站立会议),

SCRUM敏捷开发基础及失败成功案例分析

S C R U M敏捷开发基础及失败成功案例分析 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

什么是敏捷开发方法什么是SCRUM 有人在这个字面上下功夫,说敏捷就是反应要灵敏,动作要快捷;有人还在字面上进行延伸,说敏捷就是又好又快,或者就是多快好省;有人说敏捷就是光写代码不写文档;有人觉得敏捷就是没有制度,管理松散的工作方式;有人觉得只要敏捷了,就代表高软件交付水平。 那么,敏捷这个词到底由何而来呢在九十世纪中期,涌现了一批软件行业的激进人士,他们反对那些以过程为本的重型软件开发方法(例如:传统的瀑布开发方法)。在2001年,17位软件业界的专家们齐聚一堂,讨论正在兴起的轻量级开发方法(Lightweight methods)。专家们给这类轻量级的方法学起了一个新的名字叫做敏捷,并发布了敏捷开发者宣言。 敏捷方法强调以人为本,专注于交付对客户有价值的软件。在高度协作的开环境中,使用迭代式的方式进行增量开发,经常使用反馈进行思考、反省和总结,不停的进行自我调整和完善。 敏捷开发方法是这些轻量级方法的总称,它旗下有很多具体的开发过程和方法。主要的有:极限编程(XP)、特征驱动软件开发(FDD)、SCRUM开发方法等等。SCRUM开发方法是由Jeff Sutherland在1993年创立,Jeff也是制定敏捷宣言的17位专家之一。SCRUM借用了橄榄球运动中的术语——一个团队拿球向前冲。 严格的说,SCRUM是遵循敏捷方法的一个软件开发框架。在SCRUM框架中,融入敏捷开发的精神和思想,就被称作SCRUM开发方法。SCRUM是一个什么样的开发框架呢简单说,它由三个角色(Role),三种会议(Ceremonie),三项工件(Artifact)组成。 ·角色(Role):产品主管(Procuct Owner),他负责项目的商业价值;SCRUM师傅(ScrumMaster),他负责团队的运转和生产;以及自组织的团队。 ·会议(Ceremonie):迭代计划会议,每日晨会(daily scrum meetings),迭代回顾会议。

Scrum流程(个人整理版)

?Sprint 计划会议1:原始需求者、产品负责人及团队一起,确定任务优先级,定出Sprint 目标和既定产品Backlog。?Sprint 计划会议2:团队将既定产品Backlog 中的每一项细化成多个任务。每个任务完成的时间限定在一天内。?Scrum 每日例会:项目团队成员间的一个进度协调会议。会议每天都在同一时间同一地点举行。时间限定在15 分钟内。?Sprint 验收会议:由原始需求者或产品负责人断定实际所发布的功能是否与既定的Sprint 目标一致。 ?Sprint 回顾会议:项目团队分析Sprint中的成功经验和所遇到的障碍。 整个Sprint的周期(时间盒)确定为10天(两周),具体的时间安排为: ?Sprint会议(0.5天) ?开发(8天) ?验收&总结(0.5天) ?技术提升日(1天),自主学习技术 1、需求收集 1.1 需求的分类 需求可与分为业务团队的,也可以包括团度内部的,比如性能优化。 1.2 需求提交模板 ?–任务 ?–可用性问题(Bug) ?–性能问题 ?–概念想法 注意:即使是概念性的想法,目前技术上无法实现的想法都可以收集。

②优先级可从以下五种情况中选择 ?–特别的严重 ?–非常重要 ?–很重要 ?–普通 ?–低 注意:切忌将所有的任务的优先级都设置的非常的高,这里不提供非常紧急这样的表述。我们只会根据重要程度去执行任务,所以紧急的任务需要业务部门及需求方尽早的提出。 ③需求类型可以是两种类型 ?–详细需求 ?–毛坯需求 注意:我们的需求并不是要求一定要完整的,及时是一些非常毛坯的需求,也可以提交过来,毛坯的需求由产品负责人进行分析和梳理,暂不清楚的可选择搁置。 ④需求标题有自己进行书写,但是需要遵守的规范是采用动宾短语格式。 比如:―导出+CN酒店每天的PV、UV等流量数据‖ 注意:这里的需求内容一定是站长使用者角度是提出的,切勿出现专业的程序方面的表述:如添加一个导出的按钮。还有需要注意的是动词切忌使用大而宽泛的词,比如―管理‖,类似―管理关键词‖这样的需求是严格避免的,这样会使得要开发的内容变得没有清晰的边界。 ⑤详细描述需要按照用户故事的格式进行书写。具体用户故事格式的要求如下: 用户故事是从用户的角度来描述用户渴望得到的功能。需要注意的是用户故事不能够使用技术语言来描述,要使用用户可以理解的业务语言来描述。一个好的用户故事包括三个要素: ?角色:谁要使用这个功能。 ?活动:需要完成什么样的功能。 ?商业价值:为什么需要这个功能,这个功能带来什么样的价值。

敏捷开发scrum-燃尽图

“燃尽图”--保持项目可视性 “燃尽图解释与表示方法” 燃尽图,在Wiki上面没有单独的解释,只有在Scrum上面对其有基本的解释,燃尽图 燃尽图(burn down chart)是一个公开展示的图表,显示当前冲刺中未完成的任务数目,或在冲刺订单上未完成的订单项的数目。不要把燃尽图与挣值图相混淆。 A burn down chart could be flat for most of the period covered by a sprint and yet the project could still be on schedule. 我找寻了几张燃尽图,比较具有代表性意义: 手工燃尽图 详尽“燃尽图”

中国原创的说法:燃尽图(burn down chart)是在项目完成之前,对需要完成的工作的一种可视化表示。燃尽图有一个Y轴(工作)和X轴(时间)。理想情况下,该图表是一个向下的曲线,随着剩余工作的完成,“烧尽”至零。 燃尽图有多种表示方法与意义,每一个公司,每一个项目可能都不同,公司可以根据需要定制自己燃尽图,甚至进行特别的修饰与修改,但无论如何表示与修改,燃尽图具有一个共同的特点:就是可视性 “为什么需要燃尽图”? 上面展示的燃尽图的表示方法与意义,我们可以看到很多公司在实行敏捷过程都使用了这个燃尽图,显然这个燃尽图有它存在的合理与意义,在讨论这个意义之前,我们需要回答几个问题: 1.“燃尽图”到底谁会关注? 2.“燃尽图”需要谁去填写? 3.“燃尽图”应该如何填写? 上面这三个问题留给读者先去思考,随着后面章节讲述,上面三个问题会得一解决,读者可以带着以上三个看这篇文章,希望在读完文章之后,读者会自己答复以上三个问题。 “燃尽图”展示了一种新的管理工作报告,他向管理者与利益相关展示了目前产品BackLog完成情况与整体进度,管理层与利益相关者可以很容易地通过燃尽图了解实时的进度以及细节,管理层更能够实时把握产品的进度并做出正确的决策,并且预计风险,同时随时调整计划。 传统的项目报告一般是固定,系统的,向管理者展示了项目的进展,完成百分比,以及遇到的问题,需要解决与补救的方法,而实际上在开发过程当中,又会有不断的需求加进来,这种传统的项目报告无法应对这种需求,导致往往项目执行者将项目的失败都归咎于需求的增加与变化,并且责备管理层不能做出正确决策。

相关文档
最新文档