Главная » Просмотр файлов » final-report-chernikova-2011

final-report-chernikova-2011 (1184399)

Файл №1184399 final-report-chernikova-2011 (решения 2011 года)final-report-chernikova-2011 (1184399)2020-08-20СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Московский государственный университет им. М.В. Ломоносова,Факультет вычислительной математики и кибернетикиОТЧЕТ ПО ПРАКТИКУМУВерификация программного обеспечения.Алгоритм сортировки вставками со сторожевым элементомВыполнила:студентка 528 группыЧерникова Татьяна АнатольевнаПреподаватель:Доктор физ.-мат. наукПетренко Александр КонстантиновичМосква 2011ОглавлениеПостановка задачи .....................................................................................................................................

31.1 Описание алгоритма ........................................................................................................................ 31.2 Задачи ............................................................................................................................................... 4Тестирование алгоритма ........................................................................................................................... 52.1 Описание спецификации целевой функции .................................................................................... 52.2 Обоснование выбранных ветвей функциональности......................................................................

52.3 Характеристики покрытия исходного кода реализации ................................................................. 62.4 Сравнение выбранных ветвей функциональности и ветвей покрытия по исходному коду .......... 62.5 Описание принципов выбора тестовых данных и их количественных характеристик................... 62.6 Оценки минимальности набора тестовых данных с точки зрения покрытия ветвей ..................... 62.7 Описание ошибок в реализации ......................................................................................................

6Верификация алгоритма ............................................................................................................................ 73.1 Описание спецификации требований в синтаксисе ACSL ............................................................... 73.2 Описание ошибок в реализации, которые были выявлены............................................................ 7при помощи верификации ..................................................................................................................... 73.3 Описание инвариантов и вариантов ................................................................................................

73.4. Количество и классификация сгенерированных лемм................................................................... 93.5. Выводы, сделанные по результатам верификации ........................................................................ 9Заключение ..............................................................................................................................................

102Постановка задачиВ данном задании требовалось провести тестирование и верификациюфункции, сортирующей массив чисел методом вставок со сторожевымэлементом.1.1 Описание алгоритмаДанный метод отличается от обычного метода сортировки вставками наличиемспециального сторожевого элемента, который помещается в начало массиваперед сортировкой и заведомо меньше (или равен) всех остальных элементовмассива. Это позволяет уменьшить количество операций сравнения,требующихся для сортировки массива. После окончания работы с измененныммассивом следует вернуть назад первое число, которое было заменено насторожевой элемент, и вставить на нужное место в отсортированнуюпоследовательность.void insertSortGuarded(int a[], long size) {int x;long i, j;int backup = a[0];setMin(a);for ( i=1; i < size; i++) {x = a[i];for ( j=i-1; a[j] > x; j--)a[j+1] = a[j];a[j+1] = x;}for ( j=1; j<size && a[j] < backup; j++)a[j-1] = a[j];a[j-1] = backup;}void setMin(int* x){*x = INT_MIN;return;}3Функция setMin(int* x)используется для замены первого элемента массивана заведомо минимальный, далее двумя вложенными циклами выполняетсясортировка массива вставками, после чего с помощью третьего циклавставляется на нужное место сохраненный начальный элемент исходногомассива.1.2 Задачи1.

Разработка тестов на основе формальных спецификаций:• разработать формальную спецификацию функциональныхтребований к работе алгоритма на спецификационном расширении языкаСи (SeC);• разработать тестовые сценарии, обеспечивающие покрытие всехстрок кода реализации алгоритма, с помощью инструмента CTesK.2. Аналитическое доказательство корректности алгоритма:• модифицировать исходный файл (*.c) с реализацией целевойфункции, добавив туда:· предусловие и постусловие целевой функции в видекомментариев в соответствии с синтаксисом ACSL;· инварианты и варианты циклов в целевой функции в видекомментариев в соответствии с синтаксисом ACSL;• проверить какие из лемм сгенерированных инструментомFrama-С могут быть доказаны автоматически alt-ergo;• доказать оставшиеся утверждения при помощи инструмента PVS.4Тестирование алгоритма2.1 Описание спецификации целевой функцииНа данном этапе задания спецификация формулируется в терминахвстроенных типов инструмента CTesK.Specification List* insertSortGuarded_spec(List* array)Функция принимает на вход список элементов и возвращает отсортированныйсписок.Предусловие: входной массив должен быть непустымpre {return (array != NULL); }Постусловие: массив должен быть отсортирован,for(i = 1; i < size_List(insertSortGuarded_spec); i++){if (value_Integer(get_List(insertSortGuarded_spec, i - 1)) >value_Integer(get_List(insertSortGuarded_spec, i)) ){traceExceptionInfo("Result is not sorted");return false;}}и в нем должны быть те же элементы, что и в исходном – ничего лишнего недолжно появиться, ничего нужного не должно пропасть.MultiSet* array1 = create_MultiSet(&type_Integer);MultiSet* array2 = create_MultiSet(&type_Integer);for(i = 0; i < size_List(array); i++)add_MultiSet(array1, get_List(array, i));for(i = 0; i < size_List(insertSortGuarded_spec); i++)add_MultiSet(array2,get_List(insertSortGuarded_spec, i));if (!equals(array1,array2)){traceExceptionInfo("There are some lost or extravalues in result");return false;}2.2 Обоснование выбранных ветвей функциональностипустой массив (проверка предусловия)· массив из одного элемента (этот элемент будет заменен на сторожевой,далее сортировки не происходит, элемент должен быть возвращен назад –особый случай)· отсортированный массив длиной больше 1 (при этом должна происходитьтолько замена первого элемента на сторожевой и его возвращение)·5·неотсортированный массив длиной больше 12.3 Характеристики покрытия исходного кода реализацииПокрытие исходного кода во время тестирования составляет:• 100% строк исходного кода• 100% ветвей исходного кода2.4 Сравнение выбранных ветвей функциональности и ветвей покрытия поисходному кодуКаждая из выбранных ветвей функциональности соответствует некоторомуварианту поведения функции.

