УДК 004.4

Киркоров С. И.

Новая библиотека OEM как СРЕДСТВО ОБУЧЕНИЯ И база для доверенных платформ программирования на языке Ada в Win32

1. Введение

Программное обеспечение для критических применений, включая авиационную, космическую отрасль и медицину может на основных индустриальных платформах создаваться (и создаётся!) с помощью среды разработки программ на языке Ada – GNAT Pro [1]. Она позволяет разрабатывать как программные системы, полностью реализованные на языке Ada, так и создавать многоязыковые системы. Технология присутствует на основных индустриальных платформах (включая MS Windows, различные версии UNIX и GNU/Linux, Mac OS, HP-UX), она включает кросс-компиляторы для популярных встроенных архитектур. GNAT Pro распространяется с исходными кодами всех своих компонент.

Важным аспектом технологии является постоянная техническая поддержка клиентов, причём – бесплатная для университетов, участвующих в программе GAP (GNAT Academic Program) [2]). В составе сотни участников GAP находятся ведущие университеты России, Украины, а в Республике Беларусь – Высший государственный колледж связи.

Целью настоящего сообщения является представление новой библиотеки, которая ориентирована одновременно на учебный процесс (например, по дисциплине «системное программирование») так и на технологии создания бизнес приложений, которые бы при необходимости допускали верификацию.

Имеются в виду потребители программных средств для операционной системы MS Windows, которые требуют определённого, хотя не самого высокого уровня гарантий информационной безопасности. Для них библиотека OEM for Windows дает возможность объединить среду разработки GNAT GPL 2009 на языке программирования Ada-2005 и существующие технологии для применений в операционной системе Windows от фирмы Microsoft. Библиотека OEM можно рассматривать как компромисс между надёжностью, безопасностью, с одной стороны, и простотой применения, разработки, низкой стоимости современных ИТ на базе семейства операционных систем (ОС) MS Windows, с другой стороны.

 

2. Проблема создания доверенных платформ

Использование для указанных целей открытой библиотеки программных компонент на языке Ада, в создании и русификации которой участвует автор, связано с тем, что в обеспечении информационной безопасности и надежности прикладного программного обеспечения (ПО), слабым звеном наряду с другими факторами, является использование не контролируемых, закрытых и не сертифицированных по требованиям безопасности информационных технологий (ИТ). Уровень доверия ИТ определяется самым слабым звеном в цепи средств обеспечения информационной безопасности. Поэтому перспективным и востребованным ныне подходом к проблеме формирования собственных доверенных сред разработки ПО является использование инструментальных программных средств с открытым кодом.

Чем меньше, по мнению автора, требуется промежуточного, стороннего не доверенного слоя ПО для функционирования конечной прикладной системы, тем более высокий уровень гарантий можно обеспечить. Напротив, промежуточные средства, неподконтрольные разработчикам прикладного ПО снижают такой уровень.

Например, практически все программные продукты Microsoft от серверной (например MS SQL Server 2005) до прикладных и клиентских приложений обеспечивают свой функционал при обязательной установке Microsoft .NET Framework. Платформа разработки Microsoft Visual Studio 2008 позволяет выполнять так называемую «ЭКСТРИМ ПРОГРАММИРОВАНИЕ» разработку и более того провоцирует программистов к такому подходу. Трудно возразить тому, что последняя «эффективна» в смысле выманивания финансовых средств у потребителя. Потребитель-заказчик получает «вечно» недоделанную программу или комплекс программ – «программу сегодня на сегодня». Безусловно есть и положительные примеры, но это быстрее результат административного управления проектом на основе стандартов и нормативных актов.

Потенциальную проблему для безопасности ИТ в перспективе представляет платформа Microsoft .NET Framework в связи с тем, что в её основе лежит «виртуальный компилятор». Программа при каждом запуске транслирует виртуальный код из файла в исполняемый код аппаратной платформы с помощью .NET Framework. Только после этого ОС загружает фактически не контролируемый код для выполнения в оперативную память. Разработчик программы может доказать правильность работы только виртуального кода программы на «своем рабочем месте», но данные-то обрабатывает исполняемый код, который создается динамически .NET Framework. При подходящих условиях кто-то может произвести «обновление платформы» или активировать уже существующую программную «закладку» с целью повысить уязвимость платформы .NET Framework. При этом в силу лицензии потребителю не будет возмещен урон от результата таких действий, ни поставщиком, ни производителем платформы .NET Framework, ни производителем программного обеспечения. Потребитель быстрее всего не сможет застраховать риски от её применения.

