ݺߣ

ݺߣShare a Scribd company logo
Верификация Опыт встраивания верификатора  NuSMV   в систему  IronHand Докладывает : Большаков О.С. Рыбинск, 2010
Верификация  –  анализ корректности программных систем относительно спецификации, в которой задаются исследуемые свойства. Виды верификации: тестирование метод доказательства теорем (theorem proving) метод проверки модели (model checking).
Model Checking   (проверка модели) Общая схема
Верификаторы : CPN-Tools   ( C PN Group, University of Aarhus) -  Модель представляется в виде   сетей Петри -  Только графическая оболочка -  Медленная работа Spin   ( Bell Labs )   -  Текстовый   язык  Promella -  Open Source NuSMV   (Carnegy Mellon University)
NuSMV  (New Symbolic Model Verifier) Open Source  (GNU LGPL)  Написан на  ANCI C,  совместим с  POSIX ( Portable Operating System Interface for Unix   ) Продолжение закрытого верификатора  SMV (Carnegy Mellon University) Входной язык – текстовый язык  SMV Возможность задания модели в виде синхронных / асинхронных конечных автоматов
Схема верификации  c NuSMV
Пример модуля на  SMV MODULE main VAR request : boolean; state :  { ready, busy } ; ASSIGN init(state) := ready; next(state) := case   state = ready & request = 1 : busy;   1 :  { ready, busy } ;   esac;
Модель двоичного счетчика Рассмотрим модель счетчика от 000 до 111 и так далее по циклу Для этого организуем систему из трех счетчиков в связь через переносы бита  carry_in :
Модель двоичного счетчика MODULE  counter_cell(carry_in) VAR   value : boolean; ASSIGN init(value) := 0; next(value) := (value + carry_in) mod 2; DEFINE carry_out := value & carry_in; MODULE  main VAR bit0 : counter_cell(1); bit1 : counter_cell(bit0.carry_out); bit2 : counter_cell(bit1.carry_out);
MODULE  counter_cell(carry_in) VAR   value : boolean; ASSIGN init(value) := 0; next(value) := (value + carry_in) mod 2; DEFINE carry_out := value & carry_in; MODULE  main VAR bit0 :  process  counter_cell(1); bit1 :  process  counter_cell(bit0.carry_out); bit2 :  process  counter_cell(bit1.carry_out);
MODULE  counter_cell(carry_in) VAR   value : boolean; ASSIGN init(value) := 0; next(value) := (value + carry_in) mod 2; DEFINE carry_out := value & carry_in; FAIRNESS  running MODULE  main VAR bit0 :  process  counter_cell(1); bit1 :  process  counter_cell(bit0.carry_out); bit2 :  process  counter_cell(bit1.carry_out);
Темпоральные логики Темпоральная логика  –  модальная логика, позволяющая формализовать высказывания, зависящие от времени LTL  (Linear Tree Logic) CTL (Computation Tree Logic)
Темпоральные логики LTL - спецификация: --  FUTURE X  ltl_expr  -- ne X t state G  ltl_expr  --  G lobally F  ltl_expr  --  F inally ltl_expr  U  ltl_expr --  U ntil ltl_expr  V  ltl_expr -- releases -- PAST Y  ltl_expr  -- previous state Z  ltl_expr  -- not previous state not H  ltl_expr  --  H istorically O  ltl_expr  --  O nce ltl_expr  S  ltl_expr --  S ince ltl_expr  T  ltl_expr --  T riggered
Темпоральные логики CTL - спецификация: EG  ctl_expr  -- Exists Globally EX  ctl_expr  -- Exists neXt state EF  ctl_expr  -- Exists Finally AG  ctl_expr  -- forAll Globally AX  ctl_expr  -- forAll neXt state AF  ctl_expr  -- forAll Finally E  [ ctl_expr U ctl_expr ] -- Exists until A  [ ctl_expr U ctl_expr ] -- forAll until
Списки Команд Фрагмент списков команд
Формат спецификации Если МП-11.Стол.Поднят  И МП-11.ВерхняяРука.Выдвинута  ИЛИ МП-11.НижняяРука.Выдвинута  И МП-9С.Стол.Поднят  И МП-9С.Рука.Выдвинута Не возникает МП-11.Стол.Поворот  ИЛИ МП-9С.Стол.Поворот Интуитивное задание проверяемого свойства:
Декомпозиция системы на модули
Схема   кода на  SMV -- i- ый   модуль MODULE Modulei(tact_num) VAR st: 0..100; ASSIGN init(st) := 0; next(st) := case   … .   1 : st;   esac; FAIRNESS running
Схема   кода на  SMV - -  Счетчик тактов MODULE MTactCounter(st0, st1, …, sti, stn) VAR tact_num : 0..300; cycle_num : 0..300; ASSIGN init(tact_num) := 1; next(tact_num) := case tact_num = 1 & st1 = … & st2 = … & … & stn = … : 2; tact_num = 2 & st1 = … & st2 = … & … & stn = … : 3; tact_num = m : m+1; 1 : tact_num;   esac; init(cycle_num) := 0; next(cycle_num) := case … esac; FAIRNESS running
Схема   кода на  SMV //  главный модуль MODULE main VAR tactCounter : process MTactCounter(m0.st, m1.st, …mi.st, … mn.st);   m0 : process Module0(tactCounter.tact_num);   m1 : process Module1(tactCounter.tact_num);   …   mi : process Modulei(tactCounter.tact_num);   …   mn : process Modulen(tactCounter.tact_num); FAIRNESS running
Задание спецификации SPEC AG  !  ( ( m 1. st  >= 0 &  m 1. st  <= 5)  & ( m 2. st  >= 7 &  m 2. st  <= 10) )   Пример задания свойства:
Верификация  в  IronHand
Спасибо за внимание!

