166
Universidad de Colima Facultad de Telemática ABCSIS: ARQUITECTURA BASADA EN COMPONENTES DE SOFTWARE PARA LA INTEGRACIÓN DE SERVICIOS TESIS Que para obtener el grado de MAESTRO EN COMPUTACIÓN PRESENTA: ING. HUGO CÉSAR PONCE SUÁREZ ASESORES: M. en C. JOSÉ ROMÁN HERRERA MORALES D. en C. PEDRO DAMIÁN REYES COLIMA, COLIMA. NOVIEMBRE DE 2009

Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

Embed Size (px)

Citation preview

Page 1: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

Universidad de Colima Facultad de Telemática

ABCSIS: ARQUITECTURA BASADA EN COMPONENTES DE SOFTWARE PARA LA INTEGRACIÓN DE SERVICIOS

TESIS

Que para obtener el grado de MAESTRO EN COMPUTACIÓN

PRESENTA: ING. HUGO CÉSAR PONCE SUÁREZ

ASESORES: M. en C. JOSÉ ROMÁN HERRERA MORALES

D. en C. PEDRO DAMIÁN REYES

COLIMA, COLIMA. NOVIEMBRE DE 2009

Page 2: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

II

ÍNDICE

Resumen .................................................................................................................... 1 Abstract...................................................................................................................... 2 1. Introducción........................................................................................................... 3

1.1 Antecedentes ................................................................................................ 3 1.2 Descripción del problema.............................................................................. 5 1.3 Hipótesis ....................................................................................................... 6 1.4 Objetivos ....................................................................................................... 6 1.5 Alcances y Limitaciones................................................................................ 7 1.6 Descripción general de ABCSIS ................................................................... 8 1.7 Metodología .................................................................................................. 9 1.8 Estructura del documento de la tesis .......................................................... 10

2. Antecedentes....................................................................................................... 11

2.1 Marco Histórico................................................................................................ 11 2.2 Marco Contextual............................................................................................. 17

2.2.1 Los sistemas de automatización de bibliotecas ........................................ 17 2.2.2 Sistema Integral Automatizado de Bibliotecas de la Universidad de......... 19 Colima (SIABUC) ............................................................................................... 19

2.2.2.1 Arquitectura Actual de SIABUC .......................................................... 23 2.2.2.2 CGI WebS8......................................................................................... 24 2.2.2.3 API WebS8 ......................................................................................... 25

2.3 Trabajos Relacionados .................................................................................... 27 3 Marco Teórico....................................................................................................... 29

3.1 Arquitecturas Iniciales...................................................................................... 29 3.1.1 CORBA ..................................................................................................... 30 3.1.2 DCOM ....................................................................................................... 32

3.2 Servicios Web.................................................................................................. 35 3.2.1 La tecnología de los servicios Web........................................................... 39 3.2.2 XML........................................................................................................... 40 3.2.3 WSDL........................................................................................................ 44 3.2.4 SOAP ........................................................................................................ 48 3.2.5 UDDI ......................................................................................................... 54

3.3 Arquitectura Orientada a Servicio (SOA) ......................................................... 61 3.3.1 Concepto de SOA ..................................................................................... 61 3.3.2 Estructura de SOA .................................................................................... 66 3.3.3 Aplicación.................................................................................................. 68 3.3.4 Servicio ..................................................................................................... 69 3.3.5 Repositorio ................................................................................................ 70 3.3.6 Bus de Servicio ......................................................................................... 71

3.4 SOA con Servicios Web................................................................................... 73 4. Arquitectura ABCSIS........................................................................................... 75

4.1 Modelo Conceptual .......................................................................................... 75

Page 3: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

III

4.2 Diseño arquitectónico ...................................................................................... 78 4.2.1 Arquitectura ABCSIS................................................................................. 80 4.2.2 Entorno de Comunicación ......................................................................... 82 4.2.3 Motor de datos y estructura de la base de datos ...................................... 83 4.2.4 Comunicación con la base de datos.......................................................... 85 4.2.5 Descripción de módulos y componentes................................................... 88

5. Desarrollo de ABCSIS ......................................................................................... 99

5.1 Creación del servicio...................................................................................... 106 5.2 Hosting del servicio........................................................................................ 112 5.3 Implementación del prototipo......................................................................... 116

6. Pruebas .............................................................................................................. 125

6.1 Prueba de operación...................................................................................... 126 6.1.1 Resultados .............................................................................................. 130

6.2 Prueba de rendimiento................................................................................... 133 6.2.1 Resultados .............................................................................................. 140

7. Resultados y conclusiones .............................................................................. 147

7.1 Análisis de los resultados .............................................................................. 147 7.2 Conclusiones ................................................................................................. 149 7.3 Trabajo futuro ................................................................................................ 151

Anexos ................................................................................................................... 157 Glosario.................................................................................................................. 158

Page 4: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

IV

ÍNDICE DE FIGURAS

Figura 1. Ejemplo de funcionamiento de un servicio bajo ABCSIS..................... 8 Figura 2. Evolución de la Arquitectura Orientada a Servicios…………………… 15 Figura 3. Arquitectura actual de SIABUC8………………………………………… 23 Figura 4. Arquitectura CORBA………………………………………………………. 30 Figura 5. Arquitectura DCOM………………………………………………………... 33 Figura 6. Representación de un servicio Web…………………………………….. 36 Figura 7. Interfaz de los Servicios Web con los sistemas finales……………….. 37 Figura 8. Mensaje SOAP en XML…………………………………………………... 38 Figura 9. Estructura inicial del documento WSDL………………………………… 46 Figura 10. Versiones del WSDL…………………………………………………….. 47 Figura 11. Estructura del protocolo SOAP…………………………………………. 49 Figura 12. Mensajes SOAP interconectando sitios remotos…………………….. 50 Figura 13. Interacción de los nodos en la ruta SOAP…………………………….. 51 Figura 14. Localización de un servicio Web mediante UDDI…………………….. 56 Figura 15. Modelo operacional de los servicios Web…………………………….. 59 Figura 16. Estructura de SOA……………………………………………………….. 66 Figura 17. Elementos que conforman un servicio………………………………… 70 Figura 18. Ejemplo de funcionamiento de un servicio bajo ABCSIS……………. 75 Figura 19. Modelo de la arquitectura ABCSIS…………………………………….. 82 Figura 20. Diagrama entidad-relación para la reservación de un ejemplar……. 85 Figura 21. Parámetros de conexión a la base de datos PostgreSQL…………... 86 Figura 22. Conexión al servidor de PostgreSQL………………………………….. 87 Figura 23. Servicios y operaciones de ABCSIS…………………………………… 88 Figura 24. Operación para hacer reservaciones………………………………….. 89 Figura 25. Operación para buscar un alumno en la base de datos……………... 89 Figura 26. Operación para buscar una ficha bibliográfica en la base de datos... 90 Figura 27. Operación para obtener la disponibilidad de un ejemplar…………… 90 Figura 28. Operación para registrar un usuario en la base de datos…………… 92 Figura 29. Operación para verificación de no adeudos…………………………... 92 Figura 30. Operación para mostrar las multas pendientes por saldar………….. 93 Figura 31. Operación para obtener los préstamos pendientes………………….. 93 Figura 32. Operación para renovar ejemplares…………………………………… 94 Figura 33. Operación para obtener los préstamos de un usuario………………. 94 Figura 34. Operación para obtener listado de escuelas………………………….. 95 Figura 35. Operación para registrar una inconformidad………………………….. 95 Figura 36. Operación para listar las quejas pendientes por atender……………. 96 Figura 37. Operación para responder una inconformidad……………………….. 96 Figura 38. Operación para hacer sugerencias de compras bibliográficas……... 97 Figura 39. Operación para emitir comentarios sobre títulos consultados………. 97 Figura 40. Interoperabilidad entre varios sistemas operativos…………………... 100Figura 41. Modelo de programación de WCF……………………………………... 102Figura 42. Binding de ABCSIS………………………………………………………. 107Figura 43. Servicio Acervo…………………………………………………………… 107Figura 44. Definición del contrato de datos………………………………………... 108Figura 45. Generación del contrato de datos para el manejo de excepciones… 109

Page 5: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

V

Figura 46. Invocación de una excepción…………………………………………… 110Figura 47. Definición del servicio……………………………………………………. 110Figura 48. Cuenta de usuario ASPNET……………………………………………. 112Figura 49. Creación de un directorio virtual en IIS………………………………... 113Figura 50. Directorio virtual y archivos del servicio Acervo………………………. 113Figura 51. Servicio Acervo hospedado en IIS……………………………………... 114Figura 52. WSDL del servicio Acervo………………………………………………. 115Figura 53. Diagrama de flujo para la reservación…………………………………. 116Figura 54. Archivo de configuración de PHP………………………………………. 117Figura 55. Configuración correspondiente para el soporte de SOAP en PHP… 117Figura 56. Constructor SoapClient para hacer referencia al servicio Acervo..… 118Figura 57. Invocación de la operación BuscarFicha……………………………… 119Figura 58. Interfaz para consulta y reservación de libros……………………..…. 119Figura 59. Resultados de la consulta………………………………………………. 120Figura 60. Invocación de la operación BuscaAlumno…………………………..... 120Figura 61. Usuario no encontrado en la base de datos……………………...…… 121Figura 62. Usuario válido……………………………………………………..……... 122Figura 63. Invocación de la operación Reservar…………………………..……… 122Figura 64. Ejemplar reservado……………………………………………..……….. 123Figura 65. Generación de excepción de tipo SoapFault………………...……….. 123Figura 66. Error en sentencia SQL………………………………………...……….. 124Figura 67. Entorno de prueba con Windows XP sobre VmWare………...……… 128Figura 68. Aplicación utilizada en la prueba de rendimiento…………………..… 134Figura 69. Proceso de petición-respuesta de la prueba de rendimiento……..… 135Figura 70. Cabecera HTTP enviada a la implementación CGI………………..… 136Figura 71. Respuesta exitosa por parte de la implementación CGI…………….. 136Figura 72. Petición de búsqueda en ABCSIS con el método POST……...…….. 137Figura 73. Script php que recibe los parámetros enviados con el método POST………………………………………………………………………..

137

Figura 74. Respuesta del servidor a una petición de búsqueda en ABCSIS…... 138Figura 75. Múltiples procesos en ejecución en la modalidad CGI…………...….. 139Figura 76. Menor cantidad de recursos utilizados por el prototipo ABCSIS….... 140Figura 77. Promedio de la prueba de ABCSIS con cinco eventos………...……. 141Figura 78. Promedio de la prueba de ABCSIS con cincuenta eventos…..…….. 142Figura 79. Promedio de la prueba de ABCSIS con quinientos eventos…..……. 143Figura 80. Promedio de la prueba de ABCSIS con cinco mil eventos…...……... 143Figura 81. Promedio de la prueba CGI con cinco eventos…………...………….. 144Figura 82. Promedio de la prueba CGI con cincuenta eventos……..…………... 145Figura 83. Promedio de la prueba CGI con quinientos eventos…..…………….. 145Figura 84. Promedio de la prueba CGI con cinco mil eventos……...…………… 146

Page 6: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

VI

ÍNDICE DE TABLAS

Tabla 1. Campos de un libro……………………………………………………………… 43 Tabla 2. Evolución de la especificación UDDI………………………………………….. 55 Tabla 3. Capacidad de almacenamiento de PostgreSQL……………………………... 84 Tabla 4. Especificaciones de Address………………………………………………....... 102 Tabla 5. Bindings y sus características principales…………………………………….. 104 Tabla 6. Operaciones de servicio utilizadas en el prototipo…………………..………. 118 Tabla 7. Resultados de la encuesta aplicada en la prueba de Operación ….……………………………………………..................................

131

Tabla 8. Información de la prueba de ABCSIS con cinco eventos…………………… 141 Tabla 9. Información de la prueba de CGI con cinco eventos………………………… 144

Page 7: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado
Page 8: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

1

Resumen

Esta tesis describe el diseño de una arquitectura de software orientada a servicios

basada en la tecnología de servicios Web para el software SIABUC (Sistema Integral

Automatizado de Bibliotecas de la Universidad de Colima), el cual es utilizado para

apoyar en tareas de gestión bibliotecaria. La arquitectura propuesta tiene como

finalidad ofrecer una serie de componentes para que personas con conocimientos en

programación interesadas en extender los servicios ofrecidos por SIABUC puedan

hacerlo a partir de la funcionalidad básica del mismo, por ejemplo desarrollar una

aplicación Web o una aplicación para dispositivos móviles. Entre las principales

ventajas de una arquitectura basada en servicios Web, se encuentran la herencia de

atributos, la independencia del lenguaje de programación, sistema operativo,

transporte de red y mecanismo de almacenamiento utilizado, así como el desarrollo

eficiente, mayor reutilización y mantenimiento simplificado del software. La

arquitectura propuesta se encuentra conformada por 4 capas: consumidores de

servicio, arquitectura ó infraestructura, interfaces de servicio e implementación del

servicio, el lenguaje de programación que se utilizó para su desarrollo fue Visual

Basic 2008 en combinación con el modelo de programación Windows

Communication Foundation (WCF). Actualmente, esta arquitectura forma parte de la

más reciente versión de SIABUC: SIABUC9.

Palabras Clave: Arquitectura de Componentes, Servicios Web, SOA,

Interoperabilidad, Sistemas de Gestión de Bibliotecas.

Page 9: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

2

Abstract

This document describes the design of a service-oriented architecture based on Web-

services technology for SIABUC (Integrated Automated System Libraries at the

University of Colima); this software is used to provide library management tasks. The

proposed architecture is intended to offer a series of components that allows

programmers extend the services offered by SIABUC, from its basic core functionality

to more sophisticated services such as a Web or mobile software development for

example. Among the advantages of an architecture based on Web services, inherit

programming-language independence, platform-independence, networking and

storage mechanisms, as well as efficient software development, greater reuse and

software simplified maintenance. The proposed architecture is composed of 4 layers:

consumer, architecture, service interfaces and service implementation. The

programming language that was used for the development was Visual Basic 2008 in

combination with the programming model Windows Communication Foundation

(WCF). Currently, this architecture is part of the latest version of SIABUC: SIABUC9.

Keywords: Component Architecture, Web Services, SOA, Interoperability, Library

Management Systems.

Page 10: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

3

1. Introducción En ésta sección se describen las características generales de ésta tesis como los

antecedentes, descripción del problema, hipótesis, objetivos, alcances y limitaciones,

descripción general de ABCSIS y finalmente la metodología utilizada para la

elaboración de dicho trabajo.

1.1 Antecedentes

La tecnología de cómputo distribuido ha sido desarrollada durante los últimos 30

años sin embargo al inicio de su desarrollo era muy cara su implementación, no fue

sino hasta principio de 1970 cuando esto cambio con la aparición de los mainframes,

los cuales fueron más accesibles de adquirir (Krafzig, et al., 2004).

Durante los años 80’s y 90’s la tecnología existente permitía a los equipos de

cómputo acceder a las aplicaciones de manera remota, fue entonces cuando la

ejecución lógica fue dividida entre un cliente y un servidor de base de datos. Para

ayudar en la labor de acceder a las aplicaciones de forma remota surge la tecnología

Common Object Request Broker Architecture (CORBA). La funcionalidad de CORBA

consistía en un identificador único llamado Object Request Broker (ORB) para

acceder a los objetos de manera remota, en lugar de proveer servidores que

expusieran un gran número de funciones remotamente accesibles.

La evolución del ámbito distribuido cambió su rumbo a mitad de los años 90’s,

un ejemplo de ello fue el año 1997 cuando Sun Microsystems introdujo la tecnología

de ambiente distribuido Enterprise Java Beans (EJB) (Krafzig, et al., 2004). EJB es

similar a CORBA, una característica importante de EJB es el concepto de

contenedor, que es el responsable para la administración de recursos como objetos,

conexiones y transacciones en un servidor EJB.

Algunas tecnologías como Remote Procedure Call (RPC), CORBA, Distributed

Component Object Model (DCOM) y EJB dieron inicio al surgimiento de un gran

número de soluciones de ámbito distribuido basadas en middleware. Sin embargo, el

surgimiento de estas soluciones presento un problema, la heterogeneidad de los

middleware, para hacer frente a este inconveniente surgió el Extensible Markup

Language (XML) como un formato independiente de los middleware para el

Page 11: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

4

intercambio de datos y documentos entre diferentes aplicaciones (Krafzig, et al.,

2004).

Debido a la necesidad de un estándar para el intercambio de mensajes en

XML, la compañía Microsoft propuso la iniciativa de crear los servicios Web basados

en XML con la utilización del protocolo Simple Object Access Protocol (SOAP), y a su

vez, realizó un lenguaje de definición de interfaz llamado Web Service Description

Language (WSDL) para describir la interfaz de servicio, en la actualidad esta

iniciativa forma parte de los estándares del consorcio World Wide Web (W3C)1 donde

han colaborado las empresas más importantes e influyentes de la Web.

Con el problema de la heterogeneidad de los middleware, SOAP y WSDL

permitieron la unión de varios protocolos de comunicación de bajo nivel, por ejemplo,

SOAP permite la comunicación sobre un middleware existente.

El desarrollo de arquitecturas de cómputo distribuido como CORBA, DCOM,

EJB y servicios Web ha permitido la creación de aplicaciones de gran escala, de esta

manera, proveen las bases de la Arquitectura Orientada a Servicios (SOA por sus

siglas en inglés) (Krafzig, et al., 2004).

Desde el punto de vista tecnológico es importante contar con una arquitectura

de software que sea interoperable, escalable y que además permita la reutilización

de los servicios ofrecidos a los diferentes consumidores. De tal manera que si en el

futuro se desea hacer una actualización al servicio prestado, no se tenga que

modificar la aplicación completa, sino únicamente el servicio, es decir, la

independencia de los servicios. Esta es una de las ventajas de trabajar con SOA.

La utilización de SOA esta en aumento, según un estudio realizado por la

empresa de investigación tecnológica Gartner, predijo que para el 2010 el software

de aplicación tendrá un crecimiento del 80% en sus ganancias a través de productos

basados en SOA (Josuttis, 2007). Dentro de las ventajas que podemos mencionar

acerca de SOA destaca el desarrollo eficiente, reutilización de los servicios,

evolución, interoperabilidad e independencia de los servicios.

El desarrollo de este trabajo está enfocado en la creación de una Arquitectura

Basada en Componentes de Software para la Integración de Servicios (ABCSIS)

1 http://www.w3.org

Page 12: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

5

para el Sistema Integral Automatizado de Bibliotecas de la Universidad de Colima

(SIABUC).

1.2 Descripción del problema

En el ámbito de sistemas de información, particularmente en el desarrollo de

sistemas de automatización bibliotecaria, existen en el mercado sistemas

bibliotecarios que ofrecen desde el punto de vista de interoperabilidad, enlace a sus

módulos mediante interfaces denominadas Application Programming Interface (API).

Es precisamente aquí donde se ha detectado un área de oportunidad muy fuerte en

el software SIABUC, ya que los usuarios que lo utilizan han externado a través del

departamento de soporte técnico la necesidad de realizar desarrollos

complementarios para integrarlos al sistema, de manera particular aquellos servicios

que se podrían realizar de manera remota o a distancia para aprovechar el uso de

Internet, como por ejemplo: la reservación de libros, verificación de status,

retroalimentación de novedades. Así mismo, se ha identificado que varias

instituciones cuentan con la infraestructura necesaria y recursos humanos

capacitados que cuentan con sistemas propios complementarios y tienen la

necesidad de enlazarlos con SIABUC, por ejemplo: el desarrollo de una aplicación

para la consulta/reservación de libros que interactúe con un sistema propietario de

control escolar, el cual puede estar basado en un entorno Web, en un dispositivo

móvil.

La solución a esta área de oportunidad fue el desarrollo de una arquitectura

que ofrece servicios Web de manera interoperable, dicha arquitectura es

denominada: Arquitectura Basada en Componentes de Software para la Integración

de Servicios (ABCSIS). La razón de crear esta arquitectura fue para enriquecer el

software SIABUC y proveer un medio que permite conectarlo con desarrollos

propietarios. Específicamente, se busca proveer a los desarrolladores de software

Page 13: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

6

una herramienta que les permitan crear e implementar nuevos componentes que

puedan trabajar de manera transparente con SIABUC.

Una de las principales aportaciones de ABCSIS es que será el programador

quien decida el lenguaje y plataforma a utilizar, ya que al utilizar los servicios Web

estos ofrecen la ventaja de ser neutrales en cuanto al lenguaje de programación,

sistema operativo, protocolos de red y mecanismo de almacenamiento utilizado

(Newcomer, 2002). Además, con la utilización de SOA se permite la utilización de un

rango más amplio de interacciones de una manera más flexible que una integración

basada en API’s (Chen y Huang, 2006).

1.3 Hipótesis

La arquitectura ABCSIS permitirá, a las instituciones que hacen uso de SIABUC y

que cuenten con personal de perfil informático o áreas afines, poder implementar

mecanismos interoperables que permitan la comunicación con otras aplicaciones.

1.4 Objetivos 1.4.1 Objetivos Generales

Crear una metodología de desarrollo de software basado en SOA para el software

SIABUC, con la finalidad de extender los servicios que actualmente se ofrecen.

1.4.2 Objetivos Específicos

• Comprender el funcionamiento de los servicios Web y sus estándares XML

relacionados.

Page 14: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

7

• Investigar acerca de la arquitectura SOA y su implementación con los

servicios Web.

• Entender el funcionamiento de los conceptos de SOA en el modelo de

programación Windows Communication Foundation.

• Realizar un análisis en SIABUC para identificar los servicios que pueden ser

extendidos con la arquitectura propuesta.

• Crear un prototipo tomando como base la arquitectura propuesta, el cual

estará conformado por un conjunto de servicios.

• Probar los servicios para detectar posibles fallas en una implementación

posterior.

• Invocar un servicio dentro de una aplicación prototipo.

1.5 Alcances y Limitaciones En este trabajo se realizó el diseño y creación de servicios utilizando como

arquitectura base SOA, tomando en cuenta las áreas de oportunidad más relevantes

en SIABUC. Para fines de prueba y demostración se creó un prototipo donde se

muestra la interacción entre el servicio de reservación, alojado en el servidor Web

Internet Information Server (IIS). El cliente fue desarrollado en el lenguaje de

programación PHP, con la finalidad de demostrar la independencia entre los

lenguajes de programación. Cuando el usuario hace una reservación a través del

prototipo se ve reflejada de manera automática en el módulo de Préstamo de

SIABUC, este módulo es el que cotidianamente utilizan en la biblioteca para registrar

los prestamos y devoluciones de material bibliográfico.

Page 15: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

8

1.6 Descripción general de ABCSIS

Con la utilización de la arquitectura ABCSIS es posible crear componentes de

software que se conecten a SIABUC, de esta manera las personas interesadas en

desarrollar servicios adicionales a SIABUC podrán hacerlo de una manera

relativamente sencilla, por ejemplo, una aplicación Web ó una aplicación móvil que

incorporen la reservación de ejemplares, consulta de disponibilidad de ejemplares,

verificación de adeudos. Todo ello con la finalidad de proporcionar más y mejores

servicios bibliotecarios y acercarlos a los usuarios finales de una determinada

biblioteca o centro de información. Cabe señalar que estas opciones se encuentran

incorporadas en la versión completa de SIABUC, pero su funcionalidad solo se

puede utilizar mediante los clientes de escritorio o aplicaciones de tipo Windows.

A continuación, en la siguiente figura se muestra un esquema con el

funcionamiento/invocación de un servicio mediante ABCSIS. La imagen en cuestión

está basada en la estructura de la arquitectura SOA mostrada en la sección 3.3.2 de

este trabajo.

Figura 1. Ejemplo de funcionamiento de un servicio bajo ABCSIS

La descripción de los elementos que conforman la figura 1 incorporados a

SIABUC mediante ABCSIS funcionan de la siguiente manera:

Bus de Servicio

Crea

Cumple

Invoca

Describe

Busca

Programador

Aplicación

Repositorio de Servicio

Contrato WSDL

Servicio

Web

Page 16: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

9

Repositorio de servicios Se trata de una descripción del servicio, la cual se

encuentra en un archivo Web Service Description Language (WSDL), en este archivo

se encuentra una descripción de la interfaz del servicio en formato XML.

Bus de Servicio Son los protocolos de red por el cual se invocará al servicio Web.

Servicio Este apartado lo conforman cada uno de los servicios a ofrecer.

Aplicación Son las distintas aplicaciones que los programadores (consumidores de

servicio) de las diferentes instituciones podrán realizar, en este sentido, el

programador puede realizar cualquier aplicación que necesite.

1.7 Metodología

Para la realización de este proyecto se siguieron una serie de pasos, los cuales se

describen a continuación:

• Investigación documental

Consiste en buscar información acerca de las tecnologías relacionadas con el

desarrollo de la arquitectura propuesta, principalmente artículos, así como

libros de actualidad, en el caso de los artículos la mayor fuente de consulta fue

la biblioteca digital ACM, así como artículos creados por empresas de

renombre como IBM, Microsoft y organismos independientes como Apache

Group, OASIS, entre otros.

• Diseño de la arquitectura

Elaboración del modelo conceptual de la arquitectura propuesta, básicamente

se genero un esquema de la arquitectura ABCSIS con el funcionamiento

propuesto.

• Desarrollo del prototipo funcional

Consistió en la elaboración de una aplicación que consume el servicio de

reservación de libros para demostrar su funcionalidad e interoperabilidad.

• Evaluación del prototipo funcional

Esta etapa consistió en realizar pruebas de operación y pruebas de

rendimiento.

Page 17: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

10

• Documentación de la investigación

Consiste en redactar el documento de la tesis.

• Análisis de los resultados obtenidos.

1.8 Estructura del documento de la tesis

Esta tesis se encuentra organizada en 7 secciones:

Sección 1. Introducción Se describen las características generales de esta tesis

como los antecedentes, descripción del problema, hipótesis, objetivos, alcances y

limitaciones, descripción general de ABCSIS y finalmente la metodología utilizada

para la elaboración de dicho trabajo.

Sección 2. Antecedentes Se aborda los aspectos iniciales de la tecnología de

cómputo distribuido de manera general así como la evolución que ha tenido a lo largo

de la historia. Otro de los tópicos de este apartado es lo relacionado a los sistemas

de automatización bibliotecaria, SIABUC y su arquitectura, así como también los

trabajos relacionados a SOA y los sistemas bibliotecarios.

Sección 3. Marco Teórico Se mencionan de manera detallada los servicios Web y

SOA, así como el estado actual que guardan estas tecnologías. También se

mencionan las definiciones correspondientes a estos conceptos, los cuales son

utilizados en secciones posteriores.

Sección 4. Arquitectura de ABCSIS Se aborda todo lo relacionado con el desarrollo

de la arquitectura propuesta, desde el modelo conceptual hasta la descripción de los

componentes e interfaces.

Sección 5. Desarrollo de ABCSIS Se aborda la parte de programación de ABCSIS,

la creación del servicio, el hosting del servicio y un prototipo funcional.

Sección 6. Pruebas Este apartado trata sobre el empleo de pruebas de laboratorio y

posteriormente se llevó a cabo la interpretación de los resultados.

Sección 7. Conclusiones Se muestran los resultados obtenidos en las pruebas,

mediante el análisis de los mismos de forma cualitativa y cuantitativa, además se

hacen una serie de recomendaciones para trabajos futuros.

Page 18: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

11

2. Antecedentes En este capitulo se aborda de manera introductoria dos aspectos fundamentales para

el desarrollo de la tesis, por una parte se mencionan los conceptos computacionales

y por otra, lo referente a los sistemas bibliotecarios, para finalmente, abordar los

trabajos relacionados tanto al aspecto tecnológico y al bibliotecario.

2.1 Marco Histórico

La tecnología de cómputo distribuida fue desarrollada a finales de los años 30’s.

Originalmente el cómputo de negocios significaba la utilización de computadoras

poderosas que costaban millones de dólares. Algunas de las primeras cosas que los

sistemas tenían para compartir entre ellos eran dispositivos como grabadoras y

sistemas de impresión. No fue sino hasta los años 70’s cuando la computadora se

hizo más sofisticada y a un precio mucho más accesible. Las instituciones de

investigación rápidamente se dieron cuenta que podían operar con menos

presupuesto y de forma independiente cuando fueron capaces de utilizar

computadoras pequeñas en lugar de mainframes (Krafzig, et. al., 2004).

Posteriormente, en la década de los 80’s la Universidad de Standford

mediante un proyecto para conectar su red, dio comienzo a la creación de la

compañía Sun Microsystems, en la actualidad esta compañía es uno de los mayores

vendedores de computadoras con sistema operativo Unix (Krafzig, et al., 2004). El

sistema operativo Unix fue diferente de sus predecesores y varios de sus sucesores

adoptaron el diseño de red como parte esencial del sistema operativo. De manera

particular dos ideas originan esta perspectiva orientada a la red; la primera es facilitar

el control a distancia de computadoras y programas, mientras que la segunda trata

de proveer servicios a otras computadoras en la red. La primera idea fue en el

sentido de crear herramientas como telnet, mientras que la segunda se trata de una

característica de impresión remota y suministrar espacio de almacenamiento con el

sistema de archivos Network File System (NFS) creado por Sun Microsystems en

1984 (Krafzig, et al., 2004). Derivado de estas herramientas surgió el estándar SUN-

RPC, el primer sistema que utilizó procedimientos remotos.

Page 19: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

12

Aún cuando el cómputo distribuido se encontraba disponible en la década de

los 80’s solamente estaba enfocado principalmente al ámbito académico, lo cual

permaneció hasta los años 90’s. En esa época, los equipos de cómputo accedían a

sistemas de almacenamiento e impresión. Una gran cantidad de aplicaciones

residentes en el cliente hacían peticiones de forma remota a un servidor de base de

datos. Fue entonces cuando la ejecución lógica fue dividida entre un cliente y un

servidor de base de datos. La compañía Sybase2 por su parte, introdujo el concepto

de procedimientos almacenados, los cuales, consistían en funciones que eran

ejecutadas en la base de datos y no necesitaban enviarse al cliente.

Combinando los conceptos de las plataformas de cómputo distribuido como

Distributed Computing Environment (DCE) con el paradigma de la orientación a

objetos, surge Common Object Request Broker Architecture (CORBA). En lugar de

proveer servidores que expusieran un gran número de funciones remotamente

accesibles, la funcionalidad ahora, se descompone en un identificador único que es

accesible por objetos de manera remota. Diferentes objetos pueden comunicarse con

otros por medio del Object Request Broker (ORB). ORB provee mecanismos de

abstracción, como nombres de servicios, que se encargan de descubrir los objetos

en tiempo de ejecución. De manera similar a la programación orientada a objetos,

CORBA adopta el concepto de programación de interfaces, todos los objetos de

CORBA pueden ser implementados en varios lenguajes de programación, mientras

sus interfaces son descritas utilizando el lenguaje Interface Definition Language

(IDL). Krafzig, et al. (2004) mencionan que CORBA es ampliamente utilizado por la

tecnología de ambiente distribuido, especialmente en telecomunicaciones y servicios

financieros.

La evolución del ámbito distribuido cambió su rumbo a mitad de los años 90’s,

tomando en consideración las limitaciones de las arquitecturas de objeto distribuido.

Por su parte, Sun Microsystems3 introdujo un conjunto de APIS llamadas Enterprise

Java Beans (EJB) en el año 1997. EJB es similar a CORBA, una característica

importante de EJB es el concepto de contenedor, que es el responsable para la

2 http://www.sybase.com 3 http://www.sun.com

Page 20: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

13

administración de recursos como objetos, conexiones y transacciones en un servidor

EJB. De manera similar a otras plataformas de computación remota como DCE y

CORBA, EJB incluye un alto nivel de servicios técnicos, como un administrador de

transacciones, llamada a servicios y seguridad.

Algunas tecnologías como RPC, CORBA, DCOM y EJB dieron inicio al

surgimiento de un gran número de soluciones de ámbito distribuido basadas en

middleware. Sin embargo, el surgimiento de estas soluciones presento un problema,

la heterogeneidad de los middleware, para hacer frente a este inconveniente surgió

el Extensible Markup Language (XML) como un formato independiente de los

