Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Категории ошибок в программном обеспечении

Поиск

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

Ошибки можно систематизировать по этапам разработки про­граммного продукта.

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

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

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

4. При алгоритмизации отдельных функциональных задач могут быть допущены ошибки, обусловленные выбором неверного или неэффективного алгоритма, неправильного математического мето­да решения, неверной логикой алгоритма.

5. Серьезные ошибки могут быть допущены при проектирова­нии базы данных (в описании модели, определении типов элемен­тов и структур данных, а также связей между ними, способах обра­щений к данным и т.п.)-

6. Наибольшее число ошибок относится к этапу кодирования и тестирования. Ошибки этой группы исследованы наиболее полно, и для них собран обширный статистический материал-Ошибки при программировании можно просто разделить на синтаксические и логические. Многие синтаксические ошибки обна­руживает транслятор; немало синтаксических ошибок при трансля­ции не обнаруживается.

Так в ряде языков программирования не обнаруживаются про­пуски операторов в программе, нарушения форматов ввода/вывода, правил индексации массивов, отсутствие начальных значений пере­менных и т.п. Не выявляются, как правило, и ошибки в указании типов передаваемых параметров при вызовах процедур.

Наиболее распространены следующие ошибки, зафиксирован­ные при разработке программного обеспечения. А- Ошибки в спецификациях.

1. Неполная или неоднозначная спецификация.

2. Некорректное определение проблемы. Б. Ошибки проектирования.

1. Непонимание спецификаций.

2. Некорректный алгоритм решения задачи.

3. Пропуск отдельных шагов и вариантов алгоритма.

4. Ошибки инициализации переменных.

5. Ошибки в управлении циклом,

6. Пропуски отдельных типов данных. В. Ошибки кодирования. 1- Неправильное понимание проектных документов.

2. Ошибки в управляющих структурах.

3. Ошибки форматов ввода/вывода.

4. Ошибки индексирования.

5. Ошибки инициализации и повторная инициализация.

6. Противоречивые наименования переменных.

7. Ошибки межпрограммных интерфейсов.

8. Ошибки в записи математических выражений.

9. Переполнение, потеря значимости или точности.

10. Логические ошибки.

11 - Отсутствие проверки флажка и контроля установки началь­ных значений.

12. Ошибки в операциях манипулирования данными.

13. Ошибки в пользовательском интерфейсе и в сопряжениях с системным программным обеспечением. Г. Ошибки тестирования и отладки.

1. Неадекватные тестовые наборы данных.

2. Недостаточное или некорректное использование тестовых вариантов и данных.

3. Неправильная интерпретация результатов тестирования.

4. Неправильные выводы о причинах ошибки и се источнике.

5. Неправильное понимание программной спецификации при выборе тестовых наборов данных. Д. Ошибки в описании базы данных. 1- Ошибки в сопряжениях с базой данных.

2. Ошибки в словарной базе метаданных.

3. Ошибки в инициализации базы данных. Е. Канцелярские ошибки.

1. Описки.

2. Неверное использование клавиш.

3. Пропуск или перестановка строк программы. Ж. Внешние ошибки.

1. Отказы технических устройств.

2. Реакция программного обеспечения на сбои в работе техни­ческих устройств.

3. Ошибки из-за аварийных ситуаций, возникающих в других системах, с которыми взаимодействует рассматриваемое про­граммное изделие. 3. Ошибки в документации.

Вероятность появления ошибок перечисленных категорий зави­сит от многих факторов, но, как показывает анализ, наиболее рас­пространены логические ошибки (20—35%), ошибки манипулирова­ния данными, ошибки внешних и внутренних интерфейсов, описа­ний данных (каждая категория от 5 до 20%).

Рекомендации по отладке

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

Для упорядочения процесса тестирования собирайте и анализи­руйте информацию:

• об особенностях и статистике ошибок;

• о специфике исходных данных и последовательности измене­ния переменных в программе и их взаимном влиянии;

• о структуре алгоритма и особенностях его программной реа­лизации.

2. В каждый момент времени определяйте местоположение одной ошибки.

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

4. Тщательно изучайте полученные выходные данные и сравни­вайте их с ожидаемыми, заранее просчитанными результатами.

5. Обращайте особое внимание на данные, обрабатываемые программой, поскольку функционирование программы — это обра­ботка потока данных. Тщательно анализируйте работу программы для граничных значений проверяемых условий, а также при непра­вильных входных данных, когда необходимо контролировать ошибки, относящиеся к данным. Контролируйте типы данных, диа­пазоны их значений, размеры полей и конкретные значения пере­менных и их точность.

6. Используйте совместный анализ потоков данных и потоков управления для проверки корректности в установлении областей определения данных для разных маршрутов выполнения програм­мы.

7. Используйте одновременно различные средства отладки, не останавливайтесь на одной возможности. Привлекайте наиболее мощные автоматизированные средства и одновремейно применяйте ручные методы отладки и тестирования за рабочим столом, прове­ряя текст программы (индивидуально или группой) с точки зрения ее функционирования и с учетом наиболее вероятных ошибок.

8. Документируйте все обнаруженные и исправленные ошибки, отмечая, где они были найдены, и указывая тип ошибки. Эта ин­формация будет полезной для предсказания источников ошибок в будущем. (Каждый программист имеет свой профиль ошибок, т.е. склонность к ошибкам определенного типа.)

9. Измеряйте сложность программ. Программы (модули) с высо­ким цикломатическим числом имеют более высокую предрасполо­женность к ошибкам и будут, вероятно, требовать большего време­ни для их обнаружения и исправления. В программах с высокой сложностью более высока вероятность ошибок спецификаций и проектирования, а с низкой сложностью — кодирования и канце­лярских огцибок.

10. Дл»1 повышения опыта и тренировки в отладке программ ис­пользуйте программы с искусственно помещенными в них ошибка­ми. После определенного периода отладки программисту следует указать на. оставшиеся необнаруженные ошибки.

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



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 1174; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.219.247.59 (0.006 с.)