跳轉至

【度量案例分享】研發效能分析

以下公式均在新版度量能力下撰寫,新版度量使用請參考 ,更多度量案例指路 。

研發交付

需求建立數

指標說明:統計週期內,每月提出的需求數量。

  • 維度:建立時間(月維度)

7Sv5GB0x

  • 指標:工作項 id(計數)

0m0GTu7C

圖表配置解析

  • 將全部需求按建立時間分佈,以月為展示週期,計算每個月的的需求數量,工作項 id為需求的唯一標識,此處我們推薦使用工作項ID計數。

7IOszlGN

需求交付數

指標說明:統計週期內,每月完成的需求數量。

  • 維度:TIMESERIES(DATE("2023-01-01"),DATE("2023-12-31"),"month")

a5ee5fb0b-acb8-434a-9a08-d8641a6ef071

  • 指標:countIf({工作項id},toStartOfMonth({完成日期})== toStartOfMonth(timelineCursor()))
  • 可複製指標:countIf(${工作項id},toStartOfMonth(${完成日期})== toStartOfMonth(timelineCursor()))

a24641aa1-510d-4d5c-b9b5-0bc9c82b7d77

圖表配置解析

  • timelineCursor():取維度 timeseries 的切片時間;
  • toStartOfMonth():取日期所在月的第一天;
  • 即本指標含義為,如果需求的完成時間所在月的第一天==維度 timeseries 所對應切片時間的所在月第一天,即把需求在該維度上計數。

JxVHvVUU

研發質量

研發交付質量

指標說明:統計週期內,新需求引發的 bug 數量。

  • 維度:提出時間(月維度)

