Надежность ПО и runtime verification
TRANSCRIPT
![Page 1: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/1.jpg)
1
![Page 2: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/2.jpg)
2
Кирилл ИгнатьевSoftware Developer in Test
Надежность ПОRuntime Verification
![Page 3: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/3.jpg)
3
О чем поговорим
• Необходимость надежности ПО• Тестирование и его недостатки• Что такое верификация• Формальное определение• Инструменты Runtime Verification• Практическое применение
![Page 4: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/4.jpg)
4
Ariane V88 Crash (1996) P_M_DERIVE(T_ALG.E_BH) := UC_16S_EN_16NS (TDB.T_ENTIER_16S ((1.0/C_M_LSB_BH) * G_M_INFO_DERIVE(T_ALG.E_BH)))
direct cost 500.000.000 € indirect cost 2.000.000.000 €
![Page 5: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/5.jpg)
5
Важность проверки ПО
• Разработчики тратят от 50% до 70% времени тестируя и проверяя код
• Тем не менее, низкая надежность – все еще основная проблема ПО
• Недавнее исследование показывает, что баги отнимают от 60 миллиардов долларов ежегодно
![Page 6: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/6.jpg)
6
Что у нас есть: тестирование
Тестирование – это проверка подмножества сценариев использования продукта.
Тестирование может обнаружить ошибки, но не может доказать их отсутствие.
Большинство программ могут принимать неограниченное множество входных данных.
![Page 7: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/7.jpg)
7
Верификация
Верификация: Соответствует ли программа спецификации?
Спецификация также может содержать ошибки.
![Page 8: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/8.jpg)
8
Верификация во время выполнения(Runtime Verification)
Runtime verification – техники верификации, которые позволяют проверить, удовлетворяет ли выполнение (a run) системы определенному условию корректности (correctness property).
![Page 9: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/9.jpg)
9
Прогон и выполнение
Выполнение – возможно, бесконечная последовательность состояний системы.
Прогон – конечный префикс выполнения (trace).
Монитор проверяет, удовлетворяет ли прогон определенному условию корректности.
![Page 10: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/10.jpg)
10
Добавляем монитор
![Page 11: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/11.jpg)
11
Testing Runtime Verification
Удовлетворяет ли входным/выходным данным? Удовлетворяет ли система монитору?
Входные/выходные данные задаются вручную Монитор генерируется из условий корректности
Проблема: создание входных/выходных данных Проблема: генерация монитора
Проверяется текущее выполнение Проверяется текущее выполнение
Сравнение
![Page 12: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/12.jpg)
13
Кому нужен Runtime Verification?• Когда цена ошибки высока (ракеты, самолеты,
процессоры, безопасность, репутация)
• Когда некая информация доступна только во время выполнения
• Когда поведение приложения сильно зависит от окружения
• Для доказательства корректности системы (ИИ?)
![Page 13: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/13.jpg)
14
Шаг 1. Написать спецификацию
Для этого есть языки: LTL (Linear Temporal Logic), SALT и др.
Это регулярные языки, но включающие еще и время:
![Page 14: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/14.jpg)
15
Шаг 1. Написать спецификацию
Открыто соединение, данные переданы, соединение закрыто.
![Page 15: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/15.jpg)
16
Шаг 1. Написать спецификацию
Открыто соединение, данные переданы, соединение закрыто, или выполнена отмена в любое время.
![Page 16: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/16.jpg)
18
Шаг 2. Определить события (jUnitrv)
private static Event con_open = returned ( dataService , ”connect"); private static Event data = called ( dataService , ”transmit_data"); private static Event con_close = called ( dataService , "disconnect");private static Event reset = called ( dataService , ”reset");
@Test @Monitors ({”transmitData"}) public void test1 () {
// ... }
![Page 17: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/17.jpg)
19
Готово!
![Page 18: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/18.jpg)
20
Фреймворки
![Page 19: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/19.jpg)
21
time Reflection Pattern
Паттерн разработки надежных систем
![Page 20: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/20.jpg)
22
Runtime Reflection Pattern
Логирование ->
![Page 21: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/21.jpg)
23
Runtime Reflection Pattern
Монитор ->• Реализован с помощью RV• Обнаруживает ошибки и• Оповещает о них
![Page 22: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/22.jpg)
24
Runtime Reflection Pattern
Диагностика ->• Собирает вердикты монитора• Объясняет текущее состояние
![Page 23: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/23.jpg)
25
Runtime Reflection Pattern
Смягчение ->• Пытается смягчить последствия• Сохраняет детальную
диагностическую информацию
![Page 24: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/24.jpg)
26
Конференция (2001––2015)
• 22-25 сентября, Вена, Австрия
• Билеты по 759/550€
![Page 25: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/25.jpg)
27
Куда двигаться дальше?
• Уменьшение накладных расходов
• Упрощение спецификаций
• Изменение поведения
• Почему так долго?
![Page 26: Надежность ПО и Runtime Verification](https://reader035.vdocuments.site/reader035/viewer/2022062502/58a7cc491a28ab6b5a8b6613/html5/thumbnails/26.jpg)
28