Отзыв научного руководителя на выпускную квалификационную работу студента 4 курса кафедры системного программирования СПбГУ Дениса Александровича Когутича, обучающегося по направлению 010500 (02.03.03) (математическое обеспечение и администрирование информационных систем) Тема выпускной квалификационной работы: “Реализация механизма поддержки ограничений в проекте WMP” Механизм проверки ограничений является одним из важных компонентов платформ для создания предметно-ориентированных визуальных языков. Ограничения для визуального языка играют роль, схожую с системами типов текстовых языков – по возможности не давать совершать семантических ошибок при создании программы. Проект Web Modeling Project (WMP) – средство для создания визуальных языков, разрабатываемое на кафедре системного программирования СПбГУ, базирующееся на опыте проекта QReal, там, как и во всех подобных инструментах, есть потребность задавать ограничения на модели. Поэтому перед Денисом Александровичем была поставлена задача выбрать и реализовать наиболее подходящий способ задания ограничений в WMP. Денис Александрович в ходе работы выполнил обзор существующих работ по заданию ограничений (в том числе и предыдущие работы в проекте QReal) и выбрал подход, отличный от предыдущих результатов – реализовать язык OCL, являющийся стандартом де-факто для задания ограничений на диаграммы. В отличие от подхода, реализованного в QReal, OCL – это текстовый язык, с достаточно сложным синтаксисом и семантикой. Существуют открытые реализации OCL, но в силу особенностей проекта WMP Денисом Александровичем было принято решение реализовать синтаксический анализатор и интерпретатор OCL на языке TypeScript/JavaScript, так, чтобы вся работа с ограничениями могла быть выполнена в браузерном клиенте, даже без связи с сервером. В ходе работы Денису Александровичу пришлось изучить спецификацию OCL, одну из имеющихся открытых реализаций (Eclipse OCL Project), познакомиться с современными средствами создания синтаксических анализаторов и выполнить большую техническую работу по описанию грамматики OCL, написанию интерпретатора и большого количества тестов. Работа осложнялась тем, что грамматика OCL из спецификации неоднозначна и использует сложные правила для разрешения неоднозначностей. Следует отметить также, что для Дениса Александровича эта работа стала первым написанным им крупным браузерным приложением, и с особенностями языков и стека технологий приходилось разбираться прямо в процессе работы. Тем не менее, работа была успешно выполнена и закончена интеграцией полученного набора инструментов в систему WMP, где теперь можно описывать ограничения на OCL и выполнять их проверку на создаваемых в WMP диаграммах. Проверка ВКР на предмет наличия/отсутствия неправомерных заимствований показала, что работа неправомерных заимствований не содержит. В ходе работы Денис Александрович активно взаимодействовал с научным руководителем, работа шла весь учебный год практически без перерывов. При этом все основные технические решения Денис Александрович принимал самостоятельно и всегда мог их аргументировать. Все поставленные задачи были выполнены, а реализованный в ходе работы синтаксический анализатор и интерпретатор OCL представляют, по моему мнению, самостоятельную ценность для сообщества, занимающегося разработкой браузерных средств для работы с визуальными языками. Считаю, что работа, безусловно, заслуживает оценки “отлично”. Литвинов Юрий Викторович, Доцент кафедры системного программирования СПбГУ, Ведущий программист ООО “КиберТех Лабс”