Программирование • 02 мая 2024 • 5 мин чтения

Что такое архитектура мобильного приложения

Архитектура мобильного приложения помогает создать продукт, который удобен в использовании и решает задачи заказчика. Разбираемся, каких видов бывает архитектура и как её построить.

Что такое архитектура приложения

Мобильное приложение — это связанные фрагменты кода, которые работают как единый механизм. Например, пользователь нажимает иконку на экране смартфона — и открывается приложение Яндекс Go, в котором можно вызвать такси, арендовать самокат или заказать еду. За работу этих функций отвечает код внутри приложения.

Архитектура мобильного приложения — это структура, в которой собраны все компоненты, а также описание их взаимодействия между собой, способов управления данными и пользовательским интерфейсом.

Сергей Сорокин, автор курса по Android-разработке в Яндекс Практикуме

Код должен не просто работать, но и быть гибким: например, чтобы добавлять новые функции или изменять существующие. Поэтому так важно, как код организован — то есть какая у него архитектура.

Зачем нужно проектировать приложение

Разработку мобильного приложения можно сравнить с производством и продажей товаров в магазине: когда пользователь заходит в него, он видит «товары» — меню, личный кабинет, кнопку «Заказать» и т. д. Эти «товары» необходимо «поставлять». Сделать это можно двумя способами:

1. Сконцентрировать код в одном месте. В этом случае, если что-то пойдёт не так, будет трудно понять, где именно произошла ошибка. Но если производство «товаров» разделить, то поддерживать процессы и искать ошибки будет проще.

Сергей Сорокин

Когда мы говорим о разработке архитектуры мобильного приложения, то в первую очередь обращаем внимание на то, как организовать работу интерфейса и кода внутри приложения — то есть того, что пользователь видит и что от него скрыто.

2. Сделать каждый фрагмент автономным. Это называют «чистой архитектурой», её составляющие:

Data-слой. Всё, что связано с данными: доступ к информации, проверка, утилиты. Обычно данные хранятся на сервере. Дата-слой позволяет обращаться к серверу и запрашивать информацию. Дата-слой можно сравнить со складом материалов для производства.
Слой Domain. Здесь вся бизнес-логика приложения: каким образом будут организованы, отсортированы и распределены по категориям данные из дата-слоя. Доменный слой — это «фабрика», на которой производятся «товары».
Слой Presentation. На этом уровне отслеживаются изменения в пользовательском интерфейсе и принимаются решения, как на них реагировать. Например, запрашивать новые данные или отправлять информацию на сервер. Слой представления — это менеджер магазина.
UI-слой. Пользовательский интерфейс: «витрина» в магазине.

Итак, хорошая архитектура помогает:

● Обеспечить надёжную работу приложения: оно выполняет все функции в соответствии с потребностями пользователей.

● Быстро и удобно изменять один или несколько элементов — и это никак не отражается на остальных.

● Применять эффективные подходы и инструменты для тестирования. Например, после изменения той или иной части проекта в автоматизированном тестировании можно проверить бизнес-логику, не привлекая тестировщиков.

● Работать слаженно в команде: когда продукт создают несколько человек, у каждого своя зона ответственности. Если работать без архитектуры, специалисты будут мешать друг другу. В результате возникнут ошибки и конфликты, а процесс запуска приложения затянется.

На курсах по мобильной разработке студенты Практикума учатся программировать, работать с данными, изучают распространённые архитектурные шаблоны. И всё это — под руководством наставников — действующих разработчиков с опытом больше 3 лет.

Виды архитектуры приложений

За корректную работу и взаимодействие слоёв приложения отвечают прослойки — архитектурные шаблоны. Рассмотрим самые популярные.

MVC

Этот шаблон делит логику приложения на три части:

1. Model — модель. Отвечает за получение и хранение данных по «распоряжениям» от контроллера и их передачу в слой представления. В нашей аналогии это — «производство» и «склад».

2. View — представление, вид. Получает данные от модели, отображает их в интерфейсе, реагирует на решения контроллера и передаёт ему действия, которые выполняет пользователь. Представление — это «магазин» и «витрины».

3. Controller — контроллер. Анализирует действия пользователя, принимает решения по изменению представления и отвечает за то, какие именно данные View будет получать от модели. Контроллер — это прослойка, которая связывает модель и представление. Если «магазин» работает по модели MVC, в роли контроллера будет выступать менеджер, который следит за наличием товара в магазине, забирает на фабрике готовые товары и расставляет их на полках. У него большая зона ответственности, но он не занимается производством и не контролирует остатки материалов на складе.

В шаблоне MVC все части архитектуры взаимодействуют друг с другом

