Scaled Agile Framework: Using TFS to support epics, release trains, and multiple backlogs

Visual Studio 2013

企业客户已了解各个敏捷团队的优势。 但是,在团队之间扩展这些实践和实现企业级的敏捷性具有不少挑战。 大规模敏捷框架® (SAFe™) 提供了如何应对这些挑战和扩展敏捷性的路线图。 并且,如果您拥有 TFS 2013 本地部署,则您可以使用 SAFe。

您可以使用通过即开即用的 TFS 过程模板创建的团队项目来跟踪 SAFe 条件。 本文指导您如何将 SAFe 概念映射到 TFS、如何在 TFS 中计划和跟踪 SAFe 项目,以及如何配置和自定义 TFS 以支持 SAFe。

在 TFS 中启用 SAFe 的步骤

如果您熟悉使用 Scrum,但不是熟悉 SAFe,来自 Inbar Oren, 即 Lean Samurai 的大规模敏捷框架基础的这些视频 是帮助您入门的好方法。

映射到 TFS 概念的 SAFe 概念

SAFe 支持多个敏捷团队的项目组合视图。 SAFe 说明了团队层次结构如何满足项目组合愿景,这些团队全部都有自己的具体目标。 此框架将长篇故事分解为功能和情景,其中的团队在冲刺 (sprint) 中工作并提供程序递增 (PI) 和版本培训。 此外,项目组合积压工作可以跟踪可交付结果如何映射到战略主题和关联预算。

SAFe 体系结构概览 © D. Leffing..

图像由Leffingwell, LLC提供。

本白皮书中的示例演示了如何添加长篇故事 WIT 和积压工作、配置三层团队层次结构,并将团队映射到其各自的区域和迭代路径。 从 TFS Agile 过程模板构建示例。 但是,所做的更改可以应用于任何 TFS 过程模板中。

支持 SAFe 的 TFS 结构

SAFe 项目组合、项目和团队映射到 TFS 团队项目和团队

因为 TFS 支持分层团队结构,每个团队都拥有自己的工作视图,可以汇总到他们的团队层次结构中的下一级。

TFS 团队的 SAFe 角色

要支持 SAFe 团队,您需要把默认团队重新配置为项目组合团队来管理您的长篇故事。 然后,您可以创建子团队用于项目级别的工作和团队级别的工作。 工作可以跨团队和越级跟踪。

SAFe 的积压工作映射到 TFS 积压工作

TFS 即开即用地支持情景和功能积压工作级别。 您可以轻松添加三个级别,以便跟踪长篇故事。 可以将用户情景映射到功能,功能反过来可映射到长篇故事。 积压工作的层次结构视图显示用户情景的进度如何影响长篇故事。

分层积压工作 (backlog):长篇故事、功能和情景

SAFe 版本、迭代和冲刺 (sprint) 映射到 TFS 迭代

SAFe 版本培训、版本、迭代、程序增量 (PI) 和冲刺 (sprint) 可以很容易地映射到 TFS 迭代路径。 通过跨团队层次结构共享迭代,您可以用有凝聚力的方式管理版本。

SAFe 向 TFS 迭代发布培训映射

项目组合团队跟踪长篇故事,它可以跨多个版本培训或 PI。 程序团队跟踪与 PI 一起交付的功能可交付结果。 功能团队在冲刺 (sprint) 中工作以完成若干个情景。 使用 TFS,每个团队可以选择哪个迭代将支持他们跟踪其团队可交付结果。

团队利用迭代跟踪可交付结果

SAFe 战略主题和预算映射到 TFS 标记和字段

您可以使用标记把长篇故事映射到其战略主题或关联预算。

标记可跟踪价值流或相关预算

您可以在 TFS 中搜索和查询标记,您可以使用标记创建可重用的查询和报告。

对于战略主题和预算更可靠的工作映射,您可以将字段添加到您的工作项来跟踪每个长篇故事、功能或情景支持哪些主题或预算。

需求类型跟踪业务或体系

SAFe 的度量值和 TFS 的报告

