改造价值流状态

价值流在生产制造领域通常是指为原材料转变为成品而赋予价值的所有活动。在软件研发工程领域,我们通常看到的典型看板所体现的价值流是从需求提出到产研测消化处理,并最终交付发布的所有活动。

我们看到的价值流基本是看板上所呈现的列状态,这些列状态的切分实际要遵循工作项的实际工作流状态,不同工作项有其对应的工作流和价值流。精益看板价值流设计实际为处理工作项的价值流设计。

需求价值流设计

  1. Jira 敏捷看板的典型状态

    通常情况下,Jira 平台主要采用 Epic 和故事二层结构进行需求管理。受到故事状态的自身限制,其在看板价值流映射上最多采用和故事工作流一致的状态,如图 9-1 所示。

    image 2023 11 19 13 31 54 258
    Figure 1. 图9-1 “故事”工作项的状态

    在未进行看板(面板)配置的情况下,Jira 看板管理的默认价值流状态为 “待办” “处理中” “完成”,如图 9-2 所示。

    image 2023 11 19 13 33 22 802
    Figure 2. 图9-2 Jira敏捷看板的默认价值流状态

    Jira 敏捷看板的出现在一定程度上实现了需求管理的可视化,优化了团队协同协作的模式。在团队规模不断壮大发展的情况下,团队间针对协同工作项的高效透明流转成了更加迫切的诉求。Jira 敏捷看板的典型状态已无法满足产研测流程的具体状态或消化进度的跟踪需要。通过 Jira 敏捷看板中的 “处理中” 状态,我们无法判定对应的需求是处于产品处理中,还是开发处理中。不同的状态代表着差异化的协同配合要求和不同的交付预期。

  2. 建立“需求”问题管理类型

    以 “故事” 问题管理类型进行需求承载的工作流及敏捷看板价值流已无法满足价值流呈现要求。因为 “故事” 类型属于 Jira 平台通用工作项流程,所以若直接对该类型的价值流进行改造,将影响所有引用该工作项流程的项目。

    为了便于需求价值流的定制,超级管理员在管理页面采用标准问题类型新建一个全新的问题类型,我们将其命名为 “需求”。后续的价值流设计在 “需求” 类型上定制。

    如下提供新建问题类型的操作示例,供参考。

    第一步,以超级管理员身份进入 Jira 管理界面,进入 “问题” 管理模块下的 “问题类型方案” 管理页面,以项目关键字标识或项目名称找到目标项目的问题类型方案,然后单击该方案的 “编辑” 控件,如图 9-3 所示。

    image 2023 11 19 13 36 25 435
    Figure 3. 图9-3 问题类型方案的管理页面

    第二步,进入目标项目问题类型方案的编辑页面后,触发编辑页面右上角的 “添加问题类型” 控件,如图9-4所示。

    第三步,在弹出的 “添加问题类型” 交互窗口,将选择 “标准问题类型” 的模式新建名称为 “需求” 的问题类型,如图9-5所示。

    第四步,保存新建的 “需求” 问题类型。在该目标项目的问题类型方案选项中可以看到 “需求” 问题类型,如图9-6所示。新增的问题类型同样也会出现在默认问题类型方案的选型中。

    image 2023 11 19 13 39 03 370
    Figure 4. 图9-4 问题类型方案的编辑页面
    image 2023 11 19 13 39 27 650
    Figure 5. 图9-5 添加问题类型的交互窗口
    image 2023 11 19 13 39 50 709
    Figure 6. 图9-6 “需求”问题类型新增完成
  3. 需求价值流的设计

    新增的 “需求” 问题类型的价值流依然为原有 “故事” 问题类型的价值流。此时需要我们根据 “需求” 工作项的实际工作流对其进行价值流设计。价值流的设计反映了目标工作项的实际工作流状态,而不是改变它或发明一种理想化的新过程。

    精益看板的价值流设置依赖于看板中工作项的价值流设置。线上化精益看板针对工作项的价值流设置,需要参考线上化载体的支持能力并充分考虑价值流状态切换的便捷性。基于线上化精益看板的价值流优化不及物理精益看板在操作上的便捷性,需要前期进行充分的考虑。由于线上化精益看板以需求工作项作为管理对象,因此对精益看板的价值流切分实际为 “需求” 工作项的价值流状态切分。

    图 9-7 为笔者所属团队所采用的 “需求” 工作项的价值流设计。价值流的流转状态:需求-待评估→需求-产品设计中→需求-待评审→准备好-待开发→开发-设计中→开发-开发中→开发-自测中→开发完成-待测试→测试-测试中→待上线→已上线/异常终止或打回。

    image 2023 11 19 13 41 31 506
    Figure 7. 图9-7 “需求”工作项的价值流设计

    需求工作项的价值流设计完成后,可创建一个需求,进入所创建需求的需求详情页面验收最终呈现效果,如图9-8所示。

    image 2023 11 19 13 42 06 459
    Figure 8. 图9-8 “需求”工作项的价值流效果

    (1) 起点与终点的设计

    “需求” 工作项的价值流设计以需求录入 Jira 为起点,即所有录入 Jira 的需求,都会直接进入 “需求-待评估” 状态。该状态代表所有需求都需要进行必要的评估,才能进入后续处理环节。

    可视化的终点涉及两种不同的状态,分别为 “已上线” 和 “异常终止或打回”。“已上线” 代表需求已完成上线交付工作,满足使用或发布条件。需求在交付过程中并不是一帆风顺的,也会存在异常终止或打回的情况,如需求在 “需求-待评估” 环节因需求不合理而进行打回操作,故建立了 “异常终止或打回” 状态。

    (2) 产研测阶段的设计

    价值流的整体设计需要产品人员、研发人员、测试人员的协同参与。以下为不同职能人员对价值流不同阶段的主导解读。

    “需求-待评估→需求-产品设计中→需求-待评审”阶段的需求一般由产品侧主导;对于产品侧未参与的技术内部需求,由研发侧主导。

    “准备好-待开发→开发-设计中→开发-开发中→开发-自测中” 阶段的需求由研发侧主导。

    “开发完成-待测试→测试-测试中→待上线→已上线” 阶段的需求一般由测试侧主导;对于非测试参与的需求,由上一职能的经办人负责处理。

    “异常终止或打回” 阶段可出现在需求的任何阶段,没有指定具体的职能方。当需求转化为该状态时,建议处理方与需求的关联人进行沟通,避免意见不一致引发争执。

    (3) 协作边界的设计

    产研测之间的协作边界须重点关注,不同职能间的顺畅衔接并建立明确的交付规则,有利于减少不合格过程产物在职能间的传递。协作边界的设计说明如表 9-1 所示。

    image 2023 11 19 14 10 52 099
    Figure 9. 表9-1 协作边界的设计

    (4) 缓冲队列的设计

    缓冲队列为限制在制品的重要措施,是有效防止单一职能过载的重要方法。产研之间、研测之间不是所有的过程交付都能得到后方职能的即时响应,实际在项目需求处理中也会出现排队等待的现象,缓冲队列的设计使等待现象实现了可视化。缓冲队列的设计说明如表 9-2 所示。

    image 2023 11 19 14 11 51 693
    Figure 10. 表9-2 缓冲队列的设计

    (5) 状态自由转换的设计

    通过图 9-7 可知,每个价值流状态的后侧都带有 “全部” 控件,并且有箭头从 “全部” 控件指向某个具体状态。该设计支持让所有的状态都转换到当前状态,旨在提升状态间切换的灵活性和便捷性。如果项目中存在需要即时响应处理的需求,需求在 Jira 平台中的填充滞后于需求处理,在需求填充后可快速切换到对应状态。如果存在需求颗粒度较小的情况,需求在一个工作日有历经多个阶段的可能性,可满足当日一次状态转换操作即可达到真实所处状态阶段。

    (6) 设计前后的价值流比对

    新增的 “需求” 问题类型经设计后具有更细化的价值流状态,通过这些状态,我们可以掌握需求所处的阶段。表 9-3 是两种问题类型对应的价值流状态比对。

    image 2023 11 19 14 13 12 058
    Figure 11. 表9-3 设计前后的价值流比对

    需求价值流状态的有效切分为后续精益看板的打造奠定了基础。第10章将介绍如何运用这些价值流状态配置实现精益看板。

    (7) 需求价值流的状态解读

    需求价值流状态体现了需求在实际处理过程中可能存在的真实工作流状态,如表 9-4 所示为需求价值流各阶段状态的解读。

    image 2023 11 19 14 13 57 225
    Figure 12. 表9-4 需求价值流状态的解读
    image 2023 11 19 14 14 31 083
  4. 新增价值流状态的操作步骤

    第一步,以超级管理员身份进入 Jira 管理界面,如图 9-9 所示。进入 “问题” 管理模块下的 “工作流” 管理页面,单击页面右上角 “添加工作流”,在弹出的 “添加工作流” 窗口输入工作流名称,如图 9-10 所示。

    1700385600460
    Figure 13. 图9-9 添加工作流的入口
    image 2023 11 19 17 21 06 390
    Figure 14. 图9-10 添加工作流窗口

    第二步,系统界面将自动跳转至新命名对应工作流的设计页面。在设计页面单击 “添加状态”,输入状态名称,完成指定状态的添加。每次添加状态时,皆须勾选“让所有的状态转换到这状态”,如图9-11所示。

    image 2023 11 19 17 21 58 716
    Figure 15. 图9-11 添加状态的交互窗口

    这里我们需要依次触发若干次 “添加状态”,用于完成所有需求价值流状态的添加。请严格按照需求价值流状态的前后顺序(需求-待评估、需求-产品设计中、需求-待评审、准备好-待开发、开发-设计中、开发-开发中、开发-自测中、开发完成-待测试、测试-测试中、待上线、已上线、异常终止或打回)依次添加状态,最终添加效果如图9-12所示。

    image 2023 11 19 17 22 38 292
    Figure 16. 图9-12 需求价值流状态添加后的效果

    第三步,在工作流设计页面实现状态类别的优化调整。如图9-13所示,进入指定状态的编辑窗口,调整状态类别,确保 “需求-待评估” 状态处于待办类别,“已上线、异常终止或打回” 两种状态处于完成类别,其他状态处于处理中类别。

    image 2023 11 19 17 23 21 061
    Figure 17. 图9-13 状态类别的选择

    第四步,在工作流设计页面切换 “Create” 的目标状态为 “需求-待评估”。如图9-14所示,把鼠标光标移至 “Create” 的线条区域,拖曳实线至 “需求-待评估” 状态,随后将会出现如图9-15所示的 “确认编辑转换” 窗口,单击 “保存”。我们需要选中 “Open” 状态,对该状态实施删除操作,如图9-16所示。

    image 2023 11 19 17 24 11 172
    Figure 18. 图9-14 鼠标光标移至“Create”线条区域
    image 2023 11 19 17 24 35 309
    Figure 19. 图9-15 确认编辑转换窗口
    image 2023 11 19 17 25 02 663
    Figure 20. 图9-16 删除“Open”状态

    第五步,经过上述操作,我们完成了需求价值流的整体设计,效果如图9-17所示。

    image 2023 11 19 17 25 35 500
    Figure 21. 图9-17 需求价值流的整体设计效果
  5. 需求工作流映射至“需求”的步骤

    第一步,以超级管理员身份进入 Jira 管理页面,如图9-18所示,进入 “问题” 管理模块下的 “工作流方案” 管理页面,以项目关键字标识或项目名称找到目标项目的工作流方案,然后单击该方案的 “编辑” 控件。

    image 2023 11 19 17 26 41 460
    Figure 22. 图9-18 工作流方案管理页面

    第二步,进入目标项目的工作流方案管理页面,如图9-19所示,单击页面右上角的 “添加工作流”,随后选择 “添加现有”,弹出如图9-20所示的 “添加存在的工作流” 窗口。在此窗口中选择我们在上文所创建的工作流 “Requirement Workflow”,单击 “下一步”。在弹出的分配问题类型的操作窗口中选中 “需求”,如图9-21所示。

    image 2023 11 19 17 27 23 657
    Figure 23. 图9-19 目标项目的工作流方案管理页面
    image 2023 11 19 17 27 47 412
    Figure 24. 图9-20 选择添加存在的工作流

    第三步,完成分配问题类型的操作后,可以看到该项目工作流方案的工作流列表区域已新增了我们的目标工作流,如图 9-22 所示。此时单击 “发布”,工作流方案才可正式生效。

    image 2023 11 19 17 28 27 197
    Figure 25. 图9-21 分配问题类型窗口
    image 2023 11 19 17 28 51 915
    Figure 26. 图9-22 工作流方案的发布

    发布生效后,我们可以进入该项目 “项目设置” 管理页面的问题类型区域,查看 “需求” 问题类型,检查对应的工作流是否生效,如图9-23所示。

    image 2023 11 19 17 29 29 260
    Figure 27. 图9-23 需求问题类型所采用的工作流

    生效后的需求工作流在 “需求” 类型问题详情页面的工作流可视化效果如图9-24所示。

    image 2023 11 19 17 30 00 340
    Figure 28. 图9-24 需求工作流在问题详情页面的效果

