Дипломная работа: Разработка серверной части системы для лингвистических исследований

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Рисунок 2.1 -Диаграмма сущностей базы данных этапа проектирования

С помощью SpringData [18] планируется создать интерфейсы репозиториев, после чего фреймворк сам сгенерирует реализацию. При сохранении в базу данных каждому классу присваивается уникальный идентификатор id, которое является строкой (требование MongoDB) и используется базой данных для корректного функционирования. Далее приведено описание каждого из классов (см. таблица 2.1):

Таблица 2.1 - Описание классов проектируемого приложения

Класс

Атрибуты

Связи

Описание

User

Login: строка Password: шифр. строка

Corpus

При регистрации пользователя создается запись о нем.

Corpus

Name: строка

User Document Text Statistics

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

Document

Name: строка

Corpus Text

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

Text

Document TextNode

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

TextNode

Text: строка

Text

Текстовый узел, может иметь или не иметь аннотации.

Annotation

Name: строка

Type: строка

StartNode: целое

EndNode: целое

TextNode Statistics

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

Statistics

Count: целое

Corpus Annotation

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

Классы Corpus, Document, Text, Annotationявляются главными классами внутри портала. Именно за счет них будет выполняться анализ академических текстов. Содержимое загружаемых документов будет храниться на сервере, так как MongoDB позволяет хранить довольно большие документы в записях.

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

Для слоя контроллеров предусмотрено разделение по области ответственности: так, CorpusController будет ответственен за операции над корпусами, UserController - за операции над пользователями и т.д. То же касается и сервисного слоя. Диаграмма классов для реализуемого паттерна MVC представлена ниже (см. рисунок 2.2).

Рисунок 2.2 - Диаграмма классов паттерна MVC

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

Слой контроллеров содержит пять классов контроллеров: для корпусов, документов, отображения статистики, текста и пользователей. Подробно каждый класс описан в таблице ниже (см. таблица 2.2). Для краткости и удобности отображения данных в таблице суффикс «Controller», а также суффиксы методов создания, чтения и т. д. будут опущены.

Таблица 2.2 - Описание классов слоя контроллеров

Класс

Метод

Действия

Corpus

create

Обрабатывает запрос на создание корпуса, обращается к соответствующему методу сервиса корпусов.

read

Обрабатывает запрос на чтение списка корпусов, возможно указание критерия выборки, например, вместимости страницы и номера.

delete

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

Document

create

Переадресует запрос на создание корпуса в сервис корпусов, так как он содержит корпус, выбранный пользователем на данный момент.

read

Запрашивает у сервиса корпусов все документы, входящие в корпус, возможно задание критериев выборки.

delete

Вызывает у сервиса корпусов метод на удаление документов из коллекции данного корпуса.

Statistics

read

Запрашивает статистику по текущему корпусу. в статистику будет входить информация о встречаемости того или иного маркера в тексте, и прочая информация.

Text

read

Передает запрос о чтении текста в сервис документов, который хранит открытый на данный момент документ.

User

register

Обрабатывает запрос на регистрацию пользователя.

login

Обрабатывает авторизацию пользователя.

В сервисном слое было выделено пять классов сервисов: сервис корпусов, документов, текста, пользователей, а также отдельный сервис для работы с библиотекой GATE Embedded. Описания сервисных классов представлены в таблице ниже (см. таблица 2.3). Для краткости суффиксы были опущены, как и в предыдущей таблице.

Таблица 2.3 - Описания классов сервисного слоя

Класс

Метод

Действия

Corpus

create

Создает и сохраняет в БД пустой корпус.

read

Считывает из БД корпус.

delete

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

createAndAddDocuments

Создает новые документы, обращаясь в сервис документов, и прикрепляет их к текущему корпусу.

readDocuments

Считывает список документов, прикрепленных к корпусу.

removeDocuments

Открепляет документы от корпуса и удаляет их из БД.

getStatistics

Возвращает статистику по корпусу.

Document

create

Создает и сохраняет в БД новый документ, обращаясь в сервис текста для сохранения аннотированного текста.

read

Считывает документ из БД.

delete

Удаляет документ из БД, удаляет текст, но не открепляет его от корпуса. Именно поэтому напрямую из контроллеров не вызывается.

readText

Считывает текст, обращаясь к сервису текста.

Text

create

Создает текст, обращаясь в сервис GATE.

read

Считывает аннотированный текст.

delete

Удаляет текст, но не открепляет его от документа.

Gate

processWithGate

Обрабатывает текст с помощью библиотеки GATEEmbedded. Вызывается из сервиса текста.

User

register

Регистрирует пользователя и сохраняет данные в БД.

login

Авторизует пользователя в системе.

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

Для работы с GATE Embedded используется интерфейс Corpus Controller, к которому можно присоединить корпус документов, а далее обработать их. Обработка происходит с помощью ранее написанной программы-конвейера. Такую программу планируется написать в GATE Developer, после чего она будет использована на портале.

Для клиентской части планируется разработать четыре представления: представление начальной страницы, корпусов, документов и статистики. Каждое из представлений будет иметь элементы управления, при активации которых будут посылаться запросы на контроллеры серверной части (см. рисунок 2.3).

Рисунок 2.3 - Диаграмма классов для клиентской части

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

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

В представлении документов будут представлены инструменты для работы с доступными документами корпуса. Здесь также можно будет просмотреть аннотированный текст документа.

Представление статистики будет открыто только для администраторов, и здесь можно будет увидеть статистику по заданному корпусу. Для сторонних сервисов будет разработано API, которое не нуждается в пользовательском интерфейсе.

После проектирования классов приложения проектируется его интерфейс. Было принято решение проектировать интерфейс в Microsoft Visio. Во время этапа реализации портала для разработки клиентской части будут использоваться следующие технологии:

1. HTML для разметки веб-страницы.

2. CSS для создания стилей страницы.

3. JavaScriptдля создания динамического контента.

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

Предполагается, что для просмотра таких страниц, как, например, для просмотра корпусов или же документов, пользователь должен авторизоваться в систему. Поэтому первой разработанной страницей стала страница регистрации пользователя (см. рисунок 2.4).

Рисунок 2.4 - Страница регистрации пользователя

Для регистрации пользователь вводит свои данные: это полное имя, электронную почту, пароль и, далее, подтверждение пароля. Если все поля заполнены корректно, система зарегистрирует пользователя по нажатии кнопки регистрации. После регистрации пользователь сможет просматривать документы, интерфейс данной страницы представлен далее (см. рисунок 2.5).

Рисунок 2.5 - Страница работы с документами

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

Рисунок 2.6 - Страница добавления документа

Для добавления документа были добавлены следующие элементы управления: название документа, расположение файла (будет возможен ввод с помощью файлового диалога, примерно такого, как указано на изображении), автор документа, а также выпадающий список корпусов, куда этот текст будет добавлен. По нажатии кнопки создания документ будет добавляться в базу. Для работы с документов создан интерфейс с тестовой разметкой (см. рисунок 2.7).

Рисунок 2.7 - Страница с тестовой разметкой

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

Рисунок 2.8 -Боковое меню

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

Архитектура системы

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