Diseño de arquitectura iOS: motivación

Abordemos el tema de la creación de arquitectura propia en esta serie de artículos.

¿Qué es la arquitectura?

La arquitectura es el nivel más alto de un diseño de sistema.

El diseño del sistema es una forma de facilitar la producción de código para una aplicación.

Una aplicación es un medio necesario para cumplir un objetivo (comercial).

¿Me lo puedo saltar?

Incluso cuando no prepara el diseño del sistema antes de crear la aplicación, debe pensar antes de escribir cualquier código, y esto se llama diseño accidental del sistema, lo que conduce a una arquitectura accidental (AA).

Es fácil detectar arquitectura accidental:
P: ¿Por qué nuestro código es tan feo?
A: razones históricas ...

¿Qué ganaré?

El propósito de establecer una arquitectura formal en lugar de saltar a la codificación es establecer pautas, restricciones y patrones según los cuales el código va a crecer.

Piense en configurar la arquitectura como colocar un ferrocarril para que un código se mueva a lo largo de él como un tren.

¿Por qué debería contenerme?

Las pautas, restricciones y patrones ayudan a:

  • código siguiendo el principio de mínimo asombro;
  • entender cómo funciona un sistema existente;
  • evite reinventar la rueda;
  • difundir ideas de trabajo en la comunidad.

¿Puedo usar uno de esos de internet?

Deberías aprender de ellos, pero que todos sufren de muchos problemas:

  • no proporcione estrategias de crecimiento;
  • adecuado para solo un tamaño de aplicaciones y equipo;
  • nivel aleatorio de componentes de abstracción y comunicación;
  • distribución vaga de roles (te estoy mirando "Trabajador");
  • implacable y fanático;)

¿Tengo suficientes habilidades para diseñarlo?

Nadie tiene suficiente, pero cuanto más tienes, más fácil es ver la luz al final de un túnel.
Esto es lo que te ayudará:

  • lea libros antiguos y libros blancos sobre diseño y patrones del sistema;
  • evite nuevos artículos tratando de venderle una bala de plata;
  • aprender lo que funciona para otros en producción;
  • usar otras plataformas como fuente de inspiración;
  • pruebe ideas en casa, si funcionan, llévelas al trabajo;
  • aplazar la decisión si tiene dudas (mientras tanto, haga una tontería);
  • Discutir ideas e implementaciones con otros.

¿Donde empezar?

Siempre debemos comenzar analizando los requisitos (como en cualquier esfuerzo maduro) que provienen de la meta.

Requerimientos funcionales.

En el peor de los casos, puede obtener una especificación funcional de alto nivel, como esta:

  • Solicitud de lista de compras;
  • Capacidad para colaborar en listas;
  • Posibilidad de uso sin conexión a internet.

En esta etapa, la empresa podría pensar que los requisitos son suficientes, y es su responsabilidad encontrar respuestas al enjambre de preguntas que surgen, por ejemplo:

  • ¿Cómo será la IU?
  • ¿Qué dispositivos debe admitir la aplicación?
  • ¿Tengo que hacer el lado del servidor también?

Cuando no puede pensar en otras preguntas que hacer, es hora de pasar a la siguiente etapa.

Requerimientos organizacionales.

Si no es un proyecto totalmente nuevo, puede haber muchas restricciones en su elección de arquitectura, al menos intente responder estas preguntas:

  • Quien es mi equipo?
  • ¿Qué esperan de nuestra arquitectura?
  • ¿Tenemos herramientas e idiomas establecidos?
  • ¿Podemos reutilizar una arquitectura existente?

¿Puedo finalmente comenzar a hacer arquitectura?

¡Sí tu puedes! Al unir los requisitos funcionales y organizativos, puede comenzar a delinear sus ideas y, finalmente, componer una arquitectura formal. Pero es una historia completamente diferente para contar ...

¿Me puedo ir a casa ahora?

Antes de llevar sus ideas a la naturaleza, le sugiero que las pruebe con una lista de verificación completa que he compilado para su conveniencia.

¿Cómo usar la lista de verificación?

Tome la arquitectura de su candidato y pretenda ser su defensor respondiendo preguntas como en un juicio (imaginando que un jurado de la comunidad de iOS ayuda).

¡Gracias por leer!

Envíame un mensaje en Twitter para recibir comentarios.

A dónde ir desde aquí?

Descripción general de las arquitecturas iOS existentes.
Revisión del patrón MVC.