Использование 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.

Ссылки и библиография

  1. Sokolinsky L., Axenov O., Gutova S. Omega: The Highly Parallel Database System Project // Proceedings of the First East-European Symposium on Advances in Database and Information Systems (ADBIS'97), St.-Petersburg. September 2-5, 1997. Vol. 2. P. 88-90.
  2. Zabrodin A.V., Levin V.K., Korneev V.V. The Massively Parallel Computer System MBC-100. In: Proceedings of PaCT-95, 1995, pp 342-356 (Lecture Notes in Computer Science, vol. 964).
  3. Zymbler M.L. Computer Aided Design Facilities for Prototyping the Omega DBMS // CSIT'99, Proceedings of the 1st International Workshop on Computer Science and Information Technologies, January 18-22, 1999, Moscow, Russia. MEPhI Publishing. 1999. Vol. 2. (http://msu.jurinfor.ru/CSIT99/CSIT99.html)
  4. Cyclic cvsweb page. http://www.cyclic.com/cyclic-pages/web-cvsweb.html
  5. Wunderling R., Zockler M. DOC++. A Documentation System for C++ and Java. http://www.zib.de/Visual/software/doc++
  6. DOS Emulator Home Page. http://www.suse.com/~dosemu/