Методы верификации моделей автоматных программ

ВЕРИФИКАЦИЯ АВТОМАТНЫХ ПРОГРАММ

УДК 004.4'242

МЕТОДЫ ВЕРИФИКАЦИИ МОДЕЛЕЙ АВТОМАТНЫХ

ПРОГРАММ С.Э. Вельдер, А.А. Шалыто

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

Ключевые слова: верификация программ, верификация на моделях, автоматное программирование

4

Введение

В настоящей работе рассматриваются вопросы верификации на моделях (Model checking) применительно к автоматным программам. В их контексте исследуется специфика структуры (модели) Крипке для автоматных программ. Причина, по которой этим вопросам уделяется внимание, заключается в преимуществах автоматных программ перед остальными в смысле верификации. Действительно, алгоритмы верификации автоматных программ могут оперировать с моделью Крипке, заданной в явном виде. В работе выделены ключевые этапы верификации автоматных программ: преобразование автоматной модели в модель Крипке и построение требований к модели; собственно процесс верификации (отработки алгоритмов на полученных моделях); построение подтверждающих трасс (контрпримеров) в модели Крипке, а также представление контрпримеров, записанных в терминах модели Крипке, в виде путей в исходной автоматной модели. Предполагается, что собственно алгоритм верификации и построения контрпримеров в модели Крипке заранее выбран (такие алгоритмы изложены, например, в работах [1-5]).

Построение модели Крипке по автоматной модели

Рассмотрим несколько методов генерации множества атомарных предложений модели Крипке, соответствующей автоматной программе, и преобразования автомата с булевыми входными переменными в эту модель. Для каждого метода приводится пример записи требований к программе. Требования выражаются на языке темпоральной логики CTL.

Моделью Крипке (также CTL-моделью) для данного множества атомарных предложений AP будем считать тройку M = (S, R, Label), где:

• S - непустое множество состояний (позиций);

• ^ ^ S х S - тотальное отношение на S, называемое отношением переходов. Свой-

~ , ~ Vs е S 3s'e S | (s,s')e^

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

Это отношение сопоставляет каждому состоянию непустое множество

его состояний-последователей;

• Label ^ S х AP - помечающее отношение, которое сопоставляет каждому состоянию s е S множество атомарных предложений, истинных в s.

Иногда можно потребовать, чтобы в модели Крипке было задано непустое множество начальных состояний £0 ^ £ или даже одно начальное состояние ^ о е £.

Кратко опишем особенности методов преобразования автомата в модель Крипке.

Метод атомарных переходов требует «стереть» у автомата все события и переменные и оставить только состояния. Этот метод позволяет проверять не очень много свойств, но для простых свойств он достаточно эффективен. Он не требует преобразования контрпримера из модели Крипке в автомат, так как на переходах нет промежуточных состояний (в отличие от всех остальных методов).

Метод установки состояний на событиях и выходных воздействиях требует стереть у автомата только входные воздействия. Каждый переход разбивается на блоки, соответствующие событиям и выходным воздействиям, которые расположены друг за другом. Данный метод позволяет упоминать события и выходные воздействия в формулах темпоральной логики.

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

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

Для удобства и эффективности в последних трех методах каждое состояние модели Крипке помечено одним из трех «управляющих» атомарных предложений: InState, 1пЕ\еЫ, ЫЛеИоп - для состояний модели, построенных, соответственно, из состояний, событий, выходных воздействий исходного автомата. Это сделано для того, чтобы при записи формулы в темпоральной логике можно было различать тип исследуемого состояния.

Во всех методах множество стартовых состояний модели Крипке состоит из одного элемента - стартового состояния исходного автомата. Существуют и альтернативные способы получения модели Крипке, например, методы дублирования состояний [6-9].

Методы конвертации автомата в модель Крипке и формулировки проверяемых свойств демонстрируются на трех примерах.

1. Автомат АТг1д, эмулирующий работу ^-триггера (его граф переходов изображен на рис. 1).

