русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Тема 2.7 Отладка ПО. Трансляция. Компоновка программы. Выполнение программы с целью определения логических ошибок


Дата добавления: 2014-05-05; просмотров: 1948; Нарушение авторских прав


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

Отладка не является разновидностью тестирования, хотя слова «отладка» и «тестирование» часто используют как синонимы. Под ними подразумеваются разные виды деятельности:

— тестирование — деятельность, направленная на обнаружение ошибок;

— отладка направлена на установление точной природы известной ошибки, а затем — на исправление этой ошибки;

— результаты тестирования являются исходными данными для отладки.

Эти два вида деятельности очень тесно связаны и поэтому они обычно рассматриваются совместно.

В результате отладки программное обеспечение должно соответствовать определенной фиксированной совокупности правил и показателей качества, принимаемой для него за эталонную. Иными словами: отладка — это этап разработки, на котором устраняются недостатки только что созданного программного обеспечения.

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

Это обеспечивает надежность функционирования ПО при разнообразных произвольных, в том числе, искаженных сочетаниях исходных данных.

По оценкам специалистов, в общем времени разработки программного обеспечения, отладка занимает от 50 % до 90% (зависит от результатов проведения предыдущих этапов).

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



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

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

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

Статические методы включают:

— ручную прокрутку программы;

— прокрутку программы программными анализаторами (например, компилятором); автоматизированный анализ программы в этом случае проводится без выполнения ее на ЭВМ и поэтому попадает в категорию «статических»;

— коллективную проверку программ;

— проверку программы программистом-технологом с целью выявления и исправления в ней технологических ошибок.

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

Динамические методы связаны со значительным расходом машинного времени и, возможно, не меньшими затратами труда программиста. В этом случае отладка программ происходит совместно с их выполнением на ЭВМ. Динамические методы отладки программ, как правило, привязаны к конкретной ЭВМ и к конкретному транслятору (компилятору).

К динамическим методам относятся:

— тестирование;

— поиск ошибок с использованием системных средств;

— отладка программы в интерактивном режиме.

Важнейшее правило отладки: не делать следующего выхода наЭВМ, пока не будет разобрана каждая найденная ошибка. Из этого правила существует единственное исключение: если найдены 5—6 ошибок, которые не дают эффекта, то можно сделать новый выход на машину (устранив эти ошибки), чтобы получить эффект в чистом виде (если он есть),поскольку наложение нескольких ошибок иногда может дать самый неожиданный результат.

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

Автономная отладка частей программы

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

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


 

Раздел 3. . Интеграция системы

Эффективность программы

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

Правильность программы не является дополнительной характеристикой программы в отличие от эффективности.

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

Требования к эффективности программы обычно определяют на стадии проектирования.

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

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

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

Можно лишь обратить внимание на те аспекты, где скрыты резервы оптимизации и проиллюстрировать их на примерах.

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

Существуют два подхода к оптимизации программ: «чистка» и перепрограммирование. Оба подхода имеют как достоинства, так и недостатки.

Первый подход заключается в исправлении очевидных небрежностей в исходной программе. Его достоинство — данный метод требует мало времени. Однако повышение эффективности при этом обычно незначительно.

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

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

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

Оптимизация эффективности эксплуатации программного обеспечения.

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

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

Важным частным случаем запаса на развитие программы является ее универсальность и настройка по параметрам. Например, вряд ли можно найти много алгоритмов, для которых существенно то, что матрица имеет размер 20x20, а для матрицы размером 21x21 они уже непригодны. При этом, если в алгоритме нет ничего «существенного квадратного», то лучше считать размер матрицы с некоторыми параметрами — М и N.

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

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

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

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

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

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

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

Объем исходных данных. Программы принято делить на научные, коммерческие и системные.

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

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

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

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

Последствия ошибки. Контроль данных можно свести к минимуму или вообще пренебречь им, если он сложен, а ошибка не влечет катастрофических последствий.

Защита файлов. Помимо тщательного контроля данных, нужно предусмотреть еще организационные и/или программные меры защиты самих файлов их содержащих.

К организационным мерам можно отнести периодическое копирование файлов данных и хранение их в надежном месте (например, в сейфе).

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


 

Раздел 4. Коллективная разработка ПО



<== предыдущая лекция | следующая лекция ==>
Тема 2.5 Модульное тестирование. Автоматизация модульного тестирования. | Тема 4.1 Категории специалистов занятых разработкой и эксплуатацией программ


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.