Формальная верификация: методы и приложения

реклама
Формальная
верификация:
методы и приложения
В. Кулямин
Е. Корныхин
План
Общие вопросы
 Модели
 Методы
 Инструменты и приложения

2/23
Определение

Верификация –
проверка корректности
результатов некоторого
этапа разработки по
отношению к требованиям,
сформулированным на
предыдущих этапах
Потребности
Требования
Проектные решения
(Проектные решения)'

Валидация
Система
3/23
Формальная верификация
Формальная проверка
 Должны быть представлены в виде
формальных моделей

= реализация
 Требования = спецификация
 Результаты

I
S
Соответствие между ними должно
быть определено формально
4/23
Формальное и неформальное



Формально можно
проверить только что-то
формальное
Реальные потребности и
реальная система –
неформальны
Проверять адекватность
самих формальных
моделей нужно другими
способами
Потребности
Спецификация
Реализация
Система
5/23
Объект верификации


Программное и аппаратное обеспечение
Формальная верификация

Предистория
Взлом шифраторов: E. F. Moore – 1956

Начало
ПО: Floyd – 1967, Hoare – 1969

Развитие
В основном АО: 1979–1995

Почему АО?
Более простые примитивы + более однородная структура
Стоимость ошибок значительно выше
 Повторно используется больше проектной информации
 Инженеры привычны к строгим ограничениям и точным описаниям


6/23
Общие требования




Полезные системы достаточно сложны
Есть несколько уровней детализации
Верификация должна быть иерархической
Верификация должна быть модульной
7/23
Абстракция и уточнение



Абстракция упрощает модель
Но уточнение должно обеспечить перенос
результатов
Виды абстракций
 Структурная
абстракция
 Функциональная абстракция
 Абстракция данных
 Абстракция взаимодействий
 Временная абстракция
8/23
План
Общие вопросы
 Модели
 Методы
 Инструменты и приложения

9/23
Основные виды моделей

Виды формализмов
 Логико-алгебраические
 Операционные

(исполнимые)
L
E
Виды соответствий
I ⊢ S (I  S)
 Моделирование I ⊨ S
 Симуляция
I↝S
 Выводимость
L-L
E-L
E-E
10/23
Логико-алгебраические

Алгебраические
 Реляционные алгебры (Codd - 1970)
 Абстрактные типы данных (Zilles, Liskov – 1974)
 Алгебры процессов
 CSP (Hoare - 1978)
 CCS (Milner - 1980)
 ACP (Bergstra, Klop - 1982)
 …
 Abstract State Machines (Гуревич - 1984)

Логические
11/23
Логические
μ-исчисление (Pratt,
Kozen – 1982)
μ, ν
интервалы
ITL (Moszkowski – 1983)
CTL (Clarke, Emerson - 1981)
A, E
TPTL (Alur, Henzinger - 1989)
явное время
G, F, X, U
LTL (Prior - 1957)
λ по объектам
типы
Исчисление
высказываний
Логики высших
порядков
(Peirce – 1885)
Hoare logic (Hoare - 1969)
  по объектам
λ-исчисление (Church – 1936)
λ по типам
Логика 1-го порядка
λ-исчисления
высшего порядка
(Girard – 1971)
  по предикатам/типам
12/23
Операционные
ω-автоматы (Buchi – 1960)
[ASM]
гибридные (Alur, Henzinger - 1996)
ω-слова
временные (Alur, Dill - 1990)
Statecharts (Harel – 1987)
таймеры
разделение I/O
взаимодействие
данные
FSM (Huffman 1954)
EFSM (1973 ?)
Сети Петри (Petri – 1962)
LTS (1980 ?)
[алгебры процессов]
IOA (Tuttle, Lynch – 1987)
Машины (Тьюринг – 1936)
CFSM (Brand,
Zafiropulo - 1983)
13/23
План
Общие вопросы
 Модели
 Методы
 Инструменты и приложения

14/23
Методы верификации

С полным моделированием
– Спецификация и реализация известны
S