您可以通过添加或自定义报告来查看 SAFe 度量值。 例如,功能进度报告类似于情景概述报告,显示哪些功能接近完成,哪些刚开始。 当多个团队在链接到功能的情景中工作时,将显示一个进度栏。 它描述了给定功能的完成百分比 (%) 。 利益干系人具有可操作的数据,以便管理范围、资源和优先级。

功能进度报告

关于功能进度报告的可下载版本,请参阅扩展敏捷和 SAFe 的 TFS 报表

计划/跟踪 TFS 中的 SAFe 项目

一旦您配置了 TFS 以支持 SAFe,请创建从情景一直到长篇故事的跟踪关系。 此外,您可以查看项目组合、 程序的进度和功能团队级别。

将功能映射到长篇故事,情景映射到功能

程序团队可以使用映射窗格将功能映射到长篇故事。 功能团队可以使用相同的经验将他们的情景映射到功能。

将功能映射到长篇故事

项目组合团队的进度视图

要跟踪跨版本的长篇故事的进度,项目组合团队的积压工作将显示长篇故事。 要显示功能及其支持用户情景,可以展开每个长篇故事。

长篇故事、功能和故事的层级

项目组合团队还可以在其看板上查看长篇故事的进度。

长篇故事看板

程序团队的进度视图

程序团队主要关心版本培训,他们可以查看其积压工作中的功能,以及与它们关联的 PI。

功能和故事的项目团队积压工作

如同项目组合团队,程序团队还可以切换其视图以查看他们的功能支持哪些长篇故事,支持其功能的用户情景,或同时查看两者。

对程序团队可用的另一个视图显示在传送冲刺 (sprint) 期间版本培训进度、积压工作项或活动任务的基于查询的图形。 可自定义主页视图可用于每个团队。

主页,团队收藏夹

因为如此多的程序团队的工作都是围绕 PI 和版本培训进行的,显示计划发布日期和预计将进行给定培训的内容的自定义报告可能非常有用。 此外,如果你的 TFS 部署包括与 SQL Server Reporting Services 或 Project Server 的集成,您可以利用丰富的报告选项和其中的每个服务必须提供的内置报告。

功能团队的进度视图

对于单个功能团队而言,其积压工作视图显示他们在做的情景。

迁移故事的功能团队积压工作

因为功能团队并不拥有长篇故事或功能,长篇故事和功能不会显示在其团队级别的积压工作视图中。 但是,如果团队想要知道它们的情景支持哪些长篇故事和功能,它们可以从其积压工作打开这些视图。

将故事的团队积压工作迁移到长篇故事

它们还可以将其工作分解为许多任务,并使用任务板使他们在特定冲刺 (sprint) 期间对任务保持跟踪。

迁移团队冲刺 (sprint) 3 任务板

当功能团队协同工作以达到版本计划的功能的稳定状态时,查询图表视图将变得对创新和规划 (IP) 冲刺 (sprint)非常有用。

Bug 图表

对于各个功能团队而言,所有其他内容都一如往常。 它们可以按其通常的节奏冲刺 (sprint)。 它们可使用其看板和任务板来跟踪进度和把工作分解为易于管理的片段。

但是,现在它们在各个情景中的进度对其程序和项目组合管理团队都是可见的。 管理视图反映他们做的是什么。

将 TFS 配置为支持 SAFe

在此部分中,我们将从名为“Fabrikam”的项目和共享该项目名的一个团队开始,一直到以下三个级别和九个团队的结构中。 区域路径层次结构和配置的每个团队的区域路径支持层次结构中的每个团队的积压工作视图和视图汇总。

分层区域支持 3 个级别(9 个团队)

在 TFS 中的每个项目都有默认团队。 您可以为程序级别和功能团队级别工作配置附加团队。 而且,您可以把默认团队重新定义为管理长篇故事的项目组合团队。

以这种方式,所有团队可以都管理他们自己的工作负载和优先级,同时清楚地了解其工作如何支持项目组合团队的积压工作中管理的这些长篇故事。 同时,项目组合团队可以监控其自己的看板上的积压工作的进度、在其积压工作中安排项的优先级和查看跨版本培训的进度。

