1
Верификация многопоточных автоматных
программ с использованием
инструментального средства Spin
Лукин М. А., Шалыто А. А.
2013
2
Итория
Лукин М. А., Шалыто А. А.
Верификация распределенных автоматных программ с использованием инструментального средства Spin
Работа началась в 2005 г.
В 2007 был выигран грант
Инструментальные средства
3
Область применения
Лукин М. А., Шалыто А. А.
Верификация распределенных автоматных программ с использованием инструментального средства Spin
Реактивные программы (особенно
программы управления оборудованием)
Формальная спецификация (например,
UML)
Event-driven programming
Обработка текста
4
Верификация автоматов
Stateflow
Лукин М. А., Шалыто А. А.
Верификация распределенных автоматных программ с использованием инструментального средства Spin
Полную верификацию никто не сделал
Наиболее полная верификация –
сингапурский университет: Chen C., Sun J.,
Liu Y., Dong J., Zheng M. 2013.
 Нельзя формулировать темпоральные
свойства
5
Выбор верификатора
Лукин М. А., Шалыто А. А.
Верификация распределенных автоматных программ с использованием инструментального средства Spin
Spin – один из самых популярных
Опубликован ряд книг
Удобно использовать в учебном процессе
6
Пример: прототип управления
гусеничным шасси
Лукин М. А., Шалыто А. А.
Верификация распределенных автоматных программ с использованием инструментального средства Spin
Два автомата AChassis: left и right
управляют двигателями.
Автомат Amanager подает команды
автоматам left и right.
7
AManager
Лукин М. А., Шалыто А. А.
Верификация распределенных автоматных программ с использованием инструментального средства Spin
8
AChassis
Лукин М. А., Шалыто А. А.
Верификация распределенных автоматных программ с использованием инструментального средства Spin
9
Автоматная модель
Лукин М. А., Шалыто А. А.
Верификация распределенных автоматных программ с использованием инструментального средства Spin
Система параллельно работающих ИКА
Автоматы смешанного типа (Мура + Мили)
Взаимодействие: сообщения и общие
переменные
Выходные воздействия:
 Список функций
 Произвольный код
Переменные в автоматах
10
Зачем интерактивность?
Лукин М. А., Шалыто А. А.
Верификация распределенных автоматных программ с использованием инструментального средства Spin
Бесконечный цикл: события, по которым
нет перехода
Проверка поведения при неожиданных
событиях
11
Интерактивность
Лукин М. А., Шалыто А. А.
Верификация распределенных автоматных программ с использованием инструментального средства Spin
Источники событий
Параллельность
Переменные
Опции Spin
Удобный для человека код
12
Состояние автомата
Лукин М. А., Шалыто А. А.
Верификация распределенных автоматных программ с использованием инструментального средства Spin
typedef AChassisData
{
byte state;
byte curEvent;
byte ID;
byte functionCall;
byte nestedMachine;
bool started;
bool finished;
//Переменные автомата
}
13
Моделирование автомата
Лукин М. А., Шалыто А. А.
Верификация распределенных автоматных программ с использованием инструментального средства Spin
proctype leftProc () {
byte newEvt;
left.started= true;
left_ch ? newEvt;
leftParamChange();
do
:: left.finished == false ->
left_ch ? newEvt;
AChassis(left, newEvt);
:: else -> skip;
od;
}
14
Моделирование автомата
Лукин М. А., Шалыто А. А.
Верификация распределенных автоматных программ с использованием инструментального средства Spin
inline AManager(machine, evt) {
if
::(machine.state ==s0) ->
if
::((evt == e0)) ->
machine.state = s1;
…
fi;
…
fi;
}
15
Источник событий
Лукин М. А., Шалыто А. А.
Верификация распределенных автоматных программ с использованием инструментального средства Spin
Процесс, который запускается вместе с
процессом автомата
Отправляет события в канал автомата
 Случайные
 Только те, которые могут быть обработаны
16
Спецификация
Лукин М. А., Шалыто А. А.
Верификация распределенных автоматных программ с использованием инструментального средства Spin
 Спецификация при помощи assert и LTL
 Невозможность запуска одного экземпляра дважды
atomic {
assert (!left.started);
run leftProc();
} }
 Если пришла команда остановки, то левый двигатель
будет остановлен
G ( manager.stop → (F (left.EngineStop)) )
17
Внедрение
Лукин М. А., Шалыто А. А.
Верификация распределенных автоматных программ с использованием инструментального средства Spin
ООО «СТЦ»
Мобильные приложения
Учебный процесс
18
Ограничения метода
Лукин М. А., Шалыто А. А.
Верификация распределенных автоматных программ с использованием инструментального средства Spin
Ограничение на размер одного автомата
Ограничение на число volatile-переменных
Ограничение на общий размер модели:
проводятся исследования
19Лукин М. А., Вельдер С. Э., Яминов Б. Р.
Верификация программного обеспечения
Конец слайдов
Спасибо за внимание!

