Создание мобильного приложения на основе геолокации с элементами социальной сети

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,03 Мб
  • Опубликовано:
    2017-07-10
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Создание мобильного приложения на основе геолокации с элементами социальной сети

Оглавление

Введение

. Аналитический обзор

1.1 Обзор рынка мобильных приложений

.2 Обзор социальных сетей

.3 Обзор аналогов

2. Техническое предложение

Обзор инструментов разработки

3.1 Android Studio

.2 Microsoft visual С# 2012

.3 PostgreeSQL

.4 API Открытых данных Вологодской области

.5 API Социальных сетей

4. Архитектура приложения

. Программный код

. Разработка интерфейса

. Тестирование

. Документация пользователя

8.1 Руководство пользователя

.2 Пользовательское соглашение

Заключение

Список использованных источников

Приложения

Введение

мобильный приложение android программный

Люди в цифровом обществе делают всё так, чтобы им жилось более комфортно. Сейчас одним из самых главных желаний многих является возможность присутствия в интернет сети. Эти люди желают всегда присутствовать в сети. Благодаря этому разработка приложений для мобильных платформ пользуется большим спросом. Благодаря интернету на мобильном устройстве разработка приложений для этих устройств является актуальной. Даже при отсутствии домашней сети всегда можно подключиться к интернету используя телефон, планшет или даже часы. Но без мобильных приложений, которые работают с этим соединением, пользы от мобильного интернета было бы мало. Они выполняют множество задач по работе с данными пользователя, отправке их на сервера и обработке.

В наши дни многие программисты трудятся над созданием разных приложений для платформ Android и IOS. Такие приложения могут служить разным целям:

         Общение;

         Обучение;

         Продажа товаров;

         Игры;

         Чтение;

         Геолокация;

         Поиск выгодных предложений.

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

         Игры;

         Видеоплейеры;

         Аудиоплейеры;

         Социальные сети.

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

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

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

1. Аналитический обзор

 

1.1 Обзор рынка мобильных приложений


Каждый разработчик думает: что же делать с итоговым программным продуктом? Самые частые вопросы:

         Как вывести свое приложение в магазины приложений Google и Apple?

         Как узнать реальный объем своего рынка?

         Много ли прибыли принесет программный продукт?

Для продаж своего программного продукта полезно знать:

         Ключевые компании на мировом рынке.

         На самом ли деле это большой рынок?

         Можно ли получить прибыль от такого приложения?

         Как стартовать?

         Может ли рынок быть прибыльным и на сколько?

         Нужно ли ваше приложение пользователю?

         Хватит ли средств на поддержание аппаратной части приложения?

         Есть ли у вас конкуренты?

Прибыльный ли рынок приложений для мобильных устройств?

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

         Внутренних покупок;

         Рекламы в приложение;

         Сотрудничество с бизнесом.

На рисунке 1.1 представлена диаграмма роста рынка мобильных приложений с 2011 года по 2015 год.

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

Рисунок 1.1 - Глобальная диаграмма роста рынка мобильных приложений

Сейчас примерно 2.4 миллиона программистов разрабатывают софт для платформ IOS и Android. Получается что примерно восьмая часть всех программистов - это разработчики программного обеспечения для IOS и Android.

Сейчас популярными у пользователей являются платформы:

         Android;

-        IOS;

-        Windows phone;

-        Blackberry.

Компания Apple в 2014 году во время WorldWide Developer Conference рассказала:

         В их магазине приложений присутствует 1.30 миллионов программ;

         Скачивали приложения примерно 51 миллиард раз;

-        Cоздатели приложений заработали пять миллиардов долларов.

В таблице 1.1 показаны средние доходы создателей приложений. Из этих данных видно, что наибольший доход разработчикам приносят приложения выложенные в AppStore.

Таблица 1.1 - Средний доход разработчиков мобильных приложений

показатель / компания

Google

Apple

Microsoft

Число пользователей (в миллионах человек)

900

600

12

Число приложений (в тысячах штук)

800

1250

160

Число разработчиков (в тысячах человек)

150

235

45

Число загрузок приложений (в миллиардах раз)

48

50

65

Доход разработчиков (в миллионах долларов)

900

5000

100

Средний доход на приложение

1125$

4000$

625$

Средний доход на разработчика

6000$

21276$

2222$


На данный момент от рынка в 2017 году ожидают следующее:

         Количество скачиваний приложений увеличится до 210 миллиардов в год;

         Доходы вырастут до 64.5 миллиардов долларов;

         Рыночная стоимость мобильных платежей вырастет до 732 миллиардов долларов.

Сейчас многие приложения относятся к В2С категории (Business to client).

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

Рисунок 1.2 - Время, проведенное при использовании мобильных приложений

Как выбрать аудиторию для своего мобильного приложения?

В США примерно 70 % людей выходят в интернет с помощью смартфона. Многие из них не покидают дом без своего телефона. Такой же рост использования телефонов наблюдается и в России - многие пользователи, чаще выбирают покупку нового смартфона вместо нового компьютера.

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

На рисунке 1.3 представлен демографический обзор пользователей от компании Google.

Рисунок 1.3 - Демографический обзор пользователей от компании Google

1.2 Обзор социальных сетей


В наше время социальные сети очень популярны поскольку:

         Люди могут общаться с друзьями и знакомыми на любом расстоянии;

         С помощью социальных сетей можно обмениваться информацией;

         Можно наблюдать за жизнью своих друзей, просматривая их фото;

         Есть возможность создания сообществ и общения в них;

         Можно открыто выражать свои мысли;

         Есть возможность узнавать о событиях поблизости;

         Социальные сети помогают найти единомышленников.

Есть несколько категорий социальных сетей:

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

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

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

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

Какие социальные сети популярны в Российском интернете?

Между Российскими и западными социальными сетями есть несколько различий, таких как:

         Контент, содержащийся в социальных сетях;

         Возраст аудитории социальной сети;

         Темы, которые обсуждают пользователи;

         Темы, которые пользователям запрещено обсуждать законом;

         Тренды;

         Визуальное оформление;

         Популярность у аудитории;

         Заработки в социальных сетях.

По данным ФОМ и ВЦИОМ Можно привести частичную статистику:

)53 % Россиян старше 18 лет пользуется интернетом, что составляет 62.3 миллиона человек (ФОМ, осень 2016).

)Россияне занимают шестое место в мире по количеству пользователей интернетом. (ВЦИОМ).

)В 2012 году 80 % Россиян имели хотя бы один аккаунт в социальных сетях (ВЦИОМ).

Третья часть россиян использует мобильный интернет (ВЦИОМ).