所有这可能听起来很复杂,但它实际上只需要很少的配置就可以设置好团队并开始工作。

我们从有一个默认团队、区域和一套迭代的一个项目开始。 首先,我们将配置区域路径结构以支持我们想要的团队的层次结构。 然后我们将确保迭代路径支持我们想要的版本结构和团队使用的程序和功能。 最后,我们将创建、配置和填充团队的成员资格。

您将需要是项目管理员组的成员才可以配置和自定义 TFS。

创建区域,以支持您的团队层次结构

  1. 连接到您想配置为支持 SAFe 的团队项目,并使用齿轮图标“设置”图标打开默认团队的管理页。

  2. 区域页上,在顶级区域路径下创建一个子区域,将其命名对应于您将创建的其中一个程序团队。

    创建子区域

  3. 接下来,在相同的子级别中创建第二个区域,并在第二个项目团队后为其命名。

  4. 在每个项目区域中下, 为每个功能团队创建将支持他们各自的程序团队的子区域。 最终,您将得到 3 级区域路径层次结构。

    区域页,已定义 9 个区域路径

创建迭代以支持您的版本培训和冲刺 (sprint)

若要跟踪版本的进度,请创建您的迭代路径结构。 与区域路径不同,多个团队可以共享相同的迭代路径结构。 共享迭代结构可以让多个团队以相同的冲刺 (sprint) 节奏、向着相同的版本培训工作。

如果您的默认团队已经有迭代,您可以重命名它们。 您需要创建迭代结构支持您的整个团队结构,不只是一个团队。

  1. 在与项目共享相同名称的默认迭代下,创建将表示您的第一个程序增量 (PI) 的子迭代。 您可以有选择地为 PI 添加开始和结束日期,但请记住,迭代将进一步细分为冲刺 (sprint)。

    创建迭代

  2. 接下来,为 PI 内的每个冲刺 (sprint) 创建子迭代。 设置这些冲刺 (sprint)的日期,使其相对应于功能团队的节奏。

    迭代页,创建 IP 冲刺 (sprint) 迭代

创建和配置您的团队

在此部分中,我们将配置映射到前面创建的层次结构区域路径的分层团队结构。

此结构将以下 SAFe 团队映射到 TFS 团队:

  • 项目组合团队-> 默认顶级团队,Fabrikam 团队

  • 项目团队-> 辅助级团队,Fiber 套件和服务套件

  • 功能团队-> Fiber 套件和服务套件下定义的第三级团队。

如果您需要更详细的指南,请参阅敏捷项目组合管理:使用 TFS 支持跨多个团队的积压工作 (backlog)

您将需要成为 TFS 的项目管理员来执行这些步骤。

创建和配置每个项目团队

  1. 从团队项目的概述页中,创建一个新团队。 请确保已清除使用团队名称创建区域路径的复选框。

    创建团队

  2. 从列表中选择团队,转到区域页,然后选择您之前为该团队创建的区域路径旁边的复选框。

    区域页,项目团队,设置默认区域

  3. 使用上下文菜单排除子区域。 通过排除子区域,团队的积压工作将只包括其区域路径匹配团队的默认区域路径的那些项。

    “项目”团队的区域页面,不包括子区域

  4. 接下来,配置将为程序团队激活的迭代。 在此示例中,我们已配置了三个 PI,每个都有五个两周冲刺 (sprint)。 冲刺 (sprint) 中的四个是常规冲刺 (sprint),最后一个冲刺 (sprint) 是创新和规划 (IP) 冲刺 (sprint)。

    迭代页,项目团队

      

    因为 Fiber 套件程序团队致力于版本培训,我们选择 PI 1、2 和 3,但我们不会选择单个冲刺 (sprint)。

  5. 一旦选择了为团队激活哪个迭代,则会将用户添加到新的团队中。 在理想情况下,您将为每个功能团队添加 scrum 主管,把产品经理以及版本培训工程师 (RTEs) 添加到程序团队,如 Fiber 套件。

    添加团队成员

  6. 如果您已经在程序级别拥有多个团队,请为每个程序团队重复步骤 1 至 5。