?
I
С неполным моделированием
– Известна только спецификация
S
I
Система
?
15/23
Полное моделирование





Дедуктивный анализ
(theorem proving) Floyd – 1967
Проверка моделей
(model checking) Clarke, Emerson – 1981
Проверка симуляции
(simulation checking, equivalence checking) Moore – 1956
Символическое выполнение
(symbolic execution) Topor, Burstall – 1972
Абстрактная интерпретация
(abstract interpretation) Cousot – 1975
16/23
Неполное моделирование


Формальное тестирование
(formal conformance testing) Василевский – 1973
Hennessy, DeNicola – 1984
Верификационный мониторинг
(runtime verification, passive testing)
С 1970-х было много работ, в которых этот термин не
употреблялся
~1999 – термин (Havelund, Rosu ?)
17/23
Распределение работ
Abstract
interpretation
Theorem proving
Provers, SAT solvers
Symbolic execution
Simulation
Formal
Model checking checking
conformance
Model checkers
testing
Runtime
verificatio
n
18/23
План
Общие вопросы
 Модели
 Методы
 Инструменты и приложения

19/23
Дедуктивный анализ

Неавтоматизированный анализ
 ASM

Автоматизированный анализ
(Boyer, J. S. Moore – 1971)
~ 20 примеров, JVM (700 страниц)
 HOL (Gordon, 1988)
~ 30 примеров
 PVS (Owre, Rushby, Shankar – 1992)
~ 30 примеров
 ACL2


Isabelle
Coq
20/23
Проверка моделей и симуляции

Model checkers
 SPIN (Holzman ~ 1982)
 SMV (McMillan et al.– 1994) и производные
 Murφ (Dill – 1992)
 UPPAAL (Larsen et al. – 1995)

Equivalence checkers
 Verity

(Kuehlmann et al. – 1995)
Смешанные
 CADP
(INRIA ~ 1990)
~ 50 примеров приложений
21/23
Что осталось?

Тестирование
 TGV
(1997)
 Gotcha (1999)

Мониторинг
 TemporalRover
(1995)
 ESC/Java 2 (2002)
 Java PathFinder (2004)

Abstract interpretation
 ASTREE
(2001)
22/23
Спасибо за внимание!
23/23
Дедуктивный анализ I
Неавтоматизированный анализ: ASM
 Модель взаимодействия потоков Java
(без исключений и пр.)
Гуревич, Schulte, Wallace – 1999

Семантика JVM, Java и преобразования
(без параллелизма)
Borger, Schimd, Stark – 2001

Семантика SDL 2000
Eschbach, Glasser, Gotzhein, Prinz – 2000
24/23
Дедуктивный анализ II
R. S. Boyer, J. S. Moore
Ограниченная логика 1-го порядка + Applicative Common Lisp




1971 первый инструмент
1986 Nqthm

2001 ACL2
Ранние приложения
Процессоры




FM8501, FM8502 (1985); FM9001 (1997)
Motorola MC68020 (1993), CAP DSP (100 страниц)
AMD K5 (1995), Athlon (1997)
IBM 4758 security model
 Rockwell

JVM (2001-2004) (700 страниц)
25/23
Дедуктивный анализ III
HOL (Gordon – 1988)
Основан на LCF (Milner – 1973) + higher-order logic + ML
Несколько десятков работ по применению HOL
 Банки памяти (1996)
Первый верифицированный
коммерческий процессор
 Процессоры




TAMARACK (1987)
Viper (1987)
Intel (Harrison, O’Leary)
После верификации
найдена ошибка!
ПО


Web-сервер (1995)
Протоколы
26/23
Дедуктивный анализ IV
PVS (Owre, Rushby, Shankar – 1992)
higher-order logic + язык, похожий на VDM
Тоже несколько десятков приложений
 Протоколы
 Авионика + космос (NASA) (1996-1998)
 Часть ядра ОС (1998)
 Управляющая система АЭС (1999)
 Процессоры


AAMP5 (1995)
VAMP FPU (2005)
27/23
Скачать