Categorías
- Redes (10)
- Git y GitHub (11)
- Desarrollo de software (21)
¿Qué es la arquitectura de software?

Arquitectura de software
Es un concepto muy utilizado en la industria de la tecnología. A pesar de que hay distintas definiciones para este concepto, no existe un estándar que lo defina.
Nosotros tomaremos dos definiciones:
- La primera es de Martin Fowler, quien define la arquitectura de software como las distintas cosas que son difíciles de cambiar.
- La segunda es de Ralph Johnson, quien enuncia que la arquitectura de software son todas las cosas importantes.
En otras definiciones, se suele hacer referencia a los planos arquitectónicos de una casa. Esto, llevado al software, nos permite imaginar los planos bien definidos de los componentes, cómo interactúan entre sí y cómo está construido el sistema.
También se tiene el plano a un roadmap, que hace referencia a cómo se va desarrollando el sistema en el tiempo.
Debido a que existen múltiples definiciones nos enfocaremos en 4 dimensiones:
- Características del sistema (requerimientos no funcionales): normalmente se asocian a requerimientos técnicos y cualidades de un sistema, definiendo el criterio de éxito de este. Son necesarios para que el sistema funcione de manera correcta.
- Ejemplos: disponibilidad, seguridad, escalabilidad.
- Decisiones arquitectónicas: son reglas sobre cómo se debe construir el sistema. Es buena práctica documentar estas decisiones y explicar por qué se toman. En general, son restricciones que impactan la implementación de los desarrolladores.
- Ejemplo: se puede definir que la capa de presentación no tendrá acceso directo a la base de datos; únicamente se podrá acceder a la base de datos a través de una capa de servicios o de negocios.
- Principios de diseño: son una guía para la implementación del sistema.
- Ejemplo: establecer un principio de diseño como el apalancamiento de mensajería entre componentes, mejorando el rendimiento.
Estilo arquitectónico: generalmente se refiere al estilo o la estructura. Cuando nos preguntan sobre la arquitectura del sistema, generalmente hablamos de esta dimensión.
4 dimensiones de la arquitectura de software