MVP

Также делит приложение на три части, но ответственность между компонентами распределяется так, чтобы изменения в одном не влияли на другие:

1. Model — модель. Отвечает за получение, хранение и обработку данных в соответствии с бизнес-логикой приложения.

2. View — представление, вид. Отвечает за отображение данных, которые получает от презентера, и передачу ему действий пользователя. Представителя также можно сравнить с менеджером магазина, который получает информацию и реагирует на неё, при этом сам в магазин и на фабрику не ходит. Например, если товары закончились, он отправляет на производство сообщение, что нужна новая партия. Фабрика выпускает нужное количество товара и сама отправляет его в магазин, где товары расставляют — снова без помощи менеджера.

3. Presenter — презентер. Анализирует действия пользователя, принимает решения по изменению представления и передачи ему данных, которые получает из модели .

В этой схеме архитектуры приложения Presenter — прослойка между видом и моделью

MVVM

Включает в себя:

1. Model — модель. Получает, хранит и обрабатывает данные, отвечает за бизнес-логику приложения. Это «фабрика» мобильного приложения, которая остаётся неизменной.

2. View — представление, вид. Отвечает за отображение данных и взаимодействие с пользователем. Это «магазин», он также не изменяется.

3. ViewModel — вью-модель. Обеспечивает поток данных для отображения или обновления состояния представления, взаимодействует с моделью, чтобы запросить или изменить данные в зависимости от действий пользователя. При таком шаблоне у менеджера ещё меньше обязанностей: ему не обязательно знать, есть ли на складе материалы, сделает ли фабрика нужное количество игрушек. Товары в нужное время и в нужном количестве просто попадают на полки магазина, поскольку изменяется прослойка — способ попадания товаров на витрины.

С шаблоном MVVM программу легко тестировать и масштабировать, так как модель и представление не пересекаются

MVI

Самый современный шаблон, состоит из компонентов:

1. Model — модель. В отличие от других шаблонов, модель — или «фабрика» — в MVI представляет состояние пользовательского интерфейса, например: процесс загрузки, ошибки, текущее состояние экрана.

2. View — представление, вид. Интерфейс приложения — «витрина». Отвечает за отображение данных и отслеживание действий пользователя.

3. Intent — намерение. То, что пользователь или приложение намереваются сделать. Представим, что у менеджера есть десятки версий магазина, которые можно менять в зависимости от ситуации. Например, версия, в которой все полки заняты товарами. Или другая — с пустой витриной. Покупатель будет недоволен, что не может приобрести товар, значит, нужно сменить состояние магазина на то, где все полки заняты. В этом примере намерение покупателя приобрести товар приводит к изменению состояния модели — фабрики и вида — витрины магазина.

MVI — самый новый и при этом самый в работе сложный шаблон архитектуры

С чего начать создание архитектуры приложения и как её построить

Чёткой инструкции, как создавать архитектуру, нет: это процесс, в котором многое зависит от цели приложения, его системы, компонентов и связей между ними. Чтобы создать архитектуру приложения на Android или iOS, нужно в первую очередь понимать, что представляет из себя система приложения в целом. Рассмотрим на примере магазина. Чтобы «распутать» систему, надо ответить на вопросы:

● Какие материалы хранятся на складе: пластик, дерево, металл или что-то ещё?
● Откуда материалы поступают на склад: с завода за границей или местного производства?
● На фабрике конвейерное или ручное производство?
● Как товар попадает в магазин?
● Какие обязанности и зоны ответственности у менеджера?
● Какой формат у магазина: супермаркет или с одним продавцом?
● Сколько витрин и какие они?

Точно так же «распутывают» систему мобильного приложения. Когда будет понятно, из каких частей она состоит, можно определять слои — Data, Domain, Presentation, UI — и зоны ответственности. Формировать архитектуру приложения можно, когда понятно, как пользователь ощущает себя в системе.

Совет эксперта

Сергей Сорокин

Говорить об архитектуре можно, когда специалист уже умеет программировать: писать правильный код, грамотно пользоваться структурами данных и алгоритмами. Только когда заходит речь о работе в команде на коммерческом проекте, можно начинать разбираться в том, как строить архитектуру приложений.
Статью подготовили:
Сергей Сорокин
Яндекс Практикум
Автор курса по Android-разработке
Яндекс Практикум
Редактор
Анастасия Павлова
Яндекс Практикум
Иллюстратор

Дайджест блога: ежемесячная подборка лучших статей от редакции

Поделиться

Успейте начать учебу в Практикуме до конца ноября со скидкой 20%

Wed Jul 24 2024 14:07:01 GMT+0300 (Moscow Standard Time)