Классификация ошибок

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

· ошибки в описании задачи. Иногда случается, что программа написана, а пользователь обнаруживает несоответствие между выдаваемыми и ожидаемыми результатами. Некачественная постановка требований приводит к созданию программы, которая будет правильно решать неверно сформулированную задачу. В этом случае требуется полное перепрограммирование. Чтобы исключить такие ошибки необходимо письменное формулирование технического задания (ТЗ). Это заставляет заказчика собраться с мыслями и дать точное определение ТЗ. Всякие устные указания являются ненадежными и часто приводят к взаимному недопониманию заказчика и исполнителя;

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

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

· ошибки общего характера. Они возникают из-за недостаточного знания или непонимания алгоритмического языка программирования. К ним относятся: ошибки применения операторов, не обеспечивающих последовательности событий, устанавливаемых алгоритмом, синтаксические ошибки, ошибки при выполнении синтаксически правильных операторов (деление на ноль, извлечение корня из отрицательного числа и т.д.), ошибки, вызванные неверными данными. Наконец, существует еще один вид ошибок, называемый глитчем (хроническим дефектом) – программы не удовлетворяют некоторым требованиям, которые не были сформулированы в ТЗ;

· ошибки физического характера. К ним относят случайный пропуск некоторых операторов, перестановка их в программе, отсутствие необходимых данных и др.;

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