Как проверить, что сложная распределенная система ведет себя так, как задумано? Чем модель самолета в аэродинамической трубе похожа на формальную модель информационного процесса? В интервью профессор департамента программной инженерии ФКН Ирина Ломазова раскрывает принципы работы лаборатории ПОИС, где математические методы применяются для анализа поведенческих свойств систем, а цифровые следы превращаются в инструмент улучшения бизнес-процессов.
— Когда вы впервые услышали о программной инженерии? Как менялось восприятие этой области знания?
— Когда я оканчивала университет, профессия программиста не была редкостью, но чаще всего программистами были математики и физики. Потом программистов стали учить целенаправленно, появились новые специальности, такие как «программное обеспечение вычислительной техники». Программирование стало программной инженерией, когда программы и программные системы стали сложными и получили широкое распространение в самых разных сферах деятельности. Появились специальные технологии для разработки программного обеспечения. Программирование стало инженерной специальностью.
Вышка является пионером в области подготовки программных инженеров. Когда я пришла в Вышку в 2010 году, здесь уже несколько лет существовало отделение программной инженерии. Руководил этим отделением Сергей Авдошин — активный проповедник новых идей и один из разработчиков стандарта обучения по направлению «Программная инженерия».
— Какова роль программной инженерии в IT-индустрии? В чем ее актуальность?
— Я бы сравнила роль программной инженерии в IT-индустрии с ролью производства самолетов в индустрии авиаперевозок. При этом, как и в случае с самолетами, ПО нужно не только производить, но и сопровождать, модернизировать и проч.
Особенностью программной инженерии является то, что область IT постоянно меняется, новые решения достаточно быстро внедряются и завоевывают рынок. Практически в любой инженерной области все время происходят изменения, но в IT они происходят особенно быстро.
— Что самое сложное в программной инженерии?
— Программная инженерия очень разная, теперь уже трудно найти область, где она не применяется. Поэтому и проблемы, и сложности самые разные. Я бы выделила достаточно общую проблему корректности и надежности работы программного обеспечения. Ошибки и сбои в работе ПО вызывают раздражение пользователей, но они могут приводить и к более тяжелым и даже непоправимым последствиям. К сожалению, проблема эта не может быть решена полностью и окончательно. Она относится к классу так называемых алгоритмически неразрешимых проблем. Но повышать качество программ можно и нужно. При этом исследования в области программной инженерии продолжаются и, несомненно, будут актуальны и в будущем.
— Что входит в современное образование программного инженера? И как оно эволюционирует?
— Учебный план по программной инженерии включает в себя два больших раздела — базовые (фундаментальные) и специальные дисциплины. Как и большинство инженерных специальностей, программная инженерия опирается на математику. Поэтому раздел базовых дисциплин — это в основном устоявшиеся математические курсы. В отличие от базового раздела, специальные дисциплины достаточно часто меняются. Это связано как с появлением новых идей, решений и даже парадигм в области разработки ПО, так и с меняющимися запросами бизнеса. Появление новых аппаратных решений также приводит к изменениям в решениях программной инженерии. Так что, как говорится, нужно постоянно бежать, чтобы оставаться на месте.
— Чем занимается ваша лаборатория процессно-ориентированных информационных систем (ПОИС)?
— В свое время я окончила математический факультет Новосибирского университета, никогда не была программистом, но мои исследования всегда были связаны с применением математических методов в программировании. И преподавала я главным образом программистам.
В нашей лаборатории мы занимаемся моделированием процессов в информационных системах и анализом их поведенческих свойств. Анализ свойств — это проверка того, что система ведет себя так, как нам нужно. А модели нужны, чтобы упростить эту проверку, если абстрагироваться от несущественных деталей и особенностей. Возвращаясь к условному примеру с самолетом: в аэродинамической трубе испытывают модель, повторяющую форму самолета, абстрагируясь от его начинки. А мы, в частности, занимаемся майнингом процессов (process mining), то есть разработкой методов моделирования, анализа и улучшения процессов на основании информации, записываемой в истории их выполнения (так называемые цифровые следы).
— Что вы считаете своим главным профессиональным достижением и чего еще хотели бы достичь?
— Я горжусь своими учениками и хотела бы продолжать работать с ними. В области анализа поведения распределенных систем столько интересных задач!