![]() |
ИСТИНА |
Войти в систему Регистрация |
ФНКЦ РР |
||
Цель настоящего исследования — разработка алгоритмов проверки правильности поведения программ и построение на основе этих алгоритмов системы автоматической верификации распределенных программ, записанных на языке программирования высокого уровня. По результатам анализа существующих моделей цель работы была уточнена следующим образом: 1. Способ представления формальных требований. В качестве формализма для представления требований выбран язык темпоральной логики. Выбор определялся несколькими причинами. Во-первых, логика — это формальный язык, с помощью которого можно записывать свойства поведения программ [123]. Во-вторых, этот язык близок к естественному языку, что облегчает описание спецификаций. Помимо этого, язык обладает декларативной семантикой [123], что позволяет описывать свойства поведения программ, не обращаясь непосредственно к механизму порождения вычислений программы. 2. Метод проверки. В качестве метода проверки выбран метод проверки на модели (Model checking, [47]). Этот метод может использовать логику как язык для спецификации свойств программ. Преимущества метода в том, что возможна полностью автоматическая проверка правильности свойств программ на основе высокоэффективных алгоритмов проверки. 3. Способ представления программ в процессе верификации. Для верификации программ методом проверки на модели используется не сама программа, а ее модель, сохраняющая свойства поведения программы. Такая модель обычно оказывается значительно проще исходной программы, что существенно повышает эффективность самой проверки. На основании предложенных уточнений в рамках данной работы ставятся следующие задачи: • разработать алгоритмы верификации программ методом проверки на модели; • предложить методы построения абстрактной модели распределенной программы, записанной на языке программирования высокого уровня; • реализовать систему формальной верификации распределенных программ. Основные результаты Основные результаты, полученные при решении поставленной задачи, таковы. 1. Разработаны алгоритмы проверки выполнимости формул темпоральной логики CTL на моделях распределенных программ. Доказана корректность этих алгоритмов. Показано, что их вычислительная сложность соответствует минимально достижимым теоретическим оценкам. 2. Разработан язык MDL для внутреннего представления моделей распределенных программ. Построен алгоритм трансляции описаний распределенных программ на языке программирования высокого уровня в описания моделей программ на языке MDL. Корректность предложенного алгоритма доказана. 3. На основе полученных теоретических результатов разработано инструментальное средство верификации распределенных программ, включающее: • язык внутреннего представления модели; • транслятор описаний распределенных программ в формальное описание моделей программ; • процедуры символьной и графовой проверки CTL спецификаций на моделях распределенных программ; • процедуры извлечения контрпримеров и их отображения в описания распределенных программ.