Studentpmr.ru



Приднестровский государственный университет им. Т.Г. Шевченко | |

|Инженерно-технический институт |

|Инженерно-технический факультет |

|Кафедра программного обеспечения вычислительной техники |

|и автоматизированных систем |

| | | | | | | | | | |

| | | | | | |Допустить к защите |

| | | | | | |зав. кафедрой ПОВТиАС, |

| | | | | | |к.т.н., доцент |

| | | | | | | | |С.Г. Федорченко |

| | | | | | |« ____» _______________ 2015 г. |

| | | | | | | | | | |

| | | | | | | | | | |

| | | | | | | | | | |

| | | | | | | | | | |

| | | | | | | | | | |

| | | | | | | | | | |

| | | | | | | | | | |

|ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА |

|на соискание академической степени |

|бакалавра |

|по направлению 09.03.04 «Программная инженерия» |

| | | | | | | | | | |

| |

|тема: «РАЗРАБОТКА ПРОГРАММНОГО |

|ОБЕСПЕЧЕНИЯ ДЛЯ ОПЕРАТИВНОГО |

|ДОСТУПА К СОДЕРЖИМОМУ |

|РЕЕСТРОВ» |

| | | | | | | | | | |

|Расчетно-пояснительная записка |

| | | | | | | | | | |

| | | | | | | | | | |

| | | | | | | | | | |

| | | | | | | | | | |

| | | | | | | | | | |

| | | | | | | | | | |

| |Студент | | | | | |

| |группы ИТ11ДР62ПИ1 | | | | |

| | | | | | | | | | |

| | | | | | | | | | |

| |Научный руководитель, | | | |Башкатов |

| |к.т.н., доцент | | | |Александр Майорович |

| | | | | | | | | | |

| | | | | | | | | | |

| | | | | | |

| | | | | | |

| | | | | | | | |

| | | | | | | | | | |

|Тирасполь, 2015 |

Приднестровский государственный университет им. Т.Г. Шевченко

Инженерно-технический институт

Инженерно-технический факультет

Кафедра программного обеспечения вычислительной техники

и автоматизированных систем

Утверждаю

зав. кафедрой ПОВТиАС,

к.т.н., доцент

С.Г. Федорченко

«____» _____________ 2015 г.

ЗАДАНИЕ

НА ВЫПУСКНУЮ КВАЛИФИКАЦИОННУЮ РАБОТУ БАКАЛАВРА

Студенту Петровичу

Тема ВКР: «Разработка программного обеспечения для оперативного доступа к содержимому реестров»

утверждена приказом по университету № 881-ОД от «09» июня 2015 г.

Срок сдачи расчетно-пояснительной записки на кафедру «25» июня 2015 г.

Исходные данные к работе: пример структуры реестра, конфигурация серверного программно-аппаратного обеспечения.

Перечень подлежащих разработке вопросов: веб-интерфейс с доступом только для чтения к базам данных IBM Domino по заранее фиксированным выборкам и, полнотекстовому поиску, отображение данных в табличном виде.

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

Дата выдачи задания «11» мая 2015 г

Научный руководитель, доцент, к.т.н. _____________/Башкатов А.М./

Задание принял к исполнению _____________/ П./

АННОТАЦИЯ

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

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

ABSTRACT

Web application in given graduated work for instant read only access to documents from State registries was developed.

The purpose of the work was to create single point of access to different databases with support a variety of devices, capable to run developed web application. Both full text search for documents and predefined data sets available. Browser built-in print functionality is used.

СОДЕРЖАНИЕ

ВВЕДЕНИЕ 5

1 ИССЛЕДОВАНИЕ И АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ 6

1.1 Описание поставленной задачи, ее обоснование 6

1.2 Обоснование актуальности исследуемой задачи 7

1.3 Современное состояние исследуемой задачи 10

1.4 Обзор методов решения подобных задач 12

1.5 Системные требования, требования к входным и выходным данным 15

2 ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО ПРОДУКТА 17