2. Автомат АЯен^е, эмулирующий универсальный инфракрасный пульт для бытовой техники [10]. Его схема связей и граф переходов изображены, соответственно, на рис. 2 и 3. Этот автомат изображен в упрощенной форме. Чтобы строго задать его структуру, необходимо ребра, на которых записана логическая дизъюнкция, разбить на несколько ребер, каждое из которых дизъюнкции не содержит (эти ребра будут соответствовать операндам дизъюнкции на исходном ребре).

3. Автомат AElevator, управляющий дверьми лифта (рис. 4).

В рамках исследований по государственному контракту [11] разработанные методы демонстрировались на примере системы, эмулирующей работу банкомата [12].

Рис. 1. Граф переходов автомата ATrig

Рис. 2. Схема связей автомата ARemote

Во всех четырех методах вложенные автоматы считаются частями исходного. При построении модели Крипке это означает, что если в состояние s автомата A вложен автомат B, то все ребра модели Крипке, входящие в позицию, соответствующую состоянию s модели A, следует перенаправить в стартовое состояние модели B, а у всех ребер, исходящих из состояния s модели A, следует изменить начало на терминальную позицию модели B. Обратим внимание, что в различные состояния автомата A могут быть вложены различные «копии» одного и того же автомата B. В этом случае для каждой копии создается своя модель Крипке (все эти модели изоморфны друг другу), и перенаправление ребер выполняется для нее.

После построения модели Крипке для автоматной модели выполним следующие действия. Добавим во множество атомарных предложений AP имена всех автоматов системы (множество этих имен обозначим через Names). Далее для каждой позиции

полученной модели добавим в отношение Label пометку с атомарным предложением (элементом множества Names), соответствующим имени автомата, которому это состояние принадлежит. Эти действия предназначены для того, чтобы в формулах темпоральной логики можно было различать, какой именно из автоматов системы выполняется на данном участке пути.

0. Начальное состояние

2. Режим энергосбережения

Рис. 3. Граф переходов автомата ARemote

Нажатие кнопки «Открыть» Нажатие кнопки «Закрыть» Препятствие

Сообщение об успешном завершении Возникла ошибка

Механизм оповещения включен

Запуск открытия дверей Запуск закрытия дверей Звонок в аварийную службу

е5 & !х1 е5 & х1 / z3

е1 / z1

е4

Opened

еЗ / z1

е4

e2/z2

а

б

Рис. 4. Схема связей (а) и граф переходов (б) автомата AElevator Метод атомарных переходов

Множества атомарных предложений AP и состояний S в модели Крипке, построенной по данному методу, совпадают с множеством состояний исходного автомата, отношение переходов ^ совпадает с отношением переходов исходного автомата, а помечающее отношение Label является тождественным (Label = Id). Это означает, что каждое состояние помечено единственной переменной, которая заведена специаль-

но для него, а все метки на переходах «удаляются» (рис. 5). Общий размер такой модели линеен по отношению к размеру автомата.

-< II Y = 2 1

а б

Рис. 5. Переход между состояниями до преобразования

Модели Крипке, полученные по этому методу для автоматов АЯен^е и AEleva-"Ьог, изображены, соответственно, на рис. 6 и 7.

Рис. 6. Сокращенная модель без событий и входных воздействий для автомата АИеп^е

л ik

Closed

z--\

Closing

\_/

Opened

\_/

Рис. 7. Сокращенная модель без событий и входных воздействий для автомата AElevator

Приведем теперь примеры СТХ-формул, для которых верификация позволяет проверить выполнимость на модели.

Для автомата ARemote можно взять формулу —E[—(y=6) U (y=1)]. Она утверждает, что в состояние 1 нельзя попасть, минуя состояние 6 (нельзя попасть в рабочий режим, минуя сообщение на экране). Эта формула выполняется в состояниях 4, 5 и 6 модели Крипке и исходного автомата и только в них.

Для автомата AElevator проверим формулу AG(Closing ^ AX Closed), которая означает, что если дверь начала закрываться, то на следующем шаге она обязательно закроется. Эта формула неверна во всех состояниях модели и автомата. Например, последовательность состояний (Closing, Opening) является опровергающей (контрпримером) для этой формулы.

