SlideShare une entreprise Scribd logo
1  sur  37
Télécharger pour lire hors ligne
1
На пути к технологии разработки средств
дедуктивной верификации программ
Игорь Ануреев
Институт систем информатики имени А.П. Ершова
Новосибирск
anureev@iis.nsk.su
2
План доклада:
 дедуктивная верификация;
 схема дедуктивного верификатора;
 недостатки существующих дедуктивных верификаторов;
 унифицированный предметно-ориентированный подход
к разработке дедуктивных верификаторов.
3
Дедуктивная верификация — процедура
Параметры дедуктивной верификации:
AnProgSet — множество аннотированных программ;
Log — логика (язык + семантика);
AxSem — аксиоматическая семантика программ из
AnProgSet относительно Log
4
3 этапа дедуктивной верификации:
 порождение условий корректности (формул Log)
по A ∈ AnProgSet в соответствии с AxSem;
 доказательство условий корректности;
 интерпретация результатов доказательства для A.
5
Аннотированная программа =
программа на целевом языке + аннотации на языке
аннотаций.
Аннотации описывают свойства программы.
6
Аннотированная программа ≡ формула «Свойства
программы, представленные аннотациями, выполнены»
Пример: тройка Хоара {P} A {Q}.
P, Q ∈ Log — предусловие и постусловие
Аннотированная программа корректна, если
соответствующая ей формула истинна.
7
Аксиоматическая семантика программ из AnProgSet
относительно Log — набор правил вывода, включающих
формулы из AnProgSet и Log.
Пример:
{P ∧ A} B {Q} {P ∧ ¬ A} C {Q}
-----------------------------------------
{P} if A then B else C {Q}
8
Вход дедуктивного верификатора:
A ∈ AnProgSet
Выход дедуктивного верификатора:
 A корректна;
 A некорректна;
 A некорректна + интерпретация результата
доказательства условий корректности;
 Не знаю.
9
Параметры дедуктивного верификатора:
 целевой язык, язык аннотаций;
 AnProgSet, Log, AxSem;
 стратегии вывода в AxSem;
 решатели условий корректности;
10
Параметры дедуктивного верификатора:
 техники трансформации аннотированных программ;
 техники трансформации УК;
 техники комбинирования решателей УК;
 техники применения решателей УК при выводе УК;
 техники применения трансформаций аннотированных
программ при выводе УК.
11
Недостатки существующих дедуктивных верификаторов:
 дедуктивный верификатор — черный ящик;
 корректность дедуктивного верификатора;
 выразительная сила;
 адаптируемость под конкретную задачу верификации;
 интуитивно-понятный интерфейс.
12
Унифицированый предметно-ориентированный подход к
разработке дедуктивных верификаторов —
использование предметно-ориентированного языка (DSL)
для этой предметной области.
13
Основные понятия языка Atoment …
Выражения (аля Лисп)
(aa (bbbb uu) ′′′′s( d)′′)
aa, ′′′′s( d)′′ — атомы.
14
Выражения используются для представления объектов
верификации (аннотированных программ, условий
корректности, …):
 (if A then B else C)
 (forall x (A or B)) или (∀ x (A ∨ B))
Две семантики выражения:
 операционная (изменение состояния)
 денотационная (получение значения)
15
Символы (функциональные)
(+v + +v)
(forall –v -v)
(send message +v to +v)
используются для описания состояния (в операционной
семантики выражений) и вычисления значения (в
денотационной семантике выражений).
16
Символы делятся на
 предопределенные (значение определяется
интерпретацией);
 определяемые (значение определяется состоянием) .
17
Интерпретация I — функция на символах такая, что
I(символ) = функция из En
→ E.
E — множество элементов (денотат).
выражения ⊆ E
Пример:
I(+v + +v) = функция сложения чисел.
18
Состояние — функция на символах такая, что
s(символ) = конечная функция из En
→ E.
Примеры:
s(value of -v) = {(x, 1), (y, true)}
s(type of -v) = {(x, int), (y, bool)}
19
Денотационная семантика выражений
val(AA, s) = AA; // AA — атом
val(((2 + 3) + (value of x)), s) =
I(+v + +v)(val(2+3, s), s(value of +v)(x))
20
Операционная семантика выражений
определяется отношением перехода на конфигурациях.
Конфигурация — пара (U, s).
U — (управляющая) последовательность выражений.
Отношение перехода → ⊆ Conf × Conf.
Conf — множество всех конфигураций.
21
Выражения делятся на
 предопределенные
