Евгений Капустин

Пожалуй, в помощь школьной администрации трудно предложить что-либо более существенное, чем реально работающая программа автоматизированного составления расписания. Каждый, кто хоть раз в школьной практике сталкивался с составлением расписания, прекрасно понимает, насколько это непростая задача. Слишком много возникает всяческих “но”, слишком много нюансов в каждом конкретном случае. Фирма “ЛИнТех” предлагает вашему вниманию свое решение этой проблемы – пакет “Расписание 3.0”. О нем и пойдет сейчас речь.

Сначала рассмотрим круг проблем, с которым сталкивается каждый завуч при составлении расписания. Представим себе обыкновенную школу, не самую большую, но и не самую маленькую – 25 классов, 60 преподавателей. Каждый класс имеет нагрузку порядка 30 часов. Таким образом, в общей сложности необходимо запланировать проведение 25 * 30 = 750 занятий. Это – количественная мера. Но задумаемся о качестве…

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

К слову сказать, автор этих строк очень любит программные тесты на структуру интеллекта, Так вот, за время работы над проблемой автоматизации составления расписания личный уровень развития комбинаторного мышления автора вырос на 30% – до оценки “сверхвысокий уровень”. Думаю, если протестировать обыкновенного завуча, тестовую программу зашкалит до “бесконечно высокого уровня”.

Почему на расписание уходит столько сил? Ответ очевиден. Школьное расписание – весьма сложная взаимосвязанная система. Практически каждый объект учебного процесса связан со всеми остальными. Если не напрямую, как в связке “класс–преподаватель–аудитория” (преподаватель ведет свой предмет в определенных классах, для проведения занятий нужны соответствующие аудитории), то посредством косвенных связей.
Планирование расписания отягощается чрезвычайно большим количеством условий, которые приходится строго выполнять. Перечислим самые рядовые из них.

· Наличие преподавателей-совместителей – такие преподаватели могут работать только в строго определенные дни и часы.

· Нормы гигиены – нельзя допускать перегрузки учащихся сверх допустимого предела.

