Применение шаблонов требований для формальной спецификации и верификации автоматных программ Клебанов Андрей, 6538 Науч. рук. Степанов Олег, к.т.н, СПбГУ ИТМО и JetBrains План • Введение • Шаблоны требований (ШТ) • Применимость к автоматному программированию (АП) • Запись требований • Заключение 2 Проблема • К АП хорошо применима верификация на модели • Однако работать с требованиями в виде формул темпоральной логики трудоемко: – Сложно понять – Еще сложнее специфицировать корректно 3 Пример проблемы «Between the time an elevator is called at a floor and the time it opens its doors at that floor, the elevator can arrive at that floor at most twice» []((call & <>open) -> ((!atfloor & !open) U (open | ((atfloor & !open) U (open | ((!atfloor & !open) U (open | ((atfloor & !open) U (open | (!atfloor U open)))))))))) Dwyer M. B., Avrunin G. S., Corbett J. C. Patterns in Property Specifications for Finite-state Verification / Proceedings of the 21st International Conference on Software Engineering. 1999 4 Существующее решение • Графические нотации Облегчают восприятие, но не помогают при спецификации • Естественный язык 5 Существующее решение (АП) Контракты: + Проще и понятней, чем темпоральные формулы - Ограничены в выразительных возможностях - Трудоемко для нескольких состояний Степанов О. Г. Методы реализации автоматных объектноориентированных программ. Диссертация на соискание ученой степени кандидата технических наук. СПбГУ ИТМО, 2009. 6 Предлагаемое решение Записывать верифицируемые требования на подмножестве естественного языка 7 Детали • Требования выводятся из грамматики ◦ Нет необходимости в обработке естественного языка (NLP) ◦ Гибкость для разных предметных областей • Грамматика основывается на шаблонах требований (ШТ) ◦ Для каждого требования существует формальная запись 8 Актуальность ШТ в контексте АП Васильева К.А., Кузьмин Е.В. Верификация автоматных программ с использованием LTL // Моделирование и анализ информационных систем. Ярославль: ЯрГУ. 2007. Т. 14, № 1, с. 3–14. «… важным является вопрос о шаблонах (структуре) темпоральных свойств, наиболее применимых и адекватных для верификации автоматных программ. Наличие таких шаблонов позволяло бы говорить о классах темпоральных свойств автоматных моделей, что, несомненно, облегчало бы построение технологической схемы проверки автоматных программ на корректность относительно спецификации» 9 План • • • • • Введение Шаблоны требований Применимость к АП Запись требований Заключение 10 Шаблоны требований • ШТ – обобщенное описание (на формальном и естественном языках) часто встречающихся ограничений на допустимые последовательности состояний в модели системы с конечным числом состояний • Формально описывают некий аспект поведения системы Dwyer M. B., Avrunin G. S., Corbett J. C. Patterns in Property Specifications for Finite-state Verification / Proceedings of the 21st International Conference on Software Engineering. 1999 11 Шаблоны требований Требование = ШТ + Ограничение 12 Шаблоны требований Ограничение – та часть пути исполнения, на которой должно выполняться требование 13 Ограничения Шаблоны требований Глобально До Q После Q Между Q и R После Q до R Q R Q R Q Последовательность состояний 14 Шаблоны требований Система шаблонов Порядок Наличие Отсутствие Всеобщность Ограниченное существование Существование Предшествование Цепной ответ Ответ Цепное предшествование 15 Шаблон «Отсутствие» Цель Запись Используется для описания части пути исполнения системы, в которой нет определенного состояния. Так же известен как «Никогда». LTL CTL Ограничение Запись Глобально [](!P) До R <>R -> (!P U R) После Q [](Q -> [](!P)) Между Q и R []((Q & !R & <>R) -> (!P U R)) После Q до R [](Q & !R -> (!P W R)) Ограничение Запись Глобально AG(!P) После Q AG(Q -> AG(!P)) … … После Q до R AG(Q & !R -> A[!P W R]) Пример использования Этот шаблон может быть применен для описания общих свойств модели в целом или отдельной группы состояний. Для специфицирования свойства безопасности (safety) следует использовать это шаблон и ограничение «Глобально». Например, в том случае, когда необходимо выразить свойство вида: «Автомат A никогда не перейдет в состояние s», «В состоянии s никогда не будет обработано событие e» или свойство «Тупиковое состояние» из разд. 1.1.4. Связь с другими шаблонами … 16 План • • • • • Введение Шаблоны требований Применимость ШТ к АП Запись требований Заключение 17 Анализ применимости Шаблоны были получены из требований к обычным программам • Стоит ли использовать шаблоны для специфицирования АП? • Т.е. можем ли выразить требования к АП, используя шаблоны, или у АП есть особенности? 18 Пример организации результатов № Требование 9 Система управления кофеваркой никогда не попадет в такое состояние, в котором она никак не реагирует ни на события системного таймера, ни на нажатие кнопок «ОК» и «C». Исходная формальна запись Шаблон, Ограничение Источник !(EF act = end) Отс., Глобально 5 AG(!P) ≡ !EF(P), P: act = end 19 Анализ применимости • 118 требований к 15+ программам из ~20 источников • 85% покрывается 5 (из 8) шаблонами 20 Оставшиеся 15% • Ограниченность системы шаблонов • Проблема в самой модели • Особенности алгоритма преобразования исходной модели в модель, пригодную для верификации 21 Оставшиеся 15% (Пример 1) Проблема в самой модели? Если ресурс заняли, то o1.x1 W o1.z1 & он несвободен, пока G (o1.z2 -> (o1.x1 его не освободят. W o1.z1) & o1.z1 -> (!o1.x1 W o1.z2)) ШТ «Отсутствие»:[](Q & !R -> (!P W R)) Q: Ресурс заняли P: Ресурс свободен R: Ресурс освободили 22 Оставшиеся 15% (Пример 2) Особенности алгоритма преобразования? Непосредственно после открытия двери загорается лампочка. e1 U z1 ШТ «Ответ» (на след. шаге): [](e1 -> X(z1)) e1 z1 e1 z1 23 Адаптация шаблонов к АП Examples and Known Uses The most common example is mutual exclusion. In a statebased model, the scope would be global and P would be a state formula that is true if more than one process is in its critical section. Пример использования Этот шаблон может быть применен для описания общих свойств модели в целом или отдельной группы состояний. Для специфицирования свойства безопасности (safety) следует использовать это шаблон и ограничение «Глобально». Например, в том случае, когда необходимо выразить свойство вида: «Автомат A никогда не перейдет в состояние s», «В состоянии s никогда не будет обработано событие e» или свойство «Тупиковое состояние» из разд. 1.1.4. 24 План • • • • • Введение Шаблоны требований Применимость к АП Запись требований Заключение 25 Грамматика (фрагмент) <требование> ::= <ограничение> <шаблон> <ограничение> ::= «Для любого состояния верно, что» | «До состояния, в котором Q, верно что» | «После состояния, в котором Q, верно что» | «Между состоянием, в котором Q, до состояния, в котором R, верно что» | «После состояния, в котором Q, до состояния, в котором R, верно что» <шаблон> ::= <отсутствие> | <всеобщность> | <существование> | <предшествование> | <ответ> | <ответ на следующем шаге> <отсутствие> ::= «никогда не выполняется P» <всеобщность> ::= «всегда выполняется P» <существование> ::= «когда-нибудь выполнится P» … … <требование> – стартовый нетерминальный символ 26 Методика вывода Неформальный алгоритм: 1. Выделить свойство (требование) 2. Выбрать шаблон и ограничение 3. Выполнить порождение 4. Использую данные шагов №1 и №2 получить формальную запись для верификации 27 Пример вывода (Оригинальное требование) «Система управления кофеваркой никогда не попадет в такое состояние, в котором она не реагирует ни на события системного таймера, ни на нажатие кнопок «ОК» и «C» Кузьмин Е. В., Соколов В. А. Моделирование, спецификация и верификация «автоматных» программ // Программирование. 2008. № 1, c. 38–60. 28 Пример вывода (Шаг №1) «Система управления кофеваркой никогда не попадет в такое состояние, в котором она не реагирует ни на события системного таймера, ни на нажатие кнопок «ОК» и «C» act = end 29 Пример вывода (Шаг №2) Наречие «никогда» подсказывает, что должен быть использован шаблон «Отсутствие» с ограничением «Глобально» 30 Пример вывода (Шаг №3) <требование> → <ограничение> <шаблон> → Для любого состояния верно, что <шаблон> → Для любого состояния верно, что <отсутствие> → Для любого состояния верно, что никогда не выполняется P 31 Пример вывода (Шаг №4) • Для любого состояния верно, что никогда не выполняется act = end • Формальный эквивалент для верификации: AG!(act = end) и []!(act = end) 32 План • • • • • Введение Шаблоны требований Применимость к АП Запись требований Заключение 33 Результаты • Исследован вопрос применимости ШТ к спецификации АП • Проведена адаптация шаблонов • Разработаны грамматики для записи требований на подмножестве русского и английского языков • Разработана методика записи верифицируемых требований 34 Дальнейшие исследования • Теоретическая сторона: – Анализ требований, которые не удалось выразить (нет и в оригинальной работе!) – Выделение новых шаблонов • Практическая сторона: – Wizard для формализации требования – Интеграция с инструментальным средством 35 Конференции • VII Межвузовская Конференция Молодых Ученых, СПбГУ ИТМО, 20-23.04.2010 Диплом за лучший доклад на секции «Автоматное программирование» Подана статья в «Научно-технический вестник СПбГУ ИТМО» • Spring/Summer Young Researchers' Colloquium on Software Engineering (SYRCoSE 2010), Нижний Новгород, 1-2.06.2010 • Workshop on Program Semantics, Specification and Verification: Theory and Applications (PSSV 2010) в рамках Computer Science Symposium in Russia (CSR 2010), Казань, 14-15.06.2010 36 Спасибо! Вопросы? Клебанов Андрей, 6538 37