- •1.Проблемы создания больших программ.
- •2. Основные понятия
- •3. Состав жизненного цикла по
- •1.Анализ требований
- •4.Стандартизация процессов жизненного цикла программ
- •5. Модели жизненного цикла программного обеспечения.
- •6.Техническое задание на разработку.
- •7.Документирование программ.
- •8.Выбор архитектуры по.
- •9.Структурный и объектный подходы к разработке программ.
- •10. Метод структурного анализа и проектирования sadt (idef0)
- •11. Диаграммы потоков данных dfd.
- •12. Диаграмма сущность – связь erm
- •13. Методы объектно-ориентированного анализа и проектирования. Язык uml.
- •14. Методы разработки структуры программной системы
- •15.Выбор языка программирования. Стиль программирования.
- •16.Защитное программирование.
- •17.Тестирование и отладка
- •18.Типичные ошибки
- •19.Отладка программных продуктов
- •20.Ввод в зксплуатацию
- •21.Ускорение разработки по. Технология rad
- •22. Экстремальное программирование
19.Отладка программных продуктов
Сложность отладки обусловлена рядом причин. Отладка требует от прогр-ста глубоких знаний специфики управления исполь-ыми технич.ср-ами, ОС, среды и языка прогр-ния, реализуемых процессов, природы и специфики различных ошибок, методик отладки и соответс-их прог.ср-в. Кроме того, отладка психологически дискомфортна, так как необходимо искать собственные ошибки и, как правило, в условиях огранич.времени. Возможно взаимовлияние ошибок в разных частях проги, например, за счет затирания области памяти одного модуля другим из-за ошибок адресации, отсутствуют четко сформулированные методики отладки.
Проблема или ошибка может быть рассмотрена как некоторый объект в системе, который может находиться в одном из следующих состояний:
1.проблема или ошибка зарег-на;
2.выполнен первичный анализ (эксперт подтвердил факт наличия ошибки);
3.понятна причина, вызвавшая ошибку;
4.выполнен окончательный анализ проблемы или ошибки;
5.принято решение о начале работы над исправлением;
6.выполнено исправление ошибки;
7.исправление интегрировано в основное пространство;
8.подтверждено исправление ошибки.
Отладка программы — процесс творческий и плохо формализуемый. Алгоритм отладки, основан на анализе данных.
Первый этап — изучение проявления ошибки. Если выданы какое-либо сообщение или неправильные, или неполные результаты, то необходимо их изучить и попытаться понять, какая ошибка могла так проявиться. Выдвигают версии о характере ошибки, которые необходимо проверить. Если ошибка не найдена или система просто «зависла», переходят ко второму этапу.
Второй этап — локализация ошибки. Производится определение конкретного фрагмента, при выполнении которого произошло отклонение от предполагаемого вычисл.процесса. Локализация может выполняться::
1. путем отсечения частей проги, причем если при отсечении некоторой части проги ошибка пропадает, то это может означать, что ошибка связана с этой частью и что внесенное изменение повлияло на проявление ошибки;
2. с исполь-ием отлад.ср-тв, позвол-их выполнить опред.фрагмент проги в пошаговом режиме и получить доп.инфо о месте проявления и характере ошибки, например уточнить содержимое указанных переменных.
Если были получены неправильные результаты, то в пошаговом режиме проверяют ключевые точки процесса формирования данного результата.
Ошибка не обяз-но может быть допущена в том месте, где она проявилась. Если в конкретном случае это гак, то переходят к следующему этапу.
Третий этап — определение причины ошибки. Производится изучение результатов второго этапа и формир-ие версий возможных причин ошибки. Эти версии необходимо проверить, возможно, используя отладочные ср-ва для просмотра послед-ти операторов или значений переменных.
Четвертый этап — исправление ошибки. Производится внесение соответс.изменений во все операторы, совместное выполнение которых привело к ошибке.
Пятый этап — повторное тестирование. Все тесты повторяются с начала, так как при исправлении обнаруженных ошибок часто вносят в программу новые.
Однако процесс отладки можно существенно упростить, если следовать основным рекомендациям структурного подхода к програм-ию:
1.программу наращивать «сверху вниз», от интерфейса к обрабатывающим подпрогам, тестируя ее по ходу добавления подпрог;
2. выводить юзеру вводимые им данные для контроля и проверять их на допустимость сразу после ввода;
3. предусматривать вывод осн.данных во всех узловых точках алгоритма (ветвлениях, вызовах подпрог). Кроме того, следует более тщательно проверять фрагменты ПО, где уже были обнаружены ошибки. Выше уже говорилось, что вероятность ошибок в этих местах по статистике выше.
Гораздо проще искать ошибки определения данных и ошибки накопления погрешностей: их причины локализованы в месте проявления. Логические ошибки искать сложнее. Причем обнаружение ошибок проектирования требует возврата на предыдущие этапы и внесения соответствующих изменений в проект. Ошибки кодирования бывают простые (исполь-ие неинициализиро-ой переменной) и очень сложные (например, связанные с затиранием памяти).
Затиранием памяти называют ошибки, приводящие к тому, что в резалте записи некоторой инфо не на свое место в оперативе затираются фрагменты данных или даже команд проги. Ошибки подобного рода вызывают появление сообщения об ошибке. Поэтому определить фрагмент, при выполнении которого ошибка проявляется, несложно. Определение фрагмента программы, который затирает память, — сложная задача: чем длиннее прога, тем сложнее искать ошибки такого рода. В этом случае часто прибегают к удалению из проги частей, хотя это и не обеспечивает однозначного ответа на вопрос, в какой из частей проги находится ошибка. Целесообразнее попытаться определить операторы, которые записывают данные в память не по имени, а по адресу, и последовательно их проверить. Особое внимание при этом следует обращать на корректное распределение памяти под данные.