Особенностью данного метода является то, что комбинаторные свойства у модели не отличаются от таковых у исходного автомата. Следовательно, структура Крипке для композиции автоматов не отличается от композиции структур Крипке отдельных автоматов. Сведения о композиции структур Крипке также изложены в работе [13].

Метод установки состояний на событиях и выходных воздействиях

В данном методе множество атомарных предложений AP равно {Y1, Y2, ...} U {e1, e2, ...} U {z1, z2, ...} U {InState, InEvent, InAction}. На первом шаге положим множество S равным множеству состояний исходного автомата, и для каждого состояния s добавим в отношение Label две пометки: (s, s) и (s, InState).

После этого для каждого состояния s выполняем следующую операцию. Пусть s содержит выходные воздействия zs[1], ..., zs[n], которые выполняются при входе в s. Добавим в модель n состояний: {r1, . , rn} и n переходов: r1 —^ r2, ..., rn-1 —^ rn, rn — s, в отношение Label добавим пометки (rk, zs[k]), (rk, InAction) для всех к от 1 до n. Далее, при добавлении ребер в модель на следующих этапах, каждое ребро, идущее в s, будем перенаправлять в r1. Эту операцию назовем разделением выходных переменных и состояний. Она будет выполняться также в третьем и четвертом методе, описанным в следующих разделах.

Пример такого преобразования проиллюстрирован на рис. 8.

а

