• No se han encontrado resultados

Selección, Prueba y Adaptación de Servicios para Integración en Aplicaciones Orientadas a Servicios

N/A
N/A
Protected

Academic year: 2020

Share "Selección, Prueba y Adaptación de Servicios para Integración en Aplicaciones Orientadas a Servicios"

Copied!
136
0
0

Texto completo

(1)

Tesis

Doctorado en Ciencias de la Computaci ´on

Selecci ´on, Prueba y Adaptaci ´on de Servicios para Integraci ´on en

Aplicaciones Orientadas a Servicios

Lic. Martin Garriga

Director: Dr. Alejandro Zunino

Co-Director: Dr. Andres Flores

Informe presentado en cumplimiento de los requisitos para el Grado de Doctor en Ciencias de la Computaci ´on

Universidad Nacional del Centro de la provincia de Buenos Aires

Facultad de Ciencias Exactas

ISISTAN

(2)

Resumen

Actualmente, una pr´actica com ´un para el desarrollo de software es reusar funcionalidad provista por terceras partes. Esta pr´actica no s ´olo ayuda a reducir los costos, sino tambi´en a enfocar el proceso de desarrollo en la funcionalidad principal del sistema. En este contexto, el crecimiento de la Web habilita a los desarrolladores a ofrecer software no s ´olo en forma de bibliotecas a descargar e instalar, sino como componentes que se pueden invocar de forma din´amica, que se conocen como servicios. Para utlizar servicios para construir software, es necesario descubrir previamente aquellos servicios que ofrezcan la funcionalidad deseada. Una vez que los servicios potencialmente adecuados son identificados, el desarrolador debe seleccionar el m´as adecuado. Este paradigma es llamado Computaci ´on Orientada a Servicios (SOC).

Sin embargo, un uso eficaz del paradigma SOC requiere un abordaje eficiente para permitir que las aplicaciones consuman servicios. Actualmente, los desarrolladores deben realizar b ´usquedas manuales de servicios principalmente a trav´es de cat´alogos Web, los cuales usualmente brindan informaci ´on pobre y/o poco relevante, y luego deben proveer el c ´odigo intermedio adecuado pa-ra ensamblar efectivamente el servicio seleccionado en la aplicaci ´on cliente. Esto implica invertir un gran esfuerzo en descubrir servicios, analizar su idoneidad en el contexto de la aplicaci ´on cliente, y finalmente determinar las adaptaciones necesarias para su correcta integraci ´on y con-sumo.

(3)

Abstract

Nowadays, it is a common practice to create software reusing functionality provided by third-parties. This practice helps not only to reduce costs, but also to focus the development process on the system core functionality. The Web has enabled software developers to offer functionality not as libraries that should be downloaded and installed, but as software components that can be invoked dynamically, called services. In order to use services to build software, it is necessary to discover the services that offer the desired functionality. Once the potential services are identified, the developer should select the most suitable one. This paradigm to develop software is called Service Oriented Computing (SOC).

However, a broadly use of the SOC paradigm requires efficient approaches to allow service con-sumption from within applications. Currently, developers are required to search for suitable ser-vices mainly by manually exploring Web catalogs, which usually show poorly relevant into a client application. This implies a large effort into discovering services, analyzing the suitability of retrieved candidate services and envisioning the required adaptations for their correct integra-tion and safe consumpintegra-tion.

(4)
(5)

Agradecimientos

Si bien una tesis es un trabajo ”individual”, no ser´ıa posible sin las redes que sustentan y acom-pa ˜nan al doctorando. Redes afectivas, de conocimiento e institucionales.

En primer lugar, agradezco a mi familia. Mis viejos Jos´e y Silvina, y mi hermano Fernando, nada de esto ser´ıa posible sin ellos.

Agradezco a mis directores, Alejandro y Andr´es. Alejandro confi ´o en m´ı sin conocerme y me gui ´o oportunamente siempre que lo necesit´e, sobre todo en los momentos dif´ıciles. Andr´es fue mi gu´ıa en el d´ıa a d´ıa. Un referente como docente e investigador, sin ´el no hubiera llegado a culminar este trabajo.

Agradezco a Alejandra, quien me invit ´o a formar parte del grupo GIISCo, y a las personas que conoc´ı en ´el. En especial a mis compa ˜neros de todos los d´ıas: Alan, Maxi, Matias, Diego; sin ellos este camino no ser´ıa tan divertido.

Agradezco al equipo del ISISTAN, becarios e investigadores, que me hicieron sentir como en mi casa. En especial a Cristian, quien me gui ´o desinteresadamente.

Agradezco a mis amigos y hermanos del alma con los cuales compart´ı estos a ˜nos.

Agradezco al CONICET por el apoyo recibido a trav´es de diferentes becas, sin las cuales no hubiera podido culminar mis estudios.

A todos, gracias.

(6)

´Indice general

1. Introducci ´on 11

1.1. Motivaci ´on . . . 11

1.2. Soluci ´on propuesta . . . 13

1.3. Aplicaciones Orientadas a Servicios . . . 14

1.3.1. Tecnolog´ıa de Servicios Web . . . 15

1.3.2. Componentes Software y Servicios Web . . . 16

1.4. Testing de Software . . . 18

1.4.1. T´ecnicas de Testing para Componentes y Servicios Web . . . 19

1.5. Organizaci ´on de la Tesis . . . 23

2. Estado del Arte en Selecci ´on e Integraci ´on de Servicios 25 2.1. Introducci ´on . . . 25

2.1.1. Caracter´ısticas para analizar propuestas en Servicios Web . . . 26

2.1.2. Caracter´ısticas Espec´ıficas de Servicios REST . . . 30

2.2. Enfoques Actuales . . . 31

2.2.1. Enfoques en Selecci ´on de Servicios . . . 31

2.2.2. Enfoques en Adaptaci ´on de Servicios . . . 32

2.2.3. Enfoques en Testing de Servicios . . . 34

2.2.4. Enfoques en Servicios RESTful . . . 35

2.3. An´alisis de Enfoques Actuales . . . 38

2.3.1. An´alisis Bajo Caracter´ısticas Generales . . . 38

2.3.2. An´alisis Bajo las Caracter´ısticas RESTful . . . 42

2.4. Conclusi ´on . . . 43

3. M´etodo de Selecci ´on de Servicios: Evaluaci ´on de Interfaces 44 3.1. Introducci ´on . . . 44

3.1.1. Caso de Estudio . . . 45

3.2. M´etodo de Selecci ´on de Servicios . . . 45

3.3. An´alisis Estructural de Interfaces . . . 47

3.3.1. Condiciones de Equivalencia Estructural . . . 48

3.3.1.1. Equivalencia de tipos de datos . . . 48

3.3.1.2. Tipos de Datos Complejos . . . 48

3.3.1.3. Nombres de Operaci ´on . . . 49

(7)

3.3.2. Resultados . . . 50

3.4. An´alisis Estructural y Sem´antico de Interfaces . . . 51

3.4.1. Alternativas para la Base Sem´antica . . . 52

3.4.1.1. Evaluaci ´on de identificadores utilizando WordNet con JWI . . . . 53

3.4.1.2. Evaluaci ´on de identificadores utilizando WordNet con JWNL . . . 55

3.4.1.3. Evaluaci ´on de identificadores utilizando DISCO . . . 57

3.4.2. An´alisis Estructural-Sem´antico por Elemento de Signatura . . . 58

3.4.2.1. Evaluaci ´on de Tipos Complejos . . . 58

3.4.2.2. Evaluaci ´on del Retorno . . . 60

3.4.2.3. Evaluaci ´on de Nombres de Operaci ´on . . . 61

3.4.2.4. Evaluaci ´on de Par´ametros . . . 61

3.4.2.5. Evaluaci ´on de Excepciones . . . 63

3.4.3. Resultados . . . 64

3.4.3.1. Sugerencia de Correspondencias de Par´ametros . . . 65

3.5. Conclusiones del An´alisis de Compatibilidad de Interfaces . . . 67

4. M´etodo de Selecci ´on de Servicios: Evaluaci ´on de Comportamiento basado en Testing 68 4.1. Introducci ´on . . . 68

4.1.1. Evaluaci ´on de Comportamiento . . . 69

4.1.2. Caso de Estudio . . . 70

4.2. Construcci ´on del Test Suite de Comportamiento . . . 70

4.2.1. Test Suite Exhaustivo . . . 71

4.2.2. Test Suite Reducido . . . 74

4.2.2.1. Construcci ´on del TS Reducido . . . 74

4.2.2.2. Operaciones Conflictivas . . . 75

4.2.2.3. Generaci ´on de la Clase Shadow . . . 75

4.2.2.4. Generaci ´on del Test Suite Reducido . . . 79

4.2.2.5. Criterios de Cubrimiento Espec´ıficos del TS Reducido . . . 80

4.2.2.6. Generaci ´on de Casos de Test . . . 81

4.3. An´alisis de Compatibilidad de Comportamiento . . . 81

4.3.1. Generaci ´on de Wrappers . . . 82

4.3.1.1. Basado en el Mapeo Estructural de Interfaces . . . 82

4.3.1.2. Basado en el Mapeo Estructural-Sem´antico de Interfaces . . . 85