Социальные сети, имеющие в России наибольшую популярность:

         «Одноклассники» - используют 72 % пользователей;

         «В контакте» - используют 63 % пользователей;

         «Мой мир» - используют 32 % пользователей;

         «Facebook» - используют 20 % пользователей;

         «Twitter» - используют 9 % пользователей;

         «Instagramm» - используют 10 % пользователей.

Возраст половины пользователей социальных сетей - от 18 до 34 лет,

Ежедневно в социальных сетях пользователи обмениваются большим количеством сообщений.

Количество сообщений между пользователями (без учета приватных бесед):

         «В контакте» - 2,3 миллиона сообщений;

         «Twitter» - 4,6 миллиона сообщений;

         «Live Journal» - 171 тысяча сообщений.

Количество авторов, которые ежедневно публикуют в социальных сетях посты и комментарии представлено на рисунке 1.4:

Рисунок 1.4 - Количество авторов в социальных сетях

Для многих пользователей сайт «В контакте» - удобная площадка для дискуссий. В отличие от западных стран, там такие дискуссии по большей части ведутся в twitter.

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

Итог:

         Социальные сети все сильнее захватывают людей, их влияние очень быстро растет;

         На данный момент самая развивающаяся сеть - Twitter;

         «В контакте» теперь не просто социальная сеть для общения с друзьями, но и место для дискуссий и медийная сеть;

         Интернет-СМИ начинают быть более близко к социальным сетям;

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

         Реклама в социальных сетях - выгодна для рекламодателей и эффективна для бизнеса.

 

1.3 Обзор аналогов


У разрабатываемого приложения существует несколько прямых конкурентов:

-        MyFriends (Рисунок 1.5).

-        GotYou (Рисунок 1.6).

Рисунок 1.5 - Внешний вид приложения MyFriends

Рисунок 1.6 - Внешний вид приложения GotYou

У этих приложений много общего с разрабатываемым мною. Тоже имеется:

         Геолокация;

         Элементы социальных сетей;

         Назначение встреч.

Но так же в моем приложении есть функции, которые отсутствуют в аналогах:

         Назначение встреч с группой людей;

         Создание приватных встреч;

         Создание напоминаний о встречах;

         Возможность делиться встречами в социальных сетях;

         Вывод ближайших мероприятий с помощью открытых данных.

Еще у разрабатываемого приложения существует несколько косвенных конкурентов:

·        Swarm (Рисунок 1.7).

·        Forsqare (Рисунок 1.8).

Рисунок 1.7 - Внешний вид приложения Swarm

Эти приложения объединяет то, что они похожи на справочник мест и отзывов об этих местах.

Рисунок 1.8 - Внешний вид приложения Foursqare

Эти приложения позволяют:

         Искать места поблизости;

         Читать отзывы о местах поблизости;

         Смотреть, кто из пользователей находится в этих местах на данный момент времени;

         Пользоваться геолокацией;

Но эти приложения не позволяют:

         Организовывать встречи в этих местах;

         Двигать свой маркер местонахождения по карте;

         Искать пользователей поблизости;

         Общаться в общем чате.

 


2. Техническое предложение


Мой проект - это небольшая социальная сеть с геолокацией, которая предоставляет возможность найти компанию для похода в то или иное место.

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

)Найти место и компанию для встреч;

)Организовать вечеринку, прогулку, отдых, развлечение;

)Индивидуально подобрать интересную встречу (работает по указанным в профиле интересам);

)Вести поиск мест встреч поблизости;

)Удобно следить за встречами, в которых участвует пользователь;

)Видеть новостную ленту с мероприятиями.

Данное приложение было написано с целью получения дохода, поэтому для него была создана бизнес - модель:

         Клиентские сегменты: Владельцы смартфонов (android), пользователи социальных сетей в возрасте от 16 до 35 лет Проживающие в городе Вологда, либо туристы;

         Проблема/боль: Отсутствие компании, сложности поиска мест для развлечений;

         Решение/обезболивающее: Используя данное приложение, зарегистрированные пользователи имеют возможность найти себе компанию по интересам. Благодаря геолокации пользователь может находить развлечение поблизости;

         Ценностное предложение: Быстрый способ найти компанию по интересам посредством мобильного приложения;

         Продукт/сервис: Мобильное (android) приложение с геолокацией и элементами социальной сети;

         Каналы привлечения: Социальные сети (В контакте, Фейсбук, Инстаграмм), Play маркет, реклама от блогеров;

         Воронка/ЦЦД: Рекламное сообщение, клик на рекламу, установка приложения, регистрация, поиск мероприятий, выбор мероприятия, развлечение;

         Рынок(PAM): 80 % населения пользуются смартфонами android. Из них 70 % устанавливают мобильные приложения. Около 80 % людей пользуются социальными сетями, 25 % - целевая аудитория приложения (Итого: 0.80 * 0.70 * 0.8 * 0.25 = 0.11 = 11 % пользователей);

         Структура доходов (модель монетизации): Реклама и продвижение организаций в ТОП разными способами. Привилегированные функции для пользователей;

         Структура расходов: аккаунт в GooglePlay, Сервер с базой данных, Оплата работы модераторов, реклама проекта.

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

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

         Работа со встречами;

         Работа с мероприятиями;

         Возможность использовать чат;

         Интеграция с социальными сетями.

3. Обзор инструментов разработки

 

3.1 Android Studio


Для написания мобильного приложения была выбрана android studio, поскольку является полностью бесплатной и содержит много полезных функций при работе с Android.Studio - это интегрированная среда разработки (IDE) для работы с платформой Android, анонсированная 16 мая 2013 года на конференции Google I/O.находилась в свободном доступе начиная с версии 0.1, опубликованной в мае 2013, а затем перешла в стадию бета-тестирования, начиная с версии 0.8, которая была выпущена в июне 2014 года. Первая стабильная версия 1.0 была выпущена в декабре 2014 года, тогда же прекратилась поддержка плагина Android Development Tools (ADT) для Eclipse.Studio, основанная на программном обеспечении IntelliJ IDEA от компании JetBrains, официальное средство разработки Android приложений. Данная среда разработки доступна для Windows, OS X и Linux.

Особенности

