Тип работы:
Предмет:
Язык работы:


Формальная верификация окружения времени выполнения робототехнической системы

Работа №125283

Тип работы

Бакалаврская работа

Предмет

программирование

Объем работы28
Год сдачи2016
Стоимость4800 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
10
Не подходит работа?

Узнай цену на написание


Введение 4
1. Цель и постановка задачи 7
2. Обзор 8
2.1. Выбор метода верификации 8
2.2. Требования к инструменту верификации 9
2.3. Выбор верификатора 10
2.4. Инструменты автоматической генерации модели 11
3. Модель системы 13
4. Требования и спецификации к системе 18
5. Верификация и анализ контрпримеров 20
6. Заключение 25
Список литературы 26

Компьютерные программы часто содержат различные ошибки. Еще Эдсгер Вибе Дейкстра говорил, что тестирование не позволяет обна­ружить все ошибки. Особенно трудно тестировать параллельные, рас­пределенные и многопоточные программы. Даже в тех случаях, когда функционирование каждой из взаимодействующих параллельных ча­стей системы полностью ясно, человеку тяжело осознать работу парал­лельной системы целиком. Параллельные системы, на первый взгляд, работающие правильно, могут содержать ошибки, проявляющиеся в очень редких случаях (тупики, гонки [24] и т.д.). Существует мно­жество примеров, когда из-за редко проявляющихся ошибок в слож­ных системах, прошедших тщательное тестирование, компании понесли огромные потери или пострадали пользователи1 [21].
В современном мире имеется большое количество автоматических систем, например автопилот в самолете или спутник, и критически важна корректная и безотказная работа всех компонентов таких си­стем. Поэтому на первый план выходят свойства надежности и пред­сказуемости поведения системы. Таким образом, формальная верифи­кация программного кода, позволяющая существенно повысить каче­ство системы, становится важнейшей областью научных исследований в информатике. Формальной верификацией программы, согласно [21], будем называть приемы и методы формального доказательства (или опровержения) того, что модель программной системы удовлетворяет заданной формальной спецификации (см. рис. 1).
Рис. 1: Общая схема верификации
Уже сейчас верификация является промышленным стандартом в критических областях, связанных как с дорогостоящими проектами, так и с человеческими жизнями [4]. С помощью формальной верифи­кации можно доказать некоторые важные свойства системы, гаранти­ровав отсутствие ошибок определенного типа и правильное функциони­рование системы. Это происходит за счет того, что верификация позво­ляет провести исчерпывающую проверку всех возможных вычислений модели системы, обнаруживая редко проявляющиеся ошибки [20], ко­торые очень сложно проверить тестированием. Важно понимать, что проведя формальную верификацию и тестирование, нельзя гарантиро­вать полное отсутствие ошибок в системе. Но при использовании этих методов вместе существенно повышается уровень доверия к системе.
На сегодняшний день для верификации сложных параллельных, многопоточных систем зарекомендовал себя метод проверки модели (model checking) [21]. Это метод проверки того, что данная формаль­ная модель системы удовлетворяет ограничению, поставленному чаще всего в терминах какой-либо темпоральной логики, то есть логики, в которой истинность логических утверждений зависит от времени.
Важной частью автоматических систем являются роботы. Программ­ное обеспечение для них часто относится к классу так называемых ре­агирующих систем, то есть систем, основная функция которых являет­ся поддержанием взаимодействия с окружением, а не преобразование информации. Такие системы могут бесконечно работать, они контроли­руют окружение, реагируя на внешние события. Вычисления на таких системах задаются бесконечной последовательностью состояний во вре­мени. И именно с помощью формальной верификации возможно про­анализировать все возможные вычисления таких систем.
В рамках Межвузовской Проектной Лаборатории Робототехники со­здают программную часть для контроллера робототехнического кон­структора TRIK [13]. На таком контроллере, помимо операционной си­стемы, запущено окружение времени выполнения [16], предоставляю­щее интерфейс программирования приложений для программирования робота, используя язык C++ с инструментарием Qt2 или скриптовый язык Qt Script3, позволяющее исполнять на роботе скрипты, а также управлять роботом извне. Скриптовый язык упрощает программирова­ние роботов, однако окружение времени выполнения является многопо­точной, параллельной программой, что обуславливает высокую слож­ность обнаружения ошибок. Такие роботы могут использоваться как автоматические системы. И безошибочное функционирование окруже­ния времени выполнения в таких случаях является важной задачей. Отметим, что сама программа, окружение времени выполнения, напи­сана на языке C++ с помощью инструментария Qt.
Таким образом, в нашем случае наиболее подходящим методом для формальной верификации окружения времени выполнения робототех­нической системы является метод проверки модели. В классическом виде наиболее трудоемкой частью данного метода является разработка самой модели окружения времени выполнения [21]. Сложность связа­на с большим размером программы и постоянно возникающей при мо­делировании проблемой комбинаторного взрыва [23]. Необходимо так­же описать в терминах темпоральной логики интересующие свойства данной программы. Остальная часть работы, связанная с проверкой свойств на модели, выполняется автоматизировано с помощью соот­ветствующих инструментов верификации.

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В данной работе были достигнуты следующие результаты.
• Построена документированная, корректная и адекватная модель верифицируемой системы на языке PROMELA.
• Сформулированы требования на естественном языке и разработа­ны спецификации к системе на языке LTL на основе ожидаемого поведения исходной системы.
• Проведена верификация с помощью инструмента SPIN, найдены тринадцать ошибок и одно предупреждение.
• В качестве побочного результата при построении модели были найдены шесть недочетов, не связанных с процессом формальной верификации.
Исходный код модели, трассы контрпримеров и комментарии к ним выложены в открытый доступ [10].
Смоделированные компоненты и примитивы инструментария Qt мо­гут быть использованы в других моделях. Модель документирована и может эволюционировать вместе с разработкой исходной программы окружения времени выполнения. Ввиду непредвиденно большого объ­ема работы по анализу контрпримеров, не были доказаны некоторые существенные свойства системы. В качестве возможного продолжения работы существует две идеи:
• продолжить формальное доказательство свойств системы для те­кущей модели;
• в процессе моделирования большинство системных вызов не были учтены, к примеру, в модели практически полностью игнорирует­ся взаимодействие окружения с драйверами датчиков робота; при­менение активно развивающегося подхода software model checking видится перспективным для решения этой проблемы.


