Projetando arquitetura iOS: Motivação

Vamos abordar o tópico de criação de arquitetura própria nesta série de artigos.

O que é arquitetura?

Arquitetura é o nível mais alto de um design de sistema.

O design do sistema é uma maneira de facilitar a produção de código para um aplicativo.

Um aplicativo é um meio necessário para cumprir uma meta (comercial).

Posso pular?

Mesmo quando você não prepara o design do sistema antes de criar o aplicativo, ainda precisa pensar em escrever qualquer código, e isso é chamado de design acidental do sistema, o que leva à arquitetura acidental (AA).

É fácil detectar a arquitetura acidental:
P: Por que nosso código é tão feio?
A: razões históricas…

O que vou ganhar?

O objetivo de configurar uma arquitetura formal em vez de entrar no código é estabelecer diretrizes, restrições e padrões de acordo com os quais o código crescerá.

Pense em configurar a arquitetura como um caminho de ferro para que um código se mova como um trem.

Por que eu iria me conter?

Diretrizes, restrições e padrões ajudam a:

  • código seguindo o princípio de menor espanto;
  • entender como um sistema existente funciona;
  • evite reinventar a roda;
  • espalhar idéias de trabalho na comunidade.

Posso usar um desses da internet?

Você deve aprender com eles, mas todos eles sofrem de muitos problemas:

  • não forneça estratégias de crescimento;
  • bom ajuste para apenas um tamanho de aplicativos e equipe;
  • nível aleatório de abstração e comunicação de componentes;
  • vaga distribuição de papéis (estou olhando para você "Trabalhador");
  • implacável e fanático;)

Tenho habilidades suficientes para projetá-lo?

Ninguém tem o suficiente, mas quanto mais você tem, mais fácil é ver a luz no fim de um túnel.
Aqui está o que irá ajudá-lo:

  • leia livros antigos e white papers sobre design e padrões de sistema;
  • evite novos artigos tentando vender uma bala de prata;
  • aprenda o que funciona para os outros na produção;
  • usar outras plataformas como fonte de inspiração;
  • tente idéias em casa, se elas funcionam, leve-as ao trabalho;
  • adie a decisão se você estiver em dúvida (faça uma coisa idiota enquanto isso);
  • discutir idéias e implementações com os outros.

Onde começar?

Devemos sempre começar analisando os requisitos (como em qualquer empreendimento maduro) que surgem do objetivo.

Requisitos funcionais.

Na pior das hipóteses, você pode obter uma especificação funcional de alto nível, como esta:

  • Aplicativo de lista de compras;
  • Capacidade de colaborar em listas;
  • Capacidade de usar sem conexão à Internet.

Nesse estágio, a empresa pode pensar que os requisitos são suficientes e é sua responsabilidade encontrar respostas para o enxame de perguntas que surgem, por exemplo:

  • Como será a interface do usuário?
  • Quais dispositivos o aplicativo tem que suportar?
  • Eu tenho que fazer do lado do servidor também?

Quando você não consegue pensar em outras perguntas, é hora de avançar para a próxima etapa.

Requisitos organizacionais.

Se não for um projeto greenfield, pode haver muitas restrições à sua escolha de arquitetura, pelo menos tente responder a estas perguntas:

  • Quem é meu time?
  • O que eles esperam da nossa arquitetura?
  • Nós estabelecemos ferramentas e idiomas?
  • Podemos reutilizar uma arquitetura existente?

Posso finalmente começar a fazer arquitetura?

Sim você pode! Ao reunir requisitos funcionais e organizacionais, você pode começar a delinear suas idéias e, eventualmente, compor uma Arquitetura formal! Mas é uma história totalmente diferente para contar ...

Posso ir para casa agora?

Antes de você levar suas idéias à loucura, sugiro que você as teste contra uma lista de verificação abrangente que compilei para sua conveniência.

Como usar a lista de verificação?

Adote a arquitetura de seu candidato e finja ser seu advogado, respondendo a perguntas como em julgamento (imaginando um júri da comunidade iOS).

Obrigado pela leitura!

Envie-me uma mensagem no Twitter para feedback.

Para onde ir daqui?

Visão geral das arquiteturas iOS existentes.
Revisão do padrão MVC.