Разработка интернет форума

Автор работы: Пользователь скрыл имя, 19 Октября 2013 в 16:41, дипломная работа

Описание

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

Содержание

ВВЕДЕНИЕ 4
1. Постановка задачи 6
2. Цель работы 9
2.1 Требования к системе 11
2.1.2 Выходные данные 14
3. Сравнение с аналогами 15
4. Выбор программно – технических средств реализации 30
5. Алгоритм работы web–сервиса 34
5.1 Структура базы данных 36
5.2 Описания алгоритмов для решения основных задач 39
5.2.1 Регистрация 39
5.2.2 Верификация 42
5.2.3 Аутентификация 42
5.2.4 Добавление категории 42
5.2.5 Добавление обзора 43
5.2.6 Добавление исправления 43
5.2.7 Голосование 43
5.2.8 Поиск 44
5.3 Описание алгоритма обработки запросов пользователя 46
5.4 Модель работы web–сервиса 47
6. Примеры работы Web–сервиса 50
ЗАКЛЮЧЕНИЕ

Работа состоит из  1 файл

Диплом.docx

— 4.33 Мб (Скачать документ)
  1. Написание программного обеспечения на одной платформе и его запуск практически на любой другой платформе.
  2. Создание программ, работающих в веб–браузере и имеющих доступ к веб–службам.
  3. Разработка приложений на стороне сервера для форумов в Интернете, магазинов, опросов, обработки форм HTML и много другого.
  4. Объединение приложений или служб с использованием языка Java для создания высокоспециализированных приложений или служб.
  5. Создание многофункциональных и эффективных приложений для мобильных телефонов, удаленных процессоров, потребительских продуктов и практически любых других категорий электронных устройств.

 

Также язык Java, воспользоваться парадигмой ООП (объектно – ориентированного программирования) и является кроссплатформенным.

Достоинства объектно–ориентированного программирования:

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

2. Данные и операции вместе образуют определенную сущность, и они не «размазываются» по всей программе, как это нередко бывает в случае процедурного программирования.

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

4. Инкапсуляция информации защищает наиболее критичные данные от несанкционированного доступа.

5. ООП даёт возможность создавать расширяемые системы. Это одно из самых значительных достоинств ООП и именно оно отличает данный подход от традиционных методов программирования.

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

7. Обработка разнородных структур данных. Программы могут работать, не утруждая себя изучением вида объектов. Новые виды могут быть добавлены в любой момент.

8. Изменение поведения во время выполнения. На этапе выполнения один объект может быть заменен другим. Это может привести к изменению алгоритма, в котором используется данный объект.

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

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

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

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

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

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

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

Обоснованием  выбора среды программирования NetBeans стало:

  1. Удобная подсветка синтаксиса кода.
  2. Возможности рефакторинга, скорость создания классов очень высокая.
  3. Удобство работы. В новом редакторе кода проще раскрывать код, выделять ссылки на методы и накладывать комплексные функции.
  4. В качестве языка программирования был выбран язык С++, поскольку он позволяет воспользоваться парадигмой ООП (объектно – ориентированного программирования).

Обоснованием  выбора MongoDB, как программного обеспечения баз данных стало:

MongoDB, это документо–ориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц.

Основные возможности  данной СУБД:

1. Документо–ориентированное хранилище (простая и мощная JSON–подобная схема данных).

2. Достаточно гибкий язык для формирования запросов.

3. Динамические запросы.

4. Полная поддержка индексов.

5. Профилирование запросов.

6. Быстрые обновления «на месте».

7. Эффективное хранение двоичных данных больших объёмов, напр., фото и видео.

8. Журналирование операций, модифицирующих данные в БД.

9. Поддержка отказоустойчивости и масштабируемости: асинхронная репликация, набор реплик и шардинг.

10. Может работать в соответствии с парадигмой MapReduce.

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

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

5. Алгоритм работы web–сервиса

Перед началом разработки web–сервиса, необходимо определить задачи, которые он должен решать, какие запросы обрабатывать и разработать структуру базы данных. Под каждую задачу необходимы алгоритмы, которые в совокупности ее решают.

Для начала необходимо определить структуру разрабатываемого Web–сервиса и его модель (см. рис. 12).

Рис. 12 «Модель web–сервиса»

