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

Выполнение практического задания по RSL

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

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

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

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

Текст из PDF

Выполнение практического задания по RSLЗадание состоит из трех этапов:1. анализ требований, алгебраическая спецификация;2. формальное описание программного интерфейса (реализации) системы, неявнаямоделеориентированная спецификация;3. реализация системы, явная моделеориентированная спецификация.Пример описания системы заказчиком:Требуется реализовать программу Geolocator. Программа предназначена для мобильногоустройства.

Она отображает карту некоторой местности и то, что на ней находится.Программа должна уметь:• сохранять указанные пользователем описания мест на карте ("Здесь живу я", "Тутмой любимый Университет" и т. п.);• показывать места в части карты, указанной пользователем;• при показе должны учитываться как указанные пользователем, так иподгружаемые с публичных серверов описания мест;• хочется иметь опцию, публиковать ли свое описание на публичном сервере.Первый этап.

Анализ требований. АлгебраическаяспецификацияЗадача: «проработать» описание системы, полученное от заказчика, чтобы обнаружитьплохо сформулированные свойства системы, несформулированные, но требуемые,свойства системы, противоречащие требования системы («свойство» == «особенность» ==«возможность» == «поведение»). Грубо говоря, цель первого этапа — продуматьлогическую сторону системы, ее поведение, без учета производительности, платформы,языка реализации, квалификации команды разработчиков и т.

п. Т.е. первый этап — эточеткая формулировка той информации, в которой работает система, которую она получаетизвне и которую она производит. Разработка системы после первого этапа не должнанаткнуться на неотвеченные вопросы вида: «Что оно делает?», «Как оно должно себявести в такой-то ситуации?»1. «то, что непосредственно сказано заказчиком»: сущности, операции какинформационные потоки.◦ «информационный поток» — это отображение всей информации, котораянужная для выполнения операции, на всю информацию, которую производитоперация.◦ «информационный поток» описывается просто в виде сигнатуры функции.◦ взглянув на «информационные потоки», должна возникать интуитивнаяидея, для чего какие сущности нужны, какую информацию они в себесодержат, какую информацию из сущностей можно извлечь.◦ если у функции описаны типы возвращаемых значений, то функция не можетне генерировать какое-либо из них, получив всё, что нужно, на свой вход.◦ нужно добиваться замкнутости операций: если в какой-либо функциииспользуется некий тип как вход, то нужна функция, генерирующая этот тип(из других типов, констант и т.

п.), причем любая цепочка таких генераторовбез свободных переменных должна быть конечной.◦ в качестве части сигнатур функций можно использовать множества и списки,но нельзя пытаться таким образом давать определения типам (сущностям) втерминах множеств и списков.◦ думать о тотальности операций.2. «система должна работать у качественно разных пользователей»:система должна работать во всех условиях, которые допустимы ее описанием;◦ система должна работать на практике, значит, ее сущности должныадекватно отражать все характеристики их аналогов «в жизни», нельзяограничиваться лишь (очевидным) наиболее простым, наиболее частоиспользуемым, представлением элементов предметной области системы.◦ то, что не сказано, отметить и предложить наиболее логичное решение.◦ работать по такому методу: увидеть «проблему» (что не было сказано, что небыло учтено, в какой ситуации не описано поведение), сформулировать ее,предложить наиболее логичное решение, записать его на RSL (ввестидополнительные функции, дополнительные типы).◦ зачастую будут возникать понятия, которые естественно описываютсянеформальным образом (без четких определений), а чтобы дать формальноеопределение, зачастую придется предлагать новые сущности, которых небыло раньше.◦ не забывать о логической стройности: за каждым именем (типа илифункции) должен быть закреплен чёткий и простой смысл.3.

«увидеть особые значения типов»: посмотрев на каждый тип в спецификации,надо подумать, на какие важные множества значений разбивается всёмножество значений этого типа («какие бывают особенные случаи в сущноститакой-то»); увидев их, сформулировать в виде констант или доп. функцийобсерверов с аксиомами вида all t : T :- p1(t) \/ p2(t).4. объявить предусловия всех функций новыми дополнительными функциями(тотальными, возвращающими Bool).5. поделить все функции на обсерверы, генераторы и трансформеры и написатьалгебраические аксиомы вида «обсервер(генератор)» и«обсервер(трансформер)».◦ для сокращения можно использовать вариантные определения:type Pair == pair( left : Item ↔ change_left, right : Item ↔ change_right)обсерверы – left, right,генераторы — pair,трансформеры — change_left, change_rightпри таком описании будут автоматически объявлены все нужные аксиомынад этими функциями.Чего делать нельзя в этом этапе:1.

пытаться представлять в голове не требования, а реализацию (и это же писать вспецификации);2. не анализировать предметную область.Второй этап. Описание программного интерфейса системы. Неявнаямоделеориентированная спецификация.На первом этапе продумана логическая сторона системы, т.