(E U, s) → (U′, s′);
 определяемые (правилами переходов).
22
Особенности подхода на примерах:
 инкрементальность разработки (операционной
семантики, аксиоматической семантики, …);
 легкость введения дополнительных конструкций в
целевой язык;
 гибкость разработки;
 разрешение на месте побочных эффектов при
дедуктивном выводе;
 конструкции с переменным числом аргументов при
дедуктивном выводе.
23
Версия 1 операционной семантики блока:
(if ({ A }) var (+s A) then A)
Не подходит, если целевой язык имеет средства передачи
управления (операторы посылки исключений, операторы
break, continue, return и т. п.)
24
Добавляем в целевой язык новую концепцию — выражение
перехода (jump E).
Последовательность выражений E кодирует информацию о
том, какой оператор перехода сработал, и какую
информацию он передал.
(jump break) // break;
(jump throw v) // throw e;
(jump return v) // return e
v — значение выражения e.
25
Версия 2 операционной семантики для блока:
(if ({ A }) var (+s A) then A)
// просачивание выражения перехода
(if (jump E) ({ A })
var (+s E) (+s A) then (jump E))
26
Не подходит, если целевой язык имеет оператор перехода
goto L.
({ U (label L) V (goto L) W })
(jump goto L) просачивается за блок
27
Версия 3 операционной семантики для блока:
(if ({ A }) var (+s A)
then A (gotoStop A))
(if (jump E) ({ A })
var (+s E) (+s A) then A)
Добавление в целевой язык новой конструкции (gotoStop
A), которая «ловит» (jump goto L).
28
Определение конструкции (gotoStop A):
(if (gotoStop A) var A then)
29
(if (jump E) (gotoStop A)
var (+s E) (+s A) then
(matchCases (jump E)
(if (jump goto L) var L then
(matchCases (A)
(if (B (label L) C)
var (+s B) (+s C)
then C (gotoStop A))
(else (jump E))))
(else (jump E)) ))
30
Не подходит, если целевой язык имеет локальные
переменные:
{int x = 0;
{int x = 1;}
x = 2;}
Версия 4 …
31
Инкрементальность разработки.
Баланс между выразительной силой и
производительностью.
32
Логика безопасности versus логика Хоара
 символ (pre) хранит предусловие;
 нет ростусловия;
 вместо этого есть условия безопасности;
 «бесконечные» программы;
 символ (verCond) хранит список порожденных УК.
33
Логика безопасности для блока:
(if ({ A }) var (+s A)
then A (gotoStop A))
(if (jump E) ({ A })
var (+s E) (+s A) then A)
Правила перехода не меняются! Меняется способ их
применения.
34
Логика безопасности для (gotoStop A):
(if (gotoStop A) var A then)
35
(if (jump E) (gotoStop A)
var (+s E) (+s A) then
(matchCases (jump E)
(if (jump goto L) var L then
(matchCases (A)
(if (B (label L inv I) C)
var (+s B) (+s C) I then
(assert I))
(else (jump E)) ))
(else (jump E)) ))
36
Операционная семантика и логика безопасности для
условного оператора:
(if (if A then B else C)
var A (+s B) (+s C) then A (cases
(if ((val) = true) then B)
(else C)))
(if (jump E) (if A)
var (+s E) (+s A) then (jump E))
37
Спасибо за внимание!

Contenu connexe

Tendances

Программирование на языке C Sharp (СИ решетка)
Программирование на языке C Sharp (СИ решетка)Программирование на языке C Sharp (СИ решетка)
Программирование на языке C Sharp (СИ решетка)Alexandr Konfidentsialno
 
Программирование линейных алгоритмов
Программирование линейных алгоритмовПрограммирование линейных алгоритмов
Программирование линейных алгоритмовAndrey Dolinin
 
Статический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минутСтатический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минутAndrey Karpov
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioAndrey Karpov
 
