ВВЕДЕНИЕ 3
Глава 1. Теоретические сведения 7
1.1 Методы валидации систем 7
1.2 Методы формальной верификации 8
1.3 Конечный автомат и автоматный подход 10
1.4 Описание метода Model Checking 13
1.5 Моделирование системы 15
1.6 Описание свойств модели 16
Глава 2. Сравнение и анализ инструментов проверки моделей 19
2.1 Сравнение инструментов проверки моделей 19
2.2 Результаты сравнительного анализа 28
Глава 3. Разработка модели электрической плиты 31
3.1 Описание модели системы управления электрической
плитой 31
3.2 Спецификация системы 33
Глава 4. Реализация и верификация 35
4.1 Описание работы в среде PAT 35
4.2 Верификация модели 46
ЗАКЛЮЧЕНИЕ 62
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 64
ПРИЛОЖЕНИЕ А 68
ПРИЛОЖЕНИЕ Б
На настоящий момент аппаратные и программные системы занимают большое место в жизни человека. Общество всё больше зависит от программных и аппаратных систем, которые помогают нам практически во всех аспектах повседневной жизни. Часто мы можем даже не осознавать, что такие системы в это вовлечены. Некоторые функции управления в современных автомобилях основаны на встроенных программных решениях, например, торможение, подушки безопасности, круиз-контроль и так далее. Мобильные телефоны, системы связи, медицинские устройства, аудио- и видеосистемы и бытовая техника в целом содержат большое количество программного обеспечения. Кроме того, в системах транспорта, производства и управления всё шире применяются встроенные программные решения, обеспечивающие гибкость и экономичность. Выходит, что огромная ответственность “ложится на плечи” программ, которые управляют определёнными устройствами.
Следовательно, из-за постоянного роста автоматизации жизни всё более обостряется необходимость преждевременного обнаружения и устранения ошибок в программах. Это имеет большое значение, так как чем раньше ошибка будет обнаружена, тем меньше вреда она принесёт. В ряде приложений ошибки не критичны, например, в офисных приложениях или веб-сервисах. Они сводятся к лёгким моральным травмам пользователей и репутационным издержкам производителя ПО, эти ошибки достаточно легко обнаружить и выполнить восстановление системы, а также их возможно быстро исправить, например, выпустив патч, либо просто поправив код, например, веб¬сервиса на сервере. В таких случаях важнее не избавится от всех ошибок, а как можно быстрее вывести свой продукт на рынок. Но существует ряд систем с повышенными требованиями к надёжности, в которых ошибка в программе может принести вред как со стороны вопроса безопасности, так и с экономической: если ошибка, которая была допущена на этапе проектирования устройства, обнаружится только после старта производства, то появится необходимость в её исправлении уже не исключительно в проекте, но и во всех устройствах, которые были произведены. В истории описано большое количество случаев ошибок, которые привели к большим финансовым потерям. Один из таких случаев произошёл в июне 1996 года: французы запускали ракету Ariane-5, которая взорвалась спустя 40 секунд после старта из-за неверной работы бортового программного обеспечения. На разработку ракеты было потрачено 7 млрд. долларов, ущерб от потери ракеты составил примерно 500 млрд. долларов. Кроме экономической стороны, ошибка в работе систем с повышенными требованиями к надёжности может даже причинить вред здоровью людей, и даже иметь летальные последствия. Примером такой ошибки может быть случай, который произошёл в Саудовской Аравии. В феврале 1991 года ракетный комплекс Patriot не смог перехватить ракету Scud. ЗРК, прикрывавший авиабазу, увидел ракету, но не сумел попасть в нее из-за ошибки в собственном математическом обеспечении. Из-за особенностей хранения чисел в системе опорное значение времени при округлении искажалось, что накапливало рассогласование примерно на треть секунды за 100 часов непрерывной работы комплекса. Ракета попала на американскую авиабазу. Взрыв убил 28 человек и около сотни получили ранения. Ошибка эта была уже известна до момента трагедии, но из-за начавшейся войны обновить ПО просто не успевали. Носители с «патчем» прибыли только на следующий день после ракетного удара.
Хочется уточнить, что системы с повышенными требованиями к надёжности это не только спутники, самолёты и т.п. Это в том числе системы, в которых:
- затруднено исправление ошибок (потребительская электроника);
- велик масштаб использования (та же потребительская электроника, важные веб-сервисы, которыми пользуются миллионы человек);
- высокая степень доверия человека.
Именно поэтому, так как возрастают размеры и сложности аппаратных и программных систем, необходимо обеспечить процесс валидации систем с использованием методов и инструментов, которые могут облегчить автоматический анализ корректности. Кроме того, верификация системы, исправление ошибок на этапе ее проектирования экономически целесообразно, позволяя экономить время и средства на производство некорректно работающей системы. В то время как тестирование ручным способом не только зачастую не способно обеспечить полной проверки, но и требует наличия уже готового, произведенного продукта.
Поэтому важно изучать методы формальной верификации моделей систем, позволяющей на этапе проектирования производить валидацию модели.
Целью данной работы является разработка тестового примера системы для верификации на основе Model Checking (метода проверки модели). Для достижения данной цели были поставлены следующие задачи:
- описать теоретические сведения о формальной верификации и основах темпоральной логики;
- сравнить существующие инструменты верификации, использующие данный метод;
- на основе полученных данных выбрать наиболее подходящий;
- разработать модель системы «Электрическая плита»;
- сформулировать требования к системе «Электрическая плита»;
- описать модель и требования к ней с помощью выбранного инструмента проверки моделей;
- провести верификацию в выбранном инструменте на построенной модели системы «Электрическая плита».
Данная работа состоит из четырёх глав. В первой главе рассказывается о методах валидации систем, особое внимание уделяется автоматному подходу и методу проверки моделей. Во второй главе производится анализ и сравнение инструментов, использующих метод проверки моделей. На основе анализа происходит выбор необходимого инструмента. В третьей главе описывается моделирование системы «Электрическая плита» и составление требований к ней на языке линейной темпоральной логики для последующей верификации. В четвёртой главе описывается процесс реализации модели и спецификации в PAT и верификация модели для описанных требований.
Современная жизнь неотрывно связана с различными техническими и информационными системами, которые обслуживают самые разнообразные сферы деятельности человека. В связи с этим всё большую важность приобретают проблемы валидации таких систем с целью устранения ошибок. Устранение ошибок на этапе проектирования системы позволяет зачастую не только сэкономить финансовые ресурсы, но и не подвергать риску здоровье и жизни людей, поэтому особое значение имеют методы формальной верификации, одним из которых является метод проверки модели (Model Checking).
В рамках выпускной квалификационной работы был разработан тестовый пример системы для верификатора PAT: были изучены и описаны теоретические сведения о видах верификации, основы линейной темпоральной логики; особое внимание было уделено методу Model Checking; был произведен сравнительный анализ существующих инструментов верификации, использующих этот метод, на основе которого был выбран наиболее подходящий инструмент проверки модели - PAT; разработана модель системы «Электрическая плита»; сформулированы требования к системе «Электрическая плита»; описана модель и требования к ней с помощью выбранного инструмента проверки моделей PAT; а также проведена верификация построенной модели системы «Электрическая плита» в данном инструменте.
Результаты этой работы могут использоваться в качестве учебно-методического обеспечения на дисциплинах «Теория автоматов и формальных языков», «Верификация программного обеспечения». Методические указания для проведения занятия на тему «Верификация автоматных программ с помощью верификатора PAT» представлены в ПРИЛОЖЕНИИ Б.
Результаты работы докладывались и обсуждались на XVI международной научно-практической конференции «Проблемы управления в социально-экономических и технических системах» в секции «Управление в технических системах». Работа была отмечена дипломом 3 степени [38].
1. Вельдер С. Э., Лукин М. А., Шалыто А. А, Яминов Б. Р ВЕРИФИКАЦИЯ АВТОМАТНЫХ ПРОГРАММ Учебное пособие - Санкт-Петербург, 2011 - 242c.
2. Шульга Т.Э. Теория автоматов и формальных языков [Текст]: учеб. пособие для студ. вузов, обуч. по спец. «Программная инженерия» и «Прикладная информатика» - Саратов: Сарат. гос. техн. ун-т, 2015 - 83 с.
3. Вельдер С.Э., Шалыто А.А. - Верификация простых автоматных программ на основе метода model checking // опубликовано в материалах XV Международной научно-методической конференции «Высокие интеллектуальные технологии и инновации в образовании и науке» - СПбГ ПУ. 2008, с. 285-288.
4. Карпов Ю.Г. Model Checking. Верификация параллельных и распределенных программных систем - Санкт-Петербург, 2010 - 560 с.
5. Lukin M., Velder S., Shalyto A., Yaminov B. Verification of automata-based programs - St.Petersburg, 2011 - 102 с.
6. Камкин А. С. Введение в формальные методы верификации программ: учебное пособие - Москва, 2018. - 272 с
7. Степанов О. Г. МЕТОД АВТОМАТИЧЕСКОЙ ДИНАМИЧЕСКОЙ ВЕРИФИКАЦИИ АВТОМАТНЫХ ПРОГРАММ // опубликовано в материалах Научно¬технический вестник СПбГУИТМО. Вып. 53. Автоматное программирование. 2008 - с. 221-229.
8. Поликарпова Н. И., Шалыто А. А. Автоматное программирование. 2008. — 167 с.
9. Кузьмин Е. В., Соколов В. А. Моделирование, спецификация и верификация «автоматных» программ // Программирование. 2008. №1. -Ярославль, 2008 - с. 38-60
10. Шалыто А. А. Парадигма автоматного программирования //Научно-технический вестник СПбГУ ИТМО. Автоматное программирование. Вып. 53., 2008 - с. 3¬23.
11. Harel D., Pnueli A. On the development of reactive systems / In «Logic and Models of Concurrent Systems». NATO Advanced Study Institute on Logic and Models for Verification and Specification of Concurrent Systems. Springer Verlag, 1985 - с. 477-498.
12. Карпов Ю. Имитационное моделирование систем. Введение в моделирование с AnyLogic 5. - СПб.: БХВ- Петербург, 2005 - с. 400
13. Синицын С.В., Налютин Н.Ю. Верификация программного обеспечения: Курс лекций. - М.: МИФИ (ГУ), 2006 - 158 с.
14. Бейзер Б, Тестирование черного ящика. Технологии функционального тестирования программного обеспечения и систем. - СПб.:Питер, 2004 - 320 c.
15. Pnueli A, The temporal logic of programs // 18thIEEE Symposium on Foundations of Computer Science. 1977 - с. 46¬57
16. Кларк Э. М., Грамберг О., Пелед Д. Верификация моделей программ. Model Checking - МЦНМО, 2002 — 416 с.
17. Миронов А. М. Верификация программ методом Model Checking, - Москва, 2012 — 84 с
18. Миронов А. М., Жуков Д. Ю., Математическая модель и методы верификации программных систем, Интеллектуальные системы, том. 9 -Москва, 2005 - с. 209-252
19. Frappier M., Fraikin B., Chossart R., Chane-Yack-Fa R., Ouenzar M. Comparison of Model Checking Tools for Information Systems Universite de Sherbrooke - Quebec, Canada, 2010 - 85 с.
20. «List of model checking tools» [Электронный ресурс].
- Режим доступа
https://en.wikipedia.org/wiki/List of model checking tools
21. «Spin» [Электронный ресурс]. - Режим доступа http://spinroot. com/
22. Holzmann G. J. The Spin Model Checker: Primer and Reference Manual. - Addison-Wesley, 2003 - с. 608
23. «NuSMV» [Электронный ресурс]. - Режим доступа http://nusmv.fbk.eu/
24. Havelund K., Majumdar R. Model Checking Software // 15th International SPIN Workshop - Los Angeles, CA, USA, August 10-12, 2008 - с. 343
25. «PAT» [Электронный ресурс]. - Режим доступа https://pat.comp.nus.edu.sg/
26. J. Sun, Y. Liu, J. S. Dong, Y. Liu, L. Shi, E. Andre. Modeling and Verifying Hierarchical Real-Time Systems Using Stateful Timed CSP. The ACM Transactions on Software Engineering and Methodology (TOSEM) 2013 - c. 29
27. «PRISM» [Электронный ресурс]. - Режим доступа https://www.prismmodelchecker.org/
28. «BLAST» [Электронный ресурс]. - Режим доступа https://en.wikipedia.org/wiki/BLAST model checker
29. «Java PathFinder» [Электронный ресурс]. - Режим доступаhttp ://j avapathfinder.sourceforge. net/
30. «CADP» [Электронный ресурс]. - Режим доступа https://cadp.inria.fr/
31. «UPPAAL» [Электронный ресурс]. - Режим доступа http://www.uppaal.org/
32. M. Pereira Junior, G. Vaz Alves A Study Towards the Application of UPPAAL Model Checker // Conference: WEIT 2015 - 3rd Workshop-School on Theoretical Computer Science, At Porto Alegre, RS - Brazil, 2015 - с. 9
33. «KRONOS» [Электронный ресурс]. - Режим доступа http://www-verimag.imag.fr/DIST-TOOLS/TEMPO/kronos/
34. Колчин А. В. РАЗРАБОТКА ИНСТРУМЕНТАЛЬНЫХ СРЕДСТВ ДЛЯ ПРОВЕРКИ ФОРМАЛЬНЫХ МОДЕЛЕЙ // // опубликовано в материалах ISSN 1727-4907. Проблеми програмування. № 2-3. Спещальний випуск - Институт кибернетики им. В.М. Глушкова НАН Украины, 2008 - 622¬626 с.
35. Бурдонов И. Б., Косачев А. С., Кулямин В. В. Безопасность, верификация и теория конформности // опубликовано в материалах второй международной научной конференции по проблемам безопасности и противодействия терроризму - МГУ 2006", М., МЦНМО, 2007 - с 135-158.
36. Хворостухина Е.В. Математическая логика [Текст]: учеб. пособие для студентов бакалавриата по направлениям подготовки 09.03.01 «Информатика и вычислительная техника», 09.03.04 «Программная инженерия» - Саратов, 2018.
37. Хоар Ч. Взаимодействующие последовательные процессы: Пер. с англ.- М.: Мир, 1989 - с. 264
38. Носырева М.А. Разработка тестового примера автоматной программы средствами PAT // Проблемы управления в социально-экономических и технических системах. Сборник научных статей - Саратов: Наука, 2020 (в печати).