4.3.2. Evaluaci ´on de Wrappers . . . 89

4.4. Conclusiones del Procedimiento de Evaluaci ´on de Comportamiento . . . 92

5. Validaci ´on Experimental 94 5.1. Introducci ´on . . . 94

5.2. Experimento 1 – Evaluaci ´on de M´etodos de Selecci ´on con base Estructural, Sem´anti-ca e H´ıbrida . . . 94

5.2.1. Selecci ´on Sem´antica de Servicios . . . 95

5.2.2. Generaci ´on y Mutaci ´on de Consultas . . . 96

5.2.3. Escenario Experimental . . . 98

(8)

5.2.5. Discusi ´on . . . 101

5.3. Experimento 2 – Comparaci ´on de las Alternativas para la Base Sem´antica . . . 102

5.3.1. Algoritmo de Descubrimiento y Selecci ´on de Stroulia . . . 103

5.3.2. Configuraci ´on y ejecuci ´on del Experimento . . . 103

5.3.3. Resultados . . . 104

5.3.4. Discusi ´on . . . 105

5.4. Experimento 3 – Comparaci ´on de la evaluaci ´on de interfaces respecto de algorit-mos basados en ontolog´ıas . . . 107

5.4.1. Algoritmo de categorizaci ´on y mapeo de servicios basado en ontolog´ıas . . 107

5.4.2. Configuraci ´on del Experimento . . . 108

5.4.3. Resultados . . . 108

5.4.4. Discusi ´on . . . 110

5.5. Experimento 4 – Compatibilidad de Comportamiento . . . 110

5.5.1. Configuraci ´on Experimental . . . 111

5.5.2. Resultados . . . 113

5.5.3. Discusi ´on . . . 115

5.6. Conclusiones . . . 116

6. Conclusi ´on y Trabajos Futuros 118 6.1. Conclusi ´on . . . 118

6.1.1. Contribuciones y objetivos alcanzados . . . 118

6.2. Trabajos Futuros . . . 121

(9)

´Indice de figuras

1.1. Soluci ´on propuesta: M´etodo de Selecci ´on de Servicios . . . 13

1.2. Arquitectura b´asica de un sistema orientado a servicios . . . 15

1.3. Arquitectura de Protocolos de Servicios Web . . . 16

1.4. Infraestructura est´andar de un Sistema orientado a Servicios . . . 16

2.1. Comparaci ´on de las pilas de lenguajes para SOAP y REST . . . 26

3.1. Interfaz Requerida y Servicio Candidato para el ejemplo de Car Rental . . . 45

3.2. M´etodo de Selecci ´on de Servicios . . . 46

3.3. An´alisis Estructural y Sem´antico de Compatibilidad de Interfaces . . . 52

3.4. Distancia entrecompactytrucken la jerarqu´ıa de WordNet . . . . 55

3.5. Estructura de la TablaHashpara la Sugerencia de Correspondencias de Par´ametros 67 4.1. M´etodo de Selecci ´on de Servicios con la adici ´on del Test Suite Reducido . . . 70

4.2. Interfaces para el ejemplo de Calculadora . . . 70

4.3. Procedimiento de Generaci ´on de TS Reducido . . . 74

4.4. Esquema de relaciones causa-efecto para operaciones de laClase Shadow . . . 76

4.5. Arbol de Generaci ´on de Wrappers para el ejemplo de Calculadora´ . . . 84

4.6. Proxy para la invocaci ´on de Servicios Web . . . 84

4.7. Enlace entre el wrapperCalculatory el proxy deCalculatorService . . . 85

4.8. Arbol de Generaci ´on de Wrappers: con y sin mapeo sem´antico . . . 86

4.9. Arbol de Generaci ´on de Wrappers Reducido para el ejemplo de Calculadora . . . .´ 89

4.10. Resultado de la ejecuci ´on del TS exhaustivo sobre los wrappers de Calculadora . . 91

4.11. Resultado de la ejecuci ´on del TS reducido sobre los wrappers de Calculadora . . . 93

5.1. Precision-en-n para el registro EasySOC . . . 100

5.2. Recall y NDCG para el Experimento 1 – EasySOC . . . 101

5.3. Resultados de Adaptabilidad para el Experimento 1 . . . 102

5.4. Escenario 1 – EasySOC . . . 102

5.5. Precision-en-nconn=[1,10] para los resultados orginales, procedimientos de com-patibilidad de interfaces y el algoritmo de Stroulia (m´as es mejor) . . . 105

5.6. Recall, F-Measure y NDCG para los resultados orginales, procedimientos de com-patibilidad de interfaces y el algoritmo de Stroulia (m´as es mejor) . . . 106

5.7. Precisi ´on,recallyF-Measurepara los algoritmos de Compatibilidad de Interfaces, Categorizaci ´on y Mapeo (m´as es mejor) . . . 109

5.8. Comparaci ´on de Artefactos de Software Generados por escenario . . . 114

(10)

´Indice de tablas

1.1. Modelos de Componentes Orientados a Objetos . . . 17

1.2. Factores de Facilidad de Testing para Componentes Software . . . 19

1.3. Factores de Facilidad de Testing para SOA . . . 20

2.1. Resumen de caracter´ısticas para analizar trabajos relacionados . . . 28

2.2. Resumen de las caracter´ısticas espec´ıficas de REST. . . 31

2.3. Caracterizaci ´on de Trabajos Relacionados – Parte I . . . 39

2.4. Caracterizaci ´on de Trabajos Relacionados – Parte II . . . 40

2.5. Caracterizaci ´on de Trabajos Relacionados de acuerdo a las caracter´ısticas RESTful . . . 43

3.1. Condiciones de Equivalencia Estructural por Elemento de Signatura . . . 47

3.2. Esquema de Evaluaci ´on Estructural . . . 47

3.3. Subtipificaci ´on Directa para Tipos Primitivos . . . 48

3.4. Equivalencia de Subtipos para Operaciones . . . 48

3.5. Reglas para descomponer nombres de operaciones . . . 49

3.6. Compatibilidad Estructural de Interfaces para el ejemplo de Car Rental . . . 51

3.7. Ejemplos de understemming y overstemming para pares de t´erminos . . . 54

3.8. Matriz de profundidad normalizada paraGetReservationyGetCurrentBooking 56 3.9. Matriz de co-occurrencias para GetReservationyGetCurrentBooking . . . 57

3.10. Correspondencia entre el valor estructural y sem´antico y las condiciones de equi-valencia para retorno . . . 61

3.11.Correspondencia entre el valor sem´antico y las condiciones de equivalencia para nombres . 61 3.12.Correspondencia entre el valor estructural y sem´antico y las condiciones de equivalencia para retorno . . . 62

3.13.Correspondencia entre el valor estructural y sem´antico y las condiciones de equivalencia para par´ametros . . . 64

3.14. Mapeo de operaciones estructural y sem´antico para el ejemplo de Car Rental . . . 65

4.1. Criterios de cubrimiento para Expresiones Regulares . . . 72

4.2. Plantillas de Test para Calculadora . . . 73

4.3. Casos de test en formato MuJava paraCalculator. . . 73

4.4. Compatibilidad Estructural-sem´antica de Interfaces para el ejemplo de Calculadora 76 4.5. Casos de test en formato MuJava paraCalculator. . . . 81

4.6. Compatibilidad Estructural de Interfaces para el ejemplo de Calculadora . . . 83

(11)

4.9. Resultado de la ejecuci ´on del TS ExhaustivoMujavaCalculator 1. . . . 91

4.10. Resultado de la ejecuci ´on del TS Reducido para el ejemplo de Calculadora . . . 92

(12)

Cap´ıtulo 1

Introducci ´on

Actualmente, una pr´actica com ´un para el desarrollo de software es reusar funcionalidad provista por terceras partes. Esta pr´actica no s ´olo ayuda a reducir los costos, sino tambi´en a enfocar el pro-ceso de desarrollo en la funcionalidad principal del sistema. En este contexto, el crecimiento de la Web habilita a los desarrolladores a ofrecer software no s ´olo en forma de bibliotecas, sino como componentes que se pueden invocar de forma din´amica, los cuales se conocen como servicios. En particular, la tecnolog´ıa de Servicios Web es la punta de lanza para la adopci ´on del paradig-ma de Computaci ´on Orientada a Servicios (SOC) [15]. Para utlizar servicios durante el desarrollo de software, es necesario descubrir previamente aquellos servicios que ofrezcan la funcionalidad deseada. Una vez que los servicios potencialmente adecuados son identificados, el ingeniero de software debe seleccionar el m´as adecuado.

Sin embargo, un uso eficaz del paradigma SOC requiere un abordaje eficiente para permitir que las aplicaciones consuman servicios. Actualmente, los desarrolladores deben realizar b ´usquedas manuales de servicios principalmente a trav´es de cat´alogos Web, los cuales usualmente brindan informaci ´on pobre y/o poco relevante, y luego deben proveer el c ´odigo intermedio adecuado pa-ra ensamblar efectivamente el servicio seleccionado en la aplicaci ´on cliente. Esto implica invertir un gran esfuerzo en descubrir servicios, analizar su idoneidad en el contexto de la aplicaci ´on cliente, y finalmente determinar las adaptaciones necesarias para su correcta integraci ´on y con-sumo. En este contexto, la presente tesis presenta un enfoque para selecci ´on, testing y adaptaci ´on de servicios.