创建和配置每个功能团队

接下来,我们将创建一些功能团队以完成团队层次结构第三个级别的工作。 每个功能团队都将有助于汇总到 PI 的冲刺 (sprint) 工作。 您创建的团队的数量将取决于您组织的规模。

  1. 从原始团队的管理页创建一个新的团队并命名团队。 如之前一样,请确保已清除使用团队名称创建区域路径旁边的复选框。

    创建新的团队

  2. 从列表中选择团队,转到区域页,然后选择您之前为该团队创建的区域路径旁边的复选框。

    为迁移功能团队设置默认的区域路径

  3. 使用您之前创建的 PI 和冲刺 (sprint) 配置团队的迭代。 与程序团队不同的是,这次是为功能团队选择各个冲刺 (sprint) 作为工作迭代。

    迁移团队迭代

  4. 为开发人员、测试人员和团队的 scrum 主管添加帐户。 TFS 支持分配 scrum 主管到多个团队中。 Scrum 主管可以跨多个团队跟踪工作。

    迁移团队成员

  5. 对您的组织中的每个功能团队重复步骤 1 到 4。 请确保您为团队配置的默认区域路径是在其相应的程序级别区域路径下的子区域路径。 这可确保从功能团队到项目团队的汇总。

配置项目组合团队

现在您的子团队结构已配置完成,请重新配置默认团队,使其作为项目组合团队。 即使此团队将继续使用项目的名称,对此顶层团队所做的更改将有助于确保它有效地在最高级别跨 PI 跟踪长篇故事。

  1. 在团队项目的区域页上,更改设置以便不包含子区域。 请确保您选择了团队项目而且不是默认团队 Fabrikam。

    项目组合团队的“区域”页,不包括子区域

  2. 在迭代页上,清除除了根级别之外的所有迭代旁边的复选框,根级别不能被清除。 因为项目组合团队只关注跨 PI 的长篇故事,所以它只使用根迭代,而不是 PI 或冲刺 (sprint)。 项目组合团队不在冲刺 (sprint) 中工作。

    迭代页,项目组合团队

  3. 从项目组合团队添加和删除适合于此级别的用户。 从概述页中,选择默认团队。

    概览选项卡,选择默认团队

       

    请考虑在此级别添加其他角色,如项目组合经理、企业级架构师和版本培训工程师 (RTE) 并删除其他人。

    “概述”页,项目组合团队成员

自定义 TFS 过程以支持 SAFe

在此部分中,我们要将长篇故事 WIT 添加到项目组合积压工作层次结构中。 我们还将向所有三个积压工作 WIT 添加要求类型字段。 然后我们将创建一些长篇故事,并将功能映射到长篇故事。

自定义 TFS 积压工作对象

在添加了长篇故事积压工作级别后,如果您对其工作方法感兴趣,请现在转到该处。 此外,如果您不想自己设置该部分所述的自定义步骤,ALM Rangers 提供了PowerShell 脚本的博客文章和示例,演示了如何在您的项目上安装这些自定义设置。

把长篇故事添加到项目组合积压工作中

因为在这之前,您将需要是项目管理员组的成员才能执行这些步骤。

首先,我们将导出一个现有 WIT 并使用它创建新的 WIT,我们将用此命名长篇故事。 我们还将添加要求类型字段以跟踪它是什么类型的长篇故事:体系结构或业务。 接下来,我们将添加一个长篇故事的类别。 然后,我们将修改现有 WIT(功能和用户情景,即使它们未命名这些),以包括要求类型字段。 要求类型字段跟踪每个工作项支持的目标的类型。 最后,我们将把长篇故事添加到项目组合团队积压工作中。

添加长篇故事 WIT

创建工作项类型 (WIT) 最简单的方法是复制现有工作项类型,对其进行重命名然后编辑。

