Хорошо известно, что язык Ада активно используется для реализации различных военных проектов. Собственно, все возможности этого языка наиболее полно удовлетворяют в первую очередь армейским требованиям к разработке программных продуктов. Это довольно сложные описания интерфейсов программных модулей, позволяющие организовывать к ним иерархический доступ в зависимости от статуса разработчика, содержащие четко регламентированные ограничения на видимость данных. Очень существенны ориентация Ады на использование в системах реального времени, например в электронных интеллектуальных устройствах автономного управления движением, мощная кросс-платформная поддержка, позволяющая создавать программный код для специализированных военных микропроцессоров на обычных компьютерах, а также несомненное "лоббирование" Ады, в первую очередь, Министерством обороны США. Все вышесказанное делает этот язык наиболее часто применяемым в большинстве военных компьютерных проектов.
Развал ранее тесно взаимосвязанных различных родов войск бывших советских вооруженных сил настолько поразил несколько лет назад американские военные аналитические центры (по "их" прогнозам, боеспособность должна была снизиться значительно меньше, чем случилось в реальности), что они решили как можно скорее осуществить максимально тесную интеграцию своих военных сил. Эффект от этого превзошел все ожидания.
В армейском департаменте США была разработана управляющая информационная система SIDPERS-3. Это большой комплекс, состоящий из специализированных электронных устройств, программного обеспечения и систем связи, который собирает, обрабатывает и передает полевым и штабным командирам информацию о текущем положении, состоянии и степени боеготовности солдат и военной техники как на поле боя, так и в мирных условиях. Командующие подразделениями получают уникальную возможность следить за ходом сражения оперативно, принимать более точные решения и управлять подчиненными силами как на глобальном, так и на локальном уровне - вплоть до конкретного солдата (кто играл в "Command & Conquer", прекрасно поймет, о чем идет речь). Данная система рассчитана на использование не только в военное, но и в мирное время и позволяет оптимизировать практически все аспекты подготовки личного состава.
Разработка этой системы началась в конце 1991 г., а первый этап был закончен в январе 1994 г. Совершенствование и тестирование SIDPERS-3 в полевых условиях продолжается до сих пор.
Ада была выбрана, по словам ее создателей, благодаря трем качествам: высокой переносимости, легкости поддержки и сопровождения и возможности повторного использования полученного кода. (Лично мне кажется, что выбор был сделан в приказном порядке, другие языки в 1991 г. просто еще не были допущены к "службе в ВС США".) Была разработана специальная система удаленного вызова процедур, когда Ада-подпрограммы вызывались внешними устройствами, а результаты их функционирования возвращались обратно в главную управляющую программу. Внешний источник мог быть как электронным устройством, прикрепленным, например, к запястью солдата, так и программой-имитатором, предназначенной для тестирования комплекса. Тестированию в этом проекте было уделено по понятным причинам особое внимание. Все модули являются независимыми друг от друга и позволяют проводить проверку отдельных частей SIDPERS-3, любых их сочетаний и системы в целом. В самом большом тестовом варианте используется информация о 13 000 солдат, 15 000 членов их семей и 94 единицах боевой техники.
Основной упор был сделан на такие особенности Ады, как максимальная переносимость и простота сопровождения. SIDPERS-3 разрабатывался с применением Ада-компилятора Alsys для UNIX и СУБД XDB. Благодаря использованию подобной архитектуры данная система легко переносима на другие платформы, имеющие соответствующий компилятор с поддержкой XDB-библиотеки.
Однако в этом проекте, несмотря на то, что он является системой, функционирующей в реальном времени, не были использованы некоторые мультипрограммные возможности Ады, такие, например, как задачи (tasks). Основной акцент был сделан на продумывание интерфейсной части модулей и создание ясного структурного кода.
Разработка системы велась на основе не объектно-ориентированного, а объектно-базированного подхода. Эффективность его, по большому счету ничем не уступающего ООП, подтвердилась еще и тем, что на базе ряда готовых модулей SIDPERS-3 были созданы другие программные комплексы, использующие значительные объемы исходного кода оригинального проекта. Например, система планирования активных действий и управления перемещениями армейских частей (JOPES S&M) включала в себя 27 тыс. строк исходного кода из двух модулей SIDPERS-3, что позволило сэкономить более 1 млн. долл.
Отзывы пользователей SIDPERS-3 самые положительные. Особо отмечаются высокая надежность системы и дружелюбный интерфейс, не вызывающий нареканий в общении ни со стороны солдат, ни со стороны командиров самого высокого уровня.
Другим не менее интересным проектом явился реинжениринг модуля контроля воздушных операций (TAOM) отделения систем воздушной обороны (ADSD) морских корпусов поддержки тактических действий (MCTSSA) МО США. Новое название этого модуля - "Мобильная записывающая система" (PRS). ПО для старой системы было написано на разных языках и для различных платформ. Целью проекта было кардинальное усовершенствование данного модуля.
В качестве языка программирования была взята последняя объектно-ориентированная версия Ada 95, в качестве платформы - рабочие станции Sun SPARC 20. Вообще особое внимание в этом проекте было уделено максимальной стандартизации или, выражаясь армейским языком, "единообразию матчасти". Все компьютеры имеют абсолютно одинаковую конфигурацию, что позволяет мгновенно производить замену оборудования в случае его выхода из строя.
PRS используется для записи сообщений, получаемых от различных воздушных объектов, с целью непрерывного контроля за траекторией движения и ее корректировки. Конечные сообщения генерируются цифровой шиной данных специализированного модуля TAOM. В старой версии они обрабатывались компьютерами на базе 286-х процессоров, подключенными к интерфейсному контроллеру TAOM, и записывались на 9-дорожечную магнитную ленту. Такая конфигурация вызывала множество нареканий. Кроме того, контроллер стоил очень дорого, и у военных нередко возникали проблемы с его оперативным получением. Ленточные устройства были хрупки и часто ломались, не выдерживая нагрузки при работе в полевых условиях. Но самое страшное - ПО этого монстра было написано на четырех различных языках (основное ядро на Си и Ассемблере). Оно, конечно, имело ошибки, что вызывало у военных программистов значительные трудности с сопровождением.
В PRS все эти проблемы были полностью сняты. Рабочая станция Sun SPARC 20 подключается к TAOM с помощью оптоволоконного кабеля, что позволяет размещать компьютеры не рядом с модулем, а в любом удобном месте (в зависимости от длины кабеля). Архитектура SPARC 20 ориентирована на использование в различных системах регистрации внешней информации в режиме реального времени, поэтому никакого дополнительного оборудования типа специальных переходных плат не требуется, а общение с модулем осуществляется по стандартному протоколу TCP/IP. Все поступающие сообщения записываются непосредственно на диск в обычные файлы и в дальнейшем обрабатываются программным способом. А использование в SPARC 20 сменных жестких дисков позволяет без проблем переносить ПО на другие компьютеры в случае возникновения неполадок.
Работа над проектом заняла чуть менее полугода и была закончена этим летом на несколько месяцев раньше, чем планировалось, что само по себе для крупных проектов случай совершенно уникальный. Этот проект прошел тестирование в ВМС США и сегодня активно используется во многих подразделениях армий НАТО, например в компьютерном центре коммуникации ВМС в Северной Исландии, на военно-морской базе в Сан-Диего.
Вывод из этих примеров однозначный - Ада сегодня является ведущим средством разработки проектов, требующих в первую очередь высокой надежности функционирования больших программных комплексов. Специалисты объясняют это прежде всего очень строгой типизацией, принятой в языке, и жесткими ограничениями, накладываемыми на структуру программных модулей. Во всяком случае, последняя версия языка Ada 95 существенно превосходит Си++ во многих отношениях. Успех Delphi, паскалеподобного языка фирмы Borland, имеющего много общего с Адой, - лишнее тому подтверждение.
Более подробную информацию о других крупных проектах, выполненных с помощью Ады, вы можете найти на Web-узле: http://www.sw-eng.falls-church.va.us/AdaIC/.
Сергей Бобровский