El presente cap´ıtulo se organiza de la siguiente manera. La Secci ´on 1.1 presenta la motivaci ´on de este trabajo de tesis. La Secci ´on 1.2 presenta la soluci ´on propuesta y los objetivos delineados para este trabajo de tesis. La Secci ´on 1.3 provee algunas definiciones preliminares en el contexto de las aplicaciones orientadas a servicios y el paradigma SOC. An´alogamente, la Secci ´on 1.4 define algunos conceptos importantes en testing de software y particularmente testing de componentes y servicios. Finalmente, la Secci ´on 1.5 describe la organizaci ´on de la presente tesis.

1.1.

Motivaci ´on

(13)

La Computaci ´on Orientada a Servicios (SOC1) es el paradigma que tiene como objetivo abordar estos aspectos, promoviendo el desarrollo r´apido y de bajo costo de aplicaciones de distribuci ´on masiva, interoperables y capaces de evolucionar, que permiten interconectar m ´ultiples organi-zaciones creando procesos de negocio din´amicos. SOC permite efectivizar la creaci ´on de nue-vas facilidades de aplicaciones, en forma deservicios, posibilitando un crecimiento din´amico de portfolios de servicios organizacionales, y generando nuevas soluciones combinadas con com-ponentes externos que posiblemente residen en forma remota [126]. El bloque de construcci ´on fundamental en SOC, elservicio, consiste de un componente de software de caja negra con una interfaz bien definida que se puede invocar a trav´es de protocolos de red espec´ıficos [15]. La materializaci ´on del paradigma SOC en las organizaciones se puede alcanzar mediante la Ar-quitectura Orientada a Servicios (SOA2), que se presenta como un modelo arquitect ´onico centra-do en reducir la carga de implantaci ´on de las TICs3en una empresa, facilitando una mejora en agilidad y rentabilidad [53]. SOA define una soluci ´on tecnol ´ogica a la interacci ´on de servicios, donde se pueden identificar los siguientes actores: un cliente de servicios, un proveedor de servi-cios, y un agente de servicios (broker) [173]. En general, las Aplicaciones Orientadas a Servicios se basan en la tecnolog´ıa de Servicios Web: programas con una interfaz bien definida que puede ser localizada, publicada e invocada utilizando la infraestructura est´andar de la Web [15]. El paradigma SOC provee ventajas muy claras, dado que genera un bajo grado de acoplamien-to entre consumidor/proveedor de un determinado servicio y adem´as promueve fuertemente la reusabilidad de componentes de software. Sin embargo, por otro lado se produce un incremento de esfuerzo en dos etapas de un proyecto de desarrollo de software: implementaci ´on y manteni-miento [84]. En primer lugar, la b ´usqueda de servicios publicados en un registro requiere invertir mucho tiempo – en particular considerando el registro UDDI4(Universal Description, Discovery, and Integration) para la tecnolog´ıa de Servicios Web [35]. Esto impacta directamente en los cos-tos de la fase de implementaci ´on, ya que el paradigma SOC reemplaza el desarrollo de piezas espec´ıficas por el descubrimiento y contrataci ´on de las mismas. En segundo lugar, al introducir servicios externos a una aplicaci ´on, en general se produce un efecto colateral donde la l ´ogica del negocio queda “contaminada” con aspectos no funcionales, tales como localizaci ´on, comunica-ci ´on de datos sobre la red, etc. Esto no es un atributo de calidad deseable, dado que produce sistemas dif´ıciles de entender, mantener y extender [52]. Adem´as, los frameworks actuales para invocar servicios, por ejemplo WSIF5, producen c ´odigo fuente subordinado a un determinado proveedor de servicios [51]. En consecuencia, ante los cambios en las interfaces de los servicios externos o su reemplazo por nuevos proveedores, se requiere refactorizar el c ´odigo para efectuar la invocaci ´on de los mismos, lo cual propaga cambios por las partes “contaminadas” de la apli-caci ´on [110]. Esta situaci ´on, por lo tanto, genera un alto impacto sobre los costos en la etapa de mantenimiento de software.

Por lo tanto, para alcanzar un amplio uso del paradigma SOC se necesitan enfoques eficientes para permitir el consumo de servicios, excediendo la b ´usqueda de servicios y la creaci ´on de c ´odi-go intermedio para ensamblaje en una aplicaci ´on cliente [111]. Si bien existen esfuerzos actuales en la identificaci ´on de servicios, que poseen mecanismos semi-autom´aticos para facilitar la tarea de un ingeniero de software, en general proveen resultados parciales compuestos de conjuntos de servicios candidatos, donde a ´un deben efectuarse tareas manuales de an´alisis para realizar la selecci ´on definitiva del servicio candidato m´as adecuado. Se requieren por tanto estrategias para facilitar la toma de decisiones sobre los servicios recuperados, dado que a ´un con un conjunto reducido de candidatos, las heterogeneidades sobre las capacidades de los servicios (funciona-les y no-funciona(funciona-les) inyectadas por diferentes proveedores vuelven abrumador el esfuerzo de evaluaci ´on requerido. La exploraci ´on sobre los servicios candidatos debe tambi´en incluir una presunci ´on sobre las adaptaciones necesarias para una correcta integraci ´on y el consumo seguro

1SOC:Service Oriented Computing 2SOA:Service Oriented Architecture

3TIC: Tecnolog´ıa de la Informaci ´on y las Comunicaciones 4UDDI:http://uddi.xml.org/

(14)

Figura 1.1: Soluci ´on propuesta: M´etodo de Selecci ´on de Servicios

de los servicios. Las posibles combinaciones de proveedores de servicios pueden adem´as exceder el rango de una selecci ´on manual por parte de los consumidores. Se necesita manejar un entorno completamente heterog´eneo en el que los artefactos y dispositivos de diferentes capacidades pue-dan ser incorporados en forma transparente. As´ı, los mecanismos requeridos para encontrar los “mejores” Servicios Web deben considerar que, sin una apropiada extracci ´on de informaci ´on re-levante de los contratos de servicios y su comportamiento operacional, la selecci ´on del servicio candidato m´as adecuado se asemeja casi a un acto de predicci ´on.

1.2.

Soluci ´on propuesta

Con el fin de facilitar el desarrollo de Aplicaciones Orientadas a Servicios, en esta tesis se pre-senta un enfoque para asistir a los ingenieros de software en laselecci´onde Servicios Web. Esta propuesta se basa en un enfoque reciente [58], que fue desarrollado inicialmente para seleccio-nar los componentes de softwareoff-the-shelf (OTS) m´as adecuados como una soluci ´on para la sustituci ´on de los sistemas basados en componentes. Dado que los Servicios Web implican un caso especial de un componente de software [95], decidimos aplicar los conceptos de selecci ´on de componentes para definir un enfoque para selecci ´on de servicios.

(15)

Luego, el procedimiento deCompatibilidad de Comportamientose basa en unframeworkde testing para explorar el comportamiento requerido para los servicios candidatos, mediante el an´alisis de las transformaciones de datos (entrada/salida), lo que facilita comprender elmapeo funcional de un servicio y por lo tanto su comportamiento operacional. Adem´as, ambos procedimientos implican el an´alisis de factores espec´ıficos para construir artefactos de adaptaci ´on, que resuelven la “impedancia” entre las interfaces requeridas y las interfaces de los Servicios Web candidatos. En funci ´on de lo anteriormente expuesto, se puede entonces enunciar el objetivo general de esta tesis, de la siguiente manera:

“Definir un M´etodo de Selecci´on de Servicios Web para asistir a los ingenieros de software en la construcci´on de

Aplicaciones Orientadas a Servicios”

Para la consecuci ´on de este objetivo general, se propusieron los siguientes objetivos espec´ıficos:

1. Efectuar un estudio del Estado del Arte en selecci ´on e integraci ´on de Servicios Web, con ´enfasis en aspectos de composici ´on, verificaci ´on y adaptaci ´on de servicios.

2. Definir un Procedimiento deAn´alisis de Compatibilidad de Interfaces, considerando as-pectos puramente estructuralesy tambi´en bajo la inclusi ´on de aspectossem´anticos, y espe-cialmente a trav´es de la informaci ´on extra´ıda de las especificaciones WSDL de los Servicios Web.

3. Definir un Procedimiento deConstrucci ´on de Test Suite de Comportamiento, en funci ´on de criterios de testing de caja negra para componentes de software y Servicios Web, y conside-rando el factor de optimizaci ´on en la sobrecarga de generaci ´on y ejecuci ´on que implica un Test Suite de gran volumen.

4. Definir un Procedimiento deEvaluaci ´on de Compatibilidad de Comportamiento, basado en los resultados de los procedimientos anteriores y estableciendo la generaci ´on de artefactos de adaptaci ´on para integrar de manera segura los Servicios Web en una aplicaci ´on cliente.

5. Desarrollar implementaciones protot´ıpicas de los procedimientos definidos, para la asisten-cia semi-autom´atica de un ingeniero de software en laselecci´onde Servicios Web.

6. Efectuar una evaluaci ´on experimental del M´etodo deSelecci´onde Servicios Web, en t´ermi-nos de recuperabilidad, capacidad de adaptaci ´on y eficacia de los tests.

1.3.

Aplicaciones Orientadas a Servicios

En el paradigma SOC, unserviciose considera un contenedor de capacidades para un prop ´osito com ´un que define un contexto funcional distintivo. Tales capacidades se expresan de acuerdo con un contrato de servicio [53], y se encuentran encapsuladas como funciones aut ´onomas que interact ´uan a trav´es de una interfaz bien definida. Una definici ´on de servicio debe incluir un identificador (ID), la interfaz (que describe medios para comunicarse con el entorno del servicio) y su comportamiento operacional (un conjunto de operaciones a ser ejecutadas de acuerdo con alguna estructura interna de control) [107].

(16)

´o din´amicamente vinculados a un servicio – ambos exponiendo una clara interfaz de sus capa-cidades funcionales [110]. Cuando se construye una nueva aplicaci ´on, el ingeniero de software debe tomar la decisi ´on de proveer una implementaci ´on para alg ´un componente de la aplicaci ´on, ´o bien, utilizar una implementaci ´on ya existente. Esto se denominatercerizaci´on, es decir llenar el espacio que deja una funcionalidad faltante, con la implementaci ´on de un servicio existente, desarrollado por terceras partes [126].

El paradigma SOC reemplaza el desarrollo de un componente de software por una combinaci ´on de distintas actividades:descubrimientode servicios,selecci´onde servicios eintegraci´onde servicios en aplicaciones [84, 15]. La disponibilidad del modelo arquitect ´onico de SOA establece un ade-cuado entorno tecnol ´ogico que satisface los principios de dise ˜no de orientaci ´on a servicios [53], proveyendo componentes capaces de: 1) intercambiar mensajes, 2) describir los servicios, 3) pu-blicar y descubrir las descripciones de los servicios [153].

