Разработка свободного программного обеспечения для школ как средство обучения программной инженерии

Санкт-Петербургский Государственный Университет
В статье представлен опыт создания востребованного свободного программного обеспечения для обучения основам информатики, программирования и кибернетики. Участвующие в проекте студенты изучают основы программной инженерии и получают практический опыт разработки программного обеспечения, а школы — свободный программный продукт.

Программная инженерия — сравнительно молодая и динамично развивающаяся область, поэтому при классическом университетском подходе к моменту завершения студентом обучения довольно большая часть полученных практических знаний может устареть без постоянной тренировки навыков и обновления знаний. Кроме того, довольно многие знания и навыки, необходимые специалистам, не могут быть получены студентами из университетских курсов, хотя бы в силу имеющихся в образовательном стандарте ограничений на аудиторную нагрузку. Дополнительное уменьшение в новом образовательном стандарте 231000 “Программная инженерия” часов аудиторной нагрузки и ограничение доли лекционных часов в сравнении с предшествовавшим 010400 “Информационные технологии” выглядит достаточно естественным в рамках сближения с болонской системой и заставляет преподавателей кафедры системного программирования СПбГУ активнее искать новые варианты обучения с делегированием на самоподготовку значительной части учебного материала.

Проводимые практические занятия, выполняемые курсовые и дипломные работы не всегда дают студенту достаточно практики реального промышленного программирования, чтобы по завершении обучения быть полноценным специалистом в области программной инженерии. Преподавателям постоянно приходится искать варианты решения данной проблемы, в том числе заимствовать опыт иностранных вузов, где переход к болонскому процессу гораздо ближе к завершению.

Существует несколько основных способов идти в ногу со временем и давать студентам актуальные знания, но в основном все они так или иначе сводятся к тесному взаимодействию с представителями индустрии разработки программного обеспечения. Среди них можно назвать привлечение практикующих специалистов к преподаванию; выполнение университетскими лабораториями коммерческих наукоёмких тематических заказов; привлечение коммерческих компаний к непосредственному сотрудничеству со студентами — речь идёт не о непосредственном найме, а о летних школах, организуемых компаниями, и о привлечении ведущих специалистов к руководству курсовыми и дипломными работами. Кафедрой системного программирования Санкт-Петербургского Государственного Университета в той или иной мере практикуются все эти способы, но в данной статье речь пойдёт о ещё одном — создании студентами под руководством преподавателей свободного программного обеспечения (СПО).

Уже более десяти лет кафедрой системного программирования совместно с компанией ЗАО “Ланит-Терком” реализуется дополнительная образовательная инициатива — “студенческие проекты”[1]. Студенческий проект представляет собой некоммерческий проект (как правило, с открытым исходным кодом), в котором группы студентов (порядка 4 - 12 человек) решают какую-либо реальную задачу под руководством специалистов компании. За время участия в проекте студенты успевают на практике ознакомиться с какой-нибудь популярной и актуальной технологией, современным языком программирования, изучить основы организации процесса разработки и соответствующий технологический инструментарий: управление конфигурацией, средства версионирования, автоматизации сборки и пр. Руководители студенческих проектов и организаторы со стороны компании осознают важность образовательной составляющей, аккуратно сочетая с коммерческими интересами компании. Дополнительно к проектам в течение семестра, ежегодно организуется летняя школа.

Студенческие проекты — это не только дополнительное обучение студентов факультета второго и третьего курса через работу в непосредственном контакте со специалистами, но и постоянный контроль со стороны представителей индустрии за уровнем практической подготовки студентов факультета и кафедры. Очень важно, что контроль происходит на раннем этапе обучения, а не только за уровнем выпускников, что позволяет своевременно скорректировать образовательный процесс. Например, студенческие проекты повлияли на преподавание такой классической дисциплины как “Практикум на ЭВМ”  и в дополнение к основному материалу в программу были введены основы технологий программной инженерии: обязательное обучение работе с системами контроля версий, навыкам модульного тестирования, культуре распределённой работы и общения через электронную почту и системы мгновенных сообщений.