Новые функции появляются с каждой новой версией Android Studio. На данный момент доступны следующие функции:

         Расширенный редактор макетов: WYSIWYG, способность работать с UI компонентами при помощи Drag-and-Drop, функция предпросмотра макета на нескольких конфигурациях экрана;

         Сборка приложений, основанная на Gradle;

         Различные виды сборок и генерация нескольких apk файлов;

         Рефакторинг кода;

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

         Встроенный ProGuard и утилита для подписывания приложений;

         Шаблоны основных макетов и компонентов Android;

         Поддержка разработки приложений для Android Wear и Android TV;

         Встроенная поддержка Google Cloud Platform, которая включает в себя интеграцию с сервисами Google Cloud Messaging и App Engine;

         Android Studio 2.1 поддерживает Android N Preview SDK, а это значит, что разработчики смогут начать работу по созданию приложения для новой программной платформы;

         Новая версия Android Studio 2.1 способна работать с обновленным компилятором Jack, а также получила улучшенную поддержку Java 8 и усовершенствованную функцию Instant Run;

         Platform-tools 23.1.0 для Linux без объявления стала исключительно 64-разрядной, даже при попытке установить 32-разрядную версию. Иными словами Android Studio больше НЕ работает (выдаёт неустранимые ошибки) в 32-разрядных версиях Linux.

 

3.2 Microsoft visual С# 2012


Microsoft Visual Studio - линейка продуктов компании Microsoft, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Windows, Windows Mobile, Windows CE, .NET Framework, Xbox, Windows Phone .NET Compact Framework и Silverlight.Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных. Visual Studio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода (как, например, Subversion и Visual SourceSafe), добавление новых наборов инструментов (например, для редактирования и визуального проектирования кода на предметно-ориентированных языках программирования) или инструментов для прочих аспектов процесса разработки программного обеспечения (например, клиент Team Explorer для работы с Team Foundation Server).

В проекте на Microsoft visual С# 2012 написан веб-сервер приложения, который позволяет вести работу с базой данных при помощи HTTP запросов.

 

3.3 PostgreeSQL


В проекте данная СУБД находится на удаленном сервере.- свободная объектно-реляционная система управления базами данных (СУБД).

Существует в реализациях для множества UNIX-подобных платформ, включая AIX,различные BSD-системы, Linux, macOS, Solaris/OpenSolaris, Tru64, QNX, а также для Microsoft Windows.базируется на языке SQL и поддерживает многие из возможностей стандарта SQL:2011. В PostgreSQL версии 9.5.3 есть следующие параметры, приведенные в таблице 3.1:

Таблица 3.1 - Характеристики postgresql

Максимальный размер базы данных

Нет ограничений

Максимальный размер таблицы

32 Тбайт

Максимальный размер записи

1,6 Тбайт

Максимальный размер поля

1 Гбайт

Максимум записей в таблице

Нет ограничений

Максимум полей в записи

250-1600, в зависимости от типов полей

Максимум индексов в таблице

Нет ограничений

 

Сильными сторонами PostgreSQL считаются:

-        Высокопроизводительные и надёжные механизмы транзакций и репликации;

         Расширяемая система встроенных языков программирования: в стандартной поставке поддерживаются PL/pgSQL, PL/Perl, PL/Python и PL/Tcl; дополнительно можно использовать PL/Java, PL/PHP, PL/Py, PL/R, PL/Ruby, PL/Scheme, PL/sh и PL/V8, а также имеется поддержка загрузки C-совместимых модулей;

         Наследование;

         Легкая расширяемость;

         Бесплатная лицензия.

Прочие возможности:

         Соблюдение принципов ACID;

         Соответствие стандартам ANSI SQL-92 и SQL-99;

         Поддержка запросов с OUTER JOIN, UNION, UNION ALL, EXCEPT, INTERSECT и подзапросов;

-        Последовательности;

         Контроль целостности;

         Репликация;

         Общие табличные выражения и рекурсивные запросы;

         Аналитические функции;

         Поддержка Юникода (UTF-8);

         Поддержка регулярных выражений в стиле Perl;

         Встроенная поддержка SSL, SELinux и Kerberos;

         Протокол разделяемых блокировок;

         Подгружаемые расширения, поддерживающие SHA1, MD5, XML;

         Расширения для написания сложных выборок, отчётов и т. д. (API открыт);

         Средства для генерации совместимого с другими системами SQL-кода и импорта из других систем;

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

Так же данная СУБД была выбрана, поскольку является бесплатной и совместимой с Android приложениями.

 

3.4 API Открытых данных Вологодской области


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

Сведения постепенно устаревают, утрачивают свою ценность.

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

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

Но осознание недопустимости такого положения пришло, и за относительно короткий срок ситуация с открытыми данными в России изменилась в корне - сегодня ни государство, ни общество не готовы мириться со столь низким КПД государственных данных:

         на государственном уровне признана актуальность задачи повышения «коэффициента полезного действия» государственной информации;

         сформирована и последовательно реализуется государственная политика в области публикации открытых государственных данных;

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

         развивается государственная информационно-технологическая инфраструктура открытых данных;

         постепенно формируется культура и экосистема открытых данных.

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

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

На сегодня основными возможностями Портала открытых данных являются:

         возможность отбора и поиска наборов открытых данных по заданным критериям и ключевым словам;

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

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

         возможность автоматической загрузки актуальных наборов открытых данных с сайтов организаций;

         возможность участия в государственно-гражданском диалоге по определению предметных приоритетов раскрытия данных;

         возможность размещения наборов данных и ссылок на наборы данных, размещенные на сайтах организаций;

         возможность паспортизации наборов данных и преобразования форматов данных в «открытые форматы»;

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

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

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

 

3.5 API Социальных сетей


Социальные сети - мощный инструмент для раскрутки и ведения бизнеса, включающий обширную базу потенциальных клиентов, как говорится «из коробки». Помимо ведения бизнеса непосредственно в интерфейсе социальных сетей (от надоедливого спама до рекламных инструментов), существует также вариант использования функциональности и мощностей социальных сетей в своих внешних проектах (веб-сайты и веб-сервисы, мобильные приложения и др.). Такого рода возможности реализуются посредством API (Application Programming Interface) - набора готовых программных методов, предоставляемых тем или иным сервисом, той или иной системой. Некоторые социальные сети также предоставляют специальные виджеты, основанные на API, для интеграции в свои проекты. Кроме того, уже существует ряд программных продуктов для автоматизации операций, программная реализация которых основана как раз на использовании API.

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

Группы API

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

-API «Авторизация»

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

-API «Пользователи», «Друзья»

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

-API «Группы»

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

-API «Фотографии», «Фотоальбомы», «Видео», «Видеоальбомы», «Аудиозаписи»

Программные методы в рамках данного раздела API позволяет, соответственно, удаленно управлять медиа-материалами пользователя или группы.

-API «Сообщения»

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

-API «Реклама»

Программные методы в рамках данного раздела API позволяют удаленно управлять рекламными материалами, рекламными кампаниями в социальной сети.

-API «Товары», «Маркет»

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

