Введение к работе
Актуальность темы
По данным порталов и , в настоящее время насчитывается более 500 дистрибутивов операционной системы Linux, основанных на ядре Linux, библиотеках и инструментарии проекта GNU. Несмотря на близость этих систем, обеспечение переносимости приложений между ними во многих случаях требует серьезных трудозатрат — различные системы могут использовать различные версии базовых компонентов, а многие производители дистрибутивов вносят в эти компоненты модификации, отражающие специфику конкретной системы. Как результат, функциональность, предоставляемая одним и тем же компонентом в разных дистрибутивах, может существенно различаться.
Многие разработчики программного обеспечения не считают экономически целесообразной проверку приложений на совместимость с каждым дистрибутивом, и ограничиваются поддержкой наиболее популярных систем (как правило, от 2 до 10). По этой причине, несмотря на богатый выбор, пользователи зачастую ограничены теми дистрибутивами, которые поддерживаются необходимыми им приложениями.
Одним из основных подходов к обеспечению переносимости является стандартизация — определение набора свойств, которыми должна обладать любая платформа, где может быть запущено приложение. Одним из важнейших типов свойств, определяемых стандартами в области разработки ПО, является интерфейс взаимодействия операционной системы с приложениями. Основным, хотя и не единственным видом такого взаимодействия, является программный интерфейс, включающий набор функций (как правило, сгруппированных в библиотеки), предоставляемых системой и доступных выполняемым в ней программам. Соответственно, основные усилия в области стандартизации интерфейса взаимодействия ОС с приложениями направлены на стандартизацию программного интерфейса. Наиболее известными стандартами на интерфейсы ОС являются POSIX и LSB (Linux Standard Base). LSB более молодой стандарт, но он уже охватывает практически в 20 раз больше интерфейсов, чем POSIX.
Качественная поддержка процедуры переноса приложений требует рассмотрения широкого спектра интерфейсных сущностей. Помимо непосредственно библиотечных функций, необходимы описания заголовочных файлов, типов данных, вспомогательных констант и макроопределений. Часть этих сущностей отражает специфику конкретных языков программирования и их стандартизация требует исследования особенностей как самих языков, так и соответствующих систем трансляции. Используемые в Linux компиляторы GCC поддерживают целый ряд языков, для которых осуществляется сборка бинарных файлов в формате ELF; помимо этого, в приложениях Linux активно используются несколько десятков интерпретируемых языков.
Кроме значительного числа разнообразных видов интерфейсных сущностей, трудности возникают в связи с большим количеством сущностей каждого вида. Например, современные дистрибутивы Linux предоставляют до нескольких тысяч библиотек и сотен тысяч функций. Большинство приложений используют от нескольких десятков до нескольких тысяч функций. Количество приложений велико. Порталы и , например, содержат более десяти тысяч программ для ОС Linux. В процессе стандартизации важно оценить реальные потребности приложений и возможности существующих систем, чтобы включать в стандарт с одной стороны, наиболее востребованные приложениями интерфейсы, с другой — интерфейсы, поддерживаемые большим количеством различных дистрибутивов. Подобный подход используется, в частности, при разработке POSIX и LSB. По причине большого количества интерфейсов во множестве программных средств на основе ОС Linux (далее для краткости — экосистеме Linux), необходимы средства автоматизации подобного анализа.
Кроме упомянутой автоматизации, нецелесообразно разрабатывать стандарты «с нуля». А именно, необходимо опираться на уже существующие спецификации. Документация различного характера доступна для многих библиотек и функций Linux, однако она сильно разрознена и при разработке стандарта необходимы средства для ее консолидации и унификации. Важным аспектом является формирование профилей — объединений стандартов либо их подмножеств, охватывающих определенный класс систем. При выделении подмножеств стандартов, равно как и при их объединении, встает задача
обеспечения непротиворечивости и согласованности получаемого профиля. При больших объемах данных, обеспечение согласованности также требует автоматизации.
Таким образом, актуальной задачей является разработка методов автоматизированной поддержки процессов разработки, развития и использования интерфейсных стандартов ОС Linux, которые помогут решать задачи формирования текста стандарта и различных сопутствующих программно-информационных продуктов, автоматизировать сбор и анализ данных об экосистеме Linux и поддерживать процесс принятия решений о развитии стандарта.
Цель и задачи работы
Основной целью данной работы является исследование и разработка методов автоматизированной поддержки развития и использования стандартов на интерфейсы ОС Linux, обеспечивающих возможность создания приложений, переносимых между различными дистрибутивами Linux. Для достижения этой цели были поставлены следующие задачи.
Исследовать многообразие видов интерфейсов приложений с ОС Linux и построить логическую модель системы интерфейсов.
Разработать архитектуру информационно-аналитической системы, предназначенной для поддержки процессов создания, развития и использования стандартов на интерфейсы ОС Linux, обеспечивающую:
a. возможность адаптации информационной системы к
изменениям модели системы интерфейсов;
b. масштабируемость информационной системы, необходимую
для хранения и обработки данных о постоянно увеличивающемся
количестве приложений и дистрибутивов ОС Linux.
3. Разработать информационно-аналитическую систему,
обеспечивающую:
a. поддержку создания и сопровождения среды разработки
приложений, отвечающих требованиям стандарта;
b. поддержку принятия решений в процессе стандартизации на
основе анализа существующих реализаций;
c. возможность создания профилей стандартов.
4. Провести апробацию предложенного подхода на современных интерфейсных стандартах операционных систем.
Научная новизна
Научной новизной характеризуются следующие результаты работы:
Логическая модель системы интерфейсов приложений с ОС Linux.
Новый метод разработки интерфейсных стандартов программных систем в ОС Linux, основанный на использовании единой информационно-аналитической системы для создания, развития и использования стандарта и его окружения.
Новый метод построения системы поддержки принятия решений в процессе разработки интерфейсных стандартов, базирующийся на анализе интерфейсов, присутствующих в экосистеме Linux.
Практическая значимость
Предложенный в работе подход к анализу существующих дистрибутивов и приложений Linux, основанный на использовании логической модели интерфейсов приложений с ОС, совместно с разработанными инструментальными средствами использован создателями стандарта LSB для эффективного анализа существующих систем и выявления наиболее востребованных интерфейсов, являющихся первоочередными кандидатами на стандартизацию.
Предложенная архитектура информационно-аналитической системы может быть положена в основу систем, направленных на поддержку процессов создания, развития и применения стандартов на интерфейсы и других операционных систем.
Разработанные методы были успешно использованы при построении информационно-аналитической системы стандарта Linux Standard Base (LSB) в рамках совместного проекта ИСП РАН и консорциума Linux Foundation по развитию инфраструктуры LSB, стартовавшего в 2006 г. В 2009 г., также совместно с Linux Foundation, была построена информационно-аналитическая система для профиля стандарта мобильных устройств на базе платформы Moblin (Moblin Compliance Specification).
Апробация и публикации
Результаты работы докладывались на семинаре Института проблем информационной безопасности в 2010 году, на 51й Научной конференции МФТИ в 2008 году, на IX Международной научно-технической конференции "Кибернетика и высокие технологии XXI века" (Воронеж) в 2008 году, на семинарах ИСП РАН в 2009-2010 гг., на конференциях SYRCoSE в 2007-2009 гг., на конференциях разработчиков свободных программ на Протве (Обнинск) в 2007-2009 гг., на конференции OpenCert (Милан, Италия) в 2008 году.
По теме диссертации автором опубликовано 15 работ (из них 2 в изданиях по перечню ВАК), список которых приведен в конце автореферата.
Структура и объем диссертации