Разработка сложных программных изделий


Рекомендации по отладке


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

Для упорядочения процесса тестирования собирайте и анализи­руйте информацию:

• об особенностях и статистике ошибок;

• о специфике исходных данных и последовательности измене­ния переменных в программе и их взаимном влиянии;

• о структуре алгоритма и особенностях его программной реа­лизации.

2. В каждый момент времени определяйте местоположение одной ошибки.

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

4. Тщательно изучайте полученные выходные данные и сравни­вайте их с ожидаемыми, заранее просчитанными результатами.

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

6. Используйте совместный анализ потоков данных и потоков управления для проверки корректности в установлении областей определения данных для разных маршрутов выполнения програм­мы.

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


8. Документируйте все обнаруженные и исправленные ошибки, отмечая, где они были найдены, и указывая тип ошибки. Эта ин­формация будет полезной для предсказания источников ошибок в будущем. (Каждый программист имеет свой профиль ошибок, т.е. склонность к ошибкам определенного типа.)

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

10. Дл»1 повышения опыта и тренировки в отладке программ ис­пользуйте программы с искусственно помещенными в них ошибка­ми. После определенного периода отладки программисту следует указать на. оставшиеся необнаруженные ошибки.

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


Содержание раздела