Lukin, M., Shalyto, А. , St. Petersburg National Research University of Information Technologies, Mechanics and Optics
Verification of Distributed Automated Programs Using the Spin Tool
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Лукин М. А., Вельдер С. Э., Яминов Б. Р.
Верификация программного обеспечения
Конец слайдов
Спасибо за внимание!