-Специфичное API

Некоторые социальные сети предоставляют специфичные только для них методы API, например, API «Платежи», API «Обсуждения», API «Страницы» и т.п. В некоторых случаях их также можно применять для ведения бизнеса и раскрутки в социальных сетях.

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

4. Архитектура приложения


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

Критерии описания архитектуры приложения:

         Компоненты системы и их взаимодействие;

         Самые важные классы и функции;

         Организация данных (какие именно будут данные и где их хранить);

         Структура пользовательского интерфейса (примерное описание, какие компоненты содержит);

         Обработка исключительных ситуаций и сбоев;

         Безопасность;

         Использование технологий и стороннего программного обеспечения;

         Использование ресурсов (сколько людей будет заниматься разработкой и какие машинные ресурсы потребуются);

         Способы развития системы.

Архитектура

За основу архитектуры приложения было решено использовать трехслойный шаблон, из концепции слоев, который включает в себя:

         Представление (Как пользователь видит приложение);

         Источник данных (Работа с данными).

Представление пользователя - полностью содержится в мобильном приложени.

Бизнес логика - частично находится в приложении(на клиенте), частично на сервере.

Данные пользователя хранятся на сервере.

Рисунок 4.1- Компоненты приложения

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

         Компонент представления отвечает за пользовательский интерфейс;

         Прикладной компонент реализует алгоритм решения конкретной задачи;

         Компонент управления ресурсом обеспечивает доступ к необходимым ресурсам.

Компонент представления(gui) содержит:

         Форму для регистрации;

         Tabed activity с тремя вкладками: профиль, карта, новости;

         Кнопку с настройками.

В бизнес логику будут входить классы:

         Работа с google maps;

         Работа со встречами;

         Работа со списком друзей;

         Работа с локальной базой данных;

         Работа с новостями;

         Классы всех activity;

         Работа с чатом;

         Работа с пользовательскими аккаунтами.

Для доступа к ресурсам будет использоваться:

         Стандартный класс DBHelper, для sqlite;

         JDBC драйвер, для postgreeSQL.

Доступ к данным будет работать через Интернет с:

         API google maps;

         API базы данных;

         API социальных сетей.

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

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

Для безопасности пользователя используется HTTPS соединение, пароли хранятся в кэшированном виде.

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

5. Программный код


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

Рисунок 5.1 - Файлы программного кода

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

MainActivity -Класс главной активности приложения, содержит в себе работу с TabHost, который содержит три вкладки:

         Профиль;

         Карта;

         Новости.

ProfileActivity - Класс для работы с вкладкой профиля, позволяет работать с информацией пользователя, выводить:

         Имя;

         Фамилию;

         Возраст;

         Рейтинг;

         Информацию о VIP;

         Счет пользователя;

         Список друзей;

         Информация о ближайшем событии.

MapActivity - Класс для работы с вкладкой каты, позволяет работать с Google картой, загружает из БД координаты маркеров и отображает их на карте, так же позволяет сфокусироваться на текущем местоположении пользователя.

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

LoginActivity - Данная часть кода отвечает за вход или регистрацию пользователя в системе.

MarkerPressActivity - Этот класс вызывается, при нажатии на надпись на маркере из вкладки «карта», позволяет просмотреть полное название встречи, её дату и количество участников.

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

ShowNewsActivity - Этот класс отвечает за показ новости, возможность поделиться новостью в социальной сети и присоединиться к данной встрече.

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

DBHelper - Данный класс создает локальную базу данных SQLite на телефоне. В этой базе хранятся настройки приложения.

FriendsListActivity - Данная активность отображает список друзей пользователя.

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

RegisterActivity - Этот класс работает с данными пользователя, при регистрации, введенные данные отправляются в базу данных.

User - модель пользователя для удобной работы.

 


6. Разработка интерфейса


В Android studio файлы интерфейса описываются на языке XML. XML -файл содержит информацию о расположении элементов и их идентификаторах. Данная информация нужна для вызова элементов из кода приложения. Очень важно правильно разметить интерфейс, поскольку у всех android - устройств разное разрешение экрана. Если разметить интерфейс плохо, то интерфейс будет отображаться некорректно. В ходе разработки был спроектирован интерфейс (На рисунках фон интерфейса белый, чтоб не возникло трудностей при печати). В список разработанных файлов разметки входит:

         Восемь файлов разметки экрана;

         Один файл разметки пункта списка.

Перечень файлов интерфейса приведен на рисунке 6.1.

Рисунок 6.1 - Перечень файлов интерфейса

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

         Окно логина;

         Главное окно с тремя вкладками;

         Вкладка «Профиль»;

         Вкладка «Карта»;

         Вкладка «Новости».

1) Окно логина

Первое что увидит пользователь, зайдя в приложение - окно логина. Оно имеет:

         Два текстовых поля (для логина и пароля);

         Кнопку для входа в приложение;

         Кнопку для регистрации;

         Анимацию при загрузке данных.

В окне логина, при нажатии кнопки «войти» идет проверка правильности введенных данных, которая сопровождается анимацией ожидания.

Рисунок 6.2 - Окно логина

2) Главный экран

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

         Профиль;

         Карта;

         Новости.

Рисунок 6.3 - Главное окно приложения

Эта активность является коренной активностью приложения, при ее закрытии закрывается все приложение.

3) Профиль

Вкладка профиль - одна из главных вкладок приложения, она содержит информацию о пользователе:

         Имя;

         Фамилия;

         Фотография;

         Возраст;

         Рейтинг;

         Информация о ближайшем событии;

-        Cписок друзей.

Рисунок 6.4 - Вкладка профиль

4) Карта

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

Пользователь может:

         Передвигать карту;

         Поворачивать карту;

         Находить свое местоположение;

         Нажимать на маркеры;

Рисунок 6.5 - Вкладка с картой

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

5) Новости

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

В пункте списка содержится информация:

         Название мероприятия;

         Дата проведения мероприятия;

         Возрастная категория мероприятия.

Рисунок 6.6 - Вкладка с мероприятиями

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

6) Вкладка создания встречи

На данной вкладке пользователь может сам создать встречу, для этого есть:

         Поле с вводом названия встречи;

         Карта, на которой можно установить место встречи.

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

Рисунок 6.7 - Вкладка создания встречи

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

7) Вкладка описания встречи

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

         Название;

         Дата встречи;

         Число участников;

         Кнопка «Присоединиться к встрече».

Рисунок 6.8 - Вкладка описания встречи

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

Если пользователь захочет присоединиться к встрече, то он должен нажать кнопку «Присоединиться».

Если встреча пользователю не интересна, то он может вернуться на карту.

