Система поддержки разработки программного обеспечения студентами

1 Московский Государственный Технический Университет имени Н.Э.Баумана, 2 Московский Государственный Технический Университет имени Н.Э.Баумана, 3 Московский Государственный Технический Университет имени Н.Э.Баумана
Обучение по направлению «Программная инженерия» требует от студента постоянного участия в разработке программного обеспечения. Для организации этого процесса в соответствии с современным уровнем развития индустрии студенту должны быть выделены репозитории систем контроля версий и управления программными проектами. Для автоматизации этого процесса на кафедре «Программное обеспечение ЭВМ и информационные технологии» МГТУ им. Н. Э. Баумана разработана система поддержки разработки программного обеспечения студентами, которая управляет репозиториями систем контроля версий и иной инфраструктурой, необходимой студенту в его работе.

Разработка программного обеспечения в учебном процессе

Основой образовательного процесса на кафедре «Программное обеспечение ЭВМ и информационные технологии» МГТУ им. Н. Э. Баумана является разработка студентом программного обеспечения в ходе лабораторных работ, домашних заданий, курсовых проектов и выпускных работ с первого и до последнего семестра обучения.

Базой для организации профессионального процесса разработки программного обеспечения в настоящее время являются системы контроля версий [1, 2] и системы управления программными проектами [3], содержащие средства отслеживания ошибок, планирования работ, работы с веб-документами. В настоящее время использование систем контроля версий исходного кода уже получило распространение в учебном процессе в мировой практике [4].

Рис. 1. Упрощённая инфологическая модель разработки программного обеспечения

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

Программный проект может быть связан с курсовым проектом, одной или несколькими лабораторными работами, НИРС или дипломной работой. Возможно также создание проектов для личных потребностей студентов.

Очевидно, что создание репозиториев вручную или с помощью вспомогательных сценариев является непродуктивным решением в случае обучения десятков студентов одного года обучения на кафедре. Ряд существующих систем управления проектами (например, систему Redmine [5]) можно было бы использовать в качестве основы для создания системы управления множеством учебных репозиториев в случае написания дополнительных модулей . Однако, такой подход привёл бы к невозможности использовать иные системы управления проектами, например, систему Trac.

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

Участники учебного процесса разработки

В процессе работы над программным проектом в учебном процессе участвует один или несколько студентов и один или несколько контролирующих процесс преподавателей (рис. 2). С системой также должен работать администратор, ответственный за ведение различных справочников, создающий программные проекты и определяющий права доступ к ним. Администратор должен иметь возможность массового создания индивидуальных проектов, связанными с заданиями для некоторого курса.

Рис. 2. Использование системы различными видами пользователей

Важной составляющей контроля работы студентов над курсовыми и дипломными работами является изучение периодичности работы студента и оценка объёма работы, выполняемым им за некоторый период времени. Просмотр такой статистики является функцией преподавателя и особенно полезен при отслеживании состояния курсовых и дипломных работ ответственными преподавателями.

Структура созданной программной системы

Структура разработанной программной системы, названной «Дев-ИУ7» (по имени домена dev.iu7.bmstu.ru, где развёрнут её веб-интерфейс), представлена на рис. 3. В ней выделен ряд подсистем, таких как управление проектами и правами доступа к ним, сбор и просмотр статистики о работе студентов, автоматическая и ручная рассылка почтовых уведомлений, сопряжение системы с имеющимися системами контроля версий, управления проектами и почтовыми службами. Структура системы позволяет достаточно легко добавлять поддержку различных систем контроля версий и другого существующего ПО, образующего инфраструктуру для работы студента.

Рис. 3. Основные подсистемы разрабатываемого ПО

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

Диаграмма последовательности действий при создании нового программного проекта показана на рис 4. На ней схематично представлена передача информации между модулями разработанной системы, используемыми СУБД и утилитами для работы с репозиториями системам поддержки разработки программного обеспечения.

Рис. 4. Основная последовательность вызовов при создании репозитория

Реализация и развёртывание системы

Система «Дев-ИУ7» разработана с использованием открытых технологий и свободного ПО, что позволяет разрабатывать и развёртывать её вне зависимости от наличия соглашений между вузом с вендорами. В качестве основной технологической платформы выбран Python и библиотека Django [6].

На рис. 5 представлена схема развёртывания системы на кафедре. В настоящий момент системой поддерживаются основные существующие средства контроля версий: Git, Subversion, Bazaar, Mercurial, для которых существуют разнообразные клиенты для всех основных ОС. Веб-интерфейс системы и доступ к системам контроля версий осуществляются через веб-сервер Apache. В качестве систем управления проектами в настоящее время можно использовать системы Trac и Redmine.

Рис. 5. Развёртывание системы и необходимой инфраструктуры

Ряд разрабатываемых проектов требует наличия SMTP-, POP3- или XMPP-сервера, поэтому система позволяет выделять для проекта требуемое администратором число учётных записей почтовой системы на серверах Postfix, Courier и Ejabberd. В качестве СУБД для хранения базы данных системы и базы данных почтовых учётных записей используется СУБД PostgreSQL. В качестве операционной системы на серверах кафедры используется Debian GNU/Liniux.

Эксплуатация и перспективы развития

Внедрение использования системы в учебный процесс кафедры началось со старших курсов и в настоящее время она массово и в обязательном порядке используется на 5-6 курсе обучения специалистов и в магистратуре. По желанию учащихся развёрнутая инфраструктура применяется и в предметах 3-4 курса. Начиная с 2012 года система будет использоваться учащимися с первого года обучения в бакалавриате.

Кроме учебных проектов, система используется при разработке учебно-методических посо- бий, научной работы, управлении репозиториями с личными проектами студентов и преподавателей.

Наиболее существенным выявленным недостатком системы является отсутствие связи с системами постоянной интеграции разработки и тестирования, такими как Bitten, BuildBot или CruiseControl [7] и с виртуальными машинами, на которых производится автоматизированное тестирование программного обеспечения в рамках непрерывной интеграции. Этот недостаток предполагается исправить в ближайшем будущем.

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

Список использованных источников
  1. O’Sullivan, Bryan. Making Sense of Revision-control Systems / Bryan O’Sullivan // Queue. — 2009. — August. — Vol. 7. — Pp. 30–40.
  2. Loeliger, Jon. Version Control with Git: Powerful Tools and Techniques for Collaborative Software Development / Jon Loeliger. — 1st edition. — O’Reilly Media, Inc., 2009. — 336 p.
  3. Murphy, David J. Managing Software Development with Trac and Subversion: Simple project management for software development. / David J. Murphy. — Packt Publishing, 2007. — 120 p.
  4. Rocco, Daniel. Distributed version control in the classroom / Daniel Rocco, Will Lloyd // Proceedings of the 42nd ACM technical symposium on Computer science education. — SIGCSE ’11. — New York, NY, USA: ACM, 2011. — Pp. 637–642.
  5. Scacchi, Walt. Free/open source software development / Walt Scacchi // Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering. — ESEC-FSE ’07. — New York, NY, USA: ACM, 2007. — Pp. 459–468.
  6. Holovaty, Adrian. The Definitive Guide to Django: Web Development Done Right, Second Edition / Adrian Holovaty, Jacob Kaplan-Moss. — 2nd edition. — Berkely, CA, USA: Apress, 2009. — 536 p.
  7. Beck, Kent. Extreme Programming Explained: Embrace Change (2nd Edition) / Kent Beck, Cynthia Andres. — Addison-Wesley Professional, 2004. — 224 p.
Тип выступления  Стендовый доклад и публикация
Уровень образования  Высшее профессиональное