

Приложение
Финтех
Поддерживаем и улучшаем приложение на iOS и Android
Не мы придумали и создали продукт, но мы на 100% относимся к проекту, как к своему собственному. Всеми силами стараемся усовершенствовать проект, внедрить лучшие практики и подходы.
Команда заказчика обратились к нам за аудитом мобильного приложения.
Мы проанализировали обе платформы и сделали пошаговый план улучшения кодовой базы проекта. После аудита поняли, что нам комфортно работать вместе и решили продолжить сотрудничество. Вот, что из этого вышло.
Над проектом работает команда из 16 человек: разработчики, тестировщики, дизайнеры, аналитики и руководитель проекта. Рассказываем, как нам удалось усилить продукт.
Перед началом работ приложение обладало общеизвестной проблемой iOS‑приложений, для разработки которых используется архитектурный паттерн MVC (Model View Controller), а именно — Massive-View Controller: ситуация, когда конкретный класс, отвечающий за отдельный экран/экраны раздувается до невероятных размеров, его становится сложно поддерживать и модифицировать.
Применяемые нами практики и паттерны Чистой Архитектуры (The Clean Architecture) позволяют переработать и элегантно структурировать кодовую базу для дальнейшей работы и масштабирования.
Вся новая логика приложения реализуется на шаблонных классах из нашей библиотеки ListController, что позволяет не только унифицировать подход к разработке новых экранов, но и повысить скорость погружения новых разработчиков в проект.
Применяем данные шаблонные классы и в ходе модификации уже написанных экранов — библиотека позволяет гармонично применять Clean Architecture и разбивать имеющийся код на хорошо читаемые классы.
Самым захватывающим на проекте для меня является применение Clean Architecture: корректно структурировать логику взаимодействия слоев приложения порой бывает непросто, особенно в меняющемся контексте.
Проектирование и реализация сложного функционала подобным образом позволяет не только упростить жизнь себе и коллегам, но и получить невероятные эмоции от проделанной работы.
В процессе разработки мы пытаемся отказаться от личных библиотек в пользу использования стандартных механизмов языка Swift. Это позволяет сократить время компиляции и уменьшить размер приложения в целом.
В само приложение внесли когда-то вынесенное в отдельную библиотеку SDK. Проблема заключалось в том, что большинство задач затрагивало базовые сущности приложения, которые как раз и находились в SDK: разработчикам приходилось вносить изменения в два разных проекта, что значительно замедляло процесс применения самих изменений.
Проделали большую работу по рефакторингу кода приложения. Изначально это был многомодульный проект с подключаемыми фиче‑модулями и отдельным сетевым SDK, это затрудняло доработку и замедляло развитие. Улучшили архитектуру, переместили весь код в один модуль, а потом снова разнесли по отдельным. Теперь у SDK свой модуль, у ресурсов свой, как и у каждого нового экрана. Такое внедрение позволило сократить время сборки с пяти до одной минуты.
Благодаря рефакторингу мы избавляемся от устаревшего запутанного кода и применяем новые подходы. Например, сократили время сборки приложения, разделив проект на модули.
Поменялся и подход к разработке, сейчас приложение на пути к Single‑Activity архитектуре, когда навигация между экранами осуществляется через фрагменты. Проблема старого подхода была в том, что запуск Activity — полностью асинхронный процесс. Нет гарантии мгновенного запуска, невозможно его точно контролировать. Внедрение библиотеки Sesame ускорило разработку и упростило проектирование.
Sesame – архитектурная библиотека, разработанная в компании MobileUp. Библиотека позволяет: лаконично описать сложную логику экрана, организовать переходы между экранами, реализовать постраничную загрузку данных, сделать валидацию форм ввода и многое другое.
Начали поддержку совершенно нового подхода к организации UI, принятого в Android‑разработке, — Compose UI. Compose позволяет описывать UI в декларативном стиле, что дает возможность переиспользовать реализованные компоненты на других экранах.
Самым последним нововведением стал постепенный переезд новых экранов на декларативное описание интерфейса посредством Compose.
Такое решение в дальнейшем позволит переиспользовать готовые UI‑компоненты на других экранах, это ускоряет разработку и улучшает читаемость кода.
Разработали тестовый план проекта, внедрили шесть видов тестирования: функциональное (регрессионное, приемочное, исследовательское) и нефункциональное (UI/UX, тестирование локализации и требований).
Для автоматизации тестирования используем сервис TestRail. Он помогает ускорить прогон 900 кейсов, которые мы создали для проверки функциональности приложения.
Много нюансов учли при локализации проекта, когда готовились к релизу в Европе: иная система платежных методов, дат, появление среднего имени и даже такие важные мелочи, как знак евро после суммы, а не перед, как обычно бывает с долларом.
Мне нравится скорость развития проекта, он расширяется, разрастается, быстро появляются новые функции. Здорово быть частью этого и помогать проекту расти.
Помогли доработать дизайн-систему на проекте: унифицировали элементы, экраны. Переработали некоторые сценарии, улучшили пользовательский опыт.
Невероятно классно, что проект, который начался для нас как аудит кода, перерос в глобальное сотрудничество и международный релиз на 27 стран Европы.
Паша Петрович, Коля Тимонин, Дима Захаров, Влад Грохотов, Саша Литвинов, Андрей Комаров, Илья Чуб, Юра Андрианов
Артур Артиков, Виталий Жариков, Дима Старчевский
Ксения Вылегжанина, Юлия Бойко, Дарья Куркина
Женя Свавильнов, Света Бельденкова
Платон Культин
Эл. почта
hello@mobileup.ruМы всегда рады сотрудничеству и новым проектам.
Опишите задачу, и мы с вами свяжемся.
Или напишите в Телеграм.
Мы все изучим и скоро выйдем на связь