8) Вкладка описания мероприятия

Данная вкладка открывается, когда пользователь нажимает на мероприятие из списка мероприятий. Тут расположена информация о:

         Название мероприятия;

         Дата мероприятия;

         Описание мероприятия;

         Изображение, связанное с мероприятием;

         Кнопка «Поделиться» и кнопка «Присоединиться».

Рисунок 6.9 - Вкладка описания мероприятия

Посмотрев информацию о мероприятии, пользователь может решить пойдет он на него или нет.

Пользователь может нажать кнопку «Поделиться», кнопку «Я пойду на встречу» или кнопку «Назад».

9) Окно регистрации

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

         Имя;

         Фамилию;

         Логин;

         Пароль;

         Возраст;

         Свою фотографию.

Рисунок 6.10 - Вкладка регистрации

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

10) Разметка пункта списка

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

Будем выводить в пункте списка:

         Название мероприятия;

         Дату мероприятия;

         Возрастную категорию.

Рисунок 6.11 - Внешний вид пункта списка

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

7. Тестирование


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

В первую очередь проверим работу трёх главных вкладок:

         Профиль;

         Карта;

         Новости.

Рисунок 7.1 - Внешний вид вкладки профиль

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

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

         Место встречи;

         Название встречи.

Рисунок 7.2 - Внешний вид вкладки карта

Так же кнопка определения своего местоположения и кнопка добавления встречи работают корректно.

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

         Название мероприятия;

         Дату мероприятия;

         Возрастную категорию.

Рисунок 7.3 - Внешний вид вкладки новости

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

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

Авторизация помогает:

         распознать пользователя;

         отличить разных пользователей;

         защитить данные пользователей.

Рисунок 7.4 - Внешний вид вкладки авторизация

Из рисунка 7.4 видно, что авторизация работает корректно, кнопка регистрации перенаправляет пользователя на страницу с регистрацией.

Кроме основных вкладок были протестированы и второстепенные вкладки приложения:

         Описание новости;

         Описание встречи;

         Создание встречи.

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

Рисунок 7.5 - Внешний вид вкладки новости

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

На вкладке описания встречи видим:

         Название встречи;

         Дату встречи;

         Количество присоединившихся людей.

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

Рисунок 7.6 - Внешний вид вкладки описание встречи

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

Вкладка создания встречи содержит

         Карту;

         Ввод названия встречи;

         Маркер, который можно передвигать по карте.

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

Рисунок 7.7 - Внешний вид вкладки создание встречи

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

Рисунок 7.8 - Внешний вид вкладки регистрация

При нажатии кнопки «Регистрация» все данные сохраняются и пользователь может зайти под своим логином и паролем в приложение.

В рамках тестирования были проверены следующие вкладки:

         Профиль;

         Карта;

         Новости;

         Авторизация;

         Описание новости;

         Описание встречи;

         Создание встречи;

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

         Элемент списка.

Из скриншотов программы видно, что:

         Все работает корректно;

         Программа нигде не вылетает;

         Данные из базы данных достаются правильно;

         Нету неожиданных ошибок программы;

         Разметка отображается правильно, все находится на своих местах.

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

 


8. Документация пользователя


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

 

8.1 Руководство пользователя


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

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

Руководящими стандартами для создания документа Руководство пользователя могут являться как РД 50-34.698-90 в п.п. 3.4. «Руководство пользователя», так и ГОСТ 19.505-79 «Руководство оператора. Требования к содержанию и оформлению».

Таким образом, мы можем выделить следующие основные разделы руководства пользователя:

)Назначение системы.

)Условия применения системы.

)Подготовка системы к работе.

)Описание операций.

)Аварийные ситуации.

Назначение системы

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

Условия применения системы

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

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

         Квалификация пользователя - данный подраздел должен содержать требования к навыкам и знаниям пользователя (пример: «Пользователи должны обладать навыками работы с операционной системой Windows XP»).

Подготовка системы к работе

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

Описание операций

Это основной раздел документа Руководство пользователя, который содержит пошаговую инструкцию для выполнения того или иного действия пользователем.

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

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

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

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

Аварийные ситуации

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

Получившееся руководство пользователя приложения представлено в приложении 3.

 

8.2 Пользовательское соглашение


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

Особую актуальность вопросы защиты интернет-сервиса приобретают в связи с принятием так называемого «антипиратского закона», которым возлагается ответственность на информационного посредника за размещение или предоставление доступа к материалам, нарушающим интеллектуальные права третьих лиц. Закон вступает в силу с 01 августа 2013 г., в связи с чем пользовательские соглашения и схему взаимодействия с пользователем необходимо привести в соответствие с ужесточившимися требованиями.

Основания возникновения ответственности

-        Распространение запрещенной информации и материалов;

         Нарушение договорных обязательств по срокам и/или качеству услуг;

         Ненадлежащая реклама;

         Внедоговорное причинение вреда имуществу, здоровью или жизни;

         Ущемление личных неимущественных прав;

         Недобросовестная конкуренция.

Способы ограничения ответственности путем определения вида и содержания договора

-        Безоговорочное присоединение к условиям публичной оферты;

         Замена услуг лицензией на использование программно-аппаратных средств;

         Безвозмездность лицензии;

         Отказ от гарантий и предоставление сервиса «как есть»;

         Ответственность при наличии вины;

         Форс-мажор и действия третьих лиц;

         Введение предельной суммы компенсации;

         Получение лицензии на пользовательский контент (UGC) при его добавлении;

         Возложение ответственности за UGC на пользователей;

         Отсутствие премодерации;

         Правила обращения правообладателя;

         Введение процедуры вступления пользователя в спор (авторизации);

         Определение условий блокировки аккаунта и удаления контента;

         Тестовый характер сервиса;

         Упрощенный порядок изменения условий и отзыва оферты, прекращения договора;

         Выделение условий предоставления платных услуг в отдельное соглашение;

         Взимание платы за доступ к функционалу, а не услуги на его основе;

         Снятие ответственности за использование учетных данных;

         Введение требований к размещаемым рекламным материалам;

         Получение согласия на использование персональных данных;

         Определение допустимого порядка уведомления пользователей;

Получившееся соглашение представлено в приложении 4.

 


Заключение


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

Архитектура приложения на основе геолокации, с элементами социальной сети не сильно отличается от стандартных мобильных приложений на android, в ней так же присутствует GUI и слой доступа к ресурсам. Отличия наблюдаются только в среднем слое - бизнес логике, в отличие от простых android приложений появляются элементы работы с google maps, пользовательскими аккаунтами и чатом. На данный момент все функции, которые должна содержать такая программа - реализуемы встроенными в Android studio классами и подключаемыми к java библиотеками.