En SOA se define la interacci ´on entre componentes software como un intercambio de mensajes entresolicitantesyproveedoresde servicios, mediante unagente de servicios, como se muestra en la Figura 1.2 [69, 52]. Un componentesolicitanterealiza la b ´usqueda de un servicio en el registro que provee unagente de serviciosde acuerdo a sus necesidades y solicita la ejecuci ´on del mismo. Un componenteproveedores responsable de publicar la descripci ´on de un servicio en el registro de un agente de servicios, as´ı como aceptar y ejecutar las solicitudes de dichos servicios. Un componente puede asumir tanto el rol de proveedor como de solicitante de servicios. Unagente de servicios es un componente en el cual el servicio es publicado y puede ser descubierto; y puede ser visto como un registro o directorio de servicios.

Solicitante

Solicitante

de Servicios

de Servicios

Proveedor

Proveedor

de Servicios

de Servicios

Agente

Agente

de Servicios

de Servicios

Descubrir

Publicar

Interacción

Descripción de Servicio

Cliente Servicio

Figura 1.2: Arquitectura b´asica de un sistema orientado a servicios

1.3.1.

Tecnolog´ıa de Servicios Web

En su mayor´ıa, la industria del software ha adoptado el paradigma SOC utilizando la tecnolog´ıa de Servicios Web, donde el concepto de servicio se implementa mediante una interfaz especifi-cada en WSDL (Web Service Description Language) y un identificador dado por un URI [107, 126]. En el mismo sentido, la W3C6define que “un servicio Web es un sistema software (identificado por un URI), dise ˜nado para soportar la interacci´on m´aquina-a-maquina sobre una red interoperable. Tiene una interfaz descripta en un formato procesable por m´aquina (espec´ıficamente WSDL), y otros sistemas interact ´uan con el Servicio Web de la manera que prescribe su descripci´on, utilizando (por lo general) mensajes SOAP transmitidos mediante HTTP con una serializaci´on XML, junto con otros est´andares de la Web” [17]. La arquitectura de Servicios Web [163] consta de una serie de protocolos de acceso,

(17)

que si bien se encuentran en constante evoluci ´on, se los puede agrupar actualmente en cuatro capas principales, como se observa en la Figura 1.3.

Figura 1.3: Arquitectura de Protocolos de Servicios Web

La capa inferior, denominada capa deTransporte, es la responsable de transportar los mensajes entre los componentes software, y actualmente incluye los protocolos HTTP (Hyper Text Transfer Protocol), SMTP (Simple Mail Transfer Protocol), y FTP (File Transfer Protocol), entre otros. La capa de

Mensajeses la responsable de codificar los mensajes en un ´unico formato XML (eXtensible Markup Language), para lograr un entendimiento com ´un. Esta capa incluye protocolos como XML-RPC (XML-Remote Procedure Call) y SOAP (Simple Object Access Protocol). La capa deDescripci ´on de servicios es la responsable de describir la interfaz p ´ublica de un Servicio Web espec´ıfico, que ac-tualmente se logra a trav´es del protocolo WSDL (Web Service Description Language). Por ´ultimo, la capa deDescubrimientode servicios es la responsable de centralizar servicios y proveer una interfaz para la b ´usqueda y publicaci ´on de servicios. Actualmente, el descubrimiento de servi-cios se encuentra materializado por UDDI. En la Figura 1.4 se muestra la implementaci ´on de la arquitectura SOA, utilizando las tecnolog´ıas de Servicios Web, UDDI, WSDL y SOAP.

Cliente de

Cliente de

Servicio Web

Servicio Web

Servicio Web

Servicio Web

UDDI

UDDI

Descubrir

Publicar

SOAP

WSDL

Comunicación por medio de mensajes XML

Figura 1.4: Infraestructura est´andar de un Sistema orientado a Servicios

1.3.2.

Componentes Software y Servicios Web

Un paradigma ampliamente relacionado a SOC y SOA es elDesarrollo de Software basado en Com-ponentes(CBSD7), donde la construcci ´on de sistemas se basa principalmente en laselecci´one in-tegraci´onde componentes software [81, 29]. Un componente software es una unidad reutilizable de composici ´on, con interfaces y cualidades expl´ıcitamente especificadas, que denota una abs-tracci ´on simple y puede ser sujeto de composici ´on por terceras partes, sin necesidad de modifi-caci ´on [158, 75].

(18)

Tabla 1.1:Modelos de Componentes Orientados a Objetos

Tipo Modelo Lenguaje

Definici´on Implementaci´on

Clase EJB Java Java

J2EE

Objeto

CCM OMG IDL CORBA

COM Microsoft IDL actualmenteC,C++ yAda .Net Microsoft IDL cualquier lenguaje.Net Servicios Web WSDL cualquier lenguaje

Dado que los componentes est´an completamente desarrollados y se encuentran disponibles pa-ra su reutilizaci ´on, se los conoce com ´unmente comooff-the-shelf (OTS). Los componentes OTS poseen una variada procedencia: aquellos desarrollados en alg ´un proyecto previo, denominados in-house, entre los cuales se pueden mencionar los sistemas heredados (legacy), y en conjunto con los componentes de c ´odigo abierto denominados FOSS (free open source software), presentan como posibilidad el acceso al c ´odigo fuente. Mientras que otros componentes OTS que se adquieren de terceras partes (usualmente de proveedores comerciales), denominados COTS ( commercial-off-the-shelf), no cuentan en general con tal disponibilidad de c ´odigo fuente.

Modelo de Componentes

Existe una amplia diversidad de tecnolog´ıas involucradas en la construcci ´on de sistemas basados en componentes, cada una con requisitos y restricciones particulares que establecen el aspecto concreto que adopta un componente y los mecanismos para su integraci ´on en un sistema soft-ware. ElModelo de Componentesdefine la estructura y morfolog´ıa de los componentes, as´ı como tambi´en las reglas de creaci ´on, composici ´on y comunicaci ´on de los mismos [95]. Los modelos establecen por ejemplo la forma de definici ´on e invocaci ´on de las interfaces de los componen-tes, estableciendo en algunos casos una clara separaci ´on entre las interfaces y la implementaci ´on (encapsulada) del comportamiento de un componente [156, 95]. La Tabla 1.1 presenta una clasi-ficaci ´on de los modelos de componentes seg ´un una base de orientaci ´on a objetos (OO).

Considerando la separaci ´on entre interfaces e implementaci ´on, para los componentes que son en realidad clases Java, el lenguaje de definici ´on coincide con el de implementaci ´on, como en el caso de EJB y J2EE (Java 2 Enterprise Edition) [88]. Por otro lado, para el caso donde los com-ponentes son en realidad objetos, puede existir un lenguaje de descripci ´on de interfaces (IDL8) y otro de implementaci ´on, como en el caso de COM (Component Object Model) [34], CCM (Corba Component Model) [122], la tecnolog´ıa .Net [118], y los Servicios Web.

Aqu´ı se observa claramente la vinculaci ´on de la tecnolog´ıa de componentes software con el pa-radigma SOC, a trav´es de la tecnolog´ıa de Servicios Web, que justamente se considera una forma espec´ıfica de componente software. La interfaz de un Servicio Web que se describe en WSDL es comparable a una interfaz de programaci ´on de aplicaciones (API9), pero sin ataduras a frame-works de comunicaci ´on propietarios. La l ´ogica encapsulada por un Servicio Web (su implemen-taci ´on) podr´ıa adem´as adoptar la forma de un componente software o bien de una aplicaci ´on heredada (legacy).