Так как в результате тестирования былодостигнуто полное покрытие ветвей исходного кода, то каждой ветви покрытиясоответствует некоторая ветвь функциональности.2.5 Описание принципов выбора тестовых данных и их количественныххарактеристикТестовые данные выбирались таким образом, чтобы покрыть все ветвифункциональности. Если ветвь была покрыта – больше тестов для той же ветвине писалось.2.6 Оценки минимальности набора тестовых данных с точки зренияпокрытия ветвейПолученный тестовый набор является минимальным, т.к. удаление из неголюбого теста приведёт к неполному покрытию функции.2.7 Описание ошибок в реализацииВ ходе тестирования не было выявлено ошибок в реализации функции.6Верификация алгоритма3.1 Описание спецификации требований в синтаксисе ACSL/*@requires size>0 && \valid_range(a,0,size-1);behavior sorted: ensures sorted(a,size);behavior permutation: ensures permutation{Here,Pre}(a, 0, size-1);*/Данная спецификация почти не отличается от предыдущей – дополнительнотребуется корректность указателя на массив заданного размера , и свойствосохранения элементов массива сформулировано через предикат, обозначающийперестановку.

Он определяется аксиомами, также для удобства доказательстваопределены предикаты равенства части массива в разных состояниях памяти,сдвига элементов массива вперед и назад, леммы об их связи между собой и спредикатом перестановки.Для возможности верификации сортировочной функции потребовалосьнаписать и спецификацию дополнительной:/*@requires \valid(x);assigns *x;ensures \forall int p; *x<=p;*/Она изменяет только первый элемент по заданной ссылке и гарантирует, чторезультат окажется не больше любого другого числа int.3.2 Описание ошибок в реализации, которые были выявленыпри помощи верификацииВ ходе верификации ошибок в реализации обнаружено не было.3.3 Описание инвариантов и вариантовИнварианты и вариант для внешнего цикла сортировки:/*@loop invariant 1<=i<=size && a[0]== \at(a[0],L);for sorted: loop invariant sorted(a,i);for permutation: loop invariant permutation{Here, Pre}(a,1,size1);loop variant size-i;*/Во внешнем цикле счетчик изменяется от 1 до размера массива, первыйэлемент – сторожевой – всегда остается на своем месте.

Также на i-той7итерации первые i элементов массива являются упорядоченными повозрастанию, а все элементы, кроме первого, возможно, меняются местами и неисчезают из массива. Вариант цикла очевиден.Инварианты и вариант для внутреннего цикла сортировки:/*@loop invariant (0<=j<i) && (a[0]== \at(a[0],K));for sorted: loop invariant sorted(a,i)&& (j < i-1 ==> (a[j+2] == a[j+1] && sorted(a,i+1)))&& (\forall integer p; j<p<i ==> a[p] > x);for permutation: loop invariant eq_arr{Here, K}(a,1,j) &&moved_forw_array{Here, K}(a, j+1, i)&& eq_arr{Here, K}(a,i+1,size-1)&& x==\at(a[i],K);loop variant j;*/Счетчик внутреннего цикла меняется от значения счетчика внешнего цикла-1до 0, причем второе свойство – неявное, для его доказательства и нуженинвариант о том, что первый элемент массива не изменяется.Для сортировки добавлены инварианты, прямо повторяющие условия цикла идействия в нем, для того чтобы автопрувер смог доказать более сложныесвойства упорядоченности.

Характеристики

Тип файла
PDF-файл
Размер
424,81 Kb
Тип материала
Предмет
Высшее учебное заведение

Тип файла PDF

PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.

Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.

Список файлов учебной работы

решения 2011 года
akovalenko_bitset_iter
Makefile.
Makefile_com.dropbox.attributes
bitset_iter.c
bitset_iter.c_com.dropbox.attributes
bitset_iter.h
bitset_iter.h_com.dropbox.attributes
bitset_iter_model.sec
bitset_iter_model.sec_com.dropbox.attributes
bitset_iter_model.seh
bitset_iter_model.seh_com.dropbox.attributes
bitset_iter_set_add.sec
bitset_iter_set_add.sec_com.dropbox.attributes
bitset_iter_set_alloc.sec
bitset_iter_set_alloc.sec_com.dropbox.attributes
bitset_iter_set_cardinality.sec
bitset_iter_set_cardinality.sec_com.dropbox.attributes
bitset_iter_set_clear.sec
bitset_iter_set_clear.sec_com.dropbox.attributes
bitset_iter_set_copy.sec
bitset_iter_set_copy.sec_com.dropbox.attributes
bitset_iter_set_del.sec
bitset_iter_set_del.sec_com.dropbox.attributes
bitset_iter_set_eq.sec
bitset_iter_set_eq.sec_com.dropbox.attributes
bitset_iter_set_equal.sec
bitset_iter_set_equal.sec_com.dropbox.attributes
bitset_iter_set_fill.sec
bitset_iter_set_fill.sec_com.dropbox.attributes
bitset_iter_set_free.sec
Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6510
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее