Transcript
Page 1: Tfs reports customization

Мониторинг и контроль за портфелем проектов на базе

Microsoft Team Foundation Server 2013

Алексей Шуленин,Microsoft

Page 2: Tfs reports customization

Мы живем в мире данных

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

• Интересующие данные нужно как-то фиксировать

Page 3: Tfs reports customization

Задача хранения данных

Page 4: Tfs reports customization

Данные и информация

• Однако лежащие мертвым грузом данные приносят мало пользы

• Их необходимо осмыслить, чтобы получить отдачу– Продавать доллар или покупать – Какой дорогой поехать, чтобы сэкономить время в пути– Брать ли зонт...

• В результате анализа сырые данные превращаются в информацию для принятия управленческих решений

Page 5: Tfs reports customization

• Аналогично, любое мало-мальски корпоративное приложение можно условно представить в виде двух компонентов– Учет и регистрация данных– Анализ и отчетность

• И TFS не составляет в этом плане исключения

Page 6: Tfs reports customization

Учет в TFS• Для каждой коллекции командного проекта создается база

данных Tfs_<имя коллекции>Collection

• Там же (TFS Administration Console) можно видеть, на каком сервере БД они лежат

Page 7: Tfs reports customization

Учет в TFS• Данные TFS хранятся на сервере БД, коим у

Microsoft вот уже четверть века выступает SQL Server

Page 8: Tfs reports customization

Краткий курс истории SQL Server

1989 1990 1992 1995 1996 1998 2000 2005 2008 2010 2012 2014

• Производительность• Функциональность• Надежность

Page 9: Tfs reports customization

Компоненты SQL Server

Page 10: Tfs reports customization

Учет в TFS• По умолчанию, вместе с TFS ставится SQL

Server Express• Express – это бесплатная редакция c

ограничениями на размер БД (10G) и используемые процессоры (1)– Подходит для небольших команд

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

стандартной редакции

Page 11: Tfs reports customization

Редакции SQL Server 2012

• Три основных редакции (верхняя включает функциональность нижней)– Enterprise– BI (новая)– Standard

По сравнению с 2008 (R2) ушли

DataCenterWeb – будет предлагаться только хостерам по SPLAWorkgroup

ОсталисьPDWExpressDeveloperEvaluationCompact

• Добавилась LocalDB– SQL Express для разработчиков– Работает как отдельный процесс (не как сервис)– Такой же sqlservr.exe, что и Express; те же ограничения по памяти– В том же контексте безопасности, что и вызывающее приложение– На одной машине может запускаться несколько LocalDB-процессов– К базе можно соединяться a la SQL Compact (AttachDbFileName)

Page 12: Tfs reports customization

• SQL Express бывает 3-х ипостасейГолый движок+ Движок с графическим инструментом администрирования+ Службы отчетности

• TFS по умолчанию использует первый вариант• Скачать (бесплатно) SQL Server Management Studio

Express можно здесь

Page 13: Tfs reports customization

• В общем случае при соединении с SQL Server он указывается следующим образом– <протокол>:<имя машины>\<имя экземпляра>,<порт>– Например, tcp:vsalm\SQLExpress,1433– Имя машины и название экземпляра, сконфигурированного для

TFS мы видели в TFS Adm Console– Tcp и 1433 приняты по умолчанию– Локальная машина может обозначаться как (local) или .

Page 14: Tfs reports customization

• Соединяемся и видим базы TFS, соответствующие командным проектам в административной консоли

Page 15: Tfs reports customization

• Структура базы Tfs_коллекция в TFS 2013

Page 16: Tfs reports customization

• На том же экземпляре SQL Server можно держать базы данных SharePoint, который также используется TFS (для коллективной работы)

• По соображениям производительности его лучше ставить на отдельную машину, однако в этом случае локальный пользователь для сервисной учетной записи TFS не годится– Требуется AD

Page 17: Tfs reports customization

Для задач BI необходимо отдельное хранилище (Tfs_Warehouse)

Таблица фактов

Таблицы измерений

Assembly_DimAssembly_DimAssemblyKeyAssemblyKey

AssemblyID...AssemblyID...

Time_DimTime_DimTimeKeyTimeKey

TheDate...TheDate...

Build_DimBuild_DimBuildKeyBuildKey

BuildID...BuildID...

Test_DimTest_DimTestKeyTestKey

TestID...TestID...

Team_DimTeam_DimTeamKeyTeamKey

TeamID...TeamID...

CodeCoverage_FactCodeCoverage_FactTimeKeyAssemblyKeyBuildKeyTestKeyTeamKey