La interfaz p ´ublica de un Servicio Web se define como uncontratoque permite su integraci ´on en una Aplicaci ´on Orientada a Servicios a trav´es del uso de componentes adaptadores. El contrato de un Servicio Web es esencialmente una colecci ´on de metadatos que describe varios aspectos del programa software subyacente, que incluye el prop ´osito y funci ´on de sus operaciones; los men-sajes que necesitan ser intercambiados para activar las operaciones; los modelos de datos usados

(19)

para definir la estructura de los mensajes; un conjunto de condiciones bajo las cuales se proveen las operaciones; e informaci ´on acerca de c ´omo y d ´onde puede ser accedido el servicio [53].

1.4.

Testing de Software

A continuaci ´on se explican los conceptos relacionados con Testing de Software, particularmente en el contexto de CBSD y de Servicios Web.

El proceso de Testing de Software consiste de la verificaci ´on din´amica del comportamiento de un programa contra el comportamiento esperado, por medio de un conjunto finito de casos de test, que fueron adecuadamente seleccionados de un conjunto usualmente infinito de ejecuciones en un dominio [157].

Minimizaci ´on o Reducci ´on de Test Suite

Las estrategias de testing generalmente intentan cubrir, en el mayor grado posible, todas las po-sibles ´areas de riesgo o conflictivas, es decir, aquellas que son m´as propensas a la presencia de defectos o que su existencia pudiera afectar considerablemente los datos/procesos/usuarios de los Sistemas bajo Test (SUT10). As´ı un TS puede asumir un volumen cada vez m´as grande para asegurar una confiabilidad sobre el comportamiento del SUT, y eso genera el problema del enor-me esfuerzo de ejecuci ´on de un TS exhaustivo. Para ello, se han definido estrategias que intentan maximizar el valor del TS: minimizaci ´on, selecci ´on y priorizaci ´on [168].

Minimizaci´on: intenta reducir el tama ˜no de un TS mediante la eliminaci ´on de los casos de testredundantes, o bien conservar los casos de testesenciales. Minimizaci ´on tambi´en se deno-mina “reducci ´on”, lo que significa que la elideno-minaci ´on es permanente. Estos dos conceptos son esencialmente intercambiables porque todas las t´ecnicas de reducci ´on se pueden utili-zar para producir un subconjunto temporal del TS, mientras que las t´ecnicas de minimiza-ci ´on se pueden utilizar para eliminar permanentemente los casos de test.

Selecci´on: tambi´en intenta reducir el tama ˜no de un TS, pero la mayor´ıa de las t´ecnicas de selecci ´on consideran en particular la modificaci ´on. Es decir, la selecci ´on no s ´olo es temporal con respecto a una versi ´on actual del SUT, sino que tambi´en se centra en la identificaci ´on de las partes modificadas del sistema. Los casos de test son seleccionados porque son relevan-tes para las parrelevan-tes modificadas del SUT, lo cual generalmente implica un an´alisis est´atico de caja blanca del c ´odigo del programa (esto se explica en la Secci ´on 1.4.1).

Priorizaci´on: intenta re-ordenar los casos de test para maximizar algunas propiedades desea-bles en forma temprana, tal como la tasa de detecci ´on de fallas. Se trata de encontrar la permutaci ´on ´optima de la secuencia de casos de test, y adem´as se asume que todos los ca-sos de test pueden ser ejecutados en el orden de la permutaci ´on generada. No se trata de seleccionar casos de test y por lo mismo no se produce una reducci ´on; pero al efectuar el re-ordenamiento de casos de test, es posible terminar la ejecuci ´on del TS en un punto ar-bitrario – probablemente cuando se alcanza a cubrir la propiedad deseable con un grado adecuado.

Facilidad de Testing de Componentes y Servicios Web

De acuerdo al Glosario Est´andar IEEE 610 [85], la Facilidad de Testing de Software considera dos aspectos: 1) el grado en el cual un sistema o componente facilita que se establezcan criterios de testing y el rendimiento de los tests para determinar si esos criterios han sido cubiertos; 2) el grado en el cual un requerimiento es establecido en t´erminos de permitir que se establezcan criterios y rendimiento de tests para determinar si esos criterios han sido cubiertos.

(20)

En la definici ´on previa se realizan dos consideraciones: la forma en que se desarrolla el software y los requerimientos sobre el sistema software que sirven de base para la definici ´on de un con-junto de casos de test o Test Suite (TS). En la industria de software se requiere de componentes y servicios reutilizables que puedan ser efectivamente testeados, para as´ı satisfacer la gran deman-da de desarrollos eficaces en reducci ´on de tiempo y costos. Para esto, los proveedores necesitan disponer de gu´ıas y m´etodos pr´acticos y v´alidos para desarrollar componentes y servicios con capacidad de ser testeados [89, 26].

En particular para la Facilidad de Testing en CBSD se ha establecido un conjunto de factores que son esenciales para que los proveedores puedan evaluar el nivel de facilidad de testing de los componentes, y los usuarios puedan realizar selecci ´on y evaluaci ´on de componentes y determi-nar el esfuerzo que ha invertido el desarrollador del componente para incrementar su capacidad de ser testeado. En la Tabla 1.2 [60, 89] se resumen los factores de Facilidad de Testing para Com-ponentes Software.

Tabla 1.2:Factores de Facilidad de Testing para Componentes Software

Factor Descripci ´on

Facilidad de Comprensi ´on

Informaci ´on anexa sobre el componente (ejemplo: documentaci ´on de las interfaces, de testing, etc.)

Facilidad de Observaci ´on

Percibir los datos desalidacomo funci ´on de lasentradas

Facilidad de Control Producir datos desalidaa partir de un conjunto espec´ıfico de datos deentrada

Facilidad de Trazado

Comparaci ´on del comportamiento esperado con la ejecuci ´on del componente (caja negra). Comprobaci ´on del estado interno del componente en cada invocaci ´on a sus interfaces (caja blanca)

Capacidad de Soporte de Testing

Mecanismos para agilizar el testing de componentes (ejemplo: para generar y ejecutar un TS, para administrar el proceso de testing, etc.)

En el contexto de Servicios Web se consideran v´alidos tales factores, donde los clientes o solicitan-tes de servicios deben agregar un nivel adicional de evaluaci ´on que involucra la disponibilidad en tiempo de ejecuci ´on de los servicios y la provici ´on continua y confiable de las capacidades ofrecidas (funcionales y no funcionales). Esto implica una carga adicional de responsabilidad so-bre los proveedores de servicios que deben extender el esfuerzo del ciclo de vida del desarrollo de servicios hacia la provici ´on de plataformas de ejecuci ´on de servicios. En particular se trata de un aspecto propio del paradigma SOC que se ha denominado “relaci ´on sin responsabilidad” [173], donde un cliente no requiere conocer c ´omo se ha implementado el servicio con el que se comu-nica, ni preocuparse por la ejecuci ´on concreta del servicio, en cada oportunidad que deba ser invocado. As´ı los desaf´ıos de confiabilidad en el paradigma SOC se ampl´ıan considerablemente y por ello se ha extendido el conjunto de factores para dar soporte a la Facilidad de Testing en SOA, como se resume en la Tabla 1.3.

1.4.1.

T´ecnicas de Testing para Componentes y Servicios Web

A continuaci ´on se explica la posibilidad de uso (con mayor o menor ajuste) de estrategias tradi-cionales de testing, y el desarrollo de nuevas estrategias espec´ıficas en el contexto de CBSD y de Servicios Web.

Criterios de Cubrimiento para Componentes y Servicios Web

(21)

Tabla 1.3:Factores de Facilidad de Testing para SOA

Factor Descripci ´on

Servicios At ´omicos

Considerar los niveles de publicaci ´on de servicios (e informaci ´on accesible): c ´odigo fuente, c ´odigo binario, modelo, signatura (WSDL). Procedencia

de Datos

Considerar la historia del procesamiento de datos: identificar su origen en crudo, c ´omo fueron derivados, su enrutamiento en SOA, y los procesos aplicados a los datos.

Integraci ´on de Servicios

Considerar la dinamicidad de SOA: interoperabilidad, composici ´on y re-composici ´on, controlador de servicios (tal como orquestador), controlador de adaptaci ´on (reconfiguraciones).

Colaboraci ´on de Servicios

Considerar el soporte de protocolos de colaboraci ´on din´amica: preparaci ´on, establecimiento, ejecuci ´on, terminaci ´on. As´ı cada servicio determina su colaboraci ´on en ejecuci ´on.

blanca. Sin embargo los clientes que no disponen del c ´odigo fuente de un componente/servicio, requieren de criterios de testing espec´ıficos que les permitan evaluar la correctitud como una uni-dad que se integra a la aplicaci ´on de destino. A continuaci ´on se introducen algunas definiciones de los criterios de cubrimiento para componentes y Servicios Web [89, 20].

Criterio de M´etodos[70].