2.1 Выбор методов и средств для реализации, его обоснование 17

2.2 Описание применяемых алгоритмов 21

2.3 Структура, архитектура программного продукта 24

2.4 Описание логической структуры программного продукта 26

2.5 Функциональная схема, функциональное назначение

программного продукта 27

3 РЕАЛИЗАЦИЯ И ТЕСТИРОВАНИЕ ПРОГРАММНОГО ПРОДУКТА 29

3.1 Описание реализации 29

3.2 Описание пользовательского интерфейса 33

3.3 Методы и средства защиты программного продукта 36

3.4 Тестирование и оценка надежности программного продукта 37

3.5 Расчет себестоимости 38

3.6 Охрана труда 44

ЗАКЛЮЧЕНИЕ 50

ПЕРЕЧЕНЬ УСЛОВНЫХ ОБОЗНАЧЕНИЙ, СИМВОЛОВ, ЕДИНИЦ

И ТЕРМИНОВ 51

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 52

ПРИЛОЖЕНИЕ 54

ВВЕДЕНИЕ

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

Одним из способов достижения высокой доступности, является использование открытых технологий, которые поддерживают множество программно-аппаратных платформ и позволяют оперативно добавлять поддержку новых.

Широко распространенным открытым стандартом является язык гипертекстовой разметки (от англ. HyperText Markup Language – HTML). Совместно с рядом вспомогательных технологий, данный стандарт позволяет создавать приложения, которые доступны на настольном компьютере, планшетном компьютере, мобильном телефоне, и на многих других устройствах.

Многие современные системы автоматизации документооборота и совместной работы уже имеют встроенные компоненты, поддерживающие данный стандарт (Docsvision, OnlyOffice, Е1 Евфрат).

В данной работе рассматривается реализация такого компонента для системы, работающей на программном обеспечение IBM Domino.

1 ИССЛЕДОВАНИЕ И АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ

1.1 Описание поставленной задачи, ее обоснование

Основанием для разработки данной информационной системы является потребность заказчика в реализации визуального интерфейса доступа к базам данных IBM Notes.

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

В первую очередь должна быть предусмотрена защита от несанкционированного доступа. Доступ к документам реестров необходим предоставлять после аутентификации, при помощи индивидуальных пар логин-пароль. Необходимо использовать стандартные учетные записи IBM Domino для разделения доступа [9]. В руководстве пользователя необходимо рассмотреть конфигурацию системы для работы по защищенным протоколам.

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

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

Печать документов осуществляется средствами веб-браузера. В виде для печати не должны отображаться элементы управления и навигации.

При разработке программного обеспечения следует ориентироваться на следующие конфигурации аппаратного обеспечения:

Конфигурация сервера баз данных:

– четырех-ядерный процессор Intel Xeon;

– 8 Гб оперативной памяти;

– 1 Тб жесткий диск;

– Операционная система Windows Server 2008 или более новая.

Типовая конфигурация рабочей станции:

– двухъядерный процессор Intel Core i3;

– 4 Гб оперативной памяти;

– 500 Гб жесткий диск;

– Операционная система Windows 7 или более новая.

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

Типовая конфигурация рабочей станции приведена в качестве ориентира для оптимизации работы разрабатываемого ПО.

1.2 Обоснование актуальности исследуемой задачи

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

По приблизительным данным, полученным от заказчика, за последние несколько лет количество документов превысило 10 000. Примерный рост объема документооборота в реестрах представлен на рисунке 1.1. При этом, часто важно обеспечить оперативный доступ к документам в ущерб доступных операций над документами.

[pic]

Рисунок 1.1 – Рост количества документов в реестрах

Основным способом доступа к документам реестра является использование стандартного клиента IBM Notes. Это приложение (рисунок 1.2) предоставляет широкий набор возможных действий с документами и базами данных.

[pic]

Рисунок 1.2 – Интерфейс клиента IBM Notes

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

