Composabilidad de Arquitecturas: Hacia un Modelo de Calidad Mauricio Diéguez 1,2 , Carlos Cares 1 1 Universidad de La Frontera, Depto. de Ingeniería de Sistemas, Temuco, Chile. 2 Universidad de Alicante, Depto. de Lenguajes y Sistemas Informáticos, Alicante, España. mdieguez@ufro.cl, carlos.cares@ceisufro.cl Resumen: Una nueva y relevante tendencia en Ingeniería de Software es la orientación a servicios. En este marco los sistemas de software quedan constituidos por una composición orquestada de otros servicios. Sin embargo, el problema de la calidad para formar parte de esta composición de un determinado elemento de software es algo que está superficialmente tratado. Esta propiedad es conocida como composabilidad (composability). Actualmente, no se cuenta con una propuesta para su evaluación, ni un acuerdo, incluso, en las variables que lleven a su evaluación, lo que dificulta la definición de un modelo que describa su calidad en cuanto a formar parte de un colectivo. La mayoría de los modelos de componentes, consideran sólo el aspecto funcional de la composición, nuestra hipótesis es que la composabilidad puede ser analizada y descrita en términos de un requerimiento no funcional aplicado a arquitecturas de software. Como tal, el análisis se realiza siguiendo la estructura de SQuarE. Bajo estos supuestos hemos delineado una agenda de investigación que incluimos en este artículo Palabras Claves: Service-oriented Software Engineering, Component Based Software Engineering, Composition, Composability, non-functional requirements. 1. Introducción El marcado crecimiento y la dinámica que ha mostrado la industria del Software, ha sometido a la Ingeniería de software a constantes cambios de paradigmas como manera de enfrentar la complejidad creciente de sistemas altamente distribuidos, para hacer frente a la complejidad que presentan los procesos de construcción de este tipo de producto. Debido a este mejoramiento continuo en los procesos han surgido diferentes perspectivas de análisis conocidas como paradigmas, entre ellos la Orientación a Objetos, Orientación a Agentes, Desarrollo de Software basado en componentes o Arquitectura Orientada a Servicios (Christof, 2008) (Crnkovic et al., 2011). Una de las orientaciones más recientes es la Ingeniería de Software Basada en Componentes (CBSE, por sus siglas en inglés), esta disciplina plantea la construcción de sistemas de software a través del ensamble de distintas piezas independientes de software (Sommerville, 2005). Complementariamente, ha emergido una tendencia denominada Orientación a Servicios, la cual parece ser el nuevo paradigma en Ingeniería de Software. Esta orientación permite la integración de sistemas distribuidos construidos en distintas plataformas y tecnologías (Breivold and Larsson, 2007). Según estos autores, se puede realizar un paralelo entre ambas orientaciones, comparando las componentes con los servicios, destacando, en ambos, la reutilización y la composición como elementos promovidos por estas visiones, es decir, tiene como objetivo mejorar la calidad de desarrollo de software y reducir los costos a través de la composición de piezas o componentes de software autónomas y reutilizables (Pessemier et al., 2008). En el caso de los servicios el concepto de composición se hace crítico porque se postula que los servicios pueden ser cambiados en tiempo de ejecución de un sistema previamente orquestado. Sin embargo, esta orientación también trae consigo algunos desafíos. Uno de estos se refiere a la medición de la calidad de una componente y de cómo el servicio que ofrece repercute en la calidad de la aplicación resultante. A esta propiedad de una componente de ser ensamblada como parte de una solución mayor es lo que se conoce como composabilidad (composability). La propuesta consiste en establecer un marco de medición para la composición de componentes (composability), aplicadas a los servicios, de tal manera de entregar una medida de calidad a los desarrolladores que indicaría la capacidad de estos elementos para componerse con otros, facilitándose la orquestación. Contar con esta medida permitiría evaluar el comportamiento de una componente en interacción con otros, como parte de una aplicación mayor, lo que permitiría tener un conjunto de variables para guiar la construcción de componentes composables. 2. Marco Conceptual CBSE tiene como objetivo la construcción de software a partir del ensamble de distintas componentes pre-existentes, autónomas y reutilizables (Crnkovic et al., 2011). Este paradigma conlleva a diversos beneficios, como las mejoras a la calidad, la reducción del ciclo de desarrollo y un mayor retorno sobre la inversión (Terreros et al., 2010).