2. Операторы языка C#
2. Операторы языка C#2. Операторы языка C#
2. Операторы языка C#Olga Maksimenkova
 
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...corehard_by
 
Программирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмовПрограммирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмовAndrey Dolinin
 
Презентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатикаПрезентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатика2berkas
 
Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?Andrey Karpov
 
1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#Olga Maksimenkova
 
Язык программирования C#
Язык программирования C#Язык программирования C#
Язык программирования C#Dmitri Soshnikov
 
Догнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_castДогнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_castRoman Orlov
 
Запись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка ПаскальЗапись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка ПаскальAndrey Dolinin
 
Rambler.iOS #9: Анализируй это!
Rambler.iOS #9: Анализируй это!Rambler.iOS #9: Анализируй это!
Rambler.iOS #9: Анализируй это!RAMBLER&Co
 
паскаль. часть1
паскаль. часть1паскаль. часть1
паскаль. часть1igorm9so
 
Павел Беликов, Как избежать ошибок, используя современный C++
Павел Беликов, Как избежать ошибок, используя современный C++Павел Беликов, Как избежать ошибок, используя современный C++
Павел Беликов, Как избежать ошибок, используя современный C++Sergey Platonov
 

Tendances (20)

Программирование на языке C Sharp (СИ решетка)
Программирование на языке C Sharp (СИ решетка)Программирование на языке C Sharp (СИ решетка)
Программирование на языке C Sharp (СИ решетка)
 
Программирование линейных алгоритмов
Программирование линейных алгоритмовПрограммирование линейных алгоритмов
Программирование линейных алгоритмов
 
Статический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минутСтатический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минут
 
8 3-4
8 3-48 3-4
8 3-4
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-Studio
 
2. Операторы языка C#
2. Операторы языка C#2. Операторы языка C#
2. Операторы языка C#
 
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
 
Программирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмовПрограммирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмов
 
8 3-3
8 3-38 3-3
8 3-3
 
8 3-5
8 3-58 3-5
8 3-5
 
Презентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатикаПрезентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатика
 
Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?
 
1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#
 
Язык программирования C#
Язык программирования C#Язык программирования C#
Язык программирования C#
 
Догнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_castДогнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_cast
 
Запись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка ПаскальЗапись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка Паскаль
 
Rambler.iOS #9: Анализируй это!
Rambler.iOS #9: Анализируй это!Rambler.iOS #9: Анализируй это!
Rambler.iOS #9: Анализируй это!
 
Python
PythonPython
Python
 
паскаль. часть1
паскаль. часть1паскаль. часть1
паскаль. часть1
 
Павел Беликов, Как избежать ошибок, используя современный C++
Павел Беликов, Как избежать ошибок, используя современный C++Павел Беликов, Как избежать ошибок, используя современный C++
Павел Беликов, Как избежать ошибок, используя современный C++
 

En vedette

TMPA-2013 Pakulin: Automation of Conformance Testing of TLS
TMPA-2013 Pakulin: Automation of Conformance Testing of TLSTMPA-2013 Pakulin: Automation of Conformance Testing of TLS
TMPA-2013 Pakulin: Automation of Conformance Testing of TLSIosif Itkin
 
КГТУ Лекция 2: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 2: Обеспечение Качества Программного ОбеспеченияКГТУ Лекция 2: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 2: Обеспечение Качества Программного ОбеспеченияIosif Itkin
 
Presentation to ILFQ on HFT
Presentation to ILFQ on HFTPresentation to ILFQ on HFT
Presentation to ILFQ on HFTIosif Itkin
 
IATE Lecture 1: Quality Assurance for Highload Systems
IATE Lecture 1: Quality Assurance for Highload SystemsIATE Lecture 1: Quality Assurance for Highload Systems
IATE Lecture 1: Quality Assurance for Highload SystemsIosif Itkin
 
TMPA-2013 Itsykson: Java Program Analysis
TMPA-2013 Itsykson: Java Program AnalysisTMPA-2013 Itsykson: Java Program Analysis
TMPA-2013 Itsykson: Java Program AnalysisIosif Itkin
 
TMPA-2013: LTL Specification
TMPA-2013: LTL SpecificationTMPA-2013: LTL Specification
TMPA-2013: LTL SpecificationIosif Itkin
 
