web-dev-qa-db-ja.com

反復でスコープクリープをキャプチャするためのレポート

反復内の「スコープクリープ」をキャプチャするレポートを探しています。オンプレミスでTFS2013でスクラムを使用しています。

私たちは常に経営陣から作業を反復するように求められていますが、それでも計画会議で行われたコミットメントを満たすように圧力をかけられています。残念ながら、それは十分に頻繁に発生するため、反復ごとに1つまたは2つの作業項目を手動で追跡する必要はありません。

また、作業を過小評価していて、計画よりも時間がかかることもあります。

TFSまたはウェアハウス/キューブから、作業がイテレーションに持ち込まれたとき(つまり、新しいPBI /バグが追加されたとき)または既存のアイテムの作業が増加したときを示すレポートを取得したいと思います。

このレポートを使用して、計画外の作業を導入した場合の影響を経営陣に示したり、見積もりを改善するためのデータとしてレポートを使用したりしたいと思います。

2
Squid

公式のアジャイルの答えは、これは単に許可されるべきではないということです。残念ながら、あなたが経験しているように、現実にはこれはしばしば起こります。これは、短いスプリントでもビジネス要件の変化が速すぎることが原因である場合があります。これは、製品所有者の純粋に悪い計画が原因で発生する場合があります。そして残念ながら、これは、経営陣がアジャイルに真に賛成しておらず、したがって、いつでもどんなタスクでも実行するように指示する権利があると感じているために発生することがあります。この最後のケースは、対処するのが最も難しいです。

まず、新しいストーリーをスプリントに受け入れるときは、他のストーリーと同じように指摘する必要があります。すべての作業は、スプリントに正しい方法(計画中)で追加されたか、間違った方法(スプリント中にランダムに)で追加されたかに関係なく追跡する必要があります。速度を知っておく必要があります。これで、計画で行うことに同意したポイントの数を確認する必要があります。新しいストーリーをポイントする場合は、追加で必要なポイントの数を正確に伝えることができるはずです。したがって、各スプリント中に、要求された速度を超えるポイント数を報告できます。したがって、各スプリントの終わりに、速度を超えるポイント数で新しいストーリーを作成するように求められたため、X、Y、Zに遅れたことを示すことができます。

次にできることは、適切に計画された開始時のストーリーのポイントを追跡し、計画時に速度としてthatを使用できるようにすることです。これについては非常に透明にしてください。予期しない余分な作業を余儀なくされているため、他の方法よりも多くのストーリーを取り上げることができないことを経営陣に明確にしてください。

これが機能するためには、経営陣に立ち向かい、アジャイルが機能するためにはアジャイルルールに従わなければならないことを説明しなければならないのは残念な事実です。管理が不十分な場合、これを行うのは困難または不可能になる可能性があります。しかし、ストーリーがスプリントの途中で追加されるたびに、アジャイルのルールに従わないとアジャイルのメリットを享受できないことを明確に説明する必要があります。スプリントの途中での作業を回避することは最も重要なことの1つです。

7
Gort the Robot

これは、反復の開始日と終了日の間にある日付で反復が変更されたときに、workitemhistoryビューを調べて計算するために準備したスクリプトです。

これは進行中の作業ですが、必要に応じて答えがあることを示しています。

DECLARE @iteration VARCHAR(300)
DECLARE @startDate DATETIME
DECLARE @endDate DATETIME

SELECT @iteration = '\TeamProject\Team\Sprint 4';

SELECT @startDate = startdate, @endDate = finishDate
FROM DimIteration
WHERE iterationpath = @iteration;

WITH CTE_ALLWorkItemsInIteration
AS (
    SELECT DISTINCT system_id
    FROM WorkItemHistoryView
    WHERE IterationPath = @Iteration
    )
,CTE_WorkItemHistory
AS (
    SELECT *
        ,ROW_NUMBER() OVER (
            PARTITION BY System_Id ORDER BY [System_ChangedDate] ASC
            ) AS Recency
    FROM WorkItemHistoryView
    WHERE system_id IN (
            SELECT system_id
            FROM CTE_ALLWorkItemsInIteration
            )
    )
SELECT CurrentWI.System_id
    ,CurrentWI.System_WorkItemType
    ,CurrentWI.IterationPath AS currentIteration
    ,PreviousWI.IterationPath AS previousIteration
    ,currentwi.system_changeddate
    ,CurrentWI.System_ChangedBy
    ,CurrentWI.System_Title
    ,(
        CASE 
            WHEN CurrentWI.IterationPath = @iteration
                THEN 1
            ELSE 0
            END
        ) AS AddedToIteration
    ,(
        CASE 
            WHEN PreviousWI.IterationPath = @iteration
                THEN 1
            ELSE 0
            END
        ) AS RemovedFromIteration
FROM CTE_WorkItemHistory CurrentWI
LEFT JOIN CTE_WorkItemHistory PreviousWI ON CurrentWI.System_id = PreviousWI.System_id AND CurrentWI.Recency - 1 = PreviousWI.Recency
WHERE (
        CurrentWI.IterationPath <> PreviousWI.IterationPath
        OR PreviousWI.IterationPath IS NULL
        )
    AND (
        CurrentWI.IterationPath = @iteration
        OR PreviousWI.IterationPath = @iteration
        )
    AND (CurrentWI.System_ChangedDate BETWEEN @startDate
         AND @endDate)
1
Squid