SPIN (верификатор)
SPIN (англ. Simple Promela Interpreter) — утилита для верификации корректности распределенных программных моделей. Служит для автоматизированной проверки моделей. Развивается Gerard J. Holzmann и его коллегами из Unix group центра Computing Sciences Research Center в Bell Labs начиная с 1980 года. С 1991 года программа распространяется бесплатно вместе с исходными кодами.
SPIN | |
---|---|
Тип | Верификация, Проверка моделей |
Разработчик | Gerard J. Holzmann |
Написана на | C, Promela, LTL |
Операционная система | Linux, Windows, Mac OS X |
Первый выпуск | 1991 |
Последняя версия | 6.5.0 (1 July 2019) |
Состояние | Развивается |
Лицензия | свободная |
Сайт | spinroot.com |
Системы, подлежащие верификации, должны быть изложены на языке Promela (от англ. Process Meta Language — язык метапроцессов), который поддерживает моделирование асинхронных распределенных алгоритмов как недетерминированных автоматов. Свойства, которые требуется проверить, выражаются как формулы Linear temporal logic (LTL, Темпоральная логика линейного времени), которые затем инвертируются и преобразуются в автоматы Бюхи. Целью SPIN является построение контрпримера, то есть пересечения модели Крипке, получаемой из описания на Promela, и автомата Бюхи.
Кроме проверки моделей, SPIN может работать в качестве симулятора, исполняя один из возможных путей работы системы и предоставляя программисту результаты этого исполнения.
В отличие от многих программ для проверки моделей, SPIN не выполняет работу сам, а генерирует программу на языке Си, которая решает конкретную задачу. За счет этого достигается экономия памяти и повышение производительности, и становится возможным использовать фрагменты кода на языке Си непосредственно из модели. SPIN предоставляет множество опций для ускорения проверки моделей:
- partial order reduction
- сжатие состояний
- хеширование битовых состояний (вместо хранения полных состояний используется их хеш, это уменьшает требования к объему памяти но снижает полноту)
- weak fairness enforcement
С 1995 года почти каждый год проводятся семинары SPIN для пользователей программы и тех, кто занимается исследованиями в области проверки моделей.
В 2001 году Ассоциация вычислительной техники (ACM) вручила автору SPIN награду System Software Award.[1]
Примечания
- Software System Award: ACM CITES TOOL TO DETECT SOFTWARE «BUGS» FOR PRESTIGIOUS AWARD. Bell Labs Researcher Developed «SPIN» to Make Computers More Reliable Архивировано 1 августа 2013 года. // ACM Press-Release, March 6, 2002
Литература
- Gerard J. Holzmann, The Model Checker SPIN // IEEE transactions on software engineering, Vol. 23, No. 5, MAY 1997, Pages: 279-295, doi:10.1109/32.588521
- Holzmann, G. J., The SPIN Model Checker: Primer and Reference Manual. Addison-Wesley, 2003. ISBN 0-321-22862-6.
- Mordechai Ben-Ari, Principles of the Spin Model Checker, 2008. ISBN 1846287693