Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Учебное пособие по методам Флойда

Учебное пособие по методам Флойда

PDF-файл Учебное пособие по методам Флойда Формальная спецификация и верификация программ (63979): Книга - 9 семестр (1 семестр магистратуры)Учебное пособие по методам Флойда: Формальная спецификация и верификация программ - PDF (63979) - СтудИзба2020-08-21СтудИзба

Описание файла

PDF-файл из архива "Учебное пособие по методам Флойда", который расположен в категории "". Всё это находится в предмете "формальная спецификация и верификация программ" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст из PDF

Д.В. Буздалов, Е.В. Корныхин, А.А. Панфёров,А.К. Петренко, А.В. ХорошиловПРАКТИКУМ ПОДЕДУКТИВНОЙВЕРИФИКАЦИИПРОГРАМММосква2014УДК 004.415.5ББК 32.973-18Печатается по решению Редакционно-издательского Совета факультетавычислительной математики и кибернетикиМГУ имени М.В. ЛомоносоваРецензенты:И.В. Машечкин, профессор, д.ф.-м.н.С.Ю. Соловьев, профессор, д.ф.-м.н.Д.В. Буздалов, Е.В. Корныхин, А.А, Панфёров, А.К.

Петренко, А.В.Хорошилов.Практикум по дедуктивной верификации программ: учебно-методическоепособие. — М. Издательский отдел факультета ВМК МГУ имени М.В. Ломоносова (лицензия ИД № 05899 от 24.09.2001); МАКС Пресс, 2014. — 97 с.ISBN 978-5-89407-531-0ISBNДанное пособие посвящено основным понятиям дедуктивной верификации последовательных программ. Дедуктивная верификация позволяет формальнообосновать, что программа выполняет формализованные требования путем построения набора утверждений и доказательства их истинности. В качестве методов дедуктивной верификации в пособии рассматриваются методы Флойда(или Хоара-Флойда). Пособие рекомендуется студентам, осваивающим методыформальной верификации программ, а также аспирантам и преподавателям.УДК 004.415.5ББК 32.973-18This textbook is devoted to foundations of deductive verification of software.Deductive verification is aimed to prove that a program under verification consistswith function requirements by proving some theorems about behavior of thisprogram.

R. Floyd's methods are using as an example of deductive verificationmethods. The textbook is aimed at students learning the formal verification ofsoftware and at postgraduate students and lecturers.Ключевые слова: формальная спецификация, формальная верификация, дедуктивная верификация, методы Флойда, формальные методы разработки программ.Keywords: formal specification, formal verification, deductive verification, Floyd'smethods, formal methods of software development.ISBN 978-5-89407-531-0ISBN© Факультет вычислительной математики икибернетики МГУ имени М.В.Ломоносова,2014© Буздалов Д.В., Корныхин Е.В., ПанфёровА.А., Петренко А.К., Хорошилов А.В., 20142Оглавление1 Методы верификации Флойда......................................................................51.1 Математическая модель программы...................................................6Переменные программы............................................................................6Операторы программы...............................................................................7Блок-схемы.....................................................................................................9Семантика блок-схем...............................................................................12Задачи и упражнения...............................................................................141.2 Математическая модель требований.................................................16Входной и выходной предикаты..........................................................17Задачи и упражнения...............................................................................171.3 Задача верификации................................................................................19Частичная и полная корректность программ.................................19Верификация программы целочисленного деления....................20Задачи и упражнения...............................................................................251.4ФормулировкаметодовФлойдадлядоказательствакорректности программ.................................................................................27Метод индуктивных утверждений Флойда.....................................28Метод фундированных множеств Флойда......................................34Замечания к методам Флойда..............................................................37Доказательствополнойкорректностипрограммыцело-численного деления при помощи методов Флойда.......................38Задачи и упражнения...............................................................................422 Практикум по методам Флойда.................................................................562.1 Ещё один пример доказательства полной корректности ........5632.2 Один подход к построению индуктивных утверждений иоценочных функций.......................................................................................612.3 Задачи на метод индуктивных утверждений................................672.4 Задачи на метод фундированных множеств..................................702.5 Общие задачи.............................................................................................75Литература ...........................................................................................................9741 Методы верификации ФлойдаДанное пособие является введением в методы дедуктивной верификации последовательных программ (или, как ее еще называют,аналитической верификации).Целью любой верификации программы (и, в частности, дедуктивной верификации) является установление соответствия программы ее требованиям.

Дедуктивная верификация устанавливаетэто соответствие в виде логического вывода утверждения о том,что программа соответствует требованиям. При этом доказываетсясоответствие программы требованиям на всех входах программы. Вотличие от этого, например, в таком методе верификации как тестирование программа проверяется лишь при некоторых входахпрограммы (тестах).Далее, без ограничения общности, под «методами верификации»будут пониматься «дедуктивные методы верификации».Поскольку дедуктивная верификация основана на использовании логических (математических) заключений, она должна оперировать с математическими («формальными») моделями как программ, требований, так и с формально определенным отношениемих соответствия.Мы начнем рассмотрение методов верификации на простейшихмоделях последовательных программ. Первая модель будет соответствовать программам, написанным на структурном языке программирования• без массивов;• без использования адресной арифметики;• без рекурсии (вызова подпрограмм);5• без взаимодействия с окружением (например, посредствомоператоров ввода-вывода).Методы верификации рекурсивных программ не входят в материал лекций.Программы, взаимодействующие с окружением, относятся к параллельным (или, как их еще называют, реактивным) программами мы их тоже пока не рассматриваем.Мы рассмотрим методы верификации последовательных программ, которые называют методами Флойда (или методами Флойда-Хоара).

