Управление портфелем Agile: использование TFS для поддержки невыполненной работы между несколькими командами

В Team Foundation Server (TFS) 2012 управление задачами команды осуществлялось с помощью невыполненной работы. В Team Foundation Server 2013 можно управлять задачами с помощью невыполненной работы портфеля, благодаря которой менеджеры получают лучшее представление о работе нескольких команд Agile. Команда менеджеров определяет высокоуровневые цели и отслеживает работу нескольких команд Agile. Команды Agile выполняют всю работу: разбивают элементы на задачи, исправляют ошибки и вносят свой вклад в общую картину. Все команды имеют собственные списки невыполненной работы и собственные доски, а также интегрированное представление пользовательских функций, над которыми они работают. После завершения этого раздела вы сможете управлять портфелем проектов, группируя работу согласно уровням невыполненной работы, и следить за тем, как она выполняется в нескольких командах.

Каждая команда работает над своими элементами невыполненной работы, тогда как иерархия типов рабочих элементов невыполненной работы позволяет руководителям просматривать интегрированное представление хода выполнения на более высоком уровне. В этом документе приводятся пошаговые инструкции по созданию подобной структуры на примере гипотетической команды управления Phone Saver и команд Agile, работающих над конкретными областями проекта.

У каждой команды имеется свое представление работы

Команда менеджеров Phone Saver определяет работу в виде высокоуровневых инициатив и разбивает ее на функции, важные для пользователей. На этом этапе работа назначается командам Agile, которые дополнительно разбивают ее и определяют задачи, требующие выполнения. По мере продвижения проекта команда менеджеров погружается на более глубокий уровень, отслеживая ход выполнение с нужной степенью детализации. Например, можно просмотреть элементы невыполненной работы, связанные с каждым элементом функции в проекте Scrum.

На этом снимке экрана можно видеть невыполненную работу с точки зрения команды менеджеров: невыполненная работа по функциям с элементами невыполненной работы по продукту, поддерживающими эти функции. Команда менеджеров не владеет элементами невыполненной работы по продукту. Они назначены одной из команд Agile. Но поскольку они представляют собой дочерние элементы соответствующих элементов, фильтр позволяет видеть их. Таким образом, команда менеджеров может отслеживать ход работ.

Можно выбрать уровень детализации представления

Информационный рисунок показывает концептуальный уровень информации, отображаемой на снимке экрана выше.

Представление команды управления

Каждая команда Agile, например Customer Team, имеет собственную начальную страницу, невыполненную работу, доску канбан и доску задач. Эти страницы содержат только сведения, относящиеся к данной команде.

На этом снимке экрана можно видеть невыполненную работу спринта с точки зрения команды Agile: элементы невыполненной работы по продукту, над которыми ведется работа в этом спринте, и связанные задачи, созданные командой для разбиения и отслеживания работы. В этом представлении они не видят функции или инициативы, над которыми они работают. Как и раньше, информационный рисунок показывает концептуальный уровень информации, отображаемой на снимке экрана выше.

Работа команды на базе журнала невыполненной работы спринтаУровень детализации с точки зрения команды Agile

Настройка команд и уровней невыполненной работы

При создании командного проекта в TFS для этого проекта автоматически создается команда по умолчанию. Путем настройки дополнительных команд, которые команды Agile будут использовать для управления своей повседневной работой, и переопределения команды по умолчанию в команду, которую команда менеджеров будет использовать для управления работой на своем уровне, команды Agile могут управлять свой собственной нагрузкой и приоритетами. В представлении команды менеджеров отображается ход выполнения для всей работы команд Agile. Нужно совсем немного времени, чтобы настроить команды и приступить к работе.

Помимо использования команд Agile для просмотра общего хода выполнения, уровни невыполненной работы можно использовать для создания иерархического представления работы. В TFS 2013 у вас есть непосредственный доступ к двум уровням невыполненной работы. Но если необходимо добавить еще один уровень для поддержки управления портфелем, это тоже можно сделать. Это занимает несколько больше времени, чем создание команд Agile, но все равно достаточно просто. Мы пошагово рассмотрим как настройку команд Agile, так и создание дополнительного уровня невыполненной работы.

Сначала создадим структуру команд Agile и команды менеджеров для используемой в примере организации.

