Лабораторная работа "Отладка отдельных модулей программного проекта"
Оценка 4.9

Лабораторная работа "Отладка отдельных модулей программного проекта"

Оценка 4.9
Лабораторные работы
docx
28.06.2020
Лабораторная работа "Отладка отдельных модулей программного проекта"
Лабораторная работа №6.docx

ЛАБОРАТОРНАЯ РАБОТА №6

Отладка отдельных модулей программного проекта

 

Цель работы: Получить практические навыки отладки программ с помощью отладчика среды программирования.

Теоретические основы.

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

Отладка — это локализация и устранение ошибок. Отладка является следствием успешного тестирования. Это значит, что если тестовый вариант обнаруживает ошибку, то процесс отладки уничтожает ее.

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

1) причина найдена, исправлена, уничтожена;

2) причина не найдена.

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

Возможные разные способы проявления ошибок:

1) программа завершается нормально, но выдает неверные результаты;

2) программа зависает;

3) программа завершается по прерыванию;

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

Характер проявления ошибок также может меняться. Симптом ошибки может быть:

q постоянным;

q мерцающим;

q пороговым (проявляется при превышении некоторого порога в обработке — 200 самолетов на экране отслеживаются, а 201-й — нет);

q отложенным (проявляется только после исправления маскирующих ошибок).

В ходе отладки мы встречаем ошибки в широком диапазоне: от мелких неприятностей до катастроф. Следствием увеличения ошибок является усиление давления на отладчика — «найди ошибки быстрее!!!». Часто из-за этого давления разработчик устраняет одну ошибку и вносит две новые ошибки.

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

Различают две группы методов отладки:

q аналитические;

q экспериментальные.

Аналитические методы базируются на анализе выходных данных для тестовых прогонов. Экспериментальные методы базируются на использовании вспомогательных средств отладки (отладочные печати, трассировки), позволяющих уточнить характер поведения программы при тех или иных исходных данных.

Общая стратегия отладки — обратное прохождение от замеченного симптома ошибки к исходной аномалии (месту в программе, где ошибка совершена).

В простейшем случае место проявления симптома и ошибочный фрагмент совпадают. Но чаще всего они далеко отстоят друг от друга.

 

Цель отладки — найти оператор программы, при исполнении которого правильные аргументы приводят к неправильным результатам. Если место проявления симптома ошибки не является искомой аномалией, то один из аргументов оператора должен быть неверным. Поэтому надо перейти к исследованию предыдущего оператора, выработавшего этот неверный аргумент. В итоге пошаговое обратное прослеживание приводит к искомому ошибочному месту.

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

Основное преимущество аналитических методов отладки состоит в том, что исходная программа остается без изменений.

В экспериментальных методах для прослеживания выполняется:

1. Выдача значений переменных в указанных точках.

2. Трассировка переменных (выдача их значений при каждом изменении).

3. Трассировка потоков управления (имен вызываемых процедур, меток, на которые передается управление, номеров операторов перехода).

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

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

Для сокращения времени отладки необходимо пользоваться научным подходом.

Классический научный подход включает следующие этапы:

1. Сбор данных при помощи повторяющихся экспериментов.

2. Формулирование гипотезы, объясняющей релевантные данные.

3. Разработка эксперимента, призванного подтвердить или опровергнуть гипотезу.

4. Подтверждение или опровержение гипотезы.

5. Повторение процесса в случае надобности.

 

Эффективный метод поиска дефектов при отладке с использованием научного подхода может быть описан следующими шагами:

1. Стабилизация ошибки.

2. Определение источника ошибки.

a. Сбор данных, приводящих к дефекту.

b. Анализ собранных данных и формулирование гипотезы, объясняющей дефект.

c. Определение способа подтверждения или опровержения гипотезы, основанного или на тестировании программы, или на изучении кода.

d. Подтверждение или опровержение гипотезы при помощи процедуры, определенной в п. 2(c).

3. Исправление дефекта.

4. Тестирование исправления.

5. Поиск похожих ошибок.

 

Способ подтверждения или опровержения гипотезы может быть одним из следующего списка:

1. сокращение подозрительной области кода;

2. проверка классов и методов, в которых дефекты обнаруживались ранее;

3. проверка кода, который изменялся недавно.

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

Систематичный подход к поиску и исправлению ошибок — непременное условие успешности отладки. Организуйте отладку так, чтобы каждый тест приближал вас к цели. Используйте Научный Метод Отладки.

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

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

Инструменты отладки значительно облегчают разработку ПО. Найдите их и используйте. Большинство современных сред программирования (IntelliJ IDEA, C++ Builder, Visual Studio и т.д.) включают средства отладки, которые обеспечивают максимально эффективную отладку. Они позволяют:

· выполнять программу по шагам, причем как с заходом в подпрограммы, так и выполняя их целиком;

· предусматривать точки останова;

· выполнять программу до оператора, указанного курсором;

· отображать содержимое любых переменных при пошаговом выполнении;

· отслеживать поток сообщений и т.п.

Задание

1. Отладить один из модулей вашей ИС с использованием встроенных в среду разработки инструментальных средств.

2. Составить отчет по лабораторной работе.

 

Отчет по лабораторной работе должен включать:

1. Текст модуля на языке программирования до отладки и после.

2. Выявленные ошибки и как вы их исправили.

3. Ответы на контрольные вопросы.

 

Контрольные вопросы.

1. Что такое тестирование программы?

2. Что такое отладка программы? Какие ошибки можно выявить в ходе отладки?

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

4. Какие различают подходы в формировании тестовых наборов?

5. В чем суть тестирования методом “покрытия операторов”?

6. В чем суть тестирования методом “покрытия решений”?

7. В чем суть тестирования методом “покрытия условий”?

8. В чем суть тестирования методом “комбинаторного покрытия условий”?

9. В чём суть метода эквивалентных разбиений?

10. В чём суть метода анализа граничных значений?

11. В чём суть метода анализа причинно-следственных связей?


 

ЛАБОРАТОРНАЯ РАБОТА №6 Отладка отдельных модулей программного проекта

ЛАБОРАТОРНАЯ РАБОТА №6 Отладка отдельных модулей программного проекта

Аналитические методы базируются на анализе выходных данных для тестовых прогонов

Аналитические методы базируются на анализе выходных данных для тестовых прогонов

Подтверждение или опровержение гипотезы при помощи процедуры, определенной в п

Подтверждение или опровержение гипотезы при помощи процедуры, определенной в п

В чем суть тестирования методом “покрытия решений”? 7

В чем суть тестирования методом “покрытия решений”? 7
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
28.06.2020