1.是什么?
敏捷开发是一个术语,用于描述迭代软件开发。 迭代软件开发通过在短增量完成工作(通常称为 冲刺 (sprint))。 冲刺通常长达一到四周。 敏捷开发通常与传统或瀑布式开发形成鲜明对比,后者会提前规划大型项目,并根据计划完成它们。每次冲刺交付生产质量代码都需要敏捷开发团队来加快速度。 所有的编码、测试和质量验证都必须在每一次冲刺 (sprint) 中完成。
敏捷开发是一种以用户需求进化为核心、迭代、循序渐进的开发方法。首先把 用户(客户 )最关注的软件原型做出来,交付或上线,在实际场景中去 快速 修改弥补需求中的不足,再次发布版本。通过一些敏捷实践方式,细化story ,提供更小的迭代。如此循环,直到用户(客户)满意。适用于需求不明确、创新性或者需要抢占市场的项目。
总结:简单的说,敏捷开发并不是追求前期完美的设计、完美编码,而是力求在很短的周期内开发出产品核心功能,尽早发布出可用的版本。然后在后续的生产周期内,按照新需求不断迭代升级,完善产品。
瀑布式开发:瀑布式开发的基本流程是 需求 → 设计 → 开发 → 测试 , 是一个更倾向于严格控制的管理模式 。 要求有明确的需求,大家按照需求一步步做好规划,每一阶段工作的完成是下一阶段工作开始的前提,每一阶段都要进行严格的评审,保证各阶段的工作做得足够好时才允许进入下一阶段。这种模式一般适用于需求比较明确、to B 端的项目。
2.二者的区别
1.工作方式
1.敏捷开发
(1)更加强调人的协作(团队之间,客户与团队之间),在高度协作的环境中使用迭代方式进行增量开发。
(2)客户可对每次迭代的成果提出修改意见,开发人员进行调整和完善。
(3)进行多次迭代直至完成产品交付。
2.瀑布式开发
(1)重视和强调过程文档,以文档驱动项目,将软件项目开发周期严格分为几个固定阶段(需求分析、系统设计、软件设计、编码、测试、交付),每个阶段结束都有对应的详细文档作为输出。
(2)上一个阶段的输出就是下一个阶段的输入,直至完成整个开发流程。
2.优点
1.敏捷开发
(1)阶段性成果可以在开发过程中被客户查验,从而降低项目开发的风险性。
(2)灵活性高,需求的变更可在任何时候进行。
2.瀑布式开发
(1)每个阶段目的明确,阶段人员完全专注于该阶段的工作,有助于提高阶段效率。
(2)由于存在详细的过程文档,在早期就能明确出项目的范围和概况,能够更有效的组织和调配资源开展项目。
3.缺点
1.敏捷开发
(1)最终交付的内容无法预测,预测和实际完成的内容经常会有很大的差异。
(2)敏捷需要高水平的协作以及开发人员和用户之间的定期沟通。业务和IT人员在沟通前需要做大量的准备工作,但很多情况下业务的沟通时间无法保证。
2.瀑布式开发
(1)开发过程中大量的文档极大的增加了工作量。
(2)项目后期才能展示成果给客户,增加了项目开发的风险(如果项目最终和客户预期差别很大,会造成项目延期和成本增加)。
(3)需求变更的成本较高(会导致按每个阶段去实施,导致时间成本过高)。
4.适用场景
1.敏捷开发
需求不明确、具有创新或者需要抢占市场的项目。
2.瀑布式开发
软件需求十分明确并且不会有频繁变化的项目。
5.什么是SCRUM?
SCRUM是一个适用于增量式产品开发的管理框架,由一个5-10人左右的跨职能和自组织的团队组成。
它提供了一个包含角色、规则和工件的结构。团队负责在此框架范围内创建和调整他们的流程。
6.基本术语意思
1.冲刺周期(Sprint)
中文译为冲刺、短跑,是Scrum的专有术语。冲刺周期,通俗的讲就是实现一个“小目标”的周期。一般需要2-4周时间。
2.用户故事(User Story)
用户的外在业务需求。拿银行系统来举例的话,一个Story可以是用户的存款行为,或者是查询余额等等。也就是所谓的小目标本身。
3.开发任务(Task)
由故事拆分成的具体开发任务。
7.三个工件
1.产品需求列表(Product Backlog):产品首先将需求按照优先级进行排列,产生一个Product Backlog。作用类似于传统开发中项目经理确定需求文档。产品待办列表就是产品的“what”。PO(产品负责人)通过讲故事的方式,让团队理解产品的目标,帮助整个团队对用户故事有充分和统一的理解。
2.迭代需求列表(Sprint Backlog):有了Product Backlog,我们需要通过Sprint Planning Meeting(Sprint计划会议)挑选出用户故事(Story)作为每次迭代完成的目标。
3.冲刺燃尽图(Sprint burn down):它表示的是剩余工作量与剩余时间的关系,用于提醒大家项目进度和要完成的任务。说白了就是记录当前周期的需求完成情况。
8.四个仪式
1.Sprint计划会(Sprint Planning Meeting):在每个Sprint开始时召开,由全体人员参加。这个会议主要有两件事情要确定。①确定当前Sprint的目标 ②选定当前Sprint要处理的最具价值的用户故事,创建Sprint Backlog(需求列表)
2.每日站会(Daily Scrum Meeting):一般在15分钟以内。团队成员相互交流任务的进展,计划以及遇到的困难。
3.Sprint评审会(Sprint Review Meeting):又叫Sprint演示会、Sprint展示会等,是团队用来展示当前Sprint开发成果的会议。
4.Sprint回顾会(Sprint Retrospective Meeting):用来回顾在当前结束的Sprint中的工作、进行经验总结、反思,并拟定响应的改进措施。
9.什么是敏捷扑克?
一、什么是敏捷估算扑克?
敏捷估算扑克,是一种为了达成共识的工作量估算技能。又称为Scrum扑克,用来估算开发用户故事的相对工作量。每一名团队成员拥有一副不同数字的卡片,他们可以从中出牌(抽出一张卡片),来表示他们开发一个用户故事的估算点数。
二、为什么要做估算?
1.用户需要一个预期,甚至是承诺,这个功能到底什么时候提供。
2.管理层需要可预测性,某些决策需要基于估算而做出,即便这个估算不是那么准确。
3.团队需要了解如何相互协作,在哪个时间节点能够拿到我所需要的接口或素材,据此相应的规划和安排自己的工作。
总结:估算可以帮助我们找到一个合理的计划,给用户、管理层以及团队一个稳定的预期。
三、估算点如何转化为工作量
在估算完故事点后,可以凭经验估算一个故事点的开发工作量,从而得到所有用户故事的工作量,也可以进行试验,试着开发一个用户故事,度量花费的工作量,得到开发效率,即在本项目中一个故事点需要花费多少工时,再去估算所有故事的工作量。