Tecnologia

Qual arquitetura mobile escolher?

Por: , novembro 22, 2017

Uma dúvida que sempre passa pela mente de quem trabalha com a criação de sistemas é quais, entre as opções disponíveis, são as melhores arquiteturas de desenvolvimento mobile?
Esse é um ponto crítico da criação de uma boa ferramenta. A escolha da arquitetura influencia o modo como os trabalhos serão executados e a facilidade com que o time conseguirá modificar a ferramenta. Portanto, falhas nesse processo podem prejudicar a rotina de todos e, com isso, levar a atrasos, aumento de custos e problemas de qualidade.
Se você tem interesse no tema, continue a leitura e saiba como escolher as melhores arquiteturas para os seus projetos de desenvolvimento!

As características de uma boa arquitetura

Todo desenvolvedor iOS já questionou se a arquitetura escolhida para o desenvolvimento da aplicação foi a melhor opção. Isso é normal e saudável.
Mas afinal de contas, o que define uma boa arquitetura? Existe alguma arquitetura única que se encaixe perfeitamente para todo tipo de problema/solução?
Falamos do tema nos dois artigos sobre arquitetura mobile com ênfase no desenvolvimento de aplicação para iOS publicados no Medium. Na primeira parte, analisamos a mais famosa de todas — MVC. Na segunda parte, foi feita uma análise sobre o MVVM.
Todos os casos analisados tiveram como definição as características de uma boa arquitetura. Simplificando, em três pontos, elas são:

  • Facilidade de uso;
  • Responsabilidades distribuídas;
  • Abertura a testes.

Vamos entender mais a fundo cada um desses aspectos?

Facilidade de uso

O processo de desenvolvimento de software é complexo. Com muitas pessoas e cargos, a companhia deve garantir que todos consigam integrar as soluções disponíveis ao seu dia a dia rapidamente.
Além disso, é fundamental que todos consigam seguir as escolhas do planejamento da forma correta. Assim, a entrega de resultados é feita com mais agilidade e segurança.
Em outras palavras, não adianta escolher uma arquitetura em que seu time não consiga trabalhar, dificultando o processo de desenvolvimento. Imagine sempre que outras pessoas continuarão o desenvolvimento da aplicação; logo, deve-se ter cuidado ao criar e ao escolher alguma arquitetura para o seu sistema.
Lembre-se que o mais óbvio que você pode achar, outro desenvolvedor pode não saber. Nesse sentido, a documentação dos problemas, das estratégias e rotinas é um ponto-chave: isso evita que erros ocorram no futuro, além de criar um referencial claro e objetivo para os profissionais que lidarão com o código-fonte em outros momentos.
Portanto, a arquitetura precisa ser clara e coerente com a necessidade do time. Assim, ficará mais fácil criar, manter e corrigir o sistema mesmo após a sua distribuição.

Responsabilidades distribuídas

A distribuição de responsabilidades auxilia o desenvolvedor a criar a ferramenta. Se bem organizado, o código se torna mais simples, limpo e prático de ser mantido.
Nesse sentido, a melhor arquitetura é aquela que permite uma distribuição inteligente das responsabilidades. A camada de UI, por exemplo, não precisa saber de regras de negócio.
Da mesma forma, não há a necessidade de ter uma camada de serviço que tenha dependência com a view (camada de visualização, a mais próxima do usuário). Isso pode prejudicar a qualidade do sistema e ampliar o tamanho da aplicação de modo desnecessário.

Possibilidade de testes

Os testes são fundamentais para a criação de um sistema. Com eles, os desenvolvedores podem identificar bugs, vulnerabilidades de segurança e outros fatores que prejudiquem a qualidade final do sistema.
Diante disso, as melhores arquiteturas são vistas pelo mercado como aquelas que contribuem para a avaliação da qualidade do código-fonte. Isso vale tanto para os testes manuais como os automatizados, já empregados por muitos negócios.
Escolher uma arquitetura que dificulte o desenvolvimento de testes e prejudique a confiabilidade do código é, portanto, algo que precisa ser evitado. Algumas arquiteturas, como MVC, tendem a dificultar essa parte de testes. Quanto mais testes melhor.

As principais arquiteturas para desenvolvimento de softwares mobile para iOS

A criação de softwares para iOS é uma estratégia adotada por muitas empresas. O ecossistema da Apple é um dos mais populares e rentáveis do planeta.
Além disso, ao longo da última década a empresa conseguiu criar um ambiente bem estruturado para os seus desenvolvedores, com recursos corretamente documentados e uma base de usuários robusta. Ou seja, quem escolhe criar aplicações para iOS tem uma chance de alto retorno sobre o seu investimento.
Entre as melhores arquiteturas de desenvolvimento para a plataforma, duas se destacam: MVC e MVVM são conhecidas pelos seus recursos e, ao mesmo tempo, pelos seus pontos fracos. Saiba mais sobre as duas abaixo!

MVC