( \ г \

z1, InAction V z2, InAction

f ( \

zn, InAction Y, InState

 *

б

Рис. 8. Состояние с выходными воздействиями до преобразования

Далее для каждого ребра r исходного автомата с пометкой (ei & ... / zi[1], ..., zi[n]), ведущего из состояния p в состояние q, добавим в модель n + 1 состояние {re, r1, ..., rn}, n + 2 перехода: p — re, re — r1, r1 — r2, ..., rn-1 — rn, rn — q, а в отношение Label добавим пометки (re, ei), (re, InEvent), (rk, zi[k] ), (rk, InAction) для всех к от 1 до n (рис. 9).

' Y = 1 N

ei / z1, z2, ..., zn

' Y = 2 N

а

р ei z1 z2

Instate InEvent In Action InAction

*

б

zn q

InAction Instate

Рис. 9. Переход между состояниями до преобразования по второму методу (а) и после

него

Модели Крипке, построенные рассматриваемым методом из автоматов АЯен^е и AElevator, изображены на рис. 10 и 11. Размер модели, полученной таким способом, линеен по количеству вхождений переменных в условия на переходах.

Рис. 10. Модель Крипке, полученная из автомата ARemote по второму методу

Рис. 11. Модель Крипке, полученная из автомата AElevator по второму методу

Приведем пример. Проверим выполнимость формулы AG(InState ^ ^ (—InAction) W InEvent). Во всех состояниях модели Крипке для любого автомата можно убедиться, что в каком бы состоянии автомат ни находился, выходное воздействие не может наступить раньше, чем произойдет некоторое событие.

Метод полного графа переходов

Метод, описанный в этом разделе, является наиболее выразительным в том смысле, что с его помощью можно верифицировать больше всего свойств.

В данном методе множество атомарных предложений AP равно {Y1, Y2, ...} U {e1, e2, ...} U {x1, x2, ...} U {z1, z2, ...} U {InState, InEvent, InAction}.

Как и в предыдущем случае, начиная с множества S, равного множеству состояний исходного автомата, добавим в отношение Label для каждого элемента s е S две пометки: (s, s) и (s, InState). После этого выполним разделение выходных переменных и состояний (как во втором методе) и приступим к добавлению в модель информации о переходах между состояниями исходного автомата. Для этого рассмотрим набор из всех булевых переменных в исходном автомате (состоящий из событий и выходных воздействий). Для каждого состояния p и каждой двоичной последовательности, которую можно присвоить переменным этого набора, введем понятие сценария, который должен произойти в этом состоянии при условии, что значением набора стала данная последовательность. Сценарий этот можно описать на естественном языке следующим образом: в состоянии p произошло событие ei, при этом входные воздействия xj[1], ..., xj[t] (и только они) оказались истинными, после чего были вызваны выходные воздействия zk[1] , ., zk[u] , и автомат перешел в состояние q. Для каждого такого сценария (обозначим его буквой r) создадим u + 1 дополнительное состояние {re, r1, ..., ru} и u + 2 перехода: p ^ re, re ^ r1, r1 ^ r2, ..., ru-1 ^ ru, ru ^ q, а в отношение Label добавим пометки (re, ei), (re, xj[j*]) (re, InEvent), (rk*, zk[k*] ), (rm, InAction) для всех j* от 1 до t и к* от 1 до n.

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

количество_состояний_в_исходном_автомате х (количество_двоичных_наборов + 1),

г „ о количество входных переменных

а число соответствующих двоичных наборов есть 2 - - р .

Пример построения модели Крипке по автомату АТг1д с помощью данного метода приведен на рис. 12.

Рис. 12. Полный граф переходов для автомата АТг1д

Теперь можно проверить, например, свойство —(б V R) ^ ЕХ ЕХ (у=1), которое утверждает, что если оба управляющих сигнала отсутствуют, то, преодолев переход, на следующем шаге можно оказаться в состоянии 1. Это свойство выполняется во всех состояниях, за исключением тех, которые помечены только служебным словом ЫЕувЫ.

Метод редуцированного графа переходов

В данном методе множество AP равно (Yi, y2, ...} U (ei, e2, ...} U (xi, x2, ...} U { !x1, !x2, ...} U (z1, z2, ...} U (Instate, InEvent, InAction}.

Начинаем, как и в предыдущих методах, с того, что присвоим переменной S множество состояний исходного автомата и для каждого состояния s е S добавим в отношение Label две пометки: (s, s) и (s, Instate). После этого выполним разделение выходных переменных и состояний, аналогичное тому, которое описано во втором методе (установки состояний на событиях и выходных воздействиях).

Рассмотрим множество следующих символов: (xi, !xi; x2, !x2; x3, !x3; ... }. Можно сказать, что это множество всех литералов, составленных из входных переменных. Следует различать смысл знаков — и !. Первый из них означает выполнение операции логического отрицания, а второй интерпретируется просто как символ (часть строки !xi). Тогда для каждого ребра r исходного автомата, ведущего из состояния p в состояние q с пометкой ei & hjU]&hj[2]& hj[3]& ... hj[m] / zi[i], ..., zi[n], где либо , либо hj[j*] = !

hj[j*] xj[j*

j[j*

^j[j*] (это значит, что hj[j*] есть либо входная переменная, либо ее отрицание), добавим в модель n + 1 состояние (re, ri, ..., rn}, n + 2 перехода:

p ^ re, re ^ ri, ri ^ r2, ..., rn-i ^ rn, rn ^ q, а в Label добавим пометки (re, ei), (re, InEvent), (rk, zi[k]), (rk, InAction) для всех к от 1 до n, а также пометки

(re:) hj[1]), (re, hj[2]), (re, hj[m] ).

Пример такого преобразования отражен на рис. 13.

Y= 1

ei & x2 & !x4 & !x5 / z1, z2.....zn

Y = 2

а

Y1, Instate

ei, InEvent x2,!x4,!x5

z1, InAction

z2, InAction

б

/ > С \

zn, InAction Y2, InState

Рис. 13. Переход между состояниями до преобразования по методу редукции

Из рисунка видно, что для тех состояний, которые были построены из событий, во множество атомарных предложений были добавлены входные переменные в том виде, в котором они записаны на переходах автомата (вместе с отрицаниями, если есть).

На рис. 14, 15 и 16 показаны модели Крипке, построенные с помощью редукции графа переходов из автоматов ARemote, AElevator, ATrig соответственно.

Размер получившейся модели линеен, так же, как и при установке состояний на событиях и выходных воздействиях.

Рис. 14. Редукция графа переходов для автомата ARemote

Рис. 15. Редукция графа переходов для автомата AElevator

R,

InEvent

1 к 1 г

InState, Y = 0

i к

!S,

InEvent

!R, S

InEvent

R

InEvent

InState, Y = 1

!R InEvent

Рис. 16. Редукция графа переходов для автомата АТг1д

Теперь разберем построение и интерпретацию СТЬ-формул для редуцированных моделей.

СТЬ-семантика в данном методе будет немного отличаться от общепринятой: перед тем, как выполнять верификацию СТЬ-формулы, ее следует привести к определенному («каноническому») виду. Вначале в ней нужно удалить все парные отрицания (путем замены подформул вида ——/ на/). После этого все входные воздействия, которые присутствуют в формуле без отрицания, необходимо предварить двумя отрицаниями: одно из них синтаксическое, другое логическое (это значит, что нужно заменить литералы вида х! на формулы — !хд.). Только после этих модификаций результирующую формулу можно верифицировать методами, предназначенными для языка СТЬ. Причина такого обращения с литералами заключается в следующем: требуется обеспечить, чтобы любая ссылка на несущественную переменную, которая упомянута в СТЬ-формуле, давала истинный результат (несущественными переменными на данном переходе называются те входные переменные исходного автомата, значение которых не проверяется на этом переходе).

Приведем пример для автомата ARemote. Пусть требуется проверить свойство: «существует способ попасть в рабочий режим с заполненным буфером сигналов». В терминах языка CTL с исходной семантикой данное свойство может быть записано следующим образом: E[x3 U (y=1)]. Эта формула не выполняется в состоянии Y=5 (рис. 14). На это, правда, и не стоило рассчитывать. Преобразуем формулу согласно нашему методу: E[— !x3 U (y=1)].

В формулу языка CTL было внесено отрицание другое атомарного предложения, являющегося «синтаксическим отрицанием» исходного. Преобразованная формула уже верна для состояния Y=5.

Таким образом, в методе редукции графа переходов была видоизменена семантика CTL. Рассмотренная схема преобразовывала исходную формулу, построенную для новой семантики CTL, в новую формулу, для которой применима общепринятая семантика языка CTL.

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

Преобразование сценария для модели Крипке в сценарий для автомата

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

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

Для описанных в настоящей работе методов операция переноса путей из модели Крипке в автомат выполняется однозначно. Действительно, состояния модели, содержащие атомарное предложение Y=... или вспомогательное атомарное предложение InState, однозначно преобразуются в соответствующие им состояния автомата. Путь между любыми двумя соседними состояниями всегда представляет собой «змейку» из события и выходных воздействий. Любая из этих промежуточных позиций однозначно определяет то главное состояние автомата, из которого эта «змейка» исходит. Из атомарных предложений, которыми помечены состояния «змейки», однозначно восстанавливаются события. Значения существенных входных переменных (тех, которые записаны на переходе) и список несущественных определяется оттуда же (в методе редукции). Последовательным проходом по полученному пути восстанавливается информация о выполнимости литералов, соответствующих выходным воздействиям, очередности этих литералов и о том, как попасть в данное состояние.

Рис. 17. Путь в модели Крипке

Рис. 18. Путь в исходном автомате ARemote

Рассмотрим пример для автомата ARemote. Пусть для состояния 3 выполняется верификация формулы —E[—(y=6) U (y=1)] (в состояние 1 нельзя попасть, минуя состояние 6). Эта формула в состоянии 3 не выполняется. Верификатор сгенерировал (кратчайший и единственный в данном случае) контрпример, который на рис. 17 выделен серым цветом. Это конечный путь, любое бесконечное продолжение которого удовлетворяет формуле — E[—(y=6) U (y=1)].

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

Заключение

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

Литература

1. Emerson E. A., Clarke E. M. Using branching time temporal logic to synthesize synchronisation skeletons // Science of Computer Programming 2: 241-266, 1982.

2. Clarke E. M., Emerson E. A. Synthesis of synchronisation skeletons for branching time logic / Logic of Programs, LNCS 131, pp. 52-71, 1981.

3. Лифшиц Ю. Верификация программ и темпоральные логики. Лекция №3 курса «Современные задачи теоретической информатики». - СПбГУ ИТМО, 2005. - Режим досту па : http://logic.pdmi.ras.ru/~yura/modern/03modernnote.pdf

4. Лифшиц Ю. Символьная верификация программ. Лекция №4 курса «Современные задачи теоретической информатики». - СПбГУ ИТМО, 2005. - Режим доступа: http://logic.pdmi.ras.ru/~yura/modern/04modernnote.pdf

5. Вельдер С.Э., Шалыто А.А. О верификации автоматных программ на основе метода Model Checking // Информационно-управляющие системы. - 2007. - № 3. - С. 27-38.

6. Roux C., Encrenaz E. CTL May Be Ambiguous when Model Checking Moore Machines. UPMC - LIP6 - ASIM, CHARME, 2003. - Режим доступа: http://sed.free.fr/cr/charme2003-presentation.pdf

7. Finite state machine. - Режим доступа: http://en.wikipedia.org/wiki/Finite state machine

8. Mealy machine. - Режим доступа: http://en.wikipedia.org/wiki/Mealy_machine

9. Moore machine. - Режим доступа: http://en.wikipedia.org/wiki/Moore machine

10. Вельдер С.Э., Бедный Ю.Д. Универсальный инфракрасный пульт для бытовой техники. Курсовая работа. - СПбГУ ИТМО, 2005. - Режим доступа: http://is.ifmo.ru/projects/irrc/

11. Разработка технологии верификации управляющих программ со сложным поведением, построенным на основе автоматного подхода. НИР, выполняемая по гос. контракту № 02.514.11.4048 от 18.05.2007.

12. Козлов В. А. , Комалева О. А.. Моделирование работы банкомата. - СПбГУ ИТМО, 2006. - Режим доступа: http://is.ifmo.ru/unimod-projects/bankomat/

13. Margaria T. Model Structures. Service Engineering - SS 06. - Режим доступа: https://www.cs.uni-potsdam.de/sse/teaching/ss06/sveg/ps/2-ServEng-Model-Structures.pdf

14. Сайт проекта UniMod. - Режим доступа: http://unimod.sf.net

15. Сайт eVelopers Corporation. - Режим доступа: http://www.evelopers.com

УДК 004.4'242

ВЕРИФИКАЦИЯ ПРОГРАММ, ПОСТРОЕННЫХ НА ОСНОВЕ АВТОМАТНОГО ПОДХОДА С ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО СРЕДСТВА SMV Е.А. Курбацкий

В работе рассматривается метод верификации программ, построенных на основе автоматного подхода c использованием метода проверки на моделях (Model Checking). Для проверки модели используется программное средство SMV. При предлагаемом подходе система переходов не строится в явном виде, что позволяет верифицировать программы с большим числом состояний.

Ключевые слова: верификация программ, верификация на моделях, автоматное программирование

Введение

В работе [1] описан метод верификации программных систем, основанный на моделях (Model Checking). При использовании этого метода строится система переходов с конечным числом состояний. Свойства модели выражаются на языке темпоральной логики, после чего проверяется соответсвие модели свойствам. Одной из основных проблем методов Model Checking является необходимость построения конечной модели для проверки. Эта процедура может быть весьма сложной, а построенная в результате модель может обладать огромным числом состояний, что затрудняет верификацию. При попытке уменьшить число состояний путем абстрагирования от некоторых деталей реализации реальной программы возникает проблема адекватности полученной модели, а, следовательно, и проблема корректности результата верификации.

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

Данная проблема рассматривалась в ряде работ. В работе [4] описан способ проверки одного автомата. В работе [5] приводится способ проверки системы автоматов. При этом предлагается использовать программное средство SPIN [6].