Сбор и публикация проектных метрик в процессе разработки программного обеспечения на базе штатных средств IBM Rational ClearCase.Источник: software-testing Дмитрий Лапыгин, Александр Новичков
Данная статья описывает методы формирования отчетной информации в процессе разработки программного обеспечения. Статья дает практические навыки и рассказывает о том, как сформировать отчетную систему на базе штатных средств IBM Rational ClearCase. Статья будет интересна всем, кто пользуется инструментальными средствами IBM Rational, а также тем, кто хочет начать их активно применение. ВведениеПредставить современный мир информационных технологий (с его потоками информации) без отчетностей и сопроводительных документов практически невозможно. Многие программные системы имеют встроенные средства отчетности, есть системы профессиональной отчетности (Crystal Reports). ClearCase (СС), являясь сложной системой конфигурационного управления, содержит встроенные средства по созданию, модификации и сопровождению отчетов произвольного образца. К сожалению, с профессиональными программами-генераторами отчетов Clear Case связи не имеет, но его встроенных возможностей более чем достаточно для формирования отчетов практически любого вида. На самом деле отчет как сущность это подвид проектных метрик, которые обязательно необходимо собирать в процессе выполнения проекта. Метрики - это ключевые показатели для различных уровней руководства. Метрики позволяют держать руку на пульсе и принимать нужные и правильные управленческие решения. Согласитесь, что менеджеру проекта необходимо знать все в деталях (кто и чем занят), а более высокому начальству более необходимы простые ключевые показатели, по которым можно принять стратегические решения. Во всех процессах - начиная от бизнес анализа и заканчивая сопровождением, имеются информация которую можно обработать и выдать часть ее в качестве отчетов и показателей. В нашем случае, в процессе разработки с применением средств конфигурационного управления ClearCase + ClearQuest, информация может быть отобрана полуавтоматически или автоматически и представлена в удобном виде. В данной статье речь пойдет только о метриках одного инструментального средства - ClearCase, что несколько снижает целостную картину, но очень необходимо (отчетность и метрики для средства управления изменениями ClearQuest будут рассмотрены в ближайшее время). Итак, что с точки зрения менеджмента можно получить от системы отчетности в процессе разработки ПО:
На практике число показателей и отчетов гораздо больше, но уже можно понять какие выгоду сулит правильная организация процесса разработки (тестирования и сопровождения) ПО. Давайте далее более детально разберемся с подходами к формированию отчетности. Существует два подхода в получении отчетов:
Выбор формы отчетов остается на плечах руководства компании. Структура и содержание декомпозируется уже на более низких уровнях (на уровне менеджеров проектов), где во внимание принимаются такие факторы как способ формирования отчетов (автоматический, ручной или комбинированный), способ представления (текстовый файл, документ Word или WEB). У каждого способа есть достоинства и недостатки. Еще раз напомним, что речь в данном разделе идет не о формировании проектной документации, а именно о отчетах по состоянию элементов репозитория. Рассмотрим доступные способы формирования отчетности: Внешние:
Внутренние:
Для получения автоматизированной отчетности, администратор проекта, формирует необходимый набор скриптов отчетности и формирует средствами ClearCase расписание по их получению. Использование SoDASoDA является макросом для Word и отвечает за формирование отчетов в формате DOC и HTML на основе встроенных шаблонов. Инструмент позволяет пользователю формировать собственные шаблоны, основываясь на предустановленных, либо создавать произвольные с нуля (при помощи модуля Template View). Базируясь на шаблонах, SoDA поддерживает возможность стандартизации типов документов в рамках проекта или компании. IBM/Rational SoDA может обеспечить соответствие проектной документации таким международным стандартам, как ISO, SEI CMM, IEEE, а также популярным отечественным ГОСТ 19 и ГОСТ 34. Отчетность, создаваемую SoDA невозможно автоматизировать, поэтому для нее требуется отдельное ручное управление для формирования события построения отчета или отчетов. Преимущество подхода заключается в том, что данным инструментом в той или иной мере владеют многие участники проекта, как следствие процесс создания оригинальных шаблонов несколько упрощается. Рассмотрим стандартные формы отчетов:
Стандартные отчеты, формируемые посредством SoDA, представляются крайне простыми, требующими существенных корректировок для использования в реальных проектах. Например, в стандартных отчетах отсутствует отчет по всем элементам репозитория, отчет по состоянию элементам в соответствии с именем пользователя (отчет по сотруднику)… и т.д. Относиться к стандартным шаблонам отчетов следует как к учебнику, на базе которого строятся более сложные и более информативные отчеты. Отчеты SoDA выгодно применять для проектной документации, для получения особо важных документов, как Концепция системы, но для структурного анализа состояния элементов репозитория ClearCase, имеются более эффективные способы. Использование встроенной системы отчетности с сохранением в виде HtmlClearCase имеет встроенную систему отчетности, основанную на конструкторе отчетов. В свою очередь, конструктор является открытым и позволяет добавлять новые формы отчетов к существующим. Модуль, отвечающий за отчетность, называется ClearCase Report Builder. Вызвать его можно из командной строки по имени ccreportbuilder (из директории \Rational\ClearCase\reports), либо из меню ОС. CCRB также можно вызывать из браузера ClearCase Explorer. На рисунке 1 показан фрагмент экрана с работающим Report Builder рис.1. Вид окна встроенной системы отчетности Для генерации отчетов необходимо указать в браузере на необходимый элемент, для которого будет создаваться отчет (файл, вид, репозиторий) и нажать на кнопку Run Report. По введенным параметрам будет осуществлен поиск элементов и сгенерирован отчет в основном окне. Отчетные данные подлежат сохранению в виде Html файла, для последующего встраивания во внутрикорпоративный сайт. Опишем основные типы отчетов, имеющих практическую ценность для проекта: Elements
Vobs
Views
Здесь приведен только основной набор базовых отчетов. Более подробно все описано в документации по ClearCase. Одно из преимуществ использования CCRB по сравнению со стандартной SoDA заключается в большем числе предустановленных отчетов и в том, что они являются рекурсивными (то есть, можно получить отчет по всем элементах, находящимся в поддиректориях). Второе преимущество связано с тем, что SoDA является внешним, по отношению к ClearCase, продукту, требующим дополнительного лицензирования. CCRB формирует отчетные материалы посредством скриптов на встроенном языке программирования Perl (специальный диалект стандартного Perl версии 5.0). Это означает, что администратор проекта может добавлять новые скрипы в состав CCRB. Для введения нового отчета в систему отчетности достаточно создать файл скрипта по определенным правилам и скопировать в директорию с остальными отчетами. Использование CCRB позволит получать нужные отчеты по требованию пользователя. К отчетам должны иметь отношения все участники проекта, а не только руководители, поскольку отчет - есть одна из форм не только проектного контроля, но и локального контроля для каждого участника данных собственного рабочего пространства. Использование командной строки для формирования элементарных отчетовКомандная строка насквозь пронизывает ClearCase, позволяя получать доступ к любым видам данным. И, как одно из следствий, позволяет получать различные отчеты. В интерпретаторе cleartool есть целый набор команд выводящих информацию об элементах, метаданных, версиях, истории изменения и т.д. (команды с префиксом ls). Пользователь, работающий с СС, всегда может получить простейший отчет, пользуясь хорошо известным приемом по перенаправлению вывода: это знаки > и >>, добавляемые к концу командной строки, например: cleartool lshistory main.cpp >> c:\report.txt или cleartool lshistory -user admin -a -minor -since 20-mar-99.15:00 >> c:\report.txt Подобный способ спонтанной отчетности пригоден только для индивидуального применения, в силу того, что отчет формируется спонтанно, без использования шаблонов. Некоторые команды cleartool предоставляют сервис форматного вывода по переключателю -fmt, что позволяет получать быстрые отчеты надлежащего качества (команды annotate, describe). Но и этого недостаточно, в силу того, что многие команды просто не умеют выводить информацию о группе файлов или директорий, то есть их функциональность ограничена одним элементом. Для обхода данной особенности, необходимо применять специальную команду поиска find, которая восполняет недостаток отсутствия рекурсии и имеет в своем арсенале мощный язык запросов. Как вариант отчетности, допустимо использовать поиск элементов с формированием текстовых отчетов. Возможности команды find позволяют не только проводить поиск данных, удовлетворяющих заданным критериям, но и применять к каждому найденному элементу в результате поиска определенные действия - проводить обработку (для этого, как и в случае с триггерами, ClearCase формирует переменные среды, в которых находятся такие основополагающие переменные как, например, путь к найденному файлу - %CLEARCASE_PN%). Например, для формирования отчета Elements Created By User (имеющегося в стандартном аборе) собственными силами можно воспользоваться следующей командой: сleartool find . -element "{created_by(Ivanov)}" -exec "cleartool describe %CLEARCASE_PN%" В примере ведется поиск элементов, созданных пользователем Ivanov. Для каждого найденного элемента Find вызовет команду describe, подставив в качестве аргумента переменную, содержащую путь до найденного элемента. Теперь остается только предусмотреть перенаправление вывода в текстовый файл и отчет готов. Примитивность способа компенсируется его гибкостью. Но, как всегда есть одно «но», демонстрируемый способ не позволяет, формировать качественные отчеты (то есть отчеты установленного образца с применением различных стилей и форматов по образцу). Простое копирование результатов в файл не приемлемо с точки зрения эстетики. Соответственно, в силу данных причин способ имеет весьма узкую область применения. Использование языка скриптов для создания сложных форм отчетовНизкое качество и плохая читабельность отчетов, сформированных только по командной строке можно исправить, используя метод расширения функциональности при помощи языков скриптов. Поскольку, в поставку СС входит один из таких языков - Perl, то мы тоже рекомендуем его к использованию в построении отчетов. Средствами Perl можно создавать скрипты, формирующие Html-документы (метод основан на том, что все команды взаимодействуют с пользователем через стандартный вывод, а Perl является лучшим языком для работы с потоками данных). В скрипте применен самый простой метод получения информации об элементах, основанный на командных запросах к интерпретатору cleartool. Однако, есть более эффективный путь - использовать библиотеку автоматизации (Common Automation Library - CAL). Данный способ позволяет напрямую обращаться к функциям ядра ClearCase и требует дополнительной подготовки, поэтому на страницах книги не рассматривается. Применение данного способа позволит получить отчет любой сложности, оформленного по всем правилам. К преимуществам способа следует отнести:
Специально для администраторов, ниже приводится пример скрипта, который формирует отчет в виде набора html-файлов. Каждый из файлов содержит в себе детальное описание найденного элемента репозитория. Отчет представляется в виде полноценного набора связных файлов, которые возможно включить в состав внутрикорпоративного сайта. Скрипт сопровождается комментариями, что позволит быстро разобраться в его функциональности. Опишем действия, выполняемые скриптом:
################################################# #Скрипт по формированию отчетов по элементам репозитория #Определяем переменную для подсчета числа версий файлов, находящихся в #состоянии check-out. $nuco=0; #Формируем команду СС для поиска всех элементов с выводом данных $arg2="clt find $name -nxn -all -print"; #Счетчик числа элементов в репозитории. Счет ведем с 1. $objects=1; #Формируем массив с заголовком для основного файла index.htm. $head="<HTML> #Формируем массив с заголовком для файлов, описывающих свойства $head2="<HTML> #Формируем массив с окончанием файла. $end="</BODY></HTML>"; #Создаем Index.htm для записи. open(INDEX, ">Index.htm"); #Вписываем шапку html-файла. print INDEX $head; #Формируем горизонтальную разделительную линию. print INDEX "<HR>\n"; #Формируем таблицу. Задаем тип линий и даем наименования print INDEX "<TABLE width=\"100%\" class=borderall cellspacing=3>\n"; #Исполняем команду, находящуюся в массиве. Команда open open (FILE, "$arg2 /"); #Обрабатываем ответ, выводимый командой. while( <FILE> ) #Получаем построчно данные из потока и помещаем их в chomp; #Формируем во временном стринге гиперссылку на файл $temper="<a href=\".\\rep\\$objects.htm\"> $objects). $buffer </a>\n"; #Открываем для создания и записи файл для детального open (OUT,">.\\rep\\$objects.htm"); #Вписываем в него заголовок. print OUT $head2; #Формируем линию. print OUT "<HR>\n"; #Увеличиваем индекс объектов. $objects++; #Записываем описание блока. print OUT "<b>DESCRIBE ELEMENT</b>\n"; #Исполняем команду получения описания элемента, адрес open (DESC, "cleartool desc -l $buffer /"); #Получаем данные построчно. while( <DESC> ) { #Вписываем в файл пробелы. Делаем принудительные print OUT " \n"; #Пишем в него текщую строку. print OUT "@_ \n"; #Формируем следущий заголовок. print OUT "<br>\n"; #Даем команду получения дерева версий элемента. open (DESC, "cleartool lsvtree -a $buffer /"); #Обнуляем счетчики версий. $versions=0; #Ставим условие. Если в строке есть if ( "@_" =~ "CHECKEDOUT" ) #Увеличиваем счетчик числа СО на 1. $nuco++; #Делаем строку красного цвета, print OUT "<font color=\"red\">\n"; #Если условие не совпало, то print OUT "@_ \n"; #Формируем последний заголовок. print OUT "<br>\n"; #Даем команду. open (DESC, "cleartool lshis -l $buffer /"); #Получаем ответ и просто вписываем в файл. while( <DESC> ) { #Продолжаем формирование таблицы для файла с индексами. print INDEX "<tr>\n"; #Условие: если было подсчитано, что check-out больше if ($nuco>0){ }else{ print INDEX "<td>\n"; print INDEX "</tr>\n"; print INDEX "</table>"; В результате исполнения скрипта мы получаем полноценный отчет в Html виде отчетом по всем элементам репозитория. В дальнейшем, набор автоматизированных отчетов ClearCase можно встраивать в виде разделов внутрикорпоративного сайта. Для использования данного скрипта в реальном проекте необходимо лишь переопределить переменную $name и создать директорию rep, в которую будут помещаться файлы со статистикой по найденным элементам. Исполнение скрипта - ccperl [report.pl] Где report.pl - скрипт. Следующие рисунки демонстрируют вид окна Internet Explorer (IE), с отчетам по элементам репозитория Sem. рис.2. Внешний вид окна IE с загруженной основной страницей отчета. Как, видите, файл, находящийся в состоянии check-out подсвечен красным цветом. Справа ведется подсчет общего числа версий для элемента и количество check-out рис.3. Собранная статистика по описанию элемента, дереву версий и истории изменений. Никаких цветных выделений в тексте нет, поскольку это простой файл, ни ода из версий которого не находится в состоянии check-out рис.4. Статистика сheck-out для выбранного файла. Указывается какой пользователь и где произвел операцию вывода в состояние check-out В соответствии с корпоративными стандартами на отчетность, можно на базе приведенного скрипта создать собственный, более подробный и структурированный. Любая операция над данными в СС требует лицензирования, соответственно, участники коллектива, желающие просмотреть статистическую информацию о состоянии элементов проекта, будут вынуждены «изъять» ее для проведения различных ревизий. Формирование же обновляемого отчета, с размещением его на сайте позволит сэкономить лицензию на не очень существенной операции, например, проводя генерацию отчета на сервере в конце рабочего дня или ночью. Процесс отчетности относится к одному из самых важных в процессе разработки информационных систем. Для того чтобы отчет не представлял собой отписки, СС имеет механизмы комментирования ключевых действий (то есть участник проекта при выполнении определенных действий обязан комментировать цель собственных действий). В результате чего, в конце (дня\недели\месяца) система способна сама сформировать подробный отчет по имеющимся в репозитории комментариям. ЗаключениеКакой должна быть идеальная система сбора и публикации проектных метрик:
|