От динамического хаоса к Process Mining
Сергей Шершаков, выпускник магистратуры по специальности «Системная и программная инженерия» 2012 года, преподаватель курса «Алгоритмы и структуры данных», сотрудник научно-учебной лаборатории процессно-ориентированных информационных систем, представитель кадрового резерва НИУ ВШЭ в категории «Новые исследователи». Сергей рассказывает о том, что такое Process Mining, как сохранять актуальность своих знаний, не работая в индустрии, почему выпускникам Вышки не надо «забывать все, чему их учили» и многом другом.
Путь в ВШЭ
К моменту поступления в магистратуру НИУ ВШЭ я уже два года как закончил специалитет в Московском техническом университете связи и информатики и уже четыре года работал в научной лаборатории при том же институте. В какой-то момент я задумался о способах развития своего научного потенциала и в итоге решил, что хороший вариант — получить второе образование. Я начал изучать программы и выбрал программную инженерию как более естественное продолжение моего основного образования, то есть того, что сейчас модно называть «мэйджор».
Первое очное знакомство с ВШЭ состоялось в здании на Кирпичной улице, где проходила однодневная школа по программной инженерии. Здесь же я познакомился с С. М. Авдошиным. На магистерскую программу по программной инженерии проходил первый набор непосредственно отделения программной инженерии (до этого — факультета бизнес-информатики).
Вышка со всеми вытекающими последствиями
В 2010 году началось мое обучение в магистратуре. Тогда я познакомился с проф. И.А. Ломазовой, которая читала нам курс «Formal Methods in Software Engineering». Впоследствии Ирина Александровна стала моим научным руководителем.
Очень впечатляло здание на Кирпичной, приспособленное именно для компьютерщиков: хорошие потоковые аудитории, качественно оборудованные компьютерные классы, рекреационные зоны. Уже тогда по всему корпусу был вайфай, во многих аудиториях стояли проекторы. Расходные материалы всегда были в наличии и в достаточном количестве. Одним словом, в материально-техническом плане все выглядело довольно симпатично.
Возможности, которые Вышка предоставляла для студентов, были тоже весьма привлекательны. В частности — поддержка академической мобильности, в том числе зарубежные конференции, школы, стажировки. Ключом к академической мобильности является научная работа; в 2012 году я подал первую самостоятельную научную работу на конференцию SYRCoSE, которая проходит каждый год в разных городах России, и она была принята. В тот год конференция была организована в Перми на базе Пермского кампуса НИУ ВШЭ. Тогда я только начинал знакомиться со сферой влияния ВШЭ вне Москвы.
К окончанию магистратуры у меня была готова еще одна статья, и ее приняли уже на международную конференцию в Канаде. Я подал заявку на грант в научный фонд, выиграл его и поехал в свою первую дальнюю академическую поездку, которая спонсировалась ВШЭ.
То, с чем я столкнулся в Вышке во время обучения в магистратуре образца 2010–2012 гг., было именно то, чего в моем понимании мне не хватало для высшего образования, — это не только знания, но и связи, перспективы.
Выбор научной области
Закончив специалитет, я некоторое время продолжал работать в научно-учебной части МТУСИ, где занимался разработкой ПО для программно-аппаратных комплексов в научно-исследовательской лаборатории синтезаторов прецизионных сигналов под руководством В. Н. Кочемасова. В 2012 году, после окончания магистратуры в ВШЭ, я принял решение перелистнуть страницу Института связи и покинул лабораторию. Пробовал себя во фрилансерских проектах, занимался поддержкой информационных систем. Примерно тогда я и понял, что академическое заведение — это тот вариант занятости, который мне подходит, а работа исследователем — возможно, наиболее творческий вариант из возможных.
В разное время я искал интересную для себя область и в других научных направлениях. В частности, интересовался динамическим хаосом в применении к задачам стеганографии. Это было небезынтересно, но динамическому хаосу я предпочел менее хаотическую, как мне казалось, программную инженерию.
В 2011 году в ВШЭ приезжал профессор Вил ван дер Аалст из Технического университета Эйндховена — крупный ученый в области процессно-ориентированных информационных систем и основатель нового исследовательского направления Process Mining. Уже тогда вырисовывались перспективы создания в ВШЭ научно-учебной лаборатории по этой тематике. К концу моего обучения в магистратуре принципиально решение о создании международной лаборатории было принято и, когда она была организована, ее руководитель — И. А. Ломазова — пригласила меня присоединиться к группе сотрудников в качестве исследователя.
Что такое Process Mining и почему это важно
Process Mining является основным направлением исследований, проводимых в лаборатории процессно-ориентированных информационных систем. Этот термин трудно перевести на русский дословно, обычно мы называем это «извлечение и анализ процессов». По сути, дисциплина Process Mining стоит на стыке между исследованием бизнес-процессов, их моделированием, Data Mining, машинным обучением и вовлекает в свою орбиту множество подходов для работы с «большими данными».
Фундаментальная идея, лежащая в основе Process Mining, заключается в том, что сопровождение большинства процессов — технологических, в бизнесе, социальной сфере, медицине и т.д. — организовано с помощью информационных систем, которые в результате своей работы ведут так называемые «журналы или логи событий», в которых фиксируется информация о том, как система функционирует в действительности: например, оплачен чек, выставлен счет или назначено обследование. Этих состояний накапливается очень много, и на их основе можно наблюдать реальное поведение системы. В итоге выявляются несоответствия между тем, как бизнес-процессы работают в действительности, и тем, как они были запланированы изначально.
На основе журналов событий с использованием методологической части Process Mining можно получать различные модели — как с использованием формальных математических инструментов, таких как сети Петри, системы переходов, так и более бизнес-ориентированных, т.е. различных языков описания бизнес-процессов, например, BPMN. Идеи Process Mining показали свою хорошую применимость на практике и большой теоретический и прикладной потенциал.
Первая и основная тема, которой я занимаюсь — «редукция систем переходов с сохранением точности моделей». В задаче исследуется способ представления процессов, записанных в виде логов с помощью систем переходов, и различные преобразования этих систем, влияющие на их качественные характеристики. Мы исследуем способы редукции моделей таким образом, чтобы они имели более простую структуру и меньший размер.
Вообще, если брать реальные логи, то оказывается, что они довольно быстро достигают гигантских размеров. Современные скорости создания информации позволяют условно «средней» системе создавать несколько гигабайтов служебной информации в секунду. Этого уже достаточно, чтобы модель, построенная напрямую по журналам событий такого размера, имела необозримо большой размер.
Есть разные подходы к сокращению размера моделей, но каждый из них меняет некоторые качественные характеристики модели, что может сделать ее непригодной для дальнейшего использования.
Вторая тема — это применение Process Mining в программной инженерии. Сейчас мы работаем над вопросами синтеза иерархических UML диаграмм последовательности и гибридных диаграмм.
Преподавание
Надо сказать, что изначально у меня не было планов становиться преподавателем, исследовательская деятельность привлекала меня больше. Но в начале 2013 года С. М. Авдошин предложил мне прочитать лекции по курсу «Алгоритмы и структуры данных» в весеннем семестре и вести семинары по программированию у студентов отделения «Прикладной математики и информатики». У меня уже был определенный преподавательский опыт, и я согласился. Оказалось, что если относиться к делу с полной отдачей, то полставки преподавателя дают достаточно большую нагрузку и забирают уйму времени. После одного семестра уже подразумевалось, что я продолжаю этим заниматься и дальше, к лекциям и семинарам в качестве «бонуса» добавились курсовые и выпускные квалификационные работы.
В ВШЭ сейчас можно наблюдать активный тренд, направленный на проектную деятельность. Применительно к ОП «Программная инженерия», проектная деятельность играет большую роль, потому что мы учим студентов практически понятным вещам, и сформировать более или менее полную картину производства программного продукта можно только с вовлечением всего цикла разработки самостоятельных продуктов или компонентов других систем. При таком подходе студенту не просто дается кусок задачи – придумать и реализовать алгоритм, — но и создаются условия для вовлечения в процесс разработки лучших практик, индустриальных стандартов, например SWEBOK, использования инструментов для сопровождения разработки. Таким образом, формируется умение видеть весь процесс с точки зрения проектного менеджера.
Как правило, приходя на начальные позиции в компании, выпускники становятся реципиентами тех технологий, которые уже используются в рабочем процессе компании. Поэтому я считаю правильным сразу учить студентов использовать технологии, с которыми они столкнутся на практике: инструменты управления программными проектами, версионирования программного кода, bug-трекеры, и т.д. Как следствие, нашим выпускникам на работе не часто приходится слышать фразу “забудьте все, чему вас учили в институте”.
Как сохранять актуальность своих знаний, не работая в индустрии
Во-первых, я сам остаюсь действующим программистом, пишу программный код много и не без удовольствия. Поскольку я работаю не только с автономными stand-alone проектами, но и часто разрабатываю модули для существующих систем – например, академической системы ProM для Process Mining, которая состоит из большого числа плагинов, написанных разными специалистами, – то это ведет к необходимости работать с подходами, используемыми при разработке другими специалистами. Работа с чужим кодом и желательно хорошим – это отличная школа, которая позволяет перенимать лучшие практики и избегать в дальнейшем использования неудачных решений, так называемых анти-паттернов.
«Ощущение программы», которое у меня было до учебы в магистратуре и работы в лаборатории, сильно отличается от того, что есть сейчас. Появилось понимание природы, лежащей в основе информационных технологий, в значительной степени благодаря глубокому погружению в вопросы формальных методов, которые составляют базовую «математику» для программных инженеров. Это и есть проявление «системного подхода», который формирует профессиональную личность годами.
Большую часть своего свободного времени я трачу на разработку собственных программных продуктов, связанных с тематикой моей исследовательской работы. Я тщательно «полирую» свои разработки и стараюсь приучать к этому студентов: моделирование, тщательная проработка API, разделение интерфейсов и реализации, разработка unit- и других видов тестов и т. д. Поддержка жизненного цикла продукта сопровождается системой управления проектами с обязательным документированием и контролем версий. Это позволяет в любой момент подключить к проекту нового разработчика, который получит в руки настроенные инструменты, что позволит максимально быстро включиться в отлаженный бизнес-процесс.
Второй момент — курсовые, ВКР и работа со стажерами-исследователями. Для меня всегда интересно, как именно студент будет решать задачу, поэтому в той или иной степени детализированную схему решения я держу под своим контролем, понимая, что студенты часто работают над проектами ограниченный отрезок времени, затем этот проект переходит другим. Мне надо быть в курсе, как реализованы те или иные моменты, чтобы была возможность продолжения работы над ним. Студенты спешат использовать в работах все самое новое и интересное, поэтому и мне постоянно приходится сталкиваться с новыми технологиями.
И наконец, я все время учусь самостоятельно. Когда я выбираю тот или иной набор технологий для своей работы над кодом, я читаю современные обзоры, технические блоги, специалистов, которые вносят актуальные новинки в область, к примеру, Бертрана Мейера, Бьярне Страуструпа, который является создателем языка C++ и по-прежнему ведет активную теоретическую деятельность по его развитию.
«Миссионерская» деятельность в ВШЭ
С 2015 года я стал представлять Вышку в региональных центрах. Все началось с предложения поехать в Воронеж с докладом для школьников на Дне открытых дверей ВШЭ. Оказалось, что это очень интересно.
Со многими людьми, работающими в ВШЭ, есть шанс вообще никогда не встретиться, а тут мне довелось познакомиться с замечательными коллегами из совершенно разных департаментов, и мы провели вместе два с половиной дня, переезжая из школы в школу с рассказами об университете. Кроме того, впервые за много лет я оказался в настоящей, не высшей, школе. Я работаю с первокурсниками, а первокурсник отличается от школьника старших классов в основном тем, что у него решился вопрос, куда поступать. В этом смысле со школьниками я быстро нашел общий язык. Было интересно посмотреть на еще не определившихся ребят и понять, что они хотят услышать, что им интересно.
Спустя некоторое время, я съездил еще в Тамбов, затем в Ставрополь, а также на олимпиаду «Высшая проба» в Барнаул в качестве одного из организаторов. Такая «миссионерская» деятельность мне скорее понравилась. Вышка сильна своей репутацией и умением конвертировать ее во что-то практически полезное. Этот подход близок любому исследователю, поскольку перед каждым из нас стоит задача со временем, приобретая хорошую академическую репутацию, распространять свои исследования и конвертировать их в нечто иное.
Напоследок, о ближайших планах
В данный момент я хочу сосредоточиться на исследовательской деятельности и посвящать ей существенно больше времени, чем преподаванию. Моя важнейшая задача — защитить в грядущем году кандидатскую диссертацию и перелистнуть, тем самым, еще одну страницу моей профессиональной биографии.
Интервью подготовила Ольга Подольская
В 2017 году на факультете компьютерных наук, помимо англоязычной образовательной программы магистратуры «Системная и программная инженерия», открывается набор на новую магистерскую программу «Системное программирование». Документы, правила приема, сроки и другая информация по поступлению в магистратуру размещены на сайте приемной комиссии НИУ ВШЭ.