Популярные, но ориентированные на коммерческий успех технологии не эффективны также в образовании. Ведь программиста, прекрасно знавшего прежнюю версию Microsoft Visual Studio (MS VS), после её очередного ударного обновления приходится в корне переучивать (ещё в большей степени это относится к ПО фирмы BORLAND). Сравните: MS VS ver. 1.4, MS VS ver. 4, MS VS ver. 6, MS VS .NET и это за каких-то 6-7 лет. Это уже не прогресс ИТ технологий, а бизнес модель фирмы Microsoft.

В противоположность этому, представитель индустриальных Ada технологий – система GNAT Pro [1] удовлетворяет всем требованиям полностью контролируемой разработки программного обеспечения: Использование в основе разработки языка программирования Ada позволяет реализовывать долговременные и большие проекты с минимальными рисками.

Прежде всего GNAT Pro в состоянии работать с проектами, включающими тысячи модулей, предлагая при этом удобные средства структурирования и конфигурирования компонент разрабатываемой системы с поддержкой коллективной разработки.

Разработка многоязыковых систем: использование единой для всех компиляторов семейства GNU GCC технологии генерации объектного кода облегчает использование в рамках одной системы модулей, реализованных на разных языках (Ада, Си, Си++, Фортран). GNAT Pro поддерживает все средства межъязыкового взаимодействия, определяемые последней ревизией стандарта языка Ada (Ada 2005).

Высокая эффективность и производительность: эффективность объектного кода обеспечивается сочетанием технологий оптимизации кода, специфических для языка Ada, с мощными средствами оптимизации кодогенератора семейства компиляторов GNU GCC.

Простота перехода на другую платформу: основные компоненты GNAT Pro имеют одинаковый интерфейс на всех платформах, на которых реализована технология.

Эффективная поддержка со стороны разработчиков: неотъемлемой компонентой технологии GNAT Pro является комплекс услуг, включающий консультации по языку Ada и программным компонентам GNAT Pro.

Накоплен богатый успешный опыт использования GNAT Pro в индустриальных проектах различного объема и сложности, включая разработку систем с повышенными требованиями к надежности, в том числе в проектах, выполняемых по государственным заказам в России.

Вышеупомянутая программа GAP предоставляет высшим учебным заведениям [2] бесплатно использовать основные компоненты технологии GNAT Pro (без каких-либо ограничений по функциональности) в образовательных и научно-исследовательских целях [3]. В этом качестве используется специально поддерживаемая версия под названием GNAT GPL. Её востребованность в учебном процессе также подтверждается опытом, в том числе университетов СНГ [2, 3].

 

3. Проект Ada-2009_OEM

Автор также в поисках инструментария, позволяющего решить выше описанные проблемы, пришел к выбору для исследовательских и учебных целей системы программирования GNAT GPL 2009. При этом во многих случаях, включая образование, имеет смысл её использовать на платформе Win32.

Сама система GNAT GPL 2009 может устанавливаться практически на любые платформы, а пакет Win32Ada позволяет использовать специфические функции ОС на уровне программного интерфейса Win32 и взаимодействовать с ОС MS Windows учитывая особенности последней. Правда, это требует от программиста глубоких знаний интерфейса ОС Win32. В связи с этим известный пакет GNATCOM/GWINDOWS позволял формализовать и облегчить задачу для программиста, но был совместим только с прежним стандартом языка ‑ Ada-95 и был сложен в установке.

Совместив достоинства этих двух пакетов, мы заложили основу библиотеки OEM – платформы для программирования на языке Ada-2005 в GNAT GPL 2009 Win32 с возможностью локализации для русского языка.

Сейчас библиотека OEM проходит всестороннее тестирование. Некоторые тесты можно рассматривать, как образцы рационального использования её средств. Они были положены в основу примеров, которые поставляются вместе с библиотекой.

Основные характеристики библиотеки OEM (по современному состоянию):

Интеграция со средой разработки GPS 4.3.1 (20090114);

Наличие средств перекодировки русского (OEM для консоли, ANSI (CP-1251) и Unicode-16 для графической консоли), а также BASE64 для электронной почты;

Собственный менеджер графических окон (исключительно на функциях Win32);

Собственный менеджер COM компонентов (исключительно на функциях Win32);

Собственные функции работы с USB устройствами;

Собственные функции работы по протоколу TCP/IP;

Собственные функции работы с СУБД по интерфейсу компонента ADO;

Средства генерации интерфейсов вызова зарегистрированных, создания новых COM объектов на языке Ada-2005/95 (например OPS сервера для SCADA);

Эта библиотека– новый продукт, вобравший в себя опыт и средства многих разработчиков, в том числе и автора [4]. Он свободно доступен в образовании, позволяя бесплатно (и особенно удобно для участников GAP [2, 5]) использовать основные компоненты технологии GNAT Pro под Win32 (без каких-либо ограничений по функциональности) в образовательных и научно-исследовательских целях.

 

4. Пользовательские характеристики библиотеки

