АННОТАЦИЯ 3
Перечень условных обозначений 4
Введение 5
1 Выявление и анализ требований 6
1.1 Анализ существующих аналогов чатов 6
1.2 Описание нефункциональных требований 9
1.2.1 Производительность 9
1.2.2 Совместимость 10
1.2.3 Расширяемость 10
1.3 Варианты использования приложения-примера 11
1.3.1 Возможности чатов 11
1.3.2 Возможности сообщений 12
1.3.3 Вспомогательные возможности 15
1.4 Основные процессы библиотеки 15
1.4.1 Синхронизация локального и удаленного хранилищ 16
1.4.1.1 Синхронизация списка чатов 16
1.4.1.2 Синхронизация сообщений 18
1.4.2 Синхронизация систем предпросмотра и выбора вложений 21
1.5 Схема конфигурации библиотеки 23
2 Проектирование и архитектура библиотеки и приложения-примера 27
2.1 Выбор стека технологий 27
2.2 Архитектурный подход MVVM 28
2.3 Паттерн Coordinator 29
2.4 Слой сервисов 29
2.5 Внедрение сервисов в виде зависимостей 30
2.6 Применение MVVM, координаторов и сервисов 31
2.7 Диаграмма пакетов библиотеки 32
2.8 Диаграмма пакетов приложения-примера 33
2.9 Диаграммы классов библиотеки 33
2.9.1 Система библиотеки 37
2.9.2 Конфигурация библиотеки 37
2.10 Генерация ячейки сообщения 37
2.10.1 Блоковая система создания ячейки 38
2.10.2 Типы промежуточных LayoutBlock 38
2.10.3 Типы конечных MessageLayoutBlock 38
3 Реализация библиотеки 40
3.1 Используемые технологии 40
3.2 Сервисы библиотеки 41
3.2.1 Сервисы для внутренней работы библиотеки 41
3.2.1.1 Сервис для хранения сущностей CoreDataStorageService 41
3.2.1.2 Сервис для хранения вложений AttachmentsStorageService 43
3.2.1.3 Сервис для управления локальными данными CacheService 43
3.2.1.4 Сервис для реализации запросов к удаленному серверу RemoteService 44
3.2.1.5 Сервис для работы с доступом к фотографиям устройства MediaService 44
3.2.2 Сервисы для контроля библиотеки 44
3.2.2.1 Сервис контроля ControlService 44
3.2.2.2 Сервис событий EventService 44
3.2.3 Демонстрация работы сервисов на примере отправки сообщения 45
3.3 Список сообщений 47
3.3.1 Коллекция сообщений 47
3.3.2 Создание и доставка LayoutBlock для ячейки сообщения 47
3.4 Тестирование библиотеки 49
3.4.1 Динамическое изменение настроек конфигурации 49
3.4.2 Генерация ячейки сообщения 50
3.4.3 Синхронизация выбора и предпросмотра вложений 50
3.4.4 Синхронизация локального и удаленного хранилищ в списке сообщений 51
3.4.5 Действия над сообщениями 51
3.4.6 Пример реализации теста 52
4 Реализация приложения-примера 54
4.1 Главный экран настроек 54
4.2 Визуальные элементы настройки чатов и настройки сообщений 55
5 Требования к удаленному серверу 56
5.1 Типы соединений для списка чатов 56
5.2 Типы соединений для списка сообщений 56
5.3 Логика работы с сущностью «Сообщение» 57
5.4 Общие требования 57
Заключение 58
Список использованных источников и литературы 59
Приложение 63
В современном мире общение между людьми является ключевым элементом повседневной жизни. Без передачи друг другу полезной информации мы не смогли бы достигать высот в науке, технологиях, бизнесе и других сферах жизни. Одним из результатов эволюции общения стали мессенджеры, которые позволяют нам связываться с людьми в любой точке мира, используя лишь интернет-соединение.
Компаниям, работающим в различных отраслях, необходимо создавать чаты для общения с клиентами и внутрикорпоративного общения, однако создание собственного мессенджера может быть дорогостоящим и времязатратным процессом. Примечательно, что при этом большинство чатов имеют схожие функционал и реализацию.
По этой причине наша компания приняла решение разработать универсальную библиотеку чатов, которая содержит набор особенностей, необходимых для создания чата. Эти особенности покроют все запросы большинства компаний. Особенности можно включать и выключать в зависимости от требований конкретного проекта. Мы также планируем использовать эту библиотеку в своих будущих продуктах, чтобы ускорить процесс разработки и снизить затраты на создание собственного мессенджера.
В рамках данной дипломной работы описываются анализ, проектирование и разработка библиотеки чатов для iOS [1], а также приложения-примера, использующего библиотеку. Для приложения-примера приводится анализ и проектирование удаленного сервера, необходимые для корректной эксплуатации библиотеки. Также следует отметить, что для удобства потенциальных пользователей разработана и Android-версия [2], которая способна взаимодействовать с удаленным сервером аналогично iOS-клиенту, однако в рамках данной работы она не рассматривается.
Таким образом, цель работы заключается в разработке библиотеки чатов и приложения-примера для платформы iOS, а также составлении требований для серверной части, которая сможет корректно взаимодействовать с библиотекой. В задачи проекта входит анализ требований, выбор архитектуры и реализация библиотеки и приложения- примера, а также составление требований для удаленного сервера
В процессе работы над проектом были выявлены и проанализированы требования к библиотеке, после чего она была спроектирована и реализована с применением современных технологий и подходов проектирования.
Для разработанной библиотеки были написаны UI, Unit и Integration тесты с целью выявить потенциальные слабости системы, закрепить имеющийся функционал и сохранить качество кода.
Для демонстрационных целей было спроектировано и разработано приложение- пример, способное полностью отобразить все реализованные возможности библиотеки.
Библиотека готова к интеграции с удаленным сервером, для которого были составлены и обозначены требования, соблюдение которых обеспечит корректную синхронизацию локального и удаленного хранилищ.
Реализованная библиотека готова к применению, однако текущая версия не является конечной. В будущем планируется расширение функциональности, например, добавление возможности предпросмотра не только фотографий, но и видеофайлов.
В ходе работы был получен уникальный опыт составления и анализа требований, проектирования и реализации библиотеки, возможности которой должны быть гораздо более гибкими, чем в обычном приложении. В том числе был получен ценный опыт написания тестов, создания визуальных элементов, зависящих друг от друга, и определения контрактных обязательств для удаленного сервера.
1. iOS - операционная система для смартфонов от компании Apple: [Электронный ресурс] / URL:
https://ru.wikipedia.org/wiki/IOS (дата обращения 17.04.23)
2. Android - операционная система для смартфонов от компании Google:
[Электронный ресурс] / URL:
https://www.android.com/intl/ru_ru/ (дата обращения 17.04.23)
3. VK: [Электронный ресурс] / URL:
https://vk.com (дата обращения 17.04.23)
4. Telegram: [Электронный ресурс] / URL:
https://telegram.org (дата обращения 17.04.23)
5. WhatsApp: [Электронный ресурс] / URL:
https://www.whatsapp.com (дата обращения 17.04.23)
6. Коллекция для ячеек
[Электронный ресурс] / UICollectionView:
URL:
https://developer.apple.com/documentation/uikit/uicollectionview (дата обращения 20.04.23)
7. Выступление представителей компании Apple с заявлением об улучшении
производительности создания визуальных элементов:
[Электронный ресурс] / URL:
https://developer.apple.com/videos/play/wwdc2018/220/ (дата обращения 19.04.23)
8. AutoLayout - технология, основанная на понятии «ограничение интерфейса»:
[Электронный ресурс] / URL:
https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/Autolay outPG/index.html (дата обращения 19.04.23)
9. Математические методы анализа алгоритмов:
[Электронный ресурс] / URL:
http://www.imash.ru/netcat_files/file/BIBLIO/matematika/Грин%20Д_,%20Кнут%20Д_%20- %20Математические%20методы%20анализа%20алгоритмов%20-%201987^к (дата
обращения 19.04.23)
10. Исследование эффективности систем создания элементов интерфейса:
[Электронный ресурс] / URL:
https://github.com/layoutBox/LayoutFrameworkBenchmark (дата обращения 21.04.23)
11. Время отклика системы, приемлемое для пользователя:
[Электронный ресурс] / URL:
https://www.nngroup.com/articles/response-times-3-important-limits/ (дата обращения
22.04.23)
12. App Store: [Электронный ресурс] / URL:
https://www.apple.com/ru/app-store/ (дата обращения 02.05.23)
13. StatCounter - статистика версий iOS на устройствах Apple:
[Электронный ресурс] / URL:
https://gs.statcounter.com/ios-version-market-share/mobile-tablet/worldwide/#monthly-202209- 202303-bar (дата обращения 02.05.23)
14. WebSockets: [Электронный ресурс] / URL:
https://www.wallarm.com/what/a-simple-explanation-of-what-a-websocket-is (дата обращения 03.05.23)
15. HTTPS - протокол передачи данных с шифрованием:
[Электронный ресурс] / URL:
https://www.nic.ru/help/chto-takoe-protokol-https_8670.html (дата обращения 04.05.23)
..64