Бакалавриат
2022/2023![Цель освоения дисциплины](/f/src/global/i/edu/objectives.svg)
![Планируемые результаты обучения](/f/src/global/i/edu/results.svg)
![Содержание учебной дисциплины](/f/src/global/i/edu/sections.svg)
![Элементы контроля](/f/src/global/i/edu/controls.svg)
![Промежуточная аттестация](/f/src/global/i/edu/intermediate_certification.svg)
![Список литературы](/f/src/global/i/edu/library.svg)
Принципы статического анализа исходного кода
Лучший по критерию «Новизна полученных знаний»
Статус:
Курс по выбору (Программная инженерия)
Направление:
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). — Режим доступа: для авториз. пользователей.