需求状态交互设计

需求状态交互窗口是采集需求工作项处理信息和变更经办人的重要入口。需求状态的交互设计,不仅需要考虑到状态间切换的灵活性及便捷性,也需要借助交互窗口中的字段设计以实现必要信息的采集。

  1. 交互设计分类与解读表 9-5 呈现了对需求状态交互窗口的交互设计思路,其中涉及多种分类的交互设计和相关解读。

    image 2023 11 19 17 31 09 556
    Figure 29. 表9-5 交互设计分类
  2. 状态交互窗口的具体设计

    (1) “需求-待评估” 状态的交互窗口设计

    如图9-25所示,“需求-待评估” 状态的交互窗口为需求初始状态对应的交互窗口,对应的交互窗口在实际需求处理过程触发的频次整体偏低,在设计时只新增了 “每日进展” 字段,对应文本框类型为文本框(多行)类型;“备注” 字段是交互窗口系统默认存在的字段,无须额外添加。“每日进展” 与 “备注” 是所有状态的交互窗口都存在的字段。单击交互窗口右下角的 “需求-待评估” 按钮,实现对应状态转换、数据保存及交互窗口的自动关闭。交互窗口右下角的 “取消” 按钮为交互窗口的系统默认按钮,无须额外添加。

    image 2023 11 19 17 32 33 582
    Figure 30. 图9-25 “需求-待评估”状态的交互窗口

    “每日进展” “备注” 和 “取消” 字段或按钮会出现在需求价值流所有状态的交互窗口中,我们可称之为交互窗口的 “通用设计”,后文将不再赘述其他交互窗口的通用设计内容。

    (2) “需求-产品设计中” 状态的交互窗口设计如图9-26所示,“需求-产品设计中” 状态的交互窗口在通用设计上增加了交付时间导向和工时采集埋点,分别为“产设预计完成时间” “产品累计投入人日”。“产设预计完成时间” 对应的字段类型为日期选择器类型,“产品累计投入人日” 对应的字段类型为文本框(单行)类型;单击交互窗口右下角的 “需求-产品设计中” 按钮后,实现对应状态的转换、数据保存及交互窗口的自动关闭。

    image 2023 11 19 17 33 31 900
    Figure 31. 图9-26 “需求-产品设计中”状态的交互窗口

    (3) “需求-待评审” 状态的交互窗口设计

    如图 9-27 所示,“需求-待评审” 状态的交互窗口在通用设计上增加了工时埋点采集,使用的字段为 “产品累计投入人日”。单击交互窗口右下角的 “需求-待评审” 按钮控件,实现对应状态的转换、数据保存及交互窗口的自动关闭。

    (4) “准备好-待开发” 状态的交互窗口设计

    如图 9-28 所示,“准备好-待开发” 状态的交互窗口在通用设计上增加了经办人转换、工时采集埋点、交付时间导向。经办人转换使用的字段为 “经办人” 字段,“经办人” 字段为系统已有字段,无须额外添加,可通过该字段实现需求向研发成员传递。工时采集埋点使用的字段为 “产品累计投入人日”,当前状态为产品侧往开发职能交付的重要节点,产品侧可利用 “产品累计投入人日” 字段记录对应需求在产品侧的累计投入时间。

    交付时间导向使用的字段为 “产设实际完成时间” “产品期望上线时间”,两个字段皆为日期选择器类型。“产设实际完成时间” 与 “需求-产品设计中” 状态交互窗口中的 “产设预计完成时间” 相呼应。“产品期望上线时间” 为产品侧关于该需求的交付上线期望日期,该字段的填充有助于需求开发的优先级编排。单击交互窗口右下角的 “准备好-待开发” 按钮,实现对应状态的转换、数据保存及交互窗口的自动关闭。

    image 2023 11 19 17 35 33 390
    Figure 32. 图9-27 “需求-待评审”状态的交互窗口
    image 2023 11 19 17 35 55 420
    Figure 33. 图9-28 “准备好-待开发”状态的交互窗口

    (5) “开发-设计中” 状态的交互窗口设计

    如图 9-29 所示,“开发-设计中” 状态的交互窗口在通用设计上增加了交付时间导向、工时采集埋点。交付时间导向使用的字段为 “研发预计上线时间”,字段类型为日期选择器类型。工时采集埋点使用的字段为 “开发累计投入人日”,字段类型文本框(单行)类型。单击交互窗口右下角的 “开发-设计中” 按钮,实现对应状态的转换、数据保存及交互窗口的自动关闭。

    image 2023 11 19 17 36 59 189
    Figure 34. 图9-29 “开发-设计中”状态的交互窗口

    (6) “开发-开发中” 状态的交互窗口设计

    如图 9-30 所示,“开发-开发中” 状态的交互窗口在通用设计上增加了工时采集埋点。工时采集埋点使用的字段为 “开发累计投入人日”。单击交互窗口右下角的 “开发-开发中” 按钮,实现对应状态的转换、数据保存及交互窗口的自动关闭。

    (7) “开发-自测中” 状态的交互窗口设计

    如图 9-31 所示,“开发-自测中” 状态的交互窗口在通用设计上增加了工时采集埋点。工时采集埋点使用的字段为 “开发累计投入人日”。单击交互窗口右下角的 “开发-自测中” 按钮,实现对应状态的转换、数据保存及交互窗口的自动关闭。

    image 2023 11 19 17 38 20 908
    Figure 35. 图9-30 “开发-开发中”状态的交互窗口
    image 2023 11 19 17 38 42 859
    Figure 36. 图9-31 “开发-自测中”状态的交互窗口

    (8) “开发完成-待测试” 状态的交互窗口设计

    如图 9-32 所示,“开发完成-待测试” 状态的交互窗口在通用设计上增加了工时采集埋点、遗留问题采集、经办人转换。

    image 2023 11 19 17 39 29 741
    Figure 37. 图9-32 “开发完成-待测试”状态的交互窗口

    工时采集埋点使用的字段为 “开发累计投入人日”,当前状态为开发侧往测试侧交付的重要节点,开发人员可利用该字段记录对应需求在开发侧的累计投入时间。遗留问题采集使用的字段为 “遗留问题”,字段类型为文本框(多行)类型;经办人转换使用的字段为 “测试负责人”,该字段主要用于提醒测试负责人该需求已完成提测条件。单击交互窗口右下角的 “开发完成-待测试” 按钮,实现对应状态的转换、数据保存及交互窗口的自动关闭。

    (9) “测试-测试中” 状态的交互窗口设计

    如图 9-33 所示,“测试-测试中” 状态的交互窗口在通用设计上增加了经办人转换、工时采集埋点。

    image 2023 11 19 17 40 30 148
    Figure 38. 图9-33 “测试-测试中”状态的交互窗口

    经办人转换使用的字段为 “经办人”,经办人为需求的实际测试人员或测试负责人。工时采集埋点使用的字段为 “测试累计投入人日”,字段类型为文本框(单行),该字段用于填充测试侧在此需求上已消耗的累计投入时间。单击交互窗口右下角的 “测试-测试中” 按钮,实现对应状态的转换、数据保存及交互窗口的自动关闭。

    (10) “待上线”状态的交互窗口设计

    如图 9-34 所示,“待上线” 状态的交互窗口在通用设计上增加了工时采集埋点、解决版本号。

    image 2023 11 19 17 41 23 611
    Figure 39. 图9-34 “待上线”状态的交互窗口

    工时采集埋点使用的字段为 “测试累计投入人日”,当前状态为测试侧完成交付的重要节点,测试侧可利用该字段记录对应需求在测试侧的累计投入时间。解决版本号使用的字段为 “解决版本号”,使用该字段可关联需求最终交付的对应版本号。单击交互窗口右下角的 “待上线” 按钮,实现对应状态的转换、数据保存及交互窗口的自动关闭。

    (11) “已上线” 状态的交互窗口设计

    如图 9-35 所示,“已上线” 状态的交互窗口在通用设计上增加了交付时间导向、工时采集埋点。

    交付时间导向使用的字段为 “部署实际上线时间”,字段类型为日期选择器,用于记录该需求实际的上线时间,可用于需求前置时间的度量。工时采集埋点使用的字段为 “产品累计投入人日” “开发累计投入人日” “测试累计投入人日”,当前状态的交互窗口包含了工时采集埋点所涉及的所有字段,旨在实现产研测工时投入数据的概览并支持必要的修正。单击交互窗口右下角的 “已上线” 按钮,实现对应状态的转换、数据保存及交互窗口的自动关闭。

    (12) “异常终止或打回” 状态的交互窗口设计

    如图 9-36 所示,“异常终止或打回” 状态的交互窗口在通用设计上增加了工时采集埋点。

    image 2023 11 19 17 43 26 628
    Figure 40. 图9-35 “已上线”状态的交互窗口

    工时采集埋点使用的字段为 “产品累计投入人日” “开发累计投入人日” “测试累计投入人日”,当前状态的交互窗口包含了工时采集埋点所涉及的所有字段,支持收集和修正异常终止或打回需求上所投入的产研测工时数据。单击交互窗口右下角的 “异常终止或打回” 按钮,实现对应状态的转换、数据保存及交互窗口的自动关闭。

  3. 状态交互窗口的生成示例

