SAFe® プログラムとポートフォリオをサポートするように Azure Boards を構成する

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

このチュートリアルでは、1 つのチームによる新しいプロジェクトを、Scaled Agile Framework (SAFe®) プログラムとポートフォリオをサポートするように構成されたものに変換するステップについて説明します。 具体的には、次のタスクを実行して、SAFe® プログラムとポートフォリオをサポートするように Azure Boards を構成する方法について説明します。

  • アジャイル、プログラム、ポートフォリオの各チームを定義する
  • チームをサポートするように区分パスの階層を構成する
  • SAFe® リリース トレーニング、PI、スプリント、IP をサポートするようにイテレーション パスを定義する
  • SAFe® をサポートするように各チームを構成する

これらの構成を行うには、プロジェクト管理者グループのメンバーになる必要があります。

これらのコア構成を完了したら、特定のビジネス ニーズをサポートするようにプロジェクトをカスタマイズすることを検討できます。 カスタマイズ オプションは、SAFe® をサポートするための Azure Boards のカスタマイズに関する記事で扱われています。

ヒント

カスタム作業項目の種類、ポートフォリオ バックログ、またはワークフローを追加することを計画している場合は、最初にそれらのカスタマイズを行ってから、チームを定義して構成することができます。

Azure Boards を初めて使用する場合は、チームを追加して構成する前に、「チームおよびアジャイル ツールについて」と「区分およびイテレーション (スプリント) パスについて」を確認することをお勧めします。 また、チーム構造とアジャイル カルチャに関する 2 つの優れた記事は、DevOps を使用した効率的なワークロードの計画の概要生産性の高い、顧客に重点を置いたチームの構築に関する記事です。

注意

この記事は、Azure Boards と Azure DevOps Services に適用される一連の Scaled Agile Framework® チュートリアルの 1 つです。 ほとんどのガイダンスは、クラウドとオンプレミスの両方のバージョンに対して有効です。 ただし、一部の機能と手順は、クラウドまたは最新バージョンの Azure DevOps Server に固有です。

チーム階層を理解する

この記事では、どちらも "Fabrikam" という名前の 1 つのプロジェクトと 1 つのチームから、次の 9 チームのセットに移行します。

チーム、一覧

注意

Azure Boards は、チームの階層をサポートしていません。 ただし、この記事で示すように区分パスを構成すると、チーム階層の種類を効果的に作成できます。 階層は、区分パスの構造によって定義されます。

次に、次の階層への区分パスを構成し、各チームの区分パスを構成します。 この構成では、各チームのバックログ ビューと階層内のビューのロールアップがサポートされます。

区分パスとチームの構成

ヒント

追加する必要があるチーム、区分パス、イテレーションが多数ある場合は、コマンド ラインまたはプログラマティック ツールを使用できます。 この記事で後ほど説明する「コマンド ラインおよびプログラマティック ツール」を参照してください。

すべてのチームは、自分たちの仕事がポートフォリオ チームのバックログで管理されるエピックをどのように支えているかをはっきり理解しながら、自分たちのワークロードと優先順位を管理することができます。 同時にポートフォリオ チームは、自分たちのかんばんボードでバックログの進行状況を監視し、バックログにある項目の優先順位を調整し、さらにリリース トレーニング全体の進行状況を見ることができます。

複雑に思えるかも知れませんが、実際には、チームを設定して始めるための構成作業はわずかです。 1つのデフォルト チームを持つ1つのプロジェクトから移動するには、まず各チームを定義し、そのチームのデフォルトのエリア パスを自動的に作成します。 続いて、エリア パスのフラット セットを階層構造に再構成します。 次に、必要なリリース構造と使用するプログラムおよびアジャイル チームをサポートするイテレーション パスを定義します。 最後に、各チームを構成し、チームのメンバーシップを設定します。

チームを定義する

まず、各チームを追加し、それぞれに既定の区分パスを作成します。 この記事で後ほど、これらの区分パスを必要な階層に構成します。 この構造では、次の SAFe® のチームを Azure Boards のチームにマップします:

  • ポートフォリオ チーム -> 既定の最上位レベル チーム、Fabrikam チーム (既に定義)
  • プログラム チーム -> 第 2 レベル チーム、Fiber Suite および Service Suite
  • アジャイル チーム -> Fiber Suite および Service Suite の下に定義されている第 3 レベル チーム。

これらのステップを実行するには、プロジェクト管理者になる必要があります。 詳細なガイダンスが必要な場合は、ポートフォリオ管理に関する記事を参照してください。

各チームを 1 つずつ追加します。

注意