В свете выше сказанного, становится очевидной значительная роль студенческих проектов в подготовке программистов на математико-механическом факультете СПбГУ.  Но всё же в этих проектах не всегда руководители подразумевают вовлечение студентов в серьёзные фундаментальные или прикладные исследования, гораздо чаще речь идёт о создании того или иного продукта, часто ради апробации технологии. Кроме этого, как и традиционное преподавание программирования, студенческие проекты представляют собой “создание с нуля”, хотя в профессиональной практике в основном приходится сопровождать и развивать имеющиеся системы. Этой проблеме посвящена статья[2], описывающая опыт замены традиционных задач на практике по программированию на задачи по сопровождению стороннего СПО.

Несмотря на интересный результат педагогического эксперимента, сопровождение стороннего СПО всё же имеет ряд недостатков и не может рассматриваться как эквивалентная замена студенческим проектам, поскольку нивелирует достаточно важный аспект последних — чувство владения (“feeling of ownership”) кодом продукта у студентов, присущее также добровольным участникам проектов разработки СПО. С другой стороны, в нашем случае речь идёт пока о дополнительном обучении и добровольном участии студентов в проектах, а не замене практики по программированию.

В качестве эксперимента по сочетанию положительного опыта с потребностями образовательного процесса сотрудники кафедры организовали и ведут собственные проекты по разработке СПО. Эти проекты основаны на опыте студенческих проектов компании ЗАО “Ланит-Терком” и современном опыте традиционных проектов совместной распределённой разработки СПО, но изначально ориентированны на прикладные исследования в области программирования для усиления вовлеченности студентов в научно-исследовательскую деятельность — в таких проектах идёт подготовка новых членов исследовательской группы, поскольку в процессе работы студенты получают представление о предметной области. Обязательная образовательная составляющая вносит ряд различий с классическим подходом к разработке ПО с открытым исходным кодом. В том числе, рассматриваемые проекты зачастую оказываются более организованной деятельностью, с чёткими сроками, задачами, руководителями. Это не позволяет непосредственно применить современный опыт совместной распределённой разработки СПО на проекты, ведущиеся на кафедре, но как раз сближает кафедральные проекты с промышленными.

Отдельно стоит вопрос о поиске тем для таких проектов. Они должны сочетать востребованность конечным пользователем с одной стороны и научную составляющую с другой. Но этот вопрос лишь кажется трудноразрешимым и при детальном изучении не является таковым. В том числе огромной нишей является область свободного программного обеспечения для отечественных школ и вузов, как будет описано далее на примере одного из проектов.

Силами сотрудников и студентов кафедры системного программирования СПбГУ  был запущен проект по разработке системы визуального программирования роботов QReal:Robots [3].  Система создаётся как среда для обучения основам программирования и кибернетики с применением одного из самых популярных конструкторов является Lego ® Mindstorms ® NXT 2.0 [4].

Многие преподаватели, использовавшие конструкторы Lego в преподавании формулируют ряд замечаний к средствам программирования подобных конструкторов. Поставляемая в стандартном комплекте конструктора среда NXT-G недостаточно функциональна и подходит только для использования на начальных этапах обучения. Поэтому в школах получила распространение более развитая среда Robolab, позволяющая создавать программы от самых простых до весьма серьезных, основанных на нетривиальных математических формулах. Функциональные возможности Robolab позволяют успешно использовать ее и для преподавания кибернетики и робототехники в вузах.

Однако, использование Robolab в школах затруднено со слов школьных педагогов по ряду причин: из-за незавершенности локализации среды; отсутствия наглядной пошаговой отладки создаваемых программ; отсутствия возможности перехода от графического представления программы к текстовому без смены инструментария; сложности с запуском под операционными системыми  семейства GNU/Linux; наконец, значительная с точки зрения российского потребителя стоимость.

