Программно-аппаратная система моделирования и управления технологическим оборудованием. Основные особенности: высокоуровневые параллельные языки описания технологических процессов, ориентированные на специалистов предметных областей. Возможность предварительной отладки управляющих программ на моделях технологического оборудования.
9. Верификация –
анализ корректности программных
систем относительно спецификации, в
которой задаются исследуемые свойства.
Виды верификации:
тестирование
метод доказательства теорем (theorem proving)
метод проверки модели (Model Checking).
11. NuSMV (New Symbolic Model Verifier)
Open Source (GNU LGPL)
Написан на ANCI C, совместим с POSIX
(Portable Operating System Interface for Unix )
Продолжение закрытого верификатора SMV
(Carnegy Mellon University)
Входной язык – текстовый язык SMV
Возможность задания модели в виде
синхронных/асинхронных конечных
автоматов
14. Пример модуля на 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;
FAIRNESS running
15. Задание асинхронного исполнения
модулей
По умолчанию модули работают синхронно
mi: Module_i(input_var);
Асинхронный модуль – process
mi: process Module_i(input_var);
Модуль асинхронен = может выполниться 0..∞ раз во
время одного исполнения другого модуля
FAIRNESS running
Количество возможных исполнений модуля: 0.. ∞ → 1.. ∞
16. Темпоральные логики
Темпоральная логика –
модальная логика, позволяющая формализовать
высказывания, зависящие от времени
LTL
(Linear Tree Logic)
CTL
(Computation Tree Logic)
18. Формат спецификации
Интуитивное задание проверяемого свойства:
1. Если
МП-11.ВерхняяРука.Выдвинута ИЛИ
МП-11.НижняяРука.Выдвинута И
Не возникает
МП-11.Стол.Поворот
2. Если
МП-9С.Стол.Против_Часовой И
МП-9С.Стол.Опущен
Не возникает
МП-9С.Рука.Выдвинута
22. Схема кода на 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
26. Результаты
Для техпроцесса в 38 тактов:
Количество ограничений для
стенда ТАДиОМ: 14
Размер кода модели УП на SMV : 433 строки
Количество циклов: 4
Время верификации: ~10 сек