IT Education Kostroma 22 May 2013
IT Education Kostroma 22 May 2013IT Education Kostroma 22 May 2013
IT Education Kostroma 22 May 2013Iosif Itkin
 
Высоконагруженные трейдинговые системы и их тестирование
Высоконагруженные трейдинговые системы и их тестирование Высоконагруженные трейдинговые системы и их тестирование
Высоконагруженные трейдинговые системы и их тестирование Iosif Itkin
 
TMPA-2013 Conference: Verification of Parallel Programs – Current Stage and P...
TMPA-2013 Conference: Verification of Parallel Programs – Current Stage and P...TMPA-2013 Conference: Verification of Parallel Programs – Current Stage and P...
TMPA-2013 Conference: Verification of Parallel Programs – Current Stage and P...Iosif Itkin
 

En vedette (9)

TMPA-2013 Pakulin: Automation of Conformance Testing of TLS
TMPA-2013 Pakulin: Automation of Conformance Testing of TLSTMPA-2013 Pakulin: Automation of Conformance Testing of TLS
TMPA-2013 Pakulin: Automation of Conformance Testing of TLS
 
КГТУ Лекция 2: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 2: Обеспечение Качества Программного ОбеспеченияКГТУ Лекция 2: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 2: Обеспечение Качества Программного Обеспечения
 
Presentation to ILFQ on HFT
Presentation to ILFQ on HFTPresentation to ILFQ on HFT
Presentation to ILFQ on HFT
 
IATE Lecture 1: Quality Assurance for Highload Systems
IATE Lecture 1: Quality Assurance for Highload SystemsIATE Lecture 1: Quality Assurance for Highload Systems
IATE Lecture 1: Quality Assurance for Highload Systems
 
TMPA-2013 Itsykson: Java Program Analysis
TMPA-2013 Itsykson: Java Program AnalysisTMPA-2013 Itsykson: Java Program Analysis
TMPA-2013 Itsykson: Java Program Analysis
 
TMPA-2013: LTL Specification
TMPA-2013: LTL SpecificationTMPA-2013: LTL Specification
TMPA-2013: LTL Specification
 
IT Education Kostroma 22 May 2013
IT Education Kostroma 22 May 2013IT Education Kostroma 22 May 2013
IT Education Kostroma 22 May 2013
 
Высоконагруженные трейдинговые системы и их тестирование
Высоконагруженные трейдинговые системы и их тестирование Высоконагруженные трейдинговые системы и их тестирование
Высоконагруженные трейдинговые системы и их тестирование
 
TMPA-2013 Conference: Verification of Parallel Programs – Current Stage and P...
TMPA-2013 Conference: Verification of Parallel Programs – Current Stage and P...TMPA-2013 Conference: Verification of Parallel Programs – Current Stage and P...
TMPA-2013 Conference: Verification of Parallel Programs – Current Stage and P...
 

Similaire à TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.Igor Shkulipa
 
Компилируемые в реальном времени DSL для С++
Компилируемые в реальном времени DSL для С++Компилируемые в реальном времени DSL для С++
Компилируемые в реальном времени DSL для С++corehard_by
 
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыТехнологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыPositive Development User Group
 
С.Ковалёв -- теория категорий как математическое основание MBSE
С.Ковалёв -- теория категорий как математическое основание MBSEС.Ковалёв -- теория категорий как математическое основание MBSE
С.Ковалёв -- теория категорий как математическое основание MBSEAnatoly Levenchuk
 
Formal verification of operating system kernels
Formal verification of operating system kernelsFormal verification of operating system kernels
Formal verification of operating system kernelsDenis Efremov
 
Функции в языке программирования QBasic
Функции в языке программирования QBasicФункции в языке программирования QBasic
Функции в языке программирования QBasickvlar
 
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...Mail.ru Group
 
Основы программирования на C++
Основы программирования на C++Основы программирования на C++
Основы программирования на C++Olga Maksimenkova
 
C# Desktop. Занятие 16.
C# Desktop. Занятие 16.C# Desktop. Занятие 16.
C# Desktop. Занятие 16.Igor Shkulipa
 
язык програмирования
язык програмированияязык програмирования
язык програмированияOlegmingalev1997
 