middleware para el intercambio de datos y documentos entre diferentes aplicaciones

(Krafzig, et al., 2004).

A diferencia de otros lenguajes como CORBA IDL, Microsoft IDL o Java, XML

no requiere de una tecnología o middleware específico, en la actualidad es utilizado

como un formato de procesamiento de datos multiplataforma.

XML es muy potente debido a su enorme flexibilidad, sin embargo, presenta

un problema en la integración de aplicaciones de manera eficiente, ya que requiere

de un alto nivel de estructuras de datos y formatos de mensajes. Para resolver este

problema, surgieron estándares como XML Document Type Definition (DTD’s) y

esquemas para la especificación y validación de datos complejos en XML.

Debido a la necesidad de un estándar de mensajes XML de alto nivel,

Microsoft en el año 1998, se dio a la tarea de utilizar servicios Web basados en XML

con la creación del protocolo Simple Object Access Protocol (SOAP). La versión

inicial de SOAP fue específicamente creada para trabajar en la Web con el protocolo

HyperText Transfer Protocol (HTTP), debido a que en Internet ya estaban resueltos

varios problemas como la seguridad (SSL, firewall, control de acceso), disponibilidad

de la red, tráfico de red y administración de aplicaciones (Krafzig, et al., 2004).

Utilizando los métodos de petición GET y POST del protocolo HTTP, los

clientes SOAP son capaces de llamar a funciones que se encuentran previamente

establecidas en Internet. Pero el desarrollo de Microsoft no paro en este sentido, ya

que tiempo después, realizó un lenguaje de definición de interfaz llamado Web

Service Description Language (WSDL). WSDL describe la interfaz de servicio, tal

Page 21: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

14

como IDL describe la interfaz de un objeto en CORBA. Con el problema de la

heterogeneidad de los middleware, SOAP y WSDL permitieron la unión de varios

protocolos de comunicación de bajo nivel, por ejemplo, SOAP permite la

comunicación sobre un middleware existente. SOAP fue evolucionando gracias a

IBM y Microsoft hasta convertirse en una estándar en el consorcio W3C en el año

2001.

El desarrollo de arquitecturas de cómputo distribuido como DCE, CORBA,

DCOM, EJB y servicios Web ha permitido la creación de aplicaciones de gran escala,

de esta manera, proveen las bases de Service Oriented Architecure (SOA) (Krafzig,

et al., 2004).

El término servicio ha sido utilizado en diferentes contextos y propósitos.

Hubbers, Ligthart y Terlouw (2007) definen un servicio como una manera uniforme

basada en estándares internacionales (XML, SOAP, WS), o que pueden ser basadas

en medios tradicionales y propietarios. Mientras que Krafzig, et al. (2004) definen un

servicio como un componente de software que contiene características funcionales

que encapsulan el concepto lógico con el que fue elaborado.

El núcleo de la orientación a servicio esta compuesta por tres áreas:

paradigmas de programación, tecnología distribuida y cómputo de negocio (Krafzig,

et al., 2004). Muchos de los conceptos originales encontrados en los lenguajes de

programación han trazado su propio camino dentro de la tecnología distribuida que

se utiliza para ofrecer acceso remoto a servicios de diferentes aplicaciones en

diferentes plataformas. Finalmente, la evolución de cómputo de negocio ha dado

origen a aplicaciones empaquetadas como Enterprise Resource Planning (ERP),

Customer Relationship Management (CRM) y Supply Chain Management (SCM), que

en la actualidad proveen los datos y la lógica del negocio.

En base a las definiciones anteriores de servicio y a la diversidad que existen

del mismo el término, se entiende por servicio al conjunto de funciones que son

encapsuladas para responder una petición. Mientras que la lógica del negocio se

entiende por la interfaz backend, se dice que es orientada a negocio porque utiliza

los conceptos de contrato, servicio y cliente.

Page 22: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

15

Debido a la cercanía de los servicios a la funcionalidad del negocio, la

orientación a servicio tiene el potencial para ser el primer paradigma que

verdaderamente lleve a la tecnología y a la funcionalidad del negocio a un nivel

donde las personas puedan entender estos conceptos (Krafzig, et al., 2004).

En la figura 2, podemos apreciar la evolución que ha tenido SOA, partiendo

desde los lenguajes de bajo nivel como el ensamblador, hasta los lenguajes de alto

nivel como Java (trad. Krafzig, Banke y Slama 2004).

Figura 2. Evolución de la Arquitectura Orientada a Servicios

Orígenes del término SOA. En el año de 1994 Alexander Pasik, un analista de la empresa Gartner, acuño el

término SOA para una clase que formaba parte de un middleware. Pasik era

desarrollador de software desde antes que el lenguaje XML o los servicios Web

fueran inventados (Josuttis, 2007). Alexander decidió crear el término SOA porque la

definición cliente-servidor había perdido su significado clásico. Muchas industrias

habían comenzado a utilizar el término cliente-servidor para definir a una

computadora en un entorno distribuido. Una computadora cliente ejecutaba la

presentación lógica de la interfaz de usuario y la mayoría de la lógica del negocio.

Por su parte el servidor, almacenaba los datos en un sistema administrador de base

de datos y en ocasiones ejecutaba la lógica del negocio. En este sentido, los

términos cliente y servidor básicamente se referían al hardware.

Para evitar confusión entre los antiguos y los nuevos términos cliente-servidor,

Pasik menciono que la orientación a servicio es una gran ayuda para los

desarrolladores de SOA que trabajen con aplicaciones empresariales.

Page 23: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

16

El momento real para SOA fue creado por los servicios Web, que inicialmente

fueron creados por Microsoft. Pronto, otras compañías como Oracle, HP, SAP y Sun

aportaron su capital para agrandar la idea y vender nuevos conceptos y

herramientas.

Tiempo después, los analistas comenzaron a ofrecer SOA como el concepto

clave para el futuro del desarrollo de software. Por ejemplo, la empresa de

consultoría e investigación tecnológica Gartner4 predijo que para el 2010 el software

de aplicación tendrá un crecimiento del 80% en sus ganancias a través de productos

basados en SOA (Josuttis, 2007).

Si bien es cierto que Pasik dio forma al término SOA, hasta el momento no

existe un grupo, organización o consorcio oficial que lleve la pauta en este sentido.

Recientemente el consorcio OASIS (Organization for the Advancement of Structured

Information Standards), una organización dedicada al desarrollo de estándares e-

business, ha liberado un borrador de un modelo de arquitectura SOA el cual esta

diseñado en el lenguaje UML 2 (OASIS, 2008a). Mientras que empresas como

Microsoft, IBM, Oracle y el Software Engineering Institute también cuentan con su

propio modelo de arquitectura SOA.

4 http://www.gartner.com/

Page 24: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

17

2.2 Marco Contextual 2.2.1 Los sistemas de automatización de bibliotecas

Una de las primeras referencias en relación a este tema data del año 1958, fue en

este periodo cuando la Biblioteca del Congreso de los Estados Unidos comenzó este

proceso y tiempo después, en el año 1963, generó un reporte titulado: La

automatización en la Library of Congress, dicho trabajo se encontraba dividido en

tres áreas principales: procesamiento bibliográfico, búsquedas bibliográficas y

recuperación de documentos. Posteriormente, en el año 1965 se inició un proyecto

piloto conocido como Machine Readable Cataloging (MARC) (Brinati, 2003).

Sin embargo, el hablar de la automatización de bibliotecas no significa el

desplazamiento del bibliotecario, sino más bien, la utilización y aprovechamiento de

la tecnología en el sistema bibliotecológico.

La automatización pues, es el uso de la computadora para realizar los

procesos que se desarrollan cotidianamente en la biblioteca; los sistemas de

automatización son el conjunto de programas con funciones y acciones específicas

para agilizar los procesos en las bibliotecas, siendo la biblioteca el centro activo de

investigación e información en disciplinas extensas e interrelacionadas (Herrera-

Morales, et. al., 2004).

La automatización de bibliotecas fue un proceso difícil durante dos décadas,

sin embargo, esto ha ido transformándose paulatinamente y fue hasta los años 90’s

cuando éste término se concibe como un concepto mucho más amplio que involucra

el procesamiento de la información más allá de la generación de catálogos en línea

(Brinati, 2003).

Casi la totalidad de bibliotecas universitarias en México tienen automatizada

por lo menos alguna de sus áreas de trabajo, desafortunadamente son pocas las que

han logrado implementar un sistema de automatización integral (Lugo, 2000).

Hasta el año 1995 los sistemas más utilizados eran Microisis, SIABUC y

Logicat, éstos dos últimos fueron desarrollados en México, el primero de ellos fue

realizado por la Dirección General de Servicios Bibliotecarios de la Universidad de

Colima, mientras que el segundo fue hecho por una empresa privada (Lugo, 2000).

Page 25: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

18

El sistema SIABUC ha evolucionado y el impacto y penetración que ha logrado

es evidente, la versión SIABUC8 es utilizada en más de 1500 instituciones públicas y

privadas de México, América Latina y el Caribe (Herrrera-Morales, 2007).

Otros sistemas utilizados son Aleph5, Alexandria6, Unicorn7, Virtua8 e

Innopac9, éstos sistemas incorporan muchos rasgos tecnológicos pero son

sumamente costosos ya que son elaborados por empresas transnacionales, por lo

que en la mayoría de las ocasiones resultan inaccesibles para las bibliotecas típicas

de instituciones latinoamericanas.

A continuación se menciona una breve reseña con algunas características de

estos sistemas:

Microisis

Este software fue creado por la Organización de las Naciones Unidas para la

Educación, la Ciencia y la Cultura (UNESCO) en los años 60’s, esta basado en

archivos y no cuenta con una arquitectura mediante la cual se permita hacer algún

tipo de desarrollo adicional con la información almacenada. La adquisición de este

software no tiene costo a través de distribuidores nacionales, la Universidad de

Colima a través del Centro Nacional de Edición Digital y Desarrollo de Tecnologías

de Información (CENEDIC) es distribuidor de este sistema a nivel nacional

(Universidad de Colima, 2006).

Logicat

Este sistema fue diseñado para la recuperación de información en normas

internacionales. La arquitectura que posee es cerrada debido a que los servicios que

ofrece a través de Internet están predeterminados y se basan principalmente en el

intercambio de mensajes entre el propio sistema para establecer la comunicación

con los usuarios finales (Grupo Sistemas Lógicos, 2007a).

Aleph

El sistema Aleph (Automated Library Expandable Program) fue desarrollado

en la década de los 80’s en la universidad Hebrea de Jerusalén, Israel y es

5 http://www.gsl.com.mx/aleph.html 6 http://www.alexandria.cl/ 7 http://www.sirsidynix.com/ 8 http://www.vtls.com/products/virtua 9 http://www.iii.com/index.php

Page 26: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

19

distribuido por la empresa ExLibris. Dicho sistema utiliza la tecnología cliente-

servidor e incluye clientes basados en Microsoft Windows. Su arquitectura es semi-

abierta ya que ofrece enlaces mediante interfaces API hacia otras aplicaciones

(Grupo Sistemas Lógicos, 2007b).

Unicorn

Sirsi’s Unicorn Library Management System como actualmente se le conoce a

este sistema, es desarrollado por la empresa SirsiDynix, dicho sistema administra los

servicios técnicos y públicos de una biblioteca. Desde sus inicios ha utilizado la

arquitectura cliente-servidor. Cuenta con una arquitectura abierta ya que provee el

acceso mediante API’s a todos los módulos que lo componen (SIRSI, s.f.).

Innopac

En el ámbito bibliotecario este sistema es mejor conocido como

Innopac/Millenium, es distribuido por la empresa Innovate Interfaces, utiliza el

entorno Web en combinación con la plataforma Java. Dentro de los paquetes para

montar el acervo bibliográfico en Web se encuentra el AirPAC, el cual es un Online

Public Access Catalog (OPAC) diseñado especialmente para usuarios que buscan

información en el catálogo desde dispositivos móviles con acceso inalámbrico, su

arquitectura es cerrada al desarrollo ya que a diferencia de los sistemas anteriores

no provee API’s para acceder a la información que almacena (INNOVATIVE

Interfaces, 2006).

Hasta aquí se ha comentado los inicios de la automatización bibliotecaria, así

como algunos de los sistemas más utilizados en este ámbito, a continuación se

hablará acerca de SIABUC, sus inicios, los módulos que lo conforman, así como

también el impacto que ha tenido tanto en México como en Latinoamérica.

2.2.2 Sistema Integral Automatizado de Bibliotecas de la Universidad de Colima (SIABUC)

Fue en el año de 1983 cuando la Universidad de Colima incursionó en el ámbito

tecnológico, durante ese año se creo la Dirección de Desarrollo Bibliotecario, cuyo

Page 27: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

20

objetivo principal fue estructurar un sistema de bibliotecas para apoyar con servicios

de información bibliográfica y documentar las labores sustantivas de docencia e

investigación en todos los campos de la Universidad, centralizando sus procesos de

adquisición, catalogación y clasificación. Debido a esto surgió la necesidad de

automatizar dichos procesos y servicios de información (Herrera-Morales, et al.,

2004).

Para satisfacer esas necesidades se realizó un estudio de experiencias sobre

sistemas de automatización bibliotecaria y sus casos de éxito en las bibliotecas

mexicanas, al identificar la carencia de este tipo de tecnología informática y el

desconocimiento por parte de los bibliotecarios se diseño SIABUC (Sistema Integral

Automatizado de Bibliotecas de la Universidad de Colima).

En aquel entonces, el objetivo principal de SIABUC era generar un fichero

electrónico que facilitara el proceso de impresión de los catálogos topográficos de la

entonces única biblioteca que tenia la Universidad, sin embargo, debido a la carencia

de este tipo de software se plantea el proyecto a nivel nacional ante Consejo

Nacional de Ciencia y Tecnología (CONACYT) y la Secretaría de Educación Pública

(SEP), con la finalidad de obtener recursos económicos para mejorarlo y

posteriormente ofrecerlo a las bibliotecas públicas mexicanas (Herrera-Morales, et

al., 2004).

SIABUC es un software que fue creado en la Universidad de Colima como

respuesta a una necesidad interna de preparar juegos de fichas catalográficas, sin

embargo, el proyecto creció y fue cubriendo gradualmente cada una de las tareas

comprendidas en el diagrama de flujo de actividades de las bibliotecas (Lugo, 2000).

El impacto y trascendencia que SIABUC ha tenido es evidente puesto que

actualmente es utilizado en más de 2500 instituciones públicas y privadas de México,

América Latina y el Caribe (Herrera-Morales, 2007).

Presencia de SIABUC en Latinoamérica La primera institución usuaria y representante de SIABUC en Costa Rica fue la

Escuela Centroamericana de Ganadería, en 1989, en Balsa de Atenas, provincia de

Alajuela.

Page 28: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

21

Durante ese mismo año el Instituto Tecnológico de Costa Rica inicia con el

uso de SIABUC, actualmente cuentan con la versión SIABUC8 en funcionamiento.

En la actualidad, más de 50 bibliotecas son usuarias de SIABUC, dentro de las

instituciones más representativas en ese país se encuentran las siguientes: Corte

Interamericana de Derechos Humanos, Escuela de Ciencias del Deporte, Asamblea

Legislativa, Biblioteca Nacional, Instituto Nacional de Biodiversidad, Universidad

Latina, Universidad Veritas, Biblioteca de la Facultad de Letras, Instituto de Alajuela,

Fundación Omar Dengo, Sistema de Bibliotecas Públicas de Costa Rica, Universidad

para la Paz, entre otras.

Otro país centroamericano que utiliza SIABUC es Colombia, aquí las

instituciones pioneras son la Universidad de Cauca y la Universidad de Caldas.

Durante el 2003 se firmó un convenio entre la Universidad de Colima y el Ministerio

de Cultura de Colombia para un proyecto denominado “Apoyo para la

Sistematización de la Red Nacional de Bibliotecas Públicas”, esto con la finalidad de

que SIABUC8 fuera la herramienta de automatización utilizada en más de 500

bibliotecas en aquel país.

Mientras que en Nicaragua, la primera institución en utilizar SIABUC fue la

UNAN-León de Nicaragua y posteriormente la Universidad Centroamericana (UCA).

Actualmente son 42 las instituciones que tienen convenio firmado con la Universidad

de Colima para la utilización de SIABUC.

México por su parte no se queda atrás, hay varias instituciones importantes

que cuentan con SIABUC, dentro de las cuales destacan las siguientes: Centro de

Investigaciones del IPN, Colegio de Pilotos Aviadores de México, Centro de

Investigación en Matemáticas, Instituto Nacional de Astrofísica Óptica y Electrónica,

Universidad Autónoma de Guadalajara, Congreso del Estado de Michoacán, Hospital

General de México, Universidad del Valle de Atemajac, Universidad Autónoma

Chapingo, Museo de Historia Mexicana, Congreso del Estado de Morelia, INEGI

entre otras más.

Módulos que integran SIABUC SIABUC a diferencia de otros sistemas de automatización bibliotecaria es un sistema

Page 29: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

22

integral, es decir, está conformado por varios módulos de manera conjunta y no

separados como otros sistemas, a continuación se describe una breve reseña de los

módulos que conforman SIABUC:

• Adquisiciones: Mediante este módulo es posible llevar a cabo un control de

los presupuestos, compras, pedidos, recepciones, donaciones y facturas, así

como también permite llevar a cabo la asignación de folios de los libros ó

números de inventario.

• Análisis: En este apartado se puede llevar a cabo la catalogación o

descripción de los diferentes tipos de materiales que se encuentran en la

biblioteca, como por ejemplo: libros, cd, dvd, mapas, revistas, folletos.

• Indizado: Prepara los índices de la base de datos para hacer posible la

búsqueda en el acervo bibliográfico.

• Estadísticas: Mediante esta aplicación se puede obtener información

concentrada sobre los procesos y tareas más importantes llevadas a cabo

con SIABUC.

• Préstamos: Con este módulo es posible llevar a cabo los procesos de

circulación o préstamo del material bibliográfico, incluye una serie de

herramientas para ayudar en esta labor así como una serie de reportes.

• Publicaciones: El objetivo principal de este módulo es el de registrar,

administrar y controlar el material hemerográfico como: revistas, periódicos,

boletines, gacetas y en general cualquier publicación seriada de divulgación

constante.

• Consultas: Este módulo reemplaza a los ficheros de consulta tradicionales,

permite que los usuarios exploren el acervo de la biblioteca de una forma

rápida y sencilla. Se pueden hacer búsquedas simples así como también

búsquedas avanzadas utilizando los operadores boléanos.

• Inventarios: La finalidad que pretende este módulo es la de comparar lo que

existe físicamente en el acervo contra lo que se tiene capturado en la base

de datos de SIABUC.

• Servicios: Con este módulo se puede llevar a cabo el préstamo y control de

los espacios (cubículos, salas de lectura) y equipos de cómputo que se

Page 30: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

23

utilizan en las salas de consulta o de acceso a Internet de la biblioteca.

Además de estos módulos cuenta con dos componentes adicionales para

montar los registros bibliográficos en Internet, uno de ellos hace uso de la tecnología

Common Gateway Interface (CGI) y es llamado WebS8, mientras que el segundo

componente es una interfaz API, la cual se puede utilizar en combinación con

tecnologías como PHP y ASP. Estos componentes se describen a fondo en la

siguiente sección.

2.2.2.1 Arquitectura Actual de SIABUC

La arquitectura actual de SIABUC para la prestación del servicio de consulta a través

de Internet es cerrada tal como se puede apreciar en la figura 3, se encuentra

basada en la API WebS8dll ó en la implementación CGI WebS8. El objetivo principal

de estas dos aplicaciones es la de recuperar la información bibliográfica a través de

Internet utilizando las plataformas de Microsoft Windows.

En el departamento de soporte técnico de SIABUC los usuarios han externado

la necesidad de incorporar nuevas funcionalidades a SIABUC aparte de la consulta

Web, por ejemplo la reservación, esta limitante es la causa principal por la que

dichas funcionalidades no han sido muy explotadas. La arquitectura actual de

SIABUC se encuentra compuesta por dos capas: aplicación y acceso a datos, esta

arquitectura se puede apreciar en la figura 3.

Figura 3. Arquitectura actual de SIABUC8

Base de Datos

Interfaces de acceso a datos

Capa de Aplicación

Capa de Acceso a Datos

API WebS8dll / CGI

Page 31: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

24

La capa de acceso a datos esta integrada por el motor Microsoft Access en su

versión 2000, mientras que la capa de aplicación esta conformada por la API

WebS8dll ó por el componente CGI.

A continuación, en los siguientes apartados se menciona con detalle lo

concerniente a la capa de aplicación de SIABUC8.

2.2.2.2 CGI WebS8

Common Gateway Interface (CGI) es una de las tecnologías estándar que provee el

paso de información entre el servidor y los clientes (explorador Web), las

aplicaciones CGI pueden ser escritas en cualquier lenguaje de programación como

Shell, C, C++, FORTRAN, Java. Sin embargo, Shell, Perl y C son los más utilizados

para desarrollar este tipo de aplicaciones (Misra y Murthy, 2001).

SIABUC utiliza la tecnología CGI para implementar las consultas del acervo a

través del Web, el núcleo de la implementación es una aplicación llamada

WebS8.exe.

Para montar las consultas en Web, además del WebS8 se requiere de un

servidor Web, una página de consultas, un archivo de configuración para los

parámetros y formatos de respuesta y las bases de datos previamente indexadas. El

servidor por su parte, debe cumplir ciertos requisitos para que el WebS8 funcione

correctamente, las cuales se mencionan a continuación:

- Compatible con sistemas operativos Microsoft Windows

- Compatible con CGI versión 1.1 en adelante

- Debe admitir la ejecución de programas de 32 bits

Los acervos que se pueden consultar son los que corresponden a los libros y

las revistas.

La aplicación WebS8 está realizada con el lenguaje de programación Visual

Basic 6, sin embargo dicha aplicación se entrega al usuario compilada, sin que este

pueda hacer modificación alguna.

Page 32: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

25

La tecnología CGI fue una de las primeras en permitir contenido dinámico, sin

embargo, ha sido sustituida por tecnologías script como PHP, JSP ó ASP.

En la actualidad, debido a los ataques de virus en los equipos de cómputo, los

sistemas operativos como Windows han implementado mayores medidas de

seguridad, dichas medidas afectan la correcta ejecución de las aplicaciones CGI,

debido a esto, el departamento de SIABUC se dio a la tarea de realizar una nueva

implementación para montar los catálogos en Internet y estar a la vanguardia con

estas nuevas tecnologías y tendencias, esta nueva implementación se trata de una

interfaz API, la cual se describe con mayor detalle en el siguiente apartado.

2.2.2.3 API WebS8

Una API es una Interfaz de Programación de Aplicaciones, por la cual una aplicación

(servidor) expone su interfaz gráfica de usuario (UI) y contenido a otra aplicación

(cliente) (González y Guarino, 2005).

En Diciembre de 2006 el departamento de SIABUC realizó una interfaz de

software llamada API WebS8DLL, la cual permite programar aplicaciones adicionales

a los módulos de SIABUC, por ejemplo, la implementación de los catálogos de

consulta al acervo vía Web utilizando tecnologías script como PHP o ASP (Herrera-

Morales, 2006).

La API WebS8DLL esta conformada por un conjunto de código encapsulado

que contiene principalmente funciones y métodos, los cuales hacen posible la

conexión a la base de datos de SIABUC, el objetivo de esta API es realizar

búsquedas en el acervo bibliográfico y visualizar información seleccionada en

diferentes formatos preestablecidos (Herrera-Morales, 2006).

Para emplear esta API es necesario utilizar la plataforma de cómputo

adecuada que soporte la correcta instanciación de componentes ActiveX, debido a

que la API está desarrollada bajo esta tecnología propietaria de Microsoft solo es

posible implementarla bajo sistemas operativos Microsoft Windows.

El lenguaje de desarrollo recomendado para implementarla es ASP en

Page 33: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

26

combinación con el servidor Web Internet Information Server (IIS) de Microsoft, sin

embargo, también es posible utilizarla con el lenguaje de programación PHP.

Actualmente, existe una nueva versión de SIABUC llamada SIABUC9, esta

nueva versión permitió la reestructuración del sistema y la incorporación de un nuevo

motor de base de datos, PostgreSQL. Debido a esto, también fue factible la creación

de un nuevo esquema de arquitectura para utilizarla en conjunto con esta nueva

versión de SIABUC.

Page 34: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

27

2.3 Trabajos Relacionados

Esta sección presenta el trabajo relacionado para resolver los problemas de

integración de sistemas legados, así como también la integración de sistemas bajo la

arquitectura SOA.

La arquitectura SOA se ha caracterizado por su interoperabilidad entre

sistemas y la independencia de los servicios (Newcomer, 2004), sin embargo, a

pesar de estas ventajas no existe una empresa u organismo que se atribuya su

creación, ya que básicamente SOA ha sido una evolución de la manera en la que se

comunican los sistemas computacionales en ambientes heterogéneos.

Dentro de los aportes de SOA se encuentra la de resolver la problemática de

los sistemas legados, este tipo de sistemas son difíciles de mantener y se necesita

personal capacitado y experto en esta área para su administración (Electronic Data

System, 2008), sin embargo mediante SOA se pueden exponer las funcionalidades

de éstos como servicio (Arcelli, Tosi y Zanoni, 2008).

Podemos mencionar que existen trabajos antecedentes a este proyecto donde

se ha tratado de mejorar los servicios de SIABUC aplicando tecnologías como

servicios Web o encapsulamiento de código, por ejemplo, el realizado en el año 2002

por Santana (2002) en el que se integran los servicios de consulta de material

bibliográfico utilizando la plataforma .NET como herramienta de desarrollo,

desafortunadamente no se le dio seguimiento al proyecto y no se logró implantar.

Además de este trabajo existe otro similar, una herramienta llamada Sistema de

Solicitudes de Compra Bibliográfica (SISOCOBI) cuyo objetivo fue ayudar en el

proceso de compra de bibliografía, básicamente consiste en consumir los servicios

Web desarrollados por la compañía estadounidense Amazon y obtener la

información correspondiente a los libros (Ponce, et. al., 2004), al igual que el

desarrollo anterior es un componente adicional para SIABUC.

Sin embargo, fuera del ámbito bibliotecario existen trabajos relacionados

donde se ha utilizado la arquitectura SOA con éxito, como por ejemplo, el elaborado

en el año 2006 por Chen. y Huang (2006) la cual consistía de un agente que

soportaba reconfiguración dinámica para módems caseros. Otro trabajo similar, es el

presentado por Kajko-Mattsson, Lewis y Smith (2007), donde elaboraron una

Page 35: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

28

arquitectura basada en SOA generando roles para la administración de sistemas

basados en SOA.

Otro caso de éxito de la implementación de SOA esta presentado en un

sistema de aerolíneas, donde se redujo el costo de transacciones y de operación

respecto a otra forma de implementación basada en tecnología IBM (Electronic Data

System, 2008).

Como se puede apreciar, el uso de SOA puede ser de gran ayuda para dar

compatibilidad a aquellos sistemas antiguos que por una u otra razón es necesario

conectar con nuevos sistemas, un caso particular referente a SIABUC es que

mediante el uso de SOA se podrá interconectar los sistemas que previamente se

encuentren en una institución como por ejemplo un sistema de control escolar para

incorporar a los alumnos de nuevo ingreso a SIABUC, y esto será de manera

transparente al usuario.

Page 36: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

29

3 Marco Teórico En éste apartado se mencionan las tecnologías que dieron inicio al desarrollo de los

Servicios Web, SOA, su estado actual y las definiciones de éstos términos, las cuales

son utilizadas en secciones posteriores.

3.1 Arquitecturas Iniciales

En un principio, los programas estaban creados solamente por instrucciones binarias,

razón por la cual, esta propuesta de programación demostró ser lenta y difícil para

las personas, ya que debían memorizar grandes cadenas de caracteres en formato

binario.

A finales de 1950 comenzó la investigación en el área de programación

automatizada de sistemas, este enfoque permitía a los programadores desarrollar

aplicaciones en una codificación de alto nivel que eran fácilmente interpretadas por la

computadora (Albin, 2003).

Durante la década de los 80’s también hubo un cambio en el diseño de

aplicaciones, cambiaron del simple texto a interfaces gráficas de usuario (GUI). Sin

embargo, fue hasta final de esa década y principios de los años 90’s cuando el

término arquitectura de software comenzó a mostrarse en la literatura.

Intentar definir un término como arquitectura de software es una tarea que en

algunas ocasiones causa polémica, debido a que existe una gran diversidad de

opiniones en torno a este término. Un ejemplo claro de esto, se puede encontrar en

la página de Instituto de la Ingeniería de Software, la cual contiene una diversidad de

definiciones al respecto (Software Engineering Institute, 2008).

El Institute of Electrical and Electronics Engineers (IEEE) por su parte, define

la arquitectura de software como la práctica recomendada para la organización de un

sistema, contiene componentes y sus relaciones con otros en el entorno, así como

los principios que gobiernan su diseño y evolución (Gorton, 2006). A continuación, en

los siguientes apartados se describen las arquitecturas iniciales en el ámbito

distribuido que marcaron la pauta para la generación de lo que en la actualidad se

conoce como servicios Web.

Page 37: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

30

3.1.1 CORBA

Las tecnologías de objeto distribuido son un miembro importante de la familia de los

middleware. Los middleware proveen un medio de comunicación para conectar

varios componentes de software en una aplicación con la finalidad de intercambiar

información en ambientes heterogéneos (Gorton, 2006).

CORBA es el acrónimo de Common Object Request Broker Architecture, el

cual, es un estándar adoptado por la Object Management Group (OMG) para permitir

la interoperabilidad entre aplicaciones heterogéneas en entornos distribuidos

heterogéneos, sin importar el lugar donde se encuentren ubicados (Tari y Bukhres,

2001).

OMG es un grupo formado en el año de 1989 por varias compañías, dentro

de las cuales destacan: IBM, DEC, Hewlett-Packard, HyperDesk, entre otras. El

objetivo de este grupo es el de desarrollar un mecanismo para interactuar con

objetos distribuidos.

El objetivo principal de CORBA es el de automatizar varias tareas de

programación en red, esta automatización de funciones es hecha a través de un

intermediario llamado Object Request Broker (ORB). El ORB es ejecutado en el host

y maneja de forma transparente los mensajes de petición entre el cliente y el

servidor. La transparencia se refiere al hecho de que los clientes no necesitan

conocer donde se encuentran los servidores. Además de esto, el ORB provee

servicios comunes como el envío de mensajes y comunicación del tipo Remote

Procedure Call (RPC) entre el cliente y el servidor (Tari y Bukhres, 2001).

Figura 4. Arquitectura CORBA

En la figura 4 se muestra la arquitectura CORBA, un cliente que quiere

acceder a un objeto del servidor tiene que hacer primero un enlace a través de la

Interfaz CORBA

Cliente

IIOP

ORB

Interfaz CORBA

Servidor

IIOP

ORB

Page 38: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

31

interfaz CORBA. Los clientes hacen una petición de enlace a un ORB local a través

de la interfaz CORBA. Si el objeto existe en la computadora local, el ORB activa

localmente el objeto que procesa la petición. En caso contrario, el ORB hace una

petición a otro ORB conectado en la red utilizando el protocolo Internet Inter ORB

Protocol (IIOP) sobre TCP. Después de enlazar el objeto apropiado, el ORB cliente

envía una petición al ORB que se encuentra en el servidor (Kim y Han 2006).

Un objeto CORBA esta conformado por dos componentes: la interfaz y la

implementación; la interfaz no está vinculada a un lenguaje de programación

específico, en lugar de eso utiliza el Interface Definition Language (IDL), con lo que

traduce las diferentes implementaciones de otros lenguajes. El IDL es el lenguaje a

través del cual todas las aplicaciones de CORBA son definidas.

CORBA en conjunto con el IDL fueron creados por la OMG en el año de 1991,

en las versiones iniciales, la OMG se enfocó en la especificación de la parte central

de CORBA, el ORB. Mientras que en la versión actual, la especificación 3.0,

agregaron nuevas dimensiones y tres categorías principales: integración de Internet,

