ACP-发现与解决问题

最近在着手准备ACP考试,仔细看了下相关的书籍,对每章知识点进行相应的整理,想着记录下来,后续如有更好的理解,再回头更新。
之后会按照以下目录进行梳理:

  • 敏捷的理念
  • 价值驱动交付
  • 干系人管理
  • 打造高绩效团队
  • 适应性计划
  • 发现与解决问题
  • 持续改进
  • 敏捷的实践
发现与解决问题
  • 问题概述
    敏捷的核心是为了持续改进,针对过程中发现的问题,及时反馈和修正,通过高频次的反馈,发现问题,分析问题,解决问题。
    尽早发现问题和处理变更能有效地减少重复工作从而降低成本,因而缺陷循环时间的概念应运而生,即故障引入到修复的时间,长短代表来对应的修复成本。
    问题的处理流程一般如下,可以通过pdca来理解:

    • 定义问题;
    • 收集信息
    • 分析原因
    • 备选方案
    • 选择方案
    • 实施方案
    • 跟踪反馈
    • 问题是否被解决,如有:结束;没有:重新定义问题
  • 发现问题
    以下是发现问题的多个途径和方法:
    每日站会:站会上的第三个问题:遇到了什么阻碍,就在要尽早发现团队成员在项目中遇到的问题,尽早曝光,及时解决,而不是等到客户抱怨不断或者等到回顾会再来总结;
    站会只需要明确问题三要素即可:问题是什么?谁来解决?什么时间解决?
    循环时间:从任务开始到任务结束的时间。任务结束的定义:获得了客户的验收,因为这样才能交付商业价值,才算真正的完成;
    循环时间和在制品数量有很大关系,而在制品会带来浪费、返工和效率的下降,敏捷就是为了最小化循环时间;
    公式:循环时间 = 在制品数量/团队吞吐量;
    吞吐量在于预测团队未来的绩效,循环时间可以对客户就交付日期做可靠的承诺。
    故障泄漏
    故障是无法避免的,但是可以针对“已发现的故障泄漏数量”来追溯这类故障产生的原因,通过这个环节帮助团队不断评估并提高质量保证和质量控制的效率。
    质量标准
    质量是产品的生命,发现问题&解决问题的目的就是为了确保交付高质量的产品。
    质量标准和时间会包含如下内容:

  • 用客户验收来衡量产品质量,即客户的满意才可以作为验收标准;

  • 尽可能自动化测试;

  • 确保每个迭代都进行测试;

  • 在下个迭代前,至少修复90%的已发现缺陷;

  • 鼓励质量保证和质量控制人与开发、业务一起工作,对每个功能特性的验收标准达成一致理解;
    在评估质量时,可以借助一些工具,比如:控制图、趋势图、根本原因分析、鱼骨图、流程图等
    趋势图:基于现实的数据来预测将来的可能性,比如:在累计流量图中,可以通过趋势分析来预测完工的日期;
    控制图:控制图是用来确定一个过程是否稳定,或者是否具有可预测的绩效,是属于质量控制的常用工具。控制图的元素主要包括:

    • 均值;
    • 控制界限,常被设置在正负3西格玛处
    • 规格界限(客户能接受的最大偏差)
    • 失控(判定失控的范围:超出界限或是连续7个点在同一侧)
    • 七点原则
    • 非随机原因
  • 解决问题
    解决问题的活动

    • 持续集成:持续集成是敏捷项目管理中尽早发现问题的一个典型应用,在现在项目中使用越来越多;
      有如下几点好处:

      • 及时获悉代码合并的错误
      • 尽快修复错误而不是拖延到发布
      • 及时获取反馈信息
      • 进行频繁的单元测试
      • 快速回退版本
        集成测试缩短了问题解决的周期,降低了变更应对的成本;
    • 风险探测:是研究探索性问题的一个快速方法,通过前期小规模实验和探测来降低项目的风险。
      “快速失败”的模式,相比于把剩余的资源和资金投入到最终必将失败的项目中去,“快速失败”是有益的,节省成本&消除浪费。

    • 频繁的确认与验证:通过此类操作,用以改进和提升产品交付的质量;其实在项目中很多实践都或多或少的运用到:

      • 结对编程:立即反馈;
      • 单元测试:极限编程上一步就是单元测试,持续集成同理,反馈都很快;
      • 客户合作:频繁地跟客户合作和增量交付,及时得到客户反应和确认,更好的交付高质量产品;
      • 每日站会:每天反馈进展和障碍;
      • 评审会:为来确保交付给客户是被需要的,也是一种确认和验证。

      频繁的验证也是为了尽早发现问题,将变更成本降到最低;

    • 测试驱动开发(TDD):主要流程包括:测试、编码和重构;
      主要优点:

      • 聚焦:聚焦于测试,出发点还是功能需求,确保功能是满足客户需求的;
      • 全面:在编码前编写测试用例可以最大限度地对代码进行充分的测试,更高的测试覆盖率会提升系统的质量;
      • 早期:越早、越频繁的测试会及时发现开发过程中的问题,避免问题留到后面产生昂贵的代价和修复成本;
      • 灵活:小规模开展单元测试可以提升系统的可扩展和灵活性;

      存在的不足:

      • 同一个人编写测试代码和编码,会对需求的测试和编码存在同样的误解;
      • 对用户接口类的功能测试比较薄弱,需要投入大量时间;
      • 维护成本高,尤其在变更比较大的情况下,不仅要维护代码,还要维护测试代码。
    • 验收测试驱动开发(ATDD):测试的关注点从代码转向需求,在编写代码前就确认功能的验收标准。

    • 探索性测试:作用在成品软件上,为了提高产品质量;

    解决问题的步骤

    • 收集数据:
      • 时间轴:相当于划定好时间范围,在范围内的问题进行回顾;
      • 三五成型:3个5,针对5个人,在5分钟内问5个问题,收集反馈;
      • 颜色标识:用带颜色的记事贴贴在时间轴上,描述情绪或士气高低;
      • 寻找优势:寻找优势,争取在下一个迭代中发挥;
      • 满意度直方图:迭代中满意度以直方图展示;
      • 团队雷达:多维度数据展示工具,从多个领域去衡量当前迭代表现。
    • 分析原因:
      • 头脑风暴:安静书写、循环发言、自由讨论出想法和灵感,通过其他技术(亲和图、思维导图等)方式进行归纳分类,使用100分法、名义小组等方式进行排序;
      • 名义小组:促进头脑风暴的一种技术,投票表决;
      • 五问法:起源于精益思想,目的是帮助找到问题的根本原因。
      • 鱼骨图(因果图、石川图):常用的分析原因的方法,五类因素:人、机、料、法、环。
    • 采取行动:敏捷团队会采用一些群体决策技术对各种解决方案进行确认,确保达成一致的认识,并设置目标进行推进实施;
      常用的技术有:
      • 简单主题:帮助团队就采取的行动达成一致。比如在回顾会上使用的:海星图、快船等方式,就是确认几个简单的主题:好的keep,不好的stop;
      • SMART目标:
        • specific:目标是明确具体的;
        • measurable:目标是可以衡量的,即是有明确验收标准的;
        • attainable:目标是可以达到的;
        • relevant:目标是于组织的其他目标具有相关性;
        • time-based:是有明确截止日期的。

你可能感兴趣的:(ACP-发现与解决问题)