е. об операциях системыговорилось только как об «отображениях», без учета нефункциональных характеристик(«быстро», «компактно», «для iPhone»). Цель второго этапа — описание программногоинтерфейса реализации. Если принимать аналогию с языком Си, то в этом этапе надоописать заголовочные файлы, пополненные инвариантами и пред- и постусловиями.

Взаголовочных файлах нет тел функций, но есть определения всех типов, которыеиспользуются в сигнатурах функций. Эта же идея работает в RSL: на этом этапе мыдолжны предложить структуры данных для типов и описать программные контракты дляфункций в предположении, что это функции из настоящей реализации! Аналогия с Dafny:на втором этапе не надо описывать тела методов, но надо сформулировать их requires иensures, при этом можно определять свои function (явным образом!) и их использовать вrequires и ensures.Получается, что над явной и неявной спецификациями нужно думать совместно, но внеявной спецификации указывать информацию для тех, кто будет пользоватьсяреализацией, а в явной — для тех, кто будет писать реализацию. По этой причине внеявной спецификации не должно быть того, что относится к реализации алгоритмов, нодолжно быть то, что относится к особенностям использования реализации в другом коде:когда функции реализации можно вызывать, какую предварительную подготовкунеобходимо сделать, какие входные данные можно подавать функции и каких результатовждать от функции.Можно перефразировать этот тезис так: неявная спецификация должна допускать какможно большее число различных эффективных реализаций в рамках той «задачи»,которую должна «решать» реализация (т.

е. не меняя принципов и способа использованияреализации ее пользователями). Еще раз: реализация, в данном случае, это программнаябиблиотека. Поэтому под ее «пользователями» можно понимать весь код, использующийэту библиотеку (например, графический интерфейс).1. Выделяем из алгебраической спецификации основные функции («операциисистемы»), нам не нужны все вспомогательные функции (они были нужны,только чтобы описать поведение операций системы в алгебраическойспецификации).2. Думаем, что какие-то из операций будут вызываться очень часто, поэтомуони должны выполняться очень быстро. Делаем отсюда выводы, какуюможно предложить структуру данных, включающую повторы информации,например, предвычисленные результаты операций.

Заметьте: при наличииповторов данных появляется проблема согласованного состояния. Например,если изначально структура данных была Key -m-> Data1 >< Data2, а мы хотимхранить предвычисленное множество первых данных, т. е. новая структураданных будет State = (Key -m-> Data1 >< Data2) >< Data1-set, то возможнытакие значения в типе State, например, как ([], {1}), в которых свойство«множество есть все первые данные» не выполнено, т.

е. значение ([], {1})является несогласованным. Значение ([0 +> (1, 2)], {1}) уже являетсясогласованным. Надо сформулировать то свойство данных, котороегарантирует согласованность, в виде инвариантов.3. Формулируем структуры данных и их инварианты.•инвариант можно формулировать в виде аксиомы или в видеподтипа с использованием предиката от состояния (is_wf : State0->Bool , State = {| s : State0 :- is_wf(s) |}).4. Формулируем пред- и пост- условия операций системы.Хороший программный контракт не «намекает» ни на одну из реализаций.

Примерконтракта, который намекает на реализацию, в котором не видны простейшие требования(требования вида «что-то тогда и только тогда то-то» и, аналогичные им, равенстваструктур данных предполагают их построение, что перегружает спецификацию и :schedule_for_passanger : Schedule -> Item-listschedule_for_passanger(sch) as sch_passpost( all item : Item :- (modify(item) isin sch_pass) =( item isin all_items(sch) /\ have_stop(item) ) ),Более удачный вариант:schedule_for_passanger : Schedule >< Station -> Item-listschedule_for_passanger(sch, station) as sch_passpost( all item : Item :- item isin all_items(sch) =>(have_stop(item) => modify(item) isin sch_pass)/\( all item : Item :- item isin sch_pass =>have_stop(item) )/\( all item : Item :- item isin sch_pass =>isin_respect_to_modifications(s, item) ),isin_respect_to_modifications : Schedule >< Item -> Boolisin_respect_to_modifications(sch, item) is (exists i : Item :- i isin s /\track(i) = track(item) /\ … /\(if … then day_arrive(i) = day_arrive(item) else … end) )Удачные программные контракты написаны так, что они не создают новых сущностей ипотом проверяют их равенство, а разбивают существующие сущности на составляющие ипроверяют их.Как в Dafny в requires и ensures запрещено вызывать методы, так и у нас — в программныхконтрактах старайтесь не вызывать операции системы (но можно вызыватьдополнительные функции, введенные только лишь для задания программного контрактаи не требуемые к реализации).И еще напоминание: использовать множества в наших реализациях нельзя, потому что дляреализации предполагается использование простейших языков, где нет встроенныхмножеств, и реализация множеств — это отдельная задача со своими нефункциональнымитребованиями.

Ограничимся массивами (списками заданной длины), хэш-таблицами(списками с определенным доступом) и, возможно, реляционными отношениями(отображениями в RSL).Третий этап. Реализация системы. Явная моделеориентированнаяспецификация.Тут всё довольно просто: выбираете эффективные реализации для функций изаписываете их в явном виде..

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