calidad del control de servicio y arquitectura de los componentes de CORBA.

De manera formal, las especificaciones 2 y 3 de CORBA se refieren a la

especificación completa de CORBA. La especificación 2.0 se refiere a la

interoperabilidad de CORBA y el protocolo IIOP, mientras que la especificación 3.0

se refiere al modelo de componentes de CORBA (Object Management Group, 2008).

Otra alternativa para resolver el problema de integración en entornos

distribuidos es Microsoft Distributed Componente Object Model (DCOM). A

continuación se describe esta tecnología.

Page 39: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

32

3.1.2 DCOM

Distributed Component Object Model por su acrónimo en inglés, es un middleware

desarrollado por Microsoft que provee una estructura basada en un modelo orientado

a objetos, básicamente es la versión extendida de Component Object Model (COM)

(Tari y Bukhres, 2001).

COM es un componente de software que promueve la reutilización

permitiendo que aplicaciones y sistemas sean construidos a partir de componentes

binarios.

DCOM nació a mediados de los años 80’s como Dynamic Data Exchange

(DDE), un protocolo de comunicación diseñado por Microsoft que permitía a las

aplicaciones intercambiar mensajes mediante la memoria compartida. Tiempo

después surgió Object Linking and Embedding (OLE), el cual, era un modelo de

objetos compuesto para enlazar objetos creados por diferentes aplicaciones. A

diferencia de otros middleware, DCOM es un middleware basado en la orientación a

objetos. Una aplicación DCOM comprende un conjunto de objetos que proveen los

servicios de aplicación vía métodos de esos objetos.

Debido a que Microsoft es el único propietario de esta tecnología, no es

ampliamente aceptable por la industria de los middleware (Tari y Bukhres, 2001).

En figura 5 se muestra la arquitectura DCOM, el cliente quiere acceder a los

objetos de un servidor a través de las interfaces COM, las cuales verifican los

permisos del cliente invocando el proveedor de seguridad. Si el cliente tiene los

permisos adecuados, el COM runtime invoca al Distributed Computing Environment

Remote Procedure Call (DCE RPC), el cual utiliza la pila de protocolos para

establecer la comunicación. Por su parte, la pila de protocolos del lado del servidor

recibe la petición, la entrega al COM runtime y posteriormente procesa la petición

(Kim y Han, 2006).

DCOM evita que el programador escriba código complejo, también se encarga

de todas las comunicaciones entre las máquinas.

Page 40: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

33

Figura 5. Arquitectura DCOM

DCOM y CORBA están basados en el modelo de orientación a objetos, DCOM

esta orientado al desarrollo de aplicaciones de escritorio, mientras que CORBA, esta

orientado al desarrollo de aplicaciones empresariales.

La principal diferencia entre CORBA y DCOM es la forma mediante la cual los

objetos del servidor son registrados. Ambos proveen una estructura para crear y

utilizar componentes que pueden interactuar con otros, así como con otras

aplicaciones, librerías y redes de una manera bien definida. CORBA fue diseñado

para soportar componentes que pudieran existir en cualquier parte de la red,

mientras que COM solamente se puede ejecutar en un solo sistema. Otra diferencia

notable entre CORBA y DCOM es la capa de programación, mediante esta capa

ejecutan el manejo de excepciones (Tari y Bukhres, 2001).

Una desventaja de esta tecnología es que solamente es soportado por el

sistema operativo Windows de Microsoft y no puede ser utilizada en la mayoría de

los entornos Web (Kim y Han, 2006).

La aplicación central de las tecnologías remotas como RPC, CORBA, DCOM y

Enterprise Java Beans (EJB) propiciaron el surgimiento de un gran número de

soluciones basadas en middleware. Sin embargo, el surgimiento de estas soluciones

presento un problema, la heterogeneidad de aplicaciones, para hacer frente a esta

problemática surgió el XML, el cual se hizo presente a mitad de los años 90’s como

un formato independiente de los middleware para el intercambio de datos y

documentos entre diferentes aplicaciones. A diferencia de otros lenguajes como

CORBA IDL, Microsoft IDL o Java, XML no requiere de una tecnología o middleware

Interfaz COM Interfaz COM

Cliente

COM runtime

Proveedor de Seguridad

DCERPC

Pila de protocolos

Servidor

COM runtime

Proveedor de Seguridad

DCERPC

Pila de protocolos

Page 41: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

34

específico, en la actualidad es utilizado como un formato de procesamiento de datos

multiplataforma. El XML es utilizado ampliamente en la creación de los servicios

Web, su principal función es la definición de las interfaces de los servicios de manera

similar como el IDL lo hace en CORBA. En siguiente apartado se describe con mayor

profundidad la tecnología relacionada a los servicios Web.

Page 42: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

35

3.2 Servicios Web

El Internet esta establecido y para tomar la ventaja de la red global, el concepto de

computación distribuida necesita ser adaptado. Primero, el Internet esta básicamente

desconectado, las conexiones son transitorias y temporales. Los servicios de

computación distribuida como seguridad y transacciones, tradicionalmente dependen

de una conexión a nivel de transporte. Segundo, en Internet los grupos pueden

conectarse sin previo conocimiento del otro, siguiendo los enlaces Uniform Resource

Locator (URL) y observando algunas reglas básicas. Para los servicios Web esto

significa que cualquier cliente puede acceder a los servicios Web publicados por

cualquier otro, tanto tiempo como la información del servicio este disponible,

entendible y los procesadores XML sean capaces de generar mensajes (Newcomer,

2002).

Las tecnologías tradicionales de cómputo distribuidas asumen de una manera

más acoplada las relaciones entre un cliente y un servidor. Debido a que los servicios

Web adoptan el modelo de publicación en Internet, es posible encapsular y publicar

un punto final específico o una operación, usando la definición de interfaz del servicio

Web.

Newcomer (2002) menciona que al igual que el efecto de viajar por tren entre

ciudades, los servicios Web comunican unos programas con otros en puntos

distantes a través de la red, transportando grandes cantidades de datos de una

manera eficiente y a bajo costo. El resultado obtenido es: velocidad y mejor

comunicación.

El Internet comenzó soportando interacciones de manera textual y gráfica, al

inicio, las personas lo utilizaban para cotizar productos, comprar, leer las noticias,

entre otras cosas (Newcomer, 2002). Este nivel de interacción era bueno para

diferentes propósitos, pero, las aplicaciones basadas en texto no soportaban muy

bien la interacción de software, específicamente la transferencia de una gran

cantidad de datos. Era necesario pues, un método más eficiente para permitir a las

aplicaciones interactuar directamente con otras.

Los servicios Web mejoraron el uso de Internet facilitando la comunicación

programa a programa. A través de la adopción extendida de los servicios Web, las

Page 43: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

36

aplicaciones en varios lugares podían ser integradas e interconectadas como si

fueran parte de una misma aplicación

Existen varios conceptos para definir a los servicios Web, el World Wide Web

Consortium (2004) los define como sistemas de software diseñados para el

intercambio de datos entre aplicaciones sobre la red utilizando protocolos basados

en XML.

Autores de publicaciones como Newcomer (2002) por su parte, definen los

servicios Web como aplicaciones que utilizan un documento creado en XML, el cual,

tiene la estructura de un mensaje, posteriormente un programa envía una petición a

un servicio Web a través de la red y puede o no recibir una respuesta, si se obtiene

una respuesta, esta también debe tener la estructura de un mensaje XML.

Mientras que Guruge (2004) los define como un nuevo tipo de programación

orientada a objetos en el Web. Son componentes de software modulares,

independientes y autodescriptibles que están disponibles en la red.

Como se pudo observar en las definiciones anteriores todas coinciden en la

utilización de mensajes para el intercambio de información entre los servicios Web,

estos mensajes tienen que estar definidos bajo un protocolo para que las

aplicaciones las puedan interpretar, el protocolo utilizado para tal fin es llamado

Simple Object Access Protocol (SOAP), el cual, es un protocolo estandarizado

derivado de XML y es el encargado de definir entre otras cosas los servicios y sus

interfaces.

A continuación, en la figura 6, se representa la comunicación que se lleva a

cabo en los servicios Web.

Figura 6. Representación de un servicio Web

La computadora A necesita comunicarse con otra computadora B, ambas con

plataformas y lenguajes de programación diferentes, la comunicación se puede llevar

Computadora A

Lenguaje: .NET S. O. Windows

Computadora B

Lenguaje: Java S. O. Linux

XML

XML

Page 44: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

37

a cabo debido a que utilizan los servicios Web como medio de comunicación en

combinación con XML.

Esta tecnología puede ser utilizada de muchas maneras, se puede ejecutar en

un ambiente tipo escritorio, así como también en clientes portátiles para acceder, por

ejemplo, a un sistema de reservaciones por Internet, también pueden ser utilizados

para conectar aplicaciones que se ejecuten en varias organizaciones de una misma

cadena en un entorno empresarial, entre otras aplicaciones más. Una de las ventajas

que tiene esta tecnología es que puede resolver el problema de la integración de

aplicaciones empresariales (EAI – Enterprise Application Integration), conectando

múltiples aplicaciones de una organización simple a una múltiple, tanto dentro como

fuera de un firewall.

Los servicios Web proveen un mecanismo de modernización para aplicaciones

heredadas, particularmente aquellos desarrollos que se ejecutan en mainframes y

minicomputadoras (Newcomer, 2002).

Tal como se muestra en la figura 7, los servicios Web encapsulan los datos,

presentando a la red una forma de interfaz con los sistemas finales, como sistemas

de base de datos, .NET, Java, entre otras aplicaciones (trad. Newcomer, 2002, p. 8).

Figura 7. Interfaz de los Servicios Web con los sistemas finales

Las interfaces de los servicios Web reciben un mensaje en XML de la red,

posteriormente transforman los datos recibidos en un formato entendible por el

sistema y de forma opcional, regresan un mensaje de respuesta. Las

Page 45: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

38

implementaciones de software pueden ser creadas utilizando cualquier middleware,

lenguaje de programación ó sistema operativo.

En la actualidad, la mayoría de los servicios utilizados en Internet son

invocados introduciendo datos sobre formularios y enviando los datos en una cadena

URL. Por ejemplo: si deseamos buscar “libros de programación” en la página de

Google, la cadena de búsqueda será similar a la que se muestra a continuación:

http://www.google.com/search?q=libros+programacion&btnG=Google+Search

XML provee varias ventajas para transmitir datos a través de Internet, como

por ejemplo, perfeccionamiento de los datos, mayor flexibilidad y extensibilidad. La

misma búsqueda utilizando un mensaje de servicio Web quedaría tal como se

muestra en la figura 8 (Newcomer, 2002), dicha figura muestra el mensaje

formateado utilizando el protocolo SOAP.

Figura 8. Mensaje SOAP en XML

En los mensajes SOAP, el nombre de la petición de servicio y los parámetros

de entrada toman la forma de elementos XML. El ejemplo también ilustra el uso de

los XML namespace (xmlns), otro elemento importante de los servicios Web.

El nivel de abstracción en el que los servicios Web trabajan, abarca los estilos

de emulación como RPC, mensajes asíncronos, mensajes en un solo sentido,

broadcast y publicación/suscripción. La mayoría de los sistemas de administración de

base de datos como Oracle, SQL Server y DB2 soportan el parseo y transformación

de servicios, permitiendo la interacción directa entre los servicios Web y los sistemas

de bases de datos.

<SOAP-ENV:Body> <s:SearchRequest xmlns:s=”www.xmlbus.com/SearchService”> <p1>programacion</p1> <p2>libros</p2> <p3>visual basic</p3> </s:SearchRequest> </SOAP-ENV:Body>

Page 46: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

39

La tecnología utilizada por los servicios Web abarca dos tipos de aplicaciones

interactivas: RPC y orientada a documentos.

En las interacciones RPC se necesita tomar la forma de un método o una

llamada a un procedimiento asociado a los parámetros de entrada – salida. En

contraste con la interacción orientada a documento, la orientación RPC envía un

documento formateado específicamente para ser estructurado en un programa o

base de datos. La característica principal de esta tecnología es que una vez enviado

el mensaje de petición se espera un mensaje de respuesta.

Por otra parte, la interacción orientada a documento consiste en hacer una

solicitud para tomar la estructura de un documento XML que se pretende procesar de

manera completa. Durante la ejecución de un proceso, el documento completo debe

ser intercambiado.

Por consiguiente, Cerami (2002) afirma que un servicio Web, es cualquier

servicio que cumpla lo siguiente:

• Se encuentre disponible en Internet o en la intranet

• Utilice mensajes estandarizados en XML

• No este ligado a un sistema operativo o lenguaje de programación en

particular

• Se auto describa utilizando la gramática del XML

• Se pueda localizar fácilmente a través de un mecanismo simple

3.2.1 La tecnología de los servicios Web

Los programas que interactúan en Internet deben ser capaces de encontrarse

mutuamente, descubriendo alguna forma de interconectarse y negociar algunas

modalidades de servicio, como seguridad, confiabilidad, entre otras. Algunas de esas

modalidades de servicio son cubiertos por tecnologías existentes y estándares

propuestos, pero otros no. La infraestructura de los servicios Web están siendo

diseñados y desarrollados para ser extensibles como el HyperText Markup Language

(HTML) y el XML.

Page 47: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

40

Los servicios Web son importantes porque son capaces de enlazar

tecnologías, no reemplazan una tecnología existente. Por ejemplo, se podría decir

que lenguajes como Visual Basic, C#, C/C++ y Java reemplazaron a lenguajes

antiguos como COBOL y FORTRAN, sin embargo, muchos programas elaborados en

esos lenguajes aún se encuentran en nuestro entorno (Newcomer, 2002).

Los programadores deben tomar en cuenta a los servicios Web cuando

diseñan y desarrollan nuevos programas y bases de datos, pero esos programas y

bases de datos serán requeridos detrás del encapsulamiento de los servicios Web.

Los servicios Web no son programas ejecutables, sino que se encuentran

dentro de programas de aplicación y scripts. Requieren de varias tecnologías

basadas en XML para transportar y transformar datos dentro y fuera de programas y

bases de datos, dichas tecnologías se mencionan en los siguientes apartados.

3.2.2 XML

El eXtensible Markup Language es una de las bases fundamentales de los servicios

Web, gracias a este lenguaje de etiquetado es posible realizar los servicios Web.

XML es un mecanismo para la descripción de datos, puede ser utilizado con

cualquier tipo de datos, independientemente del tipo que se trate (Guruge, 2004).

Todos los parámetros de entrada y salida de un servicio Web así como su

estructura se encuentran definidos en XML. Para que las aplicaciones entiendan los

datos en XML necesitan un guía o parser, esto es, un nivel de inteligencia mutua que

lo comparten tanto el proveedor como el consumidor (Guruge, 2004).

El etiquetado es un medio para agregar anotaciones descriptivas alrededor del

contenido de un documento, sin interferir con el contenido original. Esta es la

ideología entorno a los lenguajes de marcado, la mayoría de ellos ha evolucionado

del Standard Generalizad Markup Language (SGML) que fue desarrollado por IBM

en los años 80’s (Guruge, 2004).

Page 48: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

41

HTML es el lenguaje de etiquetas electrónicas más conocido y utilizado, esta

compuesto por un conjunto de etiquetas previamente definidas y es considerado

como el primer lenguaje de etiquetas de marcado (Guruge, 2004).

A diferencia de HTML, el XML no es un lenguaje de etiquetas verdadero, esto

debido a que no cuenta con etiquetas definidas. XML es un lenguaje de meta-

marcado, el cual, permite crear etiquetas personalizadas para cubrir necesidades

específicas, esto comúnmente es conocido como: flexibilidad.

XML es en esencia un SGML fácil, ya que retiene bastantes funcionalidades

para hacerlo útil y poderoso, sin embargo, eliminó varias características redundantes

que hacen el SGML complejo y difícil de manejar.

XML puede ser transportado a través de la red utilizando estándares y

protocolos conocidos como File Transfer Protocol (FTP), HyperText Transfer

Protocol (HTTP), SOAP y Simple Mail Transfer Protocol (SMTP). Desde que existen

los estándares de texto de documentos, no hay limitaciones acerca de cómo puedan

ser transportados, instalados o vistos.

Como mencionan Weerawarana, et. al. (2005), XML provee un conjunto de

conceptos principales para definir nuevos lenguajes, los cuales se detallan a

continuación:

• Elementos Contiene un conjunto de atributos y algunos nodos hijos. Los nodos

hijos pueden ser otros elementos, texto, comentarios y otros tipos. Los

elementos son escritos utilizando los signos ‘<>’, ejemplo:

elemento inicial <libro> elemento final </libro>

• Atributos Son los nombres de los valores que están asociados a un elemento. Un

elemento puede tener cualquier número de atributos y se escribe de la

siguiente forma: <libro id=”1” isbn=”1234567890”>

• Comentarios

Page 49: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

42

Los comentarios inician con la secuencia de caracteres ‘<!--’ y terminan

con ‘-->’, todo lo que encierra estas marcas es ignorado por el

procesador.

• Documento Un documento XML es una unidad que consiste exactamente de un

elemento (llamado elemento de documento) y puede contener

comentarios y otros elementos.

• Texto literal Los elementos pueden tener secuencias de caracteres basados en el

esquema de codificación UNICODE. Una característica clave de los

documentos hechos en XML es que todos los caracteres contenidos

son representados en UNICODE. Utilizando este esquema, XML puede

almacenar texto de cualquier lenguaje.

Usando estos conceptos, se pueden definir nuevos lenguajes, simplemente

nombrando cada uno de los elementos, validando su contenido y el tipo de texto que

esta permitido, como valores de los atributos y elementos de contenido.

XML es una familia de tecnologías: un lenguaje de marcado de datos, varios

modelos de contenido, un modelo de enlace, un namespace y varios mecanismos de

transformación. Las siguientes tecnologías son miembros importantes de la familia

XML utilizados en la creación de los servicios Web:

• XML v1.0

Son las reglas para definir los elementos, atributos, y etiquetas de cierre

de un elemento principal, provee un modelo de datos abstractos y

formato de serialización.

• XML schema

Son documentos XML que definen los tipos de datos, contenido,

estructura y permiten la asociación de elementos en el documento XML;

también es usado para describir instrucciones de procesamiento

semántica asociado con elementos del documento.

• XML namespaces

Page 50: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

43

El calificador de nombres para los elementos del documento XML.

Se dice que un documento XML esta bien formado cuando hace uso de los

Document Type Definition (DTD), esquemas XML o algún otro lenguaje de definición

de estructuras. Los elementos que definen el formato del mensaje SOAP es un

ejemplo de esto (Weerawarana, et al., 2005).

Los DTD’s fueron inventados por SGML, cuando XML fue creado, los DTD se

convirtieron en un mecanismo de facto para definir la estructura de los documentos

XML. El lenguaje DTD permite definir los nombres de los elementos, número de

elementos y las veces que aparecerán. Sin embargo, con la llegada de los esquemas

XML el uso de DTD fue desapareciendo rápidamente.

Por su parte, los esquemas XML son documentos estructurados y creados

como especificación por el World Wide Web Consortium (W3C). Los esquemas XML

permiten especificar estructuras de una mejor manera que los DTD (Weerawarana,

et al., 2005). Dentro de sus bondades, destacan la definición de un conjunto de datos

primitivos que se pueden usar para definir atributos, elementos y valores recursivos

para definir estructuras complejas.

Una clara aplicación del XML son los servicios Web, ya que la información

utilizada debe ser convertida de su formato original a XML, por ejemplo, si se tiene

los datos generales de un libro: titulo, autor, editorial, isbn en la base de datos de

SIABUC, el registro correspondiente tendría la información que se muestra en la

tabla 1. Tabla1. Campos de un libro

Una vez que el programador realiza un análisis de la información

correspondiente, se obtendría el siguiente documento en formato XML:

<libro> <titulo>Automatizacion de Bibliotecas</titulo>

Nombre Tipo Titulo CadenaAutor Cadena

Editorial CadenaISBN Cadena

Page 51: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

44

<autor>Hugo Ponce</> <editorial>Universidad de Colima</editorial> <isbn>0123456789</isbn> </libro> El programador ha creado un elemento llamado: libro, el cual es un documento

XML con la información contenida en la base de datos. Sin embargo, no se han

definido los tipos de datos en XML, es necesario un esquema.

Mediante el esquema se valida la información para que contenga los datos y la

estructura correctamente. El ejemplo del libro con el esquema apropiado sería el

siguiente:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="libro" type="TipoLibro"/> <xsd:complexType name="TipoLibro">

<xsd:sequence> <xsd:element name="titulo" type="xsd:string"/> <xsd:element name="autor" type="xsd:string"/> <xsd:element name="editorial" type="xsd:string"/> <xsd:element name="isbn" type="xsd:long"/>

<xsd:sequence> </xsd:complexType>

</xsd:schema> Los servicios Web también utilizan mecanismos para validar los documentos,

similares a los esquemas XML, dicho mecanismo es llamado Web Services

Description Lenguaje (WSDL), en el siguiente apartado se menciona con más detalle.

3.2.3 WSDL

Web Services Description Language fue creado en Septiembre del año 2000,

utilizando la combinación de dos lenguajes descriptores de servicio: Network

Application Services Specification Language (NASSL) de IBM y Services Description

Language (SDL) de Microsoft (Weerawarana, et al., 2005).

NASSL tiene una estructura similar al WSDL en términos abstractos que eran

ligados a protocolos cableados específicos, sin embargo, era difícil utilizarlo con el

estilo RPC. SDL por su parte era la estructura opuesta, un servicio que era ofrecido

Page 52: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

45

sobre múltiples protocolos era descrito como un servicio completamente diferente,

sin una descripción común de servicio. SDL estaba mucho mas centrada en los

mensajes que NAASL.

El WSDL es un esquema XML que define una estructura para describir las

interfaces de los servicios Web. Los creadores del WSDL fueron Microsoft e IBM,

tiempo después tuvieron el apoyo de otras 25 compañías para someterlo al consorcio

W3C (Newcomer, 2002).

WSDL es el núcleo de la estructura de los servicios Web, provee un sentido

común en el que los tipos de datos son representados y pasados a mensajes, así

como las operaciones que son ejecutadas en los mensajes y el mapeo de mensaje

sobre la red. Inicialmente el documento WSDL estaba definido en tres elementos

principales: definición de tipos de datos, operaciones abstractas y enlace de

servicios.

Las partes incluyen la definición de tipos de datos, mensajes y operaciones

abstractas, que son similares a las definiciones de interfaces en CORBA o DCOM

(Newcomer, 2002). Los mensajes pueden tener múltiples partes y pueden ser

definidas para usarse con la orientación a procedimientos o la interacción orientada a

documento. A través de las capas de abstracción, los mismos mensajes pueden ser

definidos y usados por múltiples puertos. A continuación, en la figura 9 se muestra la

estructura del WSDL (trad. Newcomer, 2002, p. 23).

Page 53: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

46

Figura 9. Estructura inicial del documento WSDL

El WSDL juega un rol importante que facilita muchas de las ventajas de los

servicios Web y la orientación a servicio. Según Weerawarana, et al., (2005) el

esquema WSDL es utilizado en los servicios Web en dos tipos de escenarios:

• Descripción de un servicio para sus clientes En este tipo de descripción, el documento WSDL describe un servicio

publicado para sus clientes. La descripción consiste en una declaración

de mensajes, operaciones de intercambio de mensajes y la ubicación,

en resumen, es el mecanismo para interactuar con el servicio. El

propósito principal del WSDL en este escenario es el de permitir a un

cliente usar el servicio satisfactoriamente.

• Descripción de un servicio estándar para implementar el servicio En este caso, el documento WSDL es un servicio estándar. Un ejemplo

de esto pueden ser las librerías, estas reciben y aceptan la compra de

un determinado libro. Un documento XML describe el formato del

mensaje, y la interacción envuelta con la compra del libro ha sido

Page 54: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

47

convenida por la editorial. Entonces, una editorial específica puede

utilizar el WSDL y ofrecer el servicio, lo cual resulta en otro WSDL.

Un consumidor de servicio ó cliente utiliza el WSDL para ubicar el servicio

Web e invocar cualquiera de sus funciones públicas disponibles. Existen

herramientas que permiten la integración de servicios Web con poco código, por

ejemplo, la herramienta desarrollada por IBM: Web Services Invocation Framework

(WSIF), este proyecto actualmente es dirigido por Apache XML (Fremantle, 2002).

Utilizando esta aplicación se puede especificar el nombre del archivo WSDL y

automáticamente invocar el servicio descrito.

En la figura 10 se muestran los esquemas de las versiones de los esquemas

WSDL, la versión 2.0 fue liberada el 26 de Junio del año 2007, probablemente no se

hará una nueva versión en algunos años (Weerawarana, et al., 2005).

Figura 10. Versiones del WSDL

<types> … </types>

<message name=”…”> … </message>

<porType name=”…”> … </porType>

<binding name=”…”> … </binding>

<service name=”…”> … </service>

<definitions>

</definitions>

<types> … </types>

<binding name=”…”> … </binding>

<service name=”…”> interface=”…”> … </service>

<interface name=”…”> … </interface>

<description>

</description>

Versión 1.1 Versión 2.0

Page 55: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

48

Actualmente el consorcio W3C ha desarrollado herramientas prototipo para

convertir los documentos WSDL de la versión 1.1 a la versión 2.0. Así como librerías

para leer, manipular y crear documentos WSDL en su versión 2.0 (World Wide Web

Consortium, 2007b).

3.2.4 SOAP

Hasta este punto se han definido los datos (XML) y se ha expresado la abstracción

del servicio necesario para soportar la comunicación y procesamiento del mensaje

(WSDL). Ahora, es importante definir la estructura del mensaje que será enviado

desde una computadora a otra.

SOAP son las siglas de Simple Object Access Protocol, este protocolo fue

desarrollado por Microsoft, Developmentor y Userland Software. Posteriormente,

empresas como IBM y Lotus contribuyeron en la revisión de la especificación que

resulto en la versión SOAP 1.1, misma que fue publicada en Abril del año 2000. Esta

especificación es ampliamente utilizada en la industria del software y forma las bases

de varios implementaciones interoperables (Weerawarana, et al., 2005).

Los creadores de SOAP 1.1 enviaron la especificación al consorcio W3C en

Mayo del 2000, donde fue analizada por el grupo de trabajo del protocolo XML, cuyo

objetivo era la estandarización de SOAP.

La especificación SOAP define la estructura para el intercambio de

información en XML a través de Internet y de esta manera provee el mecanismo de

comunicación para conectar los servicios Web. La estructura del mensaje es simple,

fácil de desarrollar y completamente neutral con respecto al sistema operativo,

lenguaje de programación o plataforma de cómputo distribuido (Newcomer, 2002).

Este protocolo se encuentra en constante desarrollo y el encargado de su

evolución es el consorcio W3C, actualmente se encuentra en su versión 1.2 (World

Wide Web Consortium, 2007a).

SOAP está fundamentado en el modelo de comunicación de un solo sentido,

que asegura el envío de un mensaje desde el transmisor al receptor, incluye

Page 56: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

49

intermediarios que pueden procesar o agregar partes al mensaje. La especificación

SOAP contiene metodologías para adaptar los mensajes en un solo sentido para la

comunicación al estilo RPC y también define como se transmiten documentos

completos en XML.

SOAP es un conjunto de convenciones que especifican el formato de un

mensaje a través de un conjunto de reglas que gobiernan su procesamiento a lo

largo de su ruta. Estas convenciones describen como un mensaje es ensamblado y

que nodos los procesan (Weerawarana, et al., 2005).

Un mensaje SOAP es la unidad básica de comunicación entre nodos y esta

compuesto por 3 elementos principales: Envelope, Header y Body (Weerawarana, et

al., 2005). Cabe señalar que las etiquetas Envelope y Body son obligatorias dentro

del cuerpo del mensaje SOAP, en la figura 11 se muestra el esquema general de

este protocolo.

Figura 11. Estructura del protocolo SOAP

A continuación se describe las etiquetas principales de éste protocolo:

• Envelope

Define el inicio y el fin del mensaje, puede contener uno o más

elementos header.

• Header

……

SOAP Header

SOAP Envelope

Header Bloque 1

Header Bloque N

……

Body sub-elemento 1

Body sub-elemento N

SOAP Body

Page 57: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

50

Contiene cualquier atributo opcional del mensaje usado en el

procesamiento del mismo.

• Body

Contiene los datos XML que abarca el mensaje cuando es enviado,

también conocida como información de negocio.

Como se muestra en la figura 12, SOAP esta diseñado para proveer un

protocolo de comunicación abstracto, independiente, capaz de conectar dos o más

sitios remotos (trad. Newcomer, 2002, p. 26). El sistema de comunicación puede ser

construido utilizando cualquier combinación de hardware y software que soporte el

acceso a Internet con sistemas existentes como .NET, Java, entre otros.

Figura 12. Mensajes SOAP interconectando sitios remotos

Un nodo es una implementación de reglas de procesamiento descritas en la

especificación SOAP que puede transmitir, recibir procesos ó retransmitir un mensaje

SOAP. Sin embargo, el nodo implementa el modelo de procesamiento SOAP,

también puede acceder a cualquier servicio que los protocolos de red subyacentes

deben proveer (Weerawarana, et al., 2005).

Page 58: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

51

Los nodos pueden enviar y recibir mensajes SOAP, si un nodo transmite un

mensaje es llamado emisor, si recibe un mensaje es llamado receptor. Sin embargo,

algunos nodos deben hacer las dos funciones; recibir y transmitir mensajes, en este

caso son llamados intermediarios.

El emisor crea el mensaje, posteriormente el mensaje pasa a través de varios

intermediarios antes de llegar a su destino final, en este sentido, es común que un

mensaje SOAP pase a través de varios nodos, y a este conjunto de nodos se le

conoce como: ruta del mensaje, esta interacción se muestra en la figura 13.

Figura 13. Interacción de los nodos en la ruta SOAP

El modelo de procesamiento SOAP

Según Weerawarana, et al. (2005), la especificación del mensaje SOAP se encuentra

expresada como información en formato XML. Esto significa que el emisor debe

crear un mensaje XML que el receptor puede reconstruir. Todos los mensajes

creados se encuentran basados en el estándar XML 1.0. A continuación se muestra

un ejemplo de un mensaje SOAP básico.

<?xml version='1.0'?> <env:Envelope xmlns:env='http://www.w3.org/2003/05/soap-envelope'> <env:Header> <p:BloqueUno xmlns:p='http://siabuc.ucol/b_uno'> <p:prioridad>alta</p:prioridad> <p:fecha>2009-08-01</p:fecha> </p:BloqueUno> </env:Header> <env:Body> <sb:libro xmlns:sb='http://siabuc.ucol.mx/lib'> <sb:titulo>Automatizacion de Bibliotecas</sb:titulo> <sb:autor>Hugo Ponce</sb:autor> <sb:editorial>Universidad de Colima</sb:editorial>

Receptor FinalEmisor Inicial

Intermediario Emisor Receptor

Ruta del mensaje SOAP

Intermediario

Page 59: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

52

</sb:libro> </env:Body> </env:Envelope>

El elemento inicial Envelope contiene dos subelementos que son definidos en

SOAP: Header y Body. Sin embargo, el contenido de estos es específico de la

aplicación que crea y procesa el mensaje SOAP.

El elemento Header es opcional, su función dentro de SOAP es la de

transportar datos que no son parte de la información de negocio. También define las

condiciones de fallo que pudieran ocurrir. En el ejemplo anterior, el elemento Header

incluye un elemento hijo que contiene un conjunto de características de parámetros

de servicio. Dentro de la especificación SOAP, este elemento hijo es llamado header

block. Un elemento header puede contener varios header blocks, los cuales tienen su

propio namespace XML. La especificación XML permite que los header blocks

apunten a nodos SOAP específicos para procesar el mensaje a lo largo de su ruta.

El modelo de procesamiento SOAP se refiere a que se pueden utilizar

diferentes especificaciones de servicio, con sus propias definiciones header, con la

finalidad de ensamblar un mensaje que tenga características más complejas de

servicio, se tiene que definir una cabecera (header block) por cada servicio.

Por otra parte el elemento Body es obligatorio dentro del mensaje SOAP,

contiene la información del negocio del mensaje, es decir, la información que será