次の手順では、プレビュー段階の [新しいチーム] ページ ユーザー インターフェイスを使用します。 この機能を有効にするには、「機能の管理または有効化」を参照してください。

  1. Web ポータルから [プロジェクト設定] を選択し、[チーム] を開きます。

    [プロジェクト設定]、[チーム] の順に開く

  2. [新しいチーム] を選択します。

    独自の区分パスでサブチームを作成する

  3. チームに名前を付け、必要に応じて説明を入力します。

    ここでは、"アプリ" チームを追加します。 チーム管理者を選択し、[チームの名前で区分パスを作成する] チェックボックスがオンになっていることを確認します。 必要に応じて、チーム メンバーを追加します。

    アプリ チームを追加します。

    チームのスクラム マスター、プログラム マネージャー、またはポートフォリオ マネージャーをチーム管理者として割り当てます。 チーム管理者は、アジャイル プラクティスとビジネス ニーズをサポートするようにチームのツールを構成できます。

  4. ステップ 2 と 3 を繰り返して、すべてのチームを定義します。

  5. 省略可能。 複数のポートフォリオ チームがある場合は、それぞれに対してチームを作成します。

区分パスを構成する

チーム階層をサポートするために、チームを階層に定義する最初のステップで作成した区分パスを構成します。

  1. [プロジェクト設定] ページで、[プロジェクト構成] を選択し、[区分] を選択します。 区分パスのフラット リストが表示されます。

    区分パスのフラット リスト

  2. 上部の区分パスの下にある各機能チームの区分パスを選択し、それが属する区分パス階層の下に移動します。

    各区分パスは、それが属する親ノードの下にドラッグ アンド ドロップできます。 たとえば、ここでは [移行] ノードを [Fiber Suite] ノードにドラッグします。

    区分パス、親ノードへのドラッグ アンド ドロップ

    代わりに、区分パスのコンテキスト メニューを開き、[編集] を選択して、移動するノードを選択できます。

  3. 残りのアジャイル チーム区分パスに対してステップ 2 と 3 を繰り返します。

    2 つ以上のポートフォリオ チームを定義した場合は、対応するポートフォリオ チームの区分パスの下にある各プログラム チームの区分パスの移動を変更する必要があります。

  4. 完了すると、次の図のような区分パス構造が表示されます。

    重要

    この構造は、区分パスがアジャイル チーム、プログラム チーム、ポートフォリオ チームによって所有されていることを示しています。 この記事で後ほど各チームを区分パスの唯一の所有者として構成するときに、この構造を修正します。

    階層区分パス

イテレーション パスを定義する

Release に向かって進行していく状況を追跡するために、イテレーション パス構造を作成します。 区分パスとは異なり、複数のチームで同一のイテレーション パス構造を共有できます。 イテレーション構造を共有すると、複数のチームが、同じリリース トレーニングの進行方向に向かって、同じスプリント周期で働くことができます。

重要

イテレーション パスを削除、名前変更、または移動すると、関連する履歴データが失われます。

既定のチームのイテレーションがすでにある場合、それらの名前を変更することができます。 1 つのチームだけではなく、チーム構造全体をサポートするイテレーション構造を作成します。

  1. [プロジェクト設定] ページで、[プロジェクト構成]、次に [イテレーション] を選択します。

  2. プロジェクトと同じ名前を共有する既定のイテレーションの下に、最初のプログラム インクリメント (PI) を表す子イテレーションを作成します。 必要に応じて、PI の開始日と終了日を追加します。ただし、イテレーションはさらにスプリントに分割されることに注意します。

    子イテレーションを作成します。

  3. 次に、 PI 内の各 Sprint に対して子イテレーションを作成します。 アジャイル チームの周期に合わせてこれらのスプリントの日付を設定します。

    [イテレーション] ページ、IP スプリント イテレーションの作成

  4. すべてのチームの時間ボックス周期構造を満たすために、必要な数だけイテレーションを追加し続けます。

    完了すると、次の図のような構造になります。

    [イテレーション] ページ、イテレーションの一覧

    ヒント

    [イテレーション パス] をドラッグ アンド ドロップすると、ステップ 2 の「区分パスの構成」に示されているように、イテレーションを構成できます。 Azure Boards は、イテレーション パスを常に各親ノードの日付順に一覧表示します。

チームを構成する

チーム、区分パス、イテレーション パスが定義されたので、次のステップは各チームを構成することです。 チームごとに次の設定を構成する必要があります。

  • アクティブなバックログ
  • バグの作業
  • 既定のイテレーション パスの設定
  • チームイテレーション パスの選択

次の表に、チーム レベルに基づいて行う推奨設定を示します。


構成

アジャイル機能チーム

プログラム チーム

ポートフォリオ チーム

バックログ ナビゲーション レベル

機能、ストーリー

機能、ストーリー

エピック

バグの作業

バグは要件に基づいて管理される

バグはバックログとボードでは管理されない

バグはバックログとボードでは管理されない

既定のイテレーション

@CurrentIteration

@CurrentIteration

@CurrentIteration

バックログ イテレーション

