敏捷开发以实现最高的业务价值为核心, 通过不断梳理需求的优先级来消除在低价值需求上的资源浪费, 通过提高沟通效率来消除团队沟通上的资源浪飞, 鼓励团队在一起工作,使得团队信息更加紧密、更透明。敏捷开发通过细分项目的交付目标灵活轻便的管理方式,让团队能够及时市场急业务需求的变化,提高研发效率和生产力。
一种以人为核心,迭代,循序渐进的开发方法。
聚焦价值、应对不断变化的需求 敏捷开发并不追求前期完美的设计、完美编码,而是力求在很短的周期内开发出产品的核心功能,尽早发布出可用的版本。然后在后续的生产周期内,按照新需求不断迭代升级,完善产品。
敏捷(AGILE):
需求逐步完善;信息沟通透明;交付品客户满意可以满足不断变化的需求聚焦价值提升团队竞争力我们分别从计划、变更、管理透明度、交付、风险和团队合作方面 瀑布+迭代开发:
项目专注于遵循计划;团队对变更态度较保守、有严格流程控制;项目过程对业务部门不透明;专注于遵循计划、交付即结束;项目风险较高、软件越晚交付风险影响越大、缓释风险或问题修复成本高;仅对自己的工作负责、依赖文档沟通。敏捷开发:
对整个项目做一次粗略的估计、每一次迭代都有详细的计划;允许并鼓励需求变更、用业务价值驱动;业务人员、需求规划和开发人员之间的合作关系紧密;专注于对交付软件的不断修正和打磨;风险发现早、问题修复成本低;注重团队融合、面对面沟通、团队共同为最终交付的软件负责。敏捷开发Agile Development:一种以人为核心、迭代、循序渐进的开发方法。
来自橄榄球运动中的争球的动作:公开(OPENNESS)、勇敢(COURAGE)、尊重(RESPRECT)、专注(FOUCUS)、承诺(COMMITMENT),他是一个团队流程。
迭代是把一个复杂且开发周期很长的开发任务,分解为很多小周期可完成的任务,这样的一个周期就是一次迭代的过程,同时每一次迭代都可以开发出一个可以交付的软件产品。 Sprint迭代
用户故事是以一种形式简洁的、面向验收展开的功能或特性的描述。敏捷开发将用户需求被拆分为故事,以此作为团队交流、开发、测试和获得反馈的工作单元。 通过用户故事团队的客户角色、实现功能和业务价值这三个去修要素达成共识。 其完成的定义(Definition of Done):让所有干系人对交付的最终目标建立共识。
用户故事地图是一门在需求拆分过程中保持全景图的技术,可以将你的待办事项清单(backlog)变成一张二维地图 使得大家对项目从共享文档变成对产品取得共识 好的用户故事应该遵循INVEST规则:
独立的(Independent)便于沟通的(Negotiable)有价值的(Valuable)可估计的(Estimable)短小(Small)可测试的(Testable)产品负责人(Product Owner)————>产品代办事项列表Product Backlog(特性、功能、需求、改进、修复;会随着产品需求和项目的改变而不断的丰富) 迭代计划会议Sprint Planning————>迭代代办事务列表Sprint Backlog
开发团队(Team)、产品负责人(Product Owner)、敏捷教练(Scrum Master)
所有事件都是有时间盒限定的事件,也就是说每一个事件限制在最长的时间范围内。一旦 Sprint 开始,它的持续时间是固定的,不能缩短或者延长。而其他事件则可以在该事件的目标达成之后可以立即终止,如此确保时间被适当地使用而不会造成过程中的浪费。 Sprint 除了本身作为一个事件以外,它还是其他所有事件的容器,在 Scrum中的每个事件都是用来进行检视和适应的正式机会。这些事件都是被特别设计用来确保达成透明和检视。如果 Sprint不能成功地包含这些事件中的任何一个事件,导致透明化的降低,同时也会丧失进行检视与适应的机会。
发生在下个迭代开始前,一般是对下个迭代需求的讨论、澄清、细化,以保团队成员对需求的理解一致,帮助团队在下个迭代更快地进入到开发工作中。
对需求进行梳理,排序、拆分、细化和澄清;进行需求的拆分,生成用户故事,使得优先级高的需求被团队成员理解;能够支撑后续敏捷开发活动的开展发生在迭代的开始,PO、ScrumMaster和开发人员一起规划这个迭代的内容,即这个迭代完成哪些故事,预测在一个合理的条件范围内承诺能完成的工作量。
迭代目标以及迭代待办事项;拆分每个迭代的需求,生成Sprint迭代待办事项列表;帮助团队对细化后的需求的理解达成一致。成熟的敏捷团队可以将产品待办列表梳理会和计划会议合在一起。团队成员主要回答以下三个问题: 1、昨天完成了什么帮助团队完成冲刺? 2、今天打算做什么帮助团队完成冲刺? 3、什么因素阻碍了团队的前进之路?
若有遇到障碍,在找到对应的解决/协助人后,应在会后讨论具体的解决方案,这是一个很好的控制站会时间的方法。
迭代评审会议是在当前迭代结束前开发团队给用户(业务、产品负责人、利益相关者、管理人员等)展示成果的过程,团队展示的成果是符合事先约定好的“完成定义”的,展示的成果不一定是完整的产品,但需是一项可以使用的功能。
确认系统功能和用户期望是否一致;收集用户反馈,明确后续目标;检查和调整正在构建的产品是否为客户真正想要的(确保开发沿着正确的方向走);经常受到反馈消息可以让Scrum团队更好的理解产品与业务需求。这个会议和迭代回顾会都是“检查与调整”的活动。
这个会议出现在迭代演示会后,下一个迭代开始前。在进行迭代回顾会时,开发团队、PO、ScrumMaster一起来对当前迭代哪些实践是做得好的(Scrum、技术、工作环境/氛围等)、哪些实践是可以做得“更好的”,对于哪些可以做到更好的要制定好相应的解决方案,并指定相应的任务跟踪人。
使整个团队回顾整个迭代的过程和结果;总结经验,寻找最佳的工作方式,自我改进。迭代演示会一样也是“检查与调整”的活动,两者的区别是,迭代演示会是检查调整产品,而迭代回顾会使检查调整过程。到这里大家应该明白了,Scrum是一个持续改进的过程。
Scrum 的工件以不同的方式展现工作和价值,可以用来提供透明性以及检验和适应的机会。Scrum 中所定义的工件能最大化关键信息的透明性,来保证 Scrum 团队成功地交付完成的增量。
Sprint 代办事项列表是一组为当前 Sprint 选出的产品代办事项列表条目,外加交付 产品增量和实现 Sprint 目标的计划。Sprint 代办事项列表定义了开发团队把产品代办事项列表条目转换成“完成”的增量 所需要执行的工作。
Product Backlog 功能点被放到Sprint的固定周期中,Sprint Backlog 会因为如下原因发生变化:
随着时间的变化,开发团队对于需求有了更好的理解,有可能发现需要增加一些新的任务到Sprint Backlog中。
程序缺陷做为新的任务加进来,这个都做为承诺提交任务中未完成的工作。
增量是一个 Sprint 完成的所有产品待办列表项的总和,以及之前所有 Sprint 所产生的增量的价值总和。在 Sprint 的最后,新的增量必须是“完成”的,这意味着它必须可用并且达到了 Scrum 团队“完成”的定义的标准。增量是在 Sprint 结束时支持经验主义的可检视的和已完成的产品组成部分。增量是迈向愿景或目标的一步。无论产品负责人是否决定发布它,增量必须可用。
用开放的心态看待变化 掌握相关的知识,技能,工具 在实践中学习 业务部门和科技更紧密的合作
业务人员和开发人员一起工作,从依赖书面沟通转变为面对面的交谈,沟通效率更高,信息更透明减少不必要的工作,尽量简洁。让团队更加专注于业务价值的交付以交付产品来衡量团队和项目进队,让团队更加专注于交付产品本身尽早、持续的交付软件,让业务需求尽早实现,尽快让业务部门看到功能欢迎对未开发的需求进行调整,紧跟快速变化的市场需求对技术的精益求精,不断学习新的技术和工具,对设计的不断完善将不断提升敏捷性建议团队定期回顾总结,如何做的更好,并相应地调整团队的工作方式,鼓励团队自我完善、激励团队成员,给予资源及充分的技术培训,相信他们能够完成任务,激发团队成员的工作热情和斗志,从局部的工作任务提交,向“端到端”交付结果负责。参考文章:Scrum中文网