• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 2022/2023

Принципы статического анализа исходного кода

Лучший по критерию «Новизна полученных знаний»
Статус: Курс по выбору (Программная инженерия)
Направление: 09.03.04. Программная инженерия
Когда читается: 3-й курс, 1, 2 модуль
Формат изучения: без онлайн-курса
Охват аудитории: для своего кампуса
Язык: русский
Кредиты: 5
Контактные часы: 60

Программа дисциплины

Аннотация

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

Цель освоения дисциплины

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

Планируемые результаты обучения

  • Понимать цели и задачи, а также основные принципы статического анализа исходного кода.
  • Знать основные структуры данных, используемые для представления исходного кода при статическом анализе.
  • Понимать принципы работы основных видов статического анализа.
  • Уметь использовать и создавать инструменты статического анализа.
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Введение в статический анализ.
  • Метрики ПО.
  • Лексический анализ.
  • Синтаксический анализ.
  • Внутреннее представление.
  • Анализ абстрактных синтаксических деревьев.
  • Анализ потока выполнения.
  • Анализ потока данных.
  • Межпроцедурный анализ.
  • Символическое исполнение и SMT решатели.
  • Дедуктивкая верификация.
  • Анализ на основе майнинга данных. Увтоматическое исправление ошибок.
  • Анализ Java байткода.
  • LLVM и Clang Static Analyzer.
  • EOLANG и Polystat.
Элементы контроля

Элементы контроля

  • неблокирующий Экзамен
    Устный экзамен. Теоретический вопрос и практическая задачка со временем на подготовку. Оценка от 0 до 10 баллов.
  • неблокирующий Бонусные баллы за работу на семинарах.
    Доклад на семинаре дает 1 (по 10-бальной шкале) бонусный балл.
Промежуточная аттестация

Промежуточная аттестация

  • 2022/2023 учебный год 2 модуль
    Итоговая оценка = Минимум (Экзамен + Бонус, 10)
Список литературы

Список литературы

Рекомендуемая основная литература

  • Компиляторы : принципы, технологии и инструментарий : пер. с англ., , 2019

Рекомендуемая дополнительная литература

  • Бруно, К. Л. LLVM: инфраструктура для разработки компиляторов / К. Л. Бруно, А. Рафаэль. — Москва : ДМК Пресс, 2015. — 342 с. — ISBN 978-5-97060-305-5. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/90119 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.

Авторы

  • Петрухина Анастасия Сергеевна