Аннотация 2
Введение 4
1 Новые возможности системы 6
1.1 Изменения в отображении расписания 6
1.2 Аутентификация пользователя в системе ТГУ.Аккаунты 7
1.3 Информация о пользователе 10
2 Анализ недостатков текущей реализации приложения 11
2.1 Сравнение императивного и декларативного подходов реализации UI 11
2.2 Недостатки текущего архитектурного подхода 12
2.3 Неочевидность структуры данных в проекте 15
2.4 Плохая расширяемость кода 17
3 Анализ и выбор архитектуры приложения 19
3.1 Инструменты для декларативной реализации UI 19
3.2 Сравнение архитектурных подходов к реализации UI 19
3.3 Выбор архитектурного подхода семейства UDF 23
3.4 Проектирование архитектуры приложения 25
3.5 Многомодульная структура проекта 28
4 Рефакторинг проекта 31
4.1 Используемые технологии и языки 31
4.2 Выделение общих компонентов UI 32
4.3 Выбор объекта для отображения расписания 34
4.4 Данные о сохраненном расписании 38
4.5 Отображение расписания 39
4.6 Работа с датами 42
5 Реализация новой функциональности 44
5.1 Добавление недельного формата отображения расписания 44
5.2 Отображение объединенного расписания 46
5.3 Реализация аутентификации пользователя 48
5.4 Отображение данных о пользователе 51
Заключение 53
Список литературы 54
Приложение А 56
Приложение Б 57
Приложение В 59
Приложение Г 60
Одной из самых важных проблем в современном мире является проблема организации времени. С этой трудностью может столкнуться любой занятый человек. Особенно данная тема актуальна в сфере образования, когда потребность ознакомиться с расписанием занятий может возникнуть как у обучающихся, так и у сотрудников образовательных организаций. Однако, иногда могут возникнуть непредвиденные обстоятельства, которые приведут к полному изменению составленного расписания. Данная проблема особо актуальна в студенческой сфере, когда расписание занятий может меняться довольно часто. Поэтому, было бы удобно иметь инструмент, который сможет формировать и отображать расписание занятий, уведомляя о его изменении, а также выдавать дополнительную информацию о занятии, например, о месте его проведения и преподавателе. Такая функциональность была бы полезна как студентам, так и преподавателям и сотрудникам университета в целом.
Помимо прочего, необходимость воспользоваться таким инструментом может возникнуть в любой момент. С этой проблемой может помочь справиться мобильное устройство. Смартфон - неотъемлемая часть жизни любого человека. Более половины мирового населения используют мобильные телефоны, и это количество постоянно возрастает [1]. Поэтому мобильное приложение для просмотра расписания окажется всегда под рукой. К тому же, согласно данным [2], на начало 2023 года доля смартфонов с операционной системой Android по всему миру составляет более 70%. Таким образом, разработка приложения для устройств с операционной системой Android является актуальной задачей.
Приложение с описанной функциональностью уже существует в Томском государственном университете (далее - ТГУ). Мобильное приложение TSU.InTime предоставляет возможность ознакомиться с расписанием занятий в ТГУ для выбранной группы или преподавателя, а также посмотреть занятость аудиторий на определенный период времени. Помимо основных функций приложение предоставляет пользователю дополнительные возможности - например, ознакомиться с картой кампусов или пометить расписание как избранное для быстрого доступа к нему.
В процессе эксплуатации приложения заказчиком, которым выступает ТГУ, возникла необходимость в разработке дополнительных возможностей . Однако, в ходе внедрения новой функциональности, были выявлены недостатки способов реализации данного приложения. Таким образом, для корректной реализации новых возможностей системы появилась необходимость проведения рефакторинга кода данного проекта.
Рефакторинг - это процесс видоизменения исходного кода программы, не влияющий на внешний вид и поведение приложения, целью которого является упрощение понимания построения и работы данной программы для разработчика. Со временем в проект добавляются все новые функции и возможности, которые могут усложнять понимание исходного кода. К тому же, нередко для добавления новой функциональности в проект появляется необходимость изучать работу старого кода и изменять его. Наконец, технологии могут устаревать со временем, и для соответствия кода новым принятым стандартам необходимо изменять его с опорой на обновленные подходы. В таких случаях появляется необходимость проводить рефакторинг кода. В случае с мобильным приложением TSU.InTime при расширении функциональности возникла необходимость в рефакторинге; в противном случае изменение текущего кода приложения могло привести к его неправильной работе или к неоправданному усложнению кода, который трудно будет воспринимать в дальнейшем.
Исходя из данных рассуждений, было принято решение произвести рефакторинг текущей версии системы и добавить новую функциональность в приложение. Целью данной работы является проведение рефакторинга и реализация новой версии Android- приложения TSU.InTime.
Для достижения данной цели можно выделить следующие задачи.
1. Формализовать требования к новым возможностям системы.
2. Провести анализ недостатков текущей реализации приложения.
3. Спроектировать новую структуру проекта и выбрать наиболее подходящий архитектурный подход.
4. Провести рефакторинг исходного кода.
5. Реализовать новые возможности системы.
В результате проделанной работы был проведен рефакторинг Android-приложения TSU.InTime и выпущена его новая версия с расширенной функциональностью. Приложение Г демонстрирует новую функциональность данной версии. Все поставленные задачи были выполнены. Был проведен анализ недостатков предшествующей версии приложения и возможных способов решения этих проблем. В рамках планирования рефакторинга был проведен анализ парадигм программирования для реализации компонентов пользовательского интерфейса, а также анализ различных архитектурных подходов. На основании выводов, полученных в ходе анализа, был проведен рефакторинг мобильного приложения с использованием конкретных инструментов и описанных принципов. После проведения рефакторинга была реализована новая версия приложения с расширенными набором возможностей для пользователя.
Стоит отметить, что каждый подход и каждая реализация имеет свои сильные и слабые стороны. Новые принятые принципы разработки приложения требуют должного внимания и наличия достаточных знаний разработчика, что повышает порог вхождения в данный проект. Очевидно, что рефакторинг приложения требует повышения квалификации всей команды разработчиков, занимающихся поддержкой и расширением проекта. Тем не менее, выделенные в данной работе преимущества нового подхода к реализации приложения позволят расширять и внедрять в систему новые возможности без усложнения понимания работы проекта и изменения существующего кода .
На текущий момент новая версия Android-приложения полностью готова и опубликована в таких магазинах приложений, как Google Play [28] и RuStore [29]. Планируется поддержка и расширение приложения, а также публикация его новых версий.