Cómo escribir un paper para las JPC y para el CONIICC

Integración de Software: Módulo de Aprovisionamiento y Control de
Itinerarios para Operadores Turísticos “J2Net Web Solution”
“Arquitectura basada en servicios”
Elena Ebert Salinas
Walter Ogusuku Arakaki
Carlos Araujo Castro
Luís Sobrevilla Tolentino
Miguel Gómez González
José Guadalupe Delgado
Vanesa Cabrera Bendezú
Universidad Ricardo Palma
Tutor:
Dra. Sofía Álvarez Cárdenas
[email protected]
Universidad Ricardo Palma
Resumen
“En éste articulo se muestra el nivel de integrabilidad que pueden alcanzar los sistemas informáticos a
pesar de sus diferencias tanto en sus plataformas de desarrollo como en su tecnología, todo ello mediante el
empleo de servicios Web cuya implementación puede basarse en las recomendaciones de la arquitectura y
diseño de aplicaciones en capas, demostrándose su aplicabilidad en diversos lenguajes, entornos de desarrollo y
plataformas de despliegue. Se muestra también, cómo es que los servicios Web pueden ser empleados como
apoyo a los procesos de negocio a través de la metodología B2B y B2C. La solución desarrollada ofrece
Módulos de Aprovisionamiento y Control de Itinerarios para Agencias Operadoras de Turismo empleando para
ello Servicios Web que serán implementados en cada una de las organizaciones (Tour Operador y Proveedores)
involucradas en el proceso respectivo, con la finalidad de aprovechar al máximo las oportunidades de negocio
que se presentan debido al gran dinamismo que tiene el rubro de Turismo. Finalmente se describen los
principales componentes de la solución, en lo referente a su arquitectura, reflejados por artefactos de UML y se
establece su vinculación con los principales componentes de la programación.”
1.- Introducción
A medida que crece Internet y las tecnologías relacionadas, y las organizaciones buscan
integrar sus sistemas entre límites de departamentos y de organización, ha evolucionado un
enfoque de generación de soluciones basado en servicios. Desde el punto de vista del consumidor,
los servicios son conceptualmente similares a los componentes tradicionales, salvo que los
servicios encapsulan sus propios datos y no forman parte, estrictamente hablando, de la aplicación
sino que son utilizados por ésta. Aplicaciones y servicios que necesitan integrarse se pueden
generar en distintas plataformas, por distintos equipos, en diferentes programas y se pueden
mantener y actualizar de forma independiente. Por tanto, es esencial que implemente la
comunicación entre ellos con el mínimo acoplamiento. Este proyecto implementa la
comunicación entre los servicios empleando técnicas basadas en mensajes para proporcionar altos
niveles de solidez, escalabilidad y desarrolla un diseño global mediante la presentación de una
arquitectura coherente construida con distintos tipos de componentes que ayudarán a lograr un
buen diseño y beneficiarse de la plataforma Microsoft. En este proyecto se presenta una
aplicación distribuida con servicios Web que son necesarios para proporcionar capacidades de
integración para varios orígenes de datos y servicios, así como que requieran una interfaz de
usuario para uno o varios dispositivos.
2.- Trabajos Previos
De la problemática abordada se tiene como antecedente:
-
Sistema de Ventas para Tour Operadores - SIVETOP, Sistema Informático
desarrollado exclusivamente en .Net que ofrece a las empresas del rubro la
publicación de sus paquetes turísticos en Internet.
3.- Objetivos del Proyecto
•
•
•
•
•
Presentar una solución integral mediante arquitectura de capas, implementado tanto en
plataforma .Net como en Java
Demostrar el nivel de integrabilidad de los Sistemas Informáticos a través de los Servicios
Web, siendo ello transparente a su tecnología y plataforma.
Mostrar como los servicios Web garantizan gran independencia entre sus diferentes
subsistemas, así como también con respecto a sistemas externos.
Demostrar que los Servicios Web pueden dar soporte y dinamismo a los procesos de
negocio de las organizaciones.
Demostrar mediante la solución, como se optimizan los procesos de Control y
Seguimiento de Itinerarios, así como también se aprovechan al máximo las oportunidades
de negocio que se presentan por el gran dinamismo que tiene el rubro de Turismo.
4.- Visión General del Proyecto
Una agencia de viajes es una sociedad mercantil que se dedica de manera habitual y
profesional a asesorar y/o vender y/o organizar viajes o otros servicios turísticos. El papel de la
agencia turística es el de intermediario entre la persona que demanda turismo y la persona que
ofrece esa demanda y que es productor de bienes o servicios turísticos. Las agencias de viajes de
tipo Tour Operator se dedican a fomentar el turismo mediante la venta de productos turísticos
(Paquetes Turísticos, Circuitos Turísticos, City Tour, Full Day, entre otros) que estén de acuerdo a
las necesidades de cada cliente. El mercado en que se desenvuelven estas agencias es muy amplio
y competitivo y es en donde últimamente la tecnología apoya para lograr que muchas de estas
agencias cuenten con Sistemas que optimicen los procesos de negocio críticos.
Dado que el rubro de Turismo presenta una gran cantidad de competencia y mucho
dinamismo en cuestiones de afluencia y demanda, se identificaron como procesos críticos el
control de los itinerarios y el aprovisionamiento de los recursos. En el primer caso, ofrecer un
servicio o producto de alta calidad mediante la atención inmediata de los eventos y ocurrencias
que puedan alterar negativamente el cronograma de actividades de los productos turísticos,
garantiza la fidelización del cliente, por lo que la empresa Tour Operadora obtendrá una
considerable ventaja comercial con respecto a sus competidores. En el segundo caso, la
variabilidad de afluencia y demanda de Turismo genera en ciertos negocios del rubro (pequeños y
medianos) ajustes o reducciones del precio de sus productos o servicios que vienen a ser recursos
que la empresa Tour Operadora emplea en la elaboración de sus Paquetes Turísticos mediante un
acuerdo comercial previo. Identificar en el menor tiempo posible éstos ajustes o reducciones se
interpreta como una excelente oportunidad de negocio, puesto que permitirá elaborar paquetes a
un menor costo y ofrecerlo a sus clientes en calidad de promoción o descuento.
Las empresas de turismo en el Perú, no cuentan con un sistema que permita registrar los
eventos y ocurrencias de los itinerarios, por lo que ante ellos, su atención se vuelve muy tediosa y
toma un tiempo considerable, el mismo que es percibido por los clientes que se ven afectados por
ello y consecuentemente se daña la imagen de la empresa. Además, la falta de comunicación
continua entre los proveedores y la empresa Tour Operadora, limita el alcance que de sus
productos, puesto que presentan un carácter estático tanto en los elementos que lo conforman
como en el precio.
Este proyecto tiene como motivación el crecimiento continuo de la competencia de
diferentes agencias de turismo a nivel nacional e internacional, mejorar todo el proceso de
aprovisionamiento de recursos, dinamizar la generación de paquetes con promociones y ofertas,
llevar un óptimo control de las actualizaciones en el Catalogo de los productos turísticos, reducir
el impacto causado por los eventos imprevistos durante la ejecución de sus actividades, obtener
toda una data de eventos que permitan a los responsables de operaciones decidir si es necesario
optar por políticas de outsourcing, adquirir materiales como propios, establecer nuevos acuerdos
comerciales o regularizar los que ya tiene. Diseñar un Módulo de Apoyo al Seguimiento y Control
de los Itinerarios que garantice altos estándares de calidad en cuanto a servicio y productos, así
como también un módulo de Aprovisionamiento que reduzca considerablemente el tiempo que
toma a una agencia de turismo, tener conocimiento de nuevas ofertas y promociones que ofrecen
sus proveedores ante la variabilidad de afluencia y demanda de los diferentes destinos turísticos
en donde operan.
Este proyecto esta dirigido al Cliente, brindándole una mejor atención en forma ágil,
ordenada, y eficiente. Ofrecer el mejor servicio presentando mayor competitividad frente a otras
agencias. Obtener un óptimo beneficio por la difusión de la información de destinos turísticos a
un nivel de atención mayor (mayor cobertura), además de mejorar todo el Proceso que
corresponde a actividades de Operación y Aprovisionamiento.
Control de Itinerarios: La solución ofrecerá a la agencia Tour Operadora una interfaz Web
amigable que permitirá agilizar la gestión de eventos y ocurrencias que se susciten durante la
ejecución de los itinerarios que el Tour Operador realiza en las actividades turísticas ofrecidas a
sus clientes. Éste módulo permitirá:
o Registrar y Monitorizar los eventos u ocurrencias a través de una aplicación Web, para su
posterior coordinación o tratamiento.
o Ofrecer información en línea del estado y evolución del tratamiento o atención de un
evento u ocurrencia, así como también del impacto que implica.
o Generar una bitácora de eventualidades que permitirá identificar procesos o actividades
ineficientes, así como también, decidir su corrección de manera eficaz.
Aprovisionamiento: La solución permitirá que la aplicación central del Tour Operador se
comunique con las aplicaciones de control y administración de productos (catálogos) de cada uno
de sus proveedores, a través de servicios Web, con la finalidad de mantener actualizada la
información de recursos a ser empleados durante la ejecución de sus actividades turísticas. Éste
Módulo permitirá:
o Administrar en forma ordenada y controlada, la información de los proveedores.
o Ofrecer una aplicación sencilla de Control y Administración de Productos a los
Proveedores, ofreciéndoles una solución basada en software libre, teniendo en cuenta que
pertenecen (en su mayoría) a sectores PyMES o independientes.
o Notificar en forma inmediata y automática, a la Agencia Tour Operador, cuando cualquier
proveedor genere un nuevo Catálogo de Productos o Servicios.
o Supervisar visualmente las Notificaciones de los Proveedores, indicando además si el
Catalogo notificado incluye promociones o descuentos.
o Consultar el listado de productos y servicios ofrecidos por el proveedor mediante la
notificación.
o Decidir que productos y servicios del catalogo notificado por el proveedor, serán incluidos
como recursos, los mismos que serán empleados en la generación de nuevos paquetes
turísticos para la agencia.
Control de Calidad: Este punto es de especial importancia para el equipo de desarrollo, lo cual
explica el porqué del Control de Calidad del proyecto, asegura que se tiene:
-
Implementando estándares corporativos e identidades importantes todo el tiempo.
Cumpliendo con la Arquitectura diseñada.
Cumpliendo con los estándares de desarrollo de software (programación, análisis, diseño).
Monitoreando y mejorando todos los servicios involucrados en la actividad turística.
Asegurando que los clientes de la agencias de viajes reciban los mejores servicios
disponibles.
Realizando las pruebas necesarias durante el desarrollo del Software (Prueba de Integridad
de Data y Base de Datos, Pruebas de Función, Prueba de Interfase de Usuarios, Prueba de
Performance, Prueba de Carga, etc.).
Todo lo anteriormente mencionado permitirá a las empresas de turismo conseguir :
Un Servicio Mejorado en el tiempo a medida que se van identificando limitaciones y superando
los mismos mediante un análisis de las causas que lo produjeron.
Un Cliente más fidelizado con el negocio por la percepción de la mejora continua en el servicio y
preocupación por ello.
Futuro del producto: La creciente demanda de turismo en nuestro país hace necesario el
empleo de sistemas informáticos que permitan la agilidad de comunicaciones, transacciones y
flujo de información entre los negocios involucrados en ello. Los sistemas de información de las
grandes corporaciones en el rubro del turismo (por lo general software licenciado) ahora más que
nunca necesitan interoperar con las aplicaciones que las PyMEs de hoy en día implementan
basados en software libre para soportar sus procesos de negocio. Se aprecia entonces una
tendencia que dispone un escenario óptimo para el desarrollo de soluciones basadas en Servicios
Web.
5.- Marco Teórico
Arquitectura en Capas
El modelo actual de desarrollo de software ha probado que el organizar los elementos de
las aplicaciones en componentes independientes puede lograr una mayor facilidad de
mantenimiento de la aplicación. La programación en múltiples capas es la técnica sugerida para
aplicaciones empresariales [Fowler 02], debido a la fácil administración que implica el dividir los
componentes de la aplicación en capas para programas orientados a Cliente-Servidor. La
aplicación en desarrollo esta compuesta por seis capas que son explicadas a continuación.
Capa de Presentación: En esta capa se diseña todo lo que constituye la interfaz gráfica y la
interacción del usuario con el software. La capa de presentación que en este caso esta formada por
los Componentes de IU (Interface User), y los componentes de proceso de IU. Los componentes
de IU pueden ser vistos como la parte con la cual va a interactuar el usuario como las ventanas o
páginas Web, por decirlo de alguna manera. Los componentes de este proceso de IU se asocian a
clases de tipo Manager (controladora) en UML. Es decir estos encapsulan lógica de navegación y
control de eventos de las interfaces.
Capa Administradora (Manager): Son todas las subrutinas creadas con el propósito de regular
alguna acción del usuario y encapsular la lógica del negocio. Los servicios de esta capa son
encapsulados en el componente del Data Transfer Object (entidades empresariales), que
representan objetos que van a ser manejados o consumidos por toda la aplicación, estos podrían
ser un modelo de objetos, xml, datasets con tipo, estructuras de datos, que permitan representar
objetos que han sido identificados durante el modelamiento. Los otros tipos de objetos son los
componentes empresariales que contienen lógica de negocio.
Capa de Objetos de Transferencia de Datos (Data Transfer Object): La capa Transfer Object
para encapsular los datos del negocio, se utiliza una única llamada a un método para enviar y
recuperar el Transfer Object, cuando el cliente solicita los datos de negocio por medio de la
Manager, éste puede construir el Transfer Object, rellenarlo con sus valores de atributos y pasarlo
por valor al cliente. En la capa de Transfer Object se proporciona el constructor que acepte todos
los atributos requeridos para crear el Transfer Object este constructor va aceptar todos los valores
de atributos para el que se ha diseñado el Transfer Object.
Capa de Objeto de Acceso a Datos (Data Acces Object): En esta capa esta programada todo lo
que tiene que ver con el acceso a la base de datos, esta capa queda encargada de tomar la
información de la base de datos dada una petición de la capa de Manager (lógica del Negocio),
que a su vez es generada por la capa de presentación. Estas clases surgen como una necesidad de
mantener la cohesión o clases altamente especializadas que ayuden a reducir la dependencia entre
las clases y capas. Aquí se encuentra también una clase con métodos estáticos que permiten
uniformizar las operaciones de acceso a datos a través de un único conjunto de métodos, esta clase
es el SQLHelper que también se usa en este proyecto.
Capa de Interface de Servicios Web: Se ha implementado una capa de interfaz la cual permitirá
la comunicación entre la aplicación Web y el Servicio Web para hacer un consumo efectivo de los
servicios, además permite separar completamente el nombre de un método de la implementación
de ese método. La interfaz solamente dice cuál es el nombre del método, como se implementa
exactamente el método no es asunto de la interfaz. La interfaz especifica un contrato sintáctico y
semántico al cual se deben adherir todas las clases derivadas. Específicamente la interfaz describe
la parte del qué del contrato, y las clases que implementan la interfaz describen la parte del cómo
de este.
Capa de Agentes de Servicios Web: En está capa se tiene a los Agentes, los cuales permiten la
comunicación entre Servicios Web, implementa métodos y por medio de estos se realiza la
comunicación entre los servicios Web para consumir los métodos de este. Cuando un componente
empresarial requiere el uso de la funcionalidad proporcionada por un servicio externo, tal vez sea
necesario hacer uso de código para administrar la semántica de la comunicación con dicho
servicio. Los agentes de servicios permiten aislar las idiosincrasias de las llamadas a varios
servicios desde la aplicación y pueden proporcionar servicios adicionales, como la asignación
básica del formato de los datos que expone el servicio al formato que requiere la aplicación.
Servicios Web
Servicios Web, como indica su propio nombre, son servicios ofertados vía Web,
representan la solución con más futuro para la integración de aplicaciones en Internet y una buena
y fácil alternativa para integrar aplicaciones sencillas. Los servicios Web XML proporcionan
acceso mediante programación a la lógica de una aplicación que utiliza protocolos estándar de
Internet, tales como XML, y HTTP. Los servicios Web XML pueden ser aplicaciones
independientes o subcomponentes de una aplicación Web más grande. Se puede tener acceso a los
servicios Web XML desde casi cualquier tipo de aplicación, incluidos otros servicios Web XML,
aplicaciones Web, aplicaciones Windows y aplicaciones de consola.
El único requisito es que el cliente debe poder enviar, recibir y procesar mensajes del
servicio Web XML. Los Servicios Web son componentes software que permiten a los usuarios
usar aplicaciones de negocio que comparten datos con otros programas modulares, vía Internet.
Aplicaciones independientes de la plataforma que pueden ser fácilmente publicadas, localizadas e
invocadas mediante protocolos Web estándar, como XML, SOAP, UDDI o WSDL.
6.- Diseño e Implementación
Casos de Uso más Significativo:
Gestión de Productos Paquetes Turísticos y Servicios: Mantener Paquete Turístico,
Mantener Producto, Mantener Servicio, Mantener Cotización, Mantener Destino,
Mantener Proveedor, Registrar Notificación.
Paquete de Gestión de Seguimiento: Asignar Itinerario, Registrar Evento, Mantener
Evento.
Vista Lógica: Se han identificado 4 subsistemas interdependientes.
Ve n ta s y
R e s e rva s
G e s ti ó n d e
S e g u ri d a d
G e s ti ó n d e P ro d u cto s P a q u e te s
Tu rís ti c o s y S e r vi ci o s
G e s ti o n d e
S e g u i m ie n to
Paquetes más Significativos:
WS Producto Paquete Turístico y Servicios: En este paquete encontramos las clases:
Producto, Paquete Turístico y Servicio entre las más significativas.
WS Proveedor: Entre las clases significativas tenemos: Recurso, Tarifario.
WS Control y Seguimiento de Itinerario: Cuyas clases significativas encontramos:
Evento, Itinerario, Producto, Resolución, Acción
Vista de Procesos:
Es este el proceso de mayor impacto que define la arquitectura del software, en el que se
describen la mayor cantidad de procesos a realizarse. En el lado del servidor de Base de Datos se
estaría ejecutando el SQL2000 Server como proceso. En el lado del servidor de aplicaciones
estaría funcionando el ambiente de desarrollo Visual Studio.NET 2003, el Servidor de
Aplicaciones Web IIS (Internet Information Server), y estarían además las clases y dlls
compiladas del .NET. En la aplicación alojada en cada Proveedor, el Servidor de Base de Datos
será MySQL v5.0. En el servidor de aplicaciones estará ejecutándose Sun Application Server v9.0
del J2EE5 (Java2 Enterprise Edition) que contiene un Servidor Web además de clases y librerías
del JDK5 (Java Development Kit v1.5)
En el lado cliente estaría activo el .NetFramework, MDAC y el browser que estaría siendo
utilizado para utilizar la aplicación. En lo que corresponde en los procesos por parte del servidor
de Aplicaciones se crearía un proceso cada vez que se hace una llamada a una clase.
Vista de Distribución:
Para concretar físicamente el despliegue del sistema será necesaria la participación de tres
elementos en la red:
La PC del cliente:
Este elemento al desear hacer uso de nuestra aplicación, mediante el acceso desde una PC remota.
El Servidor de Aplicaciones
Se encuentra tanto en el Sistema Central del Tour Operador, como en cada Sistema de
Proveedores, en donde se encuentran almacenadas la aplicación, además las clases controladoras
para la ejecución de las transacciones e interacción entre la Base de Datos, y el cliente o servicio
Web indistintamente.
El Servidor de Datos:
En el cual estaría ubicada la Base de Datos de la Aplicación correspondiente, Sistema Central de
Tour Operador o Aplicación de Control y Administración de Productos en cada Proveedor
Red de Trabajo
TCP/IP
Cliente
preemptive
HTML Browser
<thread name>
7.- Diagrama de la Arquitectura de Capas
Arquitectura de capas en el Sistema Central para el Tour Operador
Web
Server
BD
Server
Arquitectura de capas en el Sistema del Proveedor
8.- Métodos empleados
Se utilizó elementos de Rational Unified Process [Kruchen] y de las herramientas de
Software de Rational para este fin. El diseño de la arquitectura para la aplicación fue desarrollada
utilizando el método de diseño orientado a objetos de ADOOSI [Alvarez]. Se utilizaron además
patrones de diseño [Larman] y [Fowler 02]
9.- Resultados
El consumo de los servicios entre las plataformas .Net y Java presentaron
comportamientos distintos dependiendo del sentido del mismo:
Cliente Java -> Servicio Web .Net
-
Se requirió modificaciones en el código WSDL debido a incompatibilidades detectadas en
las versiones de WSDL y SOAP en los entornos de desarrollo Visual Studio 2003 (.Net) y
NetBeans 5.5 (Java)
Cliente .Net -> Servicio Web Java
-
No se requirió modificación alguna debido a que sólo se emplearon transacciones con
tipos de datos primitivos
10.- Discusión
Aún se mantiene en evaluación y discusión el empleo de tipos de datos complejos entre
Servicios Web desarrollados en plataformas .Net y Java. El empleo exclusivo de tipos de datos
primitivos limita considerablemente el desarrollo de Servicios Web interoperables
independientemente de su plataforma.
11.- Conclusiones
El presente proyecto muestra la utilidad y las posibilidades que se generan con el manejo
de los servicios Web, dichas posibilidades se dan dentro de la programación orientada a objetos,
ya que se facilita la ampliación de las funcionalidades del software a través del desarrollo de
módulos, enriqueciendo en gran parte el aspecto competitivo del producto.
Con la utilización de los servicios, el software podrá interactuar con otros que no estén
necesariamente desarrollados con la misma tecnología, de tal manera el intercambio de
información será muy provechosa en ambos casos, generando en gran medida oportunidades de
negocio y toma de decisiones.
Otro aspecto que se quiere resaltar son las bondades del desarrollo de la arquitectura del
software, el cual facilita el manejo de datos a través del encapsulamiento de éstos. La definición
de cada capa facilita la implementación y/o modificación del software puesto que cada capa es
independiente de la otra, permitiendo el mantenimiento a un bajo costo del software desarrollado.
También se intenta fomentar el uso de la nueva tecnología como el .Net y el software libre
como Java; demostrando a las vez que es posible la interacción entre estas dos plataformas y
adaptarlas a los requerimientos del cliente.
Referencias
[Alvarez]
Álvarez, Sofia. Metodología ADOOSI Versión 6: Metodología para el desarrollo
de aplicaciones utilizando notación UML y extensiones para Web y servicios
Web, Publicación electrónica
[Fowler 99]
Fowler, Martin et al. Refactoring Improving the Design of Existing Code.,
Addison Wesley. 1999
[Fowler, 02]
Fowler, Martin. Patterns of Enterprise Application The Addison Wesley
Profesional Signature. 2002
[Kruchten]
Kruchten, Philippe. The Rational Unified Process An Introduction, Second
Edition, Publisher: Addison Wesley, Second Edition March 14, 2000,
[Larman]
Larman, Craig. UML y Patrones 2E. Prentice Halll Hispanoamericana, S. A. 2003.