Лучшие дипломные работы выпускников магистратуры «Разработка программного обеспечения»
Лучшие дипломные работы выпускников магистратуры «Разработка программного обеспечения»

Совсем недавно второкурсники «Разработки ПО» защитили свои магистерские диссертации, а 12 июля отгремел ITMO Family Day, где они получили дипломы и официально стали выпускниками 2025 года. Без долгих предисловий представляем вам три лучших ВКР этого года: реализация «оптики» в новом языке программирования от Huawei, повышение верификации процессоров и сервисы доступа к хранилищам рекомендательной системы.
  • Сергей Ковальцов
Дизайн и реализация оптики в языке программирования Cangjie

В прошлом году компания Huawei представила новый язык программирования — Cangjie. Он позиционируется как кроссплатформенный язык, в будущем способный составить конкуренцию Java. Интересно еще и то, что 30 июля 2025 года Huawei обещает открыть исходный код и даст сообществу возможность дорабатывать Cangjie. Ну, а пока язык еще достаточно сырой, и в качестве своей ВКР я решил реализовать в нем механизм «оптики» из функционального программирования для упрощения персистентной работы со структурами данных на уровне языка.

Cangjie совсем новый язык, поэтому ни одного готового библиотечного решения для «оптики» в нем пока нет, и я решил стать первопроходцем. Для того, чтобы реализовать «оптику» в языке программирования, нужно либо интегрировать в него специальный синтаксис, либо предоставить решение на уровне стандартной библиотеки. Я решил остановиться на втором варианте по двум причинам:
1. большое количество идей можно проверить уже на уровне библиотеки перед переходом на чисто языковое решение,
2. библиотечное решение проще, чем новый синтаксис, продвинуть к внедрению в язык. Также его всегда можно опубликовать, как third-party библиотеку.

По выразительности мое решение сопоставимо с существующими библиотеками в Kotlin (часть Arrow для работы с неизменяемыми структурами данных) и Scala (Monocle). К сожалению, моя реализация получилась достаточно сложной, так как в процессе я нашел множество программных дефектов в самых разных частях компилятора: кодогенерация, вывод типов, инлайнинг, ошибки в оптимизационных проходах. О большинстве из них я сообщил разработчикам (и часть ошибок уже исправили!), но все еще открыт вопрос качества инлайнинга, который я активно изучаю прямо сейчас. После исправления инлайнинга непосредственно в языке, я планирую упростить свое решение и либо опубликовать его в качестве библиотеки, либо добиться интеграции в язык Cangjie.
  • Илья Барсуков
Функциональное покрытие RISC-V ISA

Разработка процессора — долгая и ресурсоемкая процедура со множеством пересекающихся друг с другом фаз и областей. Существенная длительность разработки связана с оптимизацией производительности и энергопотребления, что может привести к логическим ошибкам.

Цель моей выпускной работы — повышение верификации процессоров архитектуры RISC-V за счет анализа покрытия его программного интерфейса — ISA (Instruction Set Architecture). Это позволит уменьшить вероятность обнаружения функциональных ошибок в уже выпущенных на рынок моделях.

До моей работы было известно о двух попытках улучшить анализ корректности процессора. Первое решение читает логи исполнения программ, полученных, например, с функционального симулятора Qemu. Далее происходит анализ покрытия, и в конце выдается отчет. Из-за такого подхода это решение не получается встроить в существующий пайплайн разработки и верификации процессоров, т.к. оно требует отдельного запуска и ни с каким существующим инструментом не взаимодействует.

Второе решение использует идею генерации точек покрытия на SystemVerilog и их дальнейшее использование в верификационном окружении. Я смог ознакомиться только с небольшим примером его работы, но даже там обнаружил ошибки генерации. Также в этом варианте не раскрывается, откуда получена машиночитаемая информация инструкций — в ней тоже возможны ошибки, влияющие на генерацию.

В отличие от существующих решений, моя работа прозрачно интегрируется в существующий пайплайн разработки и верификации. Также она привносит дополнительные возможности, отсутствующие в первом решении — например, сравнение выполнения кода с эталоном на основе трассы функционального симулятора.

Что именно я делал: я представлял каждую инструкцию набора ISA как набор точек покрытия из расширения языка SystemVerilog — набор различных целочисленных выражений. Так я рассматривал, сколько раз исполнилась каждая инструкция, какие значения регистров у нее были и т. д. Точки покрытия генерируются, используя машиночитаемое описание ISA, полученное из инфраструктуры LLVM. Далее точки интегрируются в верификационное окружение для дальнейшего анализа полноты покрытия и анализа полученных результатов.

Мне понравилось заниматься этой темой, потому что это увлекательная междисциплинарная задача, помогающая улучшить аппаратную разработку. К тому же сейчас я работаю в компании Syntacore, которая занимается микропроцессорными технологиями и инструментами на базе архитектуры RISC-V.
  • Георгий Семенов
Сервисы доступа к хранилищам рекомендательной системы

Моя дипломная работа посвящена реализации слоя доступа к данным в рекомендательных системах национальных социальных сетей. В отличие от прежних подходов, для современных рекомендательных систем реального времени требуется отказоустойчивое хранилище пользовательских эмбеддингов, доступ к которому происходит в рантайме — иными словами, все рекомендации пересчитываются на лету, пока пользователь скроллит ленту контента. В работе я исследую механизмы отказоустойчивости и оптимизации исполнения запросов к платформе обработки и хранения больших данных YTsaurus в контексте создания рекомендательных систем.

Мое решение позволило увеличить доступность слоя хранилищ рекомендательных систем до 99.99%, на порядок сократить количество используемых ресурсов под линейно масштабируемый компонент платформы и — наконец — стать основой для семейства рекомендательных систем реального времени. Мой вклад в YTsaurus Java SDK опубликован в версии 1.2.7.

Результаты работы я представлял на Конгрессе молодых ученых ИТМО в 2025 году, также она участвует в конкурсе «Научный Эверест» на лучшую ВКР среди выпускников университета.

В рамках этой работы я познакомился с реалиями высоконагруженных сервисов и столкнулся с проблемой отсутствия API, требовавшегося в YTsaurus Java SDK. Также я открыл для себя контур семейства рекомендательных систем и мир больших данных, что представляется очень интересным опытом.