Los componentes pueden tener varias interfaces, cada una compuesta de un conjunto de operaciones o m´etodos. El criterio requiere que toda interfaz deba ser ejecutada al menos una vez. Esto significa que toda operaci ´on de cada interfaz debe ser invocada al menos una vez. Este criterio tambi´en se denomina criterio de interfaces [167]. En el contexto de Servicios Web, se considera la definici ´on de una ´unica interfaz que se describe en WSDL y se compone de un conjunto de operaciones. Un criterio an´alogo se denominacriterio de operaciones[8].

Criterio de Eventos[167].

Un evento es un incidente en el cual el efecto resultante es la invocaci ´on de una interfaz. Los eventos pueden ser s´ıncronos (por ejemplo, invocaciones directas a las operaciones) o as´ıncronos (por ejemplo, la ocurrencia de excepciones). El criterio requiere que todo evento (s´ıncrono o as´ıncrono) de un componente deba ser cubierto por alg ´un caso de test. As´ı este criterio cubre a uno m´as espec´ıfico denominadocriterio de excepciones[70, 166].

Criterio de Dependencia de Contexto[167].

Los eventos pueden tener dependencias secuenciales con otros eventos, causando distintos comportamientos de acuerdo al orden en el que son invocados (operaciones o excepciones). El criterio requiere que cada una de las secuencias operacionales sea atravesada al menos una vez. En el contexto de Servicios Web se considera el flujo de control que definen las secuencias de invocaciones a las operaciones. Un criterio an´alogo se denomina criterio de flujo de operaciones[8].

Estos criterios han sido presentados de menor a mayor cubrimiento de acuerdo a la relaci ´on de subsumci ´on que existe entre ellos. En el caso del ´ultimo criterio se pueden considerar dos casos particulares de dependencia sobre las invocaciones a las interfaces [166]:

(22)

Inter-componente. Cuando los eventos de la interfaz de un componente presentan depen-dencia coneventos externos. Los eventos externos se corresponden con eventos provocados por un componente y atendidos por otro, lo cual genera interacciones entre dos componen-tes. Esto requiere dise ˜nar tests en los cuales interviene un componente cliente y un compo-nente servidor.

Las dependencias anteriores son v´alidas en el contexto de Servicios Web, pero adem´as se consi-deran otras dependencias en funci ´on de los datos (mensajes) de entrada y salida de las operacio-nes [8]:

De la entrada. Cuando dos operaciones comparten los mismos mensajes de entrada.

De la salida. Cuando dos operaciones comparten los mismos mensajes de salida.

De entrada/salida. Cuando al menos uno de los mensajes de salida de una operaci ´on, es el mensaje de entrada de otra operaci ´on.

Sobre ambos tipos de dependencias – invocaciones a las interfaces y de datos (mensajes) – se pueden considerar inter-relaciones (combinaciones), para as´ı cubrir adecuadamente el flujo de control y datos para los Servicios Web.

Estrategias de Testing para Componentes y Servicios Web

La calidad y volumen de informaci ´on que ofrece un componente/servicio sobre si mismo habi-lita la aplicaci ´on de ciertas estrategias de testing. As´ı la posibilidad de contar con el acceso a un c ´odigo fuente o a un c ´odigo binario, o bien a la especificaci ´on de un modelo, permite distinguir un tipo de componentes tal comoin-housey FOSS, los cuales podr´ıan ser tambi´en Servicios Web (desde la perspectiva de un proveedor), o bien otros componentes cuya ´unica informaci ´on dispo-nible consiste en las signaturas de las operaciones provistas, como la mayor´ıa de los componentes COTS, y nuevamente los Servicios Web (desde la perspectiva de un cliente).

Algunas t´ecnicas de testing asumen la accesibilidad al c ´odigo fuente, mientras que otras descar-tan tal disponibilidad pero dependen de que el proveedor incorpore informaci ´on de testing o que el cliente pueda extraer cierta informaci ´on de los componentes/servicios [89, 20].

A continuaci ´on se identifican las estrategias de testing en el contexto de CBSD y Servicios Web, estableciendo una relaci ´on con estrategias tradicionales que fueran directamente aplicables o con alguna adaptaci ´on en este contexto. En general las estrategias en el software tradicional se clasi-fican en testing“basado en especificaci´on” y testing“basado en c´odigo” [16, 13, 20].

Testing basado en Especificaci´on

Tambi´en denominado testing de“caja negra”, encontramos t´ecnicas funcionales y las ba-sadas en estado. El objetivo es revelar defectos (faults) relacionados con la funcionalidad externa, con la comunicaci ´on de las interfaces entre m ´odulos, con las restricciones reque-ridas (pre- y post-condiciones), y con el comportamiento de un programa. El problema es que generalmente la especificaci ´on existente no es formal, lo cual dificulta la creaci ´on de un TS para ejercitar los programas en forma sistem´atica. Sin embargo, los criterios basados en especificaci ´on pueden usarse en cualquier contexto (procedural, OO, CBSD y Servicios Web) sin necesidad de una adaptaci ´on importante.

Testing basado en C´odigo

(23)

de programaci ´on y la necesidad de tener acceso al c ´odigo fuente. Este factor no siempre es posible en el caso de componentes software (de acuerdo a su tipo y la perspectiva proveedo-r/cliente), y en el caso de Servicios Web no es directamente aplicable (desde la perspectiva de un cliente).

Testing Funcional: Se utiliza la especificaci ´on para obtener los requerimientos de testing o los datos de test, sin ning ´un conocimiento sobre la implementaci ´on [138]. Se requiere una especifi-caci ´on de alta calidad que se corresponda con los requerimientos del cliente, para as´ı soportar la aplicaci ´on de los criterios funcionales. Ejemplos de tales criterios para testing tradicional son [16]: 1) Partici ´on de Equivalencia; 2) An´alisis de Valores L´ımite; 3) Grafo Causa-Efecto; y 4) Partici ´on por Categor´ıa [6].

En el contexto de CBSD y Servicios Web, el cliente de un componente/servicio puede utilizar estas estrategias directamente. Sin embargo, como ocurre con todas las estrategias de caja ne-gra, resulta necesario disponer de una adecuada especificaci ´on que provea informaci ´on sobre las funciones (y argumentos) que son implementados en las operaciones provistas por un compo-nente/servicio. Por otro lado, la aplicaci ´on de estrategias de caja negra no asegura que las partes esenciales de la implementaci ´on puedan ser adecuadamente cubiertas [26, 89, 20].

Testing basado en Estado: Se utiliza una representaci ´on basada en una M´aquina de Estados Finita (FSM11) de la unidad bajo test. Basado en este modelo, los criterios para generar secuencias de test se utilizan para asegurar un comportamiento correcto [33, 147, 63].

Estos criterios son ampliamente usados en el contexto de OO para representar los aspectos de comportamiento de los objetos. Entre ellos se destacan elcriterio de estados,de eventosyde acciones entre los m´as d´ebiles, luego elcriterio de transicionesque cubre a los anteriores [9, 83, 72, 120], y luego criterios de mayor cubrimiento como elcriterio de caminos ida-vueltaparticularmente pro-puesto por [16].

Tambi´en se utilizan los criterios de FSM en el contexto del software basado en componentes y orientado a servicios, dado que s ´olo requieren una representaci ´on basada en estado para ser apli-cados [14, 26]. En particular, si los componentes proveen especificaciones descritas en la forma de un FSM, se puede construir un FSM extendido integrando las especificaciones y luego aplicar los criterios basados en estado [29]. Pero adem´as se pueden utilizar para construir una especie de grafo de flujo de control de la integraci ´on del comportamiento de todos los componentes que forman el sistema. El usuario del componente puede entonces aplicar una adaptaci ´on de las es-trategias de testing tradicional de flujo de control y flujo de datos para as´ı construir el TS [14, 20].

Testing Estructural: Se utilizan los aspectos de implementaci ´on para determinar los requeri-mientos de testing. La mayor´ıa de los criterios de la t´ecnica estructural se basan en un Grafo de Flujo de Control (tambi´en denominado Grafo de Programa) para representar el programa bajo test.

Los criterios estructurales se clasifican en: basados enflujo de control, y enflujo de datos. Entre los primeros se cuentan elcriterio de nodos(sentencias o comandos), elcriterio de arcos(o decisiones), y elcriterio de los caminos[138, 115]. Los criterios deflujo de datosexponen las interacciones entre las definiciones y los usos de las variables, y se componen de los criterios anteriores, agregando aquellos introducidos por [140], tales como, elcriterio de los p-usos,de las definiciones,de los usos, y de los du-caminos.

Se han generado diversas extensiones de los criterios de flujo de datos, tanto para testing de integraci ´on de programas procedurales, como de testing de unidad e integraci ´on para OO [78, 16].

El testing estructural, sin embargo, enfrenta serias restricciones y desventajas en relaci ´on con la necesidad de determinar requerimientos de testing inviables, tales como caminos no ejecutables y

(24)

asociaciones imposibles. Estas restricciones generan serios problemas para la automatizaci ´on de testing. No obstante, esta t´ecnica parece ser complementaria al testing funcional y la informaci ´on que se obtiene con su aplicaci ´on tambi´en resulta relevante para el mantenimiento, depuraci ´on y estimaci ´on de confiabilidad de software [138, 13].