我们将导出功能 WIT,并将其用作长篇故事 WIT 的基础。

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

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

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

  2. 使用witadmin工具下载功能 WIT 定义并将其保存为 Epic.xml。

    witadmin exportwitd /collection:"http://ServerName:8080/tfs/CollectionName" /p:"ProjectName" /n:Feature /f:"DirectoryPath/Epic.xml"

  3. 打开 Epic.xml 文件,使用更换<WORKITEMTYPE name="Epic"><WORKITEMTYPE name="Feature">,并更新说明。

    <witd:WITD application="Work item type editor" version="1.0" xmlns:witd="http://schemas.microsoft.com/VisualStudio/2008/workitemtracking/typedef">
    <WORKITEMTYPE name="Epic">
       <DESCRIPTION>Tracks an Epic that will span Releases. </DESCRIPTION>
    
  4. 编辑<Tab Label="Implementation">或 CMMI、<Tab Label="Requirements">部分,用<Filter WorkItemType="Feature" />替换以下行。

    • 敏捷:<Filter WorkItemType="User Story" />

    • Scrum:<Filter WorkItemType="Product Backlog Item" />

    • CMMI:<Filter WorkItemType="Requirement" />

      进行此更改将限制链接控件,以支持功能作为长篇故事的子工作项。

    <Tab Label="Implementation">
       <Control Type="LinksControl" Name="Hierarchy" Label="" LabelPosition="Top">
          <LinksControlOptions>
              <WorkItemLinkFilters FilterType="include">
                 <Filter LinkType="System.LinkTypes.Hierarchy" FilterOn="forwardname" />
              </WorkItemLinkFilters>
              <WorkItemTypeFilters FilterType="include">
                 <Filter WorkItemType="Feature" />
              </WorkItemTypeFilters>
              <ExternalLinkFilters FilterType="excludeAll" />
              <LinkColumns>
                 <LinkColumn RefName="System.ID" />
                 <LinkColumn RefName="System.Title" />
                 <LinkColumn RefName="System.AssignedTo" />
                 <LinkColumn RefName="System.State" />
                 <LinkColumn LinkAttribute="System.Links.Comment" />
              </LinkColumns>
           </LinksControlOptions>
    
  5. 将要求类型字段添加到长篇故事 WIT 定义中。 为此,我们借用现有字段(最初创建以支持 CMMI 项目,但在此处对我们的目的同样有用)Microsoft.VSTS.CMMI.RequirementType,并将其添加到长篇故事FIELDS部分。

    查找FIELDS部分,然后添加以下代码:

    <FIELD name="Requirement Type" refname="Microsoft.VSTS.CMMI.RequirementType" type="String" reportable="dimension">
       <REQUIRED />
       <ALLOWEDVALUES>
          <LISTITEM value="Architecture" />
          <LISTITEM value="Business" />
       </ALLOWEDVALUES>
       <DEFAULT from="value" value="Business" />
       <HELPTEXT>Indicates whether this supports business or architectural objectives.</HELPTEXT>
    </FIELD>
    
  6. 接下来,将字段添加到窗体。 在FORM部分下,将该字段添加您认为它最适合于您的业务的位置。 在下面的示例中,我们在迭代字段下面添加了该字段。

    <Group Label="Classification">
       <Column PercentWidth="100">
          <Control FieldName="System.AreaPath" Type="WorkItemClassificationControl" Label="&amp;Area" LabelPosition="Left" />
          <Control FieldName="System.IterationPath" Type="WorkItemClassificationControl" Label="Ite&amp;ration" LabelPosition="Left" />
          <Control FieldName="Microsoft.VSTS.CMMI.RequirementType" Type="FieldControl" Label="Type" LabelPosition="Left" />
    
  7. 保存然后导入该文件。

    witadmin importwitd /collection:"http://ServerName:8080/tfs/CollectionName" /p:"ProjectName" /f:"DirectoryPath/Epic.xml"

添加长篇故事类别