Существующий веб-интерфейс одной из баз данных реестра представлен на рисунке 1.3 (веб-интерфейс открыт в встроенном веб-браузере IBM Notes, список документов скрыт под прямоугольником).

[pic]

Рисунок 1.3 – Существующий интерфейс одной из баз данных реестра

Этот интерфейс реализован при помощи встроенного конструктора веб-страниц IBM Domino Designer, имеет запутанную навигацию (список ссылок на панели слева) и различные интерфейсные ошибки и ограничения (ограничения обусловлены реализацией конструктора в ПО, часть функций работает только в встроенном веб-браузере IBM Notes). Одной из ошибок является дублирование левой панели каждый раз при клике на кнопку «Выход».

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

Основное применение этого интерфейса – тонкая настройка отображения базы данных в веб-браузере клиента IBM Notes. Использование в браузерах Интернета затруднительно, в связи с ограничениями функциональности.

Разрабатываемое программное обеспечение не является заменой приложения IBM Notes, а работает параллельно, предоставляя возможность оперативного доступа к данным, поиск и быструю печать документов.

Выбранный формат реализации в виде веб-приложения не требует предварительной установки на устройство пользователя, и позволяет расширять список поддерживаемых аппаратно-программных платформ без обновления ПО сервера IBM Domino или изменения объектов баз данных.

Единая точка входа для различных серверов позволит оперативно переключаться между разными базами данных. Добавление промежуточного сервера позволит в будущем (если появится необходимость) добавить алгоритм автоматической балансировки нагрузки между репликами IBM Domino [15].

1.3 Современное состояние исследуемой задачи

В состав пакета программ платформы IBM Domino [6] входят:

– сервер IBM Domino;

– IBM Domino Administrator;

– IBM Domino Console;

– IBM Domino Designer;

– клиент IBM Notes.

Сервер IBM Domino реализует функции хранения и изменения баз данных. Различают секционированные (англ. partitioned) и не секционированные сервера. Секционирование позволяет запускать на одном физическом сервере, несколько экземпляров IBM Domino на разных сетевых портах. Это применяется, когда необходимо иметь несколько различных конфигураций.

Управление серверами осуществляется при помощи IBM Domino Console либо через графический интерфейс IBM Domino Administrator.

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

В графическом интерфейсе (рисунок 1.4) можно управлять состоянием и конфигурацией сервера, учетными записями и доступом к объектам внутри баз данных IBM Domino.

[pic]

Рисунок 1.4 – Диалог управления доступом к базе данных в IBM Domino Administator

Для проектирования и изменения структуры данных и форм применяется программное обеспечение IBM Domino Designer.

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

Программное обеспечение IBM Domino Designer используется в качестве интегрированной среды разработки для всех пользовательских подпрограмм для баз данных. IBM Domino.

В данном программном пакете можно разрабатывать агенты, реагирующие на различные события в базе данных, фреймы и веб-страницы XPages. Технология XPages является развитием уже существующего механизма реализации веб-страниц на фреймах и при помощи специальных синтаксических конструкций на языке разметки XML (англ. eXtensible Markup Language). Документы в базе данных представлены как подключаемые ресурсы.

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

[pic]

Рисунок 1.5 – Интерфейс IBM Domino Designer

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

1.4 Обзор методов решения подобных задач

Платформа IBM Domino предоставляет большое число методов организации доступа к базам данных через веб-интерфейс. Один из них уже был рассмотрен в предыдущем подразделе.

Технология XPages [14] является эволюционным развитием идеи конструктора, и использует прогрессивный (на момент выхода первых версий, примерно в середине 2000-х годов) формат разметки, основанный на расширяемом языке разметки (англ. eXtensible Markup Language – XML).

Приложения, разработанные на XPages являются кроссплатформенными и используют такие стандарты и библиотеки как JavaScript, Java, Dojo Toolkit.

Возможности веб-приложений, написанных с применением технологии XPages, могут быть расширены при помощи стандартного набора прикладных интерфейсов Java Server Faces и языка программирования Java.

