5.18.4. Методы выявления ошибок

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

1) Метод обзора кода.

Это визуальный просмотр текста программы, анализ логики выполнения отдельных операторов.

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

Согласно статистике, компилятор языка Си++ не замечает 9,4 % синтаксических ошибок и опечатки. Например, вместо индекса i используется j. И та, и другая переменные описаны в программе, поэтому такая ошибка компилятором не распознается, а на этапе тестирования время на устранение подобных ошибок увеличивается в десятки раз.

По данным разных исследований, при обзоре кода одна ошибка выявляется и ликвидируется в среднем каждые 5 — 20 мин, на этапе тестирования модулей — каждые 15 — 30 мин и на этапе комплексного тестирования — каждые 8 ч.

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

2) Контрольный анализ.

Это процедура просмотра работ руководителем для выявления возможных ошибок.

Проведение контрольного анализа периодически планируется для всех исполнителей на всех стадиях процесса разработки ПО.

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

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

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

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

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

3) Метод чтения программы.

Этот метод часто используется опытными программистами для установления правильности системы. Является очень эффективным.

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

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

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

В сентябре 2002 года компания Compuware выпустила новый продукт DevPartner64, предназначенный для отладки и выявления ошибок в 64-битных приложениях.

Пакет DevPartner64 расширяет возможности разработчиков, занимающихся созданием приложений для вычислительных комплексов на базе 64-разрядного процессора Intel Itanium (процессоры Itanium и Itanium 2 ориентированы на обработку крупных массивов данных и на выполнение транзакций, требовательных к вычислительным ресурсам, что свойственно большинству современных приложений, применяемых в деловой и научно-исследовательской сфере).

Разработчики могут автоматически обнаруживать и диагностировать утечки памяти, переполнение буферов, некорректные вызовы интерфейсов API и другие распространенные ошибки программирования.

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

Итак, каждому этапу ЖЦ ПО свойственны свои проблемы и решения. Наиболее совершенные методы используются на более поздних этапах разработки.

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

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