Корни этих методов уходят к Алану Тьюрингу, которыйв своей лекции Лондонскому математическому обществу в 1947впервые озвучил идею индуктивных утверждений. До полноценныхметодов верификации эта идея была доведена независимо Робертом Флойдом [1] и Тони Хоаром [2] в конце 60-х годов 20 века.

Вданном пособии изложение этих методов следует их трактовке вмонографиях [5] и [6].1.1 Математическая модель программыОписание математической модели мы начнем с несколькихвспомогательных определений.Переменные программыКаждая программа работает с конечным числом переменных.Переменные разделяются на три типа: входные, промежуточные ивыходные. Вектора этих переменных мы будем обозначать x = ( x1,x2, …, xa ), y = ( y1, y2, …, yb ) и z = ( z1, z2, …, zc ) соответственно.Входные переменные содержат исходные входные значение и никогда не меняются во время работы программы. Промежуточные6переменные используются для хранения промежуточных результатов в процессе вычисления.

Выходные переменные содержат значения, вычисляемые данной программой. Далее, если не будет сказано специально, входные переменные будем обозначать как x1, x2, …,промежуточные как y1, y2, …, выходные как z1, z2, … .Каждая переменная v может принимать значения из некоторогомножества Dv, которое называется доменом переменной. Также, мыбудем выделять три непустых домена:• входной домен Dx = Dx1  Dx2  …  Dxa• домен программы Dy = Dy1  Dy2  …  Dyb• выходной домен Dz = Dz1  Dz2  …  DzcМножество значений всех возможных переменных образуетуниверсальный домен D.

Это значит, что для любой переменной vвыполнено соотношение: Dv  D. Кроме того, мы выделим два специальных значения: Т (истина) и F (ложь). Функции, принимающие значения только из множества {Т, F}, мы будем называть предикатами на области определения функции.

Напомним, что функцией из некоторого множества Х в некоторое множество Y называется отображение, ставящее каждому элементу множества X некоторый элемент множества Y единственным образом.Расширенным доменом Dv+ переменной v будем называть доменэтой переменной, дополненный специальным значением , котороене входит в универсальный домен: Dv+ = Dv  {}.Операторы программыМы будем рассматривать 5 видов операторов программы надданным множествомпеременных. Некоторым из них приписанафункция:71.Начальный оператор START: y  f(x). Здесь f являетсяфункцией Dx  Dy+, инициализирующей промежуточныепеременные программы на основе значений ее входныхпеременных.2.Оператор присваивания ASSIGN: y  g(x, y). Здесь g является функцией Dx  Dy  Dy+, вычисляющей новые значения промежуточных переменных.3.Условный оператор TEST: t (x, y).

Здесь t является предикатом на множестве значений входных и промежуточныхпеременных программы.4.Оператор соединения JOIN.5.Оператор завершения HALT: z  h(x, y). Здесь h являетсяфункцией Dx  Dу  Dz+, устанавливающей значения выходных переменных программы.Графическое представление операторов показано на рисунке 1.START:y  f( x )y  g( x, y )Начальный операторОператор присваиванияHALT:z  h( x, y )Завершающий оператор…TFt( x, y )Условный операторОператор соединенияРисунок 1.

Графическое представление операторов блок-схемы8В программу могут входить несколько операторов одного и тогоже типа, помеченных одной и той же функцией. Поэтому дляобеспечения уникальности одинаковых операторов в рамках однойпрограммы, мы будем помечать каждый оператор уникальнойметкой i. Таким образом, каждый оператор программы состоит изметки оператора и тела оператора, принадлежащего к одному изпятивозможныхтипов.Множествометоквсехоператоровпрограммы P будет обозначаться как P.Блок-схемыВ качестве модели программы мы будем использовать блоксхемы. Блок-схемой называется тройка ( V, N, E ), гдеV – конечное множество переменных программы,N – конечное множество операторов блок-схемы,E  N  {T, F, }  N – конечное множество связок блок-схемы,помеченных символами T, F или .Заметим,чтоблок-схемасоответствуеториентированномуграфу, вершинами которого являются операторы программы, аребрами – ее связки.

При этом все ребра помечены одним из трехсимволов.Корректно-определенной блок-схемой мы будем называть блоксхему удовлетворяющую следующим требованиям:1. В блок-схеме присутствует ровно один начальный оператор ине менее одного завершающего оператора.92. Любой оператор находится на ориентированном пути отначальногооператоракнекоторомузавершающемуоператору.3. Число связок, выходящих из каждого оператора, и пометкиэтих связок соответствуют типу оператора:a. Изначальногооператоравыходитровно1дуга,помеченная символом .b.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5140
Авторов
на СтудИзбе
441
Средний доход
с одного платного файла
Обучение Подробнее