Научная статья на тему 'Применение аппарата кубических покрытий для гарантированного обнаружения НДВ'

Применение аппарата кубических покрытий для гарантированного обнаружения НДВ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
82
41
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Ларионов Илья Андреевич

Рассматриваются графо-аналитические модели программ. Предлагается новый подход к верификации программ на основе алгебро-топологических свойств кубических покрытий, построенных по графоаналитическим моделям.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Ларионов Илья Андреевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Применение аппарата кубических покрытий для гарантированного обнаружения НДВ»

ПРИМЕНЕНИЕ АППАРАТА КУБИЧЕСКИХ ПОКРЫТИИ ДЛЯ ГАРАНТИРОВАННОГО ОБНАРУЖЕНИЯ НДВ

И.А. Ларионов Научный руководитель - д.т.н., профессор Л.Г. Осовецкий

Рассматриваются графо-аналитические модели программ. Предлагается новый подход к верификации программ на основе алгебро-топологических свойств кубических покрытий, построенных по графоаналитическим моделям.

Введение

В настоящее время для повышения эффективности делопроизводства в государственных учреждениях, качественной организации бизнес-процессов предприятий и обеспечения их конкурентоспособности на рынке требуется все более интенсивное внедрение и использование узкоспециализированного программного обеспечения. Соответственно, возрастают и требования к качеству программных изделий, что заставляет производителей уделять большое внимание как технологическому процессу разработки, так и вопросам тестирования и верификации своих продуктов. Поэтому эффективный анализ программ на предмет соответствия спецификации, отсутствия недекларированных возможностей (НДВ), является актуальной проблемой.

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

Метод

Проектирование программного продукта можно представить в виде некоторого технологического процесса, состоящего в переходе от технического задания к системе программ или, в частном случае, к одной программе (Р), реализуемых в заданной вычислительной среде. Так как все команды конкретного процессора делятся на две категории - команды обработки данных (обработка десятичных знаков, сдвиги, пересылки, арифметические команды) и команды, регулирующие последовательность управления (вызовы процедур, команды возврата, условные и безусловные переходы), - то программа Р, в свою очередь, может быть представлена в виде булева графа БО(Р), который содержит линейные и условные вершины. Линейная вершина содержит одну точку входа и одну точку выхода, в ней происходит вычисление некоторой переменной на безальтернативной основе, которое впоследствии реализуется в виде последовательности операторов (машинных операций в исполнительных командах). Условная вершина имеет одну точку входа и две точки выхода, задающие адреса ветвления в зависимости от выполнения или невыполнения условия, задаваемого в вершине. Каждый возможный путь I выполнения программы Р соответствует некоторому пути на графе БО(Р), соединяющему начальную и конечную вершины [1].

Пример. В качестве примера рассмотрим булев граф программы, реализующей некоторую простую интервальную формулу. Пусть задана интервальная формула

\LFR1, при х < к1 или х > к2;

г = \

\LFR2, при к1 < х < к2.

Переменная г вычисляется по линейным формулам LFRJ и LFR2 в зависимости от значений переменной х, диапазон значений которой разбит на три интервала константами к1 и к2.

Видно, что условия вычисления г по формуле LFR1 или LFR2 заданы в избыточной форме, и с учетом перестановок существует восемь вариантов их последовательного вычисления. Поэтому существует и несколько различных программных реализаций. Закодируем условия: х < k1 как a, х > k1 как а , х > k2 как Ь , х < k2 как Ь . На рисунке приведен булев граф одной из реализаций.

Рисунок. Булев граф одной из реализаций интервальной формулы

Итак, для программы P в машинных кодах, закодировав условия-предикаты булевыми переменными, можно построить её булев граф BG(P). Каждый путь l на графе BG(P) можно задать логическими переменными, которые описывают условия его прохождения и принимают значения 1 или 0 в зависимости от истинности или ложности выражений в условных вершинах. Таким образом, можно построить кубическое покрытие C(P)=[cj, C2,...,cm}, где каждый куб Cj представляет собой набор условий, определяющих путь lj на графе BG(P). Координаты куба Cj могут принимать значения 0, 1 или x, где 0 соответствует значению False (невыполнению условия), 1 - значению True (выполнению условия), а x - неопределенному значению, т.е. неопределенному условию, которое может быть произвольно доопределено как в 0, так и в 1.

Покрытия C(P) и кубы Cj соответствуют определению покрытий в исчислении кубических комплексов, поэтому к ним применимы алгебро-топологические операции пересечения (П), вычитания (#) и звездчатого произведения (*) [2].

Операция # вычитания двух кубов a = (a1, a2,..., an) и b = (b1, b2,..., bn) осуществляется по следующим правилам:

a # b =

0, если а{ # bi = z для всех /;

а, если а{ # Ь = у для хотя бы одного ^

U (a1, a2,..., ai-1, p, ai+1,..., an) длявсех i таких, что ai # bt = p, p e {0,l}.

Здесь г и у - вспомогательные величины, определяемые из таблицы значений опе-

0 1 X

0 г у г

1 у г г

X 1 0 г

Таблица. Значения операции # на элементах кубов

Например, для рассмотренной нами ранее реализации Р интервальной формулы (см. пример 1) кубическое покрытие С(Р) имеет следующий вид: 'а Ь г л 1 х

С (Р) = .

0 1 ЬРЯ1

к 0 0

С помощью операции # можно определить эквивалентность покрытий С(Р1) и С(Р2), а, следовательно, и программ Р1 и Р2 между собой. Более подробно, если для программ Р1 и Р2, имеющих одну и ту же спецификацию, верны равенства

С(Р1) # С(Р2) = 0 и С(Р2) # С(Р1) = 0,

то покрытия признаются эквивалентными, а программы - реализующими одно и то же, т.е. верифицированными относительно друг друга. Если же хотя бы одно из этих равенств неверно, то у программ есть участки, где они функционируют по-разному [3].

Заключение

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

Литература

1. Зыков А.Г., Немолочнов О.Ф., Поляков В.И., Сидоров А.В. Структурирование программ и вычислительных процессов на множество линейных и условных вершин // Научно-технический вестник СПбГИТМО (ТУ). - 2005. - Выпуск 19. Программирование, управление и информационные технологии / Гл. ред. В.Н. Васильев. - С. 207-212.

2. Немолочнов О.Ф., Зыков А.Г., Поляков В.И. Кубические покрытия логических условий вычислительных процессов и программ // Научно-технический вестник СПбГИТМО (ТУ). - 2004. - Выпуск 14. Информационные технологии, вычислительные и управляющие системы / Гл. ред. В.Н. Васильев. - С. 225-233.

3. Лаздин А.В., Немолочнов О.Ф. Метод построения графа функциональной программы для решения задач верификации и тестирования // Научно-технический вестник СПбГИТМО (ТУ). - 2002. - Выпуск 6. Информационные, вычислительные и управляющие системы / Гл. ред. В.Н. Васильев. - С. 109-111.

i Надоели баннеры? Вы всегда можете отключить рекламу.