Arquitectura de Software



La arquitectura de software se refiere a las estructuras de un sistema, compuestas de elementos con propiedad visibles de forma externa y las relaciones que existen entre ellos. El proceso de arquitectura de software toma los requisitos de los clientes, los analiza y produce un diseño para obtener un software que satisfará sus necesidades. 

El concepto de Arquitectura de Software se refiere a la estructuración del sistema que, idealmente, se crea en etapas tempranas del desarrollo. Esta estructuración representa un diseño de alto nivel del sistema que tiene dos propósitos primarios: Satisfacer los atributos de calidad (desempeño, seguridad, modificabilidad), y servir como guía en el desarrollo.

Las decisiones críticas relativas al diseño general de un sistema de software complejo deben hacerse desde un principio. Es así que la arquitectura de software juega un papel fundamental dentro del desarrollo.

Durante el diseño, el arquitecto toma como entradas los requerimientos que influyen la arquitectura y produce un diseño arquitectónico. 

¿Por qué es importante la arquitectura de software?

Los requerimientos del software moderno son cada vez más complejos puesto que los usuarios esperan más de sus aplicaciones. Las aplicaciones de escritorio independientes y sencillas ya no son lo suficientemente buenas en la mayoría de los escenarios comerciales y empresariales. En nuestro mundo conectado, la aplicación debe interactuar con otras aplicaciones y servicios y ejecutarse en una serie de entornos, como la nube, y en dispositivos portátiles. Los diseños monolíticos comunes en el pasado se han reemplazado por software componentizado orientado al servicio, que utiliza marcos, sistemas operativos, hosts en tiempo de ejecución y redes para implementar características que eran insólitas hasta hace unos pocos años.

Esta complejidad afecta no sólo al diseño, sino también a la implementación, mantenimiento y administración del software. El costo total de propiedad (TCO) del software ahora se compone predominantemente de costos posteriores a la implementación. Una aplicación con buena arquitectura minimizará el TCO al reducir el costo y tiempo requeridos para implementar la aplicación, mantenerla en ejecución, actualizarla para cumplir con los requisitos cambiantes y solucionar problemas. Además simplificará el soporte técnico y la administración por parte del usuario.

La arquitectura de software es de especial importancia ya que la manera en que se estructura un sistema tiene un impacto directo sobre la capacidad de este para satisfacer lo que se conoce como los atributos de la calidad del sistema.

El ciclo de desarrollo de la arquitectura
Resultado de imagen para ciclo
Dentro de un proyecto de desarrollo, e independientemente de la metodología que se utilice, se puede hablar de “desarrollo de la arquitectura de software”. Este desarrollo, que precede a la construcción del sistema, está dividido en las siguientes etapas: requerimientos, diseño, documentación y evaluación. Cabe señalar que las actividades relacionadas con el desarrollo de la arquitectura de software generalmente forman parte de las actividades definidas dentro de las metodologías de desarrollo.

Requerimientos:
La etapa de requerimientos se enfoca en la captura, documentación y priorización de requerimientos que influencian la arquitectura. Como se mencionó anteriormente, los atributos de calidad juegan un papel preponderante dentro de estos requerimientos, así que esta etapa hace énfasis en ellos. Otros requerimientos, sin embargo, son también relevantes para la arquitectura, estos son los requerimientos funcionales primarios y las restricciones.

Diseño:
La etapa de diseño es la etapa central en relación con la arquitectura y probablemente la más compleja. Durante esta etapa se definen las estructuras que componen la arquitectura. La creación de estas estructuras se hace en base a patrones de diseño, tácticas de diseño y elecciones tecnológicas. El diseño que se realiza debe buscar ante todo satisfacer los requerimientos que influencian a la arquitectura, y no simplemente incorporar diversas tecnologías por que están “de moda”. 

Documentación:
Una vez creado el diseño de la arquitectura, es necesario poder comunicarlo a otros involucrados dentro del desarrollo. La comunicación exitosa del diseño muchas veces depende de que dicho diseño sea documentado de forma apropiada. La documentación de una arquitectura involucra la representación de varias de sus estructuras que son representadas a través de distintas vistas. Una vista generalmente contiene un diagrama, además de información adicional, que apoya en la comprensión de dicho diagrama.

Evaluación:
Dado que la arquitectura de software juega un papel crítico en el desarrollo, es conveniente evaluar el diseño una vez que este ha sido documentado con el fin de identificar posibles problemas y riesgos. La ventaja de evaluar el diseño es que es una actividad que se puede realizar de manera temprana (aún antes de codificar), y que el costo de corrección de los defectos identificados a través de la evaluación es mucho menor al costo que tendría el corregir estos defectos una vez que el sistema ha sido construido.

Comentarios