Отзыв научного руководителя на бакалаврскую выпускную работу обучающегося Юматова Владимира Константиновича «Инструментальная поддержка процесса разработки OpenJDK» Большинство многих информационных систем строится из большого количества разрозненных компонент, в виде библиотек, средств исполнения, модулей взаимодействующих собой через фиксированные протоколы. Это заставляет уделять большое внимание стабильности отдельных компонент, их поддержке без необоснованных изменений поведения. В системном программировании, в проектах с открытым и свободным исходным кодом, используется подход с поддержкой стабильной ветки проекта, в которую выборочно переносятся изменения из основной ветки разработки. Такую модель, например, использует проект OpenJDK, реализация языка и платформы исполнения Java. Во время переноса изменения, часто приходится взвешивать выгоду от переноса и объем изменений, необходимость их адаптации к стабильной ветке, потенциальные проблемы которые могут быть вызваны изменением: ошибки, изменения поведения или производительности. Перенос одного изменения может потребовать переноса нескольких других, и т.д. В данный момент, этот процесс в основном делается вручную. Перед Владимиром Константиновичем была поставлена задача исследования процесса переноса и создания набора инструментов для уменьшения количества ручного труда, сокращения количества повторяемых действий. В процессе работы Владимир Константинович собрал и систематизировал формальную информацию о процессе разработки OpenJDK, сделал обзор ближайших аналогов. Затем, в ходе дискуссий с научным руководителем и консультантом, обнаружил три основных пути, по которым обычно развивается перенос изменений, а именно: 1. Перенос последовательности изменений без модификаций («чистых» изменений). Сообщество разработки OpenJDK предпочитает этот подход для небольших изменений. Известны случаи, когда в общем смысле полезное, но не критичное, изменение не принимается в стабильную ветку из-за большого объёма. 2. Перенос изменений с небольшими модификациями. При небольшой и тривиальной адаптации, набор изменений может быть внесен в стабильную ветку. 3. Перенос существенно адаптированного изменения, возможно, полностью измененного для соответствия контексту стабильной ветки. Такой путь возможен для критических изменений. Далее Владимир Константинович создал набор инструментов соответствующих вариантов подходов к переносу. К сожалению, данные инструменты лишь были протестированы Владимиром на небольшом наборе изменений, хотя предполагалось активное взаимодействие с разработчиками OpenJDK. Результат выглядит правдоподобным, но качество остаётся под вопросом. Подобный результат, к сожалению, не удивителен, поскольку за время работы общение велось очень нерегулярно. Хотя, следует отметить, с учётом проблем взаимодействия, результат превзошел ожидания и, как и планировалось, будет предложен автором и консультантом для внедрения в процесс разработки OpenJDK в компании ООО «Азул Системс», где, возможно, станет полезен. Считаю, что Владимир Константинович достоин присвоения квалификации бакалавра по направлению «Программная инженерия». С учётом сказанного, рекомендую комиссии оценить работу «удовлетворительно». Научный руководитель: к.ф.-м.н., доцент кафедры системного программирования СПбГУ Луцив Дмитрий Вадимович 14 мая 2023 г.