[1] Bandera: Extracting finite-state models from Java source code / James C Corbett, Matthew B Dwyer, John Hatcliff et al. // Software Engineering, 2000. Proceedings of the 2000 International Conference on / IEEE. — 2000. — P. 439-448.
[2] Holzmann Gerard J. The model checker SPIN // IEEE Transactions on software engineering. — 1997. — Vol. 23, no. 5. — P. 279.
[3] Holzmann Gerard J, H Smith Margaret. Software model checking: extracting verification models from source codef // Software Testing, Verification and Reliability. — 2001. — Vol. 11, no. 2. — P. 65-79.
[4] Johnson Leslie A. DO-178B, Software considerations in airborne systems and equipment certification // Crosstalk, October. — 1998.
[5] LTL-patterns.— 2016. — May.— URL: http://patterns.projects. cis.ksu.edu/documentation/patterns.shtml.
[6] Larsen Kim G, Pettersson Paul, Yi Wang. Model-checking for real-time systems // Fundamentals of computation theory / Springer. — 1995. — P. 62-88.
[7] Nusmv 2: An opensource tool for symbolic model checking / Alessandro Cimatti, Edmund Clarke, Enrico Giunchiglia et al. // Computer Aided Verification / Springer. — 2002. — P. 359-364.
[8] Peng Hong, Tahar Sofiene, Khendek Ferhat. Comparison of SPIN and VIS for protocol verification // International Journal on Software Tools for Technology Transfer. — 2003. — Vol. 4, no. 2. — P. 234-245.
[9] Pnueli Amir. The temporal logic of programs // Foundations of Computer Science, 1977., 18th Annual Symposium on / IEEE.— 1977. — P. 46-57.
[10] Results.— 2016. — May.— URL: https://github.com/Kirill-NiK/ SpinTrikRuntimeModel.
[11] Schlich Bastian, Kowalewski Stefan. Model checking C source code for embedded systems // International journal on software tools for technology transfer. — 2009. — Vol. 11, no. 3. — P. 187-202.
[12] Systems and software verification: model-checking techniques and tools / Beatrice Berard, Michel Bidoit, Alain Finkel et al.— Springer Science & Business Media, 2013.
[13] TRIK. TRIK official site. - 2016.-February. - URL: http://www. trikset.com/.
[14] TRIK. trikRuntime architecture.— 2016.—May.— URL: https:// github.com/trikset/trikRuntime/wiki/Архитектура.
[15] TRIK. trikRuntime running process.— 2016. — May.— URL: https://github.com/trikset/trikRuntime/wiki/ Исnолнение-QtScript-на-роботе.
...


Работу высылаем на протяжении 30 минут после оплаты.




©2025 Cервис помощи студентам в выполнении работ