现在,我们已拥有长篇故事 WIT,我们将为长篇故事添加一个类别。 TFS 基于类别管理积压工作。

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

    witadmin exportcategories /collection:"http://ServerName:8080/tfs/CollectionName" /p:"ProjectName" /f:"DirectoryPath/categories.xml"

  2. 打开此文件并添加长篇故事类别。 您可以选择将 Microsoft 替换为您的公司名,以表示它是您自定义的。

    <CATEGORY name="Epic Category" refname="Microsoft.EpicCategory">
       <DEFAULTWORKITEMTYPE name="Epic" />
    </CATEGORY>
    
  3. 与之前一样,导入该文件。

    witadmin importcategories /collection:"http://ServerName:8080/tfs/CollectionName" /p:"ProjectName" /f:"DirectoryPath/categories.xml"

添加要跟踪的业务/体系结构工作的要求类型字段

接下来,我们将把要求类型字段添加到功能和积压工作项的第三个级别,无论其是用户情景、产品积压工作项,或是(可选)Bug。 您不必将其添加到要求中,因为它已包含在默认 CMMI 定义中。

  1. 导出功能 WIT 定义。

    witadmin exportwitd /collection:"http://ServerName:8080/tfs/CollectionName" /p:"ProjectName" /n:Feature /f:"DirectoryPath/Feature.xml"

  2. 只需像以前处理长篇故事 WIT 那样添加要求类型字段。 查找FIELDS部分,然后添加以下代码:

    <FIELD name="Requirement Type" refname="Microsoft.VSTS.CMMI.RequirementType" type="String" reportable="dimension">
        <REQUIRED />
        <ALLOWEDVALUES>
            <LISTITEM value="Architecture" />
            <LISTITEM value="Business" />
        </ALLOWEDVALUES>
        <DEFAULT from="value" value="Business" />
         <HELPTEXT>Indicates whether this supports business or architectural objectives</HELPTEXT>
    </FIELD>
    
  3. 将字段添加到您将其添加到长篇故事的窗体的同一位置中。 例如:

    <Group Label="Classification">
       <Column PercentWidth="100">
          <Control FieldName="System.AreaPath" Type="WorkItemClassificationControl" Label="&amp;Area" LabelPosition="Left" />
          <Control FieldName="System.IterationPath" Type="WorkItemClassificationControl" Label="Ite&amp;ration" LabelPosition="Left" />
          <Control FieldName="Microsoft.VSTS.CMMI.RequirementType" Type="FieldControl" Label="Type" LabelPosition="Left" />
    </Column>
    
  4. 保存然后导入该文件。

    witadmin importwitd /collection:"http://ServerName:8080/tfs/CollectionName" /p:"ProjectName" /f:"DirectoryPath/Feature.xml"

  5. 对用户情景和产品积压工作项 WIT 定义重复步骤 1 到 4。 如果您想要跟踪 bug 支持的哪个要求,或如果您在您的积压工作上跟踪 bug,您可以有选择地编辑 Bug WIT 定义。

将长篇故事类别添加到项目组合积压工作 (backlog) 层次结构

