Дипломная работа 09.03.02 Информационные системы и технологии: "Разработка системы автоматизированного обнаружения и исправления ошибок в программном коде"
Актуальность темы в 2025 году
Процесс code review и исправления ошибок остается одним из самых затратных по времени и ресурсам в жизненном цикле разработки ПО. Несмотря на обилие статических анализаторов (SonarQube, ESLint), которые effectively находят potential issues, их исправление до сих пор ложится на shoulders разработчиков. Это создает cognitive load, замедляет разработку и является source человеческих ошибок.
Современные достижения в области обработки естественного языка (NLP) и машинного обучения, particularly Large Language Models (LLM), открывают возможность автоматического не только обнаружения, но и исправления определенных категорий ошибок. Создание such системы может significantly сократить time-to-fix, разгрузить разработчиков от рутинных правок и повысить overall quality кодовой базы. Актуальность темы обусловлена постоянным стремлением IT-индустрии к automation и ускорению development cycles.
Пример введения
Введение дипломной работы должно отражать эволюцию инструментов контроля качества кода. Статические анализаторы кода стали неотъемлемой частью современной разработки, однако они лишь указывают на проблемы, оставляя их решение человеку. Следующим логическим шагом является создание систем, способных autonomously исправлять найденные уязвимости и code smells.
Целью данной работы является исследование возможностей применения методов машинного обучения для автоматического исправления ошибок в программном коде и разработка прототипа соответствующей системы.
Для достижения цели необходимо решить ряд задач. Объектом исследования является процесс статического анализа и рефакторинга кода. Предметом исследования — алгоритмы машинного обучения и NLP для генерации и трансформации кода.
Цель и задачи исследования
Цель: Разработать прототип системы, которая интегрируется с статическим анализатором и автоматически предлагает патчи для исправления простых категорий ошибок.
Задачи:
- Проанализировать распространенные категории ошибок, обнаруживаемых статическими анализаторами (например, недостижимый код, unused variables, potential NPE) и выбрать те, что поддаются автоматическому исправлению.
- Исследовать современные подходы к автоматическому исправлению кода: на основе шаблонов (template-based) и с использованием языковых моделей (LLM-based).
- Реализовать модуль на основе шаблонов для исправления выбранных категорий ошибок (например, удаление неиспользуемых импортов в Python).
- Интегрировать модуль в популярный статический анализатор (например, SonarQube через его API) или создать standalone-инструмент.
Объект и предмет исследования
Объект исследования: Исходный код на языках программирования высокого уровня и отчеты статических анализаторов.
Предмет исследования: Методы и алгоритмы автоматической генерации патчей для исправления ошибок на основе результатов статического анализа.
Методы исследования
- Анализ предметной области: изучение видов и шаблонов багов, обнаруживаемых линтерами.
- Метод шаблонов (pattern-based): создание правил вида "если обнаружена ошибка X, то примени преобразование Y".
- Обработка естественного языка: использование моделей, обученных на коде (например, на основе CodeBERT), для более сложных исправлений.
- Интеграционное тестирование: проверка работы системы на открытых репозиториях с кодом.
Примерное содержание работы (План дипломной работы)
Глава 1. Обзор инструментов статического анализа и классификация исправимых ошибок
В первой главе проводится фундаментальное исследование. Мы изучим, как работают линтеры и статические анализаторы, какие типы ошибок они находят. Проведем детальную классификацию этих ошибок по критерию "возможность автоматического исправления". Это позволит определить scope для нашего прототипа.
Глава 2. Выбор подхода и проектирование архитектуры системы авто-исправления
Вторая глава посвящена проектированию. Мы сравним два подхода: простое правило-based исправление и сложное ML-based. Для нашего прототипа выберем первый как более predictable и реализуемый. Спроектируем архитектуру системы: как она будет получать отчет от анализатора, как будет сопоставлять ошибки с шаблонами исправлений и как будет генерировать патч в формате diff.
Глава 3. Реализация и тестирование прототипа системы
В третьей главе реализуем систему. Возьмем конкретный линтер (например, Pylint для Python) и реализуем плагин или внешнюю утилиту, которая читает его вывод. Напишем набор шаблонов для исправления 5-10 самых распространенных замечаний. Протестируем систему на наборе open-source проектов, оценим точность и безопасность предлагаемых исправлений.
Ожидаемые результаты и практическая польза
В результате работы будет создан прототип, который:
- Автоматически исправляет определенный класс ошибок (например, style issues, простые code smells).
- Интегрируется с существующим toolchain разработчика.
- Генерирует патчи в стандартном формате, которые разработчик может принять или отклонить.
Практическая польза работы заключается в демонстрации potential next step в эволюции инструментов разработки, который может быть extended и integrated в современные IDE и CI/CD системы для создания truly self-healing codebase.
Что написать в заключении?
В заключении дипломной работы подводятся итоги. В рамках проекта было исследовано применение методов автоматического исправления ошибок в программном коде. Цель работы достигнута — разработан прототип системы, интегрируемой со статическим анализатором Pylint.
Практическая значимость подтверждена успешным тестированием системы на открытых репозиториях. Система корректно исправляет ряд распространенных замечаний, таких как неиспользуемые импорты и переменные. Направлением для дальнейших исследований является использование более сложных языковых моделей (LLaMA, Codex) для исправления semantic ошибок и интеграция системы в виде bot для GitHub, автоматически создающего pull request с исправлениями.
Примерный список источников
- Макконнелл, С. Совершенный код. – М.: Русская редакция, 2022.
- Тихонов, А.И. Статический анализ программного обеспечения. – М.: ДМК Пресс, 2024.
- Allamanis, M. et al. A Survey of Machine Learning for Big Code and Naturalness // ACM Computing Surveys. – 2023.
- Документация по SonarQube, Pylint, ESLint.
- Научные публикации конференций ICSE, FSE по автоматическому исправлению багов (Automated Program Repair).
- Официальная документация библиотек для работы с AST (Abstract Syntax Tree).
Полезные материалы для самостоятельной работы
- Как поднять оригинальность дипломной работы
- Как подготовить презентацию для защиты дипломной работы
- Примеры наших работ
Нужна помощь с дипломной работой?
Мы уже помогли сотням студентов успешно защититься. Наши эксперты напишут для вас уникальную работу по этой теме с глубоким анализом и практическими рекомендациями.
→ Напишите нам в Telegram для бесплатной консультации: @Diplomit
→ Или оформите заказ прямо на сайте: Заказать дипломную работу
Михаил, студент ИТМО: "Тема была на стыке ML и разработки. Ребята помогли не только с теоретической частью, но и написали отличный прототип на Python, который реально работает с AST и предлагает правки. На защите был настоящий ажиотаж."