More Related Content

What's hot (20)

Erlang
ErlangErlang
Erlang
Виктор Тыщенко
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.ТаксиМетапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Mail.ru Group
Метапрограммирование: строим конечный автомат. Сергей Федоров ➠ CoreHard Aut...
Метапрограммирование: строим конечный автомат. Сергей Федоров ➠  CoreHard Aut...Метапрограммирование: строим конечный автомат. Сергей Федоров ➠  CoreHard Aut...
Метапрограммирование: строим конечный автомат. Сергей Федоров ➠ CoreHard Aut...
corehard_by
Циклы
ЦиклыЦиклы
Циклы
slbazhenova
Ввод - вывод алфавитно цифровой информации
Ввод - вывод алфавитно цифровой информацииВвод - вывод алфавитно цифровой информации
Ввод - вывод алфавитно цифровой информации
Lungu
PetrKerzum (Yandex) @ CodeCamp2011
PetrKerzum (Yandex) @ CodeCamp2011PetrKerzum (Yandex) @ CodeCamp2011
PetrKerzum (Yandex) @ CodeCamp2011
CodeCamp
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMДмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Sergey Platonov
DI в C++ тонкости и нюансы
DI в C++ тонкости и нюансыDI в C++ тонкости и нюансы
DI в C++ тонкости и нюансы
Platonov Sergey
5.4 Ключевые слова static и inline
5.4 Ключевые слова static и inline5.4 Ключевые слова static и inline
5.4 Ключевые слова static и inline
DEVTYPE
Повышение конверсии через оптимизацию JS
Повышение конверсии через оптимизацию JSПовышение конверсии через оптимизацию JS
Повышение конверсии через оптимизацию JS
Антон Плешивцев
указатель на функцию
указатель на функциюуказатель на функцию
указатель на функцию
Aleksandr Pavlenko
ПРОЦЕДУРЫ
ПРОЦЕДУРЫ ПРОЦЕДУРЫ
ПРОЦЕДУРЫ
Colegiul de Industrie Usoara
основы программирования на языке C
основы программирования на языке Cосновы программирования на языке C
основы программирования на языке C
student_kai
презентации продолжение банкета
презентации продолжение банкетапрезентации продолжение банкета
презентации продолжение банкета
student_kai
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.ТаксиМетапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Mail.ru Group
Метапрограммирование: строим конечный автомат. Сергей Федоров ➠ CoreHard Aut...
Метапрограммирование: строим конечный автомат. Сергей Федоров ➠  CoreHard Aut...Метапрограммирование: строим конечный автомат. Сергей Федоров ➠  CoreHard Aut...
Метапрограммирование: строим конечный автомат. Сергей Федоров ➠ CoreHard Aut...
corehard_by
Ввод - вывод алфавитно цифровой информации
Ввод - вывод алфавитно цифровой информацииВвод - вывод алфавитно цифровой информации
Ввод - вывод алфавитно цифровой информации
Lungu
PetrKerzum (Yandex) @ CodeCamp2011
PetrKerzum (Yandex) @ CodeCamp2011PetrKerzum (Yandex) @ CodeCamp2011
PetrKerzum (Yandex) @ CodeCamp2011
CodeCamp
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMДмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Sergey Platonov
DI в C++ тонкости и нюансы
DI в C++ тонкости и нюансыDI в C++ тонкости и нюансы
DI в C++ тонкости и нюансы
Platonov Sergey
5.4 Ключевые слова static и inline
5.4 Ключевые слова static и inline5.4 Ключевые слова static и inline
5.4 Ключевые слова static и inline
DEVTYPE
Повышение конверсии через оптимизацию JS
Повышение конверсии через оптимизацию JSПовышение конверсии через оптимизацию JS
Повышение конверсии через оптимизацию JS
Антон Плешивцев
указатель на функцию
указатель на функциюуказатель на функцию
указатель на функцию
Aleksandr Pavlenko
основы программирования на языке C
основы программирования на языке Cосновы программирования на языке C
основы программирования на языке C
student_kai
презентации продолжение банкета
презентации продолжение банкетапрезентации продолжение банкета
презентации продолжение банкета
student_kai