接下来,我们将向对构成积压工作的工作项的层次结构中添加长篇故事。

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

    witadmin exportprocessconfig /collection:"http://ServerName:8080/tfs/CollectionName" /p:"ProjectName" /f:"DirectoryPath/ProcessConfiguration.xml"

  2. 打开文件并在PortfolioBacklogs部分中为长篇故事添加PortfolioBacklog部分。 同时,为FeatureCategory修改PortfolioBacklog元素,以便长篇故事将成为功能的父级。

    基于您的过程模板,根据需要修改元状态映射。 下面的示例支持 Agile 和 CMMI 项目。 此外,把要求类型字段添加到Columns部分。

    <PortfolioBacklogs>
      <PortfolioBacklog category="Microsoft.EpicCategory" pluralName="Epics" singularName="Epic">
          <States>
          <State value="New" type="Proposed" />
          <State value="Active" type="InProgress" />
          <State value="Resolved" type="InProgress" />
          <State value="Closed" type="Complete" />
          </States>
    <Columns>
         <Column refname="System.WorkItemType" width="100"/>
         <Column refname="System.Title" width="400"/>
         <Column refname="System.State" width="100"/>
         <Column refname="Microsoft.VSTS.Common.BusinessValue" width="50"/>
         <Column refname="Microsoft.VSTS.CMMI.RequirementType" width="100"/>
         <Column refname="System.Tags" width="200"/>
    </Columns>
        . . .
    </PortfolioBacklog>        
    

    Scrum 项目要求您映射新建、进行中和完成的工作流状态。 这些都是为功能项目组合积压工作项映射的相同的状态。

            <State type="Proposed" value="New" />
            <State type="InProgress" value="In Progress" />
            <State type="Complete" value="Done" />
    

    并且,CMMI 项目需要您映射已建议、活动、已解决和已关闭的工作流状态。

            <State value="Proposed" type="Proposed" />
            <State value="Active" type="InProgress" />
            <State value="Resolved" type="InProgress" />
            <State value="Closed" type="Complete" /> 
    
  3. 接下来,把parent="Microsoft.EpicCategory" 添加到PortfolioBacklog category="Microsoft.FeatureCategory"。 此外,将要求类型字段添加到Columns部分。

    <PortfolioBacklog category="Microsoft.FeatureCategory" parent="Microsoft.EpicCategory" pluralName="Features" singularName="Feature">
       . . .
    <Columns>
         <Column refname="System.WorkItemType" width="100"/>
         <Column refname="System.Title" width="400"/>
         <Column refname="System.State" width="100"/>
         <Column refname="Microsoft.VSTS.Common.BusinessValue" width="50"/>
         <Column refname="Microsoft.VSTS.CMMI.RequirementType" width="100"/>
         <Column refname="System.Tags" width="200"/>
    </Columns>
        . . .
    
    </PortfolioBacklogs>
    
  4. 接下来,将要求类型字段添加到RequirementsBacklog部分的Columns部分。

    <RequirementBacklog singularname="User Story" pluralName="User Stories" category="Microsoft.RequirementCategory">
       . . .
    <Columns>
         <Column refname="System.WorkItemType" width="100"/>
         <Column refname="System.Title" width="400"/>
         <Column refname="System.State" width="100"/>
         <Column refname="Microsoft.VSTS.Scheduling.Effort" width="50"/>
         <Column refname="Microsoft.IterationPath" width="200"/>
         <Column refname="Microsoft.VSTS.CMMI.RequirementType" width="100"/>
         <Column refname="System.Tags" width="200"/>
    </Columns>
       . . .
    </RequirementBacklog>
    
  5. 将用于长篇故事的用户的颜色添加到WorkItemColors部分。 您可以选择需要的任何颜色,但理想情况下不要使用系统已使用的颜色。

    我们选择的颜色对应于橙色(十六进制颜色代码 = FF7B00)。 为十六进制颜色代码添加前缀FF。

    <WorkItemColor primary="FFFF7B00" secondary="FFFFD7B5" name="Epic" />
    
  6. 保存然后导入该文件。

    witadmin importprocessconfig /collection:"http://ServerName:8080/tfs/CollectionName" /p:"ProjectName" /f:"DirectoryPath/ProcessConfiguration.xml"

更新现有工作项的区域路径

对于显示在团队的积压工作上的任何现有工作项,您必须把每个工作项的区域路径更新为团队的默认区域路径。 您可以从 web 浏览器中使用批量编辑功能,也可以使用 Excel

  1. 创建包含您要编辑的工作项的查询,选择您要编辑的项,然后从所选的任何一个项上打开上下文菜单。

    查询结果上下文菜单

  2. 选择对应于团队的默认区域路径的区域路径。

    编辑工作项

  3. 批量保存您修改的所有工作项。

    批量保存已编辑的工作项

有关批量修改工作项的详细信息,请转到此处

添加长篇故事,并将长篇故事映射到功能

现在您已添加了长篇故事 WIT,您将需要创建更多。 该过程与创建任何其他积压工作项是一样的。 从长篇故事的项目组合团队的积压工作页上,添加长篇故事积压工作项。