Объекты баз данных представляются как ресурсы, и подключаются к страницам при помощи особых синтаксических конструкций (рисунок 1.6).

[pic]

Рисунок 1.6 – Интегрированная среда разработки XPages

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

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

Для языков программирования C и Java, платформа IBM Domino поддерживает локальное подключение через клиента IBM Notes, и удаленное подключение с использованием общей архитектуры брокеров (англ. Common Object Request Broker Architecture – CORBA).

Удаленное подключение выполняется в несколько этапов (рисунок 1.7). При первом подключении, с сервера по протоколу HTTP запрашивается строка с данными для подключения (в документации определена как IOR).

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

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

[pic]

Рисунок 1.7 – Удаленное подключение с использованием архитектуры брокеров

Локальное и удаленное подключения используют похожий прикладной интерфейс, который не предоставляет информации о форме, в которой был создан тот или иной документ. Поэтому этот прикладной интерфейс не подходит для реализации ПО данной ВКР.

Начиная с IBM Domino 8.5.3 был добавлен прикладной интерфейс Domino Data Services [11]. Это интерфейс доступа к объектам баз данных серверов IBM Domino по сети, с применением принципов передачи состояния представления (англ. Representational State Transfer – REST).

Domino Data Services предоставляет следующие возможности:

– получение списка доступных баз данных;

– получение списка представлений в базе данных;

– полнотекстовый поиск документов в базе данных;

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

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

– получение содержимого документа;

– получение прикрепленных к документу файлов;

– изменение документов;

– удаление документов, представлений.

Для получения данных подходит любой язык программирования с возможностью отправки запросов по протоколу передачи гипертекста HTTP. Данные закодированы в формат JSON (от англ. JavaScript Object Notification).

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

1.5 Системные требования, требования к входным и выходным данным

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

При необходимости соединения различных географически удаленных сетей (или отдельных пользователей) по общедоступным каналам связи необходимо настроить логическое соединение между этими точками с шифрованием всех передаваемых данных [19].

Пример возможной организации сети организации представлен на рисунке 1.8. Компьютеры в сети соединены при помощи коммутатора. Доменный сервер, сервер баз данных IBM Domino и веб-сервер (реализуемый в рамках данной работы) расположены на одном физическом сервере.

[pic]

Рисунок 1.8 – Обобщенная сетевая конфигурация

На сервере баз данных должен быть настроен сервер IBM Domino версии 9.0 или более современный.

Входными данными являются файлы баз данных IBM Notes (*.nsf) и шаблоны данных IBM Notes (*.nst). Работа с базами данных осуществляется при помощи прикладных интерфейсов сервера IBM Domino.

Структура баз данных заранее не определена, и может изменятся с течением времени. Подмножество поддерживаемых возможностей платформы ограничено. Для корректной работы разработанного ПО, неподдерживаемые возможности должны быть исключены из представлений, к которым включен доступ через Domino Data Services [11].

Веб-сервер поддерживает 32 и 64-разрядные операционные системы семейства Windows. Поддержка Linux и MacOS X требует незначительных доработок и тестирования (исполняемые файлы для данных платформ в рамках ВКР не предоставляются).

Для работы с веб-приложением рекомендуется использование одного из основных (Internet Explorer начиная с версии 10, Google Chrome и Mozilla Firefox) веб-браузеров последней или предпоследней версии. Работа в устаревших браузерах не гарантируется.

Предполагается полноценная работа веб-приложения на следующих операционных системах: Windows (начиная с версии 7), Linux, Android (начиная с версии 4.1), iOS (начиная с версии 6) при наличии установленного веб-браузера.

Работа в операционных системах отличных от настольной Windows подлежит тестированию в отдельном порядке для каждого устройства в связи с отсутствием технической возможности гарантировать качественную работу на всевозможных моделях устройств.

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

2 ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО ПРОДУКТА

2.1 Выбор методов и средств для реализации, его обоснование

