Previous Page  12 / 16 Next Page
Information
Show Menu
Previous Page 12 / 16 Next Page
Page Background

И.В. Рудаков, Р.Е. Гурин

60

ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. Приборостроение. 2016. № 4

Инструмент PAGAI для преобразования программы на языке Си в

SMT-формулу также использует возможности LLVM, но в отличие от LLBMC

преобразование осуществляет в байт-код, затем осуществляется апробирование

программы в виде байт-кода в программу на языке SMT–LIB.

В отличие от инструмента LLBMC, который обладает встроенными провер-

ками кода, PAGAI имеет значительно меньшие функциональные возможности.

Все проверки осуществляются с помощью пользовательских инструкций assert

и assume. Пользователь добавляет в исходный код программы инструкции вида

assert

(

x

> 10) для проверки интересующего его свойства, далее в автоматиче-

ском режиме происходит проверка заданного пользователем свойства. В ре-

зультате пользователь получает информацию о выполнимости свойства, в слу-

чае успешного выполнения

/*assertproved*/

или

/*assertnotproved*/

, в случае, если

свойство не удается доказать.

Приведенные инструменты осуществляют исключительно статический

анализ кода, в свою очередь, с помощью приведенного метода можно выпол-

нить динамический анализ кода, проверку моделей с помощью SMT-решателей,

а также осуществить анализ графа потока управления программы.

Предложенный метод построения контрпримеров можно применить не

только к самим инструкциям программного кода, но и к состояниям програм-

мы, тем самым можно осуществить проверку выполнимости и достижимости

состояний программы. Под состоянием программы следует понимать блок, ко-

торый объединяет несколько программных инструкций.

Существует большое число методов динамического анализа [14]. Одним из

методов является проверка поведения программы в зависимости от данных,

которые подаются на ее вход.

С помощью предложенного алгоритма можно накладывать проверки и огра-

ничения на генерируемый поток данных для проверки поведения программы.

Предложенный и существующие алгоритмы покрывают все классы опера-

торов языка Си.

В табл. 4. приведено сравнение синтетического метода с существующими

алгоритмами. Главным преимуществом предлагаемого метода перед существу-

ющими является возможность осуществлять не только статический анализ, но

и динамический, а также проверку моделей. Это позволяет значительно повы-

сить точность по сравнению с ныне существующими методами.

Таблица 4

Сравнение существующих методов

Заданные свойства ПО

Алгоритмы

Синтетический

метод

LLBMC

PAGAI

Использование LLVMIR

+

+

SMT-решатель

Boolector или STP

Microsoft Z3

Solver

Microsoft Z3 Solver

Автоматизация

+

+/–

+