Предложенный этим вузом учебный курс по программной инженерии лег в основу нового Федерального образовательного стандарта,на который намерены перейти еще пятьдесят российских высших учебных заведений.
Российская система высшего образования всегда гордилась уровнем фундаментальной математической подготовки своих выпускников и сильной программистской школой. Действительно, команды программистов ведущих российских университетов из года в год занимают призовые места на престижных международных соревнованиях. Однако с тем же постоянством представители индустрии выражают свое недовольство по поводу недостаточной подготовленности выпускников ИТ-специальностей, в частности, будущих разработчиков ПО, к реальной работе. В чем же причина несоответствия высоких достижений и практических возможностей студентов, изучающих в наших университетах программирование? Большинство существующих программ не идут дальше обучения языкам программирования и инструментальным средствам разработки. Индустрии же нужны не столько гениальные программисты, сколько специалисты, понимающие весь жизненный цикл создания и сопровождения качественного программного продукта и умеющие реализовать различные этапы программного проекта, работая в коллективе. Иными словами, нужны специалисты по программной инженерии.
По данным компании Tekama (предоставляет учебные и консалтинговые услуги для индустрии разработки программного обеспечения, является официальным представителем Университета Карнеги-Меллон и одного из его подразделений— Software Engineering Institute в России и СНГ), в Киеве, Минске, Санкт-Петербурге и Москве специалистов по программной инженерии насчитывается не более 40 человек. Нехватку таких кадров ощущают не только в России— даже в известных зарубежных университетах обучение часто сводится к изучению приемов кодирования, и оставляет за бортом другие важные этапы жизненного цикла ПО. Большинство преподавателей не имеют представления о реальных проектах разработки программных продуктов и при обучении акцентируют внимание на задачах системного программирования, а не на проблемах разработки приложений для реальных заказчиков, умениях студентов понимать и формулировать требования, преобразуя их в системную архитектуру, реализуемую при коллективной работе.
Для академических учебных курсов по программной инженерии существуют признанные международные стандарты, такие как Руководство к своду знаний по программной инженерии SWEBOK и Учебный план для преподавания программной инженерии в вузах CC:SE. В ведущих российских университетах появляются курсы по программной инженерии в рамках общих программ по информационным технологиям, ведется работа по адаптации международных стандартов к условиям российского образования. Однако, пожалуй, первую попытку предложить по-настоящему комплексную программу в этой области предпринял факультет бизнес-информатики ГУ-ВШЭ. Объективно оценить ее успешность еще предстоит— созданное на факультете отделение программной инженерии только в этом году выпустит первых магистров. Но первый опыт, безусловно, заслуживает пристального внимания, тем более что в российской системе высшего образования уже принято решение на его основе выстраивать новое образовательное направление «Программная инженерия».
Первые шаги
На отделении программной инженерии в ГУ-ВШЭ в 2007-2008 учебном году был осуществлен только второй набор студентов, а сам факультет бизнес-информатики отметил лишь свой шестой день рождения. Как рассказывает руководитель отделения программной инженерии, профессор Сергей Авдошин, первоначально возникла идея организации на факультете новой магистерской программы «Управление разработкой ПО», однако вскоре стало понятно, что это направление не вписывается в спектр специализаций магистратуры факультета, потому было принято решение об открытии отделения программной инженерии, и осенью 2006 года первые студенты бакалавриата приступили к занятиям. На магистратуру нового отделения были приняты студенты других вузов, в том числе МГУ, Физтеха, Нижегородского и Тверского госуниверситетов и др.
Сегодня образовательное направление 230400: «Программная инженерия» включено в сокращенный в результате реформы образования Государственный реестр российского высшего образования и должно стать основой для учебных программ 50 отечественных вузов, которые раньше обучали студентов по специальности «Программное обеспечение вычислительной техники и автоматизированных систем». Новый образовательный стандарт по направлению «Программная инженерия» разработан на отделении программной инженерии ГУ-ВШЭ совместно с кафедрой «Программное обеспечение ЭВМ и информационные технологии» МГТУ им. Баумана. В работе над стандартом принимали участие представители ряда технических университетов Москвы, Санкт-Петербурга и Рязани, а в качестве экспертов выступили специалисты из аналитического центра REAL-IT, департамента информационных технологий Промсвязьбанка, ассоциации АП КИТ, Института системного программирования РАН, компаний IBS, Microsoft и PMSoft.
Подготовка студентов бакалавриата отделения программной инженерии ориентирована на принятые в 2007 году профессиональные стандарты в области ИТ— предполагается, что, пройдя четырехлетний курс обучения, выпускники овладеют профессией программиста и профессией системного архитектора (на нижнем квалификационном уровне). Если двухуровневая система высшего образования в России заработает и выпускники бакалавриата окажутся востребованными на рынке труда, то бывшие студенты отделения программной инженерии смогут эффективно решать задачи командной разработки: выполнять кодирование программных средств по выданным заданиям, работать тестировщиками, дизайнерами, менеджерами по качеству ПО, одновременно хорошо ориентируясь в вопросах экономики и управления процессами разработки. Выпускники магистратуры смогут претендовать на руководящие роли в коллективах по разработке ПО.
Магистратура отделения программной инженерии до недавнего времени имела только одну кафедру «Управление разработкой ПО», которая готовит менеджеров команд, владеющих как техническими, так и экономико-управленческими аспектами руководства процессами создания и сопровождения программных продуктов. С открытием новой кафедры «Архитектура программных систем» планируется начать обучение магистров-архитекторов программных систем, обладающих квалификацией в соответствии с профессиональным стандартом системного архитектора. Кроме того, на отделении разработана магистерская программа по безопасности ПО. По словам Авдошина, в перспективе спектр специализаций в магистратуре может и дальше расширяться, пополняясь как базовыми областями программной инженерии, так и направлениями, связанными с различными прикладными проблемами.
Пять компетенций разработчика
Содержание учебных дисциплин отделения программной инженерии определяется основными компетенциями специалиста в сфере программной инженерии. Прежде всего, это компетенции в предметной области разрабатываемого продукта, которые требуют изучения принципов разработки и анализа требований к ПО. Во-вторых, компетенции в области управления проектом создания программного продукта, что подразумевает овладение общими знаниями по проектному менеджменту и изучение специфики проектов разработки. Третья область компетенции программной инженерии— программные процессы. Компании, которые занимаются промышленной разработкой программного обеспечения, обычно ведут несколько проектов одновременно, а руководители команд разработки должны уметь организовать проектный офис для планирования и управления разделяемыми между различными проектами ресурсами: персонал, бюджет, лицензии на ПО.
Следующая область компетенции специалиста по программной инженерии— персонал, участвующий в разработке. Студентам предлагается изучение предметов, связанных с задачей образования команд: психология управления командой, конфликтология, лидерство и т.п. вопросы формирования эффективной команды, создающей качественный программный продукт индустриальными методами.
Пятая— это так называемая область компетенции «четырех “П”»: продукт, проект, процессы, персонал. Здесь требуется знание лучших практик, методов и инструментальных средств разработки программного обеспечения.
Авдошин подчеркивает, что при обучении специальности «программное обеспечение вычислительной техники и автоматизированных систем», которую должно заменить новое образовательное направление программной инженерии, затрагивались только две из перечисленных областей компетенций— относящиеся к разрабатываемому продукту и инструментарию автоматизации процесса разработки. Управление проектами и процессами обычно рассматривалось в минимальном объеме, а вне программы оставались вопросы командной работы— акцент делался исключительно на индивидуальной разработке программного обеспечения. Однако сегодня работа в команде является основополагающим компонентом современной программной инженерии, поэтому на факультете бизнес-информатики не только введены соответствующие гуманитарные дисциплины, но и с самого начала учат студентов при подготовке курсовых заданий работать в группе над коллективными проектами, а уж изучение вопросов командообразования, психологических проблем организации коммуникаций на уровне магистратуры— это обязательный этап в превращении участника команды разработки в эффективного менеджера.
Сочетание математических, компьютерных, экономических, управленческих и гуманитарных дисциплин при подготовке специалистов для управленческих позиций в современном ИТ-бизнесе— общий принцип построения учебных программ на факультете бизнес-информатики. На отделении программной инженерии ГУ-ВШЭ помимо основополагающих дисциплин (математического анализа, алгебры и геометрии) акцент делается на дисциплины, которые служат основой для теоретической информатики и процессов программирования: дискретную математику, математическую логику и теорию алгоритмов, теорию вероятностей и прикладную статистику, теорию принятия решений.
Что касается области компетенции, касающейся инструментальной поддержки процессов разработки, то здесь студентам преподаются как общие методологические принципы организации разработки, так и технологии: Rational Unified Process (RUP), методики «скорого» (agile) программирования, алгоритмы и структуры данных, различные парадигмы программирования (функциональное, логическое, объектно-ориентированное, обобщенное), язык ассемблера для понимания программно-аппаратной организации вычислительных машин, платформы .NET/С# и J2EE.
Наука и индустрия
При разработке программы и образовательного стандарта по программной инженерии в ГУ-ВШЭ учитывались требования упоминавшихся международных стандартов в этой области, а также многолетний опыт Университета Карнеги-Меллона, основными преимуществами курсов которого является методологическая составляющая и система контроля знаний, позволяющая даже слабым по своему начальному уровню студентам дать возможность завершить обучение и найти свое место в выбранной специальности. Курсы Университета Карнеги-Меллона хорошо проработаны с точки зрения обучения навыкам коллективной работы— в них дается большое количество рекомендаций и учебно-методических материалов на эту тему, включая специальное программное обеспечение, позволяющее смоделировать работу отдельного студента в команде. В этом году на отделении программной инженерии ГУ-ВШЭ с учетом методик Университета Карнеги-Меллона был разработан учебно-методический комплекс «Информатика и программирование», предназначенный для ликвидации различий в подготовке студентов первого курса в области программирования, обучения их методам алгоритмизации и программирования, а также разработке Windows-приложений с помощью современных инструментальных средств.
При постановке новой учебной программы нельзя оставить без внимания и традиции отечественной школы преподавания дисциплин, связанных с программной инженерией. И если сильной стороной курсов Университета Карнеги-Меллона помимо методологической проработки является большой экономический и менеджерский компонент, то преимуществом российского образования всегда была мощная научная направленность, которую стремятся сохранить в ГУ-ВШЭ. Здесь придают большое значение исследовательской деятельности студентов и преподавателей, считая, что университет не может состояться без научного развития. Этому принципу следуют и на факультете бизнес-информатики, где создается научный институт бизнес-информатики. Студентов с начальных курсов привлекают к участию в научных семинарах и проектах— по мнению Авдошина, только те, кто начинает заниматься наукой не позднее второго курса, успевают в полной мере за время обучения реализовать свои научные амбиции, защитить диссертацию и совместить все это с успешной работой в бизнесе. И продолжать обучение в магистратуре имеет смысл в первую очередь тем, кто почувствовал вкус к научной деятельности еще в бакалавриате. На отделении программной инженерии скоро будет открыта аспирантура, среди специализаций которой есть криптография и фабрики приложений. Кроме того, на отделении ведутся исследовательские работы в таких областях, как социальные сети, информационные порталы, семантический Web.
К наиболее интересным научным проектам отделения относится DEM (Dynamic Enterprise Management), в рамках которого студентами разрабатываются инновационные программные решения стратегического управления компаниями с использованием системы сбалансированных показателей и принципов системной динамики. Как поясняет Авдошин, если отдельно взятая система сбалансированных показателей представляет собой статический срез информации о состоянии бизнеса, то в новом решении реализуется извлечение данных из различных корпоративных систем с последующим помещением их в динамически обновляемые хранилища. На основе данных из этих хранилищ создаются модели, позволяющие топ-менеджерам анализировать различные ситуации развития своего бизнеса.
Проект DEM реализуется совместно с компанией EPAM— тесные связи с ИТ-индустрией давно входят в число основных принципов обучения на факультете бизнес-информатики. Здесь фактически реализована известная модель Физтеха, но в применении к ИТ-бизнесу. Если одной из сильных сторон обучения на Физтехе считается обязательное участие студентов-старшекурсников на регулярной основе в проектах профильных научных институтов, то на факультете бизнес-информатики ГУ-ВШЭ все студенты магистратуры большую часть учебного времени проводят на практике в компаниях— партнерах факультета, принимая участие в реальных ИТ-проектах. Именно эта работа является основой для их курсовых, дипломных работ и дает выпускникам шансы для трудоустройства.
Аудиторные занятия магистров отделения программной инженерии проходят в вечерние часы и в субботу, а остальное время посвящено практической работе в таких компаниях, как DeutscheBank, EPAM, IDS Sheer, Luxoft, Microsoft. Партнерские отношения отделение развивает с компаниями Accenture, Tekama, PMSoft. Представители ИТ-индустрии не только берут на практику магистров отделения, но участвуют в образовательном и научном процессе. Например, на материалах презентаций, организованных представителями ИТ-индустрии, построена программа «Введение в программную инженерию» для студентов-первокурсников, а занятия по Web-программированию, проведенные специалистами компаний Google и Yandex, стали основой практики для студентов после первого курса. Компания Tekama помогает в составлении учебных программ в соответствии с методическими рекомендациями Университета Карнеги-Меллона, а специалисты PMSoft обучают старшекурсников управлению проектами. Сотрудничество с компанией EPAM выделяется в этом ряду, поскольку связано с научным проектом, начатым со студентами-первокурсниками.
Проекты, подобные DEM, создают задел и для собственной предпринимательской деятельности будущих выпускников— разрабатываемые в рамках проекта программные решения не являются коробочными, а будут связаны с консалтингом по формированию оптимальных программно-аппаратных конфигураций, их развертыванию и построению моделей бизнеса на их основе. Таким образом в создаваемом при факультете бизнес-инкубаторе студенты отделения программной инженерии смогут практически реализовать свои научные замыслы и предпринимательские идеи.
В какой бы форме ни проявлялось сотрудничество бизнеса с отделением, оно происходит в интересах обеих сторон. В условиях дефицита кадров и отсутствия надлежащих университетских программ обучения разработчиков многие компании вынуждены не только тратить средства на фактическую переподготовку молодых специалистов, но и искать способы привлекать их к своей работе уже на студенческой скамье. Новая программа факультета бизнес-информатики ГУ-ВШЭ может помочь ИТ-бизнесу минимизировать расходы на «доводку» выпускников. С другой стороны, сотрудничество с компаниями позволяет отделению программной инженерии актуализировать учебные программы и вести инновационные проекты, используя свой научный потенциал в интересах бизнеса. Такая синергия научных и коммерческих задач, возможно, позволит сократить миграцию квалифицированных специалистов из науки в бизнес.
Учителя и ученики
Благие намерения вузов по созданию современных учебных программ в области ИТ часто не удается осуществить из-за отсутствия преподавательских кадров— люди, имеющие опыт преподавательской деятельности, не владеют актуальной тематикой развития отрасли и технологий и не всегда готовы осваивать новое, а молодые специалисты неохотно идут на преподавательскую работу. Специалисты ИТ-компаний нередко готовы совмещать профессиональную деятельность с преподаванием, но, как правило, они слабо методологически подготовлены для эффективной работы со студентами.
На отделении программной инженерии факультета бизнес-информатики ГУ-ВШЭ в учебном процессе задействуются специалисты компаний-партнеров, но основная нагрузка ложится на профессиональных преподавателей. В 2006 году ГУ-ВШЭ стал одним из семнадцати победителей конкурса инновационных программ вузов в рамках национального проекта «Образование» и получил на реализацию своей программы 556 млн рублей из федерального бюджета, что позволило отделению программной инженерии собрать команду квалифицированных преподавателей, создать современные учебные курсы и подготовить необходимые пособия.
Преподавателей для нового отделения профессор Авдошин искал среди специалистов из МИЭМ, МГТУ им. Баумана, МАТИ, Военно-воздушной инженерной академии им. Жуковского и др. Живым воплощением достижений советской школы разработки ПО можно считать профессора кафедры управления разработкой программного обеспечения Владимира Липаева, главного научного сотрудника Института системного программирования РАН. Создатель научной школы в области программной инженерии, Липаев руководил разработкой методов и инструментальных средств в ходе создания управляющих программ реального времени для советской оборонной промышленности. На отделении используется его учебник по методологическим основам программной инженерии, готовятся к изданию книги по тестированию ПО.
Учебный процесс на отделении программной инженерии, как и на всем факультете, построен таким образом, что «весело жить от сессии до сессии» студенты просто не имеют возможности. Сессий на отделении не две, а пять— учебный год разбит на пять модулей по семь-восемь недель, в течение которых студенты интенсивно изучают определенный набор дисциплин и в конце сдают экзамены и зачеты. Помимо этого используются различные формы текущего контроля знаний: эссе, рефераты, домашние задания, контрольные работы. Из всех полученных оценок формируются рейтинги студентов, на основе которых назначаются стипендии, скидки на оплату обучения, проводится зачисление в магистратуру и определяются другие преференции, например, возможность, бесплатно учить второй язык, перейти на бюджетное обучение и т.д.
Примечательно, что такую организацию учебного процесса положительно оценивают сами студенты, которые считают, что на отделении фактически дают не просто знания, а метазнания, то есть учат учиться самостоятельно и постоянно стимулируют к этому. Авдошин называет это «сдвигом образовательной парадигмы». В классической схеме учебного процесса между знаниями и студентом всегда есть посредник— преподаватель, что создает условия для отставания от актуальной ситуации в той или иной предметной области. При изучении основополагающих дисциплин это вполне допустимо, но освоение такой динамичной области, как ИТ, требует новой образовательной парадигмы, позволяющей замкнуть цепочку от знаний непосредственно на студента. При этом основные функции преподавателя состоят в том, чтобы мотивировать самообучение студента, оказывать консультации и осуществлять контроль. Студент должен также уметь выделять те перспективные области, в которых имеет смысл вести исследования и разработки.
Инновационные идеи, реализуемые на отделении программной инженерии, пока находятся в стадии своеобразного эксперимента, однако интерес к ним вузовского сообщества, индустрии и абитуриентов дает основания для оптимизма. Разработанный образовательный стандарт по программной инженерии планируется реализовать в МГТУ им. Баумана, СПбГУ ИТМО, а в дальнейшем и в других российских вузах.
SE2004: рекомендации по обучению специальности «Программная инженерия»
Computing Curricula: Software Engineering и российское образование