Вторая конференция "Свободное програмное обеспечение в высшей школе" (27-28 января 2007)

Построение системы автоматизации университета в МГТУ им. Н.Э.Баумана

Якшин Михаил Михайлович

МГТУ им. Н.Э.Баумана

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

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

Практически в каждом деканате и подразделении Университета, обычно силами студентов, были созданы свои мелкие автоматизированные системы. Среди относительно крупных и введенных в production стоит отметить следующие системы:

  • Система Факультете Военного Обучения (ФВО) - учет студентов, проходящих обучение на факультете, преподавателей, учебных курсов, учет прохождения контрольных мероприятий, автоматизация процесса конкурсного отбора поступающих на факультет.
  • Система приемной комиссии - изолированная система, учитывающая абитуриентов и все этапы их прохождения до приема в студента.
  • Система ОРИСА - система, ведущая учет иностранных студентов и аспирантов, их родственников, планирующая размещение, автоматизирующее подготовку документации по взаимодействию с представительствами иностранных государств и т.п.
  • Система расписания экзаменов - автоматизированное планирование размещения экзаменов по аудиторному фонду и загрузки преподавателей на время экзаменов.

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

    На технологическом уровне стоит отметить следующие факты:

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

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

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

    3. Первая система, которая должна быть разработана (без которой работа всех остальных систем практически невозможна) - система учета контингента студентов и структуры учебных подразделений Университета (система "Контингент").

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

    По ряду причин, технологической платформой для интеграции были выбраны web-services на протоколе SOAP. Предполагается поддержка SOAP как минимум для решений на базе Ruby (SOAP4R), PHP (PHP5 SOAP), Java (Axis и WSIF) и .NET (.NET Web Services).

    В целом, программа автоматизации предполагает наличие следующих систем:

    Система "Контингент" была создана и введена в эксплуатацию первой. Она решила одну из основных задач автоматизации Университета - в любой момент времени учитывать состояния студентов, структуру Университета, состав групп, движения студентов между группами, ведение личных дел студентов и т.п.

    Идеологически система строилась как транзакционная объектная база данных, в которой сущности (студенты, группы, кафедры и т.п.) имеют некие атрибуты (состояния, принадлежности) и меняют эти атрибуты только по определенным указаниям - приказам. Приказы максимально отражают реальные бумажные приказы, была проведена масштабная работа по стандартизации документооборота в этой части и введен в действие новый механизм взаимодействия подразделений с помощью этих электронных приказов.

    Пилотная версия "Контингент" была написана с использование ASP.NET и не удовлетворяла многим этим критериями и была впоследствии переписана с использованием свободных технологий - Ruby/Radical в качестве сервера приложений, MySQL в качестве СУБД, ALT Linux в качестве серверной ОС.

    Для того, чтобы изменить какую-то информацию о студенте (в том числе создать информацию о новом студенте), должен быть введен в действие соответствующий приказ. Подразделения Университета (деканаты, ОРИСА и др.) готовят внутри системы электронные проекты приказов, далее следует процедура утверждения, в результате которой отдел кадров вводит приказ в действие и управление делами регистрирует приказ юридически в своем реестре, присваивая ему номер. После введения приказа в действие система автоматически меняет атрибуты у затронутых сущностей с тем, чтобы отразить их актуальное состояние.

    Таким образом, по каждому студенту накапливается история приказов, которые касались его - как минимум, это приказ о зачислении, переводные приказы (с семестра на семестр) и приказ об окончании обучения, но существуют также приказы об академическом отпуске, задолженностях, сроках их сдачи, поселение и выселении из общежития и т.п. Состояние студента (значение его атрибутов) на данный момент есть сумма действий всех приказов по нему и представляет собой своеобразный "кэш", который всегда можно пересчитать, прогнав все приказы заново с самого начала, с момента создания студента.

    Проекты приказов могут создаваться как вручную с помощью редактора в web-интерфейсе, так и автоматически или полуавтоматически - например, студенты зачисляются в систему "Контингент" по данным приемной комиссии и в этом случае проекты приказов импортируются оттуда.

    Свой "выход" - всегда актуальную информацию по студентам - "Контингент" представляет несколькими способами:

    Для поддержания такой транзакционной инфраструктуры была разработана специальная технология обработки таких приказов. В системе есть некие сущности (студенты, группы и т.п.), у каждой из них есть атрибуты. Приказы - это не произвольные текстовые документы, а нечто вроде шаблонов, в которые пользователь может вписать необходимые значения. Таких шаблонов сейчас около 20 - это разные типы приказов. Каждый тип приказа описывается в виде XML-файла специального вида, в котором полностью задаются:

    Из этого описания генерируются:

    Так как атрибутов очень много и они достаточно рассредоточены, то было принято решение хранить заполненные приказы и большинство атрибутов в XML. Реляционная СУБД здесь используется двояко: она хранит и полноценные XML-документы приказов и групп атрибутов, и вместе с тем ведет некий "кэш" текущего состояния студента атомарными полями, по которым нужно вести индексацию и поиск.

    На данный момент система "Контингент" полностью внедрена и уже больше 2 лет используется в production. После этапа первоначального обучения, значительно облегчилась работа деканатов, отдела кадров и других подразделений Университета, стали возможными статистические исследования, полуавтоматическая генерация отчетности и т.п. Сильно снизился поток прецедентов подготовки приказов с неформализованном виде в редакторах типа Microsoft Word/Excel. На данный момент активно ведется разработка других систем, которые использует данные, предоставляемые "Контингентом". Все это должно значительно упростить дальнейшую миграцию Университета на свободное ПО.

    Программа конференции