Introducción
Los patrones de arquitecura son patrones de diseño de alto nivel que se utilizan para resolver problemas de diseño de software. Estos patrones son independientes de cualquier lenguaje de programación y se pueden aplicar a cualquier proyecto de software.
Que es un patrón de arquitectura
Un patrón de arquitectura es un conjunto de patrones de diseño que se utilizan para resolver problemas de diseño de software. Donde en palabras simples, el patrón de arquitectura busca solventar un problema mas allá de la programación, es decir, busca resolver problemas de diseño de software. Y que es exactamente los problemas de diseño de software, pues son problemas que se presentan en la estructura de un software, como por ejemplo, problemas de rendimiento, problemas de escalabilidad, problemas de mantenimiento, problemas de seguridad, entre otros.
Es tipico los casos donde por problema de diseño de software, se tiene que reescribir todo el software, o se tiene que hacer un refactor de todo el software, o peor aun, se tiene que hacer un software desde cero. Y es en estos casos donde los patrones de arquitectura entran en juego, ya que estos patrones buscan resolver problemas de diseño de software, y por ende, buscan evitar que se tenga que reescribir todo el software, o se tenga que hacer un refactor de todo el software, o peor aun, se tenga que hacer un software desde cero.
Que es el diseño de software
El diseño de software es el proceso de definir la arquitectura, componentes, interfaces, y otros aspectos de un sistema de software. Donde el diseño de software es un proceso que se realiza antes de la programación, y que busca definir la estructura de un software, es decir, busca definir como se va a construir un software.
Siempre se inicia con la incognita de como se va a construir un software, y es en este punto donde se inicia el diseño de software, donde se busca definir la estructura de un software, es decir, se busca definir como se va a construir un software.
Los patrones no siempre son la solución a todos los problemas de diseño de software, pero si son una guía para resolver problemas de diseño de software. Y es por eso que los patrones de arquitectura son tan importantes, ya que estos patrones buscan resolver problemas de diseño de software, y por ende, buscan evitar que se tenga que reescribir todo el software, o se tenga que hacer un refactor de todo el software, o peor aun, se tenga que hacer un software desde cero.
Que es un patrón de diseño
Un patrón de diseño es una solución general a un problema común en el diseño de software. Donde en palabras simples, el patrón de diseño busca solventar un problema de programación, es decir, busca resolver problemas de programación. Y que es exactamente los problemas de programación, pues son problemas que se presentan en la programación de un software, como por ejemplo, problemas de rendimiento, problemas de escalabilidad, problemas de mantenimiento, entre otros.
Es tipico los casos donde por problema de programación, se tiene que reescribir una parte del software, o se tiene que hacer un refactor de una parte del software, o peor aun, se tiene que hacer una parte del software desde cero. Y es en estos casos donde los patrones de diseño entran en juego, ya que estos patrones buscan resolver problemas de programación, y por ende, buscan evitar que se tenga que reescribir una parte del software, o se tenga que hacer un refactor de una parte del software, o peor aun, se tenga que hacer una parte del software desde cero.
Consejos
No se case con un solo patrón de arquitectura, ya que cada patrón de arquitectura tiene sus ventajas y desventajas, y es por eso que es importante conocer varios patrones de arquitectura, ya que cada patrón de arquitectura tiene su lugar en el diseño de software.
Analice profundamente el problema que tiene, y busque el patrón de arquitectura que mejor se adapte a su problema, ya que no todos los patrones de arquitectura son iguales, y es por eso que es importante conocer varios patrones de arquitectura, ya que cada patrón de arquitectura tiene su lugar en el diseño de software.
Cada proyecto de software es diferente, con distintos requerimientos, distintas restricciones, distintos objetivos, y distintos problemas. Aunque puedes implementar cualquiera de los patrones de arquitectura que se presentan en esta guia de GM, personalmente debo recomendar los patrones altamente flexibles, ya que estos patrones son los que mejor se adaptan a cualquier proyecto de software. Es normal que los requerimientos cambien, y que nuestro patrón de arquitectura tenga que cambiar, elija los patrones mas solidos y flexibles como puede ser VIPER, MVVP, MVVM, Clean Architecture, Hexagonal Architecture, entre otros.
En los siguientes capitulos se presentaran los patrones de arquitectura mas comunes para casos de aplicaciones moviles y web. Donde se puede analizar por parte de GM Transport que busca realizar aplicaciones hibridas.
Considere que las aplicaciones que se suelen solicitar buscan ser un SPA (Single Page Application), asi que digiera los patrones de arquitectura que se presentan en esta guia de GM, y busque el patrón de arquitectura que mejor se adapte a su problema.