Продукты
Командный дух PVCS
Александр Гершойг
Несмотря на очевидные преимущества коллективной разработки по сравнению с индивидуальной – значительное сокращение временных и материальных затрат, групповая работа тем не менее может привести к крупным неприятностям. Потеря модификаций исходного кода при одновременной работе с ним нескольких разработчиков, дублирующие или конфликтующие друг с другом копии модулей, некорректная сборка конечного продукта при наличии нескольких версий одного модуля – вот далеко не полный перечень проблем, возникающих в этой области.
За несколько десятков лет эволюции программы, поддерживающие процесс коллективной разработки других программ, превратились в так называемые системы управления конфигурацией ПО – Software Configuration Management (SCM). И сегодня, когда многие организации, ранее применявшие сети PC, стали переходить к архитектуре "клиент-сервер", значение SCM возрастает многократно.
Одним из популярных средств такого рода является пакет PVCS компании Intersolv (Роквилл, штат Мэри-лэнд, США). Сейчас он поддерживает 17 операционных систем, 45 инструментальных сред и любые типы объектов разработки.
PVCS Version Manager
Основу пакета PVCS составляют две утилиты – Version Manager и Tracker. Version Manager позволяет руководителю всегда иметь на своем столе полный отчет о текущем состоянии проекта и действиях всех членов команды и контролировать продвижение проекта по этапам (разработка, тестирование, коммерческое распространение). Администратор проекта получает возможность упорядочивать доступ разработчиков к файлам и папкам проекта для сборки той или иной версии приложения, точно определять версии входящего в нее файла, вести историю всех изменений. Наконец, сточки зрения разработчика, PVSC – это удобное средство обеспечивать откат к старому варианту файла в любой момент, надежно защищать свою работу от перезаписи другим программистом, автоматически вести параллельные версии одного и того же файла, сливать воедино параллельные версии и визуализировать их отличия.
Version Manager (VM) представляет собой архив проекта в виде иерархии папок с вложенными в них файлами, например, папка с исходными текстами, папка с файлами ресурсов, папка с главами документации и т. д. Один файл может одновременно присутствовать в нескольких папках, что очень удобно для группировки по различным признакам.
VM хранит в архиве последние варианты (втерминологии VM – "ревизии") файлов, а также списки отличий каждой предыдущей ревизии от последующей. Таким образом, доступна любая прошедшая ревизия. Вместе с ревизией VM автоматически записывает служебную информацию: данные о времени включения ее в архив, порядковый номер, имя разработчика, внесшего изменения, и т.д. Разработчик может присоединить к ревизии сообщение-памятку о том, что именно он изменил.
Разработчик взаимодействует с Version Manager по классическому сценарию, привычному со времен систем SCCS, RCS и др.:
– извлечение файла или целой папки из архива в личную рабочую директорию (check out);
– внесение изменений;
– запись новых ревизий файлов в архив (check in).
Обычно все эти операции доступны непосредственно из среды разработки. Если один и тот же файл одновременно редактируют два разработчика, VM позволяет им работать параллельно (ветвление ревизии), а затем сводить исправления в единый файл.
Некоторые внутренние события VM (скажем, передача файла с этапа разработки на этап тестирования) могут инициализировать внешнее приложение – например, PVCS Configuration Builder или компилятор.
PVCS Tracker
PVCS Tracker (TR) помогает менеджерам проекта следить за его ходом и предпринимать корректирующие действия. TR применяется как при ведении разработок, так и при сопровождении продуктов. Он позволяет управлять решением проблем, таких как обнаружение клиентом ошибок в ПО, затягивание сроков разработки, неправильная расстановка людей или приоритетов и т. п., выполняя три функции:
- сбор данных и анализ статистики по проблемам,включая создание соответствующих отчетов;
- оперативное управление процессом решения проблем,
– тематический обмен информацией при решении проблемы группой, включая поддержку телекоммуникаций (WAN).

Для реализации перечисленных функций TR ведет специализированную базу данных, хранящую записи о выявленных ошибках (кто обнаружил ошибку, кто автор содержащего ее модуля, степень тяжести ошибки, контекст возникновения, связанные с нею файлы, их местонахождение в архиве Version Manager, действия по исправлению, текущее состояние и т.п ), а также записи о времени, затраченном на ту или иную работу. Последняя версия TR поддерживает Oracle, MS SQL Server и Sybase, что позволяет менеджерам иметь полный доступ к базе данных наравне с доступом к бухгалтерской и торговой информации.
Обратимся к рабочему циклу TR Менеджер заносит информацию об обнаруженной ошибке или другой проблеме в БД с одновременным (возможно автоматическим) оповещением всех заинтересованных лиц и пересылкой им необходимых материалов (например, файлов, связанных с ошибкой). По мере установления авторства ошибки, определения модуля, в котором она возникла, исправления его и передачи на тестирование происходит регистрация каждого из этих событий в БД, и ошибка перемещается из входного лотка (in tray) в группу обрабатываемых (in process), а затем и исправленных (corrected) ошибок.
На всех этапах менеджеры, осуществляя запросы к базе данных о ходе исправления ошибки, связанных с ней материалах, времени, затраченном на каждом этапе, а также о накопленной статистике, получают графические и табличные отчеты (имеется 15 предустановленных запросов и отчетов с возможностью создания новых), по результатам которых могут быть предприняты оперативные действия. Накопленные в БДдан-ные используются при разработке последующих версий ПО, а также для принятия стратегических решений.
PVCS Tracker и Version Manager тесно интегрированы между собой и замыкают цикл от получения сообщения о возникновении проблемы до выпуска соответствующей исправленной версии.
Дополнительные возможности
PVCS Configuration Builder автоматизирует процесс построения приложения, позволяет стандартизовать сборку, точно воспроизводит предыдущие версии приложения, автоматически отслеживает зависимости между файлами и может автоматически вызываться из других компонентов PVCS по событию.
Production Gateway синхронизирует на локальных сетях – а также между удаленными локальными сетями – части проекта на больших ЭВМ с архивами версий.
PVCS Notify – средство, используемое для интеграции Tracker с электронной почтой предприятия PVCS Reporter – мощный генератор отчетов, расширяющий презентационные возможности других компонентов PVCS.
Наконец, многим пользователям PVCS пригодился Developer's Toolkit, позволяющий использовать все функциональные возможности PVCS в собственных инструментальных средствах и приложениях. Он содержит интерфейсы к средам разработки, собственный графический интерфейс, интерфейс командной строки и библиотеку вызовов.