Тип работы:
Предмет:
Язык работы:


РАЗРАБОТКА ВЕРСИИ 3.0 СЕРВЕРНОГО ПРИЛОЖЕНИЯ TSU.INTIME

Работа №184725

Тип работы

Бакалаврская работа

Предмет

информационные системы

Объем работы61
Год сдачи2024
Стоимость4395 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
18
Не подходит работа?

Узнай цену на написание


Перечень условных обозначений, символов, сокращений, терминов 3
Введение 4
1 Анализ требований к новым возможностям 6
1.1 Новые возможности для студентов и преподавателей 6
1.2 Новые возможности для мини-приложений 9
1.3 Новые возможности для разработчиков TSU.InTime 11
2 Анализ недостатков реализации второй версии приложения 12
2.1 Недостатки структуры приложения 12
2.2 Негибкая система задач по расписанию 15
2.3 Недостатки реализации модерации контента 15
2.4 Недостатки исходного кода 17
3 Рефакторинг приложения 20
3.1 Проектирование обновлённой структуры приложения 20
3.2 Реализация обновлённой структуры приложения 22
3.3 Рефакторинг работы с задачами по расписанию 30
3.4 Рефакторинг модерации контента 32
3.5 Исправление выявленных недостатков исходного кода 34
4 Реализация новых возможностей 37
4.1 Сохранение расписаний 37
4.2 Получение информации об учебной нагрузке преподавателей 39
4.3 Получение информации об образовании 42
4.4 Управление разрешениями мини-приложения 42
4.5 Ролевая система 46
4.6 Отправка уведомлений модераторам об отправке контента на модерацию 48
4.7 Изменение порядка страниц мини-приложения 51
4.8 Фича-тогглы 51
Заключение 52
Список использованных источников и литературы 53
Приложение А Реализация паттерна «Шаблонный метод» при рефакторинге изменения мини-приложений


TSU.InTime — платформа для студентов и преподавателей Томского государственного университета, позволяющая получать информацию о расписании любой группы или преподавателя и занятости аудиторий университета, а также многое другое. Платформа включает два клиентских веб-приложения и мобильные приложения для Android и iOS. Клиентские приложения взаимодействуют с серверным приложением, которое занимается получением данных от разных сервисов ТГУ и их преобразованием под нужды клиентских приложений.
Осенью 2021 года вышла версия 2.0 серверного приложения, в которой оно было переписано на язык программирования Kotlin с использованием фреймворка Ktor. На тот момент платформа предназначалась исключительно для получения расписания и проектировалась соответствующим образом. Однако в дальнейшем она предоставляла всё более многочисленные возможности: например, возможность бронирования аудиторий и управления бронированиями, отправки обратной связи разработчикам, получения данных об образовании или должности [2].
В 2023 году с версией 3.5 мобильные приложения TSU.InTime были преобразованы в суперприложения — большие приложениями с расширенным набором функций [3]. Это потребовало разработки платформы для публикации сторонними разработчиками своих мини-приложений, реализованных через конструктор или при помощи фреймворка React [4], для чего было разработано отдельное веб-приложение для разработчиков и доработано серверное приложение TSU.InTime. Итоговый список компонентов платформы представлен на рисунке 1.
В данный момент платформа активно развивается, предоставляя новые возможности. Однако их реализация затрудняется тем, что изначально она не была рассчитана на добавление функциональных возможностей помимо получения информации о расписании и наличие большого количества клиентских приложений.
Целью работы является разработка версии 3.0 серверного приложения TSU.InTime.
Исходя из рассуждений выше, были поставлены и выполнены следующие задачи:
1. Провести анализ требований к новым возможностям.
2. Провести анализ недостатков реализации второй версии приложения.
3. Провести рефакторинг приложения.
4. Реализовать новые возможности.


Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В результате проделанной работы был проведён рефакторинг серверного приложения TSU.InTime и разработана его новая версия с новыми возможностями. Все поставленные задачи были выполнены в соответствии с требованиями. Был проведён анализ недостатков реализации предыдущей версии приложения и возможных вариантов решения выявленных проблем. В рамках рефакторинга был проведён анализ различных архитектурных подходов, на основе которого была спроектирована новая структура приложения, позволяющая в дальнейшем при необходимости разбить приложение на микросервисы. В ходе рефакторинга удалось исправить недостатки реализации предыдущей версии, что позволило реализовать новую версию приложения с новыми возможностями.
На текущий момент новая версия серверного приложения полностью реализована и находится на этапе тестирования. В дальнейшем планируется добавление новых возможностей и возможное разделение приложения на микросервисы.
В ходе работы был получен опыт рефакторинга больших систем и проектирования многомодульной структуры, работы с Discord API и реализации сложных функциональных возможностей, таких как разрешения и ролевая система мини-приложений.