TimeKeyAssemblyKeyBuildKeyTestKeyTeamKey

Кол-во строкКол-во блоков...Кол-во строкКол-во блоков...

Полная схема здесь - C:\Program Files\Microsoft Team Foundation Server 12.0\Tools\warehouseschema.xml

Page 18: Tfs reports customization
Page 19: Tfs reports customization

Создание хранилища под задачи аналитики и отчетности

• Выполняется в административной консоли TFS, как описывается здесь

• Несмотря на то, что пункт называется Reporting, он подразумевает все: и реляционное хранилище, и многомерные кубы (о них позже), и, собственно, отчеты (о них еще позже)

• Необходимо помнить, что if you installed TFS on a client operating system, such as Windows 7, you can't add reporting as described here, because it isn't supported on client operating systems

Page 20: Tfs reports customization

• За операционные базы Tfs_коллекция и хранилище Tfs_Warehouse отвечает вот этот компонент

Компоненты SQL Server

Page 21: Tfs reports customization

Общая архитектура BI-приложения

• Для переноса данных из операционных источников в хранилище традиционно применяются инструменты ETL

Page 22: Tfs reports customization

В качестве инструмента ETL в SQL Server традиционно используется SSIS (Integration

Services)• Под названием Data Transformation Services

известен с SQL Server 7.0 (конец 1998 г.)

Page 23: Tfs reports customization

• За перенос данных из Tfs_коллекций в хранилище Tfs_Warehouse, по идее, должен был отвечать вот этот компонент

Компоненты SQL Server

Page 24: Tfs reports customization

• Но разработчики TFS пошли своим путем– Они, по сути, продублировали функциональность пакета SSIS в т.н.

адаптерах• Адаптер – это код на .Net, который через System.Data лезет в БД Tfs_коллекция

и перекладывает оттуда данные в Tfs_Warehouse • Для каждой коллекции, т.е. • Адаптеры через заданный интервал вызывает веб-служба Warehouse Control

