Scrum(不仅仅适用于软件开发)是一种用于开发创新产品和服务的敏捷方式(思路):
分析影响项目进度:业务逻辑难、评审不及时、业务变更频繁等等
高质量交付的因素:表数据存储情况(表主键没定义)、需求理解有偏差、单元测试不够,
将工作的类型分为5个域,每个域中有对应的解决方法。
存在不可预测性的一些问题。这些问题如果有正确答案,我们可能也只是事后知道。在复杂域工作时,需要采用创造性的,创新的方法,需要为试验活动建立一个容忍失败的环境。在这个环境中,探索、感知、响应的能力非常重要
一些问题做起来困难,但是能够找到一些解决方案,可能需要专家根据实际经验找出这些答案,比如:性能优化,参数调优
简单问题的正确答案是显而易见的。
快速做出响应,立即采取行动
不知道当前所处的是哪个域
看板与scrum一样,都是敏捷开发的方法。看板适用于流程反复无常,常常被打断等工作场景。看板提倡以下要素:
Scrum是一个用于组织和管理工作的框架。在这个框架的基础上,各个组织可以添加相关工程实践特有的实现方式以及在实现Scrum实践时所采取的特定方法。
随着冲刺过程中了解的信息越多,估算可能会发生变化。让团队做出承诺会导致团队为实现承诺而牺牲质量。
产品列表(PBI)-》冲刺规划-》冲刺列表(拆分的任务),冲刺执行(每日站会)
产品列表 –》 冲刺规划 -》 冲刺列表 -》 任务列表
牢记三个问题:
每日站立会是必不可少的,通过检视与调整,能够帮助团队建立一个快速、灵活的工作流。
在冲刺回顾活动结束时,找出数量适中的过程改进项并承诺在下一个冲刺中采用:团队有个磨合期,前期会遇见一些问题,通过检视与调整,重新梳理工作流,抽出一些行动项
传统的计划驱动开发常常称为“瀑布开发”,也称为顺序式开发,按照需求、设计、编码、测试、运行,固定过程执行。计划驱动要求需求前后不会发生大的变更,前期设计也要做的尽可能可扩展。计划驱动要求定义良好的过程和检查点。
Scrum能很好地处理高不确定性而导致的很难做出宏观预测。
计划驱动倾向于将相同的工作类型放到同一个阶段执行(整体推进),像需求调研阶段、设计阶段、开发阶段。Scrum是在一个迭代中包含了设计、开发、测试等。Scrum的一个迭代周期时间范围是1到4周。
Scrum包含的原则:
迭代是分周期性,增量是逐步构建。迭代+增量=冲刺。每个冲刺都包含分析、设计、构建、集成和测试。这种模式又被称为蜂拥式开发。每个冲刺能够与前期已开发的特性进行集成与测试,否则就不能认为完成。
Scrum认为只要是构建新东西,就必然存在一定的可变性,产品创建过程很复杂,无法事先给出详尽、严密的完整定义。
通过迭代开发和增量开发,经常性的检视、调整规则的指导下,可以同时解决多种类型的不确定性。
不到最后时刻,不轻易做决定
当不做决定的成本大于做决定的成本(设计、开发时间成本)时,就要做决定了。当了解到更多的信息,做出的决策菜会更明智,而且决策成本也会很低
偏好适应性、探索式的方法
试错。探索指的是通过某些活动来获得知识,例如构建原型。
通过验证工作结果来度量进度。
在scrum中,重要的不是开始了多少工作而是完成了多少对客户有价值的工作
在scrum中,质量并不是测试团队在最后阶段测出来的,而是保证在每个迭代中,哪怕是在最后把系统提交到测试中心,自己又自测了一遍。
最小够用满足工作可以开展
计划驱动重文档,可追溯
计划驱动原则:以过程为中心,定义出良好的过程和检查点(多维度定义:变更项记录创建任务、延期风险项记录、问题记录形成检查单),在一开始就消除了结果的不确定性,再消除方法的不确定性,承认第一次就做对,如果第一次做不对,按照规定的先后顺序,偏差会越来越大
敏捷原则:以价值为中心,承认第一次就做不好,承认不确定性因素的存在,例如变更。通过探索式、试错式方式,发起迭代,快速反馈,对假设快速验证。
完成的定义
时长限定
已经满足要求的时候还要镀金
用户故事描述了scrum在需求处理方式上与计划驱动的不同。Scrum以用户故事的方式创建占位符,明显侧重于对话沟通明确需求细节。
在scrum中,需求细节是在开发期间持续不断的对话中商讨出来的。
通过业务人员或看需求文档,要求开发人员梳理出业务逻辑处理,或xmind功能图,把业务需求说明白
用户故事包含:卡片(card) – 提醒、会话(conversation) – 探讨、确认(confirmation) – 验收,简称3C。一个功能模块(特性)可以理解成是一个用户故事。要求用户故事间松散耦合,相互独立,依赖程度不高,这样便于优先级排序。
卡片不是为说明需求的所有组成信息而设的。它存在的意义是提醒利益干系人、产品负责人及开发团队进行更深入的讨论。卡片可以看成是一个引子
在卡片的基础上,探讨需求、设计、构建、测试等的细节。
验收的标准,达到的满意程度
用户故事的详细程度要有大小。用户故事类型有:史诗级故事、特性故事、冲刺迭代故事、非功能性需求故事(技术故事)、知识获取型故事。
跨越一整个或多个版本,能够为概要产品规划和发布规划提供支持。史诗下包含更详细的用户故事。史诗是一个很好的占位符,等将来到合适的时间再创建大量更加详细的故事。
评定故事写得好的6大标准INVEST:独立、可协商、有价值、可估算、小、可测试.
用户故事间松散耦合,相互依赖程度不高,便于优先级排序
故事细节应该是可协商的,不应 该是以需求文档的形式写死的。
写死的坏处:出现问题会相互指责,彼此推卸 – 协商不够,双方都有责任。
开发人员:如果你想要,就该把它写到文档里
业务人员:你明显没有理解需求文档
开展这一块的用户故事,要明确它的意义有哪些,有哪些价值
估算指明故事的大小,因此也指明故事的工作量和成本
用户故事是放到冲刺中执行的,要求要做的故事应该大小合适的。
可测试意味着故事要有相应的优质接收标准。
作为系统级约束,像指定的浏览器型号
收集故事有两种方式:用户故事研讨会、绘制故事地图
组织大家集体进行头脑风暴,讨论预期的业务价值,可以自上而下讨论(从史诗级往下讨论),也可以自下而上讨论(想要的系统功能有哪些)
其基本思想是将概要性用户活动分解为工作流,工作流还可以继续分解成一套明确的任务。
产品列表是一个按优先级顺序排列的、预期产品功能列表,可以看成是功能模块列表,也可以看成是用户故事列表。大多数PBI都是以故事点或理想天数来估算的。
好的产品列表都表现出相似的特征:详略得当、涌现的、做过估算的、排列好先后顺序的。
只要系统还在用,产品列表就永远不会完成或冻结。
每个PBI大有大小估算,相当于开发这个条目需要完成多少工作。
梳理指三大重要的活动:确立并细化PBI;对PBI进行估算;为PBI排列优先排序
增删改查:
改:细化、估算、排序
版本工作流规划了版本要做的特性有哪些,冲刺工作流细化了特性
产品列表的梳理活动必须支持版本规划活动。
细化要做的的产品列表,并将产品列表放到冲刺中实现。
当一个冲刺正在执行时,有两三个准备好的冲刺故事已放到管道中。项目迭代不能停止下来
将产品列表按照领域拆分成领域列表,交由领域团队在进行拆分,例如电商系统,拆分成用户、支付等领域。
组合列表(包含史诗)、程序列表(包含特性)和团队列表(包含可以放入冲刺的用户故事)
每个团队需要自己特有的列表
估算的条目、何时估算、如何估算、估算单位、规划扑克
速率概念、速率范围、预测速率
变更会影响之前的工作努力白费,而且还可能损害团队的士气和信任关系。针对变更,产品负责人与团队进行一次坦诚的、关注影响性分析的讨论,并做记录变更,识别出哪些变更项可以必须做,哪些变更项可以延期做。
计划驱动消除了不确定性,一切都是按照事先规划好的过程进行,所以注重文档输出,可以追溯,注重检查单。
梳理出检查单,就要能够识别出问题有哪些,注重问题记录
检查单多维度记录:需求变更(内部、外部)、代码规范检查单、安装部署检查单、重点测试项检查单
当开发团队积累巨量手工测试用例时,可以考虑采用自动化测试。
团队管理问题是个繁杂类型的问题,各个团队组织应该根据自己的实际情况,制定符合自己团队管理的实现方式及特有方法。
团队计划由团队成员个人活动组成。当出现问题时,项目负责人第一时间不应该是去追究责任,因为大家是一个团队,出了问题,在其他人看来是这个团队出了问题,不会是具体的某个人的问题。所以项目负责人第一时间应该组织大家去排查问题原因,找到问题原因,并落实到以后的工作流程中,如果团队中因为该问题出现相互指责等负面情绪,应积极的引导大家到心平气和解决问题的轨道上来。工作要做到细