敏捷开发
以前经常听同行说起敏捷开发,自己现在的公司也使用的敏捷开发,发现敏捷开发实际中有很多版本,自己先写一写别人关于敏捷的观点,希望通过自己不断的总结和学习,以后可以写出自己的一些观点。
1.什么是敏捷开发
敏捷开发是一种一人为核心、迭代、循序渐进的开发方法。他不是一门技术,是一种开发方法,也就是软件的开发流程,他会指导我们用规定的环节去一步一步完成项目的开发;而这种开发方式的主要驱动核心是人;他采用的是迭代式开发;
2.为什么说以人为核心
以前学过瀑布开发模型,他是以文档为驱动的,在瀑布的整个开发过程中,要写大量的文档,把需求文档写出来后,开发人员都是根据文档进行开发的,一切以文档为依据;而敏捷开发他只写有必要的文档,或尽量少写文档,敏捷开发注重的是人与人之间,面对面的交流,所以他强调以人为核心。(自己实际的工作场景中,Product Owner,会拆分Scope,每组Scrum Team认领,并对认领的Scope进行SA(客户故事)分析,形成设计文档上传SVN受控,测试人员根据此文档进行测试分析形成测试文档)
3.什么是迭代
迭代是指把一个复杂且开发周期很长的开发任务,分解为很多小周期可完成的任务,这样的一个周期就是一个迭代过程;同时每一次迭代都可生产或开发处一个可以交付的软件产品。
4.什么是Scrum
Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作,把一个开发流程的名字取名为Scrum,就能想象开发团队在开发一个项目时,像打橄榄球一样迅速、富有战斗激情,人人你争我抢的完成它,并感到兴奋。而Scrum就是这样的一个开发流程,运用该流程,你就能看到你团队高效的工作。
Scrum标准释义:Scrum是一个框架,在这个框架中人们可以解决复杂的自适应问题,同时也能高效并有创造性的交付尽可能高价值的产品。
借鉴:Scrum是一种团队管理工作的方式,其将工作分解为较小的工作单元,并在周期型固定的时间段内持续的交付工作单元。
用户故事:可以使用特定的格式描述,其描述了一个对于客户有价值的工作,而且可以在一个迭代周期内完成。
Scrum的框架结构通常由”3 of 3s“组成,即3种角色,3种事件,3种工件。
5.Scrum开发流程中的三大角色
产品负责人Product Owner
主要负责确定产品的功能和达到要求的标准,指定软件的发布日期和交付的内容,同时有权利接受或拒绝开发团队的工作成果。Product Owner要不断的与开发团队沟通,保证团队在做从业务角度来说最正确的事情。(在CS端的软件产品设计过程中,还要设计其他多个部门,包括机械、电气等等,Product Owner还要负责部门间的项目沟通)
Scrum教练Scrum Master
Scrum定义了一个全新的全职工作角色Scrum Master。主要负责整个Scrum流程在项目中的顺利实施和进行,以及清除挡在客户和开发工作之间的沟通障碍,使得客户可以直接驱动开发。
开发团队Scrum Team
主要负责软件产品在Scrum规定流程下进行开发工作,人数在5-10人左右,每个成员可能负责不同技术方面,但要求每个成员必须要有很强的自我管理能力,同时具有一定的表达能力;成员可以采用任何工作方式,只要能打到Sprint的目标。
5.1 3种事件(Events)
迭代计划会议(Sprint Planning Meeting):在每个迭代之初开发团队和Product Owner共同来计划在迭代周期内要完成的工作。Product Owner负责向团队讲解要完成的工作的内容,开发团队负责对工作进行评估。
每日站立会议(Daily Standup Meeting):每天,开发团队和产品负责人都要进行一个短暂的沟通。在会议期间,每个团队成员都要回答3个问题:“我昨天做了什么”,“我今天准备做什么”,“我遇到了什么问题”。
迭代评审会议(Sprint Review Meeting):在迭代周期结束时,开发团队向产品负责人即所有干系人进行演示,并接受反馈。
5.2 3种工件(Artifacts)
产品待办列表(Product Backlog):这是一个Product Owner想要交付的产品功能列表。Product Owner负责维护该列表,并且列表项按照交付优先级进行排序。
冲刺待办列表(Sprint Backlog):这是一个迭代计划会议输出,包含开发团队在迭代周期内所要完成的工作列表。
产品增量(Product Increment):每个迭代周期都需要交付高质量的产品增量。产品增量必须,满足Scrum团队对完成标准(Definition of Done);
团队在迭代结束时,通过回顾会议可以改进团队以交付更大的价值。所以,现在迭代回顾会议已经成为了框架中第4种会议。
迭代回顾会议(Sprint Retrospective Meeting):在迭代周期结束时,Scrum团队通过会议来对迭代的过程进行总结,以促使团队自我持续改进。
产品待办列表精化会议(Product Backlog Refinement Meeting):通过会议的形式,对Product Backlog进行精化,以促进和加深团队对产品的理解。
项目计划会议(Project Planning Meeting):项目启动会议
产品发布计划会议(Product Release Planning Meeting):知道产品发布的计划
4.1Scrum理论
Scrum基于经验主义。经验主义主张知识源于经验,而决策基于已知的事物。Scrum采用迭代增量式的方法来优化可预测性和管理风险。透明性、检视、调整是经验型流程的三大支柱,支撑起每个经验型控制的实施。
透明性(Transparency):流程中的关键环节必须为那些对产出负责的人可见。例如,负责完成工作和验收工作的人必须对“Definition of Done”有一致的定义。
检视(Inspection):Scrum的使用者必须经常检视Scrum的工件和完成Sprint目标的进度,以发现不必要的偏差。
调整(Adaptation):如果检视者发现流程中的一个或多个方面背离了可接受的标准,并且将会导致产品不合格时,就必须对流程本身或者流程化的内容进行调整。Scrum通过所提供的多种时间来及时调整以缩小偏差。
4.2Scrum核心价值观
承诺(Commitment):我们对团队承担的工作有了更大的掌控,更加坚定了对成功的承诺。
专注(Focus):我们将全部精力和技能都聚焦在所承诺的工作上,团队同心协力来促使更快的交付。
公开(Openness):团队通过自己的方式共同完成工作,每个成员都对进展和问题了如指掌。
敬重(Respect):团队中的每个人都有特定的背景和经验,互相尊重,谦虚学习。
勇气(Courage):我们不是一个人在战斗,有了整个团队的支持,我们有了更大的勇气来进行挑战。
(结合自己的工作场景会有调整:Plan Meeting→SA分析→(Sprint 2 Weeks 第一周结束会有Review Meeting,第二周开始会有Refine Meeting)→Retrospective Meeting)
6.什么是Sprint
Sprint是短距离赛跑或者“冲刺”的意思,这里指的是依次迭代,而一次迭代的周期是4周(或者2周),也就是要把依次迭代的开发内容以最快的速度完成买这个过程称为Sprint
7.如何进行Scrum开发
①首先需要确定一个Product Backlog(按有限顺排列的一个产品需求列表),这个是有Product Owner负责的
②Scrum Team根据Product Backlog列表,做工作量的预估和安排;
③有了Product Backlog列表,我们需要通过Sprint Planning Meeting来从中挑选出一个Story作为本次迭代完成的目标,这个目标的时间周期是1~4周,然后把这个Story进行细化形成一个Sprint Backlog;(自己的工作场景中对Feature(而非Story,Story为客户故事,是对Feature的细分,放入SA分析中更合理一点)的拆分引入了Point,即两周一个Sprint为1.0个Point,对每个Feature的工作进行评估和量化,便于管理和推进)
④Sprint Backlog是由Scrum Team去完成的,每个成员根据Sprint Backlog再细化成更小的任务(细到每个任务的工作量在2天内能完成);(这个目标过于理想化,实际工作场景中,一个Feature从SA到Design到实现再到做UT/MT/IT/ISV需要一个流程的支撑,甚至一个bug的修复都需要对整个模块的代码链路进行梳理)
⑤在Scrum Team完成计划回忆上选出的Sprint Backlog过程中,需要进行Daily Scrum Meeting,每次会议控制在15分钟左右,每个人都必须发言,并且要向所有成员当面汇报你昨天完成了什么,并且向所有成员承诺你今天要完成什么,同时遇到不能解决的问题也可以提出,每个人回答完成后,要走到黑板前更新自己的Sprint burn down(Sprnt燃尽图);
⑥做到每日集成吗也就是每天都要有一个可以成功编译、并且可以演示的版本;很多人可能还没用过自动化的每日集成,其实TFS就有这个功能,它可以支持每次有成员进行签入操作的时候,在服务器上自动获取最新的版本,然后在服务器上自动获取最新版本,然后在服务器中编译,如果通过则马上再执行单元测试代码,如果也全部通过,则将该版本发布,这时一次正式的签入操作才保存到TFS中,中间有任何失败,都会用邮件通知项目管理人员;
⑦;当一个Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,这时,我们要进行Sprint Review meeting(演示会议),也称为评审会议,陈皮负责人和客户都要参加(最好本公司老板也参加),没一个Scrum Team成员都要向他们演示自己完成的软件产品(这个会议非常重要,一定不能取消)
⑧最后就是Sprint Retrospective Meeting(回顾会议),也称为总结会议,以轮流发言的方式进行,每个人都要发言,总结并讨论改进的地方,放入下一轮Sprint的产品需求中。