Boletin de prensa # 182 Norha Milena Villegas, directora del programa de Ingeniería de Sistemas de la Universidad Icesi y experta en Arquitectura de Software, explica la importancia de esta estructura para las organizaciones. Informes: Esta dirección de correo electrónico está protegida contra spambots. Necesita activar JavaScript para visualizarla. arquitectura software2 La arquitectura de software, en un sentido estricto, se define como el conjunto de estructuras que componen el sistema, lo que incluye elementos de software, las relaciones entre los mismos, y las propiedades tanto de los elementos como de sus relaciones (SWEBOK, 2014). En otras palabras, la arquitectura de software define el conjunto de componentes de un sistema, las interfaces de comunicación de los mismos, y la manera como estos componentes se comunican entre ellos usando estas interfaces. Las organizaciones dependen de los sistemas de software que soportan su operación, y el buen funcionamiento de estos depende de sus arquitecturas. La arquitectura de un sistema de software se diseña para satisfacer los requerimientos funcionales y no funcionales establecidos por los interesados en el sistema (ej.: usuarios, clientes, proveedores). Los funcionales se refieren a las tareas que se espera el sistema pueda realizar, mientras que los no-funcionales se refieren a la calidad con que se espera el sistema realice estas tareas. Un ejemplo de requerimiento funcional, para el caso de una compañía de comercio electrónico, podría ser “consumir un servicio x que permite cargar el costo de una compra en línea a la tarjeta de crédito del cliente”. En este caso, un requerimiento no funcional podría ser “consumir el servicio x y obtener una respuesta en máximo t milisegundos”. Si la arquitectura de este sistema queda mal diseñada, la compañía de comercio electrónico puede llegar a perder mucho dinero, bien sea porque el sistema no puede comunicarse correctamente con el sistema x para cargar la compra a la tarjeta de crédito del cliente, o porque este proceso tome mucho más tiempo del que el cliente está dispuesto a esperar.  En cualquiera de estos dos escenarios, la compañía no podrá realizar la venta y perderá muchos clientes y dinero. Las organizaciones están en continua evolución. Una arquitectura bien diseñada es clave para que las empresas puedan evolucionar con el dinamismo que las economías actuales exigen.  Retomando el ejemplo de la compañía de comercio electrónico, si la arquitectura del sistema no ha sido diseñada con base en prácticas correctas de ingeniería de software, es posible que el sistema se convierta en un obstáculo para la evolución requerida por el negocio. Por ejemplo, porque el sistema no puede escalarse para soportar el volumen de transacciones que le generaría a la empresa su incursión en un nuevo mercado, o porque la arquitectura no permite la adición de nuevos componentes cuando se generen cambios en los requerimientos generados, por ejemplo, por la normatividad de comercio que rige en el país donde la empresa quiere incursionar. La arquitectura de un sistema de software puede compararse con la estructura de un edificio. Si esta estructura está mal diseñada, el edificio puede derrumbarse. De igual manera, un sistema de software que carece de diseño arquitectónico de calidad puede funcionar de forma muy deficiente o simplemente no funcionar. Peor aún, podría generar consecuencias catastróficas para la organización o los usuarios que sirve. Para las empresas que dependen de los sistemas de información, que actualmente no son pocas, las arquitecturas de software son fundamentales para el logro de sus objetivos organizacionales, lo que incluye el poder evolucionar rápidamente según las condiciones altamente cambiantes de los mercados actuales.