Создание команд Agile и настройка команды менеджеров

  1. На начальной странице команды по умолчанию щелкните значок шестеренки Значок параметров, чтобы открыть страницу администрирования и выбрать "Новая команда" для создания команды Agile.

    Создание подкоманд из меню администрирования

  2. Присвойте команде имя и обязательно проверьте, что установлен флажок Создайте путь области с именем команды.

    Создание подкоманды с собственным путем области

    Эта область будет подобластью пути к области для команды менеджеров, и, что гораздо важнее, она обеспечивает разделение работы между командами Agile и автоматическую свертка хода выполнения для команды менеджеров.

  3. Настройте спринты для гибкой команды.

    Выбор спринтов для команды Agile

  4. Добавьте членов в новую гибкую команду и удалите лишних членов из команды управления.

    Как правило, в команду менеджеров должны входить только менеджеры и члены команд, которые владеют инициативами и функциями. Члены команд Agile все равно будут видеть начальную страницу и невыполненную работу команды менеджеров, также как команда менеджеров будет видеть начальные страницы и невыполненную работы каждой из команд Agile.

  5. Измените области для команды управления, чтобы не включать туда подобласти.

    Подобласти будут использоваться для невыполненных работ команд Agile

Можно создавать любое количество гибких команд. Когда рабочие элементы назначаются команде Agile, каждая из команд видит эти элементы в своей невыполненной работе и может управлять ими на своей доске канбан или на доске задач, как и раньше.

Невыполненная работа команды Agile с элементами невыполненной работы и задачами

Работа команды на базе журнала невыполненной работы спринтаУровень детализации с точки зрения команды Agile

Команда менеджеров видит все рабочие элементы, назначенные всем командам Agile в представлении невыполненной работы, доске канбана и доски задачи, получая общее представление о выполняющейся работе и о работе, которая пока не начата.

Невыполненная работа команды менеджеров с функциями и элементами невыполненной работы команд Agile

Можно выбрать уровень детализации представленияПредставление команды управления

После настройки структуры команд можно двигаться дальше и добавить и еще один уровень невыполненной работы.

Добавление еще одного уровня невыполненной работы

Добавление еще одного уровня невыполненной работы занимает некоторое время, но это очень простая операция. Рассмотрим процесс подробнее. Для выполнения этих действий необходимо быть членом группы администраторов командного проекта. Сначала необходимо экспортировать существующий тип рабочего элемента и отредактировать его, чтобы создать новый тип рабочего элемента, который мы будем называть "инициативами". Затем мы добавим категорию для инициатив. Наконец, мы добавим инициативы в невыполненную работу портфеля.

Если вам интереснее узнать, что произойдет после добавления уровня невыполненной работы "Инициатива", щелкните здесь, чтобы перейти вперед.

Создание типа рабочего элемента "Инициатива"

Самый простой способ создать тип рабочего элемента — скопировать существующий, переименовать его и отредактировать. В следующей процедуре вам предстоит экспортировать тип рабочего элемента "Функция" и использовать его в качестве основы для типа рабочего элемента "Инициатива". Во всех примерах используется имя проекта Phone Saver и имя сервера Fabrikam. Именем коллекции командных проектов является имя по умолчанию DefaultCollection.

  1. Откройте окно командной строки в режиме администратора и измените каталоги на место установки Visual Studio (или Team Explorer).

    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="Функция"> на <WORKITEMTYPE name="Инициатива"> и обновите описание.

    <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. Отредактируйте элемент Вкладка с именем Реализация. Замените <Filter WorkItemType="Элемент невыполненной работы по продукту" /> на <Filter WorkItemType="Функция" />. При этом функции отображаются как дочерние рабочие элементы инициатив.

    <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
    

Добавление категории "Инициатива" в иерархию портфеля

Нам осталось только добавить инициативы в иерархию рабочих элементов, которые составляют невыполненную работу портфеля.

  1. Экспортируйте определение конфигурации процессов в XML-файл.

    witadmin exportprocessconfig /collection:"http://fabrikam:8080/tfs/DefaultCollection" /p:"Phone Saver" /f:%userprofile%\documents\MyProcessConfiguration.xml
    
  2. Откройте файл и добавьте раздел PortfolioBacklog для инициатив в разделе PortfolioBacklogs. Одновременно измените элемент PortfolioBacklog для FeatureCategory так, чтобы инициативы были родительскими рабочими элементами для функций.

      <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
    

