Tfs reports customization

Preview:

DESCRIPTION

 

Citation preview

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

Microsoft Team Foundation Server 2013

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Редакции SQL Server 2012

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

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

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

ОсталисьPDWExpressDeveloperEvaluationCompact

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

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

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

Express можно здесь

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

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

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

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

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

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

Для задач 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

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

• Выполняется в административной консоли 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

• Все это было слишком просто, поэтому в 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 такие изменения будут

потеряны

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

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

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

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

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

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

Дата

Команда

Сборка

Многомерный 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 ...

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

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

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

I кв.

Год 1150

950

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

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

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

1-я нед. 400

100

å

å

å

å

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

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

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

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

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

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

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, …

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

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

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

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

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

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

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

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

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

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

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

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

program without getting help

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SSRS (Reporting Services)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Кастомизация отчетов 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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

новый формат

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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