Dado que estos criterios requieren el acceso al c ´odigo fuente, resulta en general imposible su aplicaci ´on en el contexto de CBSD para un cliente de componentes o Servicios Web [26].

Testing basado en Defectos: Se utiliza informaci ´on de los defectos que se encuentran con ma-yor frecuencia en los distintos proyectos de desarrollo y adem´as considera los tipos de defectos espec´ıficos que un ingeniero de testing desea descubrir. Existen dos criterios que t´ıpicamente se concentran en defectos: Inyecci ´on de Errores (error seeding) y Testing Mutacional [49, 157, 90]. En la t´ecnica deInyecci ´on de Erroresse introducen en el programa bajo test (PUT12), un n ´umero conocido de defectos artificiales previo a ejercitar el TS, para que luego del test se calcule el ratio entre defectos naturales/artificales a partir del n ´umero total de defectos encontrados, y con ello se estima el n ´umero de defectos naturales restantes [22, 43, 61].

ElTesting Mutacionalse basa en aplicar ligeros cambios al c ´odigo fuente de un PUT generando nuevas versiones que deber´ıan comportarse de forma defectuosa. Las versiones defectuosas se denominan mutantes, y se crean en base a operadores de mutaci ´on, que son reglas que definen cambios sint´acticos que se aplican sobre el PUT para crear los mutantes. El prop ´osito es evaluar la capacidad de un TS para distinguir la diferencia entre PUT y sus mutantes. Cuando un mu-tante tiene un comportamiento diferente al de PUT (es decir, las salidas de PUT y del mumu-tante son diferentes para alg ´un caso de test de TS) se dice que el mutante “muere”; si no, el mutante permanece “vivo”. Un mutante vivo debe ser analizado para comprobar si es funcionalmente equivalente al PUT o si puede crearse alg ´un nuevo caso de test que permita matar al mutante, promoviendo de esta manera la mejora del TS. Uno de los problemas con la t´ecnica de mutaci ´on es el alto costo de ejecutar un gran n ´umero de mutantes [49, 29, 20].

Se han propuesto extensiones de este criterio para testing de integraci ´on y para especificaciones de programas. Por ejemplo se ha definido el criterio de Mutaci ´on de Interfaces que aplica el concepto de mutaci ´on a la fase de testing de integraci ´on. Con este criterio se propuso un nuevo conjunto de operadores mutantes especializados en errores de integraci ´on [48, 70].

En el contexto de las especificaciones de testing, la mutaci ´on puede ser usada para la comproba-ci ´on mediante Redes de Petri y FSM [29], entre otros. Adem´as se han propuesto enfoques para OO, que no difieren significativamente de los operadores mutantes tradicionales, pero introdu-cen operadores especializados correspondientes a aspectos propios de la OO tales como clases y relaciones entre clases [119].

En el caso de componentes que no proveen acceso al c ´odigo fuente, a ´un se pueden aplicar ciertas estrategias basadas en defectos, particularmente en funci ´on de las interfaces provistas por los componentes. As´ı la t´ecnica de Mutaci ´on de Interfaces [48, 70] se puede utilizar con m´ınimos ajustes en el contexto de CBSD y de Servicios Web [29, 26].

1.5.

Organizaci ´on de la Tesis

A continuaci ´on se describe en forma sint´etica el contenido del resto de los cap´ıtulos que com-prenden la estructura de esta Tesis:

Cap´ıtulo 2 Se presenta el Estado del Arte en Selecci ´on e Integraci ´on de Servicios, donde las pro-puestas son analizadas de acuerdo a un conjunto de caracter´ısticas definidas a partir de la literatura relacionada. Adem´as, se discuten los problemas abiertos y desaf´ıos de investiga-ci ´on actuales en el tema, lo que sustenta la propuesta de la presente tesis.

(25)

Cap´ıtulo 3 Se introduce una descripci ´on general del M´etodo deSelecci´onde Servicios Web, y lue-go se presenta el procedimiento deAn´alisis de Compatibilidad de Interfaces, que consiste de dos versiones: una puramenteestructuraly otrah´ıbrida(estructural-sem´antica) donde se aplican diferentes criterios de equivalencia y bases sem´anticas subyacentes.

Cap´ıtulo 4 Se presenta el procedimiento deEvaluaci ´on de Compatibilidad de Comportamien-to, donde se desarrolla la generaci ´on de artefactos adaptadores (wrappers) y que consta de dos versiones: la evaluaci ´on exhaustiva,en funci ´on del an´alisis puramenteestructuraly la versi ´onreducida,en funci ´on del an´alisish´ıbridode interfaces.

Cap´ıtulo 5 Se presenta la evaluaci ´on experimental del M´etodo de Selecci´on de Servicios Web, que consta de un framework experimentale para evaluar los procedimientos a nivel de interfaces de servicios.

(26)

Cap´ıtulo 2

Estado del Arte en Selecci ´on e

Integraci ´on de Servicios

2.1.

Introducci ´on

Recientemente, la adopci ´on de Servicios Web se ha vuelto la alternativa con mayor potencial para soportar la integraci ´on segura y transparente de aplicaciones B2B1. De esa manera, elframework elemental de servicios, constitu´ıdo sobre los est´andares de base SOAP, WSDL y UDDI, es impul-sado hacia una frontera donde la norma com ´un sea la composici ´on y colaboraci ´on. Esto implica poder combinar servicios tercerizados para ofrecer nuevos servicios con valor agregado.

Sin embargo, los mecanismos de selecci ´on e integraci ´on de servicios deben tener en cuenta m ´ulti-ples y complejos factores, tal como el potencial de composici ´on (composability), la adaptabilidad frente a fallos o incompatibilidades, ´o la verificaci ´on y validaci ´on de ciertas propiedades espe-radas. Como resultado, las soluciones actuales para selecci ´on de Servicios Web ya sea desde la industria (con base en las plataformas deworkflow) o la academia (con base en la Web Sem´antica) carecen de una adopci ´on amplia y estandarizada [19, 141, 67]. En consecuencia, analizar y deci-dir sobre los mecanismos y plataformas de selecci ´on m´as adecuados para cada contexto puede resultar impracticable.

Adem´as, en los ´ultimos a ˜nos los servicios REST captaron la atenci ´on como una soluci ´on ligera, brindando escalabilidad, confiabilidad y visibilidad. REST es un estilo arquitect ´onico que utiliza los m´etodos b´asicos de HTTP (get, put, post, delete) para acceder y manipular los recursos. La transici ´on entre los estados de la aplicaci ´on en REST se realiza siguiendo el principio HATEOAS2 mediante la navegaci ´on a trav´es de hiperv´ınculos [56, 96]. Los servicios REST son una alternativa para implementar Servicios Web paralela a los est´andares relacionados con SOAP – estos ´ultimos a veces abreviados como WS-*. Los servicios REST presentan cuatro propiedades caracter´ısticas:

1. El estado y la funcionalidad de la aplicaci ´on se abstraen bajo el concepto derecurso. 2. Cada recurso es direccionable un´ıvocamente utilizando un v´ınculo hipermedia (URI).

3. Todos los recursos comparten una interfaz uniforme para transferir el estado – esto es, los m´etodos HTTP.

4. Son f´acilmente consumibles y combinables por el usuario final en los denominados mas-hups.

1Business to Business

(27)

Figure 2.1: Comparaci ´on de las pilas de lenguajes para SOAP y REST

Los proveedores y consumidores de servicios han comenzado a adoptar arquitecturas REST, y por ello es importante estudiar c ´omo esta riqueza de nuevos servicios puede ser reutilizada por medio de selecci ´on, adaptaci ´on, testing y finalmente composici ´on [131]. En tal sentido, se estu-dian en este cap´ıtulo algunos enfoques ligeros emergentes basados en servicios REST. Estos son evaluados de acuerdo a las caracter´ısticas definidas para servicios SOAP y luego de acuerdo a un conjunto de caracter´ısticas propias de servicios REST. La Figura 2.1 ilustra diferentes pilas de lenguajes y protocolos para servicios basados en SOAP y REST, donde se vislumbra que para servicios basados en SOAP se han propuesto m´as cantidad de lenguajes y est´andares [96]. Existe en la comunidad de Servicios Web un debate social y t´ecnico acerca de “REST vs. SOAP” [174, 131] desde el punto de vista del proceso de estandarizaci ´on, y de las implicacio-nes de estas filosof´ıas de dise ˜no. Sin embargo, REST y SOAP no son necesariamente opuestos: REST es un estilo arquitectonico, y SOAP es un protocolo general que puede ser un elemento de muchas arquitecturas diferentes. Los autores sugieren pensar REST como un estilo navegacio-nal, y SOAP como un estilo procedural. A pesar de que estos t´erminos son entendibles y usados frecuentemente, pueden generar cierta controversia.

En este Cap´ıtulo, proponemos en primer lugar un conjunto de caracter´ısticas (Secci ´on 2.1.1) para identificar el valor agregado de cada mecanismo de selecci ´on y composici ´on de servicios – esta ´ultima como una extensi ´on de la anterior. Adem´as, se presenta un conjunto de caracter´ısticas propias de los servicios REST (Secci ´on 2.1.2) que complementan a las anteriores en el an´alisis de este tipo particular de servicio.