При адаптации под библиотеку OEM средств пакета GWindows/GNATCOM была проведена глубокая переработка утилит, примеров и тестов. В результате удалось обеспечить:

·         бесконфликтную работу в новых версиях GNAT GPL, которая ориентирована на новый стандарт Ada-2005 и IDE GPS;

·         поддержку национальных кодировок (в первую очередь русской, но должно работать и с украинской, с другими установленными как основные языки в ОС;

·         простоты повторного использования "старых" исходных текстов программ, которые зависели от оригинального пакета GWindows/GNATCOM [7].

Оригинальный пакет GWindows/GNATCOM в версии GPL не развивается автором этого пакета с 2004 года . Тем не менее, идея, которая лежала в его основе актуальна и сейчас, так как позволяет базироваться только на уровне "чистого" WIN32 и языке программирования Ada. При этом достаточно эффективно создается достаточно сложная комплексная программа. Примером может служить [4] распределенная научно-исследовательская система для отработки и тестирования встраиваемых в FPGA алгоритмов сжатия видеоинформации. Программные средства двух-мониторной графической станции этой системы полностью разработаны на языке Ada-95 и пакета GWindows/GNATCOM. В отличии от оригинала в библиотеке OEM оконная подсистема сразу настроена на UNICOD-16 и включен только функционал который действительно востребован в рамках идеологии библиотеки OEM.

Обучающие примеры находятся в каталоге \oemtutorials-gui и объединены одним проектом oemtutorials.gpr.

Примеры программ для обучения поставляются готовые к исполнению, также для их изучения их можно модифицировать по своему усмотрению

Первый обучающий пример знакомит с пакетом OEM.GWindows.Message_Boxes, который в общем состоит из трех разновидностей прототипов:

·         диалог для выдачи сообщения.

·         диалог для ввода строки.

·         выдача стандартных (назначенных в ОС) звуковых сообщений.

Дальнейшие примеры (сейчас их 21) последовательно знакомят со всеми основными элементами GUI, включая управление окнами, клавиатурой, мышью, печатью, звуком, связь с базами данных, создание панелей и рисование.

Конечно, GUI – лишь один из элементов бизнес-приложений, разработка которых сопутствует большим проектам, в частности, для создания собственной среды разработки проекта, которая, как правило базируется на локальных сетях. Поэтому исключительно важно, что в нашей библиотеке описанные средства и примеры их использования сосуществуют с такими (тоже описанными с учебной понятностью) технологическими средствами, как протокол TCP/IP (на уровне сокетов) и по интерфейсу USB-2 для микроконтроллеров Cypress Semiconductor (на уровне управления, ввода/вывода через драйвер целевого устройства).

 

5. Заключение

Приведенные в сообщении аргументы доказывают актуальность созданной инструментальной библиотеки OEM для Ada программистов, а её характеристики позволяют рассчитывать, как на профессиональные, так и учебные применения в академической среде совместно с дополнительной литературой [8].

ЛИТЕРАТУРА

1.       Рыбин С. И., Годунко В. GNAT Pro – Ада – технология для серьезных проектов. Семинар, выставка PTS-2009, Минск. [Электрон. ресурс]. – http://www.mediascan.by/index.files/GNAT-AdaCore.pdf .

2.       Мищенко В. О., Гахов А.В. Обучение проектированию систем и основам параллельных вычислений на базе языка Ада в Харьковском национальном университете. Семинар, выставка PTS-2009, Минск. [Электрон. ресурс].  http://www.mediascan.by/index.files/adaedu.pdf .

3.       Рыбин С. И., Годунко В. Ада – перспективы использования в индустрии и образовании. Семинар, выставка PTS-2009, Минск. [Электрон. ресурс]. – http://www.mediascan.by/index.files/Ada-AdaCore.pdf .

4.       Киркоров С. И., Киркорова Л. С. Параллельные алгоритмы математических моделей: исследование локальности и применение языка Ada. Ж-л: ВІСНИК Харківського національного університету імені В.Н. Каразіна, №863 Серія: Математичне моделювання. Інформаційні технології. Автоматизовані системи управління, Випуск 12, стр. 129-142, Харків, 2009.

5.       The GNAT Academic Program [Электрон. ресурс]. – http://www.adacore.com/home/academia/

6.       OEM [Электрон. ресурс]. – http://www.mediascan.by/index.files/CD_Ada-2009_OEM.zip ).

7.       GNATCOM [Электрон. ресурс]. http://www.gnavi.org

8.       Гавва А. Е. “Адское” программирование. Ada-95. Компилятор GNAT: [Электрон. ресурс]. – http://www.ada-ru.org.

 

 

Киркоров Сергей Иванович – вед.специалист УП МедиаСкан, г. Минск, РБ.

Научные интересы:

‑ информационные технологии в образовании, компьютерное моделирование;

‑ .безопасность информационных систем и технологий.