В ходе проектирования была выбрана трехзвенная модель (рисунок 2.1), с использованием промежуточного веб-сервера.

[pic]

Рисунок 2.1 – Трехзвенная архитектура предлагаемого программного продукта

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

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

Для реализации веб-сервера был выбран компилируемый статически типизированный язык программирования высокого уровня Go [1,9]. Этот язык выделяется среди остальных своей планарной объектно-ориентированной моделью, скоростью компиляции, и количеством пакетов, включенных в стандартную библиотеку языка.

Кроме классического компилятора есть компилятор на базе пакета GCC (англ GNU Compiler Collection – набор компиляторов GNU). Поддерживается взаимодействие с кодом на C (используется встроенная подпрограмма cgo) и C++ (при помощи программного пакета SWAG).

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

Кроме привычных строк, чисел (целых и вещественных), структур и интерфейсов, базовые типы включают такие типы как Слайс (англ. slice) и Канал (англ. channel). Слайсы являются высокоуровневой абстракцией над массивами. А каналы используются (рисунок 2.2) для передачи данных между различными горутинами, и являются абстракцией низкоуровневых способов синхронизации.

[pic]

Рисунок 2.2 – Использование канала для синхронизации

Горутина (англ. goroutine) является легковесным аналогом потоков. Такой подход позволяет выполнять одновременно тысячи горутин, используя небольшое число системных потоков (англ. threads).

Конкурентная модель программирования является частью языка, а не стандартной библиотеки. Так как в разрабатываемом ПО необходимо обеспечить конкурентный доступ пользователей к ресурсам различных серверов IBM Domino, поддержка этой модели явилась решающим фактором в выборе языка.

Веб-сервер является связующим звеном между различными серверами IBM Domino и веб-приложением в браузере пользователя. Для эффективной работы был реализован асинхронный конкурентный доступ к ресурсам баз данных работающий с прикладным интерфейсом Domino Data Services [11].

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

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

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

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

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

[pic]

Рисунок 2.3 – Пример изменения дерева компонентов [3]

На рисунке два раза отображено одно и то же дерево компонентов. На левом дереве выделены компоненты с измененным состоянием, а на правом – компоненты которые были перерисованы.

С целью унификации внешнего вида и ускорения разработки, в качестве спецификации внешнего вида была выбрана спецификация материального дизайна (англ. Material Design) представленная компанией Google [8].

Материальный дизайн представляет собой нечто среднее между плоским и объемным дизайном. Все элементы (листы бумаги, от англ. Paper) располагаются в двумерной проекции трехмерной плоскости. Причем оси X, Y находятся в плоскости проекции, а ось Z – перпендикулярно, и служит для создания ощущения перспективы. В отличие от классических трехмерных интерфейсов, толщина листов всегда равна единице (рисунок 2.4).

[pic]

Рисунок 2.4 – Проекция координат в материальном дизайне [8]

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

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

2.2 Описание применяемых алгоритмов

На рисунке 2.5 показан алгоритм взаимодействия браузера и веб-сервера.

[pic]

Рисунок 2.5 – Алгоритм выбора отдаваемого ресурса

Браузер отправляет на сервер запрос с указанием требуемого ресурса. Веб-сервер анализирует запрошенный URL [16] и принимает решение о выдаче статического содержимого, начальной разметки веб-приложения или результата запроса к обработчику сетевого интерфейса.

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

[pic]

Рисунок 2.6 – Заполнение основного блока интерфейса новыми данными

Минимизация способов утечки пароля является очень важной частью обеспечения безопасности веб-сервера. Если передача данных между точками может осуществляться по защищенным протоколам, еще возможно получить пароль непосредственно из ОЗУ компьютера на котором запущен веб-сервер.

На рисунке 2.7 отображена блок-схема алгоритма авторизации в систему.

[pic]

Рисунок 2.7 – Аутентификация на сервере IBM Domino

Прикладной интерфейс Domino Data Services не предоставляет название представления при запросе его схемы данных. Поэтому применяется алгоритм с временным хранением списка представлений (рисунок 2.8).