7UppJPDO

  • 指標:countIf({工作項id},BUG歸因==新需求引入
  • 可複製指標:countIf(${工作項id},${BUG歸因}==$option{新需求引入})

wHZzd6CR

圖表配置解析

  • 將因需求原因引入的 bug,按 bug 的建立時間,以月為維度進行分佈。

SLBwNHFR

嚴重 BUG 數量

指標說明:統計週期內,P1、P2 級別 bug 數量。

  • 維度:提出時間(月維度)
  • 指標:countIf({工作項id},優先順序==P1||優先順序==P2)
  • 可複製指標:countIf(${工作項id},${優先順序}==$option{P1}||${優先順序}==$option{P2})

圖表配置解析

  • 將 P1、P2 的 bug,按 bug 的提出時間,以月為維度進行分佈。

r7IGzCkQ

嚴重 BUG 有效解決時長

指標說明:統計週期內,P0 級別 bug,從提交到解決(最後一次進入 Resolved 狀態的時間)的平均時間。

  • 維度:建立時間(月維度)
  • 指標:(avgIf({所有狀態}.{狀態末次開始時間},{所有狀態}.{狀態名稱}=="RESOLVED"&&{優先順序}==P0&&({狀態}==RESOLVED||{狀態}==CLOSED))-avgIf({所有狀態}.{狀態首次開始時間},{所有狀態}.{狀態名稱}=="OPEN"&&{優先順序}==P0&&({狀態}==RESOLVED||{狀態}==CLOSED)))/86400
  • 可複製指標:(avgIf(${所有狀態}.${狀態末次開始時間},${所有狀態}.${狀態名稱}=="RESOLVED"&&${優先順序}==$option{P0}&&(${狀態}==$option{RESOLVED}||${狀態}==$option{CLOSED}))-avgIf(${建立時間},${優先順序}==$option{P0}&&(${狀態}==$option{RESOLVED}||${狀態}==$option{CLOSED})))/86400

a8bef6ace-6774-46dc-8583-88d3d400d3e7

圖表配置解析

  • 如果 bug 當前狀態是 REOPENED 或 CLOSED,計算該 bug 末次進入 RESOLVED 狀態的時間,並減去 bug 的提出時間,得出該 bug 的修復耗時;
  • 得到的結果為秒級別,如需精確到天,需除以 86400;
  • 針對多個 bug 進行計算,用 avg 取平均值。

gpfMhN85

研發效率

需求平均交付週期

指標說明:從需求提出到完成上線的時間,反映業務、產品、研發對需求的響應速度,體現研發交付能力。

  • 維度:完成日期(月維度)

J9o4vs5l

  • 指標:avgIf({完成日期}-{建立時間},isNull({完成日期})==false)/86400
  • 可複製指標:avgIf(${完成日期}-${建立時間},isNull(${完成日期})==false)/86400

YFlkcw3i

圖表配置解析

  • 如果需求的完成時間不為空,計算完成時間-提出時間的平均值;
  • 得到的結果是秒級別,如需精確到天,可除以 86400。

VkwqDKXX

需求各階段交付週期

指標說明:需求在每個階段的交付時間,例如分析階段、研發排期、研發階段、測試階段、釋出階段。

  • 維度:{狀態名稱}
  • 指標:avgIf({所有狀態}.{狀態累計進行時間},isnull({所有狀態}.{狀態末次結束時間})==false)/86400
  • 可複製指標:avgIf(${所有狀態}.${狀態累計進行時間},isNull(${所有狀態}.${狀態末次結束時間})==false)/86400

圖表配置解析

  • 以狀態名稱為維度,針對單個需求,如維度對應的狀態已完成,計算該需求在此狀態的累計進行時間;
  • 針對多個需求,用 avg 計算平均值;
  • 得到的結果是秒級別,如需精確到天,需除以 86400。

ab60b7cc6-14b8-48bc-a4f4-7a03268567d4

交付節奏偏差

指標說明:需求的整體交付時間,以不同維度統計時,可以根據交付週期的標準差,判斷團隊交付節奏穩定性。如果偏差很大,判斷可能存在潛在異常。 維度:優先順序 指標:

  • 平均交付週期:AVGIF(${完成日期}-${建立時間},ISNULL(${完成日期})==false)/86400
  • 交付週期標準差:SQRT(SUM(POW(AVGIF(${完成日期}-${建立時間},ISNULL(${完成日期})==false)/86400,2))/COUNT(${工作項id})-POW(AVG(AVGIF(${完成日期}-${建立時間},ISNULL(${完成日期})==false)/86400),2))
  • 交付週期方差:SUM(POW(AVGIF(${完成日期}-${建立時間},ISNULL(${完成日期})==false)/86400,2))/COUNT(${工作項id})-POW(AVG(AVGIF(${完成日期}-${建立時間},ISNULL(${完成日期})==false)/86400),2)

圖表配置解析

  • 方差公式:
  • POW 函式用於數值的求冪,POW(平均交付週期 , 2)代表平均交付週期的平方值;
  • 交付週期的平方值相加,先除以工作項數量,再減去交付週期平均值的平方值,即可得到方差,示意公式:SUM(POW(平均交付週期 , 2))-POW ( AVG ( 平均交付週期 ), 2)
  • 標準差公式:
  • SQRT 函式用於開根號,返回該數值的平方根;
  • 對方差公式開根號即可得到交付週期標準差。

a490bc01a-a0fb-4826-8c9a-ec20e3ffa897

週期內交付建立比

指標說明:統計週期內已交付的需求數/建立需求數,綜合評估需求交付情況和壓力。

  • 維度:timeseries(date("2023-01-01"), date("2023-12-31"), "month")

a6528ac62-ebd8-440c-8c4d-9e5b9ba7d811

  • 指標:countIf({工作項id},toStartOfMonth({完成日期})== toStartOfMonth(timelineCursor()))/countIf({工作項id},toStartOfMonth({提出時間})== toStartOfMonth(timelineCursor()))(百分比)
  • 可複製指標:countIf(${工作項id},toStartOfMonth(${完成日期})== toStartOfMonth(timelineCursor()))/countIf(${工作項id},toStartOfMonth(${提出時間})== toStartOfMonth(timelineCursor()))(百分比)

a78282c5d-6b09-448d-a885-14ae08f3fddb

圖表配置解析

  • timelineCursor():取維度 timeseries 的切片時間;
  • toStartOfMonth():取日期所在月的第一天;
  • 本月度建立的需求數量:countIf({工作項 id},toStartOfMonth({提出時間})== toStartOfMonth(timelineCursor()))
  • 本月度完成的需求數量:countIf({工作項 id},toStartOfMonth({完成時間})== toStartOfMonth(timelineCursor()))

a0ab74052-06ce-4a10-8cf8-3d74cdd619c9

複雜需求交付佔比

指標說明:統計週期內,交付的需求,複雜需求佔比。

  • 維度:完成日期(月維度)
  • 指標:countIf({工作項id},{需求複雜度分級}==LV.5(複雜))/count({工作項id})(百分比)
  • 可複製指標:countIf(${工作項id},${需求複雜度分級}==$option{LV.5(複雜)})/count(${工作項id})(百分比)

圖表配置解析

  • 以需求完成時間為維度,計算每月完成的需求中,複雜需求的數量;
  • 除以每月完成的需求總數,將得到的結果輸出為百分比。

ZbBbB3uF

人均解決 BUG 數

指標說明:統計週期內,平均每個經辦人解決的缺陷數。

  • 維度:經辦人
  • 指標:countIf({工作項id},{狀態}==CLOSED)countIf({工作項id},{是否完成}==true)
  • 可複製指標:countIf(${工作項id},${狀態}==$option{CLOSED})countIf(${工作項id},${是否完成}==true)

圖表配置解析

  • 以經辦人為維度,計算每個經辦人負責的 bug 中已解決的 bug 的數量;
  • 可以用 bug 的當前狀態判斷 bug 是否已解決;
  • 也可以用是否完成(如流轉到所配置的完成狀態,是否完成==是)來判斷 bug 是否已解決。

3UrEU5x6

BUG 重開率

指標說明:統計週期時間內,已解決的 bug,被重開(reopen)過的比率。

  • 維度:完成時間(月維度)
  • 指標:countdistinct({工作項id},sumIf({所有狀態}.{狀態進入次數},{所有狀態}.{狀態名稱}=="REOPENED")>0)/countdistinct({工作項id})(百分比)
  • 可複製指標:countIf(${工作項id},sumIf(${所有狀態}.${狀態進入次數},${所有狀態}.${狀態名稱}=="REOPENED")>0)/count(${工作項id})(百分比)

圖表配置解析

  • 以完成日期為維度,檢視不同月份解決的 bug 中,reopen 過的 bug 佔比;
  • bug 流轉進入 REOPENED 狀態的次數:sumIf({所有狀態}.{狀態進入次數},{所有狀態}.{狀態名稱}=="REOPENED");
  • 如果 bug 進入 REOPENED 次數大於 0,則計算該 bug 數量,得到 reopen 過的 bug 總數;
  • 除以全部 bug 數量,將得到的結果輸出為百分比。

mhKPJgQE