Опыт создания приложений независимыми разработчиками позволил собрать коллекцию шаблонов проектирования (Design Patterns) - методов и технологий решения стандартных задач, встречающихся при проектировании и разработке сложных программных комплексов. Рассматриваются способы реализации известных шаблонов проектирования с помощью технологий Java 2 Enterprise Edition (J2EE) и Enterprise Java Beans (EJB).
Классические шаблоны делятся на три основные группы:
порождающие шаблоны;
структурные шаблоны;
шаблоны поведения.
Порождающие шаблоны проектирования используются в процессе создания экземпляров объектов и помогают сделать систему независимой от способа создания, композиции и представления объектов. Порождающие шаблоны используются для решения двух основных задач. Во-первых, они инкапсулируют знания о конкретных классах, которые применяются в системе. Во-вторых, скрывают детали того, как эти классы создаются и стыкуются. Единственная информация об объектах, известная системе - это их интерфейсы, определенные с помощью абстрактных классов.
Структурные шаблоны задают организацию классов и объектов приложения. Они используются при построении логической модели и помогают решить задачи структурирования, взаимосвязи и трансформации сущностей системы.
Шаблоны поведения позволяют решать такие задачи, как делегирование команд обработчикам объектов, инкапсуляция операций и параметров в служебных объектах, запоминание состояния объекта с возможностью его восстановления и другие задачи динамического поведения приложения.
В рамках многоуровневой архитектуры также выделяются презентационные технологии и шаблоны, задающие правила проектирования презентационного уровня приложения.
Шаблоны проектирования применены в работе для решения ряда практических задач.
1. Модель организации и передачи данных приложения. При решении задачи рассмотрены следующие шаблоны:
Технология «Объект доступа к данным» (Data Access Object) - служит переходником между кодом приложения и базой данных, абстрагирует бизнес-сущности системы и проектирует их на модель данных, выполняет все прямые запросы к БД.
Метод переносимого объекта (Transfer Object) - служит инструментом для переноса сложных объектов, организации пакетного обмена данными между клиентом и сервером, оптимизации нагрузки на сеть.
Метод общего доступа к атрибутам (Generic Attributes Access) - альтернативный вариант реализации переноса данных, использующий в качестве передаваемого объекта структуру HashMap.
Метод абстрактной фабрики - служит для создания семейств объектов и инкапсуляции их общих свойств, существенно упрощает задачу добавления новых типов сущностей.
Модель реализована на основе шаблона Объект доступа к данным. Шаблон модифицирован путем введения дополнительных объектов, обеспечивающих абстрагирования типов данных от СУБД. Применен дополнительный сложный идентификатор, обеспечивающий возможность использования всеми классами-моделями единственного компонента EJB. При порождении моделей используется метод абстрактной фабрики. Перенос данных реализован методом общего доступа к атрибутам.
2. Автоматизация выполнения операций. Реализована на основе шаблона проектирования Команда.
Шаблон «Команда» - служит для создания операций, независимых от конкретного исполнителя.
Все действия системы инкапсулируются в классах-операциях. Дополнительно использованы сессионные компоненты EJB. Результат применен для реализации модели безопасности на основе доступа разрешений пользователей на выполнение операций.
3. Разработка логики презентации информации.
Технология «Модель-Презентация-Контролер» (Model View Controller) - служит для абстрагирования логики презентации бизнес-объектов от технологии презентации на стороне клиента.
Реализована при помощи библиотеки Maverick.
4. Презентация больших массивов данных.
Технология асинхронного представления данных - заключается в изменении содержимого загруженной веб-страницы без ее полной перезагрузки, благодаря чему достигается высокая динамичность страниц и повышается производительность системы, работающей с большими массивами данных.
Реализована с помощью модуля AJAX.
5. Модели образовательных объектов: задание и тест.
Технология реляционного хранения XML-документов - позволяет решить задачи представления объектов в виде XML и обратного преобразования XML в структуры объектов. Реализована с помощью средств JAXB.
Модель структурирования и презентации учебных курсов на основе стандарта SCORM 2004.
Технология реляционного хранения применена для преобразования между двумя представлениями модели - объектной и XML. Реализованы методы стандарта SCORM для обеспечения совместимости с другими системами.
В главе 3 детально описывается применение рассмотренных методов для построения системы дистанционного обучения Competentum.Instructor. Описывается назначение и задачи, поставленные перед системой, дается обзор платформы Competentum, на основе которой построено приложение. Предлагаются модели построения образовательных объектов в рамках системы. Приводится подробное описание системы в виде объектной структуры сущностей (логическая модель).
В системе используются такие основные образовательные сущности, как задание и тест. Под заданием понимается вопрос или задача, которую может решить учащийся. На Рис. 1 приведена диаграмма классов UML, иллюстрирующая объектную структуру модели задания.
Предусмотрены задания разных типов. Каждый тип реализован отдельным классом, каждый из которых наследуется от класса Абстрактное Задание (AbstarctQuestion), реализующего функциональность, общую для заданий всех типов. При ответе на вопрос создаются объекты Ответ (Answer) и Оценка (Grade), в результате проверки ответа системой.
Рис. 1. Объектная структура задания
Учебные объекты трансформируются и сохраняются в виде формальной модели XML. Они могут быть экспортированы для повторного использования в других системах.
Тестом в рамках системы называется совокупность заданий, предлагаемых учащимся для решения. Этот объект создается на основе шаблона, определяющего совокупность правил, используемых при выборе заданий для теста.
На Рис. 2 приведены объекты, участвующие в реализации процессов назначения и прохождения теста.
Рис. 2. Объекты, задействованные в процессе тестирования
Уровень доступа к данным можно разделить на две области: область определений, в которой находятся статические объекты-определения системы, и область экземпляров. В области экземпляров существуют объекты, которые участвуют в динамических процессах системы. Как правило, такие объекты создаются на основе соответствующих сущностей из области определения (инстанцируются).
Шаблон теста создается в виде объекта-определения TestDefinition. Шаблон теста не содержит конкретных вопросов, а содержит Слоты для них (Slot). При вызове операции Назначить тест (AssignTest) на основе шаблона создается Экземпляр теста (TestAssignment), который уже однозначно связан с конкретным набором Заданий (Question). В качестве второго параметра операция Назначить тест использует Учащегося. При вызове операции Пройти тест (TakeTest) запускается процедура тестирования. Таким образом, области определения хранится статический шаблон теста, задающий общие характеристики объекта. А на его основе создается множество индивидуальных экземпляров, однозначно связанных с конкретным учащимся.
Глава 4 посвящена динамическому поведению системы. Приводится подробное описание приложения в виде динамической модели. Подробно рассматриваются основные процессы системы, исследуются правила поведения и взаимодействия объектов во время выполнения приложения.
Центральным процессом системы Competentum.Instructor является тестирование учащихся, в рамках которого происходит создание шаблона теста, назначение теста учащемуся, прохождение теста и оценка ответов. Процесс создания шаблона и назначения теста учащемуся показан на Рис. 3.
Рис. 3. Создание шаблона и назначение теста учащемуся
На Рис. 4 показан процесс прохождения теста. Показаны принципы взаимодействия объектов при выполнении операции Пройти тест (ActionTakeTest). При этом инициируемый экземпляр теста (TestAssignment) вызывает и возвращает список вопросов учащемуся. Учащийся последовательно отвечает на вопросы, отсылая данные модели экземпляра задания (Question). В процессе ответа создаются объекты, обрабатывающие и сохраняющие ответ на задание и оценку.
Рис. 4. Прохождение теста
В главе 5 предложена физическая модель, определяющая размещение компонентов на аппаратной структуре. Описаны используемые технологии и реализация приложения. Приводятся примеры практического использования системы.
Предложена реализация приложения на базе многоуровневой клиент-серверной архитектуры в модели «тонкого клиента». Серверная часть системы реализована по трехуровневой схеме, т.е. слой данных отделен от уровней логики и презентации данных.
Уровень представления со стороны клиента реализован простым веб-интерфейсом, просматриваемым в обычном Интернет-браузере. Серверный уровень представления использует технологии JSP и JavaServlet. При создании JSP страниц применяется библиотека тегов JSTL. Уровень представления реализован с помощью технологии Модель-Представление-Контролер, в котором центральное место занимает сервлет-диспетчер. В качестве каркасной технологии, использованной в веб-контейнере, выступает библиотека Maverick. Эта библиотека значительно проще, чем Struts, занимает меньший объем, имеет простую концепцию и позволяет достаточно гибко расширять свой язык метаописания.
Уровни бизнес-логики и сущностей системы размещены в EJB-контейнере сервера приложений. Бизнес-логика реализует шаблон проектирования Команда с помощью сессионных компонентов EJB - Менеджер и Сессия. Основные действия системы представлены в виде классов-операций.
Сущности системы представлены в виде классов-моделей, персистентность которых реализована с помощью компонента EJB База. Модель доступа к данным реализует шаблоны проектирования Объект доступа к данным, Общий доступ к атрибутам и Абстрактная фабрика. Все модели могут использовать единственный компонент EJB, благодаря реализации сложного идентификатора. База данных независима от приложения и может быть вынесена на отдельный сервер. Физическая модель размещения компонентов системы представлена на Рис. 5.
Рис. 5. Аппаратная структура системы
В конце главы приведены примеры практического применения разработанных моделей и технологий в системе дистанционного обучения Competentum.Instructor, которая используется в ряде российских организаций. Описаны внедрения с использованием различных аппаратных платформ и технологий в организациях:
1. Mp.Доорз Хоум Декор Инк
2. ООО Физикон
3. Международный институт менеджмента ЛИНК
В заключении приведены основные результаты диссертационной работы. В приложении представлена XML-схема экземпляра теста.
Основные результаты диссертации:
Исследован и применен способ описания трехуровневой клиент-серверной программной архитектуры системы управления обучением с помощью средств UML. Разработана спецификация архитектуры системы дистанционного обучения в виде: логической объектной структуры, динамических правил выполнения процессов и аппаратной реализации.
На основе шаблонов проектирования и их комбинаций исследованы и решены задачи разработки программных комплексов для:
построения модели доступа к данным и передачи данных;
автоматизации выполнения операций;
абстрагирования логики представления информации от технической платформы;
динамического асинхронного представления больших массивов данных.
Разработаны модификации существующих шаблонов проектирования, основанные на:
использовании сложного идентификатора и дополнительных объектов для абстрагирования типов в модели доступа к данным;
использовании сессионных компонентов в шаблоне Команда;
использовании сервлета для обработки входных данных в методе Модель-Представление-Контролер.
Набор предложенных шаблонов проектирования реализован при помощи технологий J2EE/EJB.
Разработана объектная структура таких образовательных сущностей, как задание и тест, а также формальная XML-модель их представления, транслируемая в соответствии с общепринятым стандартом SCORM.
Предложена технология организации тестирования учащихся, основанная на использовании шаблонов тестов. Разработана модель шаблона теста, реализующая совокупность правил, используемых для выбора заданий из базы данных и для генерации теста.
Сформированы предложения по технической (аппаратной) реализации архитектуры системы дистанционного обучения.
Предложенные методы и модели использованы при разработке системы дистанционного обучения Competentum.Instructor.
Публикации
1. Я.С. Егоров. Анализ средств описания архитектур сложных программных комплексов // Современные проблемы фундаментальных и прикладных наук. Часть VII. Прикладная математика и экономика: Труды XLVIII научной конференции/Моск. физ.-тех. ин-т. - М., 2005. - С. 80-81.