Новичков Александр
технический специалист, преподаватель УЦ Interface Ltd,
опубликовано в КомпьютерПресс 8'2001
опубликовано на сайте www.interface.ru
Идея написать данную статью в стиле "Follow Me" пришла в голову после писем, пришедших на мой адрес после публикации двух статей о технологиях Rational (см. КомпьютерПресс № 2'2001 "Средства тестирования" и № 5'2001 "Конфигурационное управление"). Смысл писем сводился к тому, что построить по технологиям Rational базу по тестированию и конфигурации возможно, только вот связать все это воедино непросто, и уж тем более нельзя на основе описанных продуктов говорить о какой бы то ни было управляемости с точки зрения руководства компании. Конечно же, упрек верный, но технологии Rational Software хороши тем, что любой их сегмент можно рассматривать как по отдельности, так и как часть большой мозаики. Сложив такую мозаику, вы получите полностью управляемое производство, на входе которого можно подать идею, а на выходе получить современный программный продукт. Сам процесс разработки при этом будет похож на производственный конвейер, где все течет, работает и подчиняется строго установленным правилам, где каждый участник проекта знает, что ему делать, и задачи от участника к участнику передаются не на словах, а при помощи специальных средств; соответственно, при такой передаче должна создаваться определенная база данных, в которой и будет храниться история проектов, - эдакий репозиторий проекта. Все вышеописанные проблемы может решить Rational Unified Process - RUP - интерактивная энциклопедия по построению качественного процесса выпуска программного обеспечения.
Рассмотрение RUP мы начали со средств тестирования для разработчиков, а продолжили конфигурационным управлением. Сегодня мы вкратце рассмотрим программный продукт, который сможет связать в единую цепочку разработчиков, специалистов по тестированию и их руководителей. Имя данного продукта - Rational ClearQuest.
Как известно, знание - сила. А на сегодня нам известно, что чем больше проект, тем менее он управляем. Как видите, зависимость здесь обратно пропорциональная. Согласитесь, что сотрудник, тестирующий продукт, должен иметь инструмент, который позволит описать любую найденную в продукте ошибку, разработчик должен, используя сведения, полученные от группы тестирования, исправить модуль, где найдена ошибка, а руководитель, в свою очередь, должен знать, во-первых, кто чем в данный момент занят, а во-вторых, какое количество ошибок и какого рода сопровождают ту или иную версию проекта.
Проблема до боли знакомая, и каждая компания решает ее по-своему, изобретая порой то, что уже есть и работает… Давайте посмотрим, что предлагает Rational.
ClearQuest - это средство управления запросами на изменение (Change Request Management - CRM), специально разработанное с учетом динамической и сложной структуры процесса разработки ПО. ClearQuest предназначен для отслеживания и управления любым типом действий, приводящим к изменениям в течение всего жизненного цикла продукта, помогая тем самым создавать качественное ПО более предсказуемым образом.
ClearQuest представляет собой многомодульное приложение, которое собственными средствами создает базу данных проекта и заносит в нее все изменения. Он поддерживает СУБД ведущих производителей, в частности Oracle, Microsoft и Sybase.
Смысл работы продукта прост и прозаичен. Основная информационная единица - дефект - это найденная ошибка в продукте или описание какой-то его особенности. Дефект заносится в систему пользователем, обнаружившим его. У каждого дефекта есть определенный набор состояний, по которым руководство может как отследить историю проекта, так и оценить текущее положение дел.
Состояний у дефектов всего пять. "Подан" (Submitted) - описание дефекта только что внесено; "Назначен" (Assigned) - описание передано определенному сотруднику. Начало работы над запросом переводит его в "Открытое" состояние (Open), и вся команда может видеть, что кто-то обрабатывает запрос. Наконец, когда запрос проверен и закрыт, он проходит соответственно стадии "Проверка" (Verify) и "Закрыт" (Resolved).
Состояния способны указать только на статус того или иного дефекта, а вот дотошно описать его помогут лишь специализированные поля. Любой дефект содержит определенное количество описательных полей, причем если использовать ClearQuest совместно со средствами тестирования, то при обнаружении ошибки данные продукты сами заполняют все необходимые поля. Чтобы вы не посчитали автозаполнение недостатком системы, скажу, что наряду с автозаполнением в ClearQuest предусмотрено и ручное внесение описания дефектов в систему, при котором вся ответственность за поданную информацию лежит на операторе.
Итак, дефект получает идентификационный номер и набор описательных данных. Вот краткий список того, что можно передать в качестве описания к дефекту.
State - текущий статус дефекта (закрыт, открыт, в работе...).
ID - идентификационный код дефекта. Воздействовать на это значение пользователь не может, поскольку система присваивает номер автоматически.
Headline - комментарий к дефекту. В случае ручного ввода дается пользователем самостоятельно. При автоматической интеграции заполняется автоматически программой, обнаружившей дефект.
RA - ассоциация с проектом (репозитарием). Необходима для ассоциации дефекта с требованием к системе.
Priority - приоритет исправления дефекта. Этот параметр можно изменять по ходу проекта.
Severity - критичность дефекта. То есть на первом этапе дефект можно определить как некритичный и исправить в последнюю очередь либо в последующей версии. Этот параметр также можно изменять по ходу проекта.
Owner - владелец дефекта. Здесь следует отметить такую особенность: ClearQuest имеет два контрольных поля - Submitter и Owner. Причем первое поле содержит имя пользователя, который активизировал ошибку, а второе - имя пользователя, который должен эту ошибку исправить.
Keyword - набор ключевых слов для данного дефекта. Специальный механизм, позволяющий конкретной компании вводить в обиход свой набор ошибок и приводить их в состояние ассоциативной связи с ошибкой в ClearQuest.
Symptoms - признак дефекта (Cosmetic Flaw, Data Corruption, Data Loss, Slow Performance... и т.д.). Заранее предопределенные типы.
Description - описание проблемы, комментарий.
Resolution - способ разрешения проблемы (fixed/nofixed).
Attachment - сюда можно присоединить любой документ (скажем, код программы).
History - история внесения изменений в дефекте.
TestData - определенный набор сопроводительных документов. Заполняется либо вручную, либо автоматически средствами тестирования.
Environment - среда сопровождения. Здесь можно определить тип операционной системы, тип процессора, при которых проявляется дефект.
Requirements - здесь можно задать связь дефекта с требованием из RequisitePro.
ClearCase - связь дефекта с конкретной версией файла. Данный модуль появляется только при правильной настройке ClearQuest и ClearCase (см. ниже).
Рисунок 1. Внесение нового дефекта
На рис. 1 показано диалоговое окно, возникающее при вводе или изменении дефекта. Как видите, окно включает большое число закладок, подавляющее большинство которых уже описано выше.
Итак, посмотрим, что даст ClearQuest каждому участнику проекта:
Здесь мы опишем механизм, при помощи которого можно "заставить" работать ClearQuest. Естественно, что подробное описание выходит за рамки данной статьи, но попробуем сделать это кратко. Итак, наиболее простой способ подготовить проектную основу и сконфигурировать ее - использовать Rational Administartor, позволяющий посредством нескольких шагов мастера полностью подготовить проект. Здесь воедино связываются метаданные для тестирования, а также требования к системе, по которым потом тестировщики создадут низкоуровневый план тестирования, сгенерируют скрипт тестирования, базу ClearQuest и присоединят модель из Rational Rose.
На этапе создания базы необходимо указать тип формата базы данных и местоположение генерируемого файла (для примеров я использовал MS Access), а также тип схемы, по которой она будет строиться. Число доступных схем - примерно 7-8, но может варьироваться вместе с новыми версиями продукта. Из основных схем хочется отметить Enterprise и DefectTracing. Первая предусматривает набор правил, по которым схема будет работать со всеми продуктами, так или иначе описанными в RUP. Вторая предназначена только для использования возможностей документирования дефектов. Мы выбираем схему Enterprise, задаем логическое имя базы. На последнем шаге создаем пользователей и группы, а также описываем права доступа.
Теперь необходимо запустить ClearQuest и провести еще ряд действий, создать запрос Query (правила создания запросов одинаковы для всех баз данных, и здесь мы их не рассматриваем) и наконец, попытаться зарегистрировать дефект.
Мы выполнили только основные шаги по получению базы данных. Но их достаточно, чтобы создать работающий CRM.
Как говорилось в одной из моих предыдущих статей (см. КомпьютерПресс № 2'2001 "Средства тестирования"), Rational имеет два типа средств тестирования: для разработчиков и тестировщиков. Хотя зависимость здесь не жесткая, да и роли участников конкретного проекта могут варьироваться.
Со всеми средствами ClearQuest начинает работать, как только создана база данных. Различия от продукта к продукту заключаются только в способе заполнения полей. ClearQuest вызывается автоматически, при нажатии правой клавиши на описании той или иной ошибки.
Здесь хочется обратить ваше внимание вот на что: ClearQuest не может сам в автоматическом режиме занести все ошибки, обнаруженные средствами тестирования, - этим должен заниматься человек. Иными словами, разработчик может вносить, а может и не вносить описание дефекта. Обычно предполагается, что разработчик должен только исправлять ошибки и неточности, на которые ему указывают тестировщики. Естественно, с этим можно поспорить, но продукт позволит применить любой подход. За вами - выбор, соответствующий традициям, сложившимся в вашей компании.
Как уже говорилось выше, средства тестирования сами способны заполнить сопроводительные поля. Если такое средство, как Rational Purify, способно дать лишь заголовок ошибки, то Rational Robot может уже заполнять поля согласно тому, какой скрипт в какой версии нашел ту или иную ошибку. Тестировщику для получения полной картины тестирования останется только задокументировать тип процессора, тип системы и описать, с какими из сторонних программных средств проводилось совместное тестирование. Само собой разумеется, что все проблемы по хранению таких данных возьмет на себя ClearQuest.
Построить же график по ошибкам или сделать выборку по определенным операционным системам способен любой, кто хоть раз работал с базами данных.
Итак, тестировщики получают инструмент архивации сведений обо всех дефектах, способный провести анализ информации по заданным критериям.
Данный набор продуктов позволяет разработчикам не просто исправлять определенные версии файлов, выводя их для этого в состояние Check-out, но и ассоциировать то или иное исправление в соответствии с теми дефектами, которые описаны в системе. Кажущийся сам по себе простым, данный механизм поможет извлечь из проекта всю информацию по ошибкам и изменениям, приведшим к их исправлению либо к порождению новых. Всю информацию можно извлечь подобно поднятию виноградной грозди за верхушку, рассматривая ее с разных сторон!
Здесь скрывается первый подводный камень - Rational предлагает для решения проблем с "change set" две методики: UCM (Unified Code Management) и ClearCase Base. О достоинствах каждой из них мы поговорим в одной из следующих статей, а сейчас остановимся только вот на чем: UCM предлагает универсальный подход и содержит в себе правила быстрого построения проектов установленного образца. UCM уже предопределил все роли и действия, а также осуществил интеграцию ClеarCase с ClearQuest. UCM - это попытка Rational осуществить унифицированный подход к тестированию. Но в погоне за универсальностью UCM потерял ряд важных черт, главная из которых - гибкая настройка под конкретный процесс. Тем не менее UCM развивается, улучшается, но для больших компаний со сложной инфраструктурой пока не совсем пригоден. Поэтому мы рассмотрим вариант интеграции ClearCase Base с уже сконфигурированной базой в ClearQuest.
Сначала проведем интеграцию, а потом поговорим о концепции.
"Внедрение" продуктов друг в друга - процесс двусторонний. Сначала ClearCase настраивается с помощью модуля ClearCase ClearQuest Integration. В появившемся окне необходимо указать, с каким VOB будет проведена интеграция и какие операции будут попадать в базу. Например, можно сделать так, что в базу будут попадать только действия check-out, связанные с ветвью DEBUG, и так далее (рис. 2).
Рисунок 2. Диалог интеграции ClearCase. Слева изображен список вобов, а в центре типы запросов. Здесь можно отметить, что интеграция со стороны ClearCase проходит на уровне инсталляции в VOB триггеров, вызывающих ClearQuest
То есть здесь мы настраиваем реакцию ClearCase на то или иное событие. Соответствующим образом для каждого события будет вызываться список дефектов из ClearQuest, с которыми нужно проводить ассоциацию.
Но этой настройки мало. Теперь схему ClearQuest необходимо "научить понимать" события ClearCase. Делается это следующим образом.
Теперь, как только пользователь даст команду CheckOUT, ClearCase не только попросит прокомментировать действия, но и предложит указать ассоциацию с определенным дефектом в базе ClearQuest. Значит, можно узнать, какие версии в ClearCase были порождены той или иной ошибкой.
Ассоциативные связи могут быть двух типов:
Диалоговое окно, содержащее ассоциации, отображено на рис. 3.
Итак, мы получаем следующий алгоритм разработки программного обеспечения:
Итак, при создании крупных проектов иметь в своем распоряжении только инструменты тестирования и конфигурационного управления в нынешних условиях разработки программного обеспечения уже недостаточно. Необходимо использовать не только индивидуальные средства разработки, но и средства и технологии коллективной работы.
Контролировать проект и объединять между собой тестировщиков и разработчиков поможет именно Rational ClearQuest.
Рисунок 3. Данное окно вызывается каждый раз при возникновении указанного в СС события. Здесь пользователь ассоциирует порождение новой версии с существующим дефектом, либо создает новый