48012 (Отладка программ и программных комплексов)

2016-07-29СтудИзба

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

Документ из архива "Отладка программ и программных комплексов", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "контрольные работы и аттестации", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "48012"

Текст из документа "48012"











Отладка программ и программных комплексов

Характерной особенностью современных АСУ является значительное усложнение используемого в них программного обеспечения, которое представляет собой большие комплексы взаимодействующих программ объемом до десятков и сотен тысяч команд. С ростом надежности вычислительной техники программное обеспечение становится основным источником неправильного функционирования систем управления. В процессе его разработки допускается большое количество ошибок, стоимость обнаружения и устранения которых составляет 40-50% общих затрат на разработку и внедрение АСУ.

Технология разработки и внедрения программного обеспечения АСУ предусматривает проведение следующих этапов: постановка задач и выбор алгоритмов их решения, разработка, системных и программных спецификаций задач, разработка комплекса программ, его отладка, опытная и промышленная эксплуатация.

Ошибки программного обеспечения могут быть классифицированы следующим образом: системные ошибки, обусловленные неправильным пониманием содержания задачи и условий ее реализации в АСУ; алгоритмические ошибки, связанные с некорректной формулировкой и реализацией алгоритмов программным путем; программные ошибки (описки, ошибки в логике, кодировании и т.д.); технологические ошибки в процессе подготовки документации на программу и перевода ее на машинные носители.

Основным этапом формирования разрабатываемых комплексов программ, на котором обнаруживаются, локализуются и устраняются ошибки проектирования, является отладка. Процесс отладки по уровню сложности и связи с реальными данными делится на программную и системную отладку.

Программная отладка включает проверку общей логики программы и правильности ее записи (камеральная проверка), подготовку к вводу в ЭВМ г, трансляцию, индивидуальную (автономную) отладку отдельных частей программы. В процессе программной отладки обнаруживаются и устраняются различные алгоритмические, программные и технологические ошибки.

Системная отладка предназначена для проверки соответствия логической схемы комплекса программ ее функциональному назначению с использованием специально подготовленных массивов и в условиях, моделирующих процесс функционирования АСУ. В процессе системной отладки устраняется большинство сложных алгоритмических и системных ошибок. Общее число выявляемых в процессе системной отладки ошибок определяется ограничениями на временные и стоимостные ресурсы и исходным количеством ошибок в комплексе программ, поступающем на этап системной отладки. При достижении выбранного уровня показателей качества системной отладки комплекс программ передается в опытную эксплуатацию для проверки его функционирования с использованием реальных полноразмерных массивов и в реальном масштабе времени.

Обнаружение ошибок в программах на этапе эксплуатации системы может привести к существенным потерям времени и средств на их устранение, а в отдельных случаях к потере работоспособности системы. Поэтому с целью повышения качества комплексов программ, поступающих в эксплуатацию, необходимо улучшить планирование и организацию отладки, что позволит в конечном счете повысить эффективность функционирования АСУ за счет снижения затрат, связанных с наличием необнаруженных ошибок и получением недостоверных результатов; уменьшения времени и затрат на устранение и выявление ошибок; уменьшения вероятности наличия ошибок в программах.

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

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

Рассмотрим существующие методы обнаружения и локализации ошибок в комплексах программ. Наиболее разработанными методами обнаружения ошибок на этапе отладки являются: формальное доказательство правильности программ; методы Диверсионного программирования; методы тестирования программ.

Формальное доказательство правильности программ основано на анализе исполняемых программой действий и состоит в доказательстве того, что утверждения на выходе программы будут удовлетворяться при любом разрешенном входе. Среди методов этого класса можно выделить аксиоматическое доказательство правильности, доказательство правильноети с использованием аннотаций, которые представляют собой утверждения, связанные с каждым принципиальным узлом программы, доказательство корректности программных свойств.

В общем случае доказательство корректности составления программных модулей - очень сложная процедура. Для доказательства корректности программного модуля объемом около 100 инструкций требуется один человеко-месяц работы.

