Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Презентации / Lecture05p

.pdf
Скачиваний:
0
Добавлен:
23.06.2026
Размер:
1.11 Mб
Скачать

Формальные методы

Два артефакта (обычно требования-проект или требования-код) представляются в виде формальных моделей

Два основных типа формальных моделей

Логико-алгебраические – фокусируются на описании свойств

Исполнимые – фокусируются на описании общего хода работы

Требования чаще представляют в виде логико-алгебраической модели, называемой спецификацией S

Модель другого артефакта называется реализацией I

Если окружение оказывает существенное влияние на свойства системы, оно также явно описывается моделью E, практически всегда – того же типа, что и реализация

Два основных метода проверки соответствия

Дедуктивная верификация (deductive verification, theorem proving)

Реализация и окружение описываются как логико-алгебраические модели

Нужно доказать, что спецификация выводима из реализации и окружения

E, I S

• Проверка моделей (model checking)

 

Реализация и окружение описываются как исполнимые модели

 

Нужно доказать, что спецификация выполнена на композиции реализации и окружения

E ◦ I S

Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ

Основы инженерии программного обеспечения

21

Ограничения контроля качества

Валидация существенно зависит от умения экспертов извлекать собственное понимание чего-либо в точном и полном виде

Верификация не может выявить одинаковые ошибки в сопоставляемых артефактах

Часто можно найти расхождения, причина которых в некорректности первичного, а не вторичного артефакта

Обычно наиболее важный эффект от формализации – выявленные ошибки в требованиях

Верификация сложной системы – само по себе сложное мероприятие, поэтому есть значимый риск запутаться и ошибиться при ее выполнении

Психологически гораздо легче ошибиться, решив, что все хорошо, хотя это не так

Формальная верификация дает высокие гарантии качества, но не абсолютные

Известно несколько случаев «успешной» формальной верификации модулей процессоров, которые затем демонстрировали ошибки при тестировании и эксплуатации

Преобразование double int в Pentium Pro имело FIST bug после верификации в 1996 Причина – неаккуратность в интеграции результатов нескольких сотен лемм

Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ

Основы инженерии программного обеспечения

22

Конец

Соседние файлы в папке Презентации