Например, Бобцов

КРОССПЛАТФОРМЕННЫЙ ИНСТРУМЕНТАРИЙ РАЗРАБОТКИ ПРОГРАММНЫХ ПРОДУКТОВ

КРАТКИЕ СООБЩЕНИЯ

УДК 004.428

КРОССПЛАТФОРМЕННЫЙ ИНСТРУМЕНТАРИЙ РАЗРАБОТКИ ПРОГРАММНЫХ ПРОДУКТОВ Э.Э. Ошурок, К.В. Ежова

Предложена реализация кроссплатформенного инструментария, предназначенного для разработки программных продуктов на языках программирования семейства C/C++ под настольные и мобильные платформы различного назначения. Особенностью инструментария является возможность переносить программы между платформами без изменения исходного кода. Рассмотрена структура инструментария, раскрыт обобщенный алгоритм реализации переносимости приложений при сохранении высокой производительности. Приведены возможные направления дальнейшего использования инструментария. Ключевые слова: кроссплатформенность, переносимость, платформа, кросс-компилятор, инструментарий разработки.

На сегодняшний день многие пользователи переходят на мобильные платформы из-за их популярности и удобства использования. По этой причине разработчикам программного обеспечения приходится создавать все новые программы. При этом используются существующие средства разработки, которые не всегда позволяют написать код, переносимый на различные платформы без потерь производительности и скорости работы. В последнее время широко используются так называемые кросс-компиляторы, способные производить на одной и той же платформе код для отличных от нее платформ. Предварительная сборка такого кросс-компилятора требует больших затрат времени и ресурсов, а работа с ним не гарантирует абсолютно успешного результата, так как готовое программное обеспечение может нуждаться в изменениях [1].
Если не акцентировать внимание именно на платформах для мобильных устройств, то и для настольных рабочих станций широчайший круг разрабатываемых продуктов создается строго под определенные операционные системы, ввиду чего пользователю приходится иногда отказываться от привычного ему рабочего окружения ради программного продукта, который ему необходим на данный момент для решения конкретной задачи.
В настоящее время существуют такие средства разработки программ, как язык Java, с помощью которого возможно создать программный продукт, переносимый между платформами без необходимых дополнительных изменений исходного кода. Однако программы, реализованные на языке Java, требуют довольно много ресурсов для своей работы [2].
С появлением кроссплатформенного инструментария Qt стало возможным создавать переносимые программные продукты на языках семейства C/C++, Java или Python [3]. Основным недостатком использования Qt является размер готового программного продукта, что в ряде случаев неприемлемо. Кроме того, программы, разработанные с использованием перечисленных языков программирования, не всегда могут работать под управлением более ранних версий операционных систем.
Проведя анализ предложенных решений для создания кроссплатформенных приложений, можно предложить два основных варианта: 1. создание программных продуктов на языке Java с уменьшением производительности работы; 2. создание программ с использованием инструментария Qt в связке с языками Java или C/C++.
Второй вариант в настоящее время является более предпочтительным. Альтернативой использования уже ставших стандартными методов решения рассматриваемой проблемы может стать создание специализированного прикладного интерфейса программирования, используя который в дальнейшем, можно будет создавать программные продукты, переносимые между различными мобильными платформами без потерь производительности, дополнительных изменений кода и увеличения размера. Кроме этого, такие программы могли бы функционировать и на платформах для настольных компьютеров [4]. Разрабатываемый проект, в первую очередь, представляет собой необходимый инструментарий, который позволит создавать кроссплатформенные программные продукты различного назначения и может широко применяться в различных областях науки, где используются и разрабатываются программ-

Научно-технический вестник информационных технологий, механики и оптики, 2012, № 4 (80)

153