Инструментальная поддержка встроенных языков в IDE.
Инструментальная поддержка встроенных языков в IDE.Инструментальная поддержка встроенных языков в IDE.
Инструментальная поддержка встроенных языков в IDE.Semyon Grigorev
 
Языки программирования
Языки программированияЯзыки программирования
Языки программированияpaulsmirnov
 
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray ChapelЛекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray ChapelMikhail Kurnosov
 
О сложностях программирования, или C# нас не спасет?
О сложностях программирования, или C# нас не спасет?О сложностях программирования, или C# нас не спасет?
О сложностях программирования, или C# нас не спасет?Tatyanazaxarova
 
Специфика разработки и тестирования статического анализатора
Специфика разработки и тестирования статического анализатораСпецифика разработки и тестирования статического анализатора
Специфика разработки и тестирования статического анализатораAndrey Karpov
 
static - defcon russia 20
static  - defcon russia 20static  - defcon russia 20
static - defcon russia 20DefconRussia
 

Similaire à TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification (20)

C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.
 
Dsl for c++
Dsl for c++Dsl for c++
Dsl for c++
 
Компилируемые в реальном времени DSL для С++
Компилируемые в реальном времени DSL для С++Компилируемые в реальном времени DSL для С++
Компилируемые в реальном времени DSL для С++
 
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыТехнологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
 
С.Ковалёв -- теория категорий как математическое основание MBSE
С.Ковалёв -- теория категорий как математическое основание MBSEС.Ковалёв -- теория категорий как математическое основание MBSE
С.Ковалёв -- теория категорий как математическое основание MBSE
 
Formal verification of operating system kernels
Formal verification of operating system kernelsFormal verification of operating system kernels
Formal verification of operating system kernels
 
Функции в языке программирования QBasic
Функции в языке программирования QBasicФункции в языке программирования QBasic
Функции в языке программирования QBasic
 
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
 
Основы программирования на C++
Основы программирования на C++Основы программирования на C++
Основы программирования на C++
 
C# Desktop. Занятие 16.
C# Desktop. Занятие 16.C# Desktop. Занятие 16.
C# Desktop. Занятие 16.
 
C sharp deep dive
C sharp deep diveC sharp deep dive
C sharp deep dive
 
C# Deep Dive
C# Deep DiveC# Deep Dive
C# Deep Dive
 
язык програмирования
язык програмированияязык програмирования
язык програмирования
 
Инструментальная поддержка встроенных языков в IDE.
Инструментальная поддержка встроенных языков в IDE.Инструментальная поддержка встроенных языков в IDE.
Инструментальная поддержка встроенных языков в IDE.
 
Языки программирования
Языки программированияЯзыки программирования
Языки программирования
 
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray ChapelЛекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
 
О сложностях программирования, или C# нас не спасет?
О сложностях программирования, или C# нас не спасет?О сложностях программирования, или C# нас не спасет?
О сложностях программирования, или C# нас не спасет?
 
Специфика разработки и тестирования статического анализатора
Специфика разработки и тестирования статического анализатораСпецифика разработки и тестирования статического анализатора
Специфика разработки и тестирования статического анализатора
 
static - defcon russia 20
static  - defcon russia 20static  - defcon russia 20
static - defcon russia 20
 
Урок 8. Введение в редукцию графов
Урок 8. Введение в редукцию графовУрок 8. Введение в редукцию графов
Урок 8. Введение в редукцию графов
 

Plus de Iosif Itkin

Foundations of Software Testing Lecture 4
Foundations of Software Testing Lecture 4Foundations of Software Testing Lecture 4
Foundations of Software Testing Lecture 4Iosif Itkin
 
QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...
QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...
QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...Iosif Itkin
 
Exactpro FinTech Webinar - Global Exchanges Test Oracles
Exactpro FinTech Webinar - Global Exchanges Test OraclesExactpro FinTech Webinar - Global Exchanges Test Oracles
Exactpro FinTech Webinar - Global Exchanges Test OraclesIosif Itkin
 
Exactpro FinTech Webinar - Global Exchanges FIX Protocol
Exactpro FinTech Webinar - Global Exchanges FIX ProtocolExactpro FinTech Webinar - Global Exchanges FIX Protocol
Exactpro FinTech Webinar - Global Exchanges FIX ProtocolIosif Itkin
 
