РЕЦЕНЗИЯ на выпускную квалификационную работу обучающегося СПбГУ Вьюгинова Николая Юрьевича по теме «Динамическое выделение типов в Ruby» Работа Н.Ю.Вьюгинова посвящена проблеме поддержки процесса разработки ПО на языке с динамической типизацией при использовании интегрированных сред разработки. В качестве целевого языка выступает язык Ruby. Динамически-типизированные языки обладают впечатляющей выразительной силой по сравнению со статически-типизированными, однако оборотной стороной этой выразительности является трудность понимания и использования больших сторонних библиотек, так как, во-первых, исходный код лишен типовых аннотаций, которые зачастую содержат существенную для разработчика информацию, и, во-вторых, семантика динамических языков как правило является гораздо более сложной. Одним из способов преодоления этой трудности является статический вывод типовых аннотаций, однако, как правило, при статическом выводе аннотации получаются неточными. В работе Н.Ю.Вьюгинова для достижения большей точности типовых контрактов применяется динамический анализ кода в процессе его исполнения. В качестве теоретического результата работы можно отметить конечно-автоматный подход к представлению типовых контрактов. При этом все необходимые свойства формально определены и доказаны, включая сложностные оценки алгоритмов. Использованные известные алгоритмы соответствующим образом специализированы для учета особенностей конкретных решаемых задач. В практической части следует отметить большой объем выполненной инженерной работы как в области архитектуры представленного решения, так и собственно реализации. Разработанный инструмент имеет сложную архитектуру, включающую плагин для IDE RubyMinе, локальный сервер для сбора данных от этого плагина и облачное хранилище контрактов. Все элементы реализации протестированы и апробированы как с точки зрения корректности, так и с точки зрения производительности. К недостаткам работы следует отнести местами неформальный, разговорный стиль изложения, наличие определенного количества «жаргонизмов», опечаток, несогласований. Работа заслуживает оценки «отлично». «23» мая 2017 г. Булычев Д.Ю.