TMPA-2013 Lukin: Spin

  • 1.
    1 Верификация многопоточных автоматных программс использованием инструментального средства Spin Лукин М. А., Шалыто А. А. 2013
  • 2.
    2 Итория Лукин М. А.,Шалыто А. А. Верификация распределенных автоматных программ с использованием инструментального средства Spin Работа началась в 2005 г. В 2007 был выигран грант Инструментальные средства
  • 3.
    3 Область применения Лукин М.А., Шалыто А. А. Верификация распределенных автоматных программ с использованием инструментального средства Spin Реактивные программы (особенно программы управления оборудованием) Формальная спецификация (например, UML) Event-driven programming Обработка текста
  • 4.
    4 Верификация автоматов Stateflow Лукин М.А., Шалыто А. А. Верификация распределенных автоматных программ с использованием инструментального средства Spin Полную верификацию никто не сделал Наиболее полная верификация – сингапурский университет: Chen C., Sun J., Liu Y., Dong J., Zheng M. 2013.  Нельзя формулировать темпоральные свойства
  • 5.
    5 Выбор верификатора Лукин М.А., Шалыто А. А. Верификация распределенных автоматных программ с использованием инструментального средства Spin Spin – один из самых популярных Опубликован ряд книг Удобно использовать в учебном процессе
  • 6.
    6 Пример: прототип управления гусеничнымшасси Лукин М. А., Шалыто А. А. Верификация распределенных автоматных программ с использованием инструментального средства Spin Два автомата AChassis: left и right управляют двигателями. Автомат Amanager подает команды автоматам left и right.
  • 7.
    7 AManager Лукин М. А.,Шалыто А. А. Верификация распределенных автоматных программ с использованием инструментального средства Spin
  • 8.
    8 AChassis Лукин М. А.,Шалыто А. А. Верификация распределенных автоматных программ с использованием инструментального средства Spin
  • 9.
    9 Автоматная модель Лукин М.А., Шалыто А. А. Верификация распределенных автоматных программ с использованием инструментального средства Spin Система параллельно работающих ИКА Автоматы смешанного типа (Мура + Мили) Взаимодействие: сообщения и общие переменные Выходные воздействия:  Список функций  Произвольный код Переменные в автоматах
  • 10.
    10 Зачем интерактивность? Лукин М.А., Шалыто А. А. Верификация распределенных автоматных программ с использованием инструментального средства Spin Бесконечный цикл: события, по которым нет перехода Проверка поведения при неожиданных событиях
  • 11.
    11 Интерактивность Лукин М. А.,Шалыто А. А. Верификация распределенных автоматных программ с использованием инструментального средства Spin Источники событий Параллельность Переменные Опции Spin Удобный для человека код
  • 12.
    12 Состояние автомата Лукин М.А., Шалыто А. А. Верификация распределенных автоматных программ с использованием инструментального средства Spin typedef AChassisData { byte state; byte curEvent; byte ID; byte functionCall; byte nestedMachine; bool started; bool finished; //Переменные автомата }
  • 13.
    13 Моделирование автомата Лукин М.А., Шалыто А. А. Верификация распределенных автоматных программ с использованием инструментального средства Spin proctype leftProc () { byte newEvt; left.started= true; left_ch ? newEvt; leftParamChange(); do :: left.finished == false -> left_ch ? newEvt; AChassis(left, newEvt); :: else -> skip; od; }
  • 14.
    14 Моделирование автомата Лукин М.А., Шалыто А. А. Верификация распределенных автоматных программ с использованием инструментального средства Spin inline AManager(machine, evt) { if ::(machine.state ==s0) -> if ::((evt == e0)) -> machine.state = s1; … fi; … fi; }
  • 15.
    15 Источник событий Лукин М.А., Шалыто А. А. Верификация распределенных автоматных программ с использованием инструментального средства Spin Процесс, который запускается вместе с процессом автомата Отправляет события в канал автомата  Случайные  Только те, которые могут быть обработаны
  • 16.
    16 Спецификация Лукин М. А.,Шалыто А. А. Верификация распределенных автоматных программ с использованием инструментального средства Spin  Спецификация при помощи assert и LTL  Невозможность запуска одного экземпляра дважды atomic { assert (!left.started); run leftProc(); } }  Если пришла команда остановки, то левый двигатель будет остановлен G ( manager.stop → (F (left.EngineStop)) )
  • 17.
    17 Внедрение Лукин М. А.,Шалыто А. А. Верификация распределенных автоматных программ с использованием инструментального средства Spin ООО «СТЦ» Мобильные приложения Учебный процесс
  • 18.
    18 Ограничения метода Лукин М.А., Шалыто А. А. Верификация распределенных автоматных программ с использованием инструментального средства Spin Ограничение на размер одного автомата Ограничение на число volatile-переменных Ограничение на общий размер модели: проводятся исследования
  • 19.
    19Лукин М. А.,Вельдер С. Э., Яминов Б. Р. Верификация программного обеспечения Конец слайдов Спасибо за внимание!

Editor's Notes

  • #2 <number> <number>
  • #20 <number> <number>