Operational Resilience in Financial Market Infrastructures
Operational Resilience in Financial Market InfrastructuresOperational Resilience in Financial Market Infrastructures
Operational Resilience in Financial Market InfrastructuresIosif Itkin
 
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
20 Simple Questions from Exactpro for Your Enjoyment This Holiday SeasonIosif Itkin
 
Testing the Intelligence of your AI
Testing the Intelligence of your AITesting the Intelligence of your AI
Testing the Intelligence of your AIIosif Itkin
 
EXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
EXTENT 2019: Exactpro Quality Assurance for Financial Market InfrastructuresEXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
EXTENT 2019: Exactpro Quality Assurance for Financial Market InfrastructuresIosif Itkin
 
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...Iosif Itkin
 
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan ShamraiEXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan ShamraiIosif Itkin
 
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference OpenEXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference OpenIosif Itkin
 
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...Iosif Itkin
 
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...Iosif Itkin
 
QA Community Saratov: Past, Present, Future (2019-02-08)
QA Community Saratov: Past, Present, Future (2019-02-08)QA Community Saratov: Past, Present, Future (2019-02-08)
QA Community Saratov: Past, Present, Future (2019-02-08)Iosif Itkin
 
Machine Learning and RoboCop Testing
Machine Learning and RoboCop TestingMachine Learning and RoboCop Testing
Machine Learning and RoboCop TestingIosif Itkin
 
Behaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibileBehaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibileIosif Itkin
 
2018 - Exactpro Year in Review
2018 - Exactpro Year in Review2018 - Exactpro Year in Review
2018 - Exactpro Year in ReviewIosif Itkin
 
Exactpro Discussion about Joy and Strategy
Exactpro Discussion about Joy and StrategyExactpro Discussion about Joy and Strategy
Exactpro Discussion about Joy and StrategyIosif Itkin
 
FIX EMEA Conference 2018 - Post Trade Software Testing Challenges
FIX EMEA Conference 2018 - Post Trade Software Testing ChallengesFIX EMEA Conference 2018 - Post Trade Software Testing Challenges
FIX EMEA Conference 2018 - Post Trade Software Testing ChallengesIosif Itkin
 
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)Iosif Itkin
 

Plus de Iosif Itkin (20)

Foundations of Software Testing Lecture 4
Foundations of Software Testing Lecture 4Foundations of Software Testing Lecture 4
Foundations of Software Testing Lecture 4
 
QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...
QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...
QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...
 
Exactpro FinTech Webinar - Global Exchanges Test Oracles
Exactpro FinTech Webinar - Global Exchanges Test OraclesExactpro FinTech Webinar - Global Exchanges Test Oracles
Exactpro FinTech Webinar - Global Exchanges Test Oracles
 
Exactpro FinTech Webinar - Global Exchanges FIX Protocol
Exactpro FinTech Webinar - Global Exchanges FIX ProtocolExactpro FinTech Webinar - Global Exchanges FIX Protocol
Exactpro FinTech Webinar - Global Exchanges FIX Protocol
 
Operational Resilience in Financial Market Infrastructures
Operational Resilience in Financial Market InfrastructuresOperational Resilience in Financial Market Infrastructures
Operational Resilience in Financial Market Infrastructures
 
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
 
Testing the Intelligence of your AI
Testing the Intelligence of your AITesting the Intelligence of your AI
Testing the Intelligence of your AI
 
EXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
EXTENT 2019: Exactpro Quality Assurance for Financial Market InfrastructuresEXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
EXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
 
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
 
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan ShamraiEXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
 
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference OpenEXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
 
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
 
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
 
QA Community Saratov: Past, Present, Future (2019-02-08)
QA Community Saratov: Past, Present, Future (2019-02-08)QA Community Saratov: Past, Present, Future (2019-02-08)
QA Community Saratov: Past, Present, Future (2019-02-08)
 
Machine Learning and RoboCop Testing
Machine Learning and RoboCop TestingMachine Learning and RoboCop Testing
Machine Learning and RoboCop Testing
 
Behaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibileBehaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibile
 