transmitida del emisor hacia el receptor. La elección acerca de que tipo de

información se coloca dentro del elemento Header y dentro de Body corresponde al

diseño del sistema.

Existen otra serie de atributos que son opcionales como Rol, mustUnderstand

y Relay. La finalidad del atributo Rol es la de identificar el rol desempeñado por el

header block, por su parte el elemento mustUnderstand se encarga de cerciorarse

que los nodos no ignoren los header block que son importantes para el propósito de

la aplicación, mientras que Relay es un atributo booleano que indica la retransmisión

de una cabecera cuando no es procesada.

Page 60: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

53

Mensajes de error El protocolo SOAP provee un mecanismo para manejar los errores que se presentan

durante el procesamiento del mensaje. La información correspondiente al error es

etiquetada con env:Fault, el cual es un elemento hijo de env:Body.

El elemento env:Fault contiene a su vez dos elementos hijos: env:Code y

env:Reason. También podría contener tres elementos más de manera opcional:

env:Detail, env:Node y Env:Role.

El subelemento env:Code debe contener un elemento llamado env:Value, el

cual utiliza uno de los cinco códigos de fallo definidos en la especificación SOAP, los

cuales se mencionan a continuación:

• VersionMismatch El mensaje no es soportado por la versión SOAP.

• MustUnderstand El nodo destino no entiende la cabecera en el mensaje que contiene el atributo

“mustUnderstand”.

• DataEncodingUnknown El nodo destino no logró entender la codificación del mensaje.

• Sender El mensaje fue formado incorrectamente.

• Receiver El nodo receptor no pudo procesar el mensaje.

A continuación se muestra un ejemplo con el funcionamiento del elemento

fault utilizando la especificación SOAP:

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:flt="http://example.org/faults"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Receiver</env:Value> <env:Subcode> <env:Value>flt:ValorErroneo</env:Value>

Page 61: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

54

</env:Subcode> </env:Code> <env:Reason> <env:Text xml:lang="es">Error en la base de datos</env:Text> <env:Text xml:lang="us">Database Error</env:Text> </env:Reason> <env:Detail> <flt:MyDetails> <flt:Message>Base corrupta</flt:Message> <flt:ErrorCode>3197</flt:ErrorCode> </flt:MyDetails> </env:Detail> </env:Fault> </env:Body> </env:Envelope>

El propósito de env:Reason es proporcionar un mensaje que sea fácil de

interpretar por cualquier persona, el elemento env:Text contiene la descripción del

mensaje en lenguajes alternativos, por su parte el elemento env:Detail puede

contener información adicional acerca del error generado. Finalmente, env:Node y

env:Role contienen la URI del nodo que genero la falla, cabe señalar que estos dos

elementos son opcionales.

3.2.5 UDDI

Después que se han definido los datos en los mensajes (XML), descrito los servicios

que serán recibidos, la manera de procesar el mensaje (WSDL) e identificado la

forma de enviar y recibir los mensajes (SOAP), es necesario dar a conocer o publicar

el servicio que se ha hecho y encontrar los servicios que otros ofrecen y que se

quieren utilizar. Esta es la función que Universal Description, Discovery and

Integration (UDDI) provee (Newcomer, 2002).

La especificación UDDI define un método estándar para publicar y descubrir

los componentes de software de una arquitectura orientada a servicio basados en

red (OASIS, 2004a). Esta especificación actualmente está a cargo del consorcio

Page 62: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

55

OASIS10, desarrolladores de software empresarial y clientes. El propósito principal de

UDDI es el de representar los datos y metadatos de los servicios Web.

Cuando UDDI fue desarrollado estaba enfocada en UDDI Business Registry

(UBR), el cual, era una implementación pública del estándar UDDI que representaba

un directorio de servicios de comercio electrónico. Este directorio era considerado de

manera análoga al nodo principal de la base de datos del Domain Name System

(DNS) (OASIS, 2004a). Los detalles de la evolución con las distintas versiones de

UDDI se muestran en la tabla 2. Tabla 2. Evolución de la especificación UDDI

Versión UDDI

Año de liberación

Objetivo

1.0 2000 Crear el principio para registrar los servicios de los negocios basados en Internet.

2.0 2001 Proveer servicios de taxonomía flexible. Adaptación con los servicios Web.

3.0 2004 Soportar interacción segura de implementaciones públicas y privadas como el mayor elemento de SOA.

La versión 3.0 representa un gran avance en la evolución de la especificación

UDDI, esta versión es estable y compatible con las versiones anteriores del

estándar. Un registro UDDI provee un registro compartido de índices donde los

clientes pueden buscar servicios con lo cuales desean interactuar (Weerawarana, et

al., 2005).

La información utilizada por UDDI es definida en varios esquemas XML. El

estándar XML fue seleccionado debido a que ofrece una plataforma neutral de datos

y permite relaciones jerárquicas para ser descritas de forma natural. Por su parte

XML Schema Definition (XSD) fue escogida porque soporta varios tipos de datos y

fácilmente describe y valida la información basada en esquemas.

El consorcio OASIS señala que UDDI en combinación con XSD definen la

información que los usuarios y aplicaciones necesitan conocer para utilizar un

servicio Web (OASIS, 2004a). Y a la vez, forman un modelo de base de información

y una estructura de interacción de los registros UDDI.

10 http://www.oasis-open.org/home/index.php

Page 63: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

56

Una vez que un servicio Web es registrado, los programadores hacen

consultas a paginas Web que funcionan como repositorios UDDI, algunos ejemplos

de este tipo de página son http://www.soapclient.com/uddisearch.html y

http://www.xmethods.net/ve2/index.po, una vez encontrado el servicio de nuestro

interés bastara con lograr interpretar el WSDL correspondiente, para finalmente

establecer la comunicación mediante el envío y recepción de mensajes SOAP.

En la figura 14, se muestra la interacción que se lleva a cabo para registrar un

servicio Web en un repositorio UDDI, primero se genera el WSDL que contendrá la

descripción del servicio, posteriormente este WSDL es registrado mediante una API

en el repositorio UDDI, una vez registrado estará accesible a los programadores para

que puedan localizar el servicio, cuando un programador se interesa en un servicio

Web en particular, accede de nueva cuenta a su WSDL y posteriormente lo interpreta

mediante algún lenguaje de programación para comunicarse con el vía SOAP (trad.

Newcomer, 2002, p. 28).

Figura 14. Localización de un servicio Web mediante UDDI

Algunos autores comentan que UDDI es un concepto similar a la sección

amarilla, sin embargo, Guruge (2004) menciona que UDDI es mucho mas que eso,

Page 64: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

57

UDDI es un directorio de páginas que contiene los proveedores de servicio por

nombre. Debido a esto, la información contenida en UDDI se encuentra dividida en

tres categorías: páginas blancas, páginas amarillas y páginas verdes, las cuales se

detallan a continuación:

• Páginas blancas Las páginas blancas contienen información descriptiva acerca de las

organizaciones que proveen varios servicios. El nombre de la organización y la

descripción textual del contenido, la cual puede estar en varios idiomas.

Información de contacto para que la entidad también sea incluida en términos

de nombres de contacto, números de teléfono, números de fax, correos

electrónicos y URL.

• Páginas amarillas Información que describe un servicio Web utilizando diferentes clasificaciones

(taxonomías). Permite categorizar las empresas y los servicios que ofrecen así

como también su ubicación geográfica.

• Páginas verdes Contienen la información técnica necesaria para utilizar el servicio disponible.

Programación en UDDI Hasta este momento se ha definido la estructura de UDDI, sin embargo, es necesario

mencionar el mecanismo mediante el cual se puede por ejemplo, localizar, crear,

editar o guardar algún servicio, este mecanismo es posible llevarlo a cabo mediante

un par de API’s.

Básicamente son dos las API’s que están definidas en la especificación UDDI:

inquiry API y publishing API, cada API contiene un conjunto de funciones que se

pueden invocar mediante programación, el objetivo de estas funciones es generar

mensajes en XML para guardar un servicio creado, editarlo.

Inquiry API se utiliza para localizar información que ofrecen los servicios y la

forma de actuar en caso de alguna falla, mientras que publishing API, se utiliza para

Page 65: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

58

crear, almacenar o actualizar información concentrada en el registro UDDI (Chappell,

2002).

Inquiry API consiste en localizar información acerca de un servicio que se ha

ofrecido, la especificación de ese servicio y la información acerca de lo que debe

hacer en caso de fallo, cabe señalar que esta API no requiere un método de

autentificación y por lo tanto puede ser utilizada a través del protocolo HTTP.

Mientras que publishing API, se utiliza para crear, almacenar, o actualizar

información localizada en un registro UDDI, todas las funciones utilizadas en esta

API requieren autentificación de acceso, debido a ello se utiliza el protocolo

HyperText Transfer Protocol Secure (HTTPS).

Además de la publishing API, existen otras API’s de seguridad, transferencia,

y suscripción, las cuales son opcionales (OASIS, 2004b).

Las funciones relacionadas con la inquiry API pueden ser utilizadas para

recuperar información del registro UDDI. A continuación se mencionan cada una de

ellas:

• find_binding

• find_business

• find_relatedBusiness

• find_service

• find_tModel

• get_bindingDetail

• get_businessDetail

• get_operationalInfo

• get_serviceDetail

• get_tModelDetail

Mientras que las funciones correspondientes de la API para publicar (Publish

API) son las encargadas de dar a conocer y actualizar información contenida en el

registro UDDI. A continuación se listan cada una de ellas:

• add_publisherAssertions

• delete_binding

Page 66: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

59

• delete_business

• delete_publisherAssertions

• delete_service

• delete_tModel

• get_assertionStatusReport

• get_publisherAssertions

• get_registeredInfo

• save_binding

• save_business

• save_service

• save_tModel

• set_publisherAssertions

Ahora que los estándares XML, SOAP, WSDL y UDDI son utilizados en conjunto

para hacer posible los servicios Web, hacen que tengan un impulso a la siguiente

tecnología orientada a objeto. En la figura 15 se muestra el modelo de interacción de

las tecnologías de los servicios Web (trad. Guruge, 2004).

Figura 15. Modelo operacional de los servicios Web

Page 67: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

60

En la actualidad, existen herramientas que incorporan la funcionalidad de

UDDI sin hacer toda esta tarea manualmente, a continuación se mencionan algunas

de ellas (Online Community for the Universal Description, Discovery and Integration

OASIS Standard, 2008):

• jUDDI Es una implementación Open Source que utiliza el lenguaje Java

implementando UDDI. Actualmente este proyecto esta a cargo Apache

Group y esta basado en la especificación UDDI 2.0.

• Novell: Nsure UDDI Server Agrega administración de seguridad a la especificación UDDI,

incrementando la seguridad y administración de los servicios Web.

Soporta la versión UDDI 2.0.

• OpenUDDI Server Es una implementación Open Source basada en la especificación

UDDI 3.0. Esta herramienta se encuentra basada en la Novell UDDI

Server.

Hasta aquí se ha definido uno de los elementos esenciales para el desarrollo

de este trabajo; los servicios Web, estos proveen la interoperabilidad y pueden

fácilmente ser extendidos para utilizarse en arquitecturas empresariales, sin

embargo, adquieren más valor cuando utilizan implementaciones basadas en Service

Oriented Architecture (SOA) (Newcomer y Lomow, 2004). Esto debido a que la

mayoría de los analistas y proveedores de software recomiendan la utilización de los

servicios Web como la mejor forma de realizar una implementación SOA (Josuttis,

2007). Ahora, es necesario definir SOA, sus características principales y su

estructura, esto se aborda con detalle en el siguiente apartado.

Page 68: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

61

3.3 Arquitectura Orientada a Servicio (SOA)

3.3.1 Concepto de SOA

En el año de 1994 Alexander Pasik, un analista de la empresa Gartner, acuño el

término Service Oriented Architecture para una clase que formaba parte de un

middleware. Pasik era desarrollador de software desde antes que el lenguaje XML o

los servicios Web fueran inventados (Josuttis, 2007).

Pasik estaba creando el término SOA porque la definición cliente-servidor

había perdido su significado clásico. Muchas industrias habían comenzado a utilizar

el término cliente-servidor para definir a una computadora en un entorno distribuido.

Una computadora cliente ejecutaba la presentación lógica de la interfaz de usuario y

la mayoría de la lógica del negocio, mientras que el servidor, almacenaba los datos

en un sistema administrador de base de datos y en ocasiones ejecutaba la lógica del

negocio. En este sentido, los términos cliente y servidor se referían principalmente al

hardware.

Para evitar confusión entre los antiguos y los nuevos términos cliente-servidor,

Pasik menciono que la orientación a servicio es muy útil para desarrollar aplicaciones

empresariales.

Anteriormente, las aplicaciones compartidas se encontraban enfocadas en la

resolución de problemas manuales como el pago de nómina, facturación,

contabilidad, entre otros. En la actualidad, la mayoría de estas operaciones han sido

automatizadas, sin embargo, ahora se encuentra la incógnita acerca de mejorar la

habilidad de esos sistemas para encontrar nuevos requerimientos (Newcomer y

Lomow, 2004). La forma de hacerlo es agregando nuevas interfaces de usuario,

combinando varias fuentes de datos, integrando dispositivos móviles ó reemplazando

la aplicación anterior por una nueva.

El paradigma del desarrollo orientado a servicio no es nuevo, fue tomado

como un cambio en las tecnologías de información para desarrollar nuevos sistemas

y obtener aportaciones de manera rápida.

SOA no reemplaza la tecnología orientada a objetos (OO), sino que viene a

ser un complemento de ésta. Sin embargo, cabe señalar que SOA se separa

Page 69: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

62

considerablemente del modelo OO ya que SOA es orientada a servicios mientras que

OO es orientado a objetos, clases y métodos.

SOA se enfoca en el modelo basado en servicios y soporta tecnologías

interoperables, además se encarga de resolver problemas prácticos que surgen por

las diferentes plataformas y lenguajes de programación (Gorton, 2006).

Es difícil encontrar una definición exacta acerca del término SOA, esto debido

a que existen varias definiciones al respecto, sin embargo, la mayoría de ellas

coinciden en el sentido de que SOA es un modelo que permite el intercambio de

información de manera interoperable e independiente, en los siguientes párrafos se

mencionan algunas definiciones al respecto.

Newcomer y Lomow (2004), definen SOA como un estilo de diseño que guía

todos los aspectos de creación y usa servicios de negocio a través de su ciclo de

vida (desde la concepción hasta su retiro). También permite a diferentes aplicaciones

el intercambio de datos independientemente del sistema operativo o lenguaje de

programación que se utilice.

Erl (2005), por su parte define a SOA como un término que representa un

modelo en donde la automatización lógica es descompuesta en pequeñas unidades

lógicas. De manera colectiva, esas unidades lógicas abarcan una pieza de

automatización lógica del negocio. Sin embargo, esas unidades pueden ser

distribuidas.

Por su parte, el consorcio OASIS define SOA como la representación de una

colección de las mejores prácticas y principios relacionadas a los servicios, nivel

empresarial y cómputo distribuido (OASIS, 2008b).

Mientras que Josuttis (2007), define SOA como un paradigma para la

realización y conservación de los procesos de negocio que abarcan los sistemas

distribuidos. También menciona que esta arquitectura se encuentra basada en tres

conceptos: servicios, interoperabilidad a través del Enterprise Service Bus (ESB) e

independencia (loose coupling). A continuación se definen estos tres conceptos:

• Servicio Es una pieza independiente de la funcionalidad del negocio, donde la

funcionalidad, puede ser simple o compleja.

Page 70: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

63

• Enterprise Service Bus (ESB) Es una infraestructura que permite una gran interoperabilidad para los

servicios entre sistemas distribuidos. Hace que sea fácil distribuir los

procesos de negocios sobre múltiples sistemas usando diferentes

plataformas y tecnologías.

• Loose coupling El objetivo de este concepto es el de reducir las dependencias del

sistema. Debido a que los procesos de negocio se encuentran

distribuidos sobre múltiples backends, es importante minimizar los

efectos de modificaciones y fallas.

La finalidad de SOA es tener tareas individuales, las cuales son ejecutadas

por componentes especializados llamados servicios. El objetivo de los servicios es

coordinar los procesos de negocio, cada servicio es diseñado para facilitar su

reutilización, si otro proceso requiere que la misma tarea sea ejecutada, ésta hace

uso del servicio existente (Brown, 2008).

Brown (2008) define un servicio como una unidad bien definida que ejecuta un

trabajo y que además se encuentra empaquetada para un acceso fácil. El objetivo es

implementar la funcionalidad exactamente una vez, de una manera correcta y

hacerlo ampliamente accesible. El esfuerzo extra en la creación inicial del servicio es

pagado para evitar costos en desarrollo futuro.

Margolis y Sharpe (2007) mencionan que los servicios son independientes de

otro software a fin de que los cambios de una petición requieran pocos o ningún

cambio en el servicio.

Cuando los servicios Web están disponibles a través de un entorno

empresarial, los proyectos de integración orientados a servicios pueden enfocarse en

componer servicios Web en lugar de tratar con la incompatibilidad de aplicaciones en

varias computadoras, lenguajes de programación o paquetes de aplicación. Por

ejemplo, si se utilizan lenguajes de programación como Java, C++, Visual Studio,

CORBA, WebSphere MQ, o cualquier otra plataforma de desarrollo o sistema de

Page 71: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

64

software, como J2EE o .NET, SOA provee la arquitectura y los servicios Web

proveen la unión de manera unificada.

Comparando los estándares del pasado, los servicios Web son mucho más

fáciles de entender y de utilizar (Newcomer y Lomow, 2004). La amplia adopción de

estos estándares facilita el imaginarnos un entorno en el que las aplicaciones tengan

interfaces de servicio. Y partiendo de esta visión, es fácil imaginar a personas

involucradas en las tecnologías de información ejecutando en la mayoría de sus

actividades interfaces de servicio Web.

La aplicación más importante de SOA es la de conectar varios sistemas que

automaticen procesos de negocios empresariales (Newcomer y Lomow, 2004).

Ejemplos clásicos de estos son el sistema de inventario de Wal-Mart, sistema de

reservación de American Airline’s y el sistema de administración de abastecimiento

de la empresa Dell. Las compañías necesitan sistemas que sean flexibles para

implementar operaciones especializadas, para cambiar tan fácil como las

operaciones de negocio cambien y responder tanto interna como externamente a

dichas condiciones de cambio.

Dentro de las ventajas de la utilización de SOA Newcomer y Lomow (2004)

menciona las siguientes:

• Desarrollo eficiente SOA promueve la modularidad porque los servicios son independientes,

esta modularidad tiene implicaciones positivas para el desarrollo de

aplicaciones compuestas.

• Mayor reutilización Una de las promesas de SOA es que el servicio reutilizable disminuirá

costos de desarrollo y velocidad de tiempo en la comercialización.

• Mantenimiento simplificado Simplifica el mantenimiento y reduce los costos debido a que las

aplicaciones desarrolladas en SOA son aplicaciones modulares e

independientes.

Page 72: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

65

• Creciente adopción Debido a que las aplicaciones son modulares e independientes pueden

ser desarrolladas y extendidas en pequeñas unidades.

• Evolución Un servicio y su contrato de servicio encapsulan la lógica del negocio,

de forma tal, que otros servicios no necesitan conocer nada acerca de

la forma en la cual se provee el servicio, solamente acerca de lo que el

servicio toma como entrada y lo regresa como respuesta.

SOA en combinación con los servicios Web facilitan el desarrollo de servicios

que encapsulan funciones de negocio y que son fácilmente accesibles desde

cualquier otro servicio. Además, servicios complejos permiten un amplio rango de

opciones para combinar servicios Web y crear nuevas aplicaciones funcionales. La

tecnología de los servicios Web puede ser usada para resolver varios problemas de

las tecnologías de información, especialmente cuando se asocian piezas de software

diferentes. Los servicios Web proveen la interoperabilidad y pueden fácilmente ser

extendidos para ser utilizados en arquitecturas empresariales por su bajo costo y por

su valor en las tecnologías de información, sin embargo, adquieren más valor cuando

utilizan implementaciones basadas en SOA (Newcomer y Lomow, 2004).

El momento real para SOA fue concebido por los servicios Web, que

inicialmente fueron creados por Microsoft. Pronto, otras compañías como Oracle, HP,

SAP y Sun aportaron su capital para agrandar la idea y vender nuevos conceptos y

herramientas. Tiempo después los analistas de software comenzaron a ofrecer SOA

como el concepto clave para el futuro del desarrollo de software. Un ejemplo claro de

