Fullbuster SofDev

Depura tus errores y construye la mejor versión de ti, cada línea cuenta.

Categorías

¿Qué es la arquitectura de software?

26-08-2024
Desarrollo de software
Fundamentos de arquitectura de software
Cover Post

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.

alt text

También se tiene el plano a un roadmap, que hace referencia a cómo se va desarrollando el sistema en el tiempo.

alt text

alt text

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.

alt text

  • 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.

alt text

  • 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.

alt text

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.

alt text

4 dimensiones de la arquitectura de software

alt text