872.12K

Lektsia_4_ppsx (1)

1.

Исследование
программного кода
на предмет ошибок
и отклонения от алгоритма

2.

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

3.

Три ошибки программирования
Синтаксические ошибки: ошибки,
возникающие из-за того, что не соблюдается
синтаксис языка.
Семантические ошибки: ошибки,
возникающие из-за неправильного
использования операторов программы.
Логические ошибки: ошибки, возникающие
из-за того, что не соблюдается спецификация.

4.

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

5.

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

6.

Две взаимодополняющие
технологии отладки
1. Использование отладчиков.
2. Журналирование.

7.

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

8.

Журналирование
-вывод отладочных сведений в файл.
Вывод текущего состояния программы с
помощью расположенных в критических точках
программы операторов вывода —
на экран, принтер, громкоговоритель или
в файл.

9.

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

10.

Инструменты отладки
Отладка часто требует высокой
квалификации и значительных ресурсов.
Способности программиста к отладке —
важный фактор в обнаружении источника
проблемы, но сложность отладки существенно
зависит от
•используемого языка
программирования и
•инструментов, в частности, отладчиков.

11.

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

12.

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

13.

Инструменты отладки
Дизассемблеры позволяют посмотреть
ассемблерный код исполняемого файла.
Снифферы помогут отследить сетевой
трафик, генерируемый программой.
Снифферы аппаратных интерфейсов
позволяют увидеть данные, которыми
обмениваются система и устройство.
Логи системы.

14.

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

15.

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

16.

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

17.

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

18.

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

19.

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

20.

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

21.

Безопасность программного кода
и отладка
Методы:
Фаззинг - процесс подачи на вход программы
случайных или некорректных данных и анализ
реакции программы.
Обратная инженерия (Reverse engineering):
независимые исследователи ищут уязвимости
и недокументированные возможности программы.

22.

Программные измерительные
мониторы

23.

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

24.

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

25.

Классификация измерительных
мониторов

26.

Программные измерительные
мониторы
Измерительные мониторы (ИМ)
Средства, обеспечивающие регистрацию
событий и измерение параметров.

27.

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

28.

Требования к измерительным
мониторам
2. Обеспечение достаточной точности и
разрешающей способности
Точность
Разрешающая способность
3. Низкая стоимость, простота
установки и использования

29.

Типы измеряемых характеристик
программы
1) Полные или обобщенные характеристики
потребления ресурсов программой (время
выполнения, используемая память).
2) Коэффициент загрузки
ресурсов (утилизация) – отношение времени
потребления ресурса к общему времени
выполнения программы. В качестве ресурса
может выступать аппаратный или программный
компонент системы.

30.

Типы измеряемых характеристик
программы
3) Профили выполнения программы.
Основное назначение профилей – определение
•критических ресурсов, или
•критичных фрагментов программы по
потреблению ресурсов.

31.

Типы измеряемых характеристик
программы
4) Трассировочная запись. Измерение
множества пар
,
r i - значение i-го параметра,
tij - время регистрации.
Содержит хронологию выполнения, поэтому
является наиболее исчерпывающей
характеристикой.

32.

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

33.

Достоинства АИМ
1) малый уровень искажений, вносимый в
работу системы при фиксации параметров;
2) высокая разрешающая способность по
времени и по событиям;
3) регистрация микрособытий;
4) возможность параллельного измерения
нескольких параметров;
5) возможность проведения измерений в
отладочном режиме при некорректно работающей
системе;
6) способность АИМ работать с разными
платформами и системами команд.

34.

Недостатки АИМ
1) малая универсальность (гибкость);
2) сложность регистрации событий, связанных
с выполнением программ (макрособытий);
3) высокая стоимость.

35.

Гибридные измерительные
мониторы (ГИМ)
Обычно программным способом
выполняется регистрация событий,
связанных с выполнением программ,
а аппаратным – параметры при
наступлении событий.
ГИМ бывают встроенные и автономные.

36.

Гибридные измерительные
мониторы (ГИМ)
Встроенные отличаются микрокодом.
Микропрограммы служат для регистрации
событий и параметров. Работают быстрее
программных.
У автономных наличие измерительного
компьютера наряду с измеряемым. Можно
изменять программу измерений и по линиям
связи с измеряемой системы получать доступ к
измерению любых ресурсов.

37.

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

38.

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

39.

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

40.

Недостатки ПИМ
1)нет программ автоматического анализа их
протоколов;
2) низкая точность сопоставления ресурса и
задания, которое его потребляет;
3) нет в результатах измерений желаемого
уровня детализации (нет структуры потребления
ресурсов).

41.

Автономные ПИМ
Большинство современных мониторов
специализированные и являются
профилировщиками (анализатор кода
выполнения программ).
Выполняется
•трассировка путей выполнения программ,
•регистрация времени выполнения
фрагментов,
•определение «узких мест» и
•контроль покрытия маршрутов выполнения
программ.

42.

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

43.

Общие особенности
программных мониторов
2);
2) Буферизация измеряемых данных
- размер буфера;
- количество буферов (минимальное количество
-переполнение буфера.
3) Язык разработки монитора.
4) Приоритет выполнения монитора
(обычно низкий).
English     Русский Rules