敏捷项目组合管理:使用 TFS 支持跨多个团队的积压工作 (backlog)

在 Team Foundation Server (TFS) 2012 中,你使用积压工作 (backlog) 来管理你的团队工作。 在 Team Foundation Server 2013 中,你可以使用项目组合积压工作 (backlog) 来管理你的工作。项目组合积压工作 (backlog) 可以让管理团队管理深入了解多个 Agile 团队的工作。 管理团队定义高级目标,并跟踪多个 Agile 团队中的工作。 Agile 团队负责执行工作,将项分解为任务,修复 Bug 并参与全局性工作。 所有团队都会有自己的积压工作 (backlog) 和板,并且也会有对由其工作支持的客户体验的汇总视图。 完成工作后,你将可以通过根据积压工作 (backlog) 级别对工作分组来管理项目组合,并查看项目组合在多个团队中的完成情况。

每个团队努力完成自己的积压工作 (backlog),积压工作 (backlog) 工作项类型的层次结构让管理者能在更高的层次去查看进度汇总。 在此白皮书中,我们将通过假设 Phone Saver 管理团队和处理整个项目的特定区域的 Agile 团队为例来演示如何设置此类结构。

每个团队都有自己的工作视图

Phone Saver 管理团队将工作定义为高级计划,然后将这些计划细分为对客户很重要的各个功能。 这时,将工作分配给 Agile 团队,Agile 团队进一步分解并定义要完成的工作。 在项目进行期间,管理团队向下钻取数据以按照所需的任意详细程度查看进度。 例如,他们可以查看 Scrum 项目中与每个功能项关联的积压工作 (backlog) 项。

在此屏幕快照中,你可看到管理团队的功能积压工作 (backlog) 视图,其中还显示了支持这些项的产品积压工作 (backlog) 项。 管理团队不负责这些产品积压工作 (backlog) 项;这些项已分配给各个 Agile 团队。 但是,由于它们是这些项的子级,因此筛选器仍将显示它们。 这样,管理团队就可跟踪进度了。

你可以选择要查看的详细信息级别

此信息图形显示了在上面的屏幕快照中显示的信息的概念级别。

管理团队的视图

每个 Agile 团队(例如客户团队)都有自己的团队主页、积压工作 (backlog)、看板和任务板。 这些页仅显示与各自的团队相关的信息。

在此屏幕快照中,你可看到 Agile 团队的冲刺 (sprint) 积压工作 (backlog) 视图,其中显示了他们针对冲刺 (sprint) 所处理的产品积压工作 (backlog) 项以及他们创建的用于细分和跟踪工作的相关任务。 他们在此视图中看不到自己的工作所支持的功能或计划。 与前面一样,此信息图形显示了此屏幕快照中显示的信息的概念级别。

该团队从冲刺 (sprint) 积压工作 (Backlog) 中工作敏捷团队看到的详细信息级别

设置团队和积压工作 (backlog) 级别

在 TFS 中创建一个团队项目后,将为该项目自动创建一个默认团队。 通过配置附加团队以便让 Agile 团队用来管理他们的日常工作,并将默认团队重新定义为管理团队将用来管理其级别的工作的团队,Agile 团队可以管理各自的工作负荷和优先级。 管理团队视图将显示各个 Agile 团队的所有工作的进度。 几乎不用进行任何配置即可设置好团队并开始工作。

除了使用 Agile 团队汇总进度,你还可使用积压工作 (backlog) 级别创建工作的分层视图。 在 TFS 2013 中,你可以直接访问两个级别的积压工作 (backlog)。 但如果你需要另外添加一个级别来支持项目组合管理,也可这么做。 虽然所需配置比 Agile 团队创建稍多一些,但仍然相当简单。 我们将演练设置 Agile 团队和创建附加积压工作 (backlog) 级别。

首先,让我们创建示例组织中所示的 Agile 和管理团队结构。

