Автоматизация программирования
Курс кафедры Алгоритмов и технологий программирования (https://wiki.atp-fivt.org) в магистратуре.
В рамках курса рассматриваются современные и перспективные методы автоматизации разработки и тестирования программного обеспечения. Исследовательская часть курса включает небольшое самостоятельное исследование по темам курса.
Темы курса:
- Модельно-ориентированные методы разработки и предметно-ориентированные языки (DSL)
- Синтез программ по примерам средствами машинного обучения
- Автоматизация тестирования и верификации программ
- Верификация систем распределенного реестра
Расписание и темы курса
Неделя | Тема | Задания |
---|---|---|
06.02.2023 | Вводная лекция. О курсе. Что такое автоматизация в программировании. Программа, цели. Как сдавать. Критерии оценки. Семинар. Актуальные проблемы и анонсы тем курса | — |
13.02.2023 | Тема. Предметно-ориентированные языки. DSL. Грамматики. Парсеры. Разработка языков. Семинар. Разработка DSL для робота Karel на textX | — |
20.02.2023 | Тема. Анализ кода репозиториев. Индукция и синтез программ. Задача программирования на естественном языке. Задача для робота Karel. Семинар. (демо обученной модели - WikiSQL или другой) | Лабораторная работа 1. Разработка DSL. |
27.02.2023 | Тема. Методы синтеза программ. Элементы обучения с подкреплением. Beam search. Execution. Partial programs, Meta-induction. Language models. Семинар. Пример text2code на WikiSQL или другой | — |
06.03.2023 | Тема. Введение в тестирование. Моделирование и верификация программ. Модели конечных автоматов, pre- post- условий. Генерация тестов. Мутационное тестирование Семинар. Демо написание модульных тестов и анализ кода | — |
13.03.2023 | Тема. Автоматизация тестирования. Фаззинг. Тестирование свойств. Инварианты. Применения к различным задачам Семинар. Демо тестирование инвариантами | Лабораторная работа 3. Методы автоматического тестирования, инварианты |
20.03.2023 | Тема. Формальные методы верификации. Введение в блокчейн и смарт контракты. Применение метода проверки моделей (model checking) для верификации блокчейн систем. Семинар. Лабораторная работа. Верификация многосторонних соглашений | — |
27.03.2023 | Тема. Статистические методы верификации. Семинар. Лабораторная работа. Верификация многосторонних соглашений | Лабораторная работа 4. Верификация многосторонних соглашений |
03.04.2023 | Тема. Систематичекий обзор (SLR). Поиск и изучение литературы. Mapping Study. Link Review. Разбор примера SLR. Постановка и уточнение вопросов исследования. Семинар. Доклады выбранных тем исследования (по 2-3 мин) | Выбрать тему в рамках курса и примерные вопросы исследования. Выступить с докладом на 2-3 мин, рассказ про выбранную тему |
10.04.2023 | Тема. Проблемы воспроизводимости в научных исследованиях. Оформление и требования к эксперименту. Анализ результатов. Воспроизведение эксперимента. Система mldev, DVC и др Семинар. Доклады результатов обзора | Создать папку на гугл диске в ней и прислать по почте: - отчет: вопросы исследования. критерии поиска. - лонг лист - шорт лист обзора (10+ наименований) Сделать доклад на 5 мин с результатами обзора, анализом и предлагаемой к повторению статьей |
17.04.2023 | Семинар. Подробный разбор статей по темам и подготовка эксперимента. Разобрать 1-2 статьи вместе с кодом | Лабораторная работа 2. Синтез программ - NPS для Karel |
24.04.2023 | Тема. Уточняется. Q&A сессия. Консультация и доработки по проектам. Отработка выступлений. Результаты ревью | Краткий доклад (5 мин.) с предварительными результатами эксперимента повторения |
01.05.2023 | — | — |
08.05.2023 | — | — |
15.05.2023 | Итоговые представления докладов исследовательских проектов | Выступление на семинаре. 10+5 мин |
22.05.2023 | Дифференцированный зачет | — |
Система оценивания
Итоговые баллы = Лабораторные работы (50%) + исследовательский проект (50%).
Лабораторные по курсу:
- Лабораторная работа по DSL - создание языка для Karel (до 20 февраля)
- Лабораторная работа по синтезу программ - NPS для Karel (до 17 апреля)
- Лабораторная работа по metamorphic testing (до 13 марта)
- Лабораторная работа по верификации блокчейн (до 27 марта)
Каждая лабораторная работа дает 10 баллов при сдаче вовремя. 30 баллов - это 50% оценки. Максимум 40 баллов - это 67%. Пропуск срока по лабораторной более недели - х0.5.
При пропусках занятий более 2-х раз или недостаточном количестве баллов (в сумме менее 40%) к концу апреля, или невыполнении исследовательского проекта для получения оценки нужно пройти устный опрос по темам курса (+20%) на зачете.
Требования к подготовке систематического обзора
Систематический обзор литературы в определенной области - это метод исследования предметной области с целью получения ответов на интересующие вопросы. Систематический обзор, при должном исполнении, может быть отнесен к методам исследований, которые допускают проверку и повторение результатов.
Порядок выполнения систематического обзора приведен в таблице ниже. Результаты систематического обзора оформляются в виде набора документов
- полный список источников (long list)
- список отобранных источников (short list)
- отчет с результатами
№ | Что делать | В чем результат | Где фиксируется результат |
---|---|---|---|
1. | Сформулиовать цели проведения обзора | Формулировка цели, перечень вопросов (Research Questions, напр. RQ1, RQ2..) | Отдельный раздел в отчете с результатами |
2. | Описать протокол поиска источников | Приведен перечень баз данных, библиографический и реферативных баз, сформулированы критерии поиска в них (поисковые запросы) | Отдельный раздел в отчете с результатами |
3. | Сформулировать критерии выбора источников | Требования, предъявляемые к источникам и их содержанию для включения в обзор (полезна ли информация для ответа на вопросы, качественная ли она и т.д.) | Отдельный раздел в отчете с результатами |
4. | Выполнить поиск источников согласно протоколу | Полный список найденных источников | Таблица с полным списком в отдельном документе |
5. | Отобрать источники из полного списка, при необходимости вернуться к п.4 | Список отобранных источников | Таблица с отобранными источниками в отдельном документе |
6. | По каждому вопросу исследования собрать информацию из отобранных источников | Ответ на вопрос с отсылками к источникам | Для каждого вопроса - отдельный подраздел |
7. | Подготовить заключение: удалось ли ответить на вопросы, сделать выводы | Выводы о достижении цели обзора, рекомедации по использованию результатов обзора | Отдельный раздел отчета с результатами |
Литература:
- Kitchenham, B.A. and S. Charters (2007) Guidelines for performing systematic literature reviews in software engineering, Technical Report EBSE-2007-01, School of Computer Science and Mathematics, Keele University.
- См. также слайды.
Исследовательский проект
В качестве проекта предлагается повторить опубликованных ранее результатов другими исследователями - важная процедура в научном исследовании, направленная на выявления неточностей, расхождений, неполноты в опубликованных результатах исследований и методах и достижения.
По согласованию с преподавателем можно провести аналогичное исследование по теме дипломной работы.
Порядок повторения результатов по теме приведен в таблице ниже. Результаты фиксируются в следующих документах
- отчет о повторении результатов
- исходный код и данные
Требования к статье для повторения
- должен быть доступен исходный код для основного результата статьи
- доступны данные, использованные в статье
- результат отражает state-of-the-art
# | Что делать | В чем результат | Где фиксируется результат |
---|---|---|---|
1. | Найти и согласовать статью, актуальную для темы | Выбрана статья для повторения результатов. | В электронной почте, в первом разделе отчета |
2. | Получить и сохранить код и данные, проверить возможность использования | Готовый к исполнению код, данные для проведения эксперимента | Исходный код и данные (выложены для доступа) |
3. | Повторить эксперимент по описаннию в статье | Выявлены отклонения и неточности в описании эксперимента, упущения и пропуски | Раздел в отчете о повторении результатов |
4. | Сравнить результаты с полученными в статье | Получены собственные количественные результаты эксперимента, указаны расхождения с результатами в статье | Раздел в отчете о повторении результатов |
5. | Сделать выводы о повторяемости результатов статьи | Выводы о повторяемости результатов статьи и возможности их использования | Раздел в отчете о повторении результатов |
Литература
- Geir Kjetil Sandve, Anton Nekrutenko, James Taylor, Eivind Hovig. Ten Simple Rules for Reproducible Computational Research
- См. также сайт reproducibleresearch.net