2018 - Exactpro Year in Review
2018 - Exactpro Year in Review2018 - Exactpro Year in Review
2018 - Exactpro Year in Review
 
Exactpro Discussion about Joy and Strategy
Exactpro Discussion about Joy and StrategyExactpro Discussion about Joy and Strategy
Exactpro Discussion about Joy and Strategy
 
FIX EMEA Conference 2018 - Post Trade Software Testing Challenges
FIX EMEA Conference 2018 - Post Trade Software Testing ChallengesFIX EMEA Conference 2018 - Post Trade Software Testing Challenges
FIX EMEA Conference 2018 - Post Trade Software Testing Challenges
 
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
 

TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Deductive Program Verification

  • 1. 1 На пути к технологии разработки средств дедуктивной верификации программ Игорь Ануреев Институт систем информатики имени А.П. Ершова Новосибирск anureev@iis.nsk.su
  • 2. 2 План доклада:  дедуктивная верификация;  схема дедуктивного верификатора;  недостатки существующих дедуктивных верификаторов;  унифицированный предметно-ориентированный подход к разработке дедуктивных верификаторов.
  • 3. 3 Дедуктивная верификация — процедура Параметры дедуктивной верификации: AnProgSet — множество аннотированных программ; Log — логика (язык + семантика); AxSem — аксиоматическая семантика программ из AnProgSet относительно Log
  • 4. 4 3 этапа дедуктивной верификации:  порождение условий корректности (формул Log) по A ∈ AnProgSet в соответствии с AxSem;  доказательство условий корректности;  интерпретация результатов доказательства для A.
  • 5. 5 Аннотированная программа = программа на целевом языке + аннотации на языке аннотаций. Аннотации описывают свойства программы.
  • 6. 6 Аннотированная программа ≡ формула «Свойства программы, представленные аннотациями, выполнены» Пример: тройка Хоара {P} A {Q}. P, Q ∈ Log — предусловие и постусловие Аннотированная программа корректна, если соответствующая ей формула истинна.
  • 7. 7 Аксиоматическая семантика программ из AnProgSet относительно Log — набор правил вывода, включающих формулы из AnProgSet и Log. Пример: {P ∧ A} B {Q} {P ∧ ¬ A} C {Q} ----------------------------------------- {P} if A then B else C {Q}
  • 8. 8 Вход дедуктивного верификатора: A ∈ AnProgSet Выход дедуктивного верификатора:  A корректна;  A некорректна;  A некорректна + интерпретация результата доказательства условий корректности;  Не знаю.
  • 9. 9 Параметры дедуктивного верификатора:  целевой язык, язык аннотаций;  AnProgSet, Log, AxSem;  стратегии вывода в AxSem;  решатели условий корректности;
  • 10. 10 Параметры дедуктивного верификатора:  техники трансформации аннотированных программ;  техники трансформации УК;  техники комбинирования решателей УК;  техники применения решателей УК при выводе УК;  техники применения трансформаций аннотированных программ при выводе УК.
  • 11. 11 Недостатки существующих дедуктивных верификаторов:  дедуктивный верификатор — черный ящик;  корректность дедуктивного верификатора;  выразительная сила;  адаптируемость под конкретную задачу верификации;  интуитивно-понятный интерфейс.
  • 12. 12 Унифицированый предметно-ориентированный подход к разработке дедуктивных верификаторов — использование предметно-ориентированного языка (DSL) для этой предметной области.
  • 13. 13 Основные понятия языка Atoment … Выражения (аля Лисп) (aa (bbbb uu) ′′′′s( d)′′) aa, ′′′′s( d)′′ — атомы.
  • 14. 14 Выражения используются для представления объектов верификации (аннотированных программ, условий корректности, …):  (if A then B else C)  (forall x (A or B)) или (∀ x (A ∨ B)) Две семантики выражения:  операционная (изменение состояния)  денотационная (получение значения)
  • 15. 15 Символы (функциональные) (+v + +v) (forall –v -v) (send message +v to +v) используются для описания состояния (в операционной семантики выражений) и вычисления значения (в денотационной семантике выражений).
  • 16. 16 Символы делятся на  предопределенные (значение определяется интерпретацией);  определяемые (значение определяется состоянием) .
  • 17. 17 Интерпретация I — функция на символах такая, что I(символ) = функция из En → E. E — множество элементов (денотат). выражения ⊆ E Пример: I(+v + +v) = функция сложения чисел.
  • 18. 18 Состояние — функция на символах такая, что s(символ) = конечная функция из En → E. Примеры: s(value of -v) = {(x, 1), (y, true)} s(type of -v) = {(x, int), (y, bool)}
  • 19. 19 Денотационная семантика выражений val(AA, s) = AA; // AA — атом val(((2 + 3) + (value of x)), s) = I(+v + +v)(val(2+3, s), s(value of +v)(x))
  • 20. 20 Операционная семантика выражений определяется отношением перехода на конфигурациях. Конфигурация — пара (U, s). U — (управляющая) последовательность выражений. Отношение перехода → ⊆ Conf × Conf. Conf — множество всех конфигураций.
  • 21. 21 Выражения делятся на  предопределенные (E U, s) → (U′, s′);  определяемые (правилами переходов).
  • 22. 22 Особенности подхода на примерах:  инкрементальность разработки (операционной семантики, аксиоматической семантики, …);  легкость введения дополнительных конструкций в целевой язык;  гибкость разработки;  разрешение на месте побочных эффектов при дедуктивном выводе;  конструкции с переменным числом аргументов при дедуктивном выводе.
  • 23. 23 Версия 1 операционной семантики блока: (if ({ A }) var (+s A) then A) Не подходит, если целевой язык имеет средства передачи управления (операторы посылки исключений, операторы break, continue, return и т. п.)
  • 24. 24 Добавляем в целевой язык новую концепцию — выражение перехода (jump E). Последовательность выражений E кодирует информацию о том, какой оператор перехода сработал, и какую информацию он передал. (jump break) // break; (jump throw v) // throw e; (jump return v) // return e v — значение выражения e.
  • 25. 25 Версия 2 операционной семантики для блока: (if ({ A }) var (+s A) then A) // просачивание выражения перехода (if (jump E) ({ A }) var (+s E) (+s A) then (jump E))
  • 26. 26 Не подходит, если целевой язык имеет оператор перехода goto L. ({ U (label L) V (goto L) W }) (jump goto L) просачивается за блок
  • 27. 27 Версия 3 операционной семантики для блока: (if ({ A }) var (+s A) then A (gotoStop A)) (if (jump E) ({ A }) var (+s E) (+s A) then A) Добавление в целевой язык новой конструкции (gotoStop A), которая «ловит» (jump goto L).
  • 29. 29 (if (jump E) (gotoStop A) var (+s E) (+s A) then (matchCases (jump E) (if (jump goto L) var L then (matchCases (A) (if (B (label L) C) var (+s B) (+s C) then C (gotoStop A)) (else (jump E)))) (else (jump E)) ))
  • 30. 30 Не подходит, если целевой язык имеет локальные переменные: {int x = 0; {int x = 1;} x = 2;} Версия 4 …
  • 31. 31 Инкрементальность разработки. Баланс между выразительной силой и производительностью.
  • 32. 32 Логика безопасности versus логика Хоара  символ (pre) хранит предусловие;  нет ростусловия;  вместо этого есть условия безопасности;  «бесконечные» программы;  символ (verCond) хранит список порожденных УК.
  • 33. 33 Логика безопасности для блока: (if ({ A }) var (+s A) then A (gotoStop A)) (if (jump E) ({ A }) var (+s E) (+s A) then A) Правила перехода не меняются! Меняется способ их применения.
  • 34. 34 Логика безопасности для (gotoStop A): (if (gotoStop A) var A then)
  • 35. 35 (if (jump E) (gotoStop A) var (+s E) (+s A) then (matchCases (jump E) (if (jump goto L) var L then (matchCases (A) (if (B (label L inv I) C) var (+s B) (+s C) I then (assert I)) (else (jump E)) )) (else (jump E)) ))
  • 36. 36 Операционная семантика и логика безопасности для условного оператора: (if (if A then B else C) var A (+s B) (+s C) then A (cases (if ((val) = true) then B) (else C))) (if (jump E) (if A) var (+s E) (+s A) then (jump E))