创建 Agile 团队并配置管理团队

  1. 从默认团队的主页中,使用齿轮图标 “设置”图标 打开管理页,并选择“新建团队”来创建 Agile 团队。

    从管理菜单创建子团队

  2. 为创建的 Agile 团队指定名称,并确保选择**“使用团队名称创建区域路径”**。

    创建具有其自己的区域路径的子团队

    这将成为管理团队区域路径的子区域,而且更重要的是,它可实现多个 Agile 团队间工作的分离,以及管理团队进度的大部分自动汇总。

  3. 为 Agile 团队配置冲刺 (sprint)。

    为该敏捷团队选择冲刺 (sprint)

  4. 将成员添加到新的 Agile 团队,并从管理组中移除不必要的成员。

    作为最佳做法,管理团队中的成员资格应限制为负责计划和功能的管理员和团队成员。 Agile 团队成员仍可查看管理团队的主页和积压工作 (backlog),这就像管理团队可以查看 Agile 团队的主页和积压工作 (backlog) 一样。

  5. 更改管理团队的区域以便排除子区域。

    子区域将用于敏捷团队积压工作 (Backlog)

创建所需数目的 Agile 团队。 如果将工作项分配给一个 Agile 团队,则这些团队将与之前一样能查看其积压工作 (backlog) 项,并可在看板和/或任务板上管理这些项。

Agile 团队的显示积压工作 (backlog) 项和任务的积压工作 (backlog)

该团队从冲刺 (sprint) 积压工作 (Backlog) 中工作敏捷团队看到的详细信息级别

管理团队将在积压工作 (backlog)、看板、任务板视图上看到分配给所有 Agile 团队的所有工作项,提供正在进行的工作以及尚未开始的工作的主视图。

管理团队的显示功能和 Agile 团队积压工作 (backlog) 项的积压工作 (backlog)

你可以选择要查看的详细信息级别管理团队的视图

既然你已设置好团队结构,让我们继续添加其他级别的积压工作 (backlog)。

添加其他积压工作 (backlog) 级别

添加其他积压工作 (backlog) 级别需要一点时间,但执行起来非常容易。 让我们来演练这一过程。 你需要是团队项目管理员组的成员才能执行这些步骤。 首先,导出现有工作项类型并对其进行编辑,以便创建新的工作项类型(我们称之为“计划”)。 然后将为计划添加一个类别。 最后,将计划添加到项目组合积压工作 (backlog) 中。

如果你更想了解添加计划积压工作 (backlog) 级别后的运行情况,请单击此处跳转。

创建“计划”工作项类型

创建工作项类型最简单的方法是复制现有工作项类型,对其进行重命名后编辑。 在下面的过程中,你将导出“功能”工作项类型并将其用作“计划”工作项类型的基础。 在所有示例中,项目名称都是 Phone Saver,而服务器名称都是 Fabrikam。 团队项目集合名称是默认名称 DefaultCollection。

  1. 在管理员模式下打开“命令提示符”窗口并将目录更改为 Visual Studio(或团队资源管理器)的安装位置。

    cd %programfiles%\Microsoft Visual Studio 12.0\Common7\IDE
    

    在 64 位版本的 Windows 上,使用 %programfiles(x86)%。

  2. 使用 witadmin 工具下载“功能”工作项类型定义并将其另存为 Initiative.xml

    witadmin exportwitd /collection:"http://fabrikam:8080/tfs/DefaultCollection" /p:"Phone Saver" /n:Feature /f:%userprofile%\documents\Initiative.xml
    
  3. 打开 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>
    
  4. 编辑标记有 ImplementationTab 元素。 将 <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>
    
  5. 导入该文件。

    witadmin importwitd /collection:"http://fabrikam:8080/tfs/DefaultCollection" /p:"Phone Saver" /f:%userprofile%\documents\Initiative.xml
    

创建“计划”类别

既然你已经具有“计划”工作项类型,则需要将一个计划类别添加到团队项目中可见的类别集中。

  1. 将“类别”定义导出到 XML 文件。

    witadmin exportcategories /collection:"http://fabrikam:8080/tfs/DefaultCollection" /p:"Phone Saver" /f:%userprofile%\documents\categories.xml
    
  2. 打开此文件并添加“计划”类别。 在以下示例中,“计划”类别将使用公司名称以将其标识为自定义项:

    <CATEGORY refname="Fabrikam.InitiativeCategory" name="InitiativeCategory">
      <DEFAULTWORKITEMTYPE name="Initiative" />
    
  3. 与前面一样,导入文件。

    witadmin importcategories /collection:"http://fabrikam:8080/tfs/DefaultCollection" /p:"Phone Saver" /f:%userprofile%\documents\categories.xml
    

将“计划”类别添加到项目组合层次结构