На web–сервисе есть 5 основных страниц, которые доступны напрямую или переход может быть совершен с одной из этих страниц:

– Главная страница (Index.jsp);

– Страница регистрации (Registration.jsp);

– Страница восстановления пароля (Recovery.jsp);

– Страница категории (Category.jsp);

– Страница обзора (Overview.jsp);

Каждой странице соответствует  свой обработчик страницы (Handler), который при выполнении методов, может вызывать методы адаптера базы данных (DBAdapter) или к адаптеру сессии (SessionAdapter).

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

 

5.1 Структура базы данных

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

  1. Коллекция пользователи (UsersC) – каждый документ этой коллекции представляет собой сведения о пользователе и его данные. А именно: Уникальный идентификатор пользователя, генерируемый автоматически.  Логин пользователя, который используется для входа в систему. Пароль – строка, которая удовлетворяет условиям безопасности (сложность пароля), придуманный пользователем и хранимый в зашифрованном виде (прим. хеш+соль). Электронный почтовый адрес, который используется для верификации пользователя и получения новостей от системы. Сервисная битовая маска – используется для выставления пользователю каких либо флагов (верифицирован ли он, в онлайне, статусы и.т.д.). Группа в которой он состоит (Пользователи/Репортеры/Администраторы/Главные администраторы) – выставляется только главным администратором (для обхода рейтинговой системы). Личный рейтинг (совокупность рейтинга всех созданных пользователем статей (Обзоры/Категории)). Имя и Фамилия для обращения к пользователю и отображения в системе для других пользователей. Далее список созданных обзоров, в котором перечисляются уникальные идентификаторы написанных обзоров. Список созданных категорий, в котором перечисляются идентификаторы категорий.
  2. Категории (CategoriesC) –  Каждый документ этой коллекции представляет собой категорию, расположенную в системе. А именно: Уникальный идентификатор. Идентификатор родительской категории. Список дочерних категорий. Список идентификаторов на обзоры в этой категории. Идентификатор пользователя, который создал категорию. Список идентификаторов пользователей, которые являются репортерами этой категории. Название категории. И содержимое принадлежащее категории (начальное описание категории, возможно с фотографией, которое исчерпывающе отражает суть категории и тематику).
  3. Обзоры (OverviewsC) – каждый документ этой коллекции представляет собой обзор, расположенный в системе. А именно: Уникальный идентификатор обзора. Идентификатор категории к которой он принадлежит. Идентификатор пользователя, создавшего этот обзор. Рейтинг (вычисляется по рейтингу пользователей проголосовавших за этот обзор). Список пользователей проголосовавших за этот обзор. Имя обзора. Содержимое обзора (фотографии и текст).
  4. Исправления (HotfixC) – каждый документ этой коллекции представляет собой исправление, предложенное каким либо пользователем в системе. Отображается у пользователей, которые создавали это содержимое или являются модераторами дерева категорий, к которым это исправление принадлежит.  Представленное кем – либо исправление проходит голосование, и если он набирает высокий рейтинг, исправление применяется и пользователь заносится в соавторы/редакторы обзора. Иначе исправление удаляется из системы. Имеет набор полей, а именно: Уникальный идентификатор исправления. Идентификатор корректируемого объекта. Тип корректируемого объекта (Обзор/Категория). Комментарий к исправлению. Идентификатор пользователя создавшего исправление. Рейтинг. Список проголосовавших пользователей. Содержимое исправления (исправленный обзор – категория с выделенными местами, которые были исправлены).
  5. Запрос на создание обзора (RequestToCrAOverviewC) – каждый документ этой коллекции представляет собой запрос на создание обзора, от какого либо пользователя в системе. Отображается у всех пользователей в разделе «Запросы на обзоры». Любой пользователь, если имеет права на создание обзора, может выполнить запрос. Имеет набор полей, а именно: Уникальный идентификатор запроса. Идентификатор пользователя создавшего запрос. Содержимое запроса. Рейтинг (приоритет запроса, чем выше – тем выше в списке отображения). Статус (Открыт/Закрыт).

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

Рис. 13 Структура базы данных

Описание значения цветов Рисунка 13.

 – База данных.

 – Коллекции (в РБД таблица).

 – Поля (Field, в РБД колонка). Совокупность таких полей организуют Документ (Document, в РБД строка).

 

