アジャイル ポートフォリオの管理: 複数チームでの TFS によるバックログのサポート
Team Foundation Server (TFS) 2012 では、チームの作業をバックログで管理しました。 Team Foundation Server 2013 では、作業をポートフォリオ バックログで管理できます。これにより、管理チームは複数のアジャイル チームでの作業を見渡すことができます。 管理チームでは、複数のアジャイル チームを対象にして総合的な目標を設定し、作業を追跡します。 アジャイル チームは、作業を行い、項目を複数のタスクに分割して、バグを修正することで、全体的な状況に貢献します。 すべてのチームについて、バックログとボードを設定し、さらにその作業でサポートされる顧客エクスペリエンスのロールアップ ビューを用意できます。 完了すると、バックログ レベルによって作業をグループ化することでプロジェクトのポートフォリオを管理し、複数のチームでの作業の進行状況を確認できます。
各チームはそのチームのバックログを処理しますが、管理者はバックログ作業項目の種類の階層によって高いレベルで進行状況のロールアップを確認できます。 このホワイトペーパーでは、例として架空の Phone Saver 管理チームとプロジェクト内の特定領域を処理するアジャイル チームを使用して、このような構造の設定方法について説明します。
Phone Saver 管理チームでは、高度なイニシアチブを作業として定義し、それを顧客にとって重要な各機能に分割しています。 その時点で作業がアジャイル チームに割り当てられます。アジャイル チームはそれをさらに分割し、必要な作業を定義します。 プロジェクトが進行すると、管理チームは必要な詳細レベルまでドリルダウンして進行状況を確認します。 たとえば、スクラム プロジェクトの各機能項目に関連付けられたバックログ項目を表示することができます。
このスクリーンショットでは、管理チームが表示できる機能バックログ ビューを確認できます。これらの項目をサポートする製品バックログ項目も表示されています。 管理チームでは、これらの製品バックログ項目を所有しません。これらはいずれかのアジャイル チームに割り当てます。 製品バックログ項目は機能項目の子であるため、フィルターによってこれらの製品バックログ項目も表示されます。 管理チームはこのようにして進行状況を追跡できます。
次の図は、上のスクリーンショットで表示されている情報を概念レベルで示しています。
各アジャイル チーム (Customer Team など) には、それぞれのチーム ホーム ページ、バックログ、かんばんボード、およびタスク ボードが割り当てられます。 これらのページでは、そのチームに関連する情報だけが表示されます。
このスクリーンショットでは、アジャイル チームが表示できるスプリント バックログ ビューを確認できます。これには、そのスプリントで作業中の製品バックログ項目が表示されています。また、作業を分割して追跡するために作成された関連タスクも表示されています。 このビューでアジャイル チームは、作業中の項目がサポートする機能やイニシアチブを表示することはできません。 次の図は、先ほどと同様、上のスクリーンショットで表示されている情報を概念レベルで示しています。
チームとバックログ レベルの設定
TFS でチーム プロジェクトを作成すると、そのプロジェクトの既定のチームが自動的に作成されます。 アジャイル チームの毎日の作業を管理するために使用する追加のチームを構成し、管理チームがそのレベルで作業を管理するために使用できるチームとして既定のチームを再定義することによって、アジャイル チームはそれぞれの作業負荷と優先順位を管理できます。 管理チーム ビューでは、複数のアジャイル チームのすべての作業に関する進行状況が表示されます。 チームを設定して開始するまでに必要な構成はわずかです。
アジャイル チームを使用して進行状況をロールアップするほか、バックログ レベルを使用して作業の階層ビューを作成することができます。 TFS 2013 では、2 レベルのバックログにすぐにアクセスできます。 ポートフォリオ管理をサポートするために追加レベルが必要であれば、追加できます。 これには、アジャイル チームを作成する場合より若干多くの構成が必要ですが、それでも難しくはありません。 ここでは、アジャイル チームの設定と追加バックログ レベルの作成について説明します。
まず、組織の例のようなアジャイル/管理チームの構造を作成しましょう。
アジャイル チームの作成と管理チームの構成
既定チームのホーム ページから歯車アイコン を使用して管理ページを開き、[新しいチーム] を使用してアジャイル チームを作成します。
チームに名前を付けて、[チームの名前で区分パスを作成します] が選択されていることを確認します。
これは、管理チームにとっては区分パスのサブ区分になります。さらに重要な役割として、アジャイル チーム間の作業が分離され、進行状況の大部分が自動ロールアップされます。
アジャイル チームのスプリントを構成します。
新しいアジャイル チームにメンバーを追加し、管理チームから不要なメンバーを削除します。
ベスト プラクティスとして、管理チームのメンバーシップは、イニシアチブと機能を所有するマネージャーおよびチーム メンバーに制限する必要があります。 管理チームのホーム ページとバックログを表示できるアジャイル チームのメンバーは、管理チームと同じようにアジャイル チームのホーム ページとバックログを表示できます。
管理チームの区分を変更して、サブ区分が含まれないようにします。
必要な数のアジャイル チームを作成します。 作業項目がアジャイル チームに割り当てられると、各チームではバックログに対する各項目を表示し、以前と同様、それぞれのかんばんボードまたはタスク ボードで項目を管理できます。
バックログ項目とタスクを示すアジャイル チームのバックログ
管理チームでは、進行中の作業および開始前の作業のマスター ビューとして、すべてのアジャイル チームに割り当てられたすべての作業項目をバックログ ビュー、かんばんボード ビュー、およびタスク ボード ビューで確認できます。
機能およびアジャイル チーム バックログ項目を示す管理チームのバックログ
チーム構造を設定できたので、先に進んでバックログのレベルを追加しましょう。
バックログ レベルの追加
バックログ レベルの追加には少し時間がかかりますが、操作は比較的簡単です。 プロセスを確認してみましょう。 この手順を実行するには、チーム プロジェクト管理者グループのメンバーである必要があります。 まず、既存の作業項目の種類をエクスポートし、これを編集して、Initiative という名前で新しい作業項目の種類を作成します。 次に、イニシアチブのカテゴリを追加します。 最後に、ポートフォリオ バックログにイニシアチブを追加します。
Initiative バックログ レベルを追加した後どうなるか確認するには、ここをクリックして先にジャンプしてください。
作業項目の種類 Initiative の作成
作業項目の種類を作成する最も簡単な方法は、既存の種類をコピーして名前を変更し、それを編集することです。 次の手順では、作業項目の種類 Feature をエクスポートし、作業項目の種類 Initiative のベースとして使用します。 ここに示す例では、プロジェクト名が Phone Saver、サーバー名が Fabrikam であると想定しています。 チーム プロジェクト コレクション名は、既定の名前 DefaultCollection です。
管理者モードでコマンド プロンプト ウィンドウを開き、Visual Studio (またはチーム エクスプローラー) がインストールされているディレクトリに変更します。
cd %programfiles%\Microsoft Visual Studio 12.0\Common7\IDE
Windows の 64 ビット エディションでは、%programfiles(x86)% を使用します。
witadmin ツールを使用して作業項目の種類 Feature の定義をダウンロードし、Initiative.xml として保存します。
witadmin exportwitd /collection:"http://fabrikam:8080/tfs/DefaultCollection" /p:"Phone Saver" /n:Feature /f:%userprofile%\documents\Initiative.xml
Initiative.xml ファイルを開き、<WORKITEMTYPE name="Feature"> を <WORKITEMTYPE name="Initiative"> に置き換えて、説明を更新します。
<witd:WITD application="Work item type editor" version="1.0" xmlns:witd="https://schemas.microsoft.com/VisualStudio/2008/workitemtracking/typedef"> <WORKITEMTYPE name="Initiative"> <DESCRIPTION>Tracks an initiative that will be released with the product. </DESCRIPTION>
Label 値として Implementation が指定されている Tab 要素を編集します。 <Filter WorkItemType="Product Backlog Item" /> を <Filter WorkItemType="Feature" /> に置き換えます。 これにより、機能がイニシアチブの子作業項目として表示されます。
<Tab Label="Implementation"> <Control Type="LinksControl" Name="Hierarchy" Label="" LabelPosition="Top"> <LinksControlOptions> <LinkColumns> <LinkColumn RefName="System.Id" /> <LinkColumn RefName="System.Title" /> <LinkColumn RefName="System.AssignedTo" /> <LinkColumn RefName="System.State" /> </LinkColumns> <WorkItemLinkFilters FilterType="include"> <Filter LinkType="System.LinkTypes.Hierarchy" FilterOn="forwardname" /> </WorkItemLinkFilters> <ExternalLinkFilters FilterType="excludeAll" /> <WorkItemTypeFilters FilterType="include"> <Filter WorkItemType="Feature" /> </WorkItemTypeFilters> </LinksControlOptions> </Control> </Tab>
ファイルをインポートします。
witadmin importwitd /collection:"http://fabrikam:8080/tfs/DefaultCollection" /p:"Phone Saver" /f:%userprofile%\documents\Initiative.xml
Initiative カテゴリの作成
作業項目の種類 Initiative を作成できたので、チーム プロジェクトに表示されるカテゴリのセットにイニシアチブのカテゴリを追加しましょう。
Categories 定義を xml ファイルにエクスポートします。
witadmin exportcategories /collection:"http://fabrikam:8080/tfs/DefaultCollection" /p:"Phone Saver" /f:%userprofile%\documents\categories.xml
ファイルを開き、Initiative カテゴリを追加します。 次の例では、Initiative カテゴリに会社名を使用して、カスタマイズであることを示しています。
<CATEGORY refname="Fabrikam.InitiativeCategory" name="InitiativeCategory"> <DEFAULTWORKITEMTYPE name="Initiative" />
前の手順と同様に、ファイルをインポートします。
witadmin importcategories /collection:"http://fabrikam:8080/tfs/DefaultCollection" /p:"Phone Saver" /f:%userprofile%\documents\categories.xml
ポートフォリオ階層への Initiative カテゴリの追加
後は、ポートフォリオ バックログを構成している作業項目の階層にイニシアチブを追加するだけです。
プロセス構成定義を xml ファイルにエクスポートします。
witadmin exportprocessconfig /collection:"http://fabrikam:8080/tfs/DefaultCollection" /p:"Phone Saver" /f:%userprofile%\documents\MyProcessConfiguration.xml
ファイルを開き、PortfolioBacklogs セクション内に、Initiatives の PortfolioBacklog セクションを追加します。 これと同時に、Initiatives が Features の親作業項目になるように、FeatureCategory の PortfolioBacklog 要素を変更します。
<PortfolioBacklogs> <PortfolioBacklog category="Fabrikam.InitiativeCategory" pluralName="Initiatives" singularName="Initiative"> <AddPanel> <Fields> <Field refname="System.Title" /> </Fields> </AddPanel> <Columns> <Column width="100" refname="System.WorkItemType" /> <Column width="400" refname="System.Title" /> <Column width="100" refname="System.State" /> <Column width="50" refname="Microsoft.VSTS.Common.BusinessValue" /> <Column width="100" refname="Microsoft.VSTS.Scheduling.TargetDate" /> <Column width="200" refname="System.Tags" /> </Columns> <States> <State type="Proposed" value="New" /> <State type="InProgress" value="In Progress" /> <State type="Complete" value="Done" /> </States> </PortfolioBacklog> <PortfolioBacklog category="Microsoft.FeatureCategory" parent="Fabrikam.InitiativeCategory" pluralName="Features" singularName="Feature">
WorkItemColors セクションに、Initiative に使用する色を追加します。
<WorkItemColor primary="FFFF6600" secondary="FFFEB380" name="Initiative" />
これにより、リストの表示に使用する基本色として、明るい色をオレンジ色が割り当てられます。タスク ボードやかんばんボードなどのボードの表示で使用される色として、淡いオレンジ色が割り当てられます。
ファイルをインポートします。
witadmin importprocessconfig /collection:"http://fabrikam:8080/tfs/DefaultCollection" /p:"Phone Saver" /f:%userprofile%\documents\MyProcessConfiguration.xml
これで作業は終わりです。 3 番目のバックログ レベル Initiatives が追加されました。
イニシアチブの定義
Initiatives を定義したので、項目を作成しましょう。 管理チームのメンバーは、Initiatives バックログ ビューから直接、簡単に項目を追加することができます。 この操作は、バックログ項目を任意のバックログに追加する操作と同じです。
Initiatives 作業項目から直接、新しい機能を作成することもできます。これには、[実装] タブまたは [リンク] タブで新しい作業項目を作成します。 この操作で機能を作成すると、同時に親子関係も作成されるという利点があります。
既に機能作業項目がある場合は、その親としてイニシアチブを追加することもできます。 この操作を行った場合は、既存の機能とサポートされるイニシアチブが自動的に関連付けられるという利点があります。 さらに、機能からバックログ項目を作成して、それを個々のアジャイル チームに関連付けることもできます。
既存バックログがある場合の複数項目のマップ
既存のバックログがある場合は、これらの項目間に親子関係を作成して、進行状況の自動レポートをサポートします。 機能にバックログ項目をマップし、取り組みに機能をマップします。 マッピング ペインを使用すると簡単です。 まず、マッピング ペインをオンにしてください。
バックログから親として関連付ける項目をマッピング ペインにドロップします。
必要な階層が完成するまで、バックログの各レベルでこのプロセスを繰り返します。
また、Microsoft Excel で作業項目を一括編集し、その階層を管理することもできます。
進行状況の表示
適切な親子リンクで作業項目を関連付けたので、さまざまなレベルで進行状況の表示がどのように適用されているか確認しましょう。
進行状況の管理ビュー
管理ビューでは、Phone Saver チームの Initiatives バックログにより、Phone Saver プロジェクトのすべてのチームの Initiative 作業項目が表示されます。
ビューを切り替えて、関連付けられている機能を表示することもできます。
さらにバックログ項目またはタスク レベルまでドリルダウンすることもできます。
ヒント: どのチームがどの項目で作業しているか確認するには、区分パス列を追加します。
また、かんばんボードで進行状況を表示することもできます。 管理チームは、どのイニシアチブと機能が進行中であるか確認できます。
進行状況のチーム ビュー
個々のアジャイル チームでは、ビューは大きく異なります。 これらのチームのメンバーが Initiatives バックログまたは Features バックログを参照しても、何も表示されません。 これは、アジャイル チームのレベルでは、項目を直接作成または処理しないためです。 アジャイル チームからは、イニシアチブや機能のフル リストを表示できません。 ただし、サポートしているイニシアチブや機能をアジャイル チームで調べる場合は、[バックログ項目] バックログからこれらのビューを有効にすると、作業中の項目でサポートされる機能やイニシアチブを表示することができます。
それ以外では、個々のチームの作業は普段と変わりません。 各チームでは、かんばんボード、タスク ボード、およびその他の機能を従来どおり使用できますが、チームの進行状況は、手動で報告などの操作を行わなくても、管理側から確認できるようになっています。 アジャイル チームの行動が、管理ビューに反映されます。
作成者について
Gregg Boer は、Microsoft の主席プログラム マネージャーです。 Gregg は、TFS のアジャイル管理エクスペリエンスの製品所有者です。
Susan Ferrell は、Microsoft のシニア テクニカル ライターです。
Kathryn Elliott は、Microsoft のシニア テクニカル ライターです。