В настоящее время используется много самых разнообразных программных систем поддержки обучения. Среди них отдельно следует выделить системы управления обучением, которые предоставляют широкий набор инструментов для публикации теоретического материала, тестирования обучаемых, а также автоматизируют администрирование и сопровождение процесса обучения. Однако существенного влияния на повышение эффективности образовательного процесса эти системы не оказывают, так как в них отсутствует функциональность, обеспечивающая поддержку формирования таких базовых навыков, как решение задач, являющихся наиболее значимой основой подготовки специалистов в различных прикладных областях.
В то же время большинство используемых на практике видов проверки приобретенных навыков отнимают у преподавателя много времени, поскольку они до сих пор даже частично не автоматизированы. Попытки провести автоматизацию сталкиваются со сложностью разработки таких инструментов, требующих индивидуального подхода к проектированию не только по каждой дисциплине, но и по ее отдельным разделам. Зависимость от предметной области приводит к тому, что фактически приходится расширять систему всякий раз при добавлении в нее новой дисциплины. Именно поэтому существующие программные системы поддержки в решении задач малочисленны, разрозненны, узко специализированы и отделены от систем управления обучением. Объединение в общую образовательную среду инструментальной поддержки по различным дисциплинам требует выработки новых подходов к разработке ПО, включающего совокупность основных функций, реализуемых системами предшествующих поколений, и функций, реализующих поддержку в решении задач. Так как последние могут быть реализованы как предметно-ориентированные компоненты, учитывая необходимость единой централизованной стратегии управления системой в целом и децентрализованный характер оказания поддержки в обучении решению задач, интеграция существующих и разрабатываемых средств становится насущной необходимостью.
Для решения этих проблем предложена новая архитектура инструментальной среды (рис. 1). Она основана на разделении функциональности, определяющей функции, реализованные в существующих системах управления обучением, и функции, которые необходимо реализовать для поддержки обучения в решении задач [1]. Система управления обучением обладает традиционными функциями, присущими всем системам этого вида, а также содержит описание доступных в данном программном инструментарии сервисов, реализующих проблемно-ориентированные компоненты.
Инструментальная поддержка в решении задач включает блок управления и проблемно-ориентированные компоненты. Блок управления не зависит от предметной области и координирует взаимодействие всех подсистем инструментальной поддержки. Проблемно-ориентированные компоненты включают коллекцию тематических редакторов и набор компонентов, реализующих механизм анализа корректности представленных решений. Тематические редакторы обеспечивают взаимодействие пользователя с компьютером на языке, близком к предметной области. Для этого необходимы инструменты, позволяющие представлять решения задач в виде, понятном и пользователю, и компьютеру и пригодном для дальнейшей автоматической обработки, что требует дополнительного исследования и формализации предметной области и, соответственно, накладывает ограничение на дисциплины, по которым представляется возможным поддержка в обучении решению задач.
С другой стороны, при интеграции систем возникает множество проблем, так как порождаемая система становится более сложной, требующей согласования разнородных данных, единства взглядов разработчиков, реализующих предметно-ориентированные компоненты системы, на принципы их разработки, отладки, развертывания и функционирования. Серьезную проблему представляет распределение нагрузки, которая ложится на систему.
Рассмотрим конкретный пример интеграции средств обучения решению задач в систему поддержки обучения. Одной из дисциплин с достаточной формализацией предметной области является программирование. На олимпиадах по программированию широко используются системы, проверяющие корректность решаемых участниками задач в автоматическом режиме. Поэтому для реализации предложенных подходов была проведена интеграция системы управления обучением Moodle и системы проведения соревнований по программированию Ejudge, которая используется в проекте «Московские олимпиады по программированию», где доказала свою надежность и эффективность. Система поддерживает несколько языков программирования и компиляторов, имеет большое количество настроек, гибкий механизм управления учетными записями пользователей. Она не только проверяет корректность решения, но и обеспечивает защиту от потенциально опасных действий со стороны тестируемых программ: ограничение процессорного времени, контроль размеров адресного пространства процесса и стека процесса. Недостатком системы является сложность ее развертывания. Критериями выбора данных систем послужила возможность их работы под управлением операционной системы Linux, использование БД MySQL, наличие интерфейса, позволяющего интегрировать системы с внешним ПО, распространение под лицензией GNUGPL. На рисунке 2 представлена структурная схема системы поддержки курса программирования. Система выполнена по клиент-серверной технологии, поскольку является частью системы Moodle. Подсистема интеграции предназначена для организации взаимодействия между системами Ejudge и Moodle. Она устанавливает связи между сущностями, имеющимися в этих системах, осуществляет конфигурирование и управление системой Ejudge. Информация в системе хранится в общей БД и организована в виде таблиц.
Проект развернут в тестовом режиме на сервере во внутренней сети Сибирского федерального университета (г. Красноярск). Преимущество этого решения в том, что интегрированы отлаженные системы, позволившие увеличить функциональность обучающей системы на базе единой образовательной среды.
Но не всегда существует готовое решение, часто возникает необходимость в разработке самостоятельных приложений для каждой предметной области. Например, были разработаны инструментальные средства поддержки обучения основам алгоритмизации с применением блок-схем и элементарной химии (построение молекул из атомов) [2]. Для представления решений по этим дисциплинам разработаны графические редакторы, имеющие соответствующие библиотеки инструментов, которые позволяют построить блок-схемы алгоритмов и молекул, производящие первичную обработку полученных графических схем в промежуточное представление, пригодное для механизма проверки корректности. Проверка корректности решения осуществляется путем интерпретации промежуточного представления.
Поиск способа унификации этих приложений приводит к реализации систем как набора динамически взаимодействующих приложений, построенных на сервисной ориентации [3]. Унификация программных интерфейсов проблемно-ориентированных компонент обеспечит единую схему взаимодействия сервисов, упростит их разработку и более гибкие механизмы адаптации системы к вновь появляющимся задачам, позволит разнести в пространстве источники информации, необходимые для обучения.
Предлагаемые подходы к построению систем поддержки обучения решению задач позволяют интегрировать информационные ресурсы, отве- чают современным тенденциям развития информационных обучающих систем, обеспечивают эволюцию функций систем.
Литература
1. Балашов Е.П. Эволюционный синтез систем. М.: Радио и связь, 1985. 328 с.
2. Редькина А.В. Обучение синтезу алгоритмов // Вестн. СибГАУ. 2008. № 1 (18). С. 30–34.
3. Карпов Л.Е. Архитектура распределенных систем программного обеспечения. М.: МАКС Пресс, МГУ, ВМК, 2007. 132 с.