[pic]

Рисунок 2.8 – Использование временного кэша представлений

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

[pic]

Рисунок 2.9 – Алгоритм промежуточного кэширования файлов

При наличии файла в кэше веб-сервера, у которого дата добавления позже даты последнего изменения документа, повторная передача файла между IBM Domino и веб-сервером не производится.

2.3 Структура, архитектура программного продукта

Программный продукт будет состоять из двух частей: веб-сервера и веб-приложения. Веб-сервер осуществляет взаимодействие с различными серверами IBM Domino и взаимодействует с веб-приложением по сети.

При проектировании веб-сервера были выделены следующие программные модули (таблица 2.1):

Таблица 2.1 – Описание структуры веб-сервера

|Название модуля |Назначение |

|Главный модуль |Точка входа в программу. |

| |Инициализация остальных модулей. |

|Управление конфигурацией |Чтение конфигурационных файлов. |

| |Хранение текущей конфигурации. |

|Транспортный модуль |Взаимодействие с серверами IBM Domino. |

| |Оптимизация представления данных. |

|Модуль сетевого |Обеспечение прикладного интерфейса для веб-приложения. |

|взаимодействия | |

|Отладочный модуль |Ведение расширенного лога приложения |

Все модули образуют древовидный граф зависимостей, без циклов. Корнем дерева является главный модуль (рисунок 2.10).

[pic]

Рисунок 2.10 – Граф зависимостей между модулями

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

Начальная разметка отображает процесс загрузки и указывает браузеру какие ресурсы необходимо загрузить. После загрузки вызывается код инициализации приложения и выполняется построение нужного дерева компонентов.

Исходный код приложения основан на архитектуре Flux. Архитектура подразумевает однонаправленный поток данных, основанный на событиях и подписчиках, но, в отличие от архитектуры PubSub (рисунок 2.11), четко определены роли каждого объекта.

[pic]

Рисунок 2.11 – Классическая модель писатель-подпиcчик (PubSub)

События генерируются в представлениях. Подписчиками на события являются хранилища. В хранилище содержатся данные и логика работы с ними. Оно не является моделью, а хранит в себе модели данных. Хранилища существуют в единственном экземпляре, и только они знают, как оперировать с данными в приложении. Представления только работают с имеющимися.

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

2.4 Описание логической структуры программного продукта

Базы данных IBM Domino являются документ-ориентированными. Кроме документов в базе данных хранятся служебные объекты (формы, представления, формы) и ресурсы (рисунок 2.12).

[pic]

Рисунок 2.12 – Логическая структура базы данных IBM Domino

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

Документы в базе данных могут быть объединены в коллекции, именуемые представлениями (англ. view). Логически, представления являются предварительно сконфигурированными выборками, к которым можно применять сортировку и фильтрование по значению столбца.

Условие (формула) для выборки подмножества из множества всех документов задается в свойствах представления, при редактировании базы данных в программном обеспечении IBM Domino Designer.

Между документами возможны два вида связей: ответ на документ и ответ на ответ. Не все прикладные интерфейсы IBM Domino позволяют извлекать информацию о связях между документами.

Всего в документации IBM Domino [13] определено 16 основных типов полей. Данные типы перечислены в таблице 2.2.

Таблица 2.2 – Типы полей IBM Domino

|Тип поля |Описание |

|Флажок |Имеет два состояния: отмечен и не отмечен |

|(Checkbox) | |

|Цвет |Служит для выбора цвета из палитры цветов |

|Выпадающий список |Выбор элемента из списка в виде выпадающего меню |

|(ComboBox) | |

|Список в окне |Выбор элемента из списка в диалоговом окне |

|(Dialog List) | |

|Формула |Отображает результат заданных вычислений |

|Список |Отображает список элементов |

|Пароль |Редактирование скрытого под звездочками текста |

|Число |Числовой тип данных |

|Переключатель |Используется в группах для выбора чего-либо |