Sigla para Model-View-Controller (algo que em português pode ser traduzido como Modelo-Visão-Controle), a MVM é um modelo de arquitetura de três camadas. Também chamada de MVM Cocoa, ela foi adotada pela Apple e tem a estrutura parecida com o esquema abaixo:

As camadas do MVC

No modelo MVC, cada camada tem uma função. Veja os detalhes abaixo!

A camada Model

Essa camada é o centro da aplicação. Nela estão inseridos os comandos da Controller, que serão enviados para a camada View. Ou seja, aqui estão listados itens como as regras de negócios e funções da ferramenta.

A camada View

Nessa camada os dados do software são apresentados ao usuário. Em outras palavras, a camada View é a parte com a qual lidamos ao utilizar a aplicação.

A camada Controller

A camada Controller é a que atua como intermediadora de todas as interações entre a camada de visão (View) e a camada de modelo (Model). Ou seja, essa é a parte da arquitetura que será responsável por enviar e receber os comandos entre as outras duas camadas, solicitar atualizações e notificar a camada View quando ela for representar o modelo.



Esse tipo de arquitetura foi utilizado por muito tempo na criação de aplicações e páginas web. Por permitir o reúso de partes do software e testes isolados, essa arquitetura simplifica as etapas de desenvolvimento e a gestão do código-fonte nesse cenário.
Porém, no ambiente de desenvolvimento para softwares mobile, a situação muda. No ecossistema iOS, as camadas View e Controller não são gerenciadas de modo independente.
Em outras palavras, existe um alto acoplamento entre as camadas View e Controller, o que dificulta a reutilização de código e a obtenção de uma arquitetura mais “maleável”. Tendo como base a estrutura apresentada na imagem, conseguimos realizar uma análise sobre o uso do MVC nas três características definidas em relação à arquitetura:

  • Fácil de usar. ✓
  • Responsabilidades distribuídas. ✗
  • Pode ser testada. ✗

A arquitetura MVVM

Sigla para Model-View-ViewModel (algo que em português pode ser visto como Modelo-Visão-Visão-Modelo), a MVVM é uma arquitetura criada para solucionar os problemas da MVC.
Seu objetivo é inserir uma camada chamada de ViewModel, que possui todo o código necessário para que a camada de apresentação, no caso a View, funcione. Isso diminui o acoplamento entre as camadas. Assim, há mais maleabilidade e independência entre as diferentes partes do código-fonte.
Sua estrutura, quando aplicada no desenvolvimento de aplicações iOS, fica parecido com a imagem abaixo:

As camadas do MVVM

Na MVVM, há algumas mudanças nas funções de cada camada quando comparamos com a MVC. Confira abaixo!

A camada Model

Na arquitetura MVVM, a camada Model terá a função de camada de dados. Ou seja, ela representará o conteúdo da aplicação e pode ter regras de negócio.

A camada View

A camada View também mantém funcionalidades semelhantes às da MVC da Apple. Ela é responsável por gerenciar toda a estrutura de UI, que ficará mais próxima do usuário.

A camada ViewModel

A camada intermediária dessa arquitetura de desenvolvimento de softwares é responsável pela lógica da camada View. Ela também terá acesso às informações da camada Model. Assim, ficará mais fácil para o sistema manipular dados e requisições.
Diante dessa estrutura, o MVVM no ambiente de desenvolvimento de softwares para iOS cria novas responsabilidades e altera profundamente a relação do desenvolvedor com o código-fonte. Na prática, as camadas Controller e View passam a ser uma única unidade. Assim, não só haverá mais facilidade de uso, como também a possibilidade de distribuir responsabilidades e testar facilmente e de forma unificada todos os recursos.
Com isso, conseguimos resolver os dois problemas que encontramos quando analisamos a MVC e temos como resultado de nossa análise, sobre os três aspectos:

  • Fácil de usar. ✓
  • Responsabilidades distribuídas. ✓
  • Pode ser testada. ✓

Conclusão

Não há uma arquitetura perfeita. Há, porém, modelos de desenvolvimento e gestão de software que podem ser alinhar a diferentes necessidades, conforme o projeto de desenvolvimento do negócio.
Uma arquitetura deve ser escolhida com base no “problema” que precisa ser resolvido. A partir do perfil do software que será criado, a empresa deverá identificar qual é capaz de atender aos principais requisitos de uma boa arquitetura: ser fácil de usar, ter responsabilidades distribuídas e ser testada facilmente.
Assim, as melhores arquiteturas são as que permitem a criação de uma aplicação bem estruturada, com recursos inteligentes, e alinhada com o perfil do consumidor. Além disso, elas devem ser capazes de orientar os times de desenvolvimento a terem um trabalho de qualidade, livre de erros e com baixo nível de gargalos. Dessa forma, a companhia poderá entregar uma solução condizente com as expectativas de todos os envolvidos no projeto de desenvolvimento.
Como você escolhe a arquitetura de um software? Conta pra gente!

  • Receba nosso conteúdo em primeira mão.