3.1 Выбор состава средств разработки программы
Так как поиск краткосрочных событий требует своевременную информированность, и геолокационные данные для определения точного местоположения пользователя, выбор пал на мобильную платформу, так как именно мобильная платформа имеет возможность доступа к интернету в большинстве случаев и в практически любое время, а также позволяет получать точные данные о местоположении пользователя. В свою очередь операционная система Android была выбрана по следующим причинам:
- наиболее популярная ОС в мире;
- быстро развивающаяся система;
- удобная среда разработки;
- широкие возможности визуализации графического интерфейса;
- большой инструментарий для работы с картами Google Maps.
В процессе разработке программы стало ясно, что в перспективе будет разрабатываться сайт, который будет выполнять функции программы на OC Android, из-за этого, было принято решение хранить данные в БД предоставляемой хостингом, который является сервером, чтобы обращаться к единой БД для программы и сайта, вместо отдельных БД для двух платформ.
Хостинг – услуга по предоставлению ресурсов для размещения информации на сервере, постоянно находящемся в сети.
Обычно хостинг входит в пакет по обслуживанию сайта и подразумевает как минимум услугу размещения файлов сайта на сервере, на котором запущено ПО, необходимое для обработки запросов к этим файлам. Как правило, в обслуживание уже входит предоставление места для почтовой корреспонденции, баз данных, DNS, файлового хранилища на специально выделенном файл-сервере и т. Д., а также поддержка функционирования соответствующих сервисов. Хостинг базы данных, размещение файлов, хостинг электронной почты и услуги DNS могут предоставляться отдельно как самостоятельные услуги, либо входить в комплексную услугу.
|
Как упоминалось ранее, в данной работе, в качестве сервера используется хостинг базы данных, включающий в себя СУБД, а также веб-интерфейс PHPMyAdmin [11], с помощью которого мы выполняем администрирование СУБД.
PHPMyAdmin – веб-приложение с открытым кодом, написанное на языке PHP и представляющее собой веб-интерфейс для администрирования СУБД [12] MySQL [13]. PHPMyAdmin позволяет через браузер и не только осуществлять администрирование сервера MySQL, запускать команды SQL и просматривать содержимое таблиц и баз данных. Приложение пользуется большой популярностью у веб-разработчиков, так как позволяет управлять СУБД MySQL без непосредственного ввода SQL команд, предоставляя дружественный интерфейс.
Непосредственно БД предназначена для хранения такой информации как:
- пароли, логины и другая информация учетных записей пользователей;
- существующие события и информация о них;
- события, созданные пользователем;
- информация о макетах событий, которые отображаются на карте Google Maps.
В качестве СУБД используется MySQL.
СУБД MyS QL была выбрана в следствии следующих причин:
- высокая скорость работы;
- высокая надежность данных;
- наличие в большинстве хостингов;
- удобство взаимодействия с БД;
- не высокая стоимость за объем хранимой информации.
За взаимодействие сервера и клиента отвечают PHP–запросы, которые отправляют команды на редактирование, добавление, удаление и выборку данных в БД.
3.2 Разработка архитектуры программы
|
Одной из основных задач разработки архитектуры [3 – 4] программы, является разработка единой системы из взаимодействующих служб, которые будут наиболее эффективно, гибко и надежно выполнять свои функции.
Разработка архитектуры также включает в себя такие аспекты как:
- организация программы;
- организация данных;
- пользовательский интерфейс;
- производительность;
- взаимодействие с другими системами;
- обработка ошибок;
- и т. д.
Архитектура программы была разработана на основе исследования в области разработки программ на OC Android, учитывающая наиболее эффективное взаимодействие модулей программы, надежность, гибкость и другие аспекты архитектуры. Схема архитектуры программы представлена на рисунке 5.
Рисунок – 5 Схема архитектуры программы
Так как в данной работе используется такая технология как Push–уведомления, то схема демонстрирующая принцип ее работы представлена на рисунке 6.
Рисунок – 6 Схема принципа работы Push–уведомлений
Когда пользователь включает функцию Push–уведомлений при поиске событий, он запускает фоновый процесс, в котором, раз в определенный промежуток времени будет отправляется запрос к БД на наличие новых событий, которые удовлетворяют критериям поиска.
Одной из задач разработки архитектуры программы является обеспечить достаточный уровень гибкости ГИП и быструю навигацию среди окон графического интерфейса.
Схема навигации среди окон графического интерфейса представлена на рисунке 7.
Рисунок – 7 Граф переходов ГИП
Для наибольшей гибкости и удобства навигации среди окон ГИП, было разработано навигационное меню состоящее из кнопок, соответствующих изображений к кнопкам, а также подсказками, отображающими количество событий в той или иной группе.
|
3.3Разработанные алгоритмы
На этапе разработки прототипа программного средства, были разработаны три алгоритма, первый – алгоритм аутентификации [10] пользователей, позволяющий пользователям войти в программу под своей учетной записью с правами просмотра имеющихся и создания собственных событий или зарегистрировать свою учетную запись для получения вышеуказанных прав. Второй алгоритм – алгоритм просмотра существующих и создания собственных событий, позволяющий загружать события из БД и отображать их с на экране Android–устройства, или же создавать собственные, с сохранением в БД. Третий алгоритм – алгоритм работы внешнего исполняемого модуля, написанного на языке PHP, который выполняет который выполняет роль курьера, передающего информацию от Android–устройства к серверу и наоборот.
3.4 Разработанный алгоритм аутентификации пользователей
Для аутентификации пользователей был разработан следующий алгоритм, представленный на рисунке 8.
Рисунок 8 – Блок схема алгоритма аутентификации пользователей
Входные данные при регистрации учетной записи:
- логин;
- имя пользователя;
- адрес почтового ящика;
- пароль.
Выходные данные при регистрации учетной записи:
- ответ об успешной регистрации, либо отчет об ошибке.
После ввода входных данных в ГИП Android–устройства и нажатия на соответствующую кнопку, отправляется POST–запрос к серверу с командами проверки на существование аналогичной УЗ и сохранения новой, в случае ее уникальности. После выполнения POST–запроса, возвращается ответ об успешном добавлении нового пользователя, либо ответ ошибки, с указанием проблемы.
Входные данные при входе под существующей учетной записью:
- логин;
- пароль.
Выходные данные при входе под существующей учетной записью:
- ответ об успешном входе под своей УЗ, либо отчет об ошибке.
В процессе входа под существующей УЗ, после ввода входных данных в ГИП Android–устройства и нажатия на соответствующую кнопку, отправляется POST–запрос к серверу с SQL–командами проверки на существование соответствующей УЗ. После выполнения POST–запроса, возвращается ответ об успешном входе в программу под своей УЗ, либо ответ ошибки, с указанием проблемы.
3.5 Разработанный алгоритм просмотра и создания событий
Для того чтобы просматривать имеющиеся и создавать собственные события, был разработан алгоритм, представленный на рисунке 9.
Рисунок 9 – Блок схема алгоритма просмотра существующих и создания собственных событий.
Входные данные при создании собственного события:
- название события;
- род занятия;
- вид занятия;
- время действия события;
- количество участников события;
- координаты события.
Выходные данные при создании собственного события:
- ответ об успешном создании события, либо отчет об ошибке.
При создании события необходимо ввести характеристики события в ГИП Android–устройства и нажать на соответствующую кнопку, после этого отправляется POST–запрос к серверу с командой сохранения нового события. После выполнения POST–запроса, возвращается ответ об успешном сохранении нового события, либо ответ ошибки, с указанием проблемы.
Входные данные при поиске существующих событий: род занятия;
- род занятия;
- вид занятия;
- время действия события;
- количество участников события;
- расстояние до события.
Выходные данные при создании собственного события:
- список событий, удовлетворяющих условиям поиска, либо отчет об ошибке.
При поиске событий необходимо ввести характеристики события в ГИП Android–устройства и нажать на соответствующую кнопку, после этого отправляется POST–запрос к серверу с командой поиска событий, удовлетворяющих условиям поиска. После выполнения POST–запроса, возвращается список найденных событий, либо ответ ошибки, с указанием проблемы.
3.6 Процесс поиска событий по геолокационным данным
Процесс поиска пользователем событий в своем радиусе поиска можно представить с помощью следующего уравнения, формула (7):
(7) |
где:
– координаты местонахождения пользователя;
– радиус поиска событий от местонахождения пользователя;
– координаты местоположения событий.
Например, если пользователь , с координатами x и y, производит поиск событий в радиусе от своего местоположения, то на карту будут выведены все существующие события, местоположения которых входят в область поиска пользователя . Процесс поиска пользователем событий можно представить в виде диаграммы на рисунке 10.
Рисунок 10 – диаграмма иллюстрирующая процесс поиска событий
3.7 Разработанный алгоритм работы PHP–запроса
PHP запрос – запрос, отправляемый от клиента к серверу, для выборки, удаления, редактирования и добавления данных. В данной работе в качестве сервера выступает БД, задача которой – хранить учетные записи пользователей, характеристики событий и маркеров на картах google maps. Основной задачей PHP запроса является передача данных между клиентом и серверов, формирование запроса осуществляется на стороне клиента, а сервер его принимает, выполняет переданные ему команды и формирует ответный запрос.
Можно выделить следующие функции PHP запроса, которые выполняются в данной программе:
- отправка запроса серверу, для проверки на существование учетной записи с введенными данными;
- возвращение положительного или отрицательного ответа;
- отправка запроса серверу, на сохранение новой учетной записи с введенными данными;
- получения положительного или отрицательного ответа после отправленного запроса;
- отправка запроса на выборку событий с конкретными параметрами;
- отправка запроса на сохранение нового события с конкретными параметрами;
- Отправка запроса на добавление или выборку маркеров на картах google maps.
Для реализации вышеперечисленных функций был разработан алгоритм, представленный на рисунке 11.
Рисунок 11 – Алгоритм работы PHP модуля, выполняющего аутентификацию и регистрацию УЗ
Входные данные при выполнении запроса регистрации учетной записи:
- логин;
- имя пользователя;
- адрес почтового ящика;
- пароль.
Выходные данные при выполнении запроса регистрации учетной записи:
- ответ об успешном выполнении запроса регистрации, либо отчет об ошибке.
После ввода входных данных в ГИП Android–устройства и нажатия на соответствующую кнопку, отправляется POST–запрос к серверу с данными, введенными в Android–устройстве. После выполнения POST–запроса к серверу, в данной работе это PHP модуль, очередь переходит непосредственно к PHP модулю, отвечающего за соединение с БД и выполнение команд на языке SQL для записи новой УЧ, если та прошла проверку на уникальность. В результате запроса, модуль содержит информацию об успешной записи нового пользователя, либо ошибку, с указанием проблемы.
Входные данные при выполнении запроса на проверку данных УЗ:
- логин;
- пароль.
Выходные данные при выполнении запроса на проверку данных УЗ:
- ответ об успешном подтверждении данных УЗ.
В данной ветви алгоритма выполняется аналогичное соединение с БД, но команды на языке SQL не записывают новую УЗ, а проверяют ее на существование. В результате запроса, модуль содержит информацию об успешной проверке данных УЗ, либо ошибку, с указанием проблемы.
3.8 Структура базы данных
Целью создания БД в данной ВКР было хранение такой информации как:
- данные учетных записей пользователей;
- множество событий с определенными характеристиками;
- множество событий, которые будут отображаться на интерактивной карте;
- таблицы о роде и виде занятий, для сортировки событий.
В результате выполнения ВКР, была создана структура БД, хранящая всю вышеперечисленную информацию, которая содержит 5 таблиц и в сумме 30 полей.
Схема структуры БД представлена на рисунке 12.
Рисунок 12 – Схема структуры БД
Разработанная БД полностью выполняет все возложенные на нее задачи, а также поддерживает возможность расширения в случае необходимости.
3.9 Структура программы
В таблице 2 дано перечисление и описание файлов программы.
Таблица 2 – Описание файлов программы
ActivityMain.java | Главная активность программы, включающее навигационное меню. |
ActivityLogin.java | активность программы, отвечающее за вход пользователя под своей учетной записью. |
ActivityRegister.java | активность программы, отвечающее за регистрацию пользователя. |
BackGroundWorker.java | выполняет post запрос и действует в зависимости от ответа. |
MapsActivity.java | активность, отображающая и добавляющая маркеры на карты google maps |
EventsListFragment.java | фрагмент программы, который отображает список существующих событий |
CreateEventsFragment.java | фрагмент, с помощью которого пользователь заполняет поля события и сохраняет его в БД. |
Connect.php | PHP запрос, выполняющий соединение с БД |
Login.php | запрос, выполняющий вход в программу под своей УЗ |
Register.php | запрос, выполняющий регистрацию в программе своей УЗ. |
Отладка и тестирование
В контрольном примере проведено тестирование работоспособности программы в процессе аутентификации, где пользователь выполняет вход в программу, а также в процессе создания событий.
Набор исходных данных для аутентификации учетной записи:
- логин;
- пароль.
Проверка будет осуществляться на основе сравнивания результатов работы программы и соответствующих данных в БД. Для начала протестируем процесс входа под своей учетной записью. Если программа отобразит успешный результат, а в БД будут подтверждены существующие данные, то можно будет сделать вывод, что программа работает корректно.
Для начала необходимо ввести исходные данные в окно программы, рисунок 13 (а). Если данные УЗ корректны, то отобразится соответствующее сообщение, рисунок 13 (б).
а) б)
Рисунок 13 – Окна входа под своей учетной записью
а) б)
Рисунок 14 – Окна входа под своей учетной записью
На рисунке 14 (б) видно, что после ввода исходных данных, программа отобразила успешный вход в программу. Если же введенные данные отсутствуют в БД, рисунок 14 (а), то отобразится ошибка, представленная на рисунке 14 (б). После отображения успешного входа, необходимо проверить исходные данные на существование аналогичных записей в БД.
Рисунок 15 – Скриншот данных, хранящихся в БД, в таблице «пользователи»
На рисунке 15 можно увидеть, что данные, которые вводились в программе существуют и в БД, на основе этого можно сделать вывод, что процесс аутентификации работает корректно как при корректных, так и некорректных данных.
Методика тестирования для процесса создания событий аналогична с методикой тестирования процесса входа под своей учетной записью.
Исходные данные при создании события:
- заголовок события;
- описание события;
- род и вид деятельности;
- изображение;
- дата наступления события.
После ввода всех полей, необходимо нажать на кнопку сохранить. Скриншот окна создания события представлен на рисунке 16.
Рисунок 16 – Окно создания события
После введенных исходных данных, необходимо нажать на кнопку с изображением стрелки в панели инструментов. Как только пользователь нажмет на кнопку, программа сохранит данное событие в БД. Для того чтобы проверить корректную работоспособность программы, сравним данные введенные в программе и данные хранящиеся в БД.
Рисунок 17 – Скриншот данных, хранящихся в БД, в таблице «события»
На основе совпадения данных события находящихся БД и созданных события созданных ранее в программе, можно сделать вывод, что процесс создания событий работает корректно.
ЗАКЛЮЧЕНИЕ
Результатом выполнения ВКР является реализация мобильной программы организации краткосрочных событий
В первом разделе проделанной работы проведен анализ существующих аналогов программы, произведено их сравнение и вывод.
Во втором разделе – определена проблема, описана постановка задачи и выработаны требования к программе
В третьем разделе – разработаны архитектура системы, структура и функционал программы, разработаны алгоритмы работы программы и его программная реализация.
В четвертом разделе производится отладка и тестирование программы.
Для реализации программы были выбраны и обоснован их выбор. Программная реализация выполнена в среде программирования Visual Studio 2.2 на языке программирования высокого уровня Java, графический интерфейс написан на языке XML, взаимодействие между сервером и Android–устройством осуществлялось на языке PHP 5.6.
В ходе выполнения выпускной квалификационной работы были проанализированы существующие программы организации событий, произведены их сравнения по заданным критериям. В результате чего, был сделан вывод, что существующие решения имеют ряд недостатков и не удовлетворяют требованиям, которые поставлены в данной работе.
На основе требований и проведенного анализа, была поставлена и сформулирована задача на разработку мобильной программы организации краткосрочных событий, были разработаны архитектура системы, структура программы, алгоритмы работы программы, а также программная реализация.
Таким образом, поставленная задача успешно решена и все цели ВКР успешно достигнуты.
Апробация работы проводилась на XII конкурсе научно-практических работ студентов учебного центра «Интеграция» МАИ при МОУ «ИИФ», где была удостоена грамоты за высокое качество работы. Также апробация проводилась на международной молодёжной научной конференции «Гагаринские чтения», в результате которой, работу опубликовали в сборнике тезисов конференции.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Android для разработчиков / П. Дейтел, Х. Дейтел. – М.: Питер, 2016. – 512 c.
2. Android. Программирование для профессионалов / Б. Харди, Б. Филлипс. – М.: Питер, 2016. – 640 c.
3. Совершенный код. Практическое руководство по разработке программного обеспечения / С. Макконнелл. – М.: Русская редакция, 2017. – 867 с.
4. Архитектура компьютера / Э. Таненбаум, Т. Остин. – М.: Русская редакция, 2016. – 640 c.
5. Изучаем Java / К. Сиерра, Б. Бейтс. – М.: Эксмо, 2016. – 720 c.
6. Java. Эффективное программирование / Д. Блох. – М.: Лори, 2014. – 310 c.
7. Изучаем SQL / Л. Бейли. – М.: Питер, 2012. – 592 c.
8. Изучаем SQL / А. Бьюли. – М.: Символ-Плюс, 2012. – 312 c.
9. PHP 7 / Д. Котеров, И. Симдянов. – М.: БХВ-Петербург, 2016. – 1088 c.
10. Авторизация [Электронный ресурс] / Википедия. Режим доступа: https://ru.wikipedia.org/wiki/Авторизация. (Дата обращения 20.02.2017г.).
11. PHPMyAdmin [Электронный ресурс] / Википедия. Режим доступа: https://ru.wikipedia.org/wiki/PhpMyAdmin. (Дата обращения 30.02.2017г.).
12. Система управления базами данных [Электронный ресурс] / Википедия. Режим доступа: https://ru.wikipedia.org/wiki/Система_управления_базами_данных. (Дата обращения 26.03.2017г.).
13. MySQL [Электронный ресурс] / Википедия. Режим доступа: https://ru.wikipedia.org/wiki/MySQL. (Дата обращения 22.04.2017г.).
14. Android Studio [Электронный ресурс] / Википедия. Режим доступа: https://ru.wikipedia.org/wiki/Android_Studio. (Дата обращения 11.01.2017г.).