因为状态交互窗口较多,且设计实现生成的步骤相似度较高,所以此处选取 “准备好-待开发” 的交互窗口来介绍状态交互窗口的生成步骤。

第一步,由于交互窗口含有的部分字段不是系统自带字段,因此需要 Jira 超级管理员进入 “问题” 管理模块下的 “自定义字段” 管理页面,单击页面右上角的 “自定义域” 控件,在弹出的窗口中添加自定义字段,如图9-37所示。

image 2023 11 19 17 45 01 908
Figure 41. 图9-36 “异常终止或打回”状态的交互窗口
image 2023 11 19 17 45 53 532
Figure 42. 图9-37 自定义字段的添加窗口

第二步,当自定义字段添加完成后,进入 “界面” 管理页面,单击 “添加屏幕”,弹出 “添加屏幕” 窗口,如图9-38所示。为提高页面(屏幕)的辨识度,我们把屏幕名称命名为 “准备好-待开发交互窗口”。

image 2023 11 19 17 46 35 132
Figure 43. 图9-38 添加页面(屏幕)窗口

添加完成后,系统自动跳转至配置页面,如图9-39所示。在配置页面选择需要显示的字段,字段的顺序即为交互窗口上显示字段的顺序。

image 2023 11 19 17 47 05 734
Figure 44. 图9-39 配置页面选择添加字段

第三步,进入 “工作流” 管理页面,如图 9-40 所示,找到目标工作流,进入编辑页面。

第四步,在编辑页面选中 “准备好-待开发” 后方的箭头,可以看到如图 9-41 所示的窗口,在该窗口单击 “编辑” 按钮。

image 2023 11 19 17 47 53 325
Figure 45. 图9-40 “工作流”管理页面
image 2023 11 19 17 48 17 319
Figure 46. 图9-41 选中转换箭头区域的效果

第五步,在新弹出的 “编辑转换” 窗口中选择前文定义的 “准备好-待开发交互窗口” 界面,如图9-42所示。随后在工作流编辑页面单击 “发布” 按钮发布工作流。

至此,“准备好-待开发” 状态的交互窗口已落地生效,其可视化效果如图9-43所示。

image 2023 11 19 17 49 22 852
Figure 47. 图9-42 实现所定义界面的选取
image 2023 11 19 17 49 46 739
Figure 48. 图9-43 “准备好-待开发”交互窗口的效果