1. Sealed classes and interface // Kotlin. — [Б. м.], 2024. — URL: https://kotlinlang.org/docs/sealed-classes.html(дата обращения: 06.05.2024).
2. Разработка суперприложения TSU.InTime : магистерская диссертация / Д. А. Шарапов. — Томск, 2023.
3. Яндекс Go, WeChat, Uber: почему компании переходят на суперприложения // РБК. — [Б. м.], 2021. — URL: https://trends.rbc.ru/trends/industry/5f442cce9a79470716c04b5e(дата обращения: 23.02.2024).
4. React. — [Б. м.], 2024. — URL: https://react.dev(дата обращения: 06.05.2024).
5. Discord. — [Б. м.], 2024. — URL: https://discord.com(дата обращения: 02.03.2024).
6. Feature Toggles (aka Feature Flags) // martinFowler.com — [Б. м.], 2024. — URL: https://martinfowler.com/articles/feature-toggles.html(дата обращения: 02.03.2024).
7. Мартин Р Чистая архитектура. Искусство разработки программного обеспечения / Р Мартин. — СПб. : Питер, 2018.
8. Как создать эндпоинты и зачем они нужны? // vc.ru. — [Б. м.], 2022. — URL: https://vc.ru/dev/391965-kak-sozdat-endpointy-i-zachem-oni-nuzhny(дата обращения: 10.03.2024).
9. Ларман К. Применение UML и шаблонов проектирования / К. Ларман ; пер. с. англ. А.Ю. Шелестова — 2-е изд. — М. : Издательский дом «Вильямс», 2004. — 624 с.
10. Фаулер М. Рефакторинг: улучшение существующего кода. / М. Фаулер ; пер. с. англ. С. Маккавеева — СПб: Символ-Плюс, 2003. — 432 с.
11. UUID // Baeldung. — [Б. м.], 2024. — URL: https://www.baeldung.com/java-uuid(дата обращения: 07.04.2024).
12. Parnas D.L. On the Criteria To Be Used in Decomposing Systems into Modules // Communications of the ACM. — 1972. — Vol. 15, №12. — P. 1053-1058.
13. Сравнение микросервисной и монолитной архитектур / Atlassian. — [Б. м.], 2023. — URL: https://www.atlassian.com/ru/microservices/microservices-architecture/ microservices-vs-monolith (дата обращения: 06.05.2024).
14. Еще раз про многомодульность Android-приложений // Хабр. — [Б. м.], 2020. — URL: https://habr.com/ru/companies/kaspersky/articles/520766(дата обращения: 06.05.2024).
15. Polymophism // GitHub. — [Б. м.], 2024. — URL:
https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/polymorphism.md#sealed- classes(дата обращения: 06.05.2024).
16. Riel, Arthur J. Object-Oriented Design Heuristics / Arthur J. Riel. — Boston, MA: Addison-Wesley, 1996. — 379 p.
17. Quartz Enterprise Job Scheduler // Quartz. - [Б. м.], 2023. - URL: https://www.quartz- scheduler.org(дата обращения: 06.05.2024).
18. Ranges and progressions // Kotlin. — [Б. м.], 2023. — URL:
https://kotlinlang.org/docs/ranges.html(дата обращения: 06.05.2024).
19. Type-safe builders // Kotlin. — [Б. м.], 2024. — URL: https://kotlinlang.org/docs/type- safe-builders.html(дата обращения: 07.04.2024).
20. Приемы объектно-ориентированного проектирования. Паттерны
проектирования / Э. Гамма, Р Хелм, Р Джонсон, Дж. Влиссидес ; пер. с англ.
А. Слинкина — СПб. : Питер, 2001. — 368 с.
21. Inline value classes // Kotlin. — [Б. м.], 2023. — URL:
https://kotlinlang.org/docs/inline-classes.html(дата обращения: 06.05.2024).
22. Visibility modifiers // Kotlin. — [Б. м.], 2024. — URL:
https://kotlinlang.org/docs/visibility-modifiers.html(дата обращения: 06.05.2024).
23. Алгоритм SHA-3 // Хабр. — [Б м.], 2022. — URL:
https://habr.com/ru/articles/534082(дата обращения: 05.05.2024).
24. Личный кабинет студента — [Б. м.], 2024. — URL: https://lk.student.tsu.ru(дата обращения: 05.05.2024).
25. ТГУАккаунты — [Б. м.], 2024. — URL: https://accounts.tsu.ru(дата обращения: 05.05.2024).
26. ТГУ Сотрудники — [Б. м.], 2024. — URL: https://persona.tsu.ru(дата обращения: 10.04.2024).
27. Object expressions and declarations // Kotlin. — [Б. м.], 2024. — URL: https://kotlinlang.org/docs/object-declarations.html(дата обращения: 29.05.2024).
28. Кириевски, Дж. Рефакторинг с использованием шаблонов / Дж. Кириевски. — СПб. : ООО «Диалектика», 2019. — 400 с.
29. Webhook Resource // Discord Developer Portal. — [Б. м.], 2024. — URL: https://discord.com/developers/docs/resources/webhook(дата обращения: 06.05.2024).


Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2025 Cервис помощи студентам в выполнении работ