Еще одним принципом классификации ошибок может быть их место в жизненном цикле программного изделия.
Можно наметить следующую схему такой классификации.
1. Ошибки при постановке задачи и при составлении ТЗ.
2. Ошибки проектирования.
2.1. Ошибки в структуре ПО.
2.2. Ошибки функциональности отдельных модулей.
2.3. Ошибки программных интерфейсов.
2.4. Ошибки в спецификациях программ.
2.5. Недостатки программы и методики тестирования.
2.6. Ошибки при выборе средств разработки и управления проектом.
3. Ошибки кодирования.
3.1. Опечатки при кодировании.
3.2. Ошибки при реализации спецификаций.
3.3. Не выполнение критериев добротности программы.
3.4. Недостатки оформления и документирования исходных текстов.
4. Ошибки отладки и тестирования.
4.1. Не реализована полностью программа и методика тестирования.
4.2. Не все ошибки отражены в отчете.
4.3. Не все ошибки исправлены.
4.4. Недостатки в документировании ошибок.
5. Ошибки и недочеты в документации на ПО.
6. Ошибки на этапе эксплуатации и модернизации.
|
|
6.1. Отсутствие системы сбора ошибок и пожеланий пользователей.
6.2. Не все ошибки фиксируются.
6.3. Отсутствует единые принципы ведения и форматы документов об ошибках.
6.4. Ошибки исправляются не оперативно.
6.5. Обновление системы осуществляется некорректно.
6.6. Исправление одних ошибок приводит к появлению других.
Безусловно, данная классификация может быть расширена и уточнена. На данный момент она представляется мне основной, т.к. привязка к жизненному циклу ПО в связи с рассмотрением всех вопросов проектирования является правильным подходом. Возможно, что именно особенности жизненного цикла программного изделия определяют принципиальные отличия разных категорий программных продуктов, таких как надежное, безопасное, защищенное ПО и т.д. и позволяют задавать дополнительные требования к ним.
Интерес для дальнейшего исследования представляет п.3.1, связанный с опечатками при кодировании. Методы обнаружения и исправления ошибок здесь такие же, как для текстов документов. Они неплохо проработаны и доведены до программной реализации. Для текстов программ, которые написаны на формальном языке, можно предположить более высокие показатели качества этих методов (по сравнению с текстами на естественном языке). Анализ ошибок в текстах и соответствующих методов их обнаружения и исправления, а также их применение для текстов программ, выходит за рамки настоящей статьи.
Также заслуживает внимания и п.3.3, приведенной классификации. Обычно на этом этапе разработки ПО речь идет о плохом стиле программирования. Это понятие до сих пор слабо формализовано и понимается программистами и теоретиками программирования по-разному. Введенное И.В. Поттосиным понятие добротности программы [9] является более емким понятием, характеризующим высококачественное кодирование, нежели, чем понятие стиля программирования. Рассмотрение всего круга вопросов, связанного с добротностью программ и ошибок (недостатков) программы, которые снижают характеристики ее добротности требуют отдельного рассмотрения.