Использование Internet-технологий в коллективной разработке больших программных систем
М.Л. Цымблер, Л.Б. Соколинский, В.В. Федрушков
Челябинский государственный университет
mzym@math.cgu.chel.su, sokolinsky@acm.org, fedrushkov@acm.org
В работе рассматривается подход к организации коллективной разработки больших программных систем, использующий Internet-технологии и обеспечивающий эффективную работу над проектом как локальных, так и удаленных пользователей. Данный подход применен в коллективной разработке прототипа параллельной СУБД Омега для отечественной массивно-параллельной многопроцессорной системы МВС-100/1000. Дается оценка преимуществ предложенного подхода и возможности его применения в больших программных проектах.
Введение
На сегодняшний день практически все крупные проекты по разработке программного обеспечения сталкиваются с проблемами создания эффективной системы электронной коммуникации разработчиков внутри коллектива и организации удаленного доступа к программным и аппаратным ресурсам проекта. В этом смысле эффективная разработка больших программных систем сегодня невозможна без использования современных Internet-технологий.
В работе рассматривается подход к организации коллективной разработки больших программных систем, использующий Internet-технологии. Данный подход был применен в проекте по созданию прототипа параллельной СУБД Омега 1] для отечественной массивно-параллельной многопроцессорной системы МВС-100/1000 2].
Аппаратно-системное обеспечение проекта имеет следующую структуру: локальные участники проекта используют рабочие станции с ОС Windows 95/NT, находящиеся в общей ЛВС с Linux-сервером, который исполняет роль host-машины для МВС-100. Для доступа к host-машине используется X-терминал. Другая часть разработчиков работает удаленно, получая исходные тексты по ftp и используя в качестве терминала telnet.
Комплекс средств программной поддержки процесса разработки составляют система версионирования проекта CVS, система документирования исходных текстов DOC++, компилятор, компоновщик и библиотекарь Portland Group С для суперскалярного процессора i860 фирмы Intel. Версия компилятора PGCC, поставляемая с МВС-100, разработана для среды DOS и представляет собой кросс-компилятор.
PGCC используется для компиляции и компоновки исходных текстов и создания библиотеки проекта. DOC++ позволяет, используя в исходных текстах комментарии специального вида, формировать документацию и справочник по функциям проекта в формате LaTeX и HTML.
Документация и исходные тексты, вместе с историями их изменений хранятся на Linux-сервере в репозитории проекта. Репозиторий поддерживается технологом проекта с помощью CVS. Участники проекта не могут изменять содержимое репозитория и имеют дело только со своей рабочей копией проекта. Разработанные ими исходные тексты передаются технологу по электронной почте. Подробно технология коллективной разработки и используемые в ней программные средства описаны в 3].
Далее в статье описаны проблемы, возникшие при использовании принятой технологии и подход к их решению, использующий Internet-технологии. В заключении дается оценка преимуществ предложенных решений и возможности применения подхода в больших программных проектах.
Применение Internet-технологий в проекте Омега
Довольно скоро участники проекта встали перед необходимостью обеспечить функционирование принятой технологии коллективной разработки в Internet-среде:
Организация web-ориентированной технологической среды проекта
Для решения первых двух проблем на host-машине был установлен web-сервер и свободно распространяемые с исходными текстами утилиты CVSweb 4] и DOC++ 5].
Пакет CVSweb представляет собой web-оболочку для CVS и дает возможность просматривать содержимое репозитория, созданного CVS, с помощью HTML обозревателя. При просмотре информация отображается в виде соответствующей структуры каталогов и файлов проекта. С каждым именем файла связывается коллекция гиперссылок, при выборе которых можно загрузить соответствующую ревизию этого файла. Обеспечивается автоматическое отображение даты, времени, автора и комментария, который был введен при занесении в репозиторий данной ревизии файла. CVSweb также предоставляет web-форму, с помощью которой можно отобразить различия между произвольными ревизиями одного файла, в том числе в различных ветках проекта.
Пакет CVSweb реализован в виде скрипта на языке Perl и использует механизм CGI (Common Gateway Interface), поддерживаемый практически всеми HTML обозревателями. Его установка на web-сервере проекта предоставляет локальным и удаленным разработчикам прозрачный способ отслеживания изменений в исходных текстах проекта и получения их последних версий.
Пакет DOC++ позволяет компилировать исходные тексты с комментариями специального вида в документацию в формате HTML. Поскольку DOC++ изначально предназначен для формирования документации по исходным текстам на языке C++, а не С, был разработан ряд дополнительных скриптов (командных файлов Unix), которые приводят полученный набор html-файлов к потребному для проекта виду (удаление "лишних" тегов HTML, приведение к нужной кодировке и проч.).
Такой подход к подготовке документации по проекту позволил с минимальными затратами поддерживать актуальность и адекватность документации, и обеспечил возможность работы с документацией как локальных, так и удаленных участников проекта, независимо от используемых ими аппаратно-программных платформ (т.к. для просмотра документации достаточно установить HTML обозреватель).
Организация удаленного доступа к программным ресурсам проекта
Напомним, что существующая технология разработки программ для МВС-100 основана на компиляторе C фирмы Portland Group, работающем в среде MS-DOS. Подготовка текстов программ и компиляция выполняются на рабочих станциях. Полученные задачи для отладки и выполнения копируются на host-машину МВС-100, где запускаются при помощи загрузчика из MS-DOS.
Для коллективной работы эта технология малопригодна, т.к. требует "ручного труда" на всех фазах технологического цикла и присутствия программиста непосредственно возле МВС во время тестирования программы. Гораздо более привлекательными для целей групповой разработки являются возможности ОС Unix/Linux и технологии, основанные на использовании Internet, точнее, протоколов удаленного доступа на базе TCP/IP.
Первым решением проблемы удаленной обработки стало использование эмулятора MS-DOS DOSEMU 6]. Запуск DOSEMU через telnet позволяет организовать сервер приложений с удаленным доступом к средствам разработки на базе MS-DOS.
Довольно скоро стало ясно, что использование эмулятора через telnet все же оставляет желать лучшего. Во-первых, DOSEMU сохраняет элемент ручного труда на этапе компиляции. Это затрудняет автоматизацию таких важных для большого проекта процедур, как сборка и тестирование.
Во-вторых, для компиляторов, работающих из командной строки, желательно иметь некоторую интегрированную среду разработчика, обеспечивающую сервис как минимум на этапах редактирования и компиляции.
В-третьих, несмотря на то, что DOSEMU позволяет выполнять все необходимые приложения, при удаленном доступе по telnet клавиатура и мышь эмулируются не полностью. Это затрудняет использование текстовых редакторов и других интерактивных средств MS-DOS, делая эмулятор пригодным лишь для запуска утилит командной строки.
В результате было принято решение "спрятать" все необходимые утилиты MS-DOS, сделав возможным их запуск непосредственно из командного интерпретатора Unix. Это дало возможность исключить MS-DOS из жизни разработчиков и использовать весь спектр средств интеграции, используемых в Unix. Например, утилиту make и редактор GNU Emacs, который имеет возможность вызова компиляторов командной строки и, кроме того, поддерживает работу с CVS.
Для вызова компиляторов среды MS-DOS был разработан специальный стартер, emutool. Стартер представляет собой программу на языке shell, которая использует специализированную конфигурацию эмулятора MS-DOS для "беспилотного" запуска DOS-программ. Таким образом достигнута возможность удаленного запуска загрузочных модулей на МВС-100.
Стартер дополнен фильтром на языке AWK, который приводит диагностические сообщения компиляторов к стандартному виду, пригодному для интеграции с другими средствами Unix. В результате стартер может быть командной строкой того же формата, что и реальный компилятор. Специально написанный для Unix-утилиты make файл с правилами автоматической компиляции и сборки файлов проекта сводит к минимуму "ручную" работу при отладке программ.
Такое решение дает как удаленным, так и локальным разработчикам прозрачный доступ к программным ресурсам host-машины и МВС-100.
Заключение
Описанный подход к организации коллективной разработки был применен в рамках рабочей группы Омега при создании прототипа параллельной СУБД для МВС-100. Использованные программные средства и технологии позволили обеспечить участников проекта унифицированным рабочим местом, как при работе в локальной сети, так и из Internet. Применение описанных подходов позволило повысить производительность труда программиста в среднем на 30%.
Описанный подход и соответствующее программное обеспечение могут быть применены в коллективной разработке больших программных систем различного назначения. Технология прозрачного стартера может быть успешно внедрена в других проектах, также связанных с кросс-компиляторами для MS-DOS.
Ссылки и библиография