Качество локализации и цены коммерческих продуктов, равно как и отсутствие версий для систем GNU/Linux — именно эти недостатки и формируют потребительский спрос столь необходимый для мотивированной разработки.

На данный момент разрабатываемая при непосредственном активном вовлечении в проект студентов среда QReal:Robots уже реализует минимальную необходимую функциональность для преподавания в школах программирования с использованием роботов Lego и по отзывам преподавателей может заменить используемые коммерческие программные продукты. На всероссийской конференции «Современное технологическое обучение в школе: от компьютера к роботу», проходившей 23 марта 2011 года в рамках второго Петербургского Образовательного Форума, QReal:Robots был впервые представлен широкой аудитории и вызвал заинтересованность учителей и методистов. Примечательно, что с интересом отнеслись и школьники, которым понравились некоторые отличительные возможности новой среды.

Только в 2011 году уже подано на различные конференции и принято к публикации, либо опубликовано 8 тезисов и статей у студентов из проектной группы. Ожидается, что общее количество к концу 2011 года достигнет 20 при этом 3-5 будут в изданиях, входящих в “список ВАК” или, как минимум, в Российский индекс научного цитирования. Эти результаты и обоснованные планы позволяют считать эксперимент весьма успешным. Во многом, конечно, научная составляющая обеспечена технологией, на которой основан проект.

Среда QReal:Robots создаётся на базе CASE-системы QReal[5], разрабатываемой силами научно-исследовательской группы кафедры как СПО. Система QReal предназначена для быстрого создания предметно-ориентированных визуальных языков. QReal:Robots — это одно из применений технологии, на основе которой разрабатываются среды визуального программирования и для других предметных областей. Студенты вовлеченные в проект QReal:Robots работают непосредственно с участниками научно-исследовательской группы, развивающей базовую технологию QReal.

Система создавалась и активно развивается с учетом замечаний и пожеланий преподавателей школ и вузов, является открытым проектом. На примере данного проекта участвующие в нём студенты получают настоящий промышленный опыт, поскольку участвуют во всём цикле процесса разработки. С другой стороны, студенты вовлечены в исследовательскую деятельность, публикуются на тематических конференциях. QReal:Robots не единственный такой проект, например, операционная система реального времени Embox[6], также разрабатываемая как СПО, является ещё одним примером. Возможно, скоро можно будет говорить и о востребованности иных разработок, строящихся на схожих принципах. Также планируется запуск проекта по созданию для вузов на основе технологии QReal комбинированного редактора графических языков/диаграмм, используемых в индустрии ПО (UML, IDEFx, DFD, пр.). К сожалению, говорить о возможности внедрения озвученного подхода в обязательные дисциплины пока рано, но возможно, что какие-то принципы так же повлияют на преподавание базовых дисциплин, как и совместные студенческие проекты с компанией ЗАО “Ланит-Терком”.

Список использованных источников
  1. Гагарский Р.К. Программа подготовки специалистов в IT-компании. // Системное программирование. Вып. 3. СПб.: Изд-во СПбГУ. 2008, С. 141-156
  2. Petrenko, M. et al, “Teaching Software Evolution in Open Source”// Computer, Vol. 40, Issue 11, IEEE Computer Society, 2007, pp. 25-31
  3. Сайт проекта QReal:Robots, URL: http://se.math.spbu.ru/SE/qreal
  4. Филиппов С.А. Робототехника для детей и родителей // СПб, Наука, 2010г
  5. Терехов А.Н., Брыксин Т.А., Литвинов Ю.В. и др. Архитектура среды визуального моделирования QReal. // Системное программирование. Вып. 4. СПб.: Изд-во СПбГУ. 2009, С. 171-196
  6. Сайт проекта ОСРВ Embox, URL:http://code.google.com/p/embox/
Тип выступления  Устное выступление и публикация
Уровень образования  Высшее профессиональное
Ключевые слова  преподавание, обучение, программная инженерия, свободное программное обеспечение, технологии программирования, информатика, кибернетика, графическая среда, программный продукт
Презентация доклада  Загрузить