Fabrikam

Fabrikam

Fabrikam

選択したイテレーション

スプリント 1 からスプリント 4、IP スプリント

PI 1、PI 2、PI 3

なし

Areas

サブ区分を含む

サブ区分を含まない

サブ区分を含まない


注意

既定のイテレーションを @CurrentIteration に設定すると、チームのバックログまたはボードから作成されたすべての作業項目が、現在の日付に基づいて現在のイテレーションに割り当てられます。 バックログ イテレーションをルートに設定すると、Fabrikam は区分パスのみがチームのバックログとボードに表示される作業項目のフィルターとして機能することを示します。

  1. [プロジェクト設定] ページで、[チームの構成] を選択します。

    構成するチームをチーム セレクターから選択します。

    [チーム プロファイル]、[イテレーションと区分] リンクを選択する

  2. [全般] ページで、アクティブにしたくないバックログをオフにします。

    たとえば、ポートフォリオ チームの場合は、[エピック] チェックボックスのみをオンにします。

    [チームの構成]、[全般]、[バックログ ナビゲーション レベル]、[エピック] のみ

    プログラムおよびアジャイル チームの場合は、[エピック] チェックボックスをオフにします。

    [チームの構成]、[全般]、[バックログ ナビゲーション レベル]、[機能] と [ストーリー]

  3. プログラムおよびポートフォリオ チームの場合は、次のように [バグの作業] ラジオ ボタンを選択します。

    [チームの構成]、[全般]、[バグの作業]、追跡しない

    また、アジャイル チームの場合は、[バグの作業] オプションを選択して、要件と共にバグを追跡します。

    アジャイルの [チームの構成]、[全般]、[バグの作業]、追跡しない

  4. [イテレーション] タブを選択して、チームのイテレーションを構成します。

    アジャイル チームの場合は、次のように設定を構成します。

    [チームの構成]、[イテレーション]、スプリントを選択

    プログラム チームの場合は、PI イテレーションのみを選択します。

    [チームの構成]、[イテレーション]、PI を選択

  5. プログラムおよびポートフォリオ チームの場合は、[区分] タブを選択して、既定の設定を [サブ区分を含む] から [サブ区分を含まない] に変更します。

    コンテキスト メニューを開き、[サブ区分を含まない] を選択します。

    [チームの構成]、[区分]、[サブ区分を含まない]

    注意

    [チームの名前で区分パスを作成する] を使用して各チームを作成したため、各チームは既定の区分パスで既に事前構成されています。 この区分パスは、各チームのバックログとボードに表示される作業項目のメイン フィルターとして機能します。

  6. 構成する必要がある各チームについて、必要に応じてステップ 2 から 5 を繰り返します。

  7. すべてのチームのステップ 5 を完了したら、[区分パス] - [チーム] 構造を確認します。 [プロジェクト構成][区分] を選択します。 区分パスとチーム構造が次のように表示されます。各チームが区分パスを所有しており、他のチームとはそれを共有しません。

    [プロジェクト構成]、[区分]

共有サービスをサポートするようにチームを構成する

UX デザイン チームなど、他のいくつかのチームをサポートするチームの場合は、以下のステップで説明するようにチームを構成します。

  1. 各共有サービス チームのチームを追加します。 詳細については、「チームを定義する」を参照してください。

  2. [プロジェクト構成] > [区分パス] ページに戻り、各共有サービス区分パスの下に、共有サービスでサポートされている各アジャイル チームのサブ区分パスを追加します。 詳細については、この記事で前述した「エリア パス の構成」を参照してください。

    たとえば、UX デザイン区分パスの下に 4 つのサブ区分パス (UX デザイン チームがサポートするアジャイル チームごとに 1 つずつ) を追加します。

    共有サービスのサブ区分パス

  3. チームを構成する」の説明に従って、各共有サービス チームをアジャイル機能チームとして構成します。

  4. アジャイル チームごとに、「チームを構成する」のステップ 5 に示したように、[チームの構成] > [区分] ページを開きます。 [区分の選択] を選択し、そのチームのサブ区分パスを追加します。

    ここでは、[UX デザイン\アプリ] サブ区分パスをアプリ機能チームに追加します。

    予算見積もりロールアップ

  5. [プロジェクト構成] > [区分パス] ページに戻り、共有サービス区分パスごとに区分パス構造が期待どおりに表示されることを確認します。

    UX デザイン チームの場合、構造は次のように表示されます。

    共有サービス区分パスとチーム構造

    共有区分パスに表示される作業項目は、関連するチームのバックログとボードに表示されます。

コマンド ラインおよびプログラマティック ツール

Azure DevOps コマンド ライン ツールを使用して、次の成果物を追加または更新できます。

プログラマティック ツールを使用する

Azure DevOps REST API を使用して、次の成果物を追加または更新できます。

次のステップ