Сделай Сам Свою Работу на 5

Технологии отладка программ

 

Одна из аксиом программирования гласит: Любая нетривиальная программа содержит хотя бы одну ошибку. Практика показывает справедливость этой аксиомы. Как бы хорошо ни была подготовлена программа, какие бы методы ни применялись при построении программы, следует исходить из "презумпции виновности".

Для обнаружения и устранения ошибок выделяется целый этап - отладка программ. Большинство специалистов считают, что отладка (вместе с тестированием) занимает 50% времени разработки программ.

Цель отладки - изменить программу таким образом, чтобы она была в состоянии решить запланированную задачу.

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

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

Само тестирование разделяют на три фазы: составление (генерация) тестовых наборов, выполнение программы на этих наборах, оценка результатов выполнения программы. Для простых случаев все три фазы выполняются "вручную", без машины. Но серьезное тестирование должно, конечно, включать в себя работу на машине. К сожалению, в общем случае полную систему тестовых наборов построить автоматически невозможно.

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

Представим отладку программы в виде контура управления, в котором объектом управления является отлаживаемая программа Р. Целью такой системы является повышение уровня безошибочности программы.

На схеме, представленной на рис. 4.12, субъект управления представляет собой отладочные средства, включают кроме программ еще и человека, выполняющего многие неформализованные действия.

 
 

 


Рис. 4.12. Схема отладки

Т- это задание на тестирование, включающее, естественно, и тестовый набор. Блок М определяет корректность выполнения тестового задания, блок А определяет причину некорректности, блок С осуществляет целенаправленное изменение. Изменение может быть направлено на программу Р, (с тем, чтобы добиться корректного выполнения тестового задания или включить в программу инструментальные вставки - счетчики, команды печати, команды прерываний и т.п. - для облегчения последующего анализа) или на само тестовое задание (если ошибка обнаружена в задании), или на порядок выполнения тестовых заданий (если задание уже выполнилось корректно или полученных результатов недостаточно для определения причины некорректности).

Таким образом, блоки М и А олицетворяют анализ, а блок С - внесение изменений.

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

В традиционных методах отладки объектом управления является сама программа Р или ее инструментированная модификация. С появлением аппарата смешанных вычислений можно рассматривать и такие методы отладки, где объект управления - остаточная программа.

Остаточная программа - понятие, введенное А.П. Ершовым в связи с определением смешанных вычислений. Остаточная программа - это программа, получаемая в результате адаптации исходной программы к некоторым дополнительным условиям. Обычно эти условия представляют собой задание значений некоторых из входных величин или ограничения, дополнительно накладываемые на ареалы этих величин (сужение ареалов). Уровень адаптации зависит от самой исходной программы, и от возможностей смешанного вычислителя. Разные смешанные вычислители по одинаковой дополнительной информации могут породить, вообще говоря, разные остаточные программы.

Не всегда дополнительные условия определяют требования к значениям входных величин. Условия могут быть достаточно сложными и касаться разных объектов, свойств, или функций программы. Важным частным случаем представляется, например, такое условие - программа при выполнении должна проходить через заданный оператор. Адаптация к такому условию реализуется преобразованием к новой программе, из которой, по сравнению с исходной, удалены пути, не проходящие через оператор. Назовем такую новую программу - остатком исходной программы по конкретному заданному оператору.

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

Пусть, например, для устранения причины ошибки, обнаруженной при тестировании и диагностировании при анализе, предполагается откорректировать некоторый оператор программы. Построим остаток программы по этому оператору - получится более простая программа, анализ которой потребует меньше усилий. Отброшенные участки программы не зависят от предполагаемой корректировки и не влияют на состояние изменяемого оператора. Можно показать и другие достоинства применения остаточных программ и остатков для отладки. В частности, можно уменьшить объем тестирования.

 



©2015- 2017 stydopedia.ru Все материалы защищены законодательством РФ.