现在只要将你的计划添加到组成项目组合积压工作 (backlog) 的工作项层次结构中即可。

  1. 将过程配置定义导出到 XML 文件。

    witadmin exportprocessconfig /collection:"http://fabrikam:8080/tfs/DefaultCollection" /p:"Phone Saver" /f:%userprofile%\documents\MyProcessConfiguration.xml
    
  2. 打开文件并在 PortfolioBacklogs 节中为计划添加 PortfolioBacklog 节。 同时,请修改 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">
    
  3. 将用于方案的颜色添加到 WorkItemColors 部分。

    <WorkItemColor primary="FFFF6600" secondary="FFFEB380" name="Initiative" />
    

    这次分配了亮橙色作为列表显示所用的主要颜色,并分配了暗橙色作为任务板和看板所用的颜色。

  4. 导入该文件。

    witadmin importprocessconfig /collection:"http://fabrikam:8080/tfs/DefaultCollection" /p:"Phone Saver" /f:%userprofile%\documents\MyProcessConfiguration.xml
    

已完成! 你已添加名为“计划”的第三个积压工作 (backlog) 级别。

定义计划

既然你已定义计划,是时候创建一些项了。 管理团队的成员可以直接从计划积压工作 (backlog) 视图快速添加一个。 这与将积压工作 (backlog) 项添加到任意积压工作 (backlog) 的体验是相同的。

为该计划键入一个名称

也可通过从“实现”或“链接”选项卡创建新的工作项来从“计划”工作项直接创建新功能。 上述方法具有在创建功能的同时创建父子关系的附加优势。

使用“创建指向新项的链接”按钮

如果你已有一些现有的功能工作项,则也可选择添加一个计划作为它们的父级。 这种做法具有自动将功能与其支持的计划进行关联的优势。 此外,你还可从功能中创建积压工作 (backlog) 项并将其分配给各个 Agile 团队。

使用“新建链接工作项”创建计划

如果有现有的积压工作 (backlog),则映射多个项

如果你现在已有积压工作 (backlog),你会希望在这些项之间创建父子关系以便支持自动报告进度功能。 你需要将积压工作 (backlog) 项映射到功能,并将功能映射到计划。 庆幸的是,映射窗格可以让这个工作变得很简单。 首先,打开映射窗格。

切换映射开关以启用或禁用

现在将项从积压工作 (backlog) 放置到你要关联为父级的映射窗格功能。

拖放、选择或切换焦点到父项你可以添加其他积压工作 (Backlog) 级别

在每个积压工作 (backlog) 级别重复此过程,直到你创建了所需的层次结构。

你也可批量编辑工作项并在 Microsoft Excel 中管理其层次结构。

查看进度

既然你已经将工作项与适当的父子链接相关联,现在是时候查看进度视图如何应用于不同级别了。

进度的管理视图

在管理方面,Phone Saver 团队的计划积压工作 (backlog) 显示了 Phone Saver 项目中所有团队的计划工作项。

团队可查看其他级别的相关工作项

你可切换视图以显示关联的功能…

你可以添加其他积压工作 (Backlog) 级别管理团队看到的详细信息级别

…或者向下钻取,一直到积压工作 (backlog) 项或任务级别。

你可以更改显示的详细信息级别管理团队看到的详细信息级别

提示:添加“区域路径”列可查看哪个团队正在处理哪个项。

此外,你可在看板上查看进度。 管理团队可以查看正在进行的计划和功能。

所有团队项都显示在主看板上管理团队看到的详细信息级别

进度的团队视图

对于各个 Agile 团队,视图截然不同。 作为这些团队的成员之一,你在浏览到计划或功能积压工作 (backlog) 时看不到任何内容。 这是因为 Agile 团队不会直接创建或处理这个级别的项。 Agile 团队绝看不到完整的计划或功能列表。 但是,如果团队需要知道自己支持的计划和功能,可以从积压工作 (backlog) 项中打开这些视图,然后便可查看其处理的项所支持的功能和计划。

每个团队只能查看其处理的计划管理团队看到的详细信息级别

对于各个团队而言,所有其他内容都一如往常。 他们可一如既往地使用看板、任务板和其他功能,但现在管理人员可以看到他们的进度,而无需手动报告任何内容。 他们的工作会反映在管理视图中。

关于作者

Gregg Boer 是 Microsoft 的首席项目经理。 Gregg 是负责 TFS 中的 Agile 管理体验的产品负责人。

Susan Ferrell 是 Microsoft 的高级技术文档撰写人。

Kathryn Elliott 是 Microsoft 的高级技术文档撰写人。