Viewers also liked (20)

Sportsmanship!learn how to_be_respectful!_)
Sportsmanship!learn how to_be_respectful!_)Sportsmanship!learn how to_be_respectful!_)
Sportsmanship!learn how to_be_respectful!_)
Nsn07
Porcentjes feria1Porcentjes feria1
Porcentjes feria1
sandramilenaguerrero
L’estiu. aleix i adria
L’estiu. aleix i adriaL’estiu. aleix i adria
L’estiu. aleix i adria
jborra36
Elsa lé fev 2012.pptxElsa lé fev 2012.pptx
Elsa lé fev 2012.pptx
Luzia Bastos
Arets-ErgonomieArets-Ergonomie
Arets-Ergonomie
Maurice Arets
Esquemes de filosofia
Esquemes de filosofiaEsquemes de filosofia
Esquemes de filosofia
deivid37
FYI  - Inside Cannes # 8FYI  - Inside Cannes # 8
FYI - Inside Cannes # 8
lorealpariscan
21 de outubro diego21 de outubro diego
21 de outubro diego
psfescola
Esquema proyecto ucv_2daespecialidadEsquema proyecto ucv_2daespecialidad
Esquema proyecto ucv_2daespecialidad
Edgar Sanchez
BulimiaBulimia
Bulimia
Karol Garza
Hoja vida introduccion a la ingenieria trabajoHoja vida introduccion a la ingenieria trabajo
Hoja vida introduccion a la ingenieria trabajo
julian_urrea
7.1 ikt-ikastetxe-eredua(1)ok
7.1 ikt-ikastetxe-eredua(1)ok7.1 ikt-ikastetxe-eredua(1)ok
7.1 ikt-ikastetxe-eredua(1)ok
laurak4444
Lectura 6Lectura 6
Lectura 6
Nataly Andrea
Sportsmanship!learn how to_be_respectful!_)
Sportsmanship!learn how to_be_respectful!_)Sportsmanship!learn how to_be_respectful!_)
Sportsmanship!learn how to_be_respectful!_)
Nsn07
Porcentjes feria1Porcentjes feria1
Porcentjes feria1
sandramilenaguerrero
L’estiu. aleix i adria
L’estiu. aleix i adriaL’estiu. aleix i adria
L’estiu. aleix i adria
jborra36
Elsa lé fev 2012.pptxElsa lé fev 2012.pptx
Elsa lé fev 2012.pptx
Luzia Bastos
Arets-ErgonomieArets-Ergonomie
Arets-Ergonomie
Maurice Arets
Esquemes de filosofia
Esquemes de filosofiaEsquemes de filosofia
Esquemes de filosofia
deivid37
FYI  - Inside Cannes # 8FYI  - Inside Cannes # 8
FYI - Inside Cannes # 8
lorealpariscan
21 de outubro diego21 de outubro diego
21 de outubro diego
psfescola
Esquema proyecto ucv_2daespecialidadEsquema proyecto ucv_2daespecialidad
Esquema proyecto ucv_2daespecialidad
Edgar Sanchez
Hoja vida introduccion a la ingenieria trabajoHoja vida introduccion a la ingenieria trabajo
Hoja vida introduccion a la ingenieria trabajo
julian_urrea
7.1 ikt-ikastetxe-eredua(1)ok
7.1 ikt-ikastetxe-eredua(1)ok7.1 ikt-ikastetxe-eredua(1)ok
7.1 ikt-ikastetxe-eredua(1)ok
laurak4444
Lectura 6Lectura 6
Lectura 6
Nataly Andrea