КРАТКИЕ СООБЩЕНИЯ
ные продукты для математического моделирования реальных физических процессов, создаются наглядные модели и проводятся обработка и анализ различных результатов измерения. Такие программные продукты могут быть собраны для различных платформ, что снимает ограничения на использование различных операционных систем и привязку к технике определенной марки.
Главное отличие разрабатываемого проекта от проанализированных продуктов состоит в том, что полученные с его помощью программные продукты имеют меньший размер, могут работать также на более ранних версиях операционных систем и, таким образом, минимально зависят от функций платформы, под которой они работают.
Инструментарий работает со встроенными типами определения данных языков семейства С/С++, для использования функций из инструментария их достаточно вызвать в коде будущей программы. В инструментарии отсутствуют функции, которые можно реализовать и без него. Инструментарий представляет собой базовую систему, с использованием которой реализованы различные дополнения, в частности, и для решения узкоспециализированных задач. Общая структура инструментария представлена в виде модульной схемы на рис. 1.

Рис. 1. Общая структура инструментария
Инструментарий представляет собой несколько модулей, каждый из которых выполняет отдельную задачу. Например, модуль работы с графикой позволяет взаимодействовать с графической подсистемой. Таким образом, можно создавать программы, визуализирующие какие-либо физические явления или обработку изображения. Реализация возможности работы с трехмерной графикой также является важным звеном проекта.
Модуль работы со звуком позволяет, используя возможности звуковой подсистемы, генерировать звук, что может быть использовано в программах синтеза речи. Для передачи данных между устройствами ввода/вывода предусмотрен отдельный модуль. Отдельно реализовано событийное программирование, используя которое программа может реагировать на изменения состояния оборудования.
На рис. 2 более подробно представлен модуль работы с графикой. Модуль делится на несколько узкоспециализированных частей, каждая из которых отвечает за реализацию графического интерфейса пользователя, моделирование оптических объектов, таких как линзы, призмы, зеркала. Имеется модуль для обработки изображений и реализации трехмерной графики.

Рис. 2. Структура модуля работы с графикой
Таким образом, для написания узкоспециализированной программы, работающей, например, с обработкой изображения, необходимо воспользоваться только одним модулем, не прибегая к тем инструментам, которые в данном случае не нужны.
Для того чтобы программные продукты, созданные с использованием разработанного инструментария, были переносимы, реализовано несколько версий, каждая из которых создавалась для определенной платформы. Такой подход дает хорошие результаты с точки зрения производительности за счет того, что каждая версия инструментария для реализации тех или иных возможностей использует встроенные функции самой платформ.
Авторы считают, что использование предлагаемой разработки позволит создавать программное обеспечение, работающее на различных платформах с минимальными требованиями и с высокой произ-

154

Научно-технический вестник информационных технологий, механики и оптики, 2012, № 4 (80)

КРАТКИЕ СООБЩЕНИЯ
водительностью. Проект может быть использован при создании библиотеки, предназначенной для визуализации элементов оптических систем различного назначения. Такие элементы могут использоваться для создания на их базе конечных программных продуктов, моделирующих оптические системы.
Результаты работы представлены на международном конкурсе студенческих инновационных проектов ITФон и получили высокую оценку жюри в номинации «Лучший проект в области информационно-коммуникационных технологий».
1. Гриффитс А. GCC. Настольная книга пользователей, программистов и системных администраторов. – Киев: «ТИД ДС». – 2004. – 624 с.
2. Ноутон П., Шилдт Г. Java 2. Полный справочник. – Спб: БХВ-Петербург, 2008. – 1102 с. 3. Бланшет Ж., Саммерфилд М. Qt 4. Программирование GUI на С++. – М: – Кудиц-Пресс, 2007. – 641 с. 4. Ахо А., Лам М., Сети Р., Ульман Д. Компиляторы: принципы, технологии и инструментарий. – 2-е
изд. – Киев: «ИД-Вильямс», 2011. – 1184 с.
Ошурок Эдуард Эдуардович – Санкт-Петербургский национальный исследовательский университет информацион-
ных технологий, механики и оптики, студент, creddy@inbox.ru Ежова Ксения Викторовна – Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики, кандидат технических наук, доцент, EzhovaKV@aco.ifmo.ru

Научно-технический вестник информационных технологий, механики и оптики, 2012, № 4 (80)

155