Для оценки производительности приложения будет построена модель на базе аппарата сетей Петри [2]. Модель будет включать генератор трафика [3] и сервер приложений для определения времени отклика по запросам пользователя. Задержка передачи данных по сети Интернет будет моделироваться с помощью прибавления ко времени передачи данных случайной величины.

Список использованных источников

 

1.      Анализатор трафиков сайтов: сайт в контакте [Электронный ресурс] // Режим доступа: https://ru.megaindex.com/info/vk.com

.        Суконщиков А.А. Построение и анализ модели сети АСУП на базе аппарата модифицированных нечетких сетей Петри: / А.А. Суконщиков, Д.В. Кочкин - Монография / Вологда: 2015.

.        Кочкин Д.В. Модель генератора трафика на базе аппарата модифицированных нечетких сетей Петри: / Информатизация процессов формирования открытых систем на основе СУБД, САПР, АСНИ и систем искусственного интеллекта / Вологда: 2015. С. 77-81.

.        Герман О.В. Введение в веб-технологии. Учебное посо­бие. Мн.: ДизайнПро, 1995. - 456 с.

.        Сотник С. Л. Конспект лекций по курсу «Основы проектирования web-систем», 1997-1998.

.        Зандстра М., JAVA: объекты, шаблоны и методики программирования, 3-е издание = JAVA Objects, Patterns and Practice, Third Edition - М.: «Вильямс», 2010. - С. 560. - ISBN 978-5-8459-1689-1.

 


Приложение 1


(обязательное)

код работы с открытыми данными

import org.json.JSONArray;org.json.JSONException;org.json.JSONObject;java.io.BufferedReader;java.io.InputStream;java.io.InputStreamReader;java.net.HttpURLConnection;java.net.URL;java.util.ArrayList;class NewsActivity extends Activity {

public static String LOG_TAG = "my_log";

final ArrayList<String> AllEvents = new ArrayList<String>();

ListView listView;

ArrayAdapter<String> adapter;

JSONArray myJsonArray;

public void SetListView()

{

listView = (ListView) findViewById(R.id.main_viev);

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> parent, View itemClicked, int position,

long id) {

TextView textView = (TextView) itemClicked;

String strText = textView.getText().toString(); // получаем текст нажатого элемента

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

Intent intent = new Intent(NewsActivity.this, ShowNewsActivity.class);

try {

for (int i = 1; i < myJsonArray.length(); i++) {

JSONObject elem = myJsonArray.getJSONObject(i);

if(elem.getString("Название мероприятия").equals(strText)){

intent.putExtra("header", elem.getString("Название мероприятия"));

intent.putExtra("data", elem.getString("Дата"));

intent.putExtra("time", elem.getString("Время"));

intent.putExtra("description", elem.getString("Описание"));

intent.putExtra("picture", elem.getString("Ссылка на картинку"));

intent.putExtra("age", elem.getString("Возрастная категория"));

intent.putExtra("place", elem.getString("Место проведения"));

}

}

}

catch (JSONException e) {

Log.d(LOG_TAG, "cant parse ");

e.printStackTrace();

}

startActivity(intent);

}

});

adapter = new ArrayAdapter<String>(this, R.layout.list_item, AllEvents);

// Привяжем массив через адаптер к ListView

listView.setAdapter(adapter);

}

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_news);

new ParseTask().execute();

}

private class ParseTask extends AsyncTask<Void, Void, String> {

HttpURLConnection urlConnection = null;

BufferedReader reader = null;

String resultJson = "";

@Override

protected String doInBackground(Void... params) {

// получаем данные с внешнего ресурса

try {

URL url = new URL("http://api.opendata.gov35.ru/v1/dataset/?id=3525093804-Affiche&format=json");

urlConnection = (HttpURLConnection) url.openConnection();

urlConnection.setRequestMethod("GET");

urlConnection.connect();

InputStream inputStream = urlConnection.getInputStream();

StringBuffer buffer = new StringBuffer();

reader = new BufferedReader(new InputStreamReader(inputStream));

String line;

while ((line = reader.readLine()) != null) {

buffer.append(line);

}

resultJson = buffer.toString();

} catch (Exception e) {

e.printStackTrace();

}

return resultJson;

}

@Override

protected void onPostExecute(String strJson) {

super.onPostExecute(strJson);

JSONArray dataJsonObj = null;

String secondName = "";

try {

dataJsonObj = new JSONArray(strJson);

//обрежем двойные записи

JSONArray bufer = new JSONArray();

for (int i = 1; i < dataJsonObj.length(); i++){

if(!dataJsonObj.getJSONObject(i).getString("Название мероприятия").equals(dataJsonObj.getJSONObject(i-1).getString("Название мероприятия")))

bufer.put(dataJsonObj.getJSONObject(i));

}

dataJsonObj = bufer;

//обрежем двойные записи

myJsonArray = dataJsonObj;

Log.d(LOG_TAG, "количество объектов: " + dataJsonObj.length());

// 2. перебираем и выводим все мероприятия

for (int i = 1; i < dataJsonObj.length(); i++) {

JSONObject event = dataJsonObj.getJSONObject(i);

AllEvents.add(event.getString("Название мероприятия"));

}

SetListView();

} catch (JSONException e) {

Log.d(LOG_TAG, "cant parse ");

e.printStackTrace();

}

}

}

}

Приложение 2


(обязательное)

код веб - сервера

using System;System.Net;System.Net.Sockets;System.Text;System.Text.RegularExpressions;System.Threading;Npgsql;HTTPServer

{

internal class Server

{

private readonly TcpListener _listener; // Объект, принимающий TCP-клиентов

private static void ClientThread(object stateInfo)

{

var client = new Client((TcpClient)stateInfo);

}

// Запуск сервера

public Server(int port)

{

// Создаем "слушателя" для указанного порта

_listener = new TcpListener(IPAddress.Any, port);

_listener.Start(); // Запускаем его

// В бесконечном цикле

while (true)

{

// Принимаем новых клиентов. После того, как клиент был принят, он передается в новый поток (ClientThread)

// с использованием пула потоков.

ThreadPool.QueueUserWorkItem(new WaitCallback(ClientThread), _listener.AcceptTcpClient());

}

}

// Остановка сервера

~Server()

{

// Если "слушатель" был создан

if (_listener != null)

{

// Остановим его

_listener.Stop();

}

}

private static void Main(string[] args)

{

// Определим нужное максимальное количество потоков

// Пусть будет по 4 на каждый процессор

var maxThreadsCount = Environment.ProcessorCount * 4;

// Установим максимальное количество рабочих потоков

ThreadPool.SetMaxThreads(maxThreadsCount, maxThreadsCount);

// Установим минимальное количество рабочих потоков

ThreadPool.SetMinThreads(2, 2);

// Создадим новый сервер

// На порту 80

var serv = new Server(80);

}

}

// Класс-обработчик клиента

internal class Client

{

// Конструктор класса. Ему нужно передавать принятого клиента от TcpListener

public Client(TcpClient client)

{

// Объявим строку, в которой будет хранится запрос клиента

var request = "";

// Буфер для хранения принятых от клиента данных

var buffer = new byte[1024];

// Переменная для хранения количества байт, принятых от клиента

int count;

// Читаем из потока клиента до тех пор, пока от него поступают данные

while ((count = client.GetStream().Read(buffer, 0, buffer.Length)) > 0)

{

// Преобразуем эти данные в строку и добавим ее к переменной Request

request += Encoding.ASCII.GetString(buffer, 0, count);

// Запрос должен обрываться последовательностью \r\n\r\n

// Либо обрываем прием данных сами, если длина строки Request превышает 4 килобайта

// Нам не нужно получать данные из POST-запроса (и т. п.), а обычный запрос

// по идее не должен быть больше 4 килобайт

if (request.IndexOf("\r\n\r\n", StringComparison.Ordinal) >= 0 || request.Length > 4096)

{

break;

}

}

// Парсим строку запроса с использованием регулярных выражений

// При этом отсекаем все переменные GET-запроса

var reqMatch = Regex.Match(request, @"^\w+\s+([^\s\?]+)[^\s]*\s+HTTP/.*|");

// Если запрос не удался

if (reqMatch == Match.Empty)

{

// Передаем клиенту ошибку 400 - неверный запрос

//SendError(Client, 400);

return;

}

// Получаем строку запроса

var requestUri = reqMatch.Value;

// Если в запросе запрашивались координаты вернем их.

if (requestUri.Contains("coordinates=true"))

{

var db = new DatabaseHelper();

// Код простой HTML-странички

var result = db.GetCoordinates();

// Необходимые заголовки: ответ сервера, тип и длина содержимого. После двух пустых строк - само содержимое

var str = "HTTP/1.1 200 OK\nContent-type: text/html\nContent-Length:" + result.Length.ToString() + "\n\n" + result;

// Приведем строку к виду массива байт

var coordinatesBuffer = Encoding.ASCII.GetBytes(str);

// Отправим его клиенту

client.GetStream().Write(coordinatesBuffer, 0, coordinatesBuffer.Length);

// Закроем соединение

client.Close();

}

else if (requestUri.Contains("user") && requestUri.Contains("password"))

{

// Вернем true, если такой логин, пароль есть.

var login = requestUri.Substring(requestUri.IndexOf("user=", StringComparison.Ordinal) + 5, requestUri.IndexOf("&", StringComparison.Ordinal) - requestUri.IndexOf("user=", StringComparison.Ordinal) - 5);

var password = requestUri.Substring(requestUri.IndexOf("password=", StringComparison.Ordinal) + 9, requestUri.IndexOf("HTTP", StringComparison.Ordinal) - requestUri.IndexOf("password=", StringComparison.Ordinal) - 9);

var db = new DatabaseHelper();

if (db.IsUserExist(login, password.Trim()))

{

var result = "true";

// Необходимые заголовки: ответ сервера, тип и длина содержимого. После двух пустых строк - само содержимое

var str = "HTTP/1.1 200 OK\nContent-type: text/html\nContent-Length:" + result.Length.ToString() + "\n\n" + result;

// Приведем строку к виду массива байт

var coordinatesBuffer = Encoding.ASCII.GetBytes(str);

// Отправим его клиенту

client.GetStream().Write(coordinatesBuffer, 0, coordinatesBuffer.Length);

// Закроем соединение

client.Close();

}

else

{

var result = "false";

// Необходимые заголовки: ответ сервера, тип и длина содержимого. После двух пустых строк - само содержимое

var str = "HTTP/1.1 200 OK\nContent-type: text/html\nContent-Length:" + result.Length.ToString() + "\n\n" + result;

// Приведем строку к виду массива байт

var coordinatesBuffer = Encoding.ASCII.GetBytes(str);

// Отправим его клиенту

client.GetStream().Write(coordinatesBuffer, 0, coordinatesBuffer.Length);

// Закроем соединение

client.Close();

}

}

}

}

internal class DatabaseHelper

{

private static NpgsqlConnection GetConnection()

{

const string server = "qdjjtnkv.db.elephantsql.com";

const string userId = "sjzpvdny";

const string psw = "JVAq-oGOUs4DBoA7AAimMJiuWroGnTD6";

return new NpgsqlConnection("Server=" + server

+ ";User Id=" + userId

+ ";Password=" + psw

+ ";Database=" + userId + ";");

}

// Метод, возвращающий координаты из бд.

public string GetCoordinates()

{

var myConnection = GetConnection();

var result = "[";

const string selectQuery = "select * from coordinates";

var myComand = new NpgsqlCommand(selectQuery, myConnection);

try

{

myConnection.Open();

var reader = myComand.ExecuteReader();

while (reader.Read())

{

var lat = reader.GetDouble(1);

var lon = reader.GetDouble(2);

try

{

result += "{ \"lat\" : " + lat + ", \"lon\" : " + lon + " },";

}

catch (Exception e)

{

Console.WriteLine(e);

throw;

}

}

myConnection.Close();

}

catch (Exception e){

myConnection.Close();

Console.WriteLine(e);

throw;

}

if (result.Length > 1){

result = result.Substring(0, result.Length - 1);

}

return result + "]";

}

// Метод, возвращающий существует пользователь или нет.

public bool IsUserExist(string login, string password){

var myConnection = GetConnection();

var selectQuery = "select * from clients where login='" + login + "' and password='" + password + "'";

var myComand = new NpgsqlCommand(selectQuery, myConnection);

try {

myConnection.Open();

var reader = myComand.ExecuteReader();

if (reader.Read()){

myConnection.Close();

return true;

}

myConnection.Close();

return false;

}

catch (Exception e){

return false;

}

}

}

}

Приложение 3


(обязательное)

Руководство пользователя

1.      Назначение системы.

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

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

2.      Условия применения системы.

Требования к аппаратному обеспечению:

Смартфон с операционной системой Android 4.0 и выше.

Наличие стабильного интернет соединения.

512мб и более оперативной памяти.

Квалификация пользователя:

Пользователь должен владеть базовыми навыками работы с ОС Android 4.0 или выше.

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

3.      Подготовка системы к работе.

Для запуска приложения необходимо:

Подключиться к интернету.

Зайти в Play market под своим аккаунтом

Найти с помощью поиска приложение GoMeet.

Нажать кнопку «Установить».

Согласиться на предоставление программе прав на геолокацию и выход в интернет.

Зарегистрировать аккаунт, через приложение.

Войти со своего аккаунта в приложение.

4.      Описание операций.

- Для просмотра своего профиля нужно нажать на вкладку «Профиль».

Чтобы просмотреть события на карте нужно нажать вкладку «Карта» и передвигать карту касанием одного пальца.

Для создания собственной встречи нужно открыть вкладку «Карта», найти там кнопку «+» и нажать на нее. В открытом окне передвинуть маркер на желаемое место и дать название встречи. После этого нажать кнопку «Создать».

Для просмотра новостей нужно нажать на вкладку «Новости». На открывшейся странице будет доступен список новостей, которые можно просмотреть.

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

Для удаления своего профиля необходимо написать администрации.

5.      Аварийные ситуации.

При отказах или сбоях в системе, необходимо обратиться к администрации приложения, на почту: GoMeet@gmail.com.

 


Приложение 4


(обязательное)

Пользовательское соглашение

1. Термины, используемые в настоящих Правилах

.1. Мобильное приложение GoMeet(или Приложение) - социальная сеть и доступная Пользователю через мобильное приложение и иные ресурсы, представляющая собой результат интеллектуальной деятельности в форме программы для ЭВМ. Социальная сеть представлена в объективной форме совокупностью данных и команд, и порождаемых аудиовизуальных отображений (включая входящие в ее состав графические изображения и пользовательский интерфейс), (далее - данные и команды), предназначенных для функционирования ЭВМ и мобильных устройств в целях получения определенного результата в виде организации функционала социальной сети. Совокупность данных и команд состоит из активированных и неактивированных данных и команд.

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

2. Статус Правил пользования Приложением

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

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

2.3. Пользователь обязан полностью ознакомиться с настоящими Правилами до момента регистрации в Приложении. Регистрация Пользователя в приложении означает полное и безоговорочное принятие Пользователем настоящих Правил в соответствии со ст. 438 Гражданского кодекса Российской Федерации.

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

3. Статус Приложения GoMeet

.1. Права на Приложение принадлежат Администрации Приложения. Последняя предоставляет доступ к Приложению всем заинтересованным лицам в соответствии с настоящими Правилами и действующим законодательством Российской Федерации.

3.2. Настоящими Правилами установлены условия, в соответствии с которыми права на использование информации и результатов интеллектуальной деятельности (включая, но не ограничиваясь литературными, музыкальными, аудиовизуальными произведениями и фонограммами, произведениями графики и дизайна, фотографическими произведениями, программами для ЭВМ) в составе отдельных разделов Программы, могут принадлежать Пользователям Программы и иным лицам, самостоятельно создавшим и/или разместившим указанные объекты в Приложении без непосредственного участия Администрации.

4. Администрация Приложения GoMeet

.1. Под Администрацией Приложения GoMeet (ранее и далее - Администрация Приложения или Администрация) в настоящих Правилах и иных специальных документах, размещенных в Приложении, понимается создатели приложения «GoMeet», и сотрудники, работающие с ними.

4.2. Обращения, предложения и претензии физических и юридических лиц к Администрации Приложения в связи с настоящими Правилами и всеми вопросами по функционированию Приложения, нарушениями прав и интересов третьих лиц при его использовании, а также для запросов уполномоченных законодательством Российской Федерации лиц могут быть направлены на почтовый адрес GoMeet@gmail.com.

5. Регистрация в Приложении и статус Пользователя

.1. Регистрация Пользователя в Приложении является бесплатной, добровольной и производится в самом приложении.

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

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

5.4. Пользователь несет ответственность за достоверность, актуальность, полноту и соответствие законодательству Российской Федерации предоставленной при регистрации информации и ее чистоту от претензий третьих лиц.

5.5. При регистрации Пользователь соглашается с настоящими Правилами и принимает на себя указанные в них права и обязанности, связанные с использованием и функционированием Приложения.

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

5.7. Обработка персональных данных Пользователя осуществляется в соответствии с законодательством Российской Федерации. Администрация обрабатывает персональные данные Пользователя в целях предоставления Пользователю доступа к использованию функционала Приложения.

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

6. Обязанности Пользователя Приложения

.1. При использовании Приложения Пользователь обязан:

-    соблюдать положения действующего законодательства Российской Федерации, настоящих Правил и иных специальных документов Администрации;

-              предоставлять при регистрации достоверные, полные и актуальные данные, следить за их актуализацией;

-              информировать Администрацию о несанкционированном доступе к персональной странице и/или о несанкционированном доступе и/или использовании пароля и логина Пользователя;

-              не предоставлять доступ другим Пользователям к собственной персональной странице или к отдельной содержащейся на ней информации в случае, если это может привести к нарушению законодательства Российской Федерации и/или настоящих Правил, специальных документов Администрации Приложения;

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

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

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

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

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

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

7. Функционирование Приложения GoMeet и ответственность при его использовании

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

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

7.3. Администрация не занимается предварительной модерацией или цензурой информации Пользователей и предпринимает действия по защите прав и интересов лиц и обеспечению соблюдения требований законодательства Российской Федерации только после обращения заинтересованного лица к Администрации Приложения в установленном порядке.

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

7.5. Администрация имеет право направлять Пользователю информацию о развитии Приложения и его функционала, а также рекламировать собственную деятельность.

7.6. Ограничение ответственности Администрации Приложения:

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

·              7.6.2. Используя приложение, пользователь соглашается с тем, что скачивает из приложения или с его помощью любые материалы на свой собственный риск и несет личную ответственность за возможные последствия использования указанных материалов, в том числе за ущерб, который это может причинить компьютеру пользователя или третьим лицам, за потерю данных или любой другой вред;

8. Заключительные положения

.1. Настоящие Правила составляют соглашение между Пользователем и Администрацией относительно порядка использования Приложения и его функционала и заменяют собой все предыдущие соглашения между Пользователем и Администрацией.

8.2. Настоящие Правила регулируются и толкуются в соответствии с законодательством Российской Федерации. Вопросы, не урегулированные Правилами, подлежат разрешению в соответствии с законодательством Российской Федерации.

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

8.4. Настоящие Правила вступают в силу для Пользователя с момента его присоединения к ним и действуют в течение неопределенного срока.

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

Похожие работы на - Создание мобильного приложения на основе геолокации с элементами социальной сети

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!