5.2 Описания алгоритмов для решения основных задач

Перед разработкой алгоритмов, необходимо выявить задачи, которые  должен выполнять web–сервис. Отталкиваясь от задачи, разработать алгоритмы, которые ее решают.

Есть 8 основных задач, которые должен решать web–сервис:

– Регистрация;

– Аутентификация;

– Верификация;

– Добавление категории;

– Добавление обзора;

– Добавление исправления;

– Голосование;

– Поиск;

Рассмотрим  способы решения для каждой из них.

5.2.1 Регистрация

Этот процесс представляет собой регистрацию пользователя на web–сервисе. Пользователь должен перейти на страницу регистрации и ввести необходимые данные (имя, фамилия, логин,  пароль, электронный почтовый адрес). После ввода, пользователь должен нажать кнопку «Регистрация». Данные, которые ввел пользователь, передаются в обработчик регистрации (RegistrationHandler). Внутри него вызывается метод проверки правильности данных. А именно: Уникальность логина, правильность логина (отсутствие запрещенных символов и допустимая длина),  правильность пароля и подтверждение пароля, правильность введенного электронного почтового адреса и его подтверждение. После проверки, если была ошибка – выводится сообщение об ошибке, иначе пользователь заносится в базу данных и выставляется в очередь подлежащей верификации, далее происходит перенаправление на главную страницу. (Блок–схема алгоритма см. рис. 14)

 

Рис. 14 «Блок–схема алгоритма регистрации»

При проверке данных вызывается метод проверки правильности (метод  validate() (см. рис. 15)).  Этот метод проверяет все введенные данные и при наличии ошибок, заполняет список ошибок допущенными ошибками и текстом ошибок. После проверки возвращает логическое значение, соответствующее наличие хотя бы одной ошибки.

Рис. 15  «Блок–схема проверки правильности введенных данных»

5.2.2 Верификация

Этот процесс представляет собой проверку подлинности пользователя (пользователь реален). Зарегистрировавшемуся пользователю на указанный почтовый адрес отправляется сформированная ссылка вида «RegisterHandler?code=сгенерированный уникальный код», этот код также заносится в базу данных.

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

5.2.3 Аутентификация

Этот процесс представляет собой проверку подлинности пользователя в системе. Чтобы войти на сайт под определенной учетной записью, необходимо ввести логин и пароль.  Эти данные передаются в обработчик, отвечающий за проверку. Переданный пароль зашифровывается тем же способом, что и в процессе регистрации (прим. хеш+соль).  После этого происходит вызов метода в адаптере к базе данных, который отвечает за аутентификацию. В него передаются логин и полученный хеш пароля. В этом методе происходит выборка пользователя по логину, у полученного документа сравниваются хеши паролей, если они совпадают, то пользователя можно считать аутентифицированным и у модуля SessionAdapter вызывается метод заполнения сессии после аутентификации. Если не совпадают, то выводится сообщение об ошибке.

5.2.4 Добавление категории

Этот процесс представляет собой добавление категории пользователем. Чтобы добавить категорию, пользователю необходимо перейти на страницу создания категории и заполнить необходимые  поля: Выбрать родительскую категорию (автоматически выставляется та категория, с которой был совершен переход), название создаваемой категории, описание категории. Далее эти данные передаются в метод модуля DBAdapter, где генерируются необходимые поля и все сохраняется в базе данных.

5.2.5 Добавление обзора

Этот процесс представляет собой добавление обзора пользователем. Чтобы добавить обзор, пользователю необходимо перейти на страницу создания обзора и заполнить необходимые  поля: Выбрать категорию к которой обзор будет принадлежать (автоматически выставляется та категория, с которой был совершен переход), название создаваемого обзора, содержимое обзора. Далее эти данные передаются в метод модуля DBAdapter, где генерируются необходимые поля и все сохраняется в базе данных.

5.2.6 Добавление исправления

Этот процесс представляет собой добавление предложения на изменение обзора или категории  пользователем. Чтобы добавить исправление, пользователю необходимо перейти на страницу создания обзора и заполнить необходимые поля: Выбрать обзор или категорию, к которой будет создано исправление, содержимое исправления с комментарием. Далее эти данные передаются в метод модуля DBAdapter, где генерируются необходимые поля и все сохраняется в базе данных.

Информация о работе Разработка интернет форума