Основными ограничениями широкого использования методов формального доказательства правильности являются сложность формализации условий в программах, отсутствие развитых языков утверждений для программ с разнообразными типами данных, наличие ошибок в данных, большое число ограничений на семантику языков и работу компилятора и тл. Кроме того, доказательство правильности может подтвердить правильность только действительно верных программ. Вместе с тем после проведения формального доказательства правильности нельзя утверждать, что программа всегда будет выполняться верно. Применение методов формального доказательства правильности программ в настоящее время ограничивается небольшими и несложными программами.

Методы N-версионного программирования, получившие развитие в последнее время, являются в определенном смысле аналогами методов резервирования, применяемых в технических системах. При использовании этих методов ресурсы на проведение отладки минимальны. Создается несколько версий программы каждая из которых допускает наличие некоторого числа ошибок. Правильность функционирования набора версий достигается за счет их совместного использования. При этом используется одна из двух стратегий: резервная программа включается в работу при обнаружении ошибки; выбирается верное решение параллельно работающих программ. Согласованным функционированием программ управляет программа-супервизор, а версии программ разрабатываются различными программистами. Программные спецификации при использовании данного метода должны составляться таким образом, чтобы в различных версиях программы использовались различные структуры и приемы программирования.

Однако в настоящее время не существует методики формирования соответствующих спецификаций и оценки эффективности метода N-версионного программирования. Следует отметить, что N-версионное программирование не применимо в системах реального времени с жестким ограничением ресурсов, в задачах с большими объемами выходных данных, а также в тех задачах, где трудно определить допустимую разницу результатов, получаемых различными версиями программы.

Метод тестирования программ является основным методом отладки. Тестирование обеспечивает проверку того, что постановка задачи правильно понята системщиками и программистами, обеспечивает конкретное доказательство возможности получения решения, по крайней мере, части задачи, концентрирует внимание на небольшом числе наиболее сложных процедур обработки данных и причинах появления ошибок. Тестирование есть процесс оценки степени готовности модулей программного обеспечения к передаче в режим эксплуатации, основанный на сборе и анализе данных о характеристике поведения программного обеспечения по результатам его реализации в известных условиях для заданных входов (тестов).

При отладке комплексов программ различают методы статистического и детерминированного тестирования.

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

При использовании методов детерминированного тестирования важнейшим вопросом на этапе отладки является выбор модели исследуемого комплекса программ и степени ее детализации. В качестве модели программы используют ее блок-схему, причем наибольшей степени детализации моделирования соответствует использование в качестве блока оператора программы, наименьшей – всей программы. В последнем случае структура программы представляет собой "черный ящик", а модель программы – отображение пространства входов X в пространство выходов Y: Степень детализации модели комплекса программ следует выбирать в зависимости от цели тестирования (тестирование основных функций, тестирование связей по информации и управлению и т л.). При этом возникает проблема оценки полноты тестирования.

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

Необходимо отметить, что исчерпывающее тестирование программы на всех допустимых множествах входных данных неосуществимо, так как даже для программы с двумя целочисленными входами (32-битовых входа) общее число входных наборов составляет 232 х 232 = 264. При наличии в программе циклов, число итераций которых зависит от исходных данных, количество элементов или структур, которые необходимо проверить, становится неопределенно большим. При использовании схем в качестве моделей программ не могут быть выявлены ошибки в неисполнимых операторах, используемых для описания переменных, выделения им определенных областей оперативной памяти и т.п.

Основной проблемой при проведении отладки является проблема генерации необходимых тестовых данных. Существует два подхода к их генерации: вероятностный, при котором входные последовательности формируются с помощью генератора случайных чисел; детерминированный, при котором входные последовательности данных определяются на основе анализа структуры и характеристик комплекса программ.