长篇故事积压工作,使用快速添加面板添加长篇故事

根据需要添加尽可能多的长篇故事。 若要按它们的重要性顺序列出项,请将它们拖到列表中。

长篇故事积压工作,对项目重新排序

长篇故事的默认要求类型是业务,但您可以把长篇故事从业务更改为体系结构。

长篇故事工作项窗体

您还可以把标记添加到长篇故事中,以帮助您跟踪每个长篇故事支持的投资主题。

及其庞大的工作项窗体,添加标记

现在从看板上查看您的长篇故事。 若要获得此视图,您需要自定义看板列以重命名并添加中间工作流状态。 有关这些状态的说明,请参阅业务长篇故事看板抽象

长篇故事看板

但是,这并不有趣。 无任何操作正在进行,并且您不能深化以查看哪些功能支持您的长篇故事。 您将需要将现有功能映射到刚创建的长篇故事,如果用户情景没有被映射,还要将用户情景映射到这些功能。

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

当您使用映射窗格时,很容易映射工作项。 从功能或情景积压工作页上,打开映射窗格。 在我们的示例中,我们选择 Fiber 套件团队并打开映射窗格和视图以查看映射到长篇故事的功能的层次结构。

将功能映射到长篇故事

请注意您是否已经把所有功能的区域路径更改为适当的程序级别团队,功能列表将为空,因为项目组合团队不拥有任何功能! 在这种情况下,切换到某一项目团队。

将项从积压工作拖到您想要关联为父级的项中。 您只能将功能映射到长篇故事。 同样,您可以只将积压工作项的第三个级别(无论是用户情景、积压工作项或要求)映射到功能。

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

长篇故事、功能和故事的层级

已在进行中的功能怎么样? 它们肯定不会出现在项目组合团队的积压工作中。 它们是项目团队的职责,因此它们出现在该团队的积压工作上。 (这是实际为工作项设置的区域路径的函数;只有您将其分配给您为该团队创建的区域路径时,工作项才会显示在团队的积压工作中。)可以从此处将其映射。

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

由于 SAFe 的一个重要方面是将工作映射到业务或体系结构目标,您将需要确保映射到体系结构长篇故事的任何功能设置为要求类型=体系结构。 (因为默认选项是业务,您不需要更改任何支持业务长篇故事的项的类型。)您还可以添加标记来跟踪投资。

该原理同样适用于正在进行的用户情景。 您可以将它们映射到功能、为您支持体系结构的长篇故事的工作将要求类型更改为体系结构,并添加用于跟踪主题的标记。

“用户情景”工作项窗格

资源

为方便参考,此处提供了本白皮书中提到的和另外几个资源。

关于作者

Gordon Beeming 是南非阳光明媚的城市 Derivco 的 Durban 的一名软件开发人员。 他把大部分时间都用于 Visual Studio 的编程或与他的家庭的休闲中。 他的博客在 31og.com 上,可以在 twitter.com/gordonbeeming 关注他的 Twitter。

Brian Blackman 是 Microsoft 高级开发人员首席顾问,专注于影响工程和市场中的 ISV 合作伙伴和企业成功。 他拥有 MBA 学位,是 CSM、 CSP、 MCSD (C++) 和 MCTS,而且是 Visual Studio ALM Ranger。 当他不做 Ruck Mastering 并致力于 Visual Studio ALM Ranger 项目时,他主要从事代码编写、创建和提供工作室,提供各种课程咨询,尤其是可以帮助企业追求业务敏捷性。

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

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

Susan Ferrell 是高级技术文档撰写人和 Visual Studio ALM Ranger。

Willy-peter Schaub是 Microsoft 加拿大开发中心的 Visual Studio ALM Rangers 的项目经理。 自 80 年代中期以来,他一直致力于软件工程的简易性和可维护性工作。 他的博客位于 blogs.msdn.com/b/willy-peter_schaub,您可以在 twitter.com/wpschaub关注他的 Twitter。