Luego, basado en esas caracter´ısticas, analizamos trabajos representativos desde una perspectiva comparativa. Se agruparon los enfoques de acuerdo a tres ejes tem´aticos abordados a lo largo de esta de tesis: Selecci ´on de Servicios (Secci ´on 2.2.1), Adaptaci ´on (Secci ´on 2.2.2) yTesting (Sec-ci ´on 2.2.3). Adem´as, se realiza un an´alisis de propuestas basadas en servi(Sec-cios REST (Sec(Sec-ci ´on 2.2.4). Finalmente, se discuten los puntos importantes del an´alisis de trabajos relacionados (Secci ´on 2.3) que justifican el desarrollo de esta tesis.

2.1.1.

Caracter´ısticas para analizar propuestas en Servicios Web

Se han llevado a cabo varias iniciativas para proporcionar plataformas y lenguajes que permitan la integraci ´on de sistemas heterog´eneos inter-organizacionales, tal como OWL-S3 [47] para el

(28)

marcado sem´antico de los servicios y composiciones, y BPEL4para la representaci ´on deworkflows de servicios, dondea prioriya se conocen los enlaces entre los servicios [163].

A pesar de todos estos esfuerzos, el ciclo de vida de los Servicios Web (Descubrimiento, Selecci ´on, Integraci ´on y Composici ´on) sigue siendo una tarea muy compleja. Sin embargo, est´a m´as all´a de la capacidad de un desarrollador hacer frente a todo este proceso de forma manual [139]. Como los Servicios Web pueden ser desarrollados por diferentes organizaciones, utilizando diferentes modelos conceptuales, actualmente es imposible definir y evaluar los Servicios Web de manera imparcial y con un lenguaje com ´un. En este contexto, las propuestas actuales para la especifica-ci ´on de Serviespecifica-cios Web y composiespecifica-ciones se pueden interpretar como una transiespecifica-ci ´on haespecifica-cia un nuevo frameworkrobusto para el desarrollo de aplicaciones basadas en Servicios Web. Sin embargo, a ´un persiste el desacuerdo sobre la estandarizaci ´on: la industria y la academia no pueden hacer frente a los problemas de interoperabilidad real sin est´andares robustos y comunmente acordados [42]. Por lo tanto, otro reto principal en los ecosistemas de servicios es verificar y satisfacer la inter-operaci ´on de servicios potencialmente compatibles [54].

Para el an´alisis de trabajos relacionados, en este cap´ıtulo definimos un conjunto de ocho carac-ter´ısticas que describen c ´omo los diferentes trabajos utilizan y/o proponen tecnolog´ıas, lengua-jes, pr´acticas y est´andares orientados a servicios. Adem´as, hemos validado convenientemente este conjunto de caracter´ısticas en relaci ´on a otros relevamientos del estado del arte en SOA [67]. La Tabla 2.1 presenta un resumen de cada caracter´ıstica, junto con una lista de sus posibles va-lores. Luego, las secciones siguientes analizan los enfoques actuales en Selecci ´on, Adaptaci ´on y Testing de Servicios Web en base a este conjunto de caracter´ısticas.

Perspectiva La Perspectiva caracteriza a los enfoques actuales teniendo en cuenta la forma en que se combinan o componen los servicios, principalmente: orquestaci ´on, coreograf´ıa,workflow, omashup. Orquestaci ´on y coreograf´ıa [134] parecen abarcar todas las alternativas de composici ´on basadas en SOAP e incluso se superponen ligeramente. Tambi´en se aplican a muchos enfoques de composici ´on de servicios REST. Adem´as, la perspectiva deworkflowsurge del hecho de que, en muchos sentidos, una composici ´on de servicios es similar a unworkflow. El inter´es actual en Servicios Web est´a dirigiendo la atenci ´on a las cuestiones que tienen una historia m´as larga en la comunidad deworkflows[174, 139]. La persectiva demashupes estrictamente inherente a los enfoques REST.

Los posibles valores para esta caracter´ıstica son: “Orquestaci ´on”, “Coreograf´ıa”, “Workflow”, “ Mas-hup”, o “Ad-hoc”.

Automatizaci ´on De acuerdo con esta caracter´ıstica, los enfoques sobre Servicios Web se pueden clasificar en tres categor´ıas: manual, semi-autom´atico y autom´atico [103]. Los enfoques manua-les esperan que el usuario generescriptsde aplicaciones basadas en servicios (para delinear la funcionalidad de una manera abstracta) ya sea gr´aficamente o mediante un editor de texto, y a continuaci ´on especifican los scripts para un motor de ejecuci ´on. Sin embargo, estos sistemas tienen varios inconvenientes, tales como el esfuerzo de programaci ´on, ligadura manual – que implica reemplazar manualmente los servicios al detectar fallos – y la necesidad de usuarios con buenos conocimientos de programaci ´on y servicios. Las t´ecnicas semi-automatizadas hacen sugerencias para la selecci ´on de servicios durante el proceso. No obstante, el usuario debe selec-cionar los servicios y vincularlos en el orden deseado. Estos sistemas no son escalables – ya que el proceso de filtrado puede ofrecer numerosos servicios para que el usuario seleccione – y care-cen de mecanismos de auto-adaptaci ´on. Finalmente, las t´ecnicas automatizadas utilizan t´ecnicas de IA como planificadores o t´ecnicas similares para automatizar todo el proceso. Sin embargo, una automatizaci ´on total requiere la comprensi ´on del contexto, la sem´antica y el dominio del problema.

(29)

Tabla 2.1:Resumen de caracter´ısticas para analizar trabajos relacionados

Categor´ıa Nombre Descripci ´on Valores

Tecnolog´ıas

Perspectiva

Perspectiva (un participante, m ´ultiples participantes) y punto de vista (desde un servicio en particular, vista general).

Orquestaci ´on / Coreografia / Workflow / Mashup / Ad-hoc

Automatizaci ´on

La soluci ´on propuesta es autom´atica hasta cierto punto, a trav´es del uso de ontolog´ıas u otro soporte para

razonamiento sem´antico, t´ecnicas de planning, etc.

Manual / Semi-Auto / Auto

Definici ´on y ligadura

Las aplicaciones se construyen ensamblando servicios en tiempo de dise ˜no (est´atica), en tiempo de ejecuci ´on y on-the-fly(din´amica), o combinando ambas (h´ıbrida).

Est´atica / Din´amica / H´ıbrida

Est´andares Conformidad

La soluci ´on propuesta adhiere a est´andares t´ecnicos, o a lenguajes/especificaciones estandarizados para describir los servicios y/o su combinaci ´on (composici ´on).

Si(nombre del est´andar)/ No Especificaci ´on Especificaciones de Servicios Web (y/o composiciones)

aceptados por la propuesta

(nombre del lenguaje)/ Ad-hoc

Practicas

Adaptaci ´on

La l ´ogica de interconexi ´on de servicios puede ser alterada desde una perspectiva abstracta o concreta. En caso de adaptaciones a nivel concreto, las incompatibilidades funcionales se manejan modificando las interfaces o el orden de los mensajes (protocolo), mientras que otras fallas pueden ser manejadas ligando nuevos servicios concretos al workflow. Abstracto / Concreto (Interfaz, Protocolp, re-ligadura de Workflow) / Ambos/ No Aplicable Verificaci ´on &

Validaci ´on (V&V)

La soluci ´on propuesta soporta verificaci ´on y/o validaci ´on a trav´es de testing, monitoreo, simulaci ´on, etc.

Si(mecanismo)/ No

QoS La propuesta considera criterios de calidad (QoS) o

propiedades no funcionales (NFPs) Si (criterios) / No

Definici ´on y Ligadura Los servicios pueden ser ligados de forma manual y en base a una de-finici ´on existentea priori– denominado enfoque est´atico; o de forma aut ´onoma y bajo deman-da (on-the-fly) – denominado enfoque din´amico [31]. En comparaci ´on, la definici ´on y ligadura din´amica permiten a las aplicaciones ser m´as flexibles y adaptables al contexto y las preferencias del usuario (por ejemplo, la ubicaci ´on, el tiempo, y el perfil). La alternativa din´amica tambi´en reduce los costos de desarrollo de aplicaciones por el ahorro de tiempo de descubrimiento de servicios. Sin embargo, la composici ´on de servicios est´atica es m´as adecuada para el dise ˜no de patrones de interacci ´on complejos, como bifurcaci ´on o iteraci ´on, a menudo presentes en las apli-caciones B2B, que son complejas, pero f´aciles de prever en tiempo de dise ˜no [62].

Los posibles valores para esta caracter´ıstica son “Est´atica”, “Din´amica”, o “H´ıbrida”.

Conformidad con Est´andares Sin un acuerdo s ´olido y com ´un sobre los est´andares, los inves-tigadores y profesionales no pueden hacer frente a los problemas de interoperabilidad [42]. Los est´andares est´an, por definici ´on, bien fundamentados y documentados. Intuitivamente, los enfo-ques estandarizados pueden ser m´as f´aciles de implementar y adoptar que las soluciones ad-hoc. Los posibles valores para esta categor´ıa son Si/No, junto con los nombres de los est´andares adop-tados.

Referencias

Documento similar