Существуют вероятностные методы генерации тестовых данных, основанные на разделении входной области программы на подобласти Sj, для которых известна вероятность их появления p(Sj). Множество называют операционным профилем программы. Из каждого множества Sj случайным образом выбираются данные для nj тестов. Количество тестов nj определяется в соответствии с вероятностями pi(Sj).

Одним из наиболее перспективных методов вероятностного тестирования является метод эффективных входных векторов. При использовании этого метода из допустимой входной области выделяется некоторая ее часть, представляющая собой список значений для каждой входной переменной х. Полученная область определения содержит входные векторы, называемые эффективными. Для каждой координаты эффективного входного вектора с помощью генератора случайных чисел выбирается некоторое значение аβ из х и строится тест , который реализуется программой. В процессе реализации теста определяется множество дуг γi на графе возможных реализаций программы, которые входят в расчетный путь теста , и объединение множеств Среди этих дуг определяют дуги, не входившие в множество γ, полученное на предыдущем шаге. Если такие дуги есть, проверяют, не превышает ли отношение общего числа пройденных дуг ко всему множеству дуг графа возможных реализаций программы заданной величины . Если этот критерий не удовлетворяется, пытаются найти данные для непокрытых проведенными тестами дуг графа методами, аналогичными методам символического тестирования, которые описываются ниже.

Характерным представителем детерминированного подхода к генерации тестовых данных является метод мутации программ. Реализация этого метода основана на использовании мутационного оператора, который представляет собой некоторое видоизменение, трансформацию операторов исходной программы. Обычно вводится несколько мутационных операторов, каждый из которых соответствует различным классам простых ошибок языка L программы Р. Мутационные операторы генерируют мутанты программы.

На практике обычно используется множество М*(Р), содержащее мутанты Р, полученные многократным применением мутационных операторов к Р. Считается, что программа прошла мутационный тест с входным набором , если: 1) программа Р функционирует верно на данных Т; 2) для каждого m мутанта из М*(Р) либо m не проходит на данных Р, либо m эквивалентен Р. Здесь D – входная область программы Р. Таким образом, если программа Р проходит мутационный тест, то она свободна от простых ошибок. Относительно комплексных ошибок делается предположение, что вероятность того, что композиция нескольких простых ошибок приведет к успешному выполнению на данных Т соответствующего мутанта, равна нулю.

Основными недостатками данного метода отладки являются невозможность проверки сложных программ, содержащих комбинации простых ошибок, а также ограничения на использование конструкций языков программирования. Кроме того, тестирование при таком подходе не может гарантировать отсутствия ошибок в программе, так как ее корректность устанавливается лишь для весьма ограниченного множества мутационных тестов.

Наиболее перспективными методами детерминированного подхода к генерации тестовых данных являются методы, основанные на использовании символического исполнения программы. При таком исполнении вместо действительных значений переменных используют их символические значения, а множество прогонов с различными входными значениями заменяется одним символическим выполнением некоторого пути программы. Последняя представляется в виде направленного графа, вершинами которого являются предложения программы, а дугами – передачи управления между ними. Символическому выполнению пути р соответствует система неравенств В(р) относительно входных переменных, называемых условиями пути р. Решение tp системы неравенств B(р) определяет условия выполнения исследуемого пути, т.е. любые исходные данные, удовлетворяющие полученному решению, вызовут выполнение этого пути.

Методы, использующие символическое исполнение программы, являются промежуточными между методами формального доказательства правильности программ и методами эмпирического тестирования. Эти методы дают возможность значительно сократить число используемых тестовых прогонов и позволяют обнаруживать до 70% ошибок.

Автоматизация описанных методов отладки является необходимым условием повышения эффективности отладочных работ, так как позволяет сократить стоимость и время, необходимые на их проведение. Кроме того, автоматизация отладки комплексов программ позволяет сократить число невыявленных ошибок за счет более полной и систематической проверки и реализации значительно большего числа тестов, чем при ручной отладке; помогает освободить программиста от повторяющейся работы, позволяя сконцентрировать усилия на более сложных задачах проверки.

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