Similar to верификация (20)

Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Yandex
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
Iosif Itkin
Пояснения к статье про Copy-Paste
Пояснения к статье про Copy-PasteПояснения к статье про Copy-Paste
Пояснения к статье про Copy-Paste
Tatyanazaxarova
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
etyumentcev
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
Eugeniy Tyumentcev
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
Alexey Paznikov
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
Mikhail Kurnosov
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода
Pavel Tsukanov
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кода
Andrey Karpov
Rambler.iOS #9: Анализируй это!
Rambler.iOS #9: Анализируй это!Rambler.iOS #9: Анализируй это!
Rambler.iOS #9: Анализируй это!
RAMBLER&Co
Опыт разработки статического анализатора кода
Опыт разработки статического анализатора кодаОпыт разработки статического анализатора кода
Опыт разработки статического анализатора кода
Andrey Karpov
Павел Беликов, Как избежать ошибок, используя современный C++
Павел Беликов, Как избежать ошибок, используя современный C++Павел Беликов, Как избежать ошибок, используя современный C++
Павел Беликов, Как избежать ошибок, используя современный C++
Sergey Platonov
20090222 parallel programming_lecture01-07
20090222 parallel programming_lecture01-0720090222 parallel programming_lecture01-07
20090222 parallel programming_lecture01-07
Computer Science Club
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)
Smolensk Computer Science Club
язык програмирования
язык програмированияязык програмирования
язык програмирования
Olegmingalev1997
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Mikhail Kurnosov
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Mikhail Kurnosov
Java 8 puzzlers
Java 8 puzzlersJava 8 puzzlers
Java 8 puzzlers
Evgeny Borisov
A System of Deductive Verification of Predicate Programs
A System of Deductive Verification of Predicate ProgramsA System of Deductive Verification of Predicate Programs
A System of Deductive Verification of Predicate Programs
Iosif Itkin
1 встреча — Параллельное программирование (А. Свириденков)
1 встреча — Параллельное программирование (А. Свириденков)1 встреча — Параллельное программирование (А. Свириденков)
1 встреча — Параллельное программирование (А. Свириденков)
Smolensk Computer Science Club
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Yandex
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
Iosif Itkin
Пояснения к статье про Copy-Paste
Пояснения к статье про Copy-PasteПояснения к статье про Copy-Paste
Пояснения к статье про Copy-Paste
Tatyanazaxarova
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
etyumentcev
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
Eugeniy Tyumentcev
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
Alexey Paznikov
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
Mikhail Kurnosov
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода
Pavel Tsukanov
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кода
Andrey Karpov
Rambler.iOS #9: Анализируй это!
Rambler.iOS #9: Анализируй это!Rambler.iOS #9: Анализируй это!
Rambler.iOS #9: Анализируй это!
RAMBLER&Co
Опыт разработки статического анализатора кода
Опыт разработки статического анализатора кодаОпыт разработки статического анализатора кода
Опыт разработки статического анализатора кода
Andrey Karpov
Павел Беликов, Как избежать ошибок, используя современный C++
Павел Беликов, Как избежать ошибок, используя современный C++Павел Беликов, Как избежать ошибок, используя современный C++
Павел Беликов, Как избежать ошибок, используя современный C++
Sergey Platonov
20090222 parallel programming_lecture01-07
20090222 parallel programming_lecture01-0720090222 parallel programming_lecture01-07
20090222 parallel programming_lecture01-07
Computer Science Club
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)
Smolensk Computer Science Club
язык програмирования
язык програмированияязык програмирования
язык програмирования
Olegmingalev1997
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Mikhail Kurnosov
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Mikhail Kurnosov
A System of Deductive Verification of Predicate Programs
A System of Deductive Verification of Predicate ProgramsA System of Deductive Verification of Predicate Programs
A System of Deductive Verification of Predicate Programs
Iosif Itkin
1 встреча — Параллельное программирование (А. Свириденков)
1 встреча — Параллельное программирование (А. Свириденков)1 встреча — Параллельное программирование (А. Свириденков)
1 встреча — Параллельное программирование (А. Свириденков)
Smolensk Computer Science Club

More from Alexander Petrov (20)

учебное оборудование для вуза сатэк
учебное оборудование для вуза сатэкучебное оборудование для вуза сатэк
учебное оборудование для вуза сатэк
Alexander Petrov
Язык программирования SocLang (VKLang)
Язык программирования SocLang (VKLang)Язык программирования SocLang (VKLang)
Язык программирования SocLang (VKLang)
Alexander Petrov
робототехника - проблемы и перспективы (СМП-2014)
робототехника - проблемы и перспективы (СМП-2014)робототехника - проблемы и перспективы (СМП-2014)
робототехника - проблемы и перспективы (СМП-2014)
Alexander Petrov
портативный тифлоплеер с голосовым управлением
портативный тифлоплеер с голосовым управлениемпортативный тифлоплеер с голосовым управлением
портативный тифлоплеер с голосовым управлением
Alexander Petrov
Автономный мобильный робот (АМР-1)
Автономный мобильный робот (АМР-1)Автономный мобильный робот (АМР-1)
Автономный мобильный робот (АМР-1)
Alexander Petrov
Биржа инновационных проектов
Биржа инновационных проектовБиржа инновационных проектов
Биржа инновационных проектов
Alexander Petrov
Программа моделирования алгоритма параллельных подстановок и пример его реали...
Программа моделирования алгоритма параллельных подстановок и пример его реали...Программа моделирования алгоритма параллельных подстановок и пример его реали...
Программа моделирования алгоритма параллельных подстановок и пример его реали...
Alexander Petrov
Сайт кафедры мпо эвс
Сайт кафедры мпо эвсСайт кафедры мпо эвс
Сайт кафедры мпо эвс
Alexander Petrov
Проект "Стенд" для проведения лабораторных работ по физике
Проект   "Стенд" для проведения лабораторных работ по физикеПроект   "Стенд" для проведения лабораторных работ по физике
Проект "Стенд" для проведения лабораторных работ по физике
Alexander Petrov
Проект системы управления гидродинамическим стендом.
Проект системы управления гидродинамическим стендом.Проект системы управления гидродинамическим стендом.
Проект системы управления гидродинамическим стендом.
Alexander Petrov
Устройство микроджойстик
Устройство микроджойстикУстройство микроджойстик
Устройство микроджойстик
Alexander Petrov
Разработка охранной сигнализации «СКАТ»
Разработка охранной сигнализации «СКАТ» Разработка охранной сигнализации «СКАТ»
Разработка охранной сигнализации «СКАТ»
Alexander Petrov
Презентация бакалаврской работы Артема Лебедева
Презентация бакалаврской работы Артема ЛебедеваПрезентация бакалаврской работы Артема Лебедева
Презентация бакалаврской работы Артема Лебедева
Alexander Petrov
Satek easy mcu - english
Satek easy mcu - englishSatek easy mcu - english
Satek easy mcu - english
Alexander Petrov
обзор методов построения карт глубин2
обзор методов построения карт глубин2обзор методов построения карт глубин2
обзор методов построения карт глубин2
Alexander Petrov
учебное оборудование для вуза сатэк
учебное оборудование для вуза сатэкучебное оборудование для вуза сатэк
учебное оборудование для вуза сатэк
Alexander Petrov
Язык программирования SocLang (VKLang)
Язык программирования SocLang (VKLang)Язык программирования SocLang (VKLang)
Язык программирования SocLang (VKLang)
Alexander Petrov
робототехника - проблемы и перспективы (СМП-2014)
робототехника - проблемы и перспективы (СМП-2014)робототехника - проблемы и перспективы (СМП-2014)
робототехника - проблемы и перспективы (СМП-2014)
Alexander Petrov
портативный тифлоплеер с голосовым управлением
портативный тифлоплеер с голосовым управлениемпортативный тифлоплеер с голосовым управлением
портативный тифлоплеер с голосовым управлением
Alexander Petrov
Автономный мобильный робот (АМР-1)
Автономный мобильный робот (АМР-1)Автономный мобильный робот (АМР-1)
Автономный мобильный робот (АМР-1)
Alexander Petrov
Биржа инновационных проектов
Биржа инновационных проектовБиржа инновационных проектов
Биржа инновационных проектов
Alexander Petrov
Программа моделирования алгоритма параллельных подстановок и пример его реали...
Программа моделирования алгоритма параллельных подстановок и пример его реали...Программа моделирования алгоритма параллельных подстановок и пример его реали...
Программа моделирования алгоритма параллельных подстановок и пример его реали...
Alexander Petrov
Сайт кафедры мпо эвс
Сайт кафедры мпо эвсСайт кафедры мпо эвс
Сайт кафедры мпо эвс
Alexander Petrov
Проект "Стенд" для проведения лабораторных работ по физике
Проект   "Стенд" для проведения лабораторных работ по физикеПроект   "Стенд" для проведения лабораторных работ по физике
Проект "Стенд" для проведения лабораторных работ по физике
Alexander Petrov
Проект системы управления гидродинамическим стендом.
Проект системы управления гидродинамическим стендом.Проект системы управления гидродинамическим стендом.
Проект системы управления гидродинамическим стендом.
Alexander Petrov
Устройство микроджойстик
Устройство микроджойстикУстройство микроджойстик
Устройство микроджойстик
Alexander Petrov
Разработка охранной сигнализации «СКАТ»
Разработка охранной сигнализации «СКАТ» Разработка охранной сигнализации «СКАТ»
Разработка охранной сигнализации «СКАТ»
Alexander Petrov
Презентация бакалаврской работы Артема Лебедева
Презентация бакалаврской работы Артема ЛебедеваПрезентация бакалаврской работы Артема Лебедева
Презентация бакалаврской работы Артема Лебедева
Alexander Petrov
обзор методов построения карт глубин2
обзор методов построения карт глубин2обзор методов построения карт глубин2
обзор методов построения карт глубин2
Alexander Petrov