|(RadioButton) | |

|Текст |Поле для ввода простого текста |

|Форматированный текст |Поле ввода форматированного текста. |

|(с панелью формата) |Отображается панель управления форматом. |

| |Поддерживается прикрепление файлов |

|Форматированный текст |Аналогично предыдущему типу, но нет панели формата. |

|(без панели формата) |Форматирование при помощи меню приложения IBM Notes. |

|Временная зона |Выбор временной зоны |

|Имена |Отображение или редактирование списка пользователей |

|Авторы |Используется в формах для управления доступом |

|Читатели |Используется в формах для управления доступом |

Для текстовых полей сервер выполняет построение полнотекстового индекса для поиска (англ. Full Text Index – FTI). Этот индекс используется при полнотекстовом поиске по базе данных.

2.5 Функциональная схема, функциональное назначение

программного продукта

Функциональным назначением продукта является предоставление оперативного доступа к документам из государственных реестров, расположенных на серверах под управлением IBM Domino 9.0.

Функциональная схема представлена на рисунке 2.13.

[pic]

Рисунок 2.13 – Функциональная схема программного продукта

Программный продукт должен выполнять следующие функции:

– аутентификация по логину и паролю IBM Domino;

– отображение доступных баз данных на авторизированных серверах;

– отображение списка доступных представлений;

– отображение в табличном виде документов в представлениях;

– полнотекстовый поиск документов;

– печать документа и списка документов.

3 РЕАЛИЗАЦИЯ И ТЕСТИРОВАНИЕ ПРОГРАММНОГО ПРОДУКТА

3.1 Описание реализации

Разработанный программный продукт состоит из двух логических частей: веб-сервера и веб-приложения. Веб-сервер запускается на служебном компьютере, а веб-приложение загружается по сети в браузере пользователя.

Ниже представлен код инициализации HTTP-сервера.

func runHttp(hostname string, port int) {

m := http.DefaultServeMux

m.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {

http.ServeContent(w, req, assetName, fi.ModTime(), bytes.NewReader(data)) })

rest.ServeApi(m)

addr := fmt.Sprintf("%s:%d", hostname, port)

s := &http.Server{

Addr: addr,

ReadTimeout: 60 * time.Second,

WriteTimeout: 120 * time.Second,

MaxHeaderBytes: 1 0

&& tt < SessionMinActivityTime {

ss.app.expires = expire

ss.app.setCookie(w)

debug.Println("Application session prolonged") }

for _, ds := range ss.domino {

/* ... */}

return &ss }

Листинг 3.4 – Зарузка сессий для текущего запроса и продление сессий

Если отсутствует сессия приложения, то инициализируется пустая сессия (вызов isExpired вернет истину). Это позволяет вместо двух проверок использовать только одну, так как проверка на nil становится ненужной.

В пакете domino реализован транспортный уровень для взаимодействия с IBM Domino. Для этого в данном пакете определена структура Client представляющая совокупность удаленной точки и данных для аутентификации. Над структурой Client определены методы для работы с транспортным уровнем.

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

Для подключения к IBM Domino по протоколу HTTPS используется системное хранилище сертификатов. Для обработки ошибок соединения, устанавливается максимальное время ожидания.

Получение данных реализовано в отдельном методе, который представлен ниже. Данный метод возвращает канал и ожидает ответа IBM Domino в отдельном потоке. После того как результат получен, он отправляется в канал.

func load(req request) (ch chan resource) {

url := req.url()

httpReq, _ := http.NewRequest("GET", url, nil)

httpReq.Header.Set("Accept", "application/json")

if req.client.Credentials.Cookies != "" {

httpReq.Header.Set("Cookie", req.client.Credentials.Cookies) } else {

httpReq.SetBasicAuth(req.client.Credentials.Username, req.client.Credentials.Password) }

go func() {

defer func() { ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download

To fulfill the demand for quickly locating and searching documents.

It is intelligent file search solution for home and business.

Literature Lottery