Web Service (http://localhost:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx)

Page 25: Tfs reports customization

• В результате вместо наглядного workflow, откуда в хранилище что берется и каким преобразованиям по дороге подвергается, имеем черный ящик, вещь в себе, что не упрощает поддержку и сопровождение

• Если в отчетах хочется видеть дополнительные данные, которых нет в хранилище, подразумевается, что для того, чтобы их туда добавить, следует написать свой адаптер– В VS2008 для этого нужно было сделать класс, реализующий 2 осн.

метода из IWareHouseAdapter• Первый вносит изменения в схему хранилища (создает структуры под новые

данные), второй наполняет новые объекты хранилища данными• Initialize() и RequestStop() – понятно• Скопировать получившуюся dll в ...\Web Services\warehouse\bin\Plugins

Page 26: Tfs reports customization

• Все это было слишком просто, поэтому в 2010 и старше не работает

• Как писать адаптеры для 2010-13? Хороший вопрос!– В книге Professional Team Foundation Server 2012 теме Customizing

Warehouse Adapters отведено целых 10 строчек– Есть пример на MSDN, голый код без объяснений – И даже Troubleshooting the Data Warehouse в документации относится

только к версии 2008• Есть статья в блоге «TFS 2010 Warehouse & Reporting trouble shooting basics»• И есть еще Administrative Report Pack for Team Foundation Server 2010 and 2012 (с)

Grant Holliday (Senior Service Engineer, Microsoft Visual Studio Team Foundation Service)

• Я сильно подозреваю, что можно обойтись SSIS, только надо проверить, не будет ли это конфликтовать с существующей инфраструктурой переноса– К тому же освоить SSIS ненамного сложнее, чем объектную модель TFS

SDK API– Единственно, при полном ребилде DW такие изменения будут

потеряны

Page 27: Tfs reports customization

Над хранилищем построен куб SSAS• Аналитик не оперирует совокупностью связанных таблиц• Он исследует отображение n-мерного дискретного множества в область

вещественных чисел F(Dn) -> Rm

– n-мерного в том плане, что оно распадается на произведение n независимых дискретных множеств: Dn = D1 x … x Dn

– Например, Кол-во покрытого тестами кода = F(сборка, билд, дата, команда, ...)

– Под покрытием могут пониматься не только строки, но и блоки кода. Тогда будет две поверхности и отображение в R2.

• То, что мы анализируем (Rm), называется мерами, или фактами, а то, относительно чего (D1, …, Dn) - измерениями

Дата

Команда

Сборка

Page 28: Tfs reports customization

Многомерный OLAP

• А так в случае многомерной

100 100 100 10010051

100 100 100 100 10033100 100 100 100 104

75 155 240 155 7580 190 245 190 80

100 100 100 100 106100 100 100 100 100

100 100 100 100 10014 64 101 59 201

32 70 111 15 226

100 100 100 10010099

100 100 100 100 100100 100 100 100 100

750 52 68 24 9243 44 76 15 84

100 100 100 100100134

100 100 100 100 100100 100 100 100 100

126 88 66 42 98133 80 65 31 94

100 100 100 100 22275 34 48 151 123

100 100 100 100 10087 95 83 16 60

96 89 77 12 55

Время

Команда

Сборка

Многомерный механизм хранения был изобретен специально для задач OLAP, поэтому он работает быстрее

На диске кубик представлен как бесконечная плоская таблица с тучей битовых индексов

Команда Сборка Время Покрытие Блоков... ... ... ... ...

Редмонд VS2013 Январь 24 ...Редмонд VS2013 Февраль 27 ...Редмонд VS2013 Март 21 ...Редмонд TFS2013 Январь 33 ...Редмонд TFS2013 Февраль 39 ...Редмонд TFS2013 Март 42 ...Редмонд SQL 2014 Январь 100 ...Редмонд SQL 2014 Февраль 100 ...Редмонд SQL 2014 Март 100 ...Редмонд Win8.1 Январь 100 ...Редмонд Win8.1 Февраль 100 ...

... ... ... ... ...

Page 29: Tfs reports customization

Вторник 150 Пятница 200

Иерархии и агрегаты

I кв.

Год 1150

950

Апрель 200Январь 650 Февраль 300

4-я нед. 2001-я нед. 250 2-я нед. 400

Понедельник 200Понедельник 100

1-я нед. 400

100

å

å

å

å

Среда 100Четверг

• Иерархия – это древовидная организация данных измерения– Год -> квартал -> месяц -> неделя -> день– Весь мир -> континент -> страна -> регион -> город -> магазин

• Т.е. ребра куба – это только листочки дерева– Над каждой осью вырастает пирамидка иерархии

• Узлы дерева определяются естественными уровнями агрегирования

Агрегатная ф-ция – как считать значения в вышестоящих узлах

SUM(), COUNT(), MIN(), MAX() или что-л. более экзотическое

Page 30: Tfs reports customization

SSAS (Analysis Services)• OLAP-сервером в составе BI-решения Microsoft выступают SQL

Server Analysis Services • Ведут свое начало от разработок в области аналит.обработки и

ППР Panorama Software Systems– Приобретена MS в октябре 1996 г.

– http://www.microsoft.com/PressPass/press/1996/Oct96/pan2pr.asp

• Впервые воплотились в OLAP Services for SQL Server 7.0– Декабрь 1998 г.

• В настоящее время являются составной частью Analysis Services в SQL Server 2012– Многомерный механизм хранения– Работа с ним при помощи MDX = MultiDimensional eXtensions (к SQL)

• Требует перенастройки мышления от реляционного SQL к многомерным кубам, измерениям, иерархиям, агрегатам, ...

• Кроме Microsoft в том или ином виде поддерживается в Hyperion, Cognos, Business Objects, Microstrategy, Panorama, …

Page 31: Tfs reports customization

Analysis Services Tabular Mode

• В SQL Server 2012 добавилась возможность реализации табличных моделей на сервере SSAS– Ранее существовала в виде к PowerPivot в Excel и SharePoint

• Для этого экземпляр AS должен быть заранее установлен не в многомерном, а в табличном режиме

• БД в памяти, движок VertiPaq• In-memory columnstore, сжатие• Нет агрегатов и предварительной настройки• Работает в 2-х режимах: Cached (собираются данные из различных

источников) и DirectQuery (запрос, минуя модель в памяти, идет на SQL Server)

• Язык запросов DAX (Data Analysis eXpressions)– Достаточно прост и интуитивен, сродни формулам Excel

Page 32: Tfs reports customization

• За многомерную базу Tfs_Analysis поверх хранилища Tfs_Warehouse отвечает вот этот компонент

Компоненты SQL Server

Page 33: Tfs reports customization

• Имя машины и название экземпляра сервера SSAS можно видеть все там же, в TFS Admin Console на закладке Reporting

• Соединяемся с ним из SSMS

Page 34: Tfs reports customization

Работа с многомерной базой• То, что называется SQL Server Data Tools в

шаблонах проектов VS, предназначено для работы сугубо с SQL Server Database Engine

Page 35: Tfs reports customization

Работа с многомерной базой• Нам потребуется SSDT-BI, в состав которого входят

шаблоны проектов для создания пакетов SSIS, кубов SSAS и отчетов SSRS

• Его можно взять здесь (бесплатно) ~800 МБ

Page 36: Tfs reports customization

Работа с многомерной базой• Нужно отмечать New Installation• Понятно, что нового экземпляра она не ставит, но может возникнуть

конфликт по архитектуре (установленный SQL 64-битный, пакет – x86)• Если будет спрошено про Compatibility Issues, отвечать Run the

program without getting help

Page 37: Tfs reports customization

Работа с многомерной базой• На данный момент BI-шаблоны проектов доступны в оболочке VS

2012, т.е. в 2013 они не появятся

Page 38: Tfs reports customization

• Соединяемся с многомерной базой

• И наглядно видим ее структуру

Page 39: Tfs reports customization

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

Page 40: Tfs reports customization

Кубы в составе многомерной БД TFS_Analysis

Page 41: Tfs reports customization

Каждый куб фактически является готовым отчетом

• Билды– Отчеты о состоянии:

• Какие билды закончились неудачей, какие успешно?• Какие билды имеют значительное количество изменений кода?• Какие билды готовы к установке?

– Отчеты о тенденциях:• Как со временем изменяется состояние всех билдов?• Какой объем кода был выполнен тестами в течение времени?

• Code Churn– Сколько файлов с заданным расширением изменилось в

конкретном билде?– Сколько строк кода находится в исходной базе для конкретного

билда?– Какие наборы изменений были отправлены, и каковы сведения о

каждом изменении? (Например, кто сделал данное изменение, какие файлы были изменены, и когда было это изменение было произведено)?

Page 42: Tfs reports customization

Каждый куб фактически является готовым отчетом

• Тестирование– Отчеты о состоянии:

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

• Каково качество билдов на основе кол-ва пройденных и проваленных тестов• Сколько тестовых случаев никогда не запускалось и какие

– Отчеты о тенденциях:• Сколько тестов заблокировано, успешно завершено или завершено с ошибками с

течением времени?• Сколько тестов находится в состоянии регрессии?• Насколько целостна и последовательна активность тестирования вручную

• Work Items– Общее кол-во открытых багов каждый день в последней итерации– Сколько активных сценариев каждый месяц в течение года– Сколько багов каждого приоритета активно каждый день в течение

месяца– Какой объем работы выполнила определенная команда разработчиков?– Дополнительный объем работы, созданной после указанной даты?

Page 43: Tfs reports customization

• Массовым рабочим инструментом аналитика является, как известно, Excel

Page 44: Tfs reports customization

• Сводные таблицы и графики которого можно с незапамятных времен соединять с OLAP-кубами, выполняя slice&dice, rollup&drilldown и т.д.

Page 45: Tfs reports customization

• Свободные отчеты есть палка о двух концах• С одной стороны, гибкость, с другой, пользователь

может на радостях неявно сделать такой запрос, который капитально нагрузит сервер

• Поэтому в состав SQL Server входит инструмент создания преднастроенных отчетов с минимальным интерактивом– Сортировка, раскрытие/свертка иерархии, параметры

запроса, ...• Которым также пользуется TFS• Как и в случае Excel, источниками могут выступать

как многомерные базы, так и обычные реляционные

Преднастроенные отчеты в составе TFS

Page 46: Tfs reports customization

• За отчеты TFS отвечает вот этот компонент

Компоненты SQL Server

Page 47: Tfs reports customization

SSRS (Reporting Services)

• Используются для вывода и наглядной визуализации аналитической информации с представлением ее с помощью графиков, диаграмм и привязкой к картографии

• Появились где-то после SQL Server 2000 в виде отдельного продукта, начиная с 2005 являются штатной функциональностью SQL Server

Page 48: Tfs reports customization

• Папки для отчетов TFS настраиваются в Admin Console

Page 49: Tfs reports customization
Page 50: Tfs reports customization

Преднастроенные отчеты в составе TFS

• Bug Status– Достаточно ли быстро

команда исправляет баги, чтобы успеть закончить в срок?

– Действительно ли высокоприоритетные баги исправляются в первую очередь?

– Каково распределение багов по приоритетам и строгости?

– Сколько багов назначено каждому члену команды?

Page 51: Tfs reports customization

Преднастроенные отчеты в составе TFS

• Bug Trends– Сколько багов заявила,

разрешила, закрыла команда за день?

– Каков общий тренд обработки багов командой?

– Темпы активации и разрешения багов уменьшаются к конечным итерациям?

• Успешность билдов– Насколько хорошо команда

тестирует код– Какие части проекта

испытывают проблемы с регрессиями / плохими чекинами

• И т.д.– См. документацию на TFS

Page 52: Tfs reports customization

Кастомизация отчетов TFS• Reporting Services – два основных инструмента:

– Report Designer• Шаблон проекта в составе SSDT-BI• Работа в оболочке VS

– Report Builder• Отдельное легковесное приложение ~25 МБ• Работает с теми же форматами, что и Visual Studio• Поддерживает ~эквивалентную функциональность, но позволяет быстрее создавать

несложные отчеты

• Используя их, Вы можете не только подкорректировать цвет или расположение элементов в стандартных отчетах, но и (при известных навыках) добавить новые данные из источников, изменить разрез, группирование, глубину детализации и т.д.

• Словом, приняв их за основу, построить собственные• Два источника данных в отчетах TFS

– TfsReportDS -> TFSWarehouse (тип соединения Microsoft SQL Server)– TfsOlapReportDS -> Team System data cube (тип соединения Analysis Services)

Page 53: Tfs reports customization

• Для разнообразия рассмотрим Report Builder

• Для SQL Server 2012 берется здесь

Page 54: Tfs reports customization

• Можно открыть отчет непосредственно на сервере Report Server (Edit in Report Builder), но правильней выкачать его определение и работать с ним локально

• После того, как все заработает, закачать модифицированный отчет обратно на сервер

Page 55: Tfs reports customization

• Открываем rdl в Report Builder, смотрим, корректируем

Page 56: Tfs reports customization

• И публикуем на Report Server автоматически через инструмент или вручную

Page 57: Tfs reports customization

Дэшборды Sharepoint• Благодаря интеграции Reporting Services с Sharepoint эти

отчеты могут быть легко опубликованы в виде Web Parts на коллективном портале TFS

Page 58: Tfs reports customization

Некоторые дополнительные возможности

• Концепция персонального BI– Отчеты RS требуют привлечения программиста и в большинстве

своем статичны• Интерактивность: параметры, гиперссылки, подотчеты, сортировка и

раскрытие/свертка– Прямая работа с кубами из Excel интерактивна, не предполагает

написания кода, но предполагает квалификацию сотрудника• Легким движением руки можно собрать произведение всех (ну или хотя

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

– Альтернативой многомерным кубам стала табулярная модель в SQL Server 2012• Колоночные индексы, сжатие, In-Memory OLAP, нет предварительного

расчета агрегатов– TFS исторически использует классический многомерный

подход• В связи с чем уже предпринимались попытки перевести базу TFS в

новый формат

Page 59: Tfs reports customization

Power View• Во многом они были обусловлены появлением в Excel 2013 Power View

– богатого возможностями интерактивного средства построения отчетности в Excel, ориентированного на конечного пользователя без необходимости писать код

• До недавнего времени он умел работать только с табулярными моделями– Однако в 2012 SP1 CU4 эту несправедливость поправили– Ничто не мешает теперь использовать с кубами TFS

Page 60: Tfs reports customization

• Алгоритмы поиска закономерностей в составе SQL Server – Наивный Байес

• В основе – известная формула условной вероятности: если есть гипотеза H и свидетельство справедливости этой гипотезы E, то P(Н|Е) = P(Н)P(Е|Н) / P(Е)

– Ассоциация• Подобно кластеризации, определяет наиболее популярные наборы значений плюс устанавливает

ассоциативные правила: например, если клиент взял пепси и чипсы, то с вероятностью 80% он выберет еще сок

• Бизнес-задачи: анализ рыночной корзины, кросс-селлинг– Деревья решений

• Используется гибридный алгоритм деревьев, позволяющий решать задачи классификации, регрессии и ассоциации разработки Microsoft Research

– Линейная регрессия• Разновидность дерева принятия решений• Используется для определения тренда или связи между двумя непрерывными столбцами

– Анализ временного ряда• Есть функция от времени, требуется экстраполировать ее значение на следующем интервале

– Кластеризация• Нахождение «центров конденсации» внутри данных

– Последовательная кластеризация• Когда интересует не только состав купленных товаров, но и в каком порядке они приобретались• Базируется на марковских цепях и теории конечных автоматов

– Нейронные сети– Логистическая регрессия

• Реализован на основе вариации алгоритма нейронной сети, но более прост в обучении• Моделирование двоичных рез-тов, напр., исп-е демографических данных для оценки риска некоторого

заболевания.

Некоторые дополнительные возможности

Page 61: Tfs reports customization

Спасибо за внимание!


Top Related