esto fue la empresa de consultoría e investigación Gartner (http://www.gartner.com),

la cual, predijo que para el 2010 el software de aplicación tendrá un crecimiento del

80% en sus ganancias a través de productos basados en SOA (Josuttis, 2007).

Por su parte Newcomer, et. al., (2004) menciona que la mayor ventaja de

implementar SOA utilizando servicios Web es que éstos son simples y de plataforma

neutral. Además, los proveedores de software han adoptado extensamente el

paradigma de desarrollo orientado a servicios basado en servicios Web.

Page 73: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

66

Desde el punto de vista técnico, un servicio es un activo que tiene interfaces

bien diseñadas, claramente separadas de los servicios externos. Cada servicio

consiste de una o más operaciones, esas operaciones deberán ser implementadas

usando una variedad de tecnologías, pero ningún detalle de esas tecnologías estará

visible al servicio que hace la petición, porque el WSDL es utilizado para la

descripción del servicio, de esta forma, cualquier servicio que realice una petición lo

puede leer. Un servicio es diferente de un objeto ó un procedimiento porque es

definido mediante mensajes, los cuales, son intercambiados con otros servicios.

3.3.2 Estructura de SOA Krafzig, et al. (2004) definen la estructura de SOA en cuatro abstracciones

principales: aplicación, servicio, repositorio de servicios y bus de servicios, dicha

estructura está representada en la figura 16 (trad. Krafzig, Banke y Slama, 2004).

Figura 16. Estructura de SOA

La aplicación es el dueño de los procesos de negocio y son los elementos

activos de SOA, ya que envían el valor de SOA a los usuarios finales, el servicio

provee la funcionalidad para que la aplicación y otros servicios la puedan utilizar.

Arquitectura Orientada a Servicios (SOA)

Aplicación Servicio Repositorio de Servicios

Bus de Servicio

Contrato Implementa -ción

Interfaz

Lógica del negocio

Datos

Page 74: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

67

Un servicio consiste de una implementación que provee los datos y la lógica

del negocio, un contrato de servicio especifica la funcionalidad, uso y restricciones

para un cliente del servicio, mientras que una interfaz de servicio expone físicamente

la funcionalidad.

El repositorio de servicio almacena los contratos de servicio individualmente y

el bus de servicio interconecta la aplicación con el servicio.

A continuación se describe cada uno de los elementos que integran la

arquitectura SOA:

• Aplicación Son los elementos activos de SOA, inician y controlan toda

la actividad de los sistemas empresariales. Hay diferentes tipos de

aplicaciones; una aplicación con una interfaz gráfica de usuario, como

una aplicación Web o un cliente que interactúe directamente con los

usuarios finales. Sin embargo, la aplicación no necesariamente tiene

que interactuar con los usuarios finales, ya que también puede ser un

archivo de procesamiento por lotes que se ejecute periódicamente.

• Servicio Un servicio es un componente de software que típicamente

encapsula el concepto de negocio de alto nivel.

• Repositorio de Servicios Un repositorio de servicios provee la

facilidad para descubrir servicios y adquirir toda la información

necesaria para usar los servicios. Sin embargo, mucha de la

información requerida ya es parte del contrato de servicio.

• Bus de Servicio El bus de servicio conecta todos los elementos de los

servicios SOA y la aplicación.

• Contrato Provee una especificación del propósito, la funcionalidad,

restricciones y uso del servicio. La forma de esta especificación puede

variar dependiendo del tipo de servicio. Un elemento opcional del

contrato de servicio es la definición de una interfaz formal basada en

lenguajes como IDL o WSDL. Sin embargo, es importante señalar que

si ninguna descripción formal del servicio se encuentra disponible, cada

servicio requiere de un contrato de servicio respectivamente.

Page 75: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

68

• Implementación La implementación del servicio físicamente provee los

requerimientos lógicos y los datos apropiados. Consiste en la

implementación de uno o más objetos como programas, datos de

configuración y bases de datos.

• Interfaz Expone la funcionalidad del servicio a los clientes que se

conectan a el a través de la red. Sin embargo, la descripción de la

interfaz es parte del contrato de servicio, la implementación física de la

interfaz consiste de servicios que son incorporados dentro de los

clientes.

• Lógica del negocio Es parte de la implementación del servicio, esta

hecha para ser disponible a través de las interfaces de servicio.

• Datos Son propiamente los datos del servicio

3.3.3 Aplicación

Este elemento de SOA inicia y controla toda la actividad de los sistemas

empresariales. Hay diferentes tipos de aplicaciones, una aplicación con una interfaz

gráfica de usuario, una aplicación Web que interactúa directamente con otros

usuarios es el ejemplo mas claro de este tipo de aplicaciones (Krafzig, et al., 2004).

Sin embargo, la aplicación no necesariamente tiene que interactuar

directamente con los usuarios, puede ser incluso un archivo de procesamiento por

lotes que se ejecute cada cierto tiempo.

Es posible que la aplicación asigne responsabilidades a los procesos de

negocio de uno o más servicios. Un aspecto importante es que la aplicación siempre

inicia un proceso y es la encargada de recibir los resultados.

Este apartado es similar a las capas superiores de las aplicaciones multicapas

tradicionales.

Page 76: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

69

3.3.4 Servicio

Krafzig, et al., (2004) definen un servicio como un componente funcional que

típicamente encapsula un alto nivel del concepto de negocio. Este componente es

uno de los más importantes dentro de SOA, ya que uno de los objetivos principales

de este paradigma es la orientación a los servicios y debido a la importancia que

tiene, esta compuesto por cinco elementos: contrato, interfaz, implementación, lógica

del negocio y datos, tal como se mostró en la figura 16, en los siguientes párrafos se

describen cada uno de ellos.

• Contrato Provee una especificación del propósito, funcionalidad,

restricciones y utilización del servicio. La forma de esta especificación

puede variar dependiendo del tipo de servicio en cuestión.

Un elemento opcional del contrato es la definición formal basada en

lenguajes como IDL ó WSDL. Aunque la definición formal agrega ciertos

beneficios como: abstracción e independencia de la tecnología.

El contrato de servicio puede imponer detalles semánticos en la

funcionalidad que no son parte del IDL o de la especificación WSDL.

Es importante destacar que cada servicio requiere un contrato de

servicio, particularmente si ninguna descripción formal basada en una

especificación como WSDL ó IDL se encuentra disponible.

• Interfaz Es la funcionalidad del servicio, la cual, es expuesta a los clientes

y es conectada al servicio utilizando los protocolos de red existentes. La

descripción de la interfaz es parte del contrato de servicio, la

implementación física de la interfaz esta compuesta por un service stub,

los cuales son incorporados dentro de los clientes de un servicio.

• Implementación La implementación del servicio físicamente provee la

lógica del negocio y los datos apropiados. Es la parte técnica que cumple

en su totalidad con el contrato de servicio. La implementación del servicio

consiste de uno o más elementos como programas, datos de

configuración y bases de datos.

Page 77: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

70

• Lógica del negocio La lógica del negocio es encapsulada por el servicio y

forma parte de su implementación, se encuentra disponible a través de la

interfaz del servicio.

• Datos Son los datos propiamente del servicio.

Figura 17. Elementos que conforman un servicio

Para concluir, un servicio esta compuesto por datos, la lógica del negocio, así

como también de las interfaces y las descripciones de cada una de ellas. En la figura

17 se puede observar los componentes del servicio y la forma en la cual interactúan

(trad. Krafzig, Banke y Slama, 2004).

3.3.5 Repositorio

Un repositorio de servicios facilita el descubrimiento de servicios y adquiere toda la

información para utilizar los servicios, particularmente si éstos tienen que ser

descubiertos fuera del ámbito del proyecto que los creo (Krafzig, et al., 2004).

Sin embargo, mucha de la información requerida ya forma parte del contrato

de servicio, el repositorio de servicio puede proveer información adicional, como la

ubicación física del servicio, información acerca del proveedor, tarifas de uso (si

aplica), restricciones técnicas, detalles de seguridad así como también los niveles de

servicio disponibles.

Page 78: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

71

Los repositorios que son utilizados a través de la integración de servicios

empresariales típicamente tienen diferentes requerimientos particulares, esos

repositorios son publicados a través de Internet. Estos requerimientos pueden ser

asuntos legales (términos y condiciones de uso), estilo de presentación, seguridad,

registro de usuario, suscripción del servicio, facturación y versiones.

Un repositorio es un elemento muy utilizado en SOA, sin embargo, se puede

construir una arquitectura basada en la metodología SOA y obtener muchos de los

beneficios sin utilizar un repositorio de servicios, un repositorio de servicios es

indispensable a largo plazo. Una arquitectura puede funcionar sin un repositorio

siempre y cuando el ámbito del servicio se encuentre en un solo proyecto, si tiene

pocos servicios o si todos los proyectos se encuentran hechos por las mismas

personas.

Un ejemplo de repositorio puede ser un conjunto de contratos de servicios

impresos ubicados en una oficina que es accesible por todos los proyectos.

3.3.6 Bus de Servicio

Un bus de servicio conecta todos los participantes de los servicios SOA y la

aplicación frontend entre si (Krafzig, et al., 2004).

Por ejemplo, si dos participantes necesitan comunicarse ó si una aplicación

frontend necesita invocar alguna funcionalidad básica del servicio, el bus de servicio

hace que esto suceda. En este sentido, el bus de servicio es similar al concepto de

bus de software que es definido en el contexto de CORBA. Sin embargo, existen

algunas diferencias significativas entre ambos conceptos, la más importante es que

el bus de servicio no necesariamente esta compuesto por una sola tecnología, sino

que comprende una gran variedad de productos y conceptos.

El bus de servicio se caracteriza por los siguientes elementos:

• Conectividad El propósito principal de un bus de servicio es el de

interconectar los participantes de una arquitectura SOA. Provee las

Page 79: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

72

facilidades que permiten a los participantes de una aplicación SOA

invocar las funcionalidades del servicio.

• Heterogeneidad de tecnología El bus de servicio debe contener una

gran variedad de tecnologías diferentes. La realidad de las empresas

es caracterizada por tecnologías heterogéneas. Consecuentemente el

bus de servicio debe permitir conectar a los participantes que se

encuentran basados en diferentes lenguajes de programación, sistemas

operativos o entornos de ejecución diferentes.

• Heterogeneidad de conceptos de comunicaciones De forma similar

a la heterogeneidad de tecnologías, el bus de servicio también debe

contener una variedad de conceptos diferentes de comunicación.

Debido a los requerimientos divergentes de diferentes aplicaciones, el

bus de servicio debe permitir diferentes modos de comunicación.

• Servicios técnicos El objetivo principal del bus de servicio es la

comunicación, sin embargo, también debe proveer servicios técnicos

como el registro de eventos en bitácoras, auditoria, seguridad y

transacciones.

Page 80: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

73

3.4 SOA con Servicios Web

La mayoría de los analistas y proveedores de software recomiendan solo una forma

apropiada para realizar un entorno SOA: los servicios Web. Debido a que son

considerados como la mejor forma para realizar una implementación SOA. Además,

se han convertido en un estándar de facto para las infraestructuras que utilizan SOA

(Josuttis, 2007). Según Juric, Loganathan, Sarang y Jennings (2007) la combinación

de SOA con los servicios Web ofrecen ciertos beneficios, los cuales se mencionan a

continuación:

• Autosuficientes Los servicios Web son autosuficientes en el sentido

de que no requieren de componentes instalados en el cliente. En el

servidor solamente se necesita una plataforma de desarrollo para crear

el servicio Web. Cuando el servicio esta listo, un cliente puede consumir

el servicio sin necesidad de instalar software adicional en la

computadora.

• Autodescriptibles Una interfaz de un servicio Web es publicada a

través de un documento WSDL. El documento WSDL define el formato

para el intercambio de mensajes y los tipos de datos usados en los

mensajes. Para consumir un servicio, el cliente necesita conocer

solamente el formato y contenido de una petición y mensaje de

respuesta.

• Modulares Los servicios Web proveen una abstracción más allá que

las tecnologías basadas en componentes como Java, CORBA, DCOM.

Usando varias de esas tecnologías se pueden crear componentes. Los

servicios Web conforman esos componentes para ofrecer un servicio al

cliente. Sin embargo, la interfaz de los componentes no es expuesta al

cliente. Esto se traduce en el desarrollo de software modular para crear

vistas más abstractas de un servicio de negocio.

• Accesibles sobre la Web Los servicios Web son publicados,

localizados e invocados sobre el Web, la descripción del servicio es

publicada utilizando WSDL; el servicio es localizado con ayuda del

Page 81: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

74

registro UDDI y es invocado utilizando SOAP, todos estos protocolos

son basados en Web.

• Neutrales en lenguajes de programación, protocolos y plataformas Los servicios Web son de plataforma neutral debido a que utilizan el

XML; el cliente y el servicio pueden ejecutarse en plataformas

diferentes.

• Basados en estándares La tecnología de los servicios Web se

encuentra basada en estándares abiertos haciendo que sean fácilmente

interoperables con otros servicios Web. Los estándares utilizados son

SOAP, WSDL y UDDI, los cuales son basados en XML.

• Dinámicos Los servicios Web pueden ser descubiertos y consumidos

en tiempo de ejecución, sin la necesidad de tener conocimiento de ellos

durante la compilación.

• Compuestos Los servicios Web pueden conformar un servicio grande

utilizando la orquestación.

Sin embargo, el hecho de utilizar los servicios Web no significa que

automáticamente se implemente el modelo SOA. Esto solamente es una forma de

indicarle a los sistemas como interactuar entre si, sin que todos los demás aspectos

de SOA sean provistos (Josuttis, 2007).

Para finalizar, con la combinación de SOA y los servicios Web surge una

respuesta moderna a la integración de aplicaciones. SOA provee la arquitectura y los

Servicios Web proveen la unión de manera unificada.

Page 82: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

75

4. Arquitectura ABCSIS En esta sección se aborda a detalle los aspectos de creación de la arquitectura

ABCSIS, desde la parte teórica con el funcionamiento y definición de los servicios,

hasta la manera mediante la cual éstos fueron desarrollados con programación.

4.1 Modelo Conceptual

Como ya se ha mencionado en secciones anteriores, ABCSIS esta compuesta por un

conjunto de servicios, cuando un programador desea realizar un cliente para

consumir un servicio, primero debe consultar su contrato correspondiente a través

del WSDL, una vez que el programador ha verificado el contrato sabe como invocar

el servicio, así como los parámetros necesarios para su funcionamiento. Obtenida

toda la información necesaria para invocar el servicio, el programador procede a

realizar la solicitud del mismo mediante el desarrollo de una aplicación, la cual, será

la encargada de interactuar de manera directa con el servicio, este proceso es

mostrado en la figura 18.

La figura en cuestión está basada en la estructura de la arquitectura SOA

propuesta por Krafzig, et al., (2004), en dicha propuesta los elementos principales

son aplicación, servicio, repositorio y bus de servicio, estos elementos fueron

mostrados en la figura 16.

Figura 18. Ejemplo de funcionamiento de un servicio bajo ABCSIS

Bus de Servicio

Crea

Cumple

Invoca

Describe

Busca

Programador

Aplicación

Repositorio de Servicio

Contrato WSDL

Servicio

Web

Page 83: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

76

La descripción funcional de los elementos que conforman la figura 18

incorporados a SIABUC mediante ABCSIS se describe a continuación:

• Aplicación Son las distintas aplicaciones que los programadores

(consumidores de servicio) de las diferentes instituciones podrán realizar. Hay

diferentes tipos de aplicación, por ejemplo, una aplicación con interfaz gráfica

de usuario como una página Web o un programa de escritorio, sin embargo,

una aplicación no necesariamente tiene que interactuar directamente con el

usuario, un ejemplo de esto son los archivos de procesamiento por lotes. En el

caso de ABCSIS, la aplicación consiste de un prototipo en entorno Web

basado en el lenguaje de programación PHP que consume el servicio Acervo.

• Servicio Un servicio es una función que tiene interfaces bien definidas y que

no depende del estado de otros servicios. La arquitectura ABCSIS se

encuentra conformada por tres servicios principales: Acervo, Alumnos y

Retroalimentación, dichos servicios serán explicados con mayor detalle en

esta sección. Cabe señalar que cada servicio a su vez cuenta con varios

procedimientos que se encuentran vinculados al servicio, dentro del entorno

SOA estos procedimientos son llamados operaciones de servicio.

• Repositorio de servicios Tal como menciona Krafzig, et al., (2004) un

repositorio es un elemento muy utilizado en SOA, sin embargo, se puede

construir una arquitectura basada en la metodología SOA y obtener muchos

de los beneficios sin utilizar un repositorio de servicios, ya que estos son

indispensables a largo plazo o cuando se cuenta con un enorme equipo de

desarrollo de software. Una arquitectura puede funcionar sin un repositorio

siempre y cuando el ámbito del servicio se encuentre en un solo proyecto, si

tiene pocos servicios o si todos los proyectos se encuentran hechos por las

mismas personas.

Un ejemplo de repositorio puede ser desde un conjunto de servicios

impresos, una base de datos donde se describan aspectos como la ubicación

física del servicio, información acerca del proveedor, restricciones técnicas,

entre otros. Para el caso de ABCSIS no existe un repositorio como tal,

Page 84: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

77

solamente se incluyeron los WSDL correspondientes a cada uno de los

servicios.

• Bus de Servicio El bus de servicio ó Enterprise Service Bus es la forma

mediante la cual los clientes invocan un determinado servicio que un

proveedor ofrece. El principal objetivo del bus de servicio es proveer la

interoperabilidad y la compatibilidad con sistemas legados haciendo uso de los

servicios Web mediante el protocolo SOAP. El bus de servicio utilizado en

ABCSIS son los servicios Web basados en XML.

Page 85: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

78

4.2 Diseño arquitectónico

Un sistema basado en SOA consiste de servicios, aplicaciones y una arquitectura

que conecta las aplicaciones con los servicios. En este sentido, la arquitectura SOA

provee un mecanismo de comunicación estándar entre las aplicaciones y los

servicios existentes, debido a ello, una aplicación puede invocar un servicio

conociendo únicamente su WSDL correspondiente. Cada servicio representa una

tarea de negocio y a su vez provee una interfaz, la cual es invocada mediante un

protocolo que es conocido por los clientes que desean consumir el servicio (Kajko-

Mattsson, et al., 2007).

Considerando lo anterior, ABCSIS está conformada por cuatro elementos

principales: consumidores de servicio, la arquitectura propiamente, interfaces de

servicio e implementación del servicio. Los consumidores de servicio son las

aplicaciones cliente que se desarrollarán, la arquitectura provee un mecanismo

estándar de comunicación entre las aplicaciones y los servicios existentes, por su

parte, las interfaces es el medio por el cual se conoce la ubicación del servicio y los

parámetros que se necesitan, finalmente, la implementación del servicio corresponde

al proveedor del servicio, en este caso SIABUC, todo este proceso es mostrado en la

figura 19, para su diseño se consideró la arquitectura propuesta en un documento

denominado Service Migration And Reuse Technique (SMART), que fue elaborado

por el Instituto de Ingenieros de Software de la Universidad de Carnegie Mellon de

los Estados Unidos (Lewis, Morris, Smith y Simanta, 2008).

Hay una serie de modelos y propuestas de organismos, empresas y diversos

autores acerca de la mejor manera de representar una arquitectura basada en SOA,

dentro de las propuestas más representativas en este sentido destacan las de

Oracle, Microsoft, OASIS y la Universidad de Carnegie Mellon.

El modelo elaborado por el consorcio OASIS es denominado Reference Model

for Service Oriented Architecture 1.0 (OASIS, 2008a), este modelo consta de un

documento muy abstracto y aún se encuentra como borrador, incluso las

características claves de SOA como el servicio, contrato, repositorio, implementación

que se incluyen en el modelo OASIS, también se encuentran en el documento

SMART.

Page 86: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

79

Posteriormente se analizó el modelo propuesto por Krafzig, et al., (2004), este

modelo se encuentra plasmado en la figura 16, sin embargo, solo hace referencia a

un solo servicio de manera particular, en cambio en el modelo SMART hace

referencia a varios servicios incluyendo los usuarios y los sistemas legados.

Por su parte las empresas Microsoft y Oracle a diferencia de las propuestas

anteriores, proponen un modelo en el cual involucran sus herramientas tecnológicas,

el modelo de Microsoft está definido en tres divisiones: aplicación, servicio y

componente. La parte de aplicación se refiere cuando el cliente consume un servicio

de algún proveedor, lo correspondiente al servicio es la comunicación que existe

entre los proveedores y los consumidores, mientras que la parte de componentes

son los entornos soportados por las aplicaciones (Microsoft Corporation, 2004). En el

caso particular de Oracle, el modelo propuesto de SOA involucra la utilización de su

base de datos en combinación con el lenguaje de programación Java y está dividido

en tres capas: enlace, infraestructura y servicio (Wrigth y Reynolds, 2009).

Los modelos anteriores no difieren mucho y coinciden en la utilización de los

siguientes elementos dentro de un modelo SOA: usuarios, servicios, proveedores,

contrato, interfaces y aplicación, siendo esto uno de los principales factores por lo

que el diseño de ABCSIS se baso en el documento SMART, además de que

contiene una mejor estructura de los componentes SOA, facilita su comprensión,

incluye los elementos más importantes de los modelos mencionados anteriormente y

particularmente interesante que no contiene herramientas propietarias de empresas

o proveedores de software.

Con el diseño de ABCSIS, las personas interesadas en desarrollo de software

podrán crear componentes adicionales que se conecten a SIABUC, por ejemplo, una

aplicación Web ó una aplicación móvil que incorpore la reservación de ejemplares,

consulta de disponibilidad de ejemplares, verificación de adeudos, todo ello con la

finalidad de proporcionar más y mejores servicios bibliotecarios y acercarlos a los

usuarios finales de una determinada biblioteca o centro de información. Cabe señalar

que estas opciones se encuentran actualmente incorporadas en la versión completa

de SIABUC con interfaz tipo escritorio, sin embargo, el objetivo es encapsularlas

Page 87: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

80

como servicios Web para generar componentes adicionales que funcionen de

manera interoperable.

4.2.1 Arquitectura ABCSIS

Una vez definido como la arquitectura ABCSIS está basada en SOA es necesario

detallar la manera con la que cada servicio es incorporado dentro de dicha

arquitectura. Para esto se diseño un modelo conceptual estructurado en cuatro capas

principales, las cuales son las siguientes, consumidores de servicio, arquitectura,

interfaces de servicio e implementación del servicio, a continuación, se describe cada

uno de estas capas y al final se muestra el modelo propuesto en la figura 19.

Consumidores del servicio Esta capa la componen todas y cada una de las aplicaciones externas a SIABUC que

se quieran conectar de manera transparente a través de los servicios

proporcionados.

Un ejemplo de ello es el siguiente: en el departamento de soporte técnico de

SIABUC ha sido una sugerencia muy frecuente al inicio de cada ciclo escolar,

incorporar de manera automática la información de los alumnos de nuevo ingreso

que serán potenciales usuarios de los servicios bibliotecarios, sin embargo,

actualmente lo hacen de forma manual o mediante la manipulación directa de la base

de datos de SIABUC, lo cual, sino se tiene el debido cuidado puede causar

problemas muy graves en el funcionamiento de SIABUC, como por ejemplo colocar

usuarios con permisos de préstamo que no son adecuados, modificación de los

campos llave de las tablas de la base de datos, alteración en los nombres de los

campos, por mencionar algunos de los problemas mas frecuentes. Con la

incorporación de un servicio utilizando la arquitectura ABCSIS que registre de

manera automática esta información el problema puede quedar solucionado,

mediante el desarrollo de un sistema que consuma el servicio de registro automático

Page 88: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

81

de alumnos, lo que evita la manipulación directa de la base de datos de SIABUC y la

captura individual de cada usuario.

Otro ejemplo de aplicación puede ser la reservación de libros, al igual que el

ejemplo anterior en la arquitectura ABCSIS se elaboró un servicio para la consulta y

reservación, de tal manera que el usuario puede consultar el acervo de la biblioteca y

si le interesa algún ejemplar en particular lo puede reservar (apartar) y

posteriormente pasar a recogerlo a la biblioteca.

Arquitectura La arquitectura es la encargada de interconectar a los consumidores con los

servicios propiamente. Se caracteriza particularmente por la independencia entre

cada uno de los servicios y se basa en el intercambio de mensajes para el envío de

la información. Los elementos que la conforman son datos, bus de servicio, interfaz,

contrato, repositorio de servicio, los cuales, se encuentran basados en la estructura

de la arquitectura SOA propuesta por Krafzig, et al., (2004).

Interfaces de Servicio Las interfaces son la puerta de entrada de cada uno de los servicios y su objetivo es

recibir los parámetros que el servicio interpreta.

Esta capa consiste de una serie de servicios organizados y que utilizan la

estructura de los servicios Web, esto permite que sean definidos de forma

independiente de la plataforma tecnológica utilizada.

Para efectos de organización de la presente tesis, los servicios se han dividido

en tres grupos: acervo, alumnos y retroalimentación, los cuales se encuentran

detallados en la sección 4.2.5.

Implementación del servicio Es uno de los extremos en la comunicación de los servicios, ésta es la parte que

compete al proveedor, los proveedores son aquellas instancias que proporcionan los

medios adecuados para interconectar uno de los extremos entre la comunicación

existente proveedor – consumidor.

Page 89: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

82

En este caso, el proveedor de servicio será la base de datos de SIABUC, ya

que será la encargada de proporcionar toda la información necesaria que el

consumidor necesita para la implementación de una determinada aplicación.

Figura 19. Modelo de la arquitectura ABCSIS

4.2.2 Entorno de Comunicación

Para utilizar una arquitectura basada en SOA es necesario un mecanismo de

comunicación entre los diferentes servicios proporcionados. Este medio de

comunicación en SOA es llamado Enterprise Service Bus (ESB).

Aplicación ASP

Servicio

1

Internet

Arquitectura SOA

Servicio

2

Servicio

3

Servicio

4

Aplicación PHP

Aplicación VB

Bus de Servicio

Repositorio de Servicios

Contrato

Interfaz Datos

SIABUC Sistemas Legados Sistema Externo

Consumidores de Servicio

Arquitectura

Interfaces de Servicio

Implementación del Servicio

Usuario

Page 90: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

83

El objetivo del ESB es el proveer interoperabilidad, conectividad,

transformación de datos y direccionamiento de los sistemas que se comunican a

través de servicios, esto es, un mecanismo de petición-respuesta de un servicio

desde un consumidor hacia un proveedor. El ESB debe proveer habilidades que

negocien con la seguridad, fiabilidad y administración de servicios, sin embargo, se

debe considerar un estándar como los servicios Web para ser un ESB, porque de

manera conceptual definen todo lo necesario para proveer la interoperabilidad entre

sistemas (Josuttis, 2007).

Una de las ventajas de utilizar los servicios en SOA es que estos se

encuentran basados en servicios Web con el formato XML, los servicios Web utilizan

de manera predeterminada el HTTP sobre el protocolo TCP, lo cual se puede

aprovechar en aquellos sistemas que utilicen algún firewall sin necesidad de cambiar

la reglas de filtrado que existan en la administración interna de red. Esto debido a

que la mayoría de las organizaciones protegen sus redes mediante la utilización de

estos sistemas para impedir ataques e intrusiones no deseadas cerrando casi todos

los puertos de comunicación excepto el puerto 80, que es el que utilizan los

navegadores de Internet, este mismo puerto es el que utilizan los servicios Web y

debido a esto no resultan bloqueados ni tampoco se necesita hacer una

configuración adicional para habilitar la comunicación entre ellos.

4.2.3 Motor de datos y estructura de la base de datos

El motor de base de datos utilizado para el desarrollo de este trabajo es PostgreSQL

en su versión 8.2. PostgreSQL es un Sistema Manejador de Bases de Datos

(DataBase Management System - DBMS) cliente - servidor de código abierto que

incorpora el modelo relacional y soporta lenguajes de consulta estándar SQL.

Funciona en plataformas UNIX, Linux y Windows NT/2000/2003/XP/Vista, además,

puede ser usado con la mayoría de los lenguajes de programación incluyendo C,

C++, Perl, Python, Java, Tcl, PHP y Visual Basic (Matthew y Stones, 2005).

Page 91: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

84

Dentro de las características más importantes de este robusto motor de base

de datos destacan su capacidad de almacenamiento, misma que se puede apreciar

en la tabla 3 (PostgreSQL Global Development Group, 2008a).

Tabla 3. Capacidad de almacenamiento de PostgreSQL

Límite Valor Tamaño máximo de la base de datos Sin límite Tamaño máximo de los índices por tabla Sin límite Cantidad de registros por tabla Sin límite Tamaño máximo de la tabla 32 TB Tamaño máximo de un registro 1.6 TB Tamaño máximo de un campo 1 GB Cantidad de columnas por tabla 250-1600

A continuación, se presenta un ejemplo de diagrama entidad-relación donde

se muestran las tablas necesarias para el apartado de reservación de un libro

registrado en SIABUC. Una reservación no se puede llevar a cabo sino existe el

número de adquisición del ejemplar (número que identifica cada material bibliográfico

dentro de la biblioteca) y el número de cuenta del alumno, una vez que la reservación

ha sido efectuada no se puede eliminar el usuario, puesto que tiene una reservación

a su cargo.

Solo se muestra el apartado correspondiente a la reservación debido a que el

prototipo implementado es relacionado a este tópico. Cabe señalar que el diseño del

modelo de datos queda fuera del alcance de la tesis puesto que el sistema SIABUC

ya existía y se tomó parte de su modelo de datos existente que tiene relación con los

servicios que se implementaron en ABCSIS.

Las relaciones que se muestran en la figura 20 corresponden a lo siguiente: un

ejemplar solo puede tener una reservación activa, por ejemplar se entiende cualquier

material registrado en SIABUC (libro, revista, tesis) existente en la biblioteca y cada

reservación es hecha por un alumno.

Page 92: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

85

Figura 20. Diagrama entidad-relación para la reservación de un ejemplar

4.2.4 Comunicación con la base de datos

En algunas aplicaciones es necesario contar con ciertos parámetros de configuración

para hacer flexible el programa y que cada persona lo personalice acorde a sus

necesidades, en ocasiones estos parámetros son colocados dentro del código o en

archivos de configuración.

Para el desarrollo de ABCSIS se utilizó el lenguaje de programación Visual

Basic provisto en el Integrated Development Environment (IDE) de Visual Studio

2008, dentro del conjunto de archivos creados para cada servicio se encuentra un

archivo de configuración en formato XML denominado web.config, este archivo

contiene valores de control para el servicio, dentro de esos valores destaca el

apartado con el cual se realiza la conexión a la base de datos, dicho apartado se

muestra en la figura 21. De esta manera, cuando el programador desarrolle un

cliente para consumir el servicio podrá manipular los parámetros de conexión a la

base de datos, esto debido a que cada vez que se realiza una conexión al servidor

de PostgreSQL es necesario hacerlo mediante una autentificación de usuario.

Page 93: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

86

Figura 21. Parámetros de conexión a la base de datos PostgreSQL

A continuación se describe cada uno de los elementos de esta cadena de conexión:

name:

Nombre de la conexión, este valor es constante y no se debe modificar, puesto que

es utilizado de manera interna por el servicio para hacer referencia al driver de

conexión de la base de datos.

connectrionString: Representa la cadena de conexión a utilizar para autentificarse con el servidor

PostgreSQL, esta cadena de conexión esta conformada por varios elementos, sin

embargo los más importantes son Server, Database, UserId y Password.

• Server Es utilizado para indicar el nombre o dirección IP del servidor que tiene

instalada la base de datos de PostgreSQL.

• Database Representa el nombre de la base de datos a conectar, en este caso es

siabuc9.

• UserId Representa el nombre de usuario para autentificarse ante el servidor de

PostgreSQL.

• Password Representa la clave para validar el inicio de sesión del usuario.

El servidor PostgreSQL cuenta con una librería específica para realizar la

conexión con .NET llamada Npgsql.dll, sin embargo, cuando esta librería fue liberada

<connectionStrings> <clear/> <add name="PostgreSQLProvider" connectionString="Server=localhost; Port=9000;Database=siabuc9;UserId=NombreUsuario; Password=ElPassword;Encoding=UNICODE;Sslmode=Prefer; Pooling=true;"/> </connectionStrings>

Page 94: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

87

no era totalmente compatible con las plataformas derivadas de Microsoft, es por eso

que, en el año 2003 el equipo de desarrollo de Npgsql adoptó un proyecto

denominado mono, con el objetivo de ofrecer una mejor compatibilidad y estabilidad

de dicha librería en las plataformas de los sistemas operativos Windows

(PostgreSQL Global Development Group, 2009b).

Mono, es un proyecto de libre distribución auspiciado por Novell para

desarrollar proyectos Open Source en UNIX. El objetivo del proyecto mono es

permitir a programadores UNIX construir aplicaciones multiplataformas en .NET,

adicionalmente, implementa varias tecnologías de Microsoft que han sido enviadas al

European Computer Manufacturers Association (ECMA) para su estandarización

(Novell, 2009).

Para realizar la conexión a la base de datos fue necesario la utilización de dos

librerías: Npgsql.dll y Mono.Security.dll, ambas incluidas dentro del proyecto

denominado mono.

Una vez definida la base de datos, los parámetros de conexión y las librerías

necesarias para establecer la conexión, es necesario describir la forma en la que se

utilizaron esos elementos en el servicio.

Debido a que la librería de Npgsql es independiente de Visual Basic, es

necesario agregar su referencia correspondiente al código y para utilizar los

componentes de dicha librería es necesario usar la sentencia Imports al inicio del

código, tal como se muestra en la figura 22.

Figura 22. Conexión al servidor de PostgreSQL

Una ventaja adicional que se obtiene al realizar la conexión de esta manera es

que no se necesita realizar la cadena de conexión cada vez que se hace un servicio,

debido a que fue definida previamente en el archivo de configuración web.config

mostrado en la figura 21.

Imports Npgsql Using PgCon As NpgsqlConnection = New NpgsqlConnection( _ System.Configuration.ConfigurationManager.ConnectionStrings ("PostgreSQLProvider").ConnectionString) ' Líneas de código End Using

Page 95: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

88

4.2.5 Descripción de módulos y componentes

Como ya se mencionó anteriormente, los servicios a desarrollar se encuentran

organizados en tres grupos: acervo, alumnos y retroalimentación, y cada servicio a

su vez contiene un conjunto de funcionalidades, las cuales son llamadas

operaciones, en la figura 23 se muestran los grupos de servicios de ABCSIS y a

continuación se describen cada uno de éstos con sus respectivas operaciones.

Figura 23. Servicios y operaciones de ABCSIS

Servicio Acervo Este servicio esta orientado a las acciones directas que se pueden realizar sobre

algún ejemplar (libro, cd, dvd, folleto, revista) y está conformado por las siguientes

operaciones: reservación de ejemplares, búsqueda de usuarios, búsqueda de fichas

y verificación de disponibilidad de un determinado material.

Servicio Acervo Servicio Alumnos

Servicio Retroalimentación

Res

erva

Eje

mpl

ar

Bus

car A

lum

no

Bus

car f

icha

B

iblio

gráf

ica

Dis

poni

bilid

ad d

e ej

empl

ares

Reg

istro

de

usu

ario

s

Ver

ifica

ción

de

adeu

dos

Ver

ifica

ción

de

mul

tas

Det

alle

pré

stam

os

pend

ient

es

Ren

ovac

ión

de

ejem

plar

es

Det

alle

s pr

ésta

mos

hi

stór

icos

List

ados

de

escu

elas

Reg

istro

de

inco

nfor

mid

ades

List

ado

de

inco

nfor

mid

ades

Res

pues

ta

inco

nfor

mid

ad

Sug

eren

cia

de

com

pras

Com

enta

rios

sobr

e tít

ulos

ABCSIS

Page 96: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

89

• Operación para reservar un ejemplar Actualmente, cuando el usuario necesita reservar algún ejemplar lo hace vía

telefónica o acude físicamente a la biblioteca para hacer la reservación, con este

operación podrá hacerlo desde cualquier computadora que tenga implementado

el servicio. La operación recibe tres parámetros: el número de cuenta del usuario,

nip (clave de acceso) y el número de adquisición del libro, retorna un mensaje

indicando si la reservación tuvo éxito o en caso contrario un mensaje de error.

Figura 24. Operación para hacer reservaciones

• Operación para buscar un alumno Antes de hacer la reservación de un libro es necesario autentificar al usuario, este

es el objetivo de esta operación, básicamente consiste en validar el registro del

alumno en la base de datos de usuarios de SIABUC. La interfaz de esta

operación recibe el número de cuenta del usuario y retorna verdadero si esta

registrado en la base de SIABUC ó falso en caso contrario.

Figura 25. Operación para buscar un alumno en la base de datos

• Operación para buscar una ficha bibliográfica Realiza la búsqueda de una ficha dentro de la base bibliográfica de SIABUC y

obtiene su información general: título, autor, editorial, ISBN, temas. Esta

operación es una de las más importantes, puesto que con ella se obtiene la

información general del material bibliográfico de una biblioteca, su interfaz recibe

cinco parámetros, los cuales se listan a continuación:

<OperationContract()> _ <FaultContract(GetType(ABCSISFault))> _ Function Reservar(ByVal NoCta As String, ByVal NiP As String, ByVal NoAdq As String) As String

<OperationContract()> _ <FaultContract(GetType(ABCSISFault))> _ Function BuscaAlumno(ByVal NoCta As String) As Boolean

Page 97: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

90

• TipoDeBusqueda. Este parámetro se utiliza para seleccionar uno de entre

cuatro tipos de búsquedas posibles 0-ISBN, 1-Título, 2-Autor, 3-

Clasificación, 4-No. de Adquisición.

• TerminoDeBusqueda. Es una cadena que indica el término a buscar dentro

de la base de datos.

• FichaNext. Este parámetro se utiliza para indicar el número de ficha

siguiente a visualizar, este parámetro se utiliza básicamente para control

interno y visualización de la información.

• FichaPrev. Es similar al anterior, e indica la ficha anterior a visualizar.

• NoPag. Representa el paginado de resultados.

La información que retorna esta operación se encuentra agrupada en un

arreglo, el cual esta conformado por los siguientes elementos: autor, clasificación,

estado del ejemplar (prestado, en mantenimiento), ISBN, número de adquisición y

título del material bibliográfico registrado en SIABUC.

Figura 26. Operación para buscar una ficha bibliográfica en la base de datos

• Operación para consultar la disponibilidad de ejemplares Informa acerca del estado actual de un ejemplar: prestado, reservado ó en

mantenimiento. La interfaz de esta operación de servicio recibe como parámetro

el número de adquisición de un libro y el valor que retorna al igual que la

operación anterior es un arreglo con la siguiente información: no. de adquisición,

identificador de biblioteca (valor numérico), no. de ejemplar, no. de volumen, no.

de tomo y el estado actual del ejemplar (prestado, disponible).

Figura 27. Operación para obtener la disponibilidad de un ejemplar

<OperationContract()> _ <FaultContract(GetType(ABCSISFault))> _ Function BuscarFicha(ByVal TipoDeBusqueda As Byte, ByVal TerminoDeBusqueda As String, ByVal FichaNext As Double, ByVal FichaPrev As Double, ByVal NoPag As Integer) As RegistroABCSISFicha()

<OperationContract()> _ <FaultContract(GetType(ABCSISFault))> _ Function Disponibilidad2(ByVal NoFicha As Long) As RegistroABCSISEjemplares()

Page 98: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

91

Servicio Alumnos Este grupo está orientado a las actividades directamente relacionadas con los

usuarios finales del sistema, los alumnos. Las operaciones que integran este servicio

son las siguientes: registro de los datos del usuario en SIABUC, verificación de

adeudo, verificación de multa, detalle de préstamos pendientes por entregar,

renovación de ejemplares, detalle de préstamos históricos y listado de escuelas.

• Operación para actualizar/registrar los datos del usuario en SIABUC El objetivo principal de esta operación de servicio es la de incorporar a la base de

datos de SIABUC los alumnos de nuevo ingreso de una determinada institución,

ya que anteriormente este proceso se realizaba manualmente ó manipulando

directamente la base de datos de SIABUC, lo cual es riesgoso sino se tiene el

cuidado adecuado. La interfaz de esta operación de servicio recibe los siguientes

parámetros:

• NumCuenta. Este parámetro se utiliza para grabar el número de cuenta ó

número de matricula del alumno.

• Nombre. Representa el nombre del alumno.

• Escuela. Parámetro de tipo entero que identifica a la escuela que

pertenece el alumno, para obtener este valor es necesario utilizar la

operación “ListarEscuelas”.

• Correo. Correo electrónico del alumno.

• Domicilio. Parámetro de tipo cadena para grabar el domicilio del alumno

• Colonia. Se utiliza para almacenar la colonia a la que pertenece el alumno.

• Ciudad. Parámetro de tipo cadena para almacenar la ciudad del alumno.

• CodPos. Representa el código postal.

• Telefono. Parámetro de tipo cadena para almacenar el telefono del alumno.

• NumGrupo. Este parámetro es de tipo entero y se utiliza para asociar al

alumno a un conjunto de políticas de prestamo que previamente se tienen

definidas en el sistema SIABUC.

• VigenciaIni. Inicio de vigencia del alumno, por lo regular esta vigencia se

otorga al inicio del ciclo escolar.

Page 99: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

92

• VigenciaFin. Fin de vigencia del alumno para el acceso a los servicios

bibliotecarios.

Figura 28. Operación para registrar un usuario en la base de datos

• Operación para verificar adeudos Cada fin de semestre en las distintas escuelas y facultades de la Universidad de

Colima se les solicita a los alumnos un comprobante, para obtenerlo, el alumno

debe acudir físicamente a la biblioteca a solicitarlo. En el comprobante se hace

constar que el alumno no tiene ningún tipo de adeudo en la biblioteca, el adeudo

se puede generar porque aún no han entregado algún libro, porque no ha saldado

alguna multa pendiente o simplemente porque esta bloqueado en el sistema

SIABUC por algún tipo de anomalía hecha en la biblioteca.

Con esta operación de servicio se evitará que el alumno acuda a la biblioteca

para obtenerlo, el servicio buscará dentro de una biblioteca en particular algún

tipo de adeudo y sólo si el usuario no adeuda nada le permitirá imprimir dicho

comprobante. La interfaz de este servicio recibe el número de cuenta del usuario

y retorna un valor numérico que corresponde al total de préstamos pendientes por

entregar sino adeuda nada entonces se le expedirá la constancia correspondiente

de no adeudo.

Figura 29. Operación para verificación de no adeudos

<OperationContract()> _ <FaultContract(GetType(ABCSISFault))> _ Function RegUsuario(ByVal NumCuenta As String, ByVal Nombre As String, ByVal Escuela As Integer, ByVal Correo As String, ByVal Domicilio As String, ByVal Colonia As String, ByVal Ciudad As String, ByVal CodPos As String, ByVal Telefono As String, ByVal NumGrupo As Integer, ByVal VigenciaIni As String, ByVal VigenciaFin As String) As String

<OperationContract()> _ Function VAdeudo(ByVal NoCta As String) As Integer

Page 100: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

93

• Operación para verificar multas Cuando el alumno entrega de forma tardía algún ejemplar, el sistema SIABUC

genera automáticamente una multa, la cual consiste en cobrar cierta cantidad

monetaria dependiendo de los días de entrega tardía y de las políticas

administrativas de cada biblioteca.

En ocasiones, el usuario acude a la biblioteca y por alguna razón no trae la

cantidad que se le esta solicitando, entonces la multa es generada pero esta

pendiente por saldar, estas multas pendientes por saldar son las que la operación

del servicio obtendrá y le presentará al usuario así como el monto de cada una de

las multas.

La interfaz de esta operación recibe como parámetro el número de cuenta del

usuario y retorna una estructura de datos con todas las multas que tuviera en ese

instante. La estructura que retorna esta integrada por los siguientes elementos:

fecha en la que se realizó la multa, monto de la multa y razón por la cual se

originó la multa.

Figura 30. Operación para mostrar las multas pendientes por saldar

• Operación para obtener el detalle de préstamos pendientes por entregar Esta operación consiste en informar al usuario acerca de los ejemplares que tiene

pendientes por entregar a la biblioteca. De esta manera, puede verificar la fecha

de entrega y evitar una multa.

La interfaz de esta operación de servicio recibe el número de cuenta del

usuario y retorna una estructura de datos con los siguientes elementos:

clasificación del libro, fecha de entrega, fecha de préstamo, número de

adquisición del ejemplar, cantidad de renovaciones, tipo de préstamo (en sala, a

domicilio, interbibliotecario) y el título del ejemplar.

Figura 31. Operación para obtener los préstamos pendientes

<OperationContract()> _ Function VMulta(ByVal NoCta As String) As RegistroABCSISMulta()

<OperationContract()> _ Function PPendientes(ByVal NoCta As String) As RegistroABCSISpPendientes()

Page 101: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

94

• Operación para renovar ejemplares En la actualidad este servicio se realiza de dos maneras: vía telefónica o el

usuario acude directamente a la biblioteca a realizar la renovación. Esta

operación consiste en dar una prorroga en el tiempo de entrega del ejemplar.

La interfaz de esta operación recibe como parámetro el número de cuenta del

usuario y el número de adquisición del ejemplar. Con la finalidad de que los

usuarios no abusen de este servicio se coloco un parámetro adicional llamado

RenovarUnaVez de tipo booleano, si el valor de este parámetro es verdadero

solamente se permitirá renovar en una sola ocasión a través de este medio, en

caso contrario, permitirá hacer todas las renovaciones que previamente se

definieron como políticas de préstamo en SIABUC, otra de las funcionalidades de

este parámetro es que el bibliotecario tenga mayor incidencia en la renovación, ya

que si observa que el libro en cuestión tiene demasiada demanda dar oportunidad

a otras personas de utilizarlo.

Figura 32. Operación para renovar ejemplares

• Operación para obtener los detalles de préstamos históricos Mediante esta operación los usuarios podrán obtener un concentrado con

información de los ejemplares que han solicitado en la biblioteca durante un

periodo de tiempo. Esta interfaz recibe tres parámetros: el número de cuenta del

usuario, la fecha inicial y fecha final que se desea consultar en el reporte. Retorna

una estructura de datos que contiene información general de los ejemplares que

el usuario solicitó.

Figura 33. Operación para obtener los préstamos de un usuario

<OperationContract()> _ <FaultContract(GetType(ABCSISFault))> _ Function Renovar(ByVal NoCta As String, ByVal ElNiP As String, ByVal NoAdq As String, ByVal RenovarUnaVez As Boolean) As String

<OperationContract()> _ Function PHistoricos(ByVal NoCta As String, ByVal FInicio As String, ByVal FFin As String) As RegistroABCSISpHistoricos()

Page 102: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

95

• Operación para obtener listado de escuelas Esta operación básicamente se utiliza de manera interna con otras operaciones.

Recibe como parámetro un número mediante el cual se identifican a cada una de

las bibliotecas capturadas en SIABUC. Retorna una estructura de datos con el

identificador y el nombre de la escuela.

Figura 34. Operación para obtener listado de escuelas

Servicio Retroalimentación Debido a que la Dirección General de Servicios Bibliotecarios de la Universidad de

Colima ha implantado un sistema de gestión de la calidad, se incorporaron algunos

rasgos para ayudar en este sentido. Este servicio está conformado por las siguientes

operaciones: registro de inconformidades, concentrado de inconformidades,

respuesta a una inconformidad, sugerencia de compra de bibliografía y comentarios

o recomendaciones sobre títulos (valoración, comentario, fecha)

• Operación para el registro de inconformidades Con esta operación se le brindará la oportunidad al usuario de emitir su libre

opinión acerca de algún tipo de servicio que se le proporcionó en la biblioteca,

actualmente este proceso se hace de manera escrita.

La interfaz de esta operación recibe el número de cuenta del usuario, su

nombre, un identificador que corresponde a la escuela que se registro en SIABUC

y la queja correspondiente. Retorna un mensaje el cual indica si la queja fue

guardada con éxito.

Figura 35. Operación para registrar una inconformidad

<OperationContract()> _ <FaultContract(GetType(ABCSISFault))> _ Function ListarEscuelas(ByVal IdBiblio As Integer) As RegistroABCSISEscuela()

<OperationContract()> _ <FaultContract(GetType(ABCSISFault))> _ Function RpteQueja(ByVal NoCta As String, ByVal Nombre As String, ByVal IdEscuela As Integer, ByVal LaQueja As String) As String

Page 103: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

96

• Operación para obtener un concentrado de inconformidades Una vez que los usuarios han externado alguna inconformidad es necesario saber

cuales son para su posterior seguimiento o contestación, esta operación muestra

un concentrado con todas las quejas que aun no se han dado respuesta.

Esta interfaz no recibe ningún parámetro, sin embargo, retorna una estructura

de datos con las quejas que aun no han sido respondidas para que se les de el

seguimiento adecuado.

Figura 36. Operación para listar las quejas pendientes por atender

• Operación para responder una inconformidad Una vez que la queja fue emitida, es necesario darle seguimiento, es decir,

regresar una respuesta con el estado de la misma, si la queja fue leída, atendida

ó se llevó a cabo la disposición solicitada, esta será la función a cubrir por parte

de esta operación.

La interfaz de esta operación recibe como parámetro un identificador de la

queja a responder, la respuesta a la queja y un valor booleano que indica si la

queja es aplicable al sistema de calidad. Esta operación esta enlazada

directamente con la anterior, ya que la operación ‘concentrado de

inconformidades’ retorna un identificador que es necesario en la interfaz de esta

operación.

Figura 37. Operación para responder una inconformidad

• Operación de sugerencia de compra bibliográfica En algunas ocasiones los usuarios necesitan libros que no se encuentran en la

biblioteca por alguna razón, mediante esta operación el usuario podrá sugerir

<OperationContract()> _ <FaultContract(GetType(ABCSISFault))> _ Function ListarQuejas() As RegistroABCSISQueja()

<OperationContract()> _ <FaultContract(GetType(ABCSISFault))> _ Function RptaQueja(ByVal IdQueja As Long, ByVal Respuesta As String, ByVal Aplica As Boolean) As String

Page 104: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

97

acerca de las nuevas adquisiciones de libros. Esta interfaz recibe como

parámetros los datos generales del usuario, los datos generales del ejemplar que

esta sugiriendo y una razón en la cual el usuario explica el motivo de la compra.

Retorna un mensaje indicando si la sugerencia de compra fue guardada o no.

Figura 38. Operación para hacer sugerencias de compras bibliográficas

• Operación para emitir comentarios o recomendaciones sobre títulos Esta operación consiste en emitir una breve reseña acerca del contenido de algún

libro consultado por el usuario, es decir, si el usuario considera que el libro que

consultó tiene un buen ó mal contenido y la razón por la cual opina de esa

manera, dichas reseñas se encontrarán a la vista de cualquier otro usuario para

futuras referencias.

Esta interfaz recibe como parámetros los datos generales del usuario, los

datos generales del ejemplar, una calificación del 0 al 10 la cual representara la

calidad del contenido del libro y la razón por la cual el usuario otorgó esa

calificación.

Figura 39. Operación para emitir comentarios sobre títulos consultados

Hasta aquí se abordaron los aspectos de diseño de ABCSIS, así como los

servicios que integran ésta arquitectura, sin embargo, solo se menciono lo

relacionado a los parámetros que reciben, ahora, es necesario entrar en detalle

acerca de la manera con la que fueron elaborados haciendo uso del modelo de

<OperationContract()> _ <FaultContract(GetType(ABCSISFault))> _ Function SugCompra(ByVal NoCta As String, ByVal Usuario As String, ByVal IdEscuela As Integer, ByVal ElTitulo As String, ByVal ElAutor As String, ByVal LaEditorial As String, ByVal ElISBN As String, ByVal LaSugerencia As String) As String

<OperationContract()> _ <FaultContract(GetType(ABCSISFault))> _ Function RecTitulos(ByVal NoCta As String, ByVal Usuario As String, ByVal IdEscuela As Integer, ByVal NumAdqui As String, ByVal ElTitulo As String, ByVal ElAutor As String, ByVal LaClasificacion As String, ByVal LaRecomendacion As String, ByVal Calificacion As Integer) As String

Page 105: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

98

programación Windows Communication Foundation, estos detalles son explicados a

detalle en la siguiente sección.

Page 106: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

99

5. Desarrollo de ABCSIS

Esta sección tiene como finalidad dar a conocer el procedimiento con el que se

crearon los servicios que forman parte de la arquitectura ABCSIS. Se encuentra

organizado por tres apartados, creación del servicio, hosting del servicio e

implementación del prototipo.

En el primer apartado, se aborda la manera mediante la cual se crearon los

servicios en el lenguaje de programación Visual Basic 2008 en combinación con la

tecnología Windows Communication Foundation (WCF), se utilizó este lenguaje de

programación debido a la familiaridad y conocimiento previo que ya se tenia con el

mismo, en el segundo apartado, se detalla la manera con la que se hospedó el

servicio en el servidor Web Internet Information Server, mientras que en el tercer

apartado, se describe lo relacionado a la creación del consumidor, en este caso, un

prototipo desarrollado en lenguaje de programación PHP.

Antes de dar a conocer la forma mediante la cual se crearon los servicios, es

necesario mencionar la tecnología con la cual fueron creados, debido a esto es

indispensable hablar acerca de WCF el cual forma parte del .NET Framework.

WCF conocido en sus inicios como Indigo, es un conjunto de tecnologías

orientado a servicios basado en el .NET Framework 3.0 cuyo objetivo principal es el

de simplificar el desarrollo de aplicaciones distribuidas seguras, confiables e

interoperables (Peiris y Mulder, 2007). Algunas de las ventajas que se obtienen al

utilizar este modelo de programación son las siguientes:

• Amplio soporte para los protocolos de los servicios Web (WS-I)

• Uso implícito de los principios de desarrollo orientado a servicios

• Una única API para el desarrollo de sistemas

WCF maneja la infraestructura de comunicación del sistema operativo

Windows Vista y ha sido extendido a Windows XP y Windows 2003 a través del .NET

Framework 3.0.

Según Microsoft Corporation (2009b), el .NET Framework (conocido

anteriormente como WinFX) es el modelo de programación de código administrado

Page 107: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

100

de Microsoft para la creación de clientes de Windows, servidores y dispositivos

móviles incrustados.

WCF provee la infraestructura de comunicación que permite crear diversas

aplicaciones a través de un modelo simplificado basado en servicios. Microsoft dio a

conocer esta tecnología en su evento denominado Microsoft Product Developers

Conference en los Ángeles California en el año de 2003, desde entonces, esta

tecnología ha venido evolucionando y en la actualidad se encuentra disponible en el

Framework 3.5 (Peiris y Mulder, 2007).

Los objetivos principales de WCF se basan principalmente en tres aspectos:

• Unificación de tecnologías existentes

• Interoperabilidad a través de plataformas

• Desarrollo orientado a servicios

Figura 40. Interoperabilidad entre varios sistemas operativos

La interoperabilidad ha sido uno de los mas grandes problemas por resolver

para los proveedores de software, es por eso que empresas líderes en este ámbito

como Microsoft, IBM, BEA y Sun formaron la organización Web Service

Interoperability (WS-I), la cual consiste en un conjunto de especificaciones que

Servicio WCF

Mensaje SOAP

Mensaje SOAP

Sistemas Legados

Linux Windows Solaris

Page 108: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

101

permite a las aplicaciones comunicarse con otras en diferentes plataformas, en este

sentido WCF soporta todo el conjunto de protocolos WS-I.

El método de comunicación en WCF se encuentra basado en mensajes y el

protocolo de mensajes nativo para tal fin es SOAP, el cual, como ya se comentó en

la sección tres, es un estándar que permite la comunicación con diferentes

tecnologías y plataformas de manera interoperable. En la figura 40 se puede apreciar

la interoperabilidad que se hace mediante SOAP, de esta manera haciendo uso de

WCF diversos sistemas heterogéneos pueden coexistir.

Para utilizar todo el conjunto de WCF es necesario cubrir algunos

requerimientos de software, los cuales se detallan a continuación: .NET Framework

3.0 o superior, sistema operativo Windows (XP sp2 o superior, 2003, 2008 ó Vista) y

el lenguaje de programación Visual Basic 2005 o superior.

Cabe señalar que para el desarrollo de los servicios se utilizaron las siguientes

herramientas de software:

• Visual Basic 2008

• .NET Framework 3.5

• Windows XP Professional Service Pack 3

• Servidor Web Internet Information Server (IIS) 5.1

Una vez mencionada la tecnología WCF también es necesario dar a conocer

los elementos necesarios para consumir un servicio, debido a que en los apartados

siguientes se mencionaran.

En la figura 41 se muestran estos elementos, dentro de los cuales, el elemento

primordial es el endpoint, adicionalmente existen elementos complementarios como

Behavior, Factory, Channel y Listener. Behavior se utiliza para hacer conversión de

mensajes para que el .NET los pueda interpretar, Factory permite la comunicación a

través de un canal de comunicación específico, Channel representa la forma

mediante la cual los protocolos son implementados y son los responsables de

transmitir un mensaje desde el cliente hasta el servicio y viceversa, finalmente

Listener es el encargado de aceptar los mensajes provenientes de los canales (Peiris

y Mulder, 2007, p. 54).

Page 109: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

102

El endpoint es importante porque representa la puerta de entrada al servicio,

cada servicio puede tener varios endpoint, los cuales siempre se encuentran a la

espera de mensajes para el intercambio de información. Cada endpoint a su vez esta

compuesto por tres elementos: Address, Binding y Contract; los cuales son

conocidos con el prefijo “ABC”.

Figura 41. Modelo de programación de WCF

El address se utiliza para ubicar o conocer la dirección del servicio, y permite

la comunicación mediante el intercambio de mensajes. El address en WCF son

direcciones que definen el protocolo de comunicación utilizado, la computadora

donde esta ejecutándose el servicio y la ruta del mismo. En la tabla 4 se muestran

las especificaciones para el elemento address. Tabla 4. Especificaciones de Address

Sección Address Descripción Transporte Define el protocolo o medio de transporte PC Especifica el nombre de dominio completo de la

maquina Puerto Es un apartado opcional y es especificado como

:numero_puerto Ruta Es la ruta específica del servicio. Se puede definir

nombres de rutas como directorios separados por una diagonal. Ejemplo: /Biblio/ReservaLibro es la ruta de la siguiente dirección: http://localhost/Biblio/ReservaLibro

Page 110: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

103

De esta manera, el formato de una dirección de servicio queda estructurado

de la siguiente forma:

transporte://<pc>[:numero_puerto]/ruta1/ruta2

La dirección anterior es similar al URL de una página Web, el transporte puede

ser cualquier transporte soportado como HTTP, TCP, Microsoft Meesage Queuing

(MSMQ) ó Named Pipes, pc es el nombre del servidor donde esta hospedado el

servicio, numero_puerto es el puerto donde el servicio esta a la escucha de

peticiones y finalmente ruta se utiliza principalmente para diferenciar los servicios

hospedados en la misma máquina. Cabe señalar que los servicios correspondientes

a ABCSIS fueron hospedados utilizando el servidor IIS de Windows XP Professional,

de tal manera que el address de cada servicio quedo de la siguiente manera:

http://dominio/grupo_servicio/servicio.svc

Donde:

dominio representa la ruta de acceso a la computadora a través de la red

grupo_servicio representa un directorio virtual dentro del servidor IIS

servicio.svc es el archivo que contiene información del servicio

El binding por su parte describe la forma en la que se establecerá la

comunicación entre el cliente y el servicio. WCF provee un conjunto de bindings que

se adaptan a las necesidades de cada aplicación, los cuales se muestran en la tabla

5 (Microsoft Corporation, 2009a). Sin embargo, si alguno de estos bindings no

satisface nuestras necesidades, se puede crear uno personalizado identificándolo

con el atributo CustomBinding.

Los binding mostrados en la tabla 5 que comienzan con el prefijo Net son

exclusivos de la plataforma Windows, estos binding son utilizados en aquellas

aplicaciones donde la interoperabilidad no es requerimiento importante. Algunos

autores como Kim y Han (2006), y personas dedicadas al desarrollo de software

mencionan que los servicios Web no son del todo eficientes debido al tiempo de

procesamiento causado por la utilización de XML, sin embargo, este problema ha

quedado resuelto con la utilización de estos bindings, cuya función es la de enviar y

recibir información en forma binaria, con esto, se aumenta considerablemente el

Page 111: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

104

desempeño de los servicios Web, la desventaja de utilizar este tipo de binding es que

son propietarios de la plataforma Windows.

Tabla 5. Bindings y sus características principales

Finalmente, el contract es un acuerdo entre dos o más partes que especifican

los mensajes que serán intercambiados, así como los términos y las condiciones de

esos mensajes.

Un contract es una declaración que expone el comportamiento (contrato de

servicio), datos persistentes (contrato de datos) o la estructura del mensaje (contrato

de mensaje) (Peiris y Mulder, 2007).

Enlace Interoperabilidad Modo de Seguridad (valor predeterminado)

Sesión (Predeterminado)

Transacciones Dúplex

BasicHttpBinding Basic Profile 1.1 (Ninguno), transporte, mensaje, mixto

Ninguno, (ninguno)

(Ninguno) n/a

WSHttpBinding WS Ninguno, transporte, (mensaje), mixto

(Ninguno), transporte, sesión confiable

(Ninguno), Sí

n/a

WS2007Http Binding

WS-Security, WS-Trust, WS-SecureConversation, WS-SecurityPolicy

Ninguno, transporte, (mensaje), mixto

(Ninguno), transporte, sesión confiable

(Ninguno), Sí

n/a

WSDualHttp Binding

WS Ninguno, (mensaje)

(Sesión confiable) (Ninguno), Sí

WSFederationHttp Binding

WS-Federation Ninguno, (mensaje), mixto

(Ninguno), sesión confiable

(Ninguno), Sí

No

WS2007Federation HttpBinding

WS-Federation Ninguno, (mensaje), mixto

(Ninguno), sesión confiable

(Ninguno), Sí

No

NetTcpBinding .NET Ninguno, (transporte), mensaje

Sesión confiable, (transporte)

(Ninguno), Sí

NetNamedPipe Binding

.NET Ninguno, (Transporte)

Ninguno, (transporte)

(Ninguno), Sí

NetMsmqBinding .NET Ninguno, mensaje, (transporte), ambos

(Ninguno) (Ninguno), Sí

No

NetPeerTcpBinding Del mismo nivel Ninguno, mensaje, (transporte), mixto

(Ninguno) (Ninguno) Sí

MsmqIntegration Binding

MSMQ Ninguno, (transporte)

(Ninguno) (Ninguno), Sí

n/a

Page 112: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

105

El contrato de servicio es el más utilizado y es el encargado de exponer los

métodos del servicio, también es conocido con el nombre de interfaz de servicio ó

comportamiento expuesto del servicio. Este tipo de contrato en .NET es representado

mediante clases con el atributo <ServiceContract()>, esta y otras clases están

contenidas dentro de un namespace llamado System.ServiceModel, el cual, es

necesario invocar en Visual Basic para utilizar las funcionalidades de WCF. Un

namespace se utiliza como un sistema de organización y permiten clasificar y

presentar elementos de programación que se exponen a otros programas y

aplicaciones (Microsoft Corporation, 2009c).

Una vez abordada la tecnología WCF es conveniente describir la manera

mediante la cual se desarrollaron los servicios de ABCSIS, lo cual, se describe en el

siguiente apartado.

Page 113: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

106

5.1 Creación del servicio

Para crear un servicio haciendo uso de WCF se debe tomar en cuenta los siguientes

elementos: método, contrato de servicio, operación de servicio, contrato de datos,

manejo de errores, la ubicación donde el servicio estará hospedado, el binding y un

archivo de configuración del servicio.

El método son todas aquellas funcionalidades que deseamos estén

disponibles en el servicio para que los consumidores las utilicen, cada servicio puede

estar compuesto por uno ó varios métodos.

El contrato de servicio es el encargado de exponer los métodos que integran

el servicio para que un cliente los pueda consumir, sin embargo, para poder exponer

estos métodos es necesario indicarlo mediante el atributo operación de servicio.

El contrato de datos es necesario para retornar valores cuando se invocan los

servicios (haciendo uso de mensajes), esto porque en WCF no se pueden retornar

tipos de datos puesto que la comunicación esta basada en mensajes XML a través

del protocolo SOAP.

Los errores por su parte son generados basados en el estándar SOAP, mas

adelante en esta misma sección se mencionan los detalles para crear los

manejadores de errores.

Finalmente, cada servicio contiene un archivo de configuración basado en

XML llamado web.config, este archivo contiene entre otras cosas, los parámetros de

conexión a la base de datos de SIABUC.

Dado que la metodología para crear todos los servicios en ABCSIS fue la

misma, este apartado se enfocará solamente en la descripción de un servicio en

particular, el servicio Acervo, el cual contiene el método correspondiente a la

reservación de libros.

El primer elemento a tener en cuenta en el desarrollo de servicio es el binding,

con éste se define la comunicación entre el cliente y el servicio. Para el caso de

ABCSIS fue utilizado el BasicHttpBinding, ya que como se observó en la tabla 5, es

el único que ofrece compatibilidad con la especificación de los servicios Web WS-I

Basic Profile, y debido a esto durante la creación del consumidor resultó ser el más

interoperable entre los lenguajes de programación Visual Basic 2008 y PHP. La

Page 114: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

107

definición del binding se hace en el archivo web.config, en la figura 42 se muestra un

extracto de éste archivo con el binding de ABCSIS, por su parte, el elemento address

no se definió puesto que los servicios se realizaron de manera local.

Figura 42. Binding de ABCSIS

Definidas las opciones de configuración ahora se comenzará a describir lo

correspondiente a la creación del servicio. Cada servicio esta definido por un

contrato, el cual se define mediante el atributo <ServiceContract()>, mientras que las

operaciones de servicio son declaradas con el atributo <OperationContract()>, estos

dos atributos forman parte del namespace System.ServiceModel.

En la figura 43 se muestra un extracto de código del servicio Acervo, en dicha

figura se puede apreciar la utilización de los atributos <ServiceContract()> y

<OperationContract()>. Este servicio contiene varias operaciones incorporadas, tal y

como se describió en la sección 4.2.5. También se puede apreciar la definición de la

interfaz del servicio y los métodos que expone mediante la función Reservar.

Figura 43. Servicio Acervo

Como se puede observar en la figura anterior, la interfaz de servicio esta

marcada con el atributo <ServiceContract()> y tiene una operación llamada Reservar,

la cual, tiene a su vez el atributo <OperationContract()>, si un método no contiene

<ServiceContract()> _ Public Interface IAcervo <OperationContract()> _ Function Reservar(ByVal NoCta As String, ByVal NoAdq As String) As String End Interface

<service behaviorConfiguration="ServicioAcervo.AcervoBehavior" name="ServicioAcervo.Acervo"> <endpoint address="" binding="basicHttpBinding" contract="ServicioAcervo.IAcervo"> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service>

Page 115: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

108

este atributo no podrá ser expuesto y por lo tanto no podrá ser utilizado por un

consumidor.

La operación Reservar regresa una cadena indicando si se llevo a cabo o no

una reservación exitosa, sin embargo, en algunas ocasiones es necesario regresar

un conjunto de registros almacenados en la base de datos, para estos casos es

necesario definir un contrato de datos.

Los contratos de datos hacen la serialización entre mensajes SOAP y objetos

.NET. Un contrato de datos es declarado con el atributo <DataContract()>, esta

compuesto por uno o varios elementos, los cuales son llamados miembros de datos,

los cuales son definidos con el atributo <DataMember()>, si un contrato de datos

contiene un miembro de dato que no esta marcado con dicho atributo no será

serializado por el runtime de WCF.

En la figura 44 se puede apreciar la creación de un contrato de datos que

corresponde a la operación Disponibilidad2, el resultado de invocar esta operación es

un valor del tipo RegistroABCSISEjemplares, ésta, es una clase que esta compuesta

por seis miembros de datos identificados con el atributo <DataMember()>.

Figura 44. Definición del contrato de datos

<ServiceContract()> _ Public Interface IAcervo <OperationContract()> _ Function Disponibilidad2(ByVal NoFicha As Long) As RegistroABCSISEjemplares() End Interface <DataContract()> _ Public Class RegistroABCSISEjemplares <DataMember()> _ Public NumAdqui As String <DataMember()> _ Public IdBiblio As Long <DataMember()> _ Public Ejemplar As Byte <DataMember()> _ Public Volumen As Byte <DataMember()> _ Public Tomo As Byte <DataMember()> _ Public Estado As String End Class

Page 116: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

109

Hasta este momento se ha cubierto la parte correspondiente a la creación del

servicio con su respectiva interfaz y contratos, sin embargo, en ocasiones ocurren

errores durante la invocación del mismo. Para ello, el protocolo SOAP tiene una

forma específica de retornar códigos de error formateados mediante el atributo Fault,

el cual, debe especificar al menos dos valores; una descripción del error generado y

un código de error representado mediante un número.

Figura 45. Generación del contrato de datos para el manejo de excepciones

WCF por su parte también provee esta característica incorporada en la

creación de los servicios mediante el atributo <FaultContract()>. Para hacer uso de

esta funcionalidad es necesario definir un contrato de datos similar al de la figura 45,

solamente que aquí existe una pequeña diferencia al momento de crear los

miembros de datos, la diferencia consiste en agregar algunas propiedades para

especificar tanto la descripción del error como el número de error generado, cabe

señalar que con la utilización del modelo de programación WCF, el programador solo

se preocupa por la definición del servicio y su funcionalidad, la generación de

<DataContract()> _ Public Class ABCSISFault Private r_operacion As String Private r_tipoproblema As String <DataMember()> _ Public Property Operacion() As String Get Return r_operacion End Get Set(ByVal value As String) r_operacion = value End Set End Property <DataMember()> _ Public Property TipoProblema() As String Get Return r_tipoproblema End Get Set(ByVal value As String) r_tipoproblema = value End Set End Property End Class

Page 117: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

110

mensajes SOAP lo hace de manera transparente el Common Language Runtime

(CLR) provisto en el .NET Framework, de esta manera se agiliza bastante el proceso

de creación de los servicios.

La manera con la que se atrapan los errores es muy similar a otros lenguajes

de programación mediante la instrucción try-catch, dicha instrucción es mostrada en

la figura 46.

Figura 46. Invocación de una excepción

Si ocurre un error, esta instrucción devuelve un valor del tipo ABCSISFault y a

su vez, regresa una descripción del código de error mediante la variable DescError,

así como el número de error correspondiente mediante la variable NumError, todo

esto formateado en mensajes XML para utilizarse con el protocolo SOAP.

Finalmente, la definición completa del servicio con sus respectiva interfaz,

<OperationContract()> y <FaultContract()> quedaría de la forma mostrada en la

figura 47.

Figura 47. Definición del servicio

Una vez creado el servicio es momento de compilarlo, al momento de hacer

esto, Visual Basic genera varios archivos, sin embargo, solo nos interesan algunos

Public Function Reservar(ByVal NoCta As String, ByVal NoAdq As String) As String Implements IAcervo.Reservar

Try 'Conjunto de instruccciones ' …

' … Catch ex As Exception

Dim ErrorFault As New ABCSISFault Throw New FaultException(Of ABCSISFault)(ErrorFault, _ New FaultReason(DescError), _ New FaultCode(NumError)

End Function

<ServiceContract()> _ Public Interface IAcervo <OperationContract()> _ <FaultContract(GetType(ABCSISFault))> _ Function Reservar(ByVal NoCta As String, ByVal NiP As String, ByVal NoAdq As String) As String

Page 118: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

111

de estos; archivo de configuración web.config, archivo con extensión .svc

(acervo.svc) y una carpeta llamada bin.

El web.config como ya se mencionó es un archivo XML con parámetros

configurables para el servicio, el archivo acervo.svc contiene una directiva de

procesamiento que es ejecutada por .NET al momento de su invocación, y

finalmente, la carpeta bin esta compuesta por librerías necesarias para el

funcionamiento del servicio. Estos archivos se describirán con mayor detalle en la

sección 5.2.

De esta manera el servicio, su interfaz, address, binding y contract (ABC),

fueron implementados mediante WCF para cubrir los requisitos de una arquitectura

orientada a servicios mostrados en las figuras 16 y 19 del presente trabajo.

Hasta aquí se abordo lo correspondiente a la creación del servicio, sin

embargo, para que un cliente lo pueda utilizar es necesario hospedarlo en un

servidor, este proceso es descrito a continuación en la siguiente sección.

Page 119: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

112

5.2 Hosting del servicio

Una vez creado el servicio es necesario publicarlo para que pueda ser consumido

por algún cliente, existen dos formas de publicar un servicio, la primera es a través

de un servidor Web y la segunda es a través de un servicio de Windows. Para el

caso de ABCSIS los servicios creados fueron hospedados en el servidor Web IIS de

Windows XP y fue necesario instalar el Service Pack 3 y el .NET Framework 3.5,

este último al momento de instalarse crea una cuenta de usuario llamada ASPNET la

cual gestiona la invocación relacionada a WCF.

Figura 48. Cuenta de usuario ASPNET

Para hospedar correctamente un servicio es necesario instalar primero el

servidor Web IIS y posteriormente el .NET Framework, en el caso de una variación

en el orden, puede presentarse un problema de acceso a la metabase de IIS con la

cuenta de usuario ASPNET. La metabase es una estructura que almacena

información de configuración del servidor IIS.

Después de tener instalado el IIS y el .Net Framework se procede a crear un

directorio virtual en el servidor, para este trabajo se creó un directorio llamado

ServicioAcervo. En la figura 49 se muestra la creación del directorio virtual, mientras

que en la figura 50 se presenta el directorio virtual creado y los archivos necesarios

del servicio Acervo.

Page 120: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

113

Figura 49. Creación de un directorio virtual en IIS

Figura 50. Directorio virtual y archivos del servicio Acervo

Dentro del directorio virtual ServicioAcervo se colocaron los archivos

necesarios para hospedar el servicio en el servidor Web, los cuales se listan a

continuación:

• web.config – Archivo de configuración en XML

• acervo.svc – Contiene la definición de implementación del servicio

Page 121: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

114

• carpeta bin – Esta carpeta contiene archivos y librerías necesarias para

implementar el servicio, dentro de las librerías destacan:

ServicioAcervo.dll, Npgsql.dll y Mono.Security.dll

Una vez que el servidor y el servicio están listos para ser utilizados es

necesario hacer una prueba, la cual consiste en invocar el servicio mediante su

dirección Web correspondiente, siguiendo el ejemplo, el servicio acervo esta

hospedado en la carpeta ServicioAcervo, de tal manera que la URL para acceder a

su ubicación quedaría: http://localhost/servicioacervo/acervo.svc, en la figura 51 se

muestra su invocación.

Figura 51. Servicio Acervo hospedado en IIS

De esta manera se puede verificar el funcionamiento correcto del servicio, sin

embargo, es necesario dar conocer toda la información que contiene.

Como ya se comentó anteriormente ABCSIS se encuentra orientado a

servicios Web, un elemento importante de los servicio Web es el WSDL el cual se

encarga de describir la forma mediante la que puede ser consumido dicho servicio,

ABCSIS también cuenta con un WSDL el cual es generado de manera automática

por el CLR de .NET Framework. Para tener acceso al WSDL del servicio Acervo

Page 122: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

115

bastará con presionar el enlace mostrado en la parte superior de la figura 51 y

obtendremos algo similar a lo que se muestra en la figura 52.

Figura 52. WSDL del servicio Acervo

El WSDL es necesario para el programador, ya que de esta manera conocerá

todas las operaciones del servicio así como la ubicación del mismo, para finalmente

desarrollar un cliente que pueda consumirlo.

En el siguiente apartado se describe a detalle la forma mediante la cual se

creo un cliente en PHP para consumir el servicio Acervo.

Page 123: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

116

5.3 Implementación del prototipo

Una vez que el servicio ha sido programado y publicado entonces se puede crear un

cliente para consumirlo. Una de las ventajas de SOA es la interoperabilidad que

ofrece, se pueden desarrollar aplicaciones por ejemplo en Visual Basic ó ASP

utilizando el .NET Framework, mediante PHP haciendo uso de una extensión

exclusiva para SOAP, ó Java a través de un proyecto denominado Web Services

Interoperability Techonologies (WSIT) (Sun Microsystems, 2007).

Este apartado corresponde a la creación de un cliente Web que se

interconecte con SIABUC con la finalidad de hacer reservaciones de material

bibliográfico, la aplicación fue desarrollada en el lenguaje de programación PHP

versión 5.2.6. La aplicación Web consiste en hacer una búsqueda para localizar un

ejemplar mediante cinco apartados posibles: ISBN, título, autor, clasificación y no. de

adquisición, una vez que se localiza el ejemplar se procede a reservarlo, para esto,

es necesario que el usuario proporcione dos datos para autentificarlo ante el sistema:

su numero de cuenta y una clave de acceso (nip) para hacer la reservación, en la

figura 53 se muestra un diagrama de flujo con el funcionamiento del prototipo.

Figura 53. Diagrama de flujo para la reservación

Ini cio

NO

SI

Reserva Exitosa

SI

NO

NO

SI

NO

SI

Hacer búsqueda

Hacer Reserva

Mostrar registros

Validar Usuario

Mostrar error

1

Nueva Búsqueda

Encontró Registro

1

Fin

Fin

SI

NO

Nueva Búsqueda

1

Fin

Page 124: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

117

La razón por la cual se eligió el lenguaje de programación PHP es para

demostrar una de las principales funcionalidades que existe en ABCSIS, la

interoperabilidad.

PHP es un lenguaje de programación basado en script orientado al desarrollo

Web y que se puede embeber dentro de código HTML. La forma mediante la cual se

configura este lenguaje es a través de un archivo de texto plano llamado php.ini, el

cual, controla varias funcionalidades y extensiones de este lenguaje.

Una de las extensiones requeridas para la comunicación entre el proveedor y

el consumidor fue la relacionada con el protocolo SOAP, para hacer uso de esta

funcionalidad es necesario habilitar la librería php_soap.dll en el archivo php.ini, en la

figura 54 se muestra un extracto del archivo con la configuración utilizada.

Figura 54. Archivo de configuración de PHP

Para verificar que dicha extensión fue habilitada correctamente se realizó un

pequeño programa en PHP haciendo uso de la instrucción phpinfo, la cual nos

muestra la configuración actual, en la figura 55 se muestra una sección de ésta

configuración con la extensión SOAP instalada.

Figura 55. Configuración correspondiente para el soporte de SOAP en PHP

Page 125: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

118

Antes de iniciar con la programación es necesario conocer la ubicación donde

esta hospedado el servicio (el address) así como también las operaciones que son

necesarias en nuestra aplicación, dichas operaciones son mostradas en la tabla 6 y

fueron extraídas del WSDL mostrado en la figura 52. Tabla 6. Operaciones de servicio utilizadas en el prototipo

Operación Parámetro/Entrada Parámetro/Salida BuscarFicha TipoBusqueda | Entero

TerminoDeBusqueda | Cadena FichaNext | Entero Largo FichaPrev | Entero Largo NoPag | Entero

Arreglo

BuscaAlumno NoCta | Cadena Verdadero/Falso Reservar NoCta | Cadena

Nip | Cadena NoAdq | Cadena

Cadena

Disponibilidad2 NoFicha | Entero Largo Arreglo

Definido lo anterior, es momento de crear el cliente haciendo uso de la librería

php_soap, la cual nos provee soporte para crear clientes SOAP en PHP,

específicamente a través de la instrucción SoapClient, dentro de los parámetros que

recibe se encuentra la dirección del WSDL del servicio, para nuestro ejemplo se creó

un constructor llamado $cliente con la sintaxis mostrada en la figura 56.

Figura 56. Constructor SoapClient para hacer referencia al servicio Acervo

A través del constructor $cliente podemos acceder a todas las operaciones del

servicio mencionadas en la tabla 6, sin embargo, cada operación requiere de algunos

parámetros para su funcionamiento.

La operación BuscarFicha recibe cinco parámetros dentro de los cuales

destacan los dos primeros TipoDeBusqueda y TerminoDeBusqueda. El primer

parámetro es un valor entero para indicar el tipo de búsqueda donde: 0 representa al

ISBN, 1 al título, 2 al autor, 3 a la clasificación y 4 al no. de adquisición, mientras que

el segundo parámetro es un valor de tipo cadena que indica el término a buscar.

Para mayor información acerca de los parámetros restantes favor de consultar la

sección 4.2.5.

$cliente = new SoapClient("http://localhost/ServicioAcervo/Acervo.svc?wsdl ");

Page 126: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

119

Para acceder a estos parámetros es necesario utilizar el operador “→”, el cual

hace referencia a una variable o un método, de tal manera que el código quedaría de

la manera mostrada en la figura 57.

Figura 57. Invocación de la operación BuscarFicha

En la variable $busqueda se almacenan los parámetros de entrada de la

operación mediante la instrucción $_POST, la cual, es necesaria para extraer el valor

pasado a través de la pagina Web mostrada en la figura 58.

Figura 58. Interfaz para consulta y reservación de libros

Por su parte la instrucción utf8_decode es necesaria para codificar el texto a

UTF8, posteriormente se invoca a la operación BuscarFicha enviándole la variable

$busqueda, después se obtiene la respuesta en BuscarFichaResult, cabe mencionar

que para poder acceder al resultado de alguna operación se debe agregar el prefijo

<?php $cliente = new SoapClient("http://localhost/ServicioAcervo/Acervo.svc?wsdl "); $busqueda→TipoDeBusqueda = $_POST['opciones']; $busqueda→TerminoDeBusqueda = utf8_encode($_POST['txtbuscar']); $resp = $cliente→BuscarFicha($busqueda); $resp = $resp→BuscarFichaResult; settype($resp, "array"); ?>

Page 127: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

120

Result al final del nombre de la operación, independientemente del nombre que

contengan, es decir, para invocar a la operación de búsqueda de la ficha se hace de

la siguiente manera BuscarFicha(parámetros), mientras que para acceder a los

valores de retorno se hace de mediante BuscarFichaResult(). Finalmente, mediante

la instrucción settype se convierte la variable $resp a un tipo array.

En caso de encontrar resultados con el término de búsqueda proporcionado

éstos se muestran en una página Web similar a la de la figura 59.

Figura 59. Resultados de la consulta

Si el usuario encontró el ejemplar que necesitaba presiona la leyenda

“Reservar”, de lo contrario realiza otra búsqueda mediante el enlace “Nueva

búsqueda”. Si el alumno intenta reservar un ejemplar, el prototipo primero verifica

que el usuario se encuentre registrado en la base de datos de SIABUC, para esto

utiliza la operación BuscaAlumno, lo cual es mostrado en la figura 60.

Figura 60. Invocación de la operación BuscaAlumno

<?php $cliente = new SoapClient("http://localhost/ServicioAcervo/Acervo.svc?wsdl "); $lacuenta→NoCta= $_POST['txtcuenta']; $resp=$cliente→BuscaAlumno($lacuenta); $resp=$resp→BuscaAlumnoResult; ?>

Page 128: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

121

Como se puede observar, la invocación es similar a la de la figura 56, sin

embargo, aquí no fue necesario hacer uso de la instrucción settype, esto debido a

que esta operación regresa un valor booleano y no un arreglo, como en el caso

anterior.

Siguiendo con el ejemplo prototipo, se eligió el ejemplar con no. de adquisición

114586, si el usuario proporciona un número de cuenta o nip inválido aparecerá un

mensaje como el que se muestra en la figura 61.

Figura 61. Usuario no encontrado en la base de datos

Sin embargo, para nuestro ejemplo se utilizó el número de cuenta 979663, el

cual corresponde a un usuario correctamente registrado en la base de datos de

SIABUC.

Page 129: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

122

Figura 62. Usuario válido

Finalmente, si el usuario esta correctamente registrado es momento de hacer

el último paso, la reservación, la forma de invocar esta operación es como se

muestra en la figura 63.

Figura 63. Invocación de la operación Reservar

Si la reservación se hizo correctamente aparece un mensaje con el texto

“Reservación con Éxito!!”, en caso contrario nos aparecerá un mensaje de error.

Para comprobar que la reservación se hizo correctamente se realizó la misma

búsqueda, como se puede observar en la figura 64 ya no aparece el enlace para

realizar la reservación, ahora muestra el estado reservado.

<?php $cliente = new SoapClient("http://localhost/ServicioAcervo/Acervo.svc?wsdl "); $res→NoCta= $_POST['txtcuenta']; $res→NoAdq= $_POST['numadqui2']; $res= $client→Reservar($res); $res= $res→ReservarResult; echo utf8_decode($res); ?>

Page 130: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

123

Figura 64. Ejemplar reservado

Sin embargo, en algunas ocasiones suceden errores, para esto, PHP

proporciona un constructor llamado SoapFault mediante el cual se puede atrapar el

error generado. En la figura 65 se puede observar la forma mediante la cual se utilizó

el contrato de datos ABCSISFault.

Figura 65. Generación de excepción de tipo SoapFault

Una vez definido el constructor se puede acceder a sus métodos de la misma

manera que se hizo con las operaciones, mediante el operador “→”. Hay que

<?php try{

//Invocación de operaciones } catch (SoapFault $fault) {

echo "Ocurrió el error ".str_replace("s:","",$fault→faultcode)." ". utf8_decode($fault→faultstring)."\n\n";

echo "Operacion: ".$fault→detail→ABCSISFault→Operacion."\n"; echo "ProblemType: ". utf8_decode($fault→detail→ABCSISFault→TipoProblema)."\n";

} ?>

Page 131: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

124

recordar que el contrato de datos ABCSISFault retorna un mensaje y un número de

error en caso de presentarse alguna excepción.

En la figura 66 se puede observar un error generado debido a una sentencia

Structured Query Language (SQL) mal formada.

Figura 66. Error en sentencia SQL

Hasta aquí, se mostraron los aspectos relacionados con la creación,

hospedaje y manejo de errores con los servicios haciendo uso del modelo de

programación WCF, la ventaja principal de crear los servicios utilizando este modelo,

es que el programador solo tiene que preocuparse por la definición del servicio y su

funcionalidad, ya que la generación de mensajes SOAP lo hace de manera

transparente el CLR provisto en el .NET Framework, de esta manera se agilizó

bastante el proceso de creación de los servicios integrados en ABCSIS.

Page 132: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

125

6. Pruebas

Sommerville (2005) menciona que las pruebas es un proceso que intenta

proporcionar confianza en el software, el objetivo principal de realizarlas es

convencer a los desarrolladores del sistema y a los clientes que el software es lo

suficientemente bueno para su uso operacional.

Esta sección tiene como propósito detallar el proceso mediante el cual se

realizaron dos pruebas de software, prueba de operación y prueba de rendimiento. El

objetivo de la prueba de operación es que el usuario final instale el paquete de

ABCSIS y el CGI para que posteriormente opine mediante la contestación de un

cuestionario acerca de su utilidad y facilidad de implementación, mientras que el

objetivo de la prueba de rendimiento es el de conocer el comportamiento de ambas

implementaciones con un incremento gradual en las peticiones de consulta,

obteniendo los tiempos de petición-respuesta para posteriormente graficarlos.

El prototipo de reservación de libros de ABCSIS está compuesto por

búsquedas de material bibliográfico, estado del material (prestado, disponible) y

reservación (apartado), mientras que la implementación CGI sólo se encuentra

integrada por las búsquedas de libros.

Page 133: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

126

6.1 Prueba de operación

Esta prueba corresponde a una serie de experimentos cuyos participantes fueron

encargados del área de sistemas, los cuales fueron seleccionados tomando como

base un perfil del área de sistemas el cual se detalla posteriormente. El objetivo del

experimento consistió en instalar y comparar el prototipo de reservación de libros

desarrollado con la arquitectura ABCSIS y la aplicación CGI que SIABUC utiliza

actualmente. Los participantes expresaron su percepción en relación a la utilidad y

facilidad en la implementación que obtuvieron al seguir los procesos para cada una

de las arquitecturas. Debido a que la aplicación CGI solamente comprende un

apartado de búsqueda de libros, la prueba queda restringida a realizar el mismo

proceso con el prototipo de ABCSIS.

Perfil del usuario de prueba Para seleccionar a los usuarios se buscó que cumplieran ciertos requisitos

relacionados con el área de informática o afín. Los requisitos son: haber cursado la

carrera de licenciatura en informática, ingeniería en sistemas ó ingeniería en

telemática; contar con conocimiento previo en el sistema SIABUC; tener

conocimientos básicos en estándares Web y en programación; dominar el sistema

operativo Windows.

Las personas seleccionas son las encargadas de los centros de cómputo de

las bibliotecas incorporadas al sistema bibliotecario de la Universidad de Colima,

debido a las labores que realizan cotidianamente en su trabajo cuentan con un perfil

informático-bibliotecario, gracias a esto, tienen experiencia tanto en el ámbito de

sistemas como en el bibliotecario, cubriendo de esta manera el perfil de prueba

establecido.

Material La prueba aquí presentada corresponde a una prueba de laboratorio, la

infraestructura utilizada para este experimento consistió de lo siguiente:

Hardware:

• PC con procesador Intel

Page 134: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

127

• 2 Gb de memoria RAM

• 10 Gb de espacio libre en disco duro

Software:

• Windows XP Professional con service pack 3

• Servidor Web Internet Information Server

• Paquete con la implementación CGI de SIABUC8 (WebPaqS8.zip)

• Bases de datos de SIABUC8

• Prototipo con la implementación de reservación de ABCSIS

• Base de datos de SIABUC9

• .NET Framework 3.5

• PHP versión 5.2.6

• VMware Workstation

Cabe señalar que en la computadora de prueba ya se tenía previamente

instalado el SIABUC8 y el SIABUC9, así como el servidor Web IIS, esto con la

finalidad de que los participantes se dedicaran única y exclusivamente a instalar y

probar las herramientas adicionales de SIABUC, el CGI y el prototipo de reserva de

ABCSIS.

Objetivo Instalar, configurar y comparar el prototipo de reservación de libros desarrollado con

la arquitectura ABCSIS y la aplicación CGI que SIABUC utiliza actualmente.

Procedimiento

Para llevar a cabo las pruebas, a cada participante se le pidió evaluar el proceso de

instalación de las implementaciones ABCSIS y CGI en el sistema operativo Windows

XP Professional, el cual fue instalado sobre el programa VMware.

VMware es un software de virtualización para computadoras de escritorio y

portátiles, su característica principal es crear y ejecutar múltiples máquinas virtuales,

donde cada máquina virtual, representa un sistema operativo completo, incluyendo

Page 135: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

128

procesador, memoria, dispositivos de red, periféricos (VMware Inc., 2009). La razón

de utilizar VMware es porque permitía crear el mismo entorno de prueba para todos

los usuarios sin excepción y que de esta manera ninguno tuviera ventajas o

diferencia alguna en cuanto al sistema operativo y aplicaciones previamente

instaladas.

Para que el participante realizara la prueba se le proporcionaron una serie de

documentos y aplicaciones necesarias, todos estos archivos se incluyeron en una

carpeta llamada “Prueba_ABCSIS”, la cual, contiene los siguientes archivos: Guía de

instalación de ABCSIS, Guía de instalación del CGI, Instalador de ABCSIS e

Instalador de PHP.

Figura 67. Entorno de prueba con Windows XP sobre VmWare

Page 136: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

129

En la figura 67 se muestra el entorno de prueba con el sistema operativo

Windows XP ejecutándose sobre VmWare, adicionalmente, se puede observar la

carpeta “Prueba_ABCSIS”.

Dentro de la documentación proporcionada a cada participante se especifica

una serie de instrucciones a seguir, las cuales se mencionan a continuación de

manera general:

• Instalación del componente CGI

1. Instalar el paquete WebPaqS8.zip, este paquete contiene una

estructura y archivos necesarios para ejecutar la implementación CGI

de SIABUC8.

2. Copiar las base de datos de SIABUC8

3. Crear un directorio virtual dentro del servidor Web en la siguiente

ubicación C:\catalogos.

4. Asignar permisos de ejecución de aplicaciones CGI en el servidor.

5. Asignar permisos de lectura/escritura a la cuenta de invitado para

Internet, esta es una cuenta que comúnmente comienza con el prefijo

IUSR y es necesario habilitar éstos permisos de lo contrario la

implementación CGI no funciona correctamente.

6. Realizar una consulta en la interfaz de búsqueda.

• Instalación del prototipo de reservación de ABCSIS

1. Instalar el paquete de ABCSIS.

2. Crear los directorios virtuales correspondientes para la implementación

ABCSIS.

3. Verificar la correcta instalación de ABCSIS mediante la invocación del

servicio Acervo.

4. Configurar la conexión a la base de datos de SIABUC9, este proceso

se hace en un archivo llamado web.config.

5. Instalar el lenguaje de programación PHP en conjunto con la extensión

SOAP, esta librería es necesaria para poder acceder a la estructura del

servicio Acervo.

Page 137: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

130

Al terminar de instalar las dos implementaciones se le proporcionó al usuario

una guía operativa, en éste documento se le pidió realizar algunas consultas en

ambas interfaces y posteriormente se le aplicó un cuestionario (para mayor detalle,

consultar Anexo), finalmente se le dio la palabra al participante para darle la

oportunidad de aclarar las dudas con respecto a la prueba.

El objetivo del cuestionario es conocer la percepción del participante mediante

la medición de las siguientes variables:

• Experiencia del participante

• Facilidad de instalación/configuración

• Documentación proporcionada

• Interconexión con otras aplicaciones como sistemas escolares o

administrativos de las instituciones usuarias de SIABUC

En el cuestionario fue aplicado a ocho personas y se utilizó la escala de Likert

como instrumento de medición. La escala de Likert se utiliza para medir las actitudes

o predisposiciones de manera individual en contextos sociales, se construye en base

a una serie de preguntas que reflejan una actitud positiva o negativa acerca de un

estímulo, regularmente cada pregunta esta compuesta de cinco a siete alternativas

de respuesta (Ávila, 2006).

6.1.1 Resultados

Para la obtención de los resultados de ésta prueba se aplicó un cuestionario basado

en la escala de Likert, el cuestionario se encuentra estructurado por ocho preguntas,

las cuales, están compuestas por cinco ítems de respuesta, cada ítem tiene un valor

numérico en la escala del uno al cinco, el uno corresponde a la respuesta donde el

usuario esta totalmente en desacuerdo con la pregunta, mientras que el cinco

corresponde a la respuesta con la cual esta totalmente de acuerdo.

Page 138: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

131

La forma de medición del cuestionario se baso en sumar las respuestas

obtenidas y al final obtener un promedio, el cual estará en una escala del veinte al

cien por ciento. Del cuestionario aplicado se desprenden los resultados mostrados en

la tabla 6.

Tabla 7. Resultados de la encuesta aplicada en la prueba de operación

Participante P1 P2 P3 P4 P5 P6 P7 P8 Total Prom. % Experiencia en programación

2 4 2 2 5 4 4 5 28 3.5 70

Conocimiento WS 1 1 2 4 4 4 4 5 25 3.1 62 Instalación ABCSIS vs. CGI

5 5 5 5 5 4 5 2 36 4.5 90

Documentación 5 1 5 5 5 5 1 5 32 4.0 80 Fácil configuración ABCSIS

5 2 4 5 5 4 4 3 32 4.0 80

Fácil configuración CGI

4 4 5 5 4 4 4 4 34 4.3 86

Interconexión de ABCSIS con otros sistemas

5 3 5 4 5 4 4 5 35 4.4 88

Evaluación general ABCSIS

5 4 5 5 4 4 5 4 36 4.5 90

En base a los resultados anteriores se puede apreciar que el setenta por

ciento de los usuarios encuestados cuentan con experiencia en el ámbito de

programación, esto debido a que la mayoría de los encuestados son encargados de

centros de cómputo y su actividad principal no es el desarrollo de software, mientras

que en el aspecto de los conocimientos acerca de los protocolos relacionados con

los servicios Web solo el sesenta y dos por ciento los conoce.

Por otra parte, lo relacionado a la configuración de ABCSIS el ochenta por

ciento opinó que le resultó fácil de instalar, uno de los comentarios en éste sentido

fue que se tienen que hacer dos pruebas para verificar la correcta instalación de los

componentes de ABCSIS (las pruebas consisten en invocar dos páginas Web), la

5 4 3 2 1 Valor de la escala Total Total acuerdo desacuerdo 100 80 60 40 20 % de la escala

Page 139: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

132

instalación del CGI por su parte no cuenta con un mecanismo similar, razón por la

cual obtuvo una mayor calificación en éste sentido.

Por su parte en el aspecto de instalación el noventa por ciento de los usuarios

evaluados expresaron que la instalación del prototipo de ABCSIS les resultó más

fácil de realizar, debido a que cuenta con un asistente que guía al usuario durante

todo el proceso, mientras que el CGI es un paquete compactado que se tiene que

descomprimir para posteriormente copiar una serie de archivos manualmente.

En cuanto a la factibilidad de interconexión de ABCSIS con otros sistemas

administrativos el ochenta y ocho por ciento consideró factible este proceso debido a

los servicios Web que trae incorporados y a su arquitectura basada en SOA.

Finalmente, el noventa por ciento de los usuarios encuestados consideraron

que esta nueva implementación es buena para el sistema SIABUC.

La presente prueba se aplicó a ocho participantes de los cuales tres fueron

mujeres y cinco hombres, el tiempo promedio que tardaron en realizar la prueba

oscilo entre una hora, a hora y media, cabe señalar que durante este tiempo veinte

minutos aproximadamente fueron consumidos por la instalación del .NET

Framework.

Page 140: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

133

6.2 Prueba de rendimiento Las pruebas de rendimiento también conocidas como pruebas de estrés son

utilizadas para asegurarse que el sistema en cuestión pueda procesar su carga

esperada. Básicamente, consiste en planificar una prueba donde la carga de trabajo

se incremente paulatinamente hasta que el rendimiento del sistema sea inaceptable

(Sommerville, 2005).

La prueba realizada en esta sección consistió en hacer consultas a través de

la red de la Dirección General de Servicios Bibliotecarios tanto de la implementación

CGI como del prototipo de ABCSIS, el estudio se basó en realizar cinco pruebas con

cinco, cincuenta, quinientos y cinco mil peticiones de consulta, las cuales simulaban

a usuarios haciendo peticiones de consulta, debido a la variabilidad de la red se

realizaron varias pruebas para obtener un promedio estandarizado y posteriormente

observar el comportamiento de éstas tecnologías mediante gráficas de líneas.

Para la realización de esta prueba se utilizaron dos computadoras, una que

actúo como servidor y otra que actúo como cliente, la computadora servidor estaba

compuesta por un procesador Intel a 1.8 Ghz con 2 gb de RAM con las siguientes

aplicaciones instaladas:

• Windows 2008 Server sobre WmWare

• Implementación de consulta de SIABUC8

• Base de datos de SIABUC8

• Prototipo de reservación de ABCSIS

• Base de datos de SIABUC9

Mientras que las características técnicas de la computadora que se uso como

cliente son las siguientes:

Hardware:

• Pc con procesador Intel Centrino Duo a 1.6 Ghz

• 2 Gb de memoria RAM

• 10 Gb de espacio libre en disco duro

Page 141: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

134

Software:

• Windows XP Professional con service pack 3

• Aplicación para simular las peticiones de consulta al servidor

Cabe señalar que se utilizó la misma información en ambas

implementaciones, es decir, la información contenida en la base de SIABUC8 se

convirtió al formato de SIABUC9 para poderla utilizarla en el prototipo de reservación

de ABCSIS, esto con la finalidad de consultar los mismos datos y que esto no

repercutiera en los tiempos de respuesta durante la prueba.

La prueba consistió en ejecutar una aplicación en la computadora cliente para

simular las peticiones (figura 68), la cual se conecta vía TCP al servidor y manda

solicitudes de consulta a través del método POST de HTML, cada petición la realiza

con un intervalo de 100 milisegundos; dicha aplicación fue elaborada en Visual Basic

6.0. Una vez que enviaba la petición de consulta al servidor, este respondía y la

aplicación almacenaba los tiempos de petición-respuesta en una bitácora en formato

de Excel, estos datos posteriormente se graficaron.

Figura 68. Aplicación utilizada en la prueba de rendimiento

Page 142: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

135

A continuación, en la figura 69 se muestra el proceso de petición-respuesta en

ésta prueba.

Figura 69. Proceso de petición-respuesta de la prueba de rendimiento

Para el caso de la prueba en la implementación CGI se utilizó el método

POST enviándole como parámetros una serie de variables, las cuales se listan a

continuación:

• Txtlib. Se utiliza para colocar el parámetro de búsqueda

• Cantidad. Es el número de registros a desplegar por página

• FichaIni. Registro (ficha bibliográfica) a partir de la cual comenzará a

desplegar los resultados obtenidos

• ACERVO. Tipo de información a consultar, puede tener dos valores

LIBROS ó REVISTAS, para nuestro caso se optó por la búsqueda de

libros solamente.

• ArchivoCFG. Archivo de configuración con código HTML que se utiliza

para desplegar los registros obtenidos en la búsqueda.

A continuación, en la figura 70 se muestra la cabecera HTTP enviada a la

implementación CGI, en dicha figura se aprecia tanto el método POST como el

conjunto de parámetros enviados.

Pc-cliente Pc-servidor

Bitácora Excel

Envía peticiones

Responde a las peticiones

Se almacena la respuesta en

bitácora

Page 143: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

136

Figura 70. Cabecera HTTP enviada a la implementación CGI

Mientras que la respuesta obtenida se muestra en la figura 71, cabe señalar

que conforme se aumentaba la carga de peticiones éstas respuestas tardaban arriba

de los sesenta segundos.

Figura 71. Respuesta exitosa por parte de la implementación CGI

Para el caso de ABCSIS la petición de consulta también se utilizó el método

POST, como se mencionó en la sección 5.3 Implementación del prototipo, para poder

utilizar cada servicio de ABCSIS es necesario hacer un constructor, para el presenta

trabajo este constructor fue hecho en el lenguaje PHP, la razón de hacerlo en éste

lenguaje fue para demostrar una de las características de ABCSIS la

interoperabilidad. A éste constructor, se le pasa como parámetro la dirección del

WSDL del servicio en cuestión, hecho lo anterior, se puede utilizar la interfaz del

HTTP/1.1 100 Continue Server: Microsoft-IIS/5.1 Date: Fri, 21 Aug 2009 03:39:05 GMT X-Powered-By: ASP.NET

HTTP/1.1 200 OK Server: Microsoft-IIS/5.1 Date: Fri, 21 Aug 2009 03:39:05 GMT X-Powered-By: ASP.NET Connection: close Content-Type: text/html Cache-Control: public

<html> <body>

<!-- Registros obtenidos en la búsqueda --> </body> </html>

POST /catalogos/cgi-bin/web_s8.exe HTTP/1.1 Host: 148.213.21.80 Content-Type: application/x-www-form-urlencoded Content-Length: 74

txtLIB=mexico&Cantidad=10&FichaINI=1&ACERVO=LIBROS&ArchivoCFG=Lib_Gral.cfg

Page 144: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

137

servicio, ésta interfaz es la encargada de recibir los parámetros, que para éste caso

se le enviaron a través del método POST, la petición de consulta es mostrada en la

figura 72.

Figura 72. Petición de búsqueda en ABCSIS con el método POST

Mientras que la estructura del script que recibe los parámetros es el que se

muestra en la figura 73.

Figura 73. Script php que recibe los parámetros enviados con el método POST

Como se puede apreciar tanto en la figura 70 como en la figura 72 las

variables txtlib y TerminoDeBusqueda contienen el mismo término, esto con la

<?php //Creación del constructor $wsdl= 'http://148.213.21.80/ServicioAcervo/Acervo.svc?wsdl'; $cliente = new SoapClient($wsdl); //Parámetros de búsqueda $params->TipoDeBusqueda= $_POST['tipobusqueda']; $params->TerminoDeBusqueda= $_POST['terminobusqueda']; $params->FichaNext= $_POST['fichanext']; $params->FichaPrev= $_POST['fichaprev']; $params->NoPag= $_POST['nopag']; //Invocación de la operación ValidaUsuario $ws=$cliente->BuscarFicha($params); //Obteniendo los resultados de la invocación $wsResult=$ws->BuscarFichaResult; //Imprimiendo el resultado de la invocación settype($wsResult, "array"); for($i=0; $i<10; $i++) { //Imprimir en pantalla cada uno de los valores } ?>

POST /pruebaabcsis/pruebaabcsis.php HTTP/1.1 Host: 148.213.21.80 Content-Type: application/x-www-form-urlencoded Content-Length: 69 tipobusqueda=1&terminobusqueda=mexico&fichanext=1&fichaprev=0&nopag=1

Page 145: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

138

finalidad de que la información a consultar no fuera un factor determinante para que

una implementación tuviera ventajas sobre la otra en el tiempo de respuesta y que la

prueba fuera en condiciones semejantes.

Posteriormente, en caso de obtener una respuesta correcta el servidor

responde con la cabecera HTTP la cual es mostrada en la figura 74.

Figura 74. Respuesta del servidor a una petición de búsqueda en ABCSIS

Durante la ejecución de ésta aplicación el prototipo ABCSIS demostró una

característica que consistía en lo siguiente, cuando se hacia la petición del servicio la

primera ocasión tardaba entre treinta y cuarenta segundos en atender las consultas,

esto es un proceso normal debido a que tiene que instanciar los objetos del CLR de

.NET entre ellos el servicio de ASPNET, posteriormente las repuestas a las consultas

son muy rapidez y la mayoría de éstas se encuentran por debajo del segundo.

Otra de las cuestiones observadas fue la estabilidad que el prototipo de

ABCSIS mostró, ya que en situaciones con demasiada carga de trabajo siempre se

mantuvo en un rango de respuesta aceptable (por debajo de un segundo) mientras

que la aplicación CGI a medida que la carga de trabajo aumentaba su rendimiento

disminuía, esto demuestra una confiabilidad muy aceptable en el rendimiento de

ABCSIS.

HTTP/1.1 100 Continue Server: Microsoft-IIS/5.1 Date: Fri, 21 Aug 2009 04:02:17 GMT X-Powered-By: ASP.NET

HTTP/1.1 200 OK Server: Microsoft-IIS/5.1 Date: Fri, 21 Aug 2009 04:02:17 GMT X-Powered-By: ASP.NET Connection: close X-Powered-By: PHP/5.2.6 Content-type: text/html <html> <body>

<!-- Registros obtenidos en la búsqueda --> </body> </html>

Page 146: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

139

Otro de los aspectos que se pudieron observar en la prueba fue que a medida

que la cantidad de peticiones aumentaba se quedaban algunos procesos del CGI

colgados en memoria llegando en ocasiones al cien por ciento de la utilización de la

ésta, esto se puede apreciar en la figura 75 mediante la ejecución de la aplicación

CGI Web_s8.exe.

Figura 75. Múltiples procesos en ejecución en la modalidad CGI (web_s8.exe)

Lo anterior no sucedía con el prototipo de ABCSIS, en este caso la utilización

de los recursos utilizados en la computadora oscilaba entre el sesenta al sesenta y

nueve por ciento, esto se puede apreciar en la figura 76. El único factor de lentitud

detectado durante las pruebas de ABCSIS fue cuando se iniciaba la primer petición

de consulta ya que tardaba en iniciar el servicio Web de ABCSIS como se había

mencionado anteriormente, sin embargo, este mecanismo solo se hace en una sola

ocasión y posteriormente la velocidad de respuesta es muy veloz, en las gráficas

mostradas posteriormente se verá reflejado este dato.

Cabe señalar que esta prueba se realizó utilizando la red que cotidianamente

utiliza cualquier computadora de la Dirección General de Servicios Bibliotecarios,

Page 147: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

140

razón por la cual no estaba exenta del tráfico de Internet, debido a esto, en

ocasiones el servidor excedía en su tiempo de respuesta, por lo que se optó por

definir un patrón o normalización en el tiempo de respuesta, de tal manera que

aquellas consultas que tardaban más de sesenta segundos en procesar fueron

tomadas como respuestas insatisfactorias tomando como tiempo de respuesta el

patrón de tiempo definido previamente.

Figura 76. Menor cantidad de recursos utilizados por el prototipo ABCSIS

A continuación, en la siguiente sección se muestran las gráficas y la

información tomada en base a las pruebas de rendimiento realizadas.

6.2.1 Resultados

En esta sección se muestran las gráficas obtenidas en base a los tiempos de

respuesta por parte de las implementaciones CGI y el prototipo ABCSIS.

Page 148: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

141

Como ya se mencionó en el apartado anterior, se realizaron pruebas con

cinco, cincuenta, quinientos y cinco mil iteraciones, donde cada iteración esta

representada por un evento y el tiempo de respuesta esta representado en

segundos.

A continuación, se muestra la información relacionada a los tiempos de

ABCSIS y posteriormente se muestra lo relacionado al CGI. En la tabla 8 se muestra

la bitácora con los tiempos obtenidos en base a cada uno de los eventos, solo se

muestra la información relacionada a la prueba con cinco iteraciones por cuestiones

de espacio. Tabla 8. Información de la prueba de ABCSIS con cinco eventos

En esta primera prueba se puede observar que el tiempo de respuesta de

ABCSIS es muy estable, a continuación, en la figura 77 se muestra la gráfica con el

promedio de los tiempos de respuesta, en ésta figura se puede apreciar una línea

que oscila aproximadamente en los diecisiete segundos.

Promedio de las pruebas en red con 5 eventos - ABCSIS

0

5

10

15

20

1 2 3 4 5

Usuarios

Tiem

po (s

eg.)

Eventos

Figura 77. Promedio de la prueba de ABCSIS con cinco eventos

EventoA EventoB EventoC EventoD EventoE Promedio 18.047 18.504 18.14 17.39 15.188 17.4538 17.953 18.426 18.015 17.281 15.079 17.3508 17.844 18.301 17.906 17.171 14.969 17.2382 17.719 18.21 17.797 17.062 14.86 17.1296 17.609 18.066 17.687 16.953 14.75 17.013

Page 149: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

142

A pesar de que se realizaron pocos eventos el tiempo de respuesta esta por

arriba del promedio general de las demás pruebas, las cuales se podrán observar a

continuación, la razón de esto es porque como se mencionó en la sección anterior

cuando se ejecuta por primera vez el servicio de ABCSIS tarda en instanciar algunos

de sus componentes en memoria.

Posteriormente se realizó la prueba con cincuenta eventos, en ésta prueba

existe una gran diferencia en la velocidad de respuesta, puesto que mejoró

considerablemente, anteriormente el promedio oscilaba en los diecisiete segundos y

en esta prueba oscila entre .05 y .06 segundos.

En la figura 78 se puede observar el promedio de los tiempos de respuesta, en

ésta figura se aprecia una diferencia de tiempo con respecto a la gráfica mostrada en

la figura 77.

Promedio de las pruebas en red con 50 eventos - ABCSIS

0

0.02

0.04

0.06

0.08

0.1

0.12

0.14

1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49

Usuarios

Tiem

po (s

eg.)

Eventos

Figura 78. Promedio de la prueba de ABCSIS con cincuenta eventos

Después se realizó una prueba aumentado la carga de trabajo, la cual

consistió en ejecutar 500 eventos, el promedio ésta gráfica es mostrado en la figura

79, una de las características observadas es que a pesar del incremento en la

cantidad de ejecuciones persiste una estabilidad en el tiempo de respuesta.

Page 150: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

143

Promedio de las pruebas en red con 500 eventos - ABCSIS

0

0.02

0.04

0.06

0.08

0.1

0.12

1 30 59 88 117 146 175 204 233 262 291 320 349 378 407 436 465 494

Usuarios

Tiem

po (s

eg.)

Eventos

Figura 79. Promedio de la prueba de ABCSIS con quinientos eventos

Finalmente, se ejecutó una prueba con cinco mil eventos, el promedio es

mostrado en la figura 80, en ésta figura se puede observar que a pesar de la carga

de trabajo, el tiempo de respuesta se encuentra por abajo del segundo

aproximadamente.

Promedio de las pruebas en red con 5000 eventos - ABCSIS

0

0.2

0.4

0.6

0.8

1

1 359 717 1075 1433 1791 2149 2507 2865 3223 3581 3939 4297 4655

Usuarios

Tiem

po (s

eg.)

Eventos

Figura 80. Promedio de la prueba de ABCSIS con cinco mil eventos

Hasta aquí se mostraron las pruebas de rendimiento relacionadas con

ABCSIS, a continuación, se muestra la información obtenida de las pruebas de

Page 151: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

144

realizadas con el CGI. Al igual que en las pruebas anteriores, en la tabla 9 solo se

muestra los datos de los tiempos de respuesta correspondientes a la primer prueba

por cuestiones de espacio. Tabla 9. Información de la prueba de CGI con cinco eventos

La primera prueba realizada fue con cinco eventos, la mayor parte de los

eventos realizados muestran un tiempo de respuesta aceptable y con cierta

semejanza ya que la mayoría oscilaron sobre cuatro y cinco segundos de respuesta.

En esta prueba la aplicación CGI respondió conforme a lo esperado, sin

embargo, en gráficas posteriores se observará como a medida que la carga de

trabajo se va incrementando el rendimiento de la implementación CGI se va

decrementando, a tal grado que en algunas ocasiones el tiempo de respuesta fue

superior a los sesenta segundos. El promedio de esta prueba se muestra en la figura

81, aquí se puede apreciar una línea con un tiempo de respuesta por debajo de los

seis segundos, un tiempo de respuesta aceptable.

Promedio de las pruebas en red con 5 eventos - CGI

02468

1012141618

1 2 3 4 5

Usuarios

Tiem

po (s

eg.)

Eventos

Figura 81. Promedio de la prueba CGI con cinco eventos

EventoA EventoB EventoC EventoD EventoE Promedio 4.532 4.469 4.469 4.796 4.844 4.622 4.422 4.359 4.172 4.672 4.75 4.475 4.328 4.25 4.235 4.547 4.61 4.394 4.203 4.141 3.984 4.437 4.515 4.256 4.109 3.984 3.859 4.344 4.422 4.1436

Page 152: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

145

Posteriormente, se realizó la prueba con cincuenta eventos, en esta prueba se

puede notar que el tiempo de respuesta se incrementó, sin embargo, a pesar de

esto, el tiempo de respuesta promedio sigue demostrando cierta estabilidad, ya que

se encuentra en once segundos aproximadamente.

Promedio de las pruebas en red con 50 eventos - CGI

0

5

10

15

20

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49

Usuarios

Tiem

po (s

eg.)

Eventos

Figura 82. Promedio de la prueba de CGI con cincuenta eventos

Después, se aumentó la carga de trabajo a quinientos eventos, en ésta

prueba se puede apreciar un incremento muy notable en los tiempos de respuesta ya

que algunos de éstos superaron los sesenta segundos definidos como el máximo

tiempo de respuesta deseable, por lo que se optó por delimitar la gráfica en este

intervalo.

Promedio de las pruebas en red con 500 eventos - CGI

0

10

20

30

40

50

60

70

1 29 57 85 113 141 169 197 225 253 281 309 337 365 393 421 449 477

Usuarios

Tiem

pos

(seg

.)

Eventos

Figura 83. Promedio de la prueba CGI con quinientos eventos

Page 153: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

146

El promedio de ésta prueba también tiene un cambio significativo respecto a

las anteriores, en la figura 83 se puede observar que la estabilidad mostrada en las

pruebas anteriores aquí ya no esta presente, puesto que existe tiempos de respuesta

muy variables, los cuales se ven reflejados en crestas y valles, algunos de ellos muy

pronunciados en la gráfica.

Finalmente, se realizó la prueba con más carga de trabajo con el incremento

de cinco mil eventos, la mayoría de los tiempos de respuesta en ésta prueba

excedieron los sesenta segundos, debido a esto, en la figura 84 se puede observar

que los tiempos promedio de respuesta se encuentran aproximadamente en los

cincuenta segundos formando casi una línea debido a que fueron acotados por

excederse del tiempo de respuesta deseable. Adicionalmente se puede observar

como al inicio de la prueba el tiempo de respuesta es bueno, sin embargo a medida

que ésta avanza se va incrementando cada vez mas hasta llegar al límite esperado.

Promedio de las pruebas con 5000 eventos - CGI

0

10

20

30

40

50

60

70

1 355 709 1063 1417 1771 2125 2479 2833 3187 3541 3895 4249 4603 4957

Usuarios

Tiem

po (s

eg.)

Eventos

Figura 84. Promedio de la prueba CGI con cinco mil eventos

En esta sección se abordaron los detalles relacionados a las pruebas

realizadas de las implementaciones ABCSIS y CGI, se realizaron dos pruebas, la

primera de ellas orientada a los usuarios finales de las aplicaciones y la segunda al

rendimiento en situaciones de carga de trabajo considerables, en la siguiente sección

se hace un análisis de la información presentada y las conclusiones

correspondientes.

Page 154: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

147

7. Resultados y conclusiones

En ésta sección se mencionan los resultados obtenidos durante la aplicación de la

prueba de operación y la prueba de rendimiento, los resultados se abordan desde un

punto de vista cuantitativo y cualitativo. También, se mencionan las posibles

aplicaciones de la arquitectura ABCSIS que actualmente se encuentran disponibles,

como es el caso de una implementación prototipo llamada iSIABUC, la cual funciona

como una distribución front-end de ejemplo para los usuarios de SIABUC. Finalmente

se mencionan las recomendaciones para trabajo futuro y las conclusiones.

7.1 Análisis de los resultados Prueba de operación Durante esta prueba se evaluaron varios aspectos, desde la experiencia del

participante hasta la implementación y facilidad de instalación de las tecnologías CGI

y el prototipo ABCSIS. A continuación se detallan cada una de ellas:

• Experiencia del programador

Durante la realización de la prueba de operación se pudo apreciar que el 70% de

los participantes cuentan con conocimientos en programación, esto, a pesar de

que no son desarrolladores de software, ya que la mayoría de ellos son

encargados de los diferentes centros de cómputo de las bibliotecas de la

Universidad de Colima.

• Comparación del proceso de instalación de ABCSIS vs. CGI

En cuanto a la instalación de ABCSIS el 90% de los participantes mencionaron

que este proceso fue más sencillo que la instalación del CGI, debido a que

ABCSIS cuenta con un asistente de instalación que guía al usuario paso a paso

durante este proceso, mientras que el CGI no cuenta con esa funcionalidad.

• Configuración de ABCSIS vs. CGI y conocimiento de los servicios Web

En el aspecto de configuración de ABCSIS el 80% de los participantes

mencionaron que les resultó fácil, sólo el 62% manifestó tener experiencia en

Page 155: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

148

estándares y tecnologías Web, lo cual indica que el prototipo ABCSIS ha sido

apropiado, puesto que a pesar de que algunos participantes no tienen gran

experiencia en estas tecnologías lograron realizar la instalación e implementar

satisfactoriamente el prototipo ABCSIS.

• Interconexión de ABCSIS con otros sistemas y evaluación general

Finalmente, el 90% de los participantes encuestados calificaron como bueno el

prototipo ABCSIS, y debido a la incorporación de los servicios Web el 88%

consideran factible la interconexión de la arquitectura ABCSIS con otros sistemas.

Prueba de rendimiento Tomando como base los datos obtenidos en la prueba de rendimiento de la sección

6.2, se pudo observar que con la arquitectura ABCSIS se obtiene una estabilidad y

confiabilidad en los tiempos de respuesta a diferencia del CGI.

Esto se ve reflejado claramente en la prueba con mayor carga de trabajo realizada

con 5000 peticiones de consulta, en ésta prueba, el tiempo de respuesta mayor fue

de .07 segundos con el prototipo ABCSIS, mientras que la misma prueba realizada

con la implementación CGI la respuesta mayor fue de 48 segundos. Esta notable

diferencia a favor en los tiempos de respuesta, se debe a que ABCSIS no requiere

cargar en memoria un proceso por cada petición recibida mientras que la aplicación

CGI lo hace para cada una de estas peticiones, lográndose una gran confiabilidad en

situaciones de intensa carga de trabajo, garantizando de esta manera la respuesta

en el servicio de consultas a un número considerable de usuarios.

Page 156: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

149

7.2 Conclusiones La información obtenida en la prueba de operación muestra que a pesar de que un

poco más de la mitad (62%) de los participantes tiene experiencia en el uso de las

nuevas tecnologías, y con ciertas carencias de actualización profesional, cumplen

con sus funciones encomendadas de apoyo técnico a las bibliotecas.

Esta realidad del perfil informático identificada en la prueba, puede ser incluso

más deficiente en otras instituciones. Para sostener esta aseveración se cuenta con

la experiencia que se ha obtenido con más de 5 años brindando soporte técnico a

infinidad de usuarios bibliotecarios e informáticos de instituciones a nivel

Latinoamérica. Estas condiciones prevalecen en las instituciones que usan SIABUC,

donde son pocas las que tienen el apoyo continuo del personal de informática, y por

eso es de suma importancia ofrecer un mecanismo tecnológico que facilite las tareas

de instalación, configuración y puesta en marcha, donde la plataforma ABCSIS viene

a cubrir esta carencia.

Con los resultados obtenidos en las pruebas, se puede concluir que se ha

cumplido el objetivo de este trabajo, encapsular una gran funcionalidad y ofrecerla

para que los usuarios finales puedan incorporarla a sus desarrollos, incluso de

manera más fácil y sencilla como se hacia con la plataforma anterior basada en CGI.

También, en base al cuestionario realizado, la hipótesis ha quedado comprobada, ya

que el 88% de los encuestados consideran factible la interconexión de ABCSIS con

otros sistemas.

Actualmente ya se encuentra disponible una aplicación funcional denominada

iSIABUC. El encargado de crear dicha aplicación también participó en la prueba y le

resultó muy fácil realizar el acoplamiento de ABCSIS con la aplicación front-end. La

aplicación consiste en una interfaz Web para SIABUC que consume todos los

servicios que ABCSIS provee, desarrollando así un mecanismo que ofrece distintos

servicios vía Web a la comunidad universitaria (Guedea, 2009). La dirección

electrónica para acceder a ésta aplicación es la siguiente:

http://siabuc.ucol.mx/s9mashup.

Las expectativas de este proyecto se han cumplido satisfactoriamente,

creando una metodología de desarrollo de software basado en SOA para el software

Page 157: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

150

SIABUC, con la finalidad de extender los servicios que actualmente se ofrecen en la

biblioteca a partir de la funcionalidad básica existente en SIABUC.

Page 158: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

151

7.3 Trabajo futuro Para la creación de la arquitectura propuesta en éste trabajo se utilizó la plataforma

Windows en combinación con el .NET Framework que éste sistema operativo ofrece,

si se desea que ABCSIS funcione completamente de manera interoperable se

recomienda elaborarla mediante otro lenguaje de programación, esto es factible de

realizar gracias al diseño propuesto basado SOA y a la implementación de los

servicios Web, para el caso del presente trabajo se realizó bajo Windows debido a

que es la plataforma nativa del software SIABUC.

Adicionalmente se sugiere la creación de los clientes para consumir los

servicios restantes de ABCSIS en los distintos lenguajes de programación: PHP,

ASP, Visual Basic. En este sentido, se propone la creación de una comunidad virtual

de desarrolladores de SIABUC donde participen los usuarios de las distintas

instituciones usuarias de SIABUC, para que compartan sus experiencias en la

utilización de ésta nueva arquitectura a los usuarios que carezcan de conocimientos

en desarrollo de software. Y debido a que la arquitectura ABCSIS esta orientada a

servicios, éstos se pueden extender fácilmente, identificando varias funcionalidades

para agregarlas a la versión ABCSIS 2.0, por ejemplo la creación de un nuevo

servicio para obtener un listado de las reservaciones que tiene actualmente un

usuario.

Como aplicaciones futuras, los servicios de ABCSIS se pueden incluir en un

repositorio para que se compartan con otros usuarios sin que se lucre o se obtengan

beneficios económicos, comerciales o de cualquier otra índole, sin la previa

autorización de la Universidad de Colima y bajo la firma de un convenio especial de

colaboración y desarrollo.

La finalidad de compartir las librerías es para desarrollar, por ejemplo,

aplicaciones adicionales para otras plataformas, aplicaciones para dispositivos

portátiles, entre otras. Y de esta manera consultar por ejemplo el estado de préstamo

de un determinado libro, consultar los adeudos por parte de un usuario en la

biblioteca, verificar los préstamos de libros que actualmente tiene el usuario.

Page 159: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

152

Referencias

Albin, S. (2003). The Art of Software Architecture-Design Methods and Techniques. Estados Unidos : Wiley Publishing.

Arcelli, F., Tosi, Ch. y Zanoni, M. (2008). Can Design Pattern Detection be Useful for Legacy System Migration towards SOA?. Obtenido el 28 de Agosto de 2008 de la base de datos de ACM. Ávila, H. (2006). Introducción a la metodología de la investigación. Consultado el 21 de Julio de 2009, de http://www.eumed.net/libros/2006c/203/2k.htm Brinati, A. (2003). Transformación de los procesos productivos de una biblioteca tradicional a una biblioteca virtual. Trabajo presentado en el 2o. Congreso Internacional de Bibliotecología, Documentación y Archivística (CIBDA), Septiembre, Bolivia.

Brown, P. (2008). Implementing SOA: Total Architecture in Practice. Estados Unidos: Addison Wesley.

Cerami, E. (2002). Web Services Essentials. Distributed Applications with XML-RPC, SOAP, UDDI & WSDL. Estados Unidos: O’Reilly.

Chappell, D. (2002). Java Web Services. Using Java in Service-Oriented Architectures. Estados Unidos: O’Reilly.

Chen, I. y Huang Ch. (2006). An SOA-based software deployment management system. Obtenido el 29 de Noviembre de 2007 de la base de datos de ACM. Electronic Data System (2008). Service Oriented Architecture in the Airline Industry. Consultado el 26 de Agosto de 2008, de http://download.microsoft.com/download/a/7/0/a70394d4-164b-47e3-906d-71275b6b6ae3/EDS%20and%20Microsoft%20WP_SOA%20in%20the%20Airline%20 Industry.pdf

Erl, T. (2005). Service-Oriented Architecture: Concepts, Technology and Design. Estados Unidos:Prentice Hall

Fremantle, P. (2002). Applying the Web services invocation framework. Consultado el 24 de Mayo de 2008, de http://www.ibm.com/developerworks/webservices/library/ws-appwsif.html

González, A. y Guarino, L. (2005). Platform-Independent Accesibility API: Accesible Document Object Model. Obtenido el 15 de Mayo de 2008 de la base de datos de ACM.

Gorton, I. (2006). Essential Software Architecture. Alemania : Springer.

Grupo Sistemas Lógicos (2007a). Logicat 2 mil 7. Consultado el 3 de Noviembre de 2007, en http://www.gsl.com.mx/logicat.html

Page 160: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

153

Grupo Sistemas Lógicos (2007b). Aleph. Consultado el 3 de Noviembre de 2007, de http://www.gsl.com.mx/ppt/aleph.pdf

Guruge, A. (2004). Web Services – Theory and Practice. Estados Unidos: Elsevier Digital Press.

Guedea, H. (2009). Mashup para los servicios de SIABUC. Tesis de Ingenieria, Facultad de Telemática, Universidad de Colima.

Herrera-Morales, JR., Campos, J. L., Serrano, E., Pérez, L., Gutiérrez, J. R. (2004). Automatización de Bibliotecas con SIABUC. México: Universidad de Colima.

Herrera-Morales, JR. (2006). Guía de referencia técnica de la API WebS8DLL para SIABUC. México: Departamento de SIABUC. Universidad de Colima. Obtenido el 25 de Febrero de 2008 de http://siabuc.ucol.mx/docs/APIWebS8DLL.pdf

Herrrera-Morales, JR. (2007). SIABUC: más de 20 años apoyando la automatización de bibliotecas en Latinoamérica. Revista Iridia, Año 2, Vol. 4, 84-89.

Hubbers, J., Ligthart, A. y Terlouw, L. (2007). Ten Ways to Identify Services. The SOA Magazine, XII. Obtenido el 10 de Diciembre de 2007 de http://www.soamag.com/I13/1207-1.pdf

INNOVATIVE Interfaces (2006). Millennium. Consultado el 3 de Noviembre de 2007, de http://www.iii.com/mill/webopac.shtml

Josuttis, N. (2007). SOA in Practice. The Art of Distributed System Design. Estados Unidos: O’reilly.

Juric, M., Loganathan, R., Sarang, P. y Jennings, F. (2007). SOA Approach to Integration. XML Web Services, ESB, and BPEL in real-world SOA Projects. Reino Unido:Packt Publishing.

Kajko-Mattsson, M., Lewis, G. y Smith D. (2007). A framework for roles for development, evolution and maintenance of soa-based system. Obtenido el 15 de Septiembre de 2008 de la base de datos de ACM.

Kim, S. y Han, S. (2006). Performance comparison of DCOM, CORBA and Web Service. Obtenido el 20 de Febrero de 2008 de http://iec.cugb.edu.cn/WorldComp2006/PDP4837.pdf

Krafzig, D., Banke, K. y Slama D. (2004). Enterprise SOA: Service - Oriented Architecture Best Practices. Maryland: Pearson Education.

Lewis, G., Morris, E., Smith, D. y Simanta, S. (2008). SMART: Analyzing the Reuse Potential of Legacy Components in a Service-Oriented Architecture Environment. Consultado el 18 de Septiembre de 2008 desde http://www.sei.cmu.edu/publications/documents/08.reports/08tn008.html

Lugo, M. (2000). Las bibliotecas universitarias mexicanas: apuntes para un diagnóstico. Métodos de Información, 7, 45-53.

Page 161: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

154

Margolis, B. y Sharpe, J. (2007). SOA for the Business Developer-Concepts, BPEL, and SCA. Canada: MC Press.

Matthew, N. y Stones R. (2005). Beginning Databases with PostgreSQL. From Novice to Professional. New York, E.U.:Apress

Microsoft Corporation (2004). Understanding Service-Oriented Architecture. Obtenido el 14 de Agosto de 2009 de http://msdn.microsoft.com/en-us/library/aa480021.aspx#aj1soa_topic5

Microsoft Corporation (2009a). Configuración de enlaces proporcionados por el sistema. Obtenido el 03 de Enero de 2009 de http://msdn.microsoft.com/es-es/library/ms731092.aspx

Microsoft Corporation (2009b). Centro de desarrollo de .NET Framework. Obtenido el 21 de Abril de 2009 de http://msdn.microsoft.com/es-es/netframework/default.aspx

Microsoft Corporation (2009c). Namespace (Instrucción). Obtenido el 23 de Abril de 2009 de http://msdn.microsoft.com/es-es/library/0dx91cw5(VS.80).aspx

Misra, K. y Murthy, N. (2001). Using CGI Sripts to Develop a Generalizad On-line Timed Examination and Grading System. Obtenido el 15 de Mayo de 2008 de la base de datos de ACM.

Newcomer, E. (2002). Understanding Web Services: XML, WSDL, SOAP and UDDI. Boston, Estados Unidos : Addison-Wesley.

Newcomer, E. y Lomow G. (2004). Understanding SOA with Web Services. Maryland: Pearson Education.

Novell (2009). FAQ: General - Mono. Extraído el 04 de Enero de 2009 desde http://www.mono-project.com/FAQ:_General#Basics

Object Management Group (2008). CORBA FAQ. Consultado el 3 de Junio de 2008, de http://www.omg.org/gettingstarted/corbafaq.htm#VersionNumber Online community for the Universal Description, Discovery and Integration OASIS Standard (2008). Products UDDI. Consultado el 31 de Mayo de 2008, de http://uddi.xml.org/products Organization for the Advancement of Structured Information Standards. (2004a). Introduction to UDDI: Important Features and Functional Concepts. Consultado el 28 de Mayo de 2008, de http://uddi.xml.org/files/uddi-tech-wp.pdf

Organization for the Advancement of Structured Information Standards (2004b). UDDI Spec TC. Consultado el 31 de Mayo de 2008, de http://www.oasis-open.org/committees/uddi-spec/doc/spec/v3/uddi-v3.0.2-20041019.htm

Page 162: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

155

Organization for the Advancement of Structured Information Standards (2008a). Reference Architecture for Service Oriented Architecture Version 1.0. Obtenido el 01 de Septiembre de 2008, de http://docs.oasis-open.org/soa-rm/soa-ra/v1.0/soa-ra-pr-01.html

Organization for the Advancement of Structured Information Standards (2008b). SOA. Obtenido el 09 de Septiembre de 2008, de http://www.oasis-open.org/committees/tc_cat.php?cat=soa

Peiris, Ch. y Mulder, D. (2007). Pro WCF: Practical Microsoft SOA Implementation. Estados Unidos: Apress

Ponce, H., Herrera-Morales, JR. y Gutiérrez, P. (2004). SISOCOBI: Herramienta de Solicitud de Compras Bibliográficas para SIABUC basada en Web Services. Trabajo presentado en el XVII Congreso Nacional y III Congreso Internacional de Informática y Computación de ANIEI, Tepic – México.

PostgreSQL Global Development Group (2008a). PostgreSQL - About. Extraído el 25 de Noviembre de 2008 desde http://www.postgresql.org/about/

PostgreSQL Global Development Group (2009b). Npgsql adopted into the Mono Class Library. Extraído el 04 de Enero de 2009 desde http://www.postgresql.org/about/news.124

Santana, P. (2002). Aplicación de servicios Web en la reservación de libros para usuarios de SIABUC8. Trabajo presentado en el XV Congreso Nacional de Informática y Computación de ANIEI, Octubre, Guadalajara – México.

SIRSI (s.f.). Sistema de Gestión Integrada de Bibliotecas Unicorn. Consultado el 15 de Noviembre de 2007, de http://www.sirsidynix.com/Resources/Pdfs/Solutions/Products/Unicorn-es.pdf

Software Engineering Institute (2008). How do you define software architecture?. Consultado el 21 de Mayo de 2008, de http://www.sei.cmu.edu/architecture/definitions.html

Sommerville, I. (2005). Ingeniería de Software, 7ª Edición. Madrid: Pearson Educación. Sun Microsystems (2007). The WSIT Tutorial. Obtenido el 07 de Enero de 2009, de http://java.sun.com/webservices/reference/tutorials/wsit/doc/index.html

Tari, Z. y Bukhres, O. (2001). Fundamentals of Distributed Object Systems. The CORBA Perspective. Estados Unidos: John Wiley & Sons. Universidad de Colima (2006). ISIS-MEXICO. Consultado el 3 de Noviembre de 2007, en http://isis-mexico.ucol.mx/

VMware Inc. (2009). VMware Workstation. Consultado el 4 de Junio de 2009, en http://www.vmware.com/products/ws/

Page 163: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

156

Weerawarana, S., Curbera, F., Leymann, F., Storey, T. y Ferguson, D. (2005). Web Services Platform Architecture: SOAP, WSDL, Ws-Policy, WS-Addressing, WS-BPEL, WS-Reliable Messaging, and More. Estados Unidos : Pearson Education.

World Wide Web Consortium (2007a). SOAP Version 1.2. Consultado el 15 de Mayo de 2008, de http://www.w3.org/TR/soap12-part1/

World Wide Web Consortium (2007b). Web Services Description Working Group. Consultado el 24 de Mayo de 2008, de http://www.w3.org/2002/ws/desc/

World Wide Web Consortium (2004). Web Services Glossary. Obtenido el 17 de Junio de 2008 de http://www.w3.org/TR/ws-gloss/

Wrigth, M. y Reynolds, A. (2009). Oracle SOA Suite Developer’s Guide. Reino Unido: Publishing Ltd.

Page 164: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

157

Anexos Cuestionario de evaluación de ABCSIS

Carrera cursada: _______________________________________Género: M ( ) F ( ) Instrucciones: El presente cuestionario tiene como finalidad conocer la satisfacción en la implementación de la arquitectura ABCSIS. Por favor, marque con una X el número que más se acerque a su elección, siendo el número 5 el valor que representa el mayor grado de satisfacción, mientras que 1 representa el menor grado. 1.- ¿Tienes experiencia en programación Web?

Si tengo experiencia 5 4 3 2 1 No tengo experiencia 2.- ¿Conoces el paradigma de los servicios Web y los protocolos en los que se fundamenta?

Si lo conozco 5 4 3 2 1 No lo conozco 3.- ¿La arquitectura de ABCSIS te resulto fácil de configurar?

Fácil 5 4 3 2 1 Difícil 4.- ¿El proceso de instalación de ABCSIS fue fácil comparado con la instalación del CGI?

Fácil 5 4 3 2 1 Difícil 5.- ¿La documentación de ABCSIS comparada con la del CGI fue buena?

Buena 5 4 3 2 1 Mala 6.- ¿Cómo te resulto el proceso de configuración del CGI?

Fácil 5 4 3 2 1 Difícil 7.- ¿Consideras que con la arquitectura ABCSIS seria factible la interconexión de SIABUC con otros sistemas administrativos o escolares de tu institución?

Muy factible 5 4 3 2 1 Nada factible 8.- ¿En términos generales como consideras esta nueva implementación para SIABUC?

Buena 5 4 3 2 1 Mala

Gracias por tu participación!!!

Page 165: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

158

Glosario Back-end Es la parte que procesa los datos que el usuario introdujo. Se caracteriza por estar oculto al usuario. Business Process (Proceso de negocio) Es un conjunto de medidas vinculadas o actividades que en su conjunto resultan de un negocio específico, ya sea interno o externo a la organización. Documentar los procesos de negocio incluye la descripción de lo que se hace, por qué se hace, cómo se hace, que (o qué sistema) lo hacen, así como qué tan bien se hace. Business Services (Servicios de negocio) Servicios preconstruidos basados en las políticas y mejores prácticas de la industria. Son únicos y proveen un valor de alto nivel. Consumer (Consumidor) Son los clientes que accedan a los servicios. Choreography (Coreografía) Define la secuencia y condiciones bajo las cuales múltiples agentes independientes cooperan para intercambiar mensajes con el fin de alcanzar un objetivo. Framework Grupo de tareas relacionadas para administrar un programa o proyecto de SOA. Governance (Governabilidad) Define el modelo para asegurar la óptima reutilización de servicios y la ejecución de políticas corporativas (diseño de negocio, diseño técnico y aplicación de seguridad) Granularity (Granularidad) Modularidad de un servicio. El nivel de detalle de un servicio. Mainframes Es una computadora grande, potente y costosa utilizada principalmente por una gran compañía para el procesamiento de una gran cantidad de datos; por ejemplo, para el procesamiento de transacciones bancarias. MARC MARC es el acrónimo de MAchine Readable Cataloging. Define el formato de datos que surgió como iniciativa de la Biblioteca del Congreso de los Estados Unidos. Provee el mecanismo mediante el cual las computadoras intercambian, usan e interpretan la información bibliográfica. Middleware Software para ejecutar una conversión, interpretación, consolidación e integración en nombre de las aplicaciones de negocio. OPAC Siglas de catálogo público de acceso en línea. Es una interfaz para la consulta de material bibliográfico de una biblioteca.

Page 166: Universidad de Colima Facultad de Telemáticadigeset.ucol.mx/tesis_posgrado/Pdf/PONCE_SUAREZ... · Esta tesis describe el diseño de una arquitectura de software ... Automatizado

159

Orchestration (Orquestación) Es la secuencia y la prestación de servicios adicionales para procesar datos. Definición de las reglas para el flujo de servicios en un proceso. Provider (Proveedor) Es el creador de los servicios. Registry (Registro) Base de datos con la información de los servicios disponibles, no incluye los servicios físicamente. Repository (Repositorio) Base de datos con la información de los servicios disponibles.