верификация

  • 1. Верификация Опыт встраивания верификатора NuSMV в систему IronHand Докладывает : Большаков О.С. Рыбинск, 2010
  • 2. Верификация – анализ корректности программных систем относительно спецификации, в которой задаются исследуемые свойства. Виды верификации: тестирование метод доказательства теорем (theorem proving) метод проверки модели (model checking).
  • 3. Model Checking (проверка модели) Общая схема
  • 4. Верификаторы : CPN-Tools ( C PN Group, University of Aarhus) - Модель представляется в виде сетей Петри - Только графическая оболочка - Медленная работа Spin ( Bell Labs ) - Текстовый язык Promella - Open Source NuSMV (Carnegy Mellon University)
  • 5. NuSMV (New Symbolic Model Verifier) Open Source (GNU LGPL) Написан на ANCI C, совместим с POSIX ( Portable Operating System Interface for Unix ) Продолжение закрытого верификатора SMV (Carnegy Mellon University) Входной язык – текстовый язык SMV Возможность задания модели в виде синхронных / асинхронных конечных автоматов
  • 7. Пример модуля на SMV MODULE main VAR request : boolean; state : { ready, busy } ; ASSIGN init(state) := ready; next(state) := case state = ready & request = 1 : busy; 1 : { ready, busy } ; esac;
  • 8. Модель двоичного счетчика Рассмотрим модель счетчика от 000 до 111 и так далее по циклу Для этого организуем систему из трех счетчиков в связь через переносы бита carry_in :
  • 9. Модель двоичного счетчика MODULE counter_cell(carry_in) VAR value : boolean; ASSIGN init(value) := 0; next(value) := (value + carry_in) mod 2; DEFINE carry_out := value & carry_in; MODULE main VAR bit0 : counter_cell(1); bit1 : counter_cell(bit0.carry_out); bit2 : counter_cell(bit1.carry_out);
  • 10. MODULE counter_cell(carry_in) VAR value : boolean; ASSIGN init(value) := 0; next(value) := (value + carry_in) mod 2; DEFINE carry_out := value & carry_in; MODULE main VAR bit0 : process counter_cell(1); bit1 : process counter_cell(bit0.carry_out); bit2 : process counter_cell(bit1.carry_out);
  • 11. MODULE counter_cell(carry_in) VAR value : boolean; ASSIGN init(value) := 0; next(value) := (value + carry_in) mod 2; DEFINE carry_out := value & carry_in; FAIRNESS running MODULE main VAR bit0 : process counter_cell(1); bit1 : process counter_cell(bit0.carry_out); bit2 : process counter_cell(bit1.carry_out);
  • 12. Темпоральные логики Темпоральная логика – модальная логика, позволяющая формализовать высказывания, зависящие от времени LTL (Linear Tree Logic) CTL (Computation Tree Logic)
  • 13. Темпоральные логики LTL - спецификация: -- FUTURE X ltl_expr -- ne X t state G ltl_expr -- G lobally F ltl_expr -- F inally ltl_expr U ltl_expr -- U ntil ltl_expr V ltl_expr -- releases -- PAST Y ltl_expr -- previous state Z ltl_expr -- not previous state not H ltl_expr -- H istorically O ltl_expr -- O nce ltl_expr S ltl_expr -- S ince ltl_expr T ltl_expr -- T riggered
  • 14. Темпоральные логики CTL - спецификация: EG ctl_expr -- Exists Globally EX ctl_expr -- Exists neXt state EF ctl_expr -- Exists Finally AG ctl_expr -- forAll Globally AX ctl_expr -- forAll neXt state AF ctl_expr -- forAll Finally E [ ctl_expr U ctl_expr ] -- Exists until A [ ctl_expr U ctl_expr ] -- forAll until
  • 15. Списки Команд Фрагмент списков команд
  • 16. Формат спецификации Если МП-11.Стол.Поднят И МП-11.ВерхняяРука.Выдвинута ИЛИ МП-11.НижняяРука.Выдвинута И МП-9С.Стол.Поднят И МП-9С.Рука.Выдвинута Не возникает МП-11.Стол.Поворот ИЛИ МП-9С.Стол.Поворот Интуитивное задание проверяемого свойства:
  • 18. Схема кода на SMV -- i- ый модуль MODULE Modulei(tact_num) VAR st: 0..100; ASSIGN init(st) := 0; next(st) := case … . 1 : st; esac; FAIRNESS running
  • 19. Схема кода на SMV - - Счетчик тактов MODULE MTactCounter(st0, st1, …, sti, stn) VAR tact_num : 0..300; cycle_num : 0..300; ASSIGN init(tact_num) := 1; next(tact_num) := case tact_num = 1 & st1 = … & st2 = … & … & stn = … : 2; tact_num = 2 & st1 = … & st2 = … & … & stn = … : 3; tact_num = m : m+1; 1 : tact_num; esac; init(cycle_num) := 0; next(cycle_num) := case … esac; FAIRNESS running
  • 20. Схема кода на SMV // главный модуль MODULE main VAR tactCounter : process MTactCounter(m0.st, m1.st, …mi.st, … mn.st); m0 : process Module0(tactCounter.tact_num); m1 : process Module1(tactCounter.tact_num); … mi : process Modulei(tactCounter.tact_num); … mn : process Modulen(tactCounter.tact_num); FAIRNESS running
  • 21. Задание спецификации SPEC AG ! ( ( m 1. st >= 0 & m 1. st <= 5) & ( m 2. st >= 7 & m 2. st <= 10) ) Пример задания свойства: