普及篇:敏捷开发之Scrum?!

来源:互联网 发布:java工程师培训机构 编辑:程序博客网 时间:2024/06/15 21:32
【起源】
        1986年,竹内弘高和野中郁次郎首次将Scrum应用于产品开发。受敏捷思想的影响,以及对世界范围内软件项目的研究,Jeff Sutherland在 1993年首次在Easel公司定义了用于软件开发行业的Scrum流程,并开始实施。1995年Jeff Sutherland和Ken Schwaber规范化了Scrum框架。2001年敏捷宣言及原则发布、敏捷联盟成立。
 
【Scrum是什么】
        scrum从1990年代开始逐渐引起广泛关注,是一种以人为核心、迭代、循序渐进的开发方法。强调以人为本,专注于交付对客户有价值的软件。是一个用于开发和维持复杂产品的框架。
        在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的建议长度是2到4周(互联网产品研发可以使用1周的Sprint)。在Scrum 中,使用产品Backlog来管理产品的需求,产品backlog是一个按照商业价值排序的需求列表,列表条目的体现形式通常为用户故事。Scrum团队总是先开发对客户具有较高价值的需求。在Sprint中,Scrum团队从产品Backlog中挑选最高优先级的需求进行开发。挑选的需求在Sprint计划会议上经过讨论、分析和估算得到相应的任务列表,我们称它为Sprintbacklog。在每个迭代结束时,Scrum团队将递交潜在可交付的产品增量。
    Scrum流程如下图:
图片
 
【具体流程】
        产品负责人将整个产品设计成产品backlog。产品backlog就是一个个需求列表。(backlog可以理解为需求或者要做的事情)
 
        召开产品backlog计划会议,预估每个backlog的时间,确定哪些backlog是需要在第一个sprint中完成的,即sprint的backlog。(sprint可以理解为一个团队一起开发的一个任务集合)
         把sprint的backlog写在纸条上贴在任务墙,让大家认领分配。(任务墙就是把未完成、正在做、已完成的工作状态贴到一个墙上,这样大家都可以看得到任务的状态)
        举行每日站立会议,让大家在每日会议上总结昨天做的事情、遇到什么困难,今天开展什么任务。(每日站立会议,是在每天早上定时和大家在任务墙前站立讨论,时间控制在15分钟内)
        绘制燃尽图,保证任务的概况能够清晰看到。(燃尽图把当前的任务总数和日期一起绘制,每天记录一下,可以看到每天还剩多少个任务,直到任务数为0 ,这个sprint就完成了)
        sprint评审会议是在sprint完成时举行,要向客户演示自己完成的软件产品
        最后是sprint总结会议,以轮流发言方式进行,每个人都要发言,总结上一次sprint中遇到的问题、改进和大家分享讨论。
 
【框架结构】
  3 种角色
        产品负责人(ProductOwner):产品负责人是产品最终用户的代表,负责确定产品的方向和愿景,定义产品发布的计划、内容和优先级。Product Owner 要不断的与开发团队沟通,保证团队在做从业务角度来说最正确的事情。
        开发团队(DevelopmentTeam):一个自组织的跨技能的小团队,承担实际开发工作,负责在周期性的迭代中不断的交付有价值的工作。开发团队通过集体共同交付价值,而不是通过个体。
        Scrum 主管(Scrum Master):Scrum 定义了一个全新的全职工作角色 Scrum Master。Scrum Master 负责确保团队合理的运作 Scrum,帮助团队移除实施中的障碍。

   3 种工件
        产品待办事项列表(ProductBacklog):产品待办事项列表是一个排序的列表,包含所有产品需要的东西,也是产品需求变动的唯一来源。产品负责人负责产品待办事项列表的内容、可用性和优先级。
        Sprint待办事项列表(Sprint Backlog):这是一个迭代计划会议的输出,包含开发团队在迭代周期内所要完成的工作列表。每个迭代周期都需要交付高质量的产品增量。产品增量必须满足 Scrum 团队对完成标准的定义。
        燃尽图(Burn-down Chart) :显示了Sprint中累积剩余的工作量,它是一个反映工作量完成状况的趋势图。

   5 个活动
        迭代计划会议(Sprint PlanningMeeting):在每个迭代之初,开发团队和Product Owner 共同来计划在迭代周期内要完成的工作。Product Owner 负责向团队讲解要完成的工作的内容,开发团队负责对工作进行估计。
        每日站立会议(DailyStandup Meeting):每天,开发团队和产品负责人都要进行一个短暂的沟通。在会议期间,每个团队成员都要回答 3 个问题:“我昨天做了什么?”,“我今天准备做什么?”,“我遇到了什么问题?”。
        迭代评审会议(Sprint ReviewMeeting):在迭代周期结束时,开发团队向产品负责人及所有干系人进行演示,并接受反馈。
        迭代回顾会议(SprintRetrospective Meeting):迭代周期结束时,Scrum 团队通过会议来对迭代的过程进行总结,以促使团队自我持续改进。
        产品待办列表精化会议(ProductBacklog Refinement Meeting):产品待办事项通常会很大,也很宽泛,而且想法会变来变去、优先级也会变化,所以产品待 办事项列表梳理是一个贯穿整个Scrum项目始终的活动。通过会议的形式,对 Product Backlog 进行精化,以促进和加深团队对产品的理解。

   5个价值
        承诺(Commitment):愿意对目标做出承诺。
        专注(Focus):把你的心思和能力都用到你承诺的工作上去。
        公开(Openness):Scrum 把项目中的一切开放给每个人看
        敬重(Respect):每个人都有他独特的背景和经验,互相尊重及学习。
        勇气(Courage):有勇气做出承诺,履行承诺,接受别人的尊重。
 
【Scrum理论】
        Scrum 基于经验主义。经验主义主张知识源于经验,而决策基于已知的事物。Scrum 采用迭代增量式的方法来优化可预测性和管理风险。透明性、检视、调整是经验型流程的三大支柱,支撑起每个经验型控制流程的实施。
        透明性(Transparency):在软件开发过程的各个环节保持高度的可见性,影响交付成果的各个方面对于参与交付的所有人、管理生产结果的人保持透明。
        检视(Inspection):开发过程中的各方面必须做到足够频繁地检验,确保能够及时发现过程中的重大偏差。
        调整(Adaptation):如果检验人员检验的时候发现过程中的一个或多个方面不满足验收标准,并且最终产品是不合格的,那么便需要对过程或是材料进行调整。调整工作必须尽快实施,以减少进一步的偏差。