Arquitectura de Software: ¿Qué es, y cómo funciona?

software

Debe ser muy común, escuchar en la actualidad acerca de la Arquitectura de Software y sobre el rol que cumplen los Arquitectos en la implementación de soluciones, pero conocemos de forma detallada ¿qué es la Arquitectura de Software?

En las próximas líneas estoy tratando de brindar un panorama resumido, pero a la vez detallado de la Arquitectura de Software.

Definamos primero, que el diseño de la Arquitectura de un Software es el proceso por el cual se define una solución para los requisitos técnicos y operacionales del mismo. Este proceso define qué componentes forman el software, cómo se relacionan entre ellos, y cómo mediante su interacción llevan a cabo la funcionalidad especificada, cumpliendo con los criterios previamente establecidos; como seguridad, disponibilidad, eficiencia o usabilidad.

Durante el diseño de la arquitectura se tratan tópicos que puedan provocar un impacto importante en el éxito o fracaso de nuestro software. Son esenciales realizar las siguientes interrogantes para cubrir este punto:

  • ¿En qué entorno se desplegará nuestro software?
  • ¿Cómo se pondrá en producción nuestro software?
  • ¿Cómo utilizarán los usuarios nuestro software?
  • ¿Existen requisitos adicionales que el software debe cumplir? (Por ejemplo: seguridad, rendimiento, concurrencia, configuración, disponibilidad, entre otros)
  • ¿Cuáles serían los cambios sobre la arquitectura propuesta, que impactarían al software durante o después de desplegarse?

Para diseñar la arquitectura de un software es de vital importancia tomar en cuenta los intereses de los distintos agentes que participan. Estos, son los usuarios del software, el propio software y los objetivos del negocio. Cada uno de ellos establece requisitos y restricciones que deben tomarse en cuenta para el diseño de la arquitectura, los que en algún momento podrían entrar en conflicto.

Para los usuarios es importante que el software responda a la interacción de una forma fluida, mientras que para los objetivos del negocio es importante que el software cueste poco. Los usuarios pueden querer que se implemente primero una funcionalidad útil para su trabajo del día a día, mientras que el software puede tener prioridad en que se implemente la funcionalidad que permita definir su estructura.

He aquí, que el trabajo del arquitecto es delinear los escenarios y requisitos de calidad importantes para cada agente así como los puntos clave que debe cumplir y las acciones o circunstancias que no deben ocurrir.

El objetivo final de la arquitectura es identificar los requisitos que producen un impacto en la estructura del software y reducir los riesgos asociados con la construcción del mismo. La arquitectura debe soportar los cambios futuros del software, del hardware y de funcionalidad demandada por los clientes (que ocurren muy a menudo). Del mismo modo, es responsabilidad del arquitecto analizar el impacto de sus decisiones de diseño y establecer un compromiso entre los diferentes requisitos de calidad así como entre los compromisos necesarios para satisfacer a los usuarios, al software y los objetivos del negocio.

Finalmente, resumamos que la Arquitectura de Software debería poseer las siguientes capacidades:

  • Mostrar la estructura del software, pero ocultando los detalles.
  • Concebir y diseñar todos los casos de uso.
  • Satisfacer en la medida de lo posible los intereses de los agentes.
  • Ocuparse de los requisitos funcionales y de calidad.
  • Determinar el tipo de software a desarrollar.
  • Determinar los estilos arquitecturales que se usarán.
  • Tratar las principales cuestiones transversales.

 Espero haber cubierto inicialmente puntos específicos, que nos permitan entender un poco más acerca de lo que es y significa la Arquitectura de Software en la actualidad.

Miguel Almeyda Sifuentes

Realice una respuesta

XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>