Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Отладка. Устранение ошибок называется отладкой программы
Устранение ошибок называется отладкой программы. Для отладки нужно обнаружить признаки ошибки, локализовать ее, выяснить ее сущность, а затем исправить. Отладка программы или ее составных частей начинается после исправления синтаксических ошибок. Чтобы обнаружить семантические ошибки, нужно протестировать программу, т.е. проверить ее работу на специально подобранных экземплярах входных данных – тестах. Таким образом, отладка программы и ее составных частей обязательно включает в себя их тестирование. Однако коммерческий программный продукт после отладки проходит еще одну стадию тестирования. Его, как правило, осуществляют люди, не принимающие участия в разработке и отладке программы. После тестирования вновь может понадобиться отладка, и т.д. Основы тестирования рассматриваются в следующем подразделе. Из всех видов работы программиста отладка наименее освещена в литературе; данное пособие также ограничивается общими рекомендациями. Отладка считается трудным искусством, и многие программисты, особенно начинающие, тратят на нее больше времени, чем на проектирование и кодирование. По некоторым оценкам, в общем времени разработки программы отладка занимает от 50 до 90 %. Главная причина трудностей отладки, по-видимому, заключается в психологической установке, когда разум видит то, что он хочет и ожидает увидеть, а не то, что есть в действительности. Отсюда и невнимательность при проектировании и программировании, и неспособность тщательно проверить собственную программу. Автору этих строк ежегодно приходится проверять десятки студенческих программ и почти всегда выявлять там ошибки, хотя каждый раз, сдавая программу, студент уверен в ее правильности. Лучший способ облегчить отладку – свести к минимуму ее необходимость. Нисходящее проектирование, структурное программирование и хороший стиль уменьшают исходное количество ошибок, упрощают понимание программы и облегчают ее отладку. К рекомендациям по хорошему стилю добавим следующие. § По возможности инициализируйте переменные, т.е. присваивайте им начальные значения прямо в определении. § Старайтесь избегать разнотипных операндов в выражениях, особенно в сравнениях, и не использовать совместимость целых типов по присваиванию – это часто приводит к трудноуловимым ошибкам. § Четко определяйте область значений данных, с которыми должна работать программа или подпрограмма, и добавляйте операторы проверки, находятся ли данные в установленных границах. § Учитывайте, что входные данные каждого модуля могут содержать ошибку и подлежат проверке. § Если последовательность символов должна, например, содержать только цифры и, возможно, знаки " +" или " -", проверьте, нет ли там посторонних символов, например букв. Средства, с помощью которых это можно сделать в системе Турбо Паскаль. § Если переменная может иметь N известных значений, которым соответствует N ветвей вычислений, добавьте проверку, не отличается ли ее значение от всех предусмотренных, и еще одну ветвь вычислений, которая соответствует непредусмотренным значениям. § Проверяйте, находятся ли значения индексов массива в допустимых пределах. Для этого полезно использовать подпрограммы, определенные в системе программирования. Еще несколько рекомендаций связаны с добавлением в программу специальных отладочных операторов и определений, необходимых для них. Они предназначены для того, чтобы давать как можно более точную информацию о месте ошибки, и называются стопорами ошибок. Убрать средства отладки в дальнейшем гораздо проще, чем включать их в уже набранную программу, когда выяснится, что она содержит ошибки. § Добавляйте в программу операторы эхо-проверки, т.е. вывода полученных входных данных. § Вставляйте в программу отладочные блоки, структура которых позволяет в дальнейшем удалить их без внесения ошибок в программу. В них можно выборочно выдавать значения переменных и указывать, что началось или закончилось выполнение той или иной подпрограммы или всей программы. § Работой отладочных блоков можно управлять с помощью набора булевых переменных, которые специально определяются в программе и удаляются в конце отладки. Они инициализируются в начале программы и своими значениями указывают, выполнять ли соответствующий блок и выводить ли значение той или иной переменной. § Используйте счетчики, позволяющие узнать число выполнений циклов или вызовов подпрограмм. Встраивание отладочных средств при разработке программы называется защитным стилем программирования. Его часто игнорируют, в основном, из-за излишней самоуверенности и нежелания тратить усилия на средства отладки, хотя миллионы раз проверено, что затраты времени на защитное программирование многократно окупаются при отладке программы. Еще один способ облегчить отладку связан с имитацией программы на бумаге. Для этого нужно уметь внимательно читать ее и стараться как можно глубже вникнуть в алгоритм. Это особенно полезно, если ошибка локализована в небольшой области текста, и нужно найти ее точное расположение. Наконец, для отладки полезны средства системы программирования. § Ничего в программе не принимайте на веру. § Любое исправление может внести в программу новую ошибку и требует дополнительной проверки. Внося поправки в программу, вы можете создать несоответствие с результатами проектирования и спецификациями, поэтому будьте осмотрительны.
|