· Жесткие требования к качеству расписания со стороны преподавателей – минимальное количество окон в расписании, для некоторых преподавателей необходимо “выдерживать параллели” (так планировать их расписание, чтобы занятия классов одной параллели шли непрерывными блоками – 7а, 7б, 7в, 9а, 9б, 9в и т. д. Это важно в том случае, если необходимо специально подготавливать кабинет, например, для занятий по химии или по физике.

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

Хотелось бы подчеркнуть, что это лишь самые рядовые условия. И со всем этим завучу приходится “сражаться” в одиночку. Компьютеризация, информатизация – а завуч по-прежнему долго сидит за своим ватманом, передвигая разноцветные значки. Типичный разговор: “Компьютеры? Какое там! Нам бы парты на новый учебный год покрасить, а вы о компьютерах”.
Да, ситуация в образовании сейчас плачевная. И тем не менее во многих школах есть достаточно производительные компьютеры. Почему бы их использовать не только как пишущие машинки, но и в помощь завучу? Далее возможен следующий разговор: “Мы уже пробовали. Даже купили две программы, не хотим нагреться в третий раз. Короче, мы не верим”. Или: “Да, мы с удовольствием купили бы вашу программу, у нас даже есть деньги, но кто с ней будет работать? Наш завуч совершенно не умеет работать на компьютере”.
Итак, есть две ключевые проблемы.
· Реальная эффективность программы. Необходимо обеспечить качество расписания, не уступающее тому, которое составляет опытный завуч вручную.
· Программа должна обеспечивать возможность эффективной работы пользователя, владеющего лишь самыми минимальными навыками работы с компьютером. Вопрос стоит так – либо он (пользователь) получит от программы качественное расписание с первого раза, либо он его не получит никогда (от программы, имеется в виду). В случае неудачи наступает серьезное разочарование, которое очень трудно преодолеть.
Это и есть краеугольные камни в постановке нашей задачи. Кстати, можно обратить внимание на взаимную противоречивость указанных требований. С одной стороны, задача сама по себе предполагает довольно непростую внутреннюю организацию программы. А с другой – требование легкости и понятности интерфейса. Таким образом, сложная внутренняя организация должна иметь простую внешнюю форму.
Понятно, что какими бы широкими возможностями в составлении расписания программа ни располагала, они ничего не значат, если завучу трудно ими воспользоваться. И тогда во главу угла разработчики ставят основное требование: обеспечить возможность освоения программы с первого раза.
Каким образом можно этого достичь? Общепринятый способ организации интерфейса – применение меню и многооконной системы. Все эти этапы мы прошли. Как бы хорошо ни был организован такой интерфейс, все равно на освоение программы требовалось весьма значительное время. Все это – стандартные атрибуты стандартных интерфейсов.
Какие же решения используются в новой версии программы “Расписание”? Разработчикам есть чем гордиться. Потрясающий факт – большинство пользователей, причем без предварительной подготовки, осваивают программу, ни разу не обратившись к документации. Когда мы проводили бета-тестирование второго релиза программы “Расписание 3.0”, наши пользователи даже не интересовались, предоставят ли им полную документацию для бета-тестирования – они были уверены, что программа будет им понятна “сама по себе”.
Теперь о том, каким образом достигается такой результат.
В первую очередь, все шаги работы с программой выстроены в единую логическую цепочку. Инициатива во многом исходит от программы: пользователь, последовательно выполняя отдельные шаги, движется к конечному результату. Программа предоставляет исчерпывающую информацию о том, для чего и каким образом выполняется соответствующий шаг. Переключение между шагами организовано таким же образом, как в интернетовских браузерах (Internet Explorer, Netscape Navigator и т. п.).
Каждое окно программы тщательно продумано и отлажено для достижения максимального уровня комфорта и скорости ввода. Практически все операции (за исключением ввода списка преподавателей и аудиторий) выполняются “мышкой”, поскольку хорошие навыки владения клавиатурой встречаются довольно редко.
Кроме того, на каждом шаге ввода исходных данных есть возможность выполнить автоматическую проверку результатов ввода (программа сама предлагает сделать это). Это снижает вероятность ошибок. И наконец, сам характер проверки служит более глубокому пониманию назначения соответствующего шага.
Конечно, говоря о возможностях программы, нельзя утверждать, что программа делает абсолютно все, но может она многое.
Перечислим основные возможности программы:

– разбиение классов на подгруппы при проведении занятий по иностранному языку, информатике и т. д.;

– возможность организации комбинированных занятий, когда одна подгруппа уходит, например, на информатику, а другая – на занятие по иностранному языку;

– разбиение классов на подгруппы по специализации: часть занятий проводится для всего класса целиком, по общему учебному плану, остальные занятия проводятся отдельно в подгруппах по специализации;

– составление расписания сразу на две смены;

– дифференцированный контроль окон в расписании для преподавателей и многое другое.


Более подробную информацию о возможностях программы можно получить на Web-сервере фирмы “ЛИнТех”: http://www.lintech.ru. Составление расписания производится полностью автоматически. Естественно, для этого необходимо выполнить ряд действий по вводу исходных данных. Чтобы получить хороший результат, пользователи программы должны достаточно ответственно подойти к процессу ввода информации, и хотя программа сама “ведет” пользователя по всем шагам, необходимо точно соблюдать инструкции к ней.

Теперь – о внутренней организации программы. Учитывая количество и разнородность требований к расписанию, реализация достаточно эффективного механизма составления расписания может быть успешной только в том случае, если решение будет разбито на несколько шагов, на каждом из которых производится отработка соответствующих условий составления расписания.
В программе “Расписание” процесс автоматической расстановки занятий разбит на четыре отдельных, последовательно выполняемых шага (см. схему).

· Предварительная проверка корректности исходных данных.

· Планирование распределения нагрузки между днями. Распределение нагрузки между днями программа производит по отдельным предметам, предварительно упорядочив их в соответствии с коэффициентом сложности. Этот коэффициент программа вычисляет сама на основе ряда факторов. Таким образом, сначала обрабатываются предметы, для которых наиболее сложно произвести распределение нагрузки между днями (занятия с разбиением на подгруппы, потоковые занятия и т.п.).

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

· Автоматическая доводка полученного расписания. Режим автоматической доводки расписания включается после завершения расстановки занятий. Целью этого режима является минимизация количества окон в расписании преподавателей.

Цель программы – построить расписание, приближенное по балансу исходных условий к тому, которое получает человек. Таким образом, цель состоит не только в том, чтобы непротиворечиво расставить все занятия в расписании, но и в том, чтобы достичь компромисса между всеми требованиями, которые подразумевает человек при составлении расписания. Компромисс здесь – ключевое слово.
Как показывает практика, программа полностью автоматически составляет вполне приемлемое расписание, но окончательная его доводка может быть выполнена только при участии человека. В любом случае, после того как каждый преподаватель ознакомится со своим расписанием, наверняка возникнут возражения: “Вы только посмотрите! У меня целых два окна в расписании, а у физкультурников нет ни одного. Я тоже хочу расписание без окон!”
Конечно, в случае особых возражений расписание приходится корректировать. Именно поэтому по завершении расстановки занятий программа автоматически переходит на окно просмотра и редактирования расписания. Пожалуй, это самое насыщенное по своим возможностям окно программы.
Программа позволяет произвольно перемещать занятия, не задумываясь о возможных пересечениях со связанными классами и преподавателями. Важно то, что программа не только отслеживает возникновение противоречий, но и сама производит корректировку расписания в случае, если в результате перемещения занятия расписание оказывается противоречивым.
Корректировка расписания производится исключительно “мышкой” – пользователь просто перетаскивает клетки-занятия внутри таблицы расписания (это наглядный пример использования технологии Drag-and-Drop).
В случае, если результат перемещения занятия оказался неудовлетворительным, его можно отменить. Для этого в программе реализована технология отката – такая же, как, например, в Microsoft Word, CorelDraw и т. п. Можно отменить не просто последнее действие, но и любое из последних изменений в расписании (в том числе действия по редактированию исходных данных).
Распечатка расписания производится с помощью программы Microsoft Excel или любой другой программы, “понимающей” формат DBF. Программа готовит практически все таблицы расписания, которые могут реально потребоваться: общее расписание по классам, по преподавателям, индивидуальные расписания преподавателей и классов, а также расписание загрузки аудиторий.
Необходимо подчеркнуть, что фирма “ЛИнТех” считает первоочередной своей задачей поддержку пользователей – это одно из основных условий обеспечения эффективной эксплуатации программы. Система поддержки пользователей программы предполагает несколько направлений:
· поддержку в форме консультаций (телефонная линия поддержки, консультации по E-mail или по обычной почте);
· проведение семинаров пользователей;
· бесплатное обновление в рамках одной версии программы “Расписание” (например, пользователи первого релиза программы “Расписание 3.0” получают второй релиз бесплатно).
Ключевым аспектом в поддержке пользователей авторы считают именно простоту освоения программы. В частности, в программе работает система подсказки, разработанная специально для разрешения трудностей при составлении расписания. Например, если на этапе автоматической расстановки занятий программа не смогла произвести стопроцентную расстановку, то она открывает страницу, на которой предлагается информация по возможным путям решения этой проблемы. Если этой информации все-таки окажется недостаточно, каждый пользователь может получить бесплатную консультацию по телефону, через E-mail и посредством обычной почты.
Главное направление дальнейшего развития программы “Расписание” – создание открытой комплексной информационной системы автоматизации управления школой. Программа “Расписание” решает, пожалуй, одну из самых главных задач управления учебным процессом. И хотелось бы отметить, что одним из преимуществ будущей информационной системы станет ее открытость.
В первую очередь мы подразумеваем под этим возможность простой интеграции нашей системы с другими программами. Дело в том, что во многих школах уже работают различные системы автоматизации документооборота, бухгалтерии, базы данных по кадрам, поэтому вопрос простой интеграции с этими программами мы считаем первоочередным.

КОРОТКО ОБ АВТОРЕ: Капустин Евгений Валерьевич – руководитель проекта “Расписание-Школа” компании “ЛИнТех”. E-mail: timetabler@lintech.ru http://www.lintech.ru Тел.: (095) 361-95-92, 361-95-87 Факс: (095) 273-50-04