- •ВВЕДЕНИЕ
- •1. ТЕОРЕТИЧЕСКИЙ МАТЕРИАЛ К ЛАБОРАТОРНЫМ РАБОТАМ И КОНТРОЛЬНЫМ ЗАДАНИЯМ
- •1.1. Основные проблемы и ошибки при написании программного кода
- •1.2. Написание корректного программного кода. Версионирование
- •1.3. Рефакторинг кода
- •1.4. Оптимизация кода
- •1.5. Дебаггинг
- •2. ЛАБОРАТОРНЫЕ РАБОТЫ
- •2.1. Лабораторная работа № 1 «Модифицирование программного кода»
- •2.2 Лабораторная работа №2 «Рефакторинг программного кода»
- •2.3 Лабораторная работа №3 «Оптимизация программного кода»
- •2.4 Лабораторная работа №4 «Отладка программного кода»
- •3. ТЕМЫ ДЛЯ ПОДГОТОВКИ К ЗАЧЕТУ
- •4. ТИПОВЫЕ ТЕСТОВЫЕ ЗАДАНИЯ
- •4.1. Типовой вариант по теме «Основные проблемы и ошибки при написании программного кода»
- •4.2. Типовой вариант по теме «Написание корректного программного кода. Версионирование»
- •4.3. Типовой вариант по теме «Рефакторинг кода»
- •4.4. Типовой вариант по теме «Оптимизация кода»
- •5. КОМПЛЕКТ ЗАДАНИЙ ДЛЯ КОНТРОЛЬНОЙ РАБОТЫ
- •СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
- •ПЕРЕЧЕНЬ РЕСУРСОВ СЕТИ «ИНТЕРНЕТ», РЕКОМЕНДУЕМЫХ ДЛЯ ОСВОЕНИЯ ДИСЦИПЛИНЫ
Перед вызовом функции проверяется, вызывалась ли функция
ранее:
–если не вызывалась, функция вызывается и результат её выполнения сохраняется;
–если вызывалась, используется сохранённый результат.
1.5.Дебаггинг
Вопросы для рассмотрения: Отладка. Назначение и способы. Место отладки в цикле разработки программы. Инструменты отладки. Профилировщики. API логгеры. Дизассемблеры. Снифферы. Снифферы аппаратных интерфейсов. Логи. Инструменты, снижающие потребность в отладке. Контрактное программирование. Статический анализ кода. Безопасность программного кода и отладка. SQL-инъекция и переполнение буфера. Выявление недокументированного поведения системы. Устранение небезопасного кода. Статический анализ кода. Фаззинг.
Рекомендуемая литература: 1, 2.
Перечень дополнительных ресурсов: 2, перечень ресурсов в сети Интернет.
Наименование вида самостоятельной работы: изучение ли-
тературы, выполнение тестовых заданий, подготовка к лабораторным работам.
Дебаггинг или отладка— этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют ошибки. Чтобы понять, где возникла ошибка, приходится:
–узнавать текущие значения переменных;
–выяснять, по какому пути выполнялась программа.
–Существуют две взаимодополняющие технологии отладки.
–Использование отладчиков — программ, которые включают
всебя пользовательский интерфейс для пошагового выполнения программы: оператор за оператором, функция за функцией, с остановками на некоторых строках исходного кода или при достижении определённого условия.
–Вывод текущего состояния программы с помощью расположенных в критических точках программы операторов вывода
— на экран, принтер, громкоговоритель или в файл. Вывод отладочных сведений в файл называется журналированием.
–Отладчик представляет из себя программный инструмент, позволяющий программисту наблюдать за выполнением исследуемой программы, останавливать и перезапускать её, прогонять в замедленном темпе, изменять значения в памяти и даже, в некоторых случаях, возвращать назад по времени.
Также полезными инструментами в руках программиста могут оказаться:
–Профилировщики. Они позволят определить, сколько времени выполняется тот или иной участок кода. Анализ покрытия позволяет выявить неисполняемые участки кода.
–API логгеры позволяют отследить взаимодействие программы и Windows API при помощи записи сообщений Windows в лог.
–Дизассемблеры позволяют посмотреть ассемблерный код исполняемого файла
–Снифферы помогут отследить сетевой трафик, генерируемый программой
–Снифферы аппаратных интерфейсов позволяют увидеть данные, которыми обмениваются система и устройство.
–Логи системы.
Использование языков программирования высокого уровня обычно уп-
рощает отладку, если такие языки содержат, например, средства обработки исключений, сильно облегчающие поиск источника проблемы. В низкоуровневых языках ошибки могут приводить к незаметным проблемам — например, повреждениям памяти и утечкам памяти. Тогда бывает довольно трудно определить, что стало первоначальной причиной ошибки. В этих случаях могут потребоваться сложные приёмы и средства отладки.
Инструменты, снижающие потребность в отладке:
–Контрактное программирование — чтобы программист подтверждал другим путём, что ему на выходе нужно именно такое поведение программы. В языках, в которых контрактного программирования нет, используется самопроверка программы в ключевых точках.
–Модульное тестирование — проверка поведения программы по частям.
–Статический анализ кода — проверка кода на стандартные ошибки «по недосмотру».
–Высокая культура программирования, в частности,