• No results found

VizSOC es una herramienta web basada en el aprendizaje no supervisado que tiene el objetivo de asistir a los desarrolladores de software en la detección de oportunidades de refactoring en aplicaciones SOA. VizSOC se encarga de analizar los documentos WSDL pertenecientes a una aplicación SOA, detectar anti-patrones presentes en dichos contratos, sugerir cómo solucionarlos y aplicar técnicas de clustering (K-Means, Expectation Maximization y algoritmos jerárquicos) para detectar oportunidades de refactorización, como por ejemplo, reduciendo funcionalidad duplicada. La herramienta explota las ventajas de la técnica de visualización Hierarchical Edge Bundle (HEB) para facilitar a los desarrolladores la comprensión de los clusters generados por VizSOC [Rodríguez et al, 2017].

En la figura 3.1.1 se describe el esquema general de la herramienta. En primer lugar, VizSOC recibe como entrada un conjunto de contratos WSDL que serán cargados a través de la interfaz web. En segundo lugar, la herramienta permite hacer un análisis de detección de anti-patrones presentes en los documentos WSDL, ofreciendo también posibles soluciones. El catálogo de anti-patrones utilizado se compone de: inapropriate or lack of documentarion, ambiguous names, redundant data models, whatever types, redudant port-types, low cohesive operation in the same port-type, empty messages, enclosed data models, and undercover fault messages with standard messages. Finalmente, el usuario puede elegir la opción de detectar oportunidades de refactorización. En este caso, la herramienta aplica diferentes técnicas de clustering mencionadas anteriormente y provee distintos gráficos mostrando los datos que se

sustrajeron de las relaciones y jerarquías de los diferentes servicios definidos en los documentos WSDL.

El componente «Browser-UI» es el encargado de presentar la unión entre los diferentes servicios Web a través de una estrategia de visualización basada en relaciones entre las operaciones de estos servicios y la abstracción jerárquica de las mismos, permitiendo al usuario la posibilidad de generar sus propios gráficos de análisis según la vista más apropiada.

Figura 3.1.1: Esquema general de VizSOC.

VizSOC recibe como entrada los diferentes documentos WSDL los cuales son cargados por el usuario a través de la interfaz web en la parte izquierda de la herramienta. Además se puede agregar documentos en el caso de que lo necesitemos o incluso eliminar algún documento no deseado. En la siguiente figura 3.1.2 se muestra un ejemplo de una carga de contratos WSDL.

Figura 3.1.2: Panel de opciones cargados con Documentos.

En la parte derecha superior de la herramienta, como se muestra en la siguiente figura, se encuentran los algoritmos de clustering que implemena VizSOC: algoritmo jerárquico (Hierarchical), K-Means y Expectation Maximization (EM). Por otro lado, se encuentran campos configurables como el campo «Bottom Simil» que se utiliza para cuantificar la similitud mínima entre los elementos y el campo “Top Simil” que se utiliza para cuantificar la similitud máxima entre dos elementos. El campo «Actual Tension» es un atributo requerido por la técnica de visualización utilizada, Hierarchical Edge Bundle. Una valor de tensión entre 0 y 1 permite controlar la atracción de la línea a sus puntos de control, que afecta a la tirantez de los arcos del modelo de visualización [Rodríguez et al, 2017].

Para utilizar los diferentes gráficos, es requisito haber ingresado los documentos WSDL a analizar. Una vez realizada dicha tarea, se procede a seleccionar un tipo de gráfico o diagrama de la opción «Graphics» y se debe hacer click en el botón «Generate» del panel principal como podemos ver a continuación en la figura 3.1.3.

Figura 3.1.3: Panel principal.

Para seleccionar un nuevo gráfico no hace falta volver a generar las estructuras, solo basta con seleccionar el gráfico deseado y el diagrama visible en el panel principal será actualizado con el elegido. Dentro de la opción de los gráficos podemos encontrar los diagramas de:Inverted Radial Layout, Bundle Layout, Tree Layout, Rotate Cluster Layout y

Collapse Tree Layout. Estos diagramas, se pueden ir cambiando en tiempo de ejecución del programa. Sin embargo, si se desea agregar o eliminar un documento WSDL del análisis, si se debe realizar el proceso de generar las estructuras nuevamente haciendo clic en el botón «Generate».

Una vez generadas las estructuras se puede comenzar con el proceso de análisis. VizSOC posee la función «Info» que permite visualizar las propiedades del Servicio Web descritas en el documento WSDL, mientras que la función «Stats» permite analizar los anti- patrones en los documentos WSDL seleccionados. Además, otorga la posibilidad de hacer un análisis de detección de anti-patrones presentes en los documentos, brindando posibles soluciones. En la figura 3.1.4, por ejemplo, se muestra que para el documento «DatosdeDictamenes.wsdl» la herramienta detectó el anti-patrón «Redundant port-types», proveyendo la descripción del mismo junto con su posible solución. Observamos los anti-patrones detectados en el contrato seleccionado, una breve descripción del antipatrón encontrado y una sugerencia para eliminar el anti-patrón del contrato WSDL, en caso de tener una solución recomendada.

Figura 3.1.4: Anti patrones detectados en un contrato.

En las figura 3.1.5 y 3.1.6 se muestran las diferentes secciones del botón «Stats». Las estadísticas brindadas por la aplicación comprenden los anti-patrones detectados en el/los contrato/s analizado/s. Se observa el total de anti-patrones detectados vs la cantidad de soluciones propuestas, de modo de poder hacer un análisis de la cantidad de soluciones que se proponen en base al volumen de anti-patrones encontrados y también el porcentaje de anti-patrones detectado por contrato.

Figura 3.1.5: Anti-patrones detectados Figura 3.1.6: Estadísticas

vs soluciones propuestas. de anti-patrones en un contrato.

En la siguiente figura 3.1.7 podemos observar un ejemplo completo de un usuario que seleccionó el algoritmo de clustering Jerárquico, marcó los valores 0.30 en «Bottom Simil», 0.80 «Top Simil» y 0.75 «Actual Tensión». El resultado obtenido se materializa en una disposición radial de la técnica de Hierarchical Edge Bundles (HEB), en la cual los arcos reflejan qué operaciones de los servicios Web son candidatas a ser refactorizadas. Es decir, estas operaciones tienen similitudes y podrían juntarse en un mismo documento WSDL.

Por ejemplo, si se selecciona la operación ValidarPartida se puede apreciar los arcos resaltados (color verde) hacia las operaciones resaltadas en rojo, indicando que esas operaciones pertenecen al mismo cluster. Algunas de estas operaciones son las siguientes: ActualizarAcreditado, RealizarReversion ObtenerDatosDictamen, ObtenerDatosPartida, entre otras. Con esta información el usuario puede tomar la decisión de refactorizar la aplicación orientada a servicios.

Los resultados obtenidos aseguran que VizSOC es una herramienta viable y útil para asistir a los desarrolladores de software en la detección de oportunidades de refactorización de aplicaciones SOA.

3.2 Enfoques de clusterización con técnicas de minería de datos aplicados a

Related documents