Готово! Добавлен третий уровень невыполненной работы, называемый инициативами.

Определение инициатив

После определения инициатив нужно создать несколько элементов. Члены команды менеджеров могут быстро добавить элемент непосредственно из представления невыполненной работы инициатив. Эта процедура не отличается от добавления элементов в любой другой список элементов невыполненной работы.

Введите имя инициативы

Также можно создать новые функции непосредственно из рабочего элемента инициатив путем создания нового рабочего элемента на вкладке "Реализация" или "Ссылки". Дополнительное преимущество такого подхода — создание связи "родитель-потомок" одновременно с созданием функции.

Используйте ссылку создания для кнопки нового элемента

Можно также добавить инициативу в качестве родительского элемента для существующих функций, если таковые действительно имеются. В этом случае функция автоматически связывается с соответствующей инициативой. А из функции можно создать элементы невыполненной работы и назначить их отдельным командам Agile.

Для создания инициативы используйте команду "Создать связанный рабочий элемент"

Сопоставление нескольких элементов при наличии существующей невыполненной работы

Если уже имеется существующая невыполненная работа, может потребоваться создать отношения "родитель-потомок" между элементами для поддержки автоматического отчета о ходе выполнения. Предположим, требуется сопоставить элементы невыполненной работы функциям, а функции — инициативам. К счастью, это можно легко сделать с помощью области сопоставления. Сначала включите область сопоставления.

Включение и выключение с помощью переключателя схемы

Теперь перетащите элементы из списка невыполненной работы в функцию области сопоставления, которую нужно связать в качестве родительского элемента.

Перетаскивание или выбор, перемещение фокуса на родительский элементМожно добавить дополнительные уровни невыполненной работы

Повторяйте этот процесс на каждом уровне невыполненной работы до тех пор, пока не будет создана нужная иерархия.

Также возможно массовое изменение рабочих элементов и управление их иерархией в Microsoft Excel.

Просмотр хода выполнения

Теперь, когда рабочие элементы связаны с соответствующими связями "родитель-потомок", пришло время посмотреть, как представление хода выполнения применяется на разных уровнях.

Представление управления для хода выполнения

На уровне управления в невыполненное работе "Инициативы" команды Phone Saver отображаются рабочие элементы типа "Инициатива" всех команд, участвующих в проекте Phone Saver.

Члены команды могут видеть связанные рабочие элементы на других уровнях

Можно переключить представление для отображения связанных функций…

Можно добавить дополнительные уровни невыполненной работыУровень детализации с точки зрения команды управления

…или выполнить более глубокий анализ до уровня элемента невыполненной работы или задачи.

Можно изменять отображаемый уровень детализацииУровень детализации с точки зрения команды управления

Совет. Добавьте столбец "Путь к области", чтобы увидеть, какая команда работает над каждым из элементов.

Кроме того, ход работ можно просматривать на доске канбан. Команда менеджеров может видеть, над какими инициативами и функциями идет работа.

Элементы всех команд отображаются на главной доске канбанУровень детализации с точки зрения команды управления

Командное представление хода работ

Для отдельных команд Agile представление выглядит совершенно иначе. Если член такой команды перейдет к невыполненной работе по инициативам или функциям, он ничего не увидит. Это связано с тем, что команды Agile не создают элементы и не работают с ними на этом уровне напрямую. Команды Agile никогда не видят полный список инициатив или функций. Однако если членам команды нужно знать, какие инициативы и функции связаны с их работой, они могут включать эти представления в элементах невыполненной работы.

Члены команды видят только те инициативы, над которыми они работаютУровень детализации с точки зрения команды управления

В отношении всего остального для отдельных команд работа в основном идет обычным образом. Они могут использовать доску канбана, доску задачи и другие функции, как они это всегда делали, но теперь их продвижение доступно менеджерам без необходимости вручную создавать какие-либо отчеты. Их действия отображаются в представлении менеджеров.

Об авторах

Грегг Бур — главный руководитель программ в корпорации Майкрософт. Грегг является владельцем продукта для компонента Agile Management в TFS.

Сьюзан Феррелл — старший разработчик технической документации в корпорации Майкрософт.

Катрин Эллиотт — старший разработчик технической документации в корпорации Майкрософт.