
- •К вопросу о классификации программных ошибок
- •Определение понятия «ошибка в программе»
- •Классификация ошибок по месту их возникновения
- •Классификация ошибок с точки зрения тестировщика
- •Классификация ошибок по степени их критичности
- •Классификация ошибок в зависимости от их места в жизненном цикле программного изделия
- •Классификация программных ошибок (багов) с точки зрения субъективного восприятия их программистами
- •Некоторые выводы
- •Литература
Классификация ошибок в зависимости от их места в жизненном цикле программного изделия
Еще одним принципом классификации ошибок может быть их место в жизненном цикле программного изделия.
Можно наметить следующую схему такой классификации.
Ошибки при постановке задачи и при составлении ТЗ.
Ошибки проектирования.
Ошибки в структуре ПО.
Ошибки функциональности отдельных модулей.
Ошибки программных интерфейсов.
Ошибки в спецификациях программ.
Недостатки программы и методики тестирования.
Ошибки при выборе средств разработки и управления проектом.
Ошибки кодирования.
Опечатки при кодировании.
Ошибки при реализации спецификаций.
Не выполнение критериев добротности программы.
Недостатки оформления и документирования исходных текстов.
Ошибки отладки и тестирования.
Не реализована полностью программа и методика тестирования.
Не все ошибки отражены в отчете.
Не все ошибки исправлены.
Недостатки в документировании ошибок.
Ошибки и недочеты в документации на ПО.
Ошибки на этапе эксплуатации и модернизации.
Отсутствие системы сбора ошибок и пожеланий пользователей.
Не все ошибки фиксируются.
Отсутствует единые принципы ведения и форматы документов об ошибках.
Ошибки исправляются не оперативно.
Обновление системы осуществляется некорректно.
Исправление одних ошибок приводит к появлению других.
Безусловно, данная классификация может быть расширена и уточнена. На данный момент она представляется мне основной, т.к. привязка к жизненному циклу ПО в связи с рассмотрением всех вопросов проектирования является правильным подходом. Возможно, что именно особенности жизненного цикла программного изделия определяют принципиальные отличия разных категорий программных продуктов, таких как надежное, безопасное, защищенное ПО и т.д. и позволяют задавать дополнительные требования к ним.
Интерес для дальнейшего исследования представляет п.3.1, связанный с опечатками при кодировании. Методы обнаружения и исправления ошибок здесь такие же, как для текстов документов. Они неплохо проработаны и доведены до программной реализации. Для текстов программ, которые написаны на формальном языке, можно предположить более высокие показатели качества этих методов (по сравнению с текстами на естественном языке). Анализ ошибок в текстах и соответствующих методов их обнаружения и исправления, а также их применение для текстов программ, выходит за рамки настоящей статьи.
Также заслуживает внимания и п.3.3, приведенной классификации. Обычно на этом этапе разработки ПО речь идет о плохом стиле программирования. Это понятие до сих пор слабо формализовано и понимается программистами и теоретиками программирования по-разному. Введенное И.В. Поттосиным понятие добротности программы [9] является более емким понятием, характеризующим высококачественное кодирование, нежели, чем понятие стиля программирования. Рассмотрение всего круга вопросов, связанного с добротностью программ и ошибок (недостатков) программы, которые снижают характеристики ее добротности требуют отдельного рассмотрения.