4) внутреннее хранилище не менее 2 Гб;
5) наличие wi-fi или радио модуля.
2. Исследовательская часть
2.1 Основные части android-приложения
Современное android-приложение - это программа, написанная на байт-коде, предназначена для выполнения в виртуальной машине Dalvik или для более современной - android runtime.
Любое android-приложение состоит из:
1) java или kotlin классов;
2) манифеста приложений;
3) ресурсов приложения;
4) вспомогательных файлов.
Java или kotlin классы
На рис. 4 изображена иерархия основных классов, необходимых для корректной разработки мобильных приложений, которые будет использовать разработчик. Жёлтым изображены классы, от которых разработчик будет наследовать свои собственные классы.
Рис. 4 Иерархия основных классов android-приложения
View класс [12] является базовым классом, который входит в android sdk ещё с версии 1, разработанный компанией Google. View элемент представляет собой прямоугольный блок на экране приложения, который предназначен для отображения какой-либо графической или текстовой информации или взаимодействия с пользователем.
Activity класс [13] является базовым классом, который также входит в android sdk с версии 1. Активность - составная часть почти всех андроид-приложений, которая является неким экраном, в котором расположены view элементы и заложена определённая логика работы приложения. Возможен переход между экранами приложения, при чём при каждом таком переходе сохраняется состояние предыдущего экрана в специальный стек экранов. Activity может быть в одном из трёх состояний:
1) активно (этот экран находится на переднем плане);
2) приостановлено (этот экран потерял фокус, но всё ещё отображается);
3) завершено (пользовательский экран потерял фокус и уже не отображается).
Fragment [14] - некий аналог activity, который тоже выполняет функцию отображения информации или взаимодействия с пользователем. Ключевая особенность данного элемента, из-за которого он используется почти во всех приложениях, - в одну активность можно встроить несколько фрагментов. Причиной, по которой фрагменты стали настолько распространёнными, является тот факт, что андроид устройства сильно отличаются друг от друга по размеру экрана, поэтому необходима гибкость при разработке приложений.
Сontent provider [15] - специально разработанная оболочка, в которую заключены данные.
Все созданные приложениями базы данных предоставляют доступ только приложению, которое её создало. Если необходимо предоставить доступ к данным какой-то определённой базе данных двум и более приложениям, то контент-провайдер предоставляет такую возможность. На рис. 5 изображена общая схема такого компонента.
Рис. 5 Схема компонента «Content Provider»
Intent [16]. Во всех android-приложениях некоторые операции работают через intent. Intent - это механизм, который описывает определённую операцию, которую необходимо выполнить. В основном intent используется для вызова другой активности (явный и неявный вызов), а также для передачи уведомления, что в приложении произошло какое-то событие. Ещё одним применением intent является рассылка широковещательных сообщений по системе. С помощью данного механизма приложение может реагировать на большинство системных широковещательных сообщений, таких как:
1) изменение состояния сетевого подключения;
2) изменение уровня яркости экрана;
3) изменения уровня зарядки аккумулятора;
4) изменение статуса bluetooth соединения и др.
Broadcast receiver [17] - один из компонентов, включённых в android sdk 1 версии, который отвечает за получение внешних широковещательных сообщений, отправленных с помощью компонента intent, который описан выше, и выполнения определённых действий при их получении.
Service [18] - специально разработанный стандартный класс, который является аналогом фонового процесса, однако не привязан к определённый активности, а является самостоятельным процессом, который при завершении родительской активности может продолжить выполнение задач. Сервисы работают в фоне и, как правило, выполняют следующие действия: сетевые запросы, обработка информации, запуск уведомлений, работа с данными, хранящимися в локальной базе данных и др.
Прямое применение служб - постоянные и регулярные операции, а также отслеживание и обработка событий тогда, когда активность андроид приложения закрыта или работает в пассивном режиме.
Манифеста приложений
Манифест андроид [19] - ещё одна очень важная часть всего приложения, которая выполнена в виде xml-файла и выполняет несколько функций, определённых компанией Google:
1) определяет уникальный идентификатор приложения - имя пакета;
2) содержит описание ключевых компонентов приложения: активность, сервисы, броадкаст-ресиверы, контент-провайдеры;
3) определяет разрешения, по которым приложение будет иметь доступ к защищённым частям API;
4) определяет следующие параметры приложения: иконку, название, глобальную тему, поддержку отображения информации справа налево (необходимо для некоторых стран, например, для ОАЭ), поддержку режима разделённого окна.
Ресурсы приложения
Все современные андроид приложения используют ресурсы. Ресурсы бывают следующих типов: картинки, шрифты, макеты экранов, макеты меню, иконки приложения, цвета, размеры, строковые переменные, стили и др.
Все эти ресурсы приложение может использовать в любом месте кода через специально генерируемый файл R.java. Этот файл содержит в себе список наборов «название-ссылка» на определённый ресурс.
2.2 Основные этапы разработки современного android-приложения
Разработка любого мобильного приложение проходит следующие стадии:
1) бизнес-анализ целевого рынка;
2) составление согласованного технического задания;
3) разработка прототипа будущего приложения;
4) анализ технологий разработки приложений;
5) разработка архитектуры приложения;
6) модульное, интеграционное и системное тестирование;
7) исправление выявленных недочётов при тестировании;
8) создание предрелизной версии;
9) добавление финальной версии разработанного приложения в магазин приложений.
2.2.1 Бизнес-анализ целевого рынка
На первым этапом разработки любого android-приложения стоит определить следующее:
1) какие цели преследуются при создании нового приложения;
2) есть ли приложения конкуренты;
3) ключевые особенности разрабатываемого приложения;
4) целевая аудитория;
5) определить бюджет разработки и поддержки готового программного продукта.
2.2.2 Составление согласованного технического задания
Составление правильного, тщательно продуманного технического задания является чрезвычайно важным этапом работы над проектом. Техническое задание - специальный документ, который составляется заказчиком и утверждается исполнителем, в котором описаны все параметры и характеристики будущего проекта, а также требования, на основе которых будет проводиться итоговое тестирование при приёмке системы. От чётко спланированного технического задания зависит успех мероприятия и уменьшение риской.
2.2.3 Разработка прототипа будущего приложения
Создание прототипа будущего программного продукта - создание макета или модели, чтобы определить структуру приложение и её правильность, описать функциональные особенности. Также прототип может быть использован для обратной связи с заказчиком, чтобы он оперативно мог вносить корректировки.
Одним из прототипов является карта экранов [20], на которой отображены все функциональные возможности разрабатываемого программного продукта в виде экранов приложения. Это очень удобно, так как можно наглядно увидеть все экраны и их цветовое оформление, а также проследить все переходы между отдельными разделами приложения.
2.2.4 Анализ технологий разработки приложений
В результате выполнения выпускной квалификационной работы будет разработано мобильное приложение для операционной системы Android. Программный код будет написан в IDE Android Studio на языке программирования Kotlin.
Android.
23 сентября 2009 года была представлена первая версия операционной системы Android [6]. На тот момент она была малоизвестна, но уже тогда имела потенциал развиться в крупнейшую мобильную операционную систему. На сегодняшний день выпущена уже Android 9.0 pie, которая может быть установлена на таких устройствах, как: смартфоны, планшеты, умные телевизоры, носимая электроника, электронные книги, автомобили, ноутбуку и др.
Более двух миллиардов устройств по всему миру работает на разных версия этой операционной системы, начиная от android 5.0 lollipop, заканчивая новой бета-версии android Q.
Система Android получила свою огромную популярность за счёт следующих факторов:
1) существенное количество типов устройств, на которых возможна работа системы;
2) открытый исходный код продукта, что позволяет сторонним производителям разрабатывать свои прошивки для изготавливаемых устройств;
3) бесплатная политика распространения системы;
4) постоянная оптимизация, развитие и улучшение безопасности системы.
На сегодняшний день Android - самый оптимальный выбор для создания мобильных приложений. Выбирая Android, разработчик уверен, что большинство пользователей смогут установить будущий программный продукт.
IDE.
Для создания android-приложений существует некоторое количество IDE (Integrated Development Environment): Android Studio, Intellij Idea, Eclipse, Xamarin.Studio и др.
Самой популярной и лучшей средой разработки android-приложений, которая была выбрана для данный работы, является Android Studio [21] по следующим причинам:
1) официальная поддержка IDE от компании-разработчика Android - Google;
2) быстрая и стабильная IDE;
3) колоссальная поддержка сообщества;
4) постоянное развитие IDE;
5) большое количество плагинов, облегчающих и улучшающих разработку мобильных приложений и др.
Kotlin.
Представленный в 2011 году, язык программирования Kotlin сразу объектом повышенного внимания среди мобильных разработчиков [7]. Среди достоинств данного языка есть типобезопасность, простота, быстрая компиляция, поддержка JVM, официальная поддержка компании Google с мая 2017 года.
На сегодняшний день язык программирования Kotlin является самым оптимальным выбором для разработки современных, многофункциональных мобильных android-приложений.
2.2.5 Разработка архитектуры приложения
Архитектура приложения - важный компонент в разработки любого мобильного приложения, так как от этого зависит логика работы всего приложения, а также модульность и масштабируемость разработки.
Рассмотрим подробнее работу приложения.
Приложение состоит из главной активности, которое называется MainFragmentHolder, активности логина, активности информации о приложении, активности справки о функциях приложения, активности пользовательского соглашения. Все заявленные функции приложения выполнены в виде отдельных разделов, являющимися фрагментами, и отображаются в одной из вышеперечисленной активности.
2.2.6 Модульное, интеграционное и системное тестирование
Следующим после стадии написания кода программного продукта следует тестирование. Основными видами тестирования являются модульное, интеграционное и системное тестирование.
Модульное тестирование - вид тестирования, при котором проверяется корректность работы отдельных модулей приложения. На этом этапе тестирования можно выявить все недочёты каждого из модулей.
Интеграционное тестирование - вид тестирования, при котором проверяется корректность работы всего приложения в целом, а также правильность взаимодействия всех его отдельных частей.
Системное тестирование - проверка работоспособности всей системы в целом, а также проверка соответствия всей системы заявленным на этапе технического задания требованиям к программному продукту.
2.2.7 Создание предрелизной версии
После того, как программный продукт создан и проведены все необходимые виды тестирований, необходимо сформировать специальный файл или несколько файлов, которые являются установщиками разработанного приложения на устройства заказчика. В случае android-разработки - apk-файл. Android Studio может автоматизировано сформировать такой файл на вкладке «Generate signed apk».
2.3 Карты экранов
Одним из прототипов является карта экранов, на которой отображены все функциональные возможности разрабатываемого программного продукта в виде экранов приложения. Это очень удобно, так как можно наглядно увидеть все экраны и их цветовое оформление, а также проследить все переходы между отдельными разделами приложения.
Разработанная карта экранов изображена на рис. 6.
Рис. 6 Карта экранов
Первый раздел, который увидит пользователь при запуске приложения, - «Авторизация пользователя». В этом разделе присутствуют две кнопки: «Зарегистрироваться» и «Забыли пароль?». Нажатие первой кнопки открывает пользователю новый раздел «регистрация нового пользователя», а вторая - «Восстановление пароля». Также реализован механизм автоматической авторизации пользователя, если в специальном файле во внутренней памяти устройства «login_password.xml» есть информация о сохранённом логине и пароле пользователя.