Сборники трудов ИСП РАН


Предисловие.

В.П. Иванников, В.В. Кулямин.

Аннотация

Предлагаемый вниманию читателей том трудов Института системного программирования РАН посвящен проекту Центра верификации операционной системы Linux, созданного на базе нашего института, по разработке тестового набора для проверки соответствия стандарту Linux Standard Base. Тестовый набор строится на базе формальных спецификаций требований стандарта и призван обеспечить как аккуратное прослеживание обнаруживаемых нарушений к нарушаемым ими требованиям, так и удобное сопровождение тестов, их конфигурирование, внесение модификаций в результате изменения каких-то требований и перенацеливание тестов на работу на другой платформе.

Этот проект финансируется Федеральным агентством по науке и инновациям Министерства образования и науки Российской Федерации и имеет две основные цели. Одна цель, вполне технологическая, — это повышение совместимости и надежности работы систем на базе различных версий Linux. Вторая цель носит более просветительский характер — это популяризация передовых технологий разработки программного обеспечения (ПО) и контроля его качества в сообществе разработчиков программ с открытым исходным кодом, повышение общего уровня качества открытых разработок за счет внедрения новых методов построения сложных программных систем.

В проекте участвуют не только опытные исследователи ИСП РАН, многие из которых сами являются создателями передовых методов разработки ПО, но и студенты и аспиранты ведущих российских ВУЗов, выпускающих специалистов в области программной инженерии. Таким образом, просветительские и образовательные аспекты проекта находят свое воплощение и в подготовке будущих экспертов, обладающих как широкими знаниями, так и практическими навыками использования этих передовых методик при работе в реальных, достаточно больших проектах.

Несмотря на большой объем работ — один только текст стандарта Linux Standard Base и других стандартов, на которые он ссылается: POSIX, XOpen/Curses, System V Interface Definition, международный стандарт языка C, и пр., занимает около 6000 страниц — проект успешно движется к завершению в конце 2006 года. С его текущими результатами можно ознакомиться на сайте Центра верификации Linux, http://www.linuxtesting.ru. Данный сборник содержит статьи участников этого проекта, содержащие, в основном, результаты исследований, проводимых в его рамках или по поводу тех или иных задач, возникающих в ходе выполнения его работ. Первые три статьи, однако, носят скорее информативный, а не исследовательский характер, и повествуют о проблемах совместимости в мире Linux-систем и попытках Linux-сообщества прийти к единым стандартам на интерфейс взаимодействия между операционной системой и приложениями, что и делает проводимый в ИСП РАН проект актуальным.

Первая статья В. П. Иванникова и А. К. Петренко «Задачи верификации ОС Linux в контексте ее использования в государственном секторе» посвящена применению Linux в государственных организациях и связанным с этим выгодам и проблемам. Для многих областей, в которых используется Linux в этом контексте, важны как ее надежность, так и возможность надежного развития систем, построенных на базе этой операционной системы. И то, и другое требует выхода технологий разработки, используемых при создании открытого кода, на более высокий уровень — они должны обогатиться эффективными техниками отслеживания качества создаваемого кода, для чего отлаженные и легко конфигурируемые тестовые наборы являются необходимой основой.

Работа А. Гриневича, Д. Марковцева и В. Рубанова «Проблемы совместимости Linux-систем» рассказывает о разнообразии современных дистрибутивов этой операционной системы, порождающей те же проблемы несовместимости и непереносимости приложений, которые два десятилетия назад привели производителей Unix-систем к осознанию необходимости их стандартизации и к появлению стандарта POSIX. По тем же самым причинам в настоящее время разработчики Linux-приложений пытаются создать такой же единый стандарт уже не только на программные интерфейсы, а и на бинарные, к тому же охватывающий гораздо более широкое множество функций — Linux Standard Base.

Следующая статья «Linux Standard Base: история успеха?» А. Хорошилова посвящена предпосылкам и истории появления стандарта Linux Standard Base, его текущему состоянию и расширениям, которые предполагается внести в следующие версии этого стандарта. Разработчикам приложений под Linux и системным программистам скорее всего будет интересно ознакомиться с планами развития одного из наиболее активно развивающихся стандартов в области открытого ПО, пользующегося широкой поддержкой индустрии.

В статье А. Гриневича, В. Кулямина, Д. Марковцева, А. Петренко, В. Рубанова и А. Хорошилова «Использование формальных методов для обеспечения соблюдения программных стандартов» рассказывается об организации процесса разработки тестов на основе формальных спецификаций, используемом в ходе описанного выше проекта. Важную роль в успехе проекта такого масштаба играет адекватная поддержка решения инженерных и организационных задач, возникающих в его ходе. Авторы показывают, что подходящая техника разработки тестов должна не только давать в результате тесты хорошего качества, но и обеспечивать правильное разбиение результатов на модули, поддерживать наглядные связи получаемых тестов с исходными требованиями стандарта, способствовать решению задач управления конфигурациями полученного тестового набора. Статья демонстрирует подходы к решению всех этих проблем, используемые при создании тестового набора для стандарта Linux Standard Base.

Работа В. Кулямина «Формальные подходы к тестированию математических функций» представляет методики формирования строгих требований и выбора тестовых данных для аккуратного тестирования реализаций математических функций, работающих с числами с плавающей точкой. Рассматриваются проблемы, с которыми сталкиваются разработчики библиотек математических функций и определяются методы систематической проверки корректности таких библиотек. Представленные в статье техники используются для создания тестов на соответствие Linux Standard Base, поскольку в этом стандарте (а точнее, в стандартах на библиотеки языка C и POSIX, на которые он ссылается) определяется около 250 функций, реализующих известные математические функции для чисел различной точности.

Другая статья сборника, посвященная математическим функциям, — работа «Разработка модельной реализации функций Бесселя из стандарта LSB» студента III-го курса МФТИ А. Пономаренко — продолжает тему предыдущей. В этой работе рассматриваются методы вычисления функций Бесселя и строится их комбинация, достаточно эффективная и точная для всех значений параметров. Корректное вычисление таких функций необходимо, чтобы проверять правильность работы соответствующих библиотечных функций операционной системы Linux.

Следующая статья «Тестирование в условиях неполной информации. Подход к разработке спецификаций и генерации тестов» А. Камкина предлагает технику тестирования систем, многие важные параметры работы которых или внутренние состояния неизвестны. Эта техника использует трехзначную логику для представления неопределенных вещей и основана на постепенном выяснении недостающей информации в ходе самого тестирования за счет наблюдения за поведением системы. Поначалу такой тест почти не может обнаружить никаких ошибок, поскольку полагает практически любые результаты работы системы корректными. Но на основании получаемых в ходе работы результатов он определяет какие-то параметры, необходимые для выполнения более строгих проверок, и через некоторое время уже не отличается по возможности нахождения ошибок от более традиционных тестов, которые заранее знают, что является корректным результатом, а что — нет.

Последняя в сборнике статья А. Арутюняна «Сравнение эффективности обходчиков UniTESK» рассказывает о результатах практического использования различных алгоритмов обхода графов для автоматической генерации тестов. На основе экспериментальных данных в ней проводится сравнение эффективности двух алгоритмов, реализованных в рамках инструмента разработки тестов CTesK, и даются рекомендации по использованию этих алгоритмов при тестировании достаточно сложных систем или тестировании в условиях ограниченных ресурсов.

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

Издание

Труды Института системного программирования РАН, том 10, 2006, стр. 5-8.

ISSN 2220-6426 (Online), ISSN 2079-8156 (Print).

Полный текст статьи в формате pdf Вернуться к содержанию тома