Предотвращение ошибок. Программа должна быть защищена от недопустимого ввода и неправильной эксплуатации. Должна быть предусмотрена проверка вводимых данных. Можно использовать методы аппаратного обнаружения и исправления ошибок.
Выделяются подпункты:
неверное начальное состояние;
неадекватная проверка пользовательского ввода;
неадекватная защита от испорченных данных;
не выполнена проверка переданных параметров;
недостаточная защита от ошибок операционной системы;
не выполняется проверка версии;
недостаточная защита от неправильного использования («защита от дурака»).
Выявление ошибок. Программа должна контролировать правильность данных.
Выделяются подпункты:
переполнение;
невозможные значения;
непроверенные данные;
флаги ошибок;
аппаратные сбои;
сравнение данных;
восстановление после ошибок;
автоматическое исправление ошибок;
отсутствие сообщения об ошибке;
не установлен флаг ошибки;
куда возвращается управление? (Ошибки передачи управления после сбоя);
прекращение выполнения программы из-за ошибки. Имеются в виду возможные ошибки из-за не корректной обработки такой ситуации;
обработка аппаратных отказов;
ну нет у меня нужного диска! Программа должна предусматривать какой-то выход из ситуации, когда пользователь не в состоянии выполнить требуемое действие.
Ошибки, связанные с граничными условиями.
Выделяют следующие типы таких ошибок:
неправильная обработка граничного значения;
неверное граничное условие;
неправильная обработка данных, не соответствующих граничным условиям.
Выделяются следующие подпункты:
числовые ограничения;
ограничения на равенство;
количественные ограничения;
пространственные ограничения;
ограничения времени (имеются в виду вопросы, связанные с поведением системы на границах заданных в программе временных интервалов);
условия циклов;
ограничения объема памяти;
ограничения, связанные со структурой данных;
ограничения, связанные с аппаратным обеспечением;
невидимые границы.
Раздел представляется очень эклектичным. Напрашивается вывод о вынесении ошибок, связанных с циклами, использованием памяти, ошибок в структурах данных в отдельные разделы. Представляется, что наличие того или иного ограничения не может являться главным критерием классификации. Также все ошибки, связанные с аппаратным обеспечением должны быть собраны в отдельном разделе и там структурированы.