Configurador P3S: Capa Middleware

Anuncio
UNIVERSIDAD SIMÓN BOLÍVAR
DECANATO DE ESTUDIOS PROFESIONALES
COORDINACIÓN DE INGENIERÍA DE LA COMPUTACIÓN
CONFIGURADOR P3S: CAPA MIDDLEWARE
POR:
CHRISTIAN ENRIQUE DELGADO SERRANO
INFORME FINAL DE PASANTÍA
Presentado ante la ilustre Universidad Simón Bolívar
como requisito parcial para optar al título de
Ingeniero en Computación
Sartenejas, Octubre de 2010
UNIVERSIDAD SIMÓN BOLÍVAR
DECANATO DE ESTUDIOS PROFESIONALES
COORDINACIÓN DE INGENIERÍA DE LA COMPUTACIÓN
CONFIGURADOR P3S: CAPA MIDDLEWARE
POR:
CHRISTIAN ENRIQUE DELGADO SERRANO
Realizado con la asesoría de:
Tutor Académico: Prof. Soraya Abad Mota
Tutor Industrial: Ing. Nelson Galán
INFORME FINAL DE PASANTÍA
Presentado ante la ilustre Universidad Simón Bolívar
como requisito parcial para optar al título de
Ingeniero en Computación
Sartenejas, Octubre de 2010
UNIVERSIDAD SIMÓN BOLÍVAR
DECANATO DE ESTUDIOS PROFESIONALES
COORDINACIÓN DE INGENIERÍA DE LA COMPUTACIÓN
ACTA FINAL DE PROYECTO DE PASANTÍA
CONFIGURADOR P3S: CAPA MIDDLEWARE
PRESENTADO POR:
CHRISTIAN ENRIQUE DELGADO SERRANO
Este proyecto de pasantía ha sido aprobado por el siguiente jurado examinador:
Prof. José Tomás Cadenas
Prof. Soraya Abad Mota
Ing. Nelson Galán
Sartenejas, Octubre de 2010
RESUMEN
El presente informe describe las actividades realizadas para el desarrollo del proyecto de
pasantía, ejecutado en la Gerencia de Servicios de Mantenimiento de Aplicaciones (AM) de la
empresa Indra, compañía global de tecnología, innovación y talento, la cual tiene como cliente a
una de las empresas de telecomunicaciones más grandes del país. A finales del año 2009, se
expresa la necesidad que tiene la empresa cliente de obtener una aplicación que permita al equipo
encargado del área de aprovisionamiento de P3S, realizar el proceso de configuración de tarifas y
descuentos de una manera más automatizada y sencilla a la utilizada actualmente, buscando
reducir los errores que se presentan por la gran intervención manual que tiene dicho proceso. Esta
configuración manual genera datos incorrectos o inconsistentes, los cuales frecuentemente deben
ser depurados por no ser consistentes con las reglas del negocio. En ese momento se plantea
como solución el desarrollo de la aplicación Configurador P3S por parte de Indra, cuyo desarrollo
se estructura usando una arquitectura de tres capas, constituida por un BackEnd, un Middleware y
un FrontEnd.
El presente proyecto de pasantía consistió en el desarrollo de la capa Middleware. Desde
el punto de vista tecnológico, se utilizaron diversas herramientas y tecnologías, como por
ejemplo, Servidor de aplicaciones WebLogic, JEE, EJB, JDBC, XDoclet, entre otras. Los
lineamientos utilizados para el proceso de desarrollo del proyecto de pasantía fueron basados en
los estándares propios de la empresa, contemplándose las fases de análisis y diseño,
implementación, pruebas y por último, implantación y seguimiento.
iv
DEDICATORIA
A mi Padre,
esté es el último paso para cumplirte mi promesa.
A Luis,
por ser una figura paterna para mí, y servirme de inspiración.
Donde quiera que estén, espero poder honrarlos.
v
AGRADECIMIENTOS
A mi Dios por ayudarme a encontrar la fuerza necesaria para alcanzar el triunfo.
A mi Madre, por dedicarme su vida, por sembrar en mí todas sus fortalezas y su
experiencia, para no dejarme ser vencido por ningún obstáculo que se interponga. Solo pido ser
algún día al menos la mitad de lo grande que es ella como persona.
A mi Abuela quien con sus consejos y apoyo incondicional, que me ha brindado a lo largo
de mi vida, me ayuda a no desanimarme bajo ninguna circunstancia y siempre seguir adelante.
A mis Hermanas, Kysbel y Xandra, que sin ellas saberlo, han sido siempre una enorme
fuente de inspiración para superarme. El servirles de ejemplo me ayuda a creer en mí, y el saber
que las ayudaré a tener también un futuro glorioso y exitoso.
A mi familia del colegio y de la banda. Pompa, Víctor, Julio, Deninnson, Kike, Mari y
Kari, por siempre estar ahí desde el comienzo de este largo camino, sé que siempre puedo contar
con ellos.
A toda la gente del área de Aprovisionamiento de Indra, mis compañeros y amigos:
Bianca, Marcy, Anely, Yhoni, Chris, Came, Mayra, Leo, Jerry, Felipe y en especial a mi tutor
Nelson Galán, quienes me brindaron su apoyo, confianza y amistad durante este tiempo en la
empresa, haciendo de mi pasantías una experiencia única.
A la profesora Soraya Abad, por toda la ayuda y confianza puesta en mí a lo largo de la
carrera y finalmente en la realización de este proyecto.
A mis compañeros y amigos de la USB, Isma, Henry, Jomar, Luismi, Jorge, Gian, Caroli,
Tommy, Anita, Chiky, quienes al brindarme sus consejos y ayuda en los momentos que los
necesitaba, se han vuelto parte importante de mi vida, sin importar donde estén.
A los que puedo clasificar como mis compañeros de clases, colegas de trabajo y amigos:
Katy, Jessie y Ale, por vivir juntos toda esta experiencia. Con el trabajo en equipo y el apoyo que
nos brindamos entre nosotros desde el comienzo, pudimos hacer que nuestros proyectos salieran
a la perfección, superando nuestras expectativas.
A todos ustedes, Gracias.
vi
ÍNDICE GENERAL
INTRODUCCIÓN ......................................................................................................................... 1
CAPÍTULO 1 - ENTORNO EMPRESARIAL .......................................................................... 3
1.1
1.2
1.3
1.4
1.5
Historia ............................................................................................................................ 3
Misión ............................................................................................................................. 5
Visión .............................................................................................................................. 5
Valores ............................................................................................................................ 5
Estructura Organizacional ............................................................................................... 5
CAPÍTULO 2 - DEFINICIÓN DEL PROYECTO ................................................................... 7
2.1
2.2
2.3
2.4
Antecedentes del problema ............................................................................................. 7
Planteamiento del problema ............................................................................................ 7
Solución propuesta .......................................................................................................... 8
Objetivos ......................................................................................................................... 9
2.4.1 Objetivo General ................................................................................................. 9
2.4.2 Objetivos Específicos .......................................................................................... 9
2.5
Alcance del Proyecto .................................................................................................... 10
CAPÍTULO 3 - MARCO TEÓRICO Y TECNOLÓGICO .................................................... 11
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
Arquitectura de Tres Capas ........................................................................................... 11
Servicio Web ................................................................................................................. 13
JEE ................................................................................................................................ 13
EJB ................................................................................................................................ 14
JDBC ............................................................................................................................. 14
DataSource .................................................................................................................... 15
Apache Log4J ............................................................................................................... 15
Apache Ant ................................................................................................................... 16
XDoclet ......................................................................................................................... 16
Servidor de aplicaciones ............................................................................................... 16
BPEL ............................................................................................................................. 17
CAPÍTULO 4 - PROCESO DE DESARROLLO .................................................................... 19
4.1
Fases .............................................................................................................................. 19
4.1.1 Análisis y Diseño .............................................................................................. 19
4.1.2 Implementación ................................................................................................. 21
4.1.3 Pruebas .............................................................................................................. 21
4.1.4 Implantación y Seguimiento ............................................................................. 21
vii
CAPÍTULO 5 - DESARROLLO DE LA SOLUCIÓN ........................................................... 23
5.1
Análisis y Diseño .......................................................................................................... 23
5.1.1 Identificación y análisis de los requerimientos funcionales y no funcionales .. 23
5.1.2 Definición de objetivos y alcance ..................................................................... 24
5.1.3 Estudio de las herramientas a utilizar................................................................ 24
5.1.4 Elaboración del diseño funcional ...................................................................... 25
5.1.5 Elaboración del diseño técnico.......................................................................... 25
5.1.6 Elaboración del documento de arquitectura ...................................................... 26
5.1.7 Diseño de la matriz de pruebas ......................................................................... 26
5.2
Implementación ............................................................................................................. 27
5.2.1 Clases elaboradas .............................................................................................. 27
5.2.2 Conexión con la capa BackEnd ......................................................................... 28
5.2.3 Implementación de los EJB ............................................................................... 30
5.2.4 Métodos y funcionamiento del Middleware ..................................................... 31
5.2.5 Compilación e implantación del Middleware ................................................... 33
5.2.6 Implementación de prototipos usando BPEL .................................................... 34
5.3
5.4
Pruebas .......................................................................................................................... 37
Implantación y seguimiento .......................................................................................... 37
CONCLUSIONES Y RECOMENDACIONES ........................................................................ 39
REFERENCIAS BIBLIOGRÁFICAS ...................................................................................... 41
A - GLOSARIO DE TÉRMINOS .............................................................................................. 43
B - REQUERIMIENTOS DEL SISTEMA ............................................................................... 45
B.1 Requerimientos funcionales .......................................................................................... 45
B.2 Requerimientos no funcionales ..................................................................................... 47
C - MATRIZ DE PRUEBAS ...................................................................................................... 48
viii
ÍNDICE DE FIGURAS
Figura 1.1 – Organigrama de Indra ................................................................................................. 6
Figura 3.1 – Arquitectura de tres capas ......................................................................................... 12
Figura 3.2 – Ejemplo de un servidor de aplicaciones JEE ............................................................ 17
Figura 5.1 – Objetos diseñados para la Capa Middleware ............................................................ 26
Figura 5.2 – Ejemplo de la invocación a un procedimiento en el BackEnd. ................................. 30
Figura 5.3 – Ciclo de ejecución del Configurador P3S ................................................................. 32
Figura 5.4 – Servicio Web prototipo desarrollado usando BPEL ................................................. 36
ix
ÍNDICE DE TABLAS
Tabla 1 – Clases Desarrolladas ...................................................................................................... 27
Tabla 2 – Convención usada para los nombres de los EJB. .......................................................... 31
Tabla 3 – Cuadro comparativo entre los tiempos de configuraciones según los tipos de tarifas .. 40
x
LISTA DE SÍMBOLOS Y ABREVIATURAS
API
Application Programming Interface
BPEL
Business Process Execution Language
EAR
Enterprise ARchive
EJB
Enterprise JavaBeans
IDE
Integrated Development Environment
JAR
Java ARchive
JEE
Java Enterprise Edition
JDBC
Java DataBase Connectivity
JNDI
Java Naming and Directory Interface
P3S
Producto, Planes, Promociones y Servicios
SOAP
Simple Object Access Protocol
SPI
Service Provider Interface
SQL
Structured Query Language
WAR
Web Application aRchive
WSDL
Web Services Description Language
XML
eXtensible Markup Language
xi
INTRODUCCIÓN
En la actualidad las empresas de servicio de telecomunicaciones han tenido mucho auge y
desarrollo, éstas han revolucionado las actividades realizadas diariamente, ofreciéndole a la gente
común y de negocio, herramientas primordiales para el desempeño personal y profesional.
Las telecomunicaciones permiten transmitir un mensaje desde un punto a otro. Estas
cubren todas las formas de comunicación a distancia, incluyendo radio, televisión, telefonía,
transmisión de datos e interconexión de computadoras a nivel de enlace. Estos servicios generan
costos para las empresas proveedoras y los usuarios deben cancelar los precios establecidos para
poder disfrutarlos.
Es por ello que Indra toma la decisión de ofrecerle a una de las empresas de
telecomunicaciones más importante del país, una solución para una de las actividades más
significativas de la empresa, la cual es el cobro de sus tarifas; con esto se busca agilizar y
optimizar la funcionalidad de los cobros a los clientes.
A partir de una serie de dificultades e inconvenientes que presenta la empresa cliente
dentro del área que maneja la configuración de las tarifas asociadas a los planes, promociones y
servicios de los productos Postpago ofrecidos (P3S), se determina la necesidad de desarrollar una
aplicación que automatice este proceso de configuración, buscando disminuir la ocurrencia de
errores ocasionados por la intervención manual.
P3S es un módulo de la plataforma de Postpago, que permite configurar los planes,
promociones y servicios que aplican a los productos que brinda la empresa cliente a sus usuarios
dentro de las distintas líneas de negocio que éste maneja. Estudiados los requerimientos del
cliente se hace la propuesta de lo que sería el Configurador P3S, donde se contempla que la
aplicación deberá ser desarrollada en una arquitectura de tres capas, divididas en BackEnd,
Middleware y FrontEnd.
El presente proyecto de pasantía consiste en diseñar, desarrollar e implementar las
funcionalidades de la capa Middleware de una aplicación que permita optimizar la configuración
de tarifas, planes, promociones, productos y servicios de forma automatizada, y así poder generar
finalmente los scripts de modificación. Dentro del alcance de este proyecto se incluye la
integración del Middleware con las otras dos capas del Configurador P3S, creando una aplicación
1
completamente funcional y operativa.
El desarrollo del proyecto se presenta a través del informe de pasantía, el cual se compone
de cinco capítulos. En el Capítulo 1 se presenta una descripción del entorno empresarial en el
cual se desarrolló la pasantía, la Empresa Indra, contemplándose su historia, misión, visión,
valores y la estructura organizativa.
En el Capítulo 2 se presenta la definición del proyecto, para ello se detallan los
antecedentes y planteamiento del problema, solución propuesta, objetivos general y específicos,
finalizando con el alcance del proyecto.
El Capítulo 3 comprende los marcos teórico y tecnológico, presentándose los conceptos y
teorías que fundamentan este proyecto. Se abordan temas como la arquitectura de tres capas, los
servicios web, servidor de aplicaciones, JEE, EJB, JDBC, ANT, entre otros.
En el Capítulo 4 se exponen los lineamientos utilizos para el desarrollo del producto, las
fases y disciplinas que se siguieron, así como los artefactos generados durante la construcción de
la aplicación.
El Capítulo 5 presenta las actividades desarrolladas por cada fase contemplada,
proporcionando los detalles de las decisiones de diseño que se tomaron.
Por último, se presentan las Conclusiones y Recomendaciones que resumen los resultados
y experiencias obtenidas luego de la culminación del proyecto. Adicionalmente, se incluye un
área de apéndices donde se complementa la información ofrecida en el cuerpo principal del
trabajo.
2
CAPÍTULO 1
ENTORNO EMPRESARIAL
El presente capítulo describe el entorno empresarial de Indra, indicando su reseña
histórica, misión, valores y estructura organizacional, a fin de dar a conocer el área de trabajo y
las principales funciones del Departamento al cual el pasante ha sido asignado, para el desarrollo
de su proyecto de pasantías.
Indra es una compañía global de tecnología, innovación y talento, líder en soluciones y
servicios de alto valor añadido para los sectores de Transporte y Tráfico, Energía e Industria,
Administración Pública y Sanidad, Servicios Financieros, Seguridad y Defensa, y Telecom y
Media. Indra opera en más de 100 países y cuenta con más de 30.000 profesionales a nivel
mundial que comparten su conocimiento de los diferentes sectores y países para encontrar
soluciones innovadoras a los desafíos de sus clientes.
A través de la combinación de la electrónica, las comunicaciones y las tecnologías de la
información, sus soluciones añaden inteligencia a diferentes infraestructuras para dar respuesta a
los nuevos retos y problemas de sus clientes y mejorar el desempeño económico, social y
medioambiental, garantizando su sostenibilidad a largo plazo.
1.1 Historia
El origen de las actividades de Indra se remonta a 1921, cuando se constituyó en la
localidad madrileña de Aranjuez la primera de sus empresas llamada “EISA” que, posteriormente
y tras varias modificaciones de carácter patrimonial y societario, daría lugar a la configuración en
1993 de lo que hoy es Indra. Es en el año 1993 cuando todas las filiales de INISEL y CESELSA
se fusionan para constituir Indra Sistemas, por lo que la nueva marca aglutina cuatro sociedades:
ERITEL (Consultoría y servicios informáticos), DISEL (Automatización y control), CESELSA
(Electrónica de defensa) e INISEL ESPACIO (Espacio).
3
En el año 1994 se forma la primera filial Indra América. Para 1995, Indra comienza a
desarrollar sus primeros proyectos tecnológicos en China. Posteriormente, en 1999 surge la
absorción de todas las sociedades ya integradas desde el año 1993.
Indra realiza en el año 2001 la adquisición de la empresa Europraxis, especializada en
consultoría estratégica, y del 10,83% de la empresa BMB, especializada en servicios de Business
Process Outsourcing (BPO) para el sector financiero. En el 2002, se instala en Arroyo de la
Vega, Alcobendas, Madrid y constituye Indra Beijing IT Systems con sede en China. Además, se
adquiere el 60% de la compañía portuguesa llamada Companhia Portuguesa de Computadores
Informática e Sistemas (CPC-IS), una de las cinco primeras compañías de tecnologías de la
información del mercado portugués y se crea Indra CPC.
Para el 2003, Indra era el único proveedor no Americano de la US Navy y comienza con
el desarrollo de tecnología de vanguardia para el Cielo Único Europeo1.
En el 2004, se realiza la firma de los diez principios del Pacto Mundial de las Naciones
Unidas, el cual supone para Indra un paso adelante en su política de sostenibilidad con el trabajo
y con la sociedad. Indra se convierte en el 2005 en la compañía española con mayor número de
profesionales certificados Project Management Professional (PMP) y se obtienen los primeros
certificados CMMi Nivel 3.
Indra en el 2006 entra a cotizar en los índices selectivos de sostenibilidad, The Dow Jones
Sustainability Indices (DJSI), y se consolida como la primera compañía de soluciones y servicios
de alto contenido tecnológico en España y una de las principales compañías europeas y
latinoamericanas.
Para el año 2007 adquiere la compañía australiana de alta tecnología Interscan y se crea la
nueva compañía Indra BMB con 100% capital de Indra, la cual aglutina todas las actividades de
BPO de la antigua BMB (adquirida en marzo de 2007) y del grupo Azertia, también asociado a
Indra. Además, Indra entra en el mercado de Seguridad China con el sistema de vigilancia de
fronteras de Hong Kong.
1
El Cielo Único Europeo es un conjunto de medidas dirigidas a responder a las necesidades en términos de
capacidad y de seguridad del espacio aéreo de Europa.
4
1.2 Misión
“Asistir a las organizaciones para su exitosa gestión del cambio empresarial, lo que
incluye colaborar con su evolución de avance tecnológico.”[1]
1.3 Visión
“Ser una empresa innovadora y del conocimiento en las relaciones con nuestros públicos
internos y externos (accionistas, empleados, clientes, proveedores, etc.) así como las instituciones
que lo cultivan y desarrollan y las comunidades en las que actúan.”[1]
1.4 Valores
 Innovación en el servicio que se presta.
 Excelencia en el servicio.
 Responsabilidad y compromiso con el trabajo.
 Calidad en los servicios y soluciones.
 Garantizar soluciones sostenibles.
1.5 Estructura Organizacional
El pasante a fin de realizar su proyecto de pasantía larga, fue ubicado en la Gerencia de
Servicios
de
Mantenimiento
de
Aplicaciones
(AM),
dentro
del
Departamento
de
Aprovisionamiento, el cual tiene entre sus funciones principales las siguientes.
 La comunicación debido a que actúa como el centro de interlocución con el cliente para
tareas asociadas al Servicio (Calidad, ANS, Procedimientos, estándares, y planes de
recursos) y brinda apoyo en la definición y elaboración de los informes a la Dirección
(comités), tanto de Indra, como del Cliente.
 Seguimiento y control para la coordinación con las diferentes áreas de Indra y el Cliente
para el seguimiento, control del contrato, gestión de estándares (metodología Indra,
Cliente), biblioteca de activos (modelos, plantillas, instrucciones, y guías). Seguimiento y
atención de informes de resultado de auditorías.
5
 Apoyo a la operación para el Aseguramiento de Calidad, asegurando la definición y
seguimiento de los planes de calidad, planes de recursos, revisiones de calidad y apoyo en
la configuración y utilización de las herramientas para la gestión del Servicio.
Figura 1.1 - Organigrama de Indra
6
CAPÍTULO 2
DEFINICIÓN DEL PROYECTO
El siguiente capítulo contiene la definición del proyecto de pasantía. Se presentan los
antecedentes y planteamiento del problema, así como las soluciones propuestas para solventar la
situación presentada. También se plantean los objetivos y alcances del proyecto.
2.1 Antecedentes del problema
P3S es un módulo de la plataforma de Postpago, que permite configurar los planes,
promociones y servicios que aplican a los productos que brinda la empresa cliente a sus usuarios
dentro de las distintas líneas de negocio que éste maneja.
En noviembre del 2009 se llevó a cabo una reunión entre los líderes funcionales del área
de aprovisionamiento de Indra y el líder de proyecto de la empresa cliente, donde se expresa la
necesidad que tiene el cliente de obtener una aplicación que permita al equipo encargado del área
de aprovisionamiento de P3S, realizar el proceso de configuración de tarifas de una manera más
automatizada y sencilla, buscando reducir los errores que se presentan por la gran intervención
manual que tiene dicho proceso; como resultado de la reunión se acuerda el desarrollo del
proyecto Configurador P3S por parte de Indra.
Estudiados los requerimientos del cliente Indra hace la propuesta de lo que sería el
Configurador P3S, donde se contempla que la aplicación será desarrollada en una arquitectura de
tres capas, divididas en BackEnd, Middleware y FrontEnd. El proyecto de pasantía consiste en el
desarrollo de la capa Middleware.
2.2 Planteamiento del problema
El proceso de configuración P3S consiste en la modificación y actualización de las tarifas
y descuentos sobre los elementos pertenecientes a las líneas de negocio que maneja el módulo
7
P3S; este proceso ha sido un trabajo manual a lo largo de los años; la actividad principal de la
configuración P3S es la elaboración de los scripts de configuración y modificación, los cuales
son ejecutados en la base de datos generando así las modificaciones a las tarifas y los descuentos.
Esta actividad requiere el trabajo de varias personas con conocimiento profundo de toda la lógica
de negocio asociada, así como de una gran inversión de tiempo para completar dicha tarea. Por
causa de que el proceso es hecho de forma manual existen datos incorrectos e inconsistentes, que
aunque no son reflejados como un error para el comportamiento de la transacción o facturación
de los servicios del usuario, deben corregirse por no ser consistentes en el negocio.
Los principales problemas de la configuración P3S actual son:
 La información que se maneja para estas configuraciones es bastante extensa y se
almacenan en una gran cantidad de tablas en la base de datos; la distribución que tiene esta
información no es sencilla, y la búsqueda de los datos necesarios para una configuración
específica puede tomar una gran cantidad de tiempo.
 Algunos de los tipos de tarifas que se desean configurar en P3S, se manejan usando
diversas combinaciones de parámetros y valores que las caracterizan. Estas combinaciones
son complejas, y muchas veces los valores varían en rangos sumamente amplios.
2.3 Solución propuesta
Se le propone al cliente el desarrollo de una aplicación que genere los scripts de
modificación, necesarios para realizar la configuración de tarifas y descuentos de los elementos
P3S. Esta aplicación debe tener una interfaz sencilla, de manera que el usuario tenga fácil acceso
a los datos requeridos, sin necesidad de poseer conocimientos detallados de la base de datos que
almacena esta información. La aplicación se divide en tres capas, la capa FrontEnd se encarga de
toda la interacción con el usuario, la capa BackEnd se encarga de obtener la información
proveniente de la base de datos, y la capa Middleware busca ser el enlace entre las otras dos
capas de la aplicación, encargándose de aplicar la lógica del negocio necesaria en las
configuraciones P3S.
El proyecto de pasantía larga consiste en el desarrollo de la capa Middleware de la
aplicación Configurador P3S; este desarrollo permitirá la abstracción de los datos obtenidos
desde la capa BackEnd, así como la transformación y aplicación de la lógica del negocio
requerida sobre dichos datos, con el fin de hacerlos accesibles para la capa FrontEnd del sistema.
8
El Middleware también se encargará de generar los scripts de configuración a partir de los datos
suministrados por la capa FrontEnd, que indican los cambios que el usuario del Configurador
P3S introdujo en la aplicación. Estos scripts generados son los necesarios para aplicar las
modificaciones de las tarifas deseadas, sobre el módulo de aprovisionamiento P3S.
La capa Middleware es planteada como un módulo independiente con respecto a las otras
dos capas con las que se comunica, que encapsule el modelo de negocio que maneja el
Configurador P3S. El módulo debe tener las siguientes características:
 Portable, para que pueda ser llevado de una plataforma a otra sin modificaciones a nivel de
programación y no limitándose a un sólo entorno de ejecución determinado.
 Interoperable, para que pueda ser compatible no solo con las otras capas de la aplicación,
sino también con las distintas plataformas que maneja el cliente; buscando que esta capa
pueda ser reutilizada por algún otro aplicativo que necesite acceder la información
manejada en P3S.
 De fácil acceso, para que se pueda acceder a sus funcionalidades desde cualquier sistema o
módulo del cliente, aplicando estándares de comunicación.
2.4 Objetivos
A continuación se presentan la definición del objetivo general y los objetivos específicos
que se tienen para este proyecto de pasantía.
2.4.1 Objetivo General
 Diseñar, desarrollar e implementar las funcionalidades de la capa Middleware de una
aplicación que permita optimizar la configuración de tarifas y descuentos de los planes,
promociones, productos y servicios ofrecidos; y así poder generar de forma automatizada
los scripts que inserten en la base de datos las modificaciones realizadas.
2.4.2 Objetivos Específicos
 Realizar un estudio del problema tomando en cuenta los requerimientos presentados por la
empresa cliente, y posteriormente plantear una solución que se adapte a sus necesidades.
 Realizar una investigación acerca de las herramientas y tecnologías a ser utilizadas para la
9
resolución del problema.
 Diseñar y desarrollar los objetos que servirán para resguardar y abstraer toda la lógica de
negocio de la configuración de P3S, para el fácil manejo y entendimiento de los datos por
parte del usuario final de la aplicación.
 Diseñar y desarrollar la comunicación con los paquetes y procedimientos a nivel de base de
datos proporcionados por la capa BackEnd, para la obtención de los datos involucrados en
la configuración y la debida manipulación de los mismos para el manejo por parte de la
capa FrontEnd.
 Diseñar y desarrollar la creación de los scripts de configuración con los datos de las
modificaciones ingresadas por el usuario de la aplicación a nivel de FrontEnd, aplicando
las reglas del negocio para la modificación de tarifas y descuentos.
 Crear los servicios web donde serán publicados las funcionalidades desarrolladas en la capa
Middleware, para que puedan ser accedidas por la capa FrontEnd u otros aplicativos.
2.5 Alcance del Proyecto
El proyecto abarca el desarrollo de la capa de negocio de la aplicación Configurador P3S,
Este desarrollo comprende:
 Desarrollo de la capa Middleware, con los objetos y los métodos que abarquen la
funcionalidad de dicha capa.
 Publicación de los servicios web que le proporcionen a la capa FrontEnd estructuras
accesibles para el manejo de los datos.
 Documentación funcional y formal que incluye: documento técnico, documento funcional y
documento de arquitectura.
 Realización de pruebas individuales e integrales y documentación de las mismas, mediante
la matriz de pruebas y el documento de evidencias.
10
CAPÍTULO 3
MARCO TEÓRICO Y TECNOLÓGICO
En el presente capítulo se describen los principales conceptos y bases teóricas aplicadas
en el desarrollo de este proyecto de pasantía, buscando exponer las características de la
arquitectura y de las principales herramientas utilizadas para la implementación del sistema.
3.1 Arquitectura de Tres Capas
La arquitectura de software es la organización fundamental de un sistema, que comprende
sus componentes, las relaciones entre ellos y el ambiente, y los principios que rigen su diseño y
su ejecución.
Existen diversos patrones y estilos de arquitecturas; uno de los más utilizado por las
empresas dado los beneficios que aporta a la calidad de los sistemas es la arquitectura en varios
niveles o capas, en particular la arquitectura de tres capas. Un sistema por niveles está organizado
de manera jerárquica, donde cada capa provee un servicio a la capa superior, y requiere de
servicios de la capa inferior.
La arquitectura de tres capas divide la aplicación en tres secciones. Una capa es la de
presentación o FrontEnd la cual se encarga de crear la interacción con el usuario de la aplicación
haciendo uso de interfaces, estas interfaces buscan traducir las funcionalidades de la aplicación
en instrucciones que el usuario pueda entender. Otra pieza es la capa de negocio o Middleware,
donde están los métodos y objetos que materializan y construyen el manejo de la lógica de
negocio dentro de la aplicación así como el traslado de los datos entre las otras dos capas; el
concepto de Middleware se usa propiamente cuando la comunicación entre la capa de negocio y
la capa de presentación se hace mediante servicios o invocaciones externas permitiendo que la
capa de negocio sea vista como si fuera un aplicativo externo a la capa de presentación. Y por
último, la capa de datos o BackEnd, es donde se maneja la obtención de la información
11
almacenada y necesaria para la aplicación, esta información es representada generalmente por
una base de datos o un sistema de archivo.
Figura 3.1- Arquitectura de tres capas. [2]
En la Figura 3.1, se puede observar la distribución propuesta por un modelo de tres capas.
Se describen los elementos que componen cada capa, y las conexiones entre ellos. Como ya se
mencionó, la capa FrontEnd contiene los elementos de interfaz del usuario, la capa de
Middleware, contiene todos los artefactos que materializan e implementan la aplicación, en
general, las reglas del negocio. Y por último, la capa de BackEnd, contienen lo que serían los
recursos de la aplicación, por ejemplo, las bases de datos.
La arquitectura de tres capas constituye un modelo óptimo de distribución de los
componentes y partes de un sistema, permitiéndole a los desarrolladores dividir un problema
complejo en una secuencia de pequeños problemas. Esta separación también facilita una
distribución real de la aplicación, permitiendo que cada capa pueda estar implantada en
servidores diferentes. [3]
12
3.2 Servicio Web
Un Servicio Web es un conjunto de estándares y protocolos que permite la comunicación
distribuida entre sistemas o aplicaciones en diferentes máquinas al exponer uno o varios métodos
para que sean invocados por estos sistemas externos. Los servicios web proveen medios
estándares de interoperabilidad entre distintas aplicaciones de software, ejecutándose en una
variedad de plataformas. [4]
Los servicios web presentan las siguientes características:
 Son accesibles a través del protocolo SOAP (Simple Object Access Protocol).
 Su interfaz se describe con un documento WSDL (Web Services Description Language).
SOAP es un protocolo de comunicaciones entre aplicaciones establecido por paso de
mensajes en formato XML. Los mensajes SOAP son unidireccionales, sin embargo todas las
aplicaciones pueden participar como emisoras o receptoras indistintamente. Los mensajes SOAP
pueden tener diversos fines: petición, respuesta, notificación, mensajería asíncrona, entre otros.
WSDL es un lenguaje basado en XML que permite describir los servicios web que se
despliegan, así como localizar y ubicar dichos servicios web en la Internet. Un documento WSDL
es en realizad un documento XML que describe en su totalidad las características que posee un
servicio web, su localización y ubicación, y los métodos y parámetros que soporta. [5]
3.3 JEE
Java Edición Empresarial (JEE, Java Enterprise Edition) es la plataforma de
programación principal para desarrollar y ejecutar aplicaciones en el lenguaje Java sobre una
arquitectura distribuida en varios niveles, mediante la composición de varios componentes o
especificaciones de software modulares bajo un servidor de aplicaciones.
La Plataforma JEE tiene varios beneficios entre los cuales se pueden mencionar:
 Permite al programador la creación y desarrollo de una aplicación empresarial portable
entre plataformas, escalable e integrable con tecnologías anteriores.
 Permite al desarrollador mayor concentración en la lógica del negocio que en las tareas de
mantenimiento a bajo nivel. [6]
13
3.4 EJB
Enterprise JavaBeans (EJB) es la arquitectura de componentes del lado del servidor para
la plataforma JEE. La tecnología EJB permite el desarrollo rápido y simplificado de aplicaciones
distribuidas basadas en tecnología Java. [7]
El objetivo principal de los EJB es dotar al programador de un modelo que le permita
abstraerse de los problemas generales de una aplicación empresarial (concurrencia, transacciones,
persistencia, seguridad, entre otras) para centrarse en el desarrollo de la lógica de negocio.
Los EJB proporcionan a la plataforma JEE la posibilidad de dividir la lógica del negocio
en componentes, con el fin de crear arquitecturas distribuidas que proporcionen servicios remotos
con un sistema de seguridad y transacciones homogéneo, así como la posibilidad de conectarse
con otros sistemas diferentes. [8]
Las características esenciales del desarrollo usando la arquitectura EJB son:
 Portabilidad a través de diferentes servidores de aplicación.
 Reutilización de componentes.
 Incremento de la productividad de los desarrolladores.
3.5 JDBC
Java Database Connectivity (JDBC) es el API de Java que es estándar para las conexiones
entre una aplicación Java y una gran cantidad de manejadores de base de datos. [9]
La idea que está detrás de JDBC es dar a los programadores un API que permita codificar
y manejar los datos dentro de sus aplicaciones Java, de manera independiente al fabricante del
gestor de base de datos. JDBC tiene dos capas, a saber, por una parte el API JDBC y por otra el
controlador del fabricante, este último recibe las peticiones de JDBC y las traduce en servicios
internos del gestor de bases de datos, este controlador es específico para cada manejador. El
controlador es el que recibe las peticiones del programa Java y las traduce a órdenes directas al
gestor de la base de datos seleccionada, de manera transparente para el programador. [10]
14
3.6 DataSource
Dentro de las tecnologías usadas en el proyecto se encuentran los DataSource, que no son
más que clases Java pertenecientes al API JDBC, estas clases contienen un conjunto de
propiedades que identifican, describen y generalizan las conexiones a una base de datos desde
una aplicación Java. Estas propiedades incluyen información como el nombre de la base de datos,
la ubicación del servidor donde ésta se encuentra y el protocolo de red usado para comunicarse.
Las aplicaciones desarrolladas sobre la plataforma JEE generalmente usan objetos
DataSource para acceder a bases de datos relacionales, estos objetos son manejados dentro del
servidor de aplicaciones donde está implantado el sistema.
Además, los objetos DataSource trabajan con el servicio de nombres JNDI (Java Naming
and Directory Interface) el cual asocia un nombre al objeto para poder referenciarlo en el código.
Una vez que un objeto DataSource está registrado en el servicio JNDI, las aplicaciones pueden
usar el API JNDI para acceder al objeto DataSource, mediante al nombre que fue establecido,
para conectarse a la base de datos deseada. La ventaja de esto es que el programador no necesita
conocer los detalles de la conexión a la base de datos, ni cómo se establece, y si se presenta un
cambio en el servidor que contiene al manejador o en la manera que se conecta a él, dentro de la
codificación no se necesita hacer cambio alguno, ya que esos detalles le son transparentes a la
aplicación desarrollada. [10]
3.7 Apache Log4J
Es una herramienta de código abierto, basada en Java, que permite generar mensajes de
registro (también llamados logs) en aplicaciones Java, estos mensajes de registro son
comúnmente usados para depurar las aplicaciones, buscando identificar y corregir los errores que
éstas presenten. Esta herramienta permite configurar la salida y el nivel de granularidad de los
mensajes, a tiempo de ejecución y no a tiempo de compilación como es comúnmente realizado;
esta configuración se hace mediante el uso de archivos externos donde se establece un conjunto
de propiedades determinadas.
“Debido a que los logs en Log4J son gestionados en tiempo de ejecución y sin alterar la
fuente, éstos no incurren en altos costos de desempeño. Este proceso de registro provee al
desarrollador con un contexto eficiente y detallado de las fallas de la aplicación”. [11]
15
3.8 Apache Ant
Apache Ant es una herramienta de programación basada en Java usada para la
compilación y construcción de proyectos mediante el uso de archivos XML de configuración;
estos archivos contienen distintos árboles de ejecución, llamados targets, que contienen diversas
tareas a ser ejecutadas; en lugar de tener que utilizar comandos de cónsola que ejecuten dichas
tareas, esto permite que el proceso de compilación sea una tarea mecánica y no limitada a las
distintas órdenes de cónsola que tiene cada sistema operativo, siendo una buena solución
multiplataforma. Esta herramienta también permite el uso de distintas bibliotecas externas para
agregar tareas a ejecutar, facilitando el proceso de compilación. [12]
3.9 XDoclet
XDoclet es un motor de generación de código Java, que permite, con el uso de etiquetas
colocadas en los comentarios del código, generar clases Java, así como archivos descriptores y de
configuración, necesarios para la correcta ejecución de las aplicaciones desarrolladas. Viene con
una biblioteca de etiquetas predefinidas, que simplifican la codificación para las varias
tecnologías. Es una herramienta bastante útil ya que puede llegar a reducir bastante el tiempo
usado para el desarrollo.
Mayormente esta herramienta es integrada con Apache Ant, para generar el código
necesario al momento de compilar toda la aplicación. XDoclet se originó como una herramienta
para la creación de clases EJB, pero dado su naturaleza de código abierto y el gran aporte de los
desarrolladores, se ha aumentado la funcionalidad de la herramienta convirtiéndose en un motor
para generar código con propósito general. [13]
3.10 Servidor de aplicaciones
Un servidor de aplicaciones es un software que proporciona aplicaciones a los equipos o
dispositivos cliente, por lo general a través de Internet y utilizando distintos protocolos de
conexión. Los servidores de aplicación se distinguen de los servidores web por el uso extensivo
del contenido dinámico y por su frecuente integración con bases de datos. Además, un servidor
de aplicaciones es un producto basado en un componente que se encuentra en el plano medio de
la arquitectura central de un servidor, siendo perfecta para la estructuración de una capa de
negocio o Middleware dentro de una arquitectura de tres capas.
16
Los servidores de aplicaciones están estrechamente ligados con el desarrollo usando la
plataforma JEE, ya que los primeros servidores de este tipo fueron concebidos para estas
tecnologías, esto no impide que sea la única ya que existen en el mercado otros servidores de
aplicaciones para distintas tecnologías. [14]
Figura 3.2 – Ejemplo de un servidor de aplicaciones JEE. [15]
En la figura 3.2 se puede ver el manejo de aplicaciones en arquitecturas de tres capas en
un servidor de aplicaciones JEE; la capa cliente puede contener una o más aplicaciones, tanto
locales como aplicaciones web. El manejo de la plataforma JEE se hace en la capa intermedia,
donde generalmente los servidores de aplicaciones JEE están comprendidos por al menos dos
servidores internos, llamados también contenedores, un contenedor Web y un contenedor EJB,
estos contenedores son los que manejan las peticiones de la capa FrontEnd, para luego el servidor
de aplicaciones es el que maneja las conexiones con la capa BackEnd para el acceso a los datos
requeridos. El servidor de aplicaciones usado en este proyecto es Oracle WebLogic Server que
consta de una estructura similar a lo explicado previamente.
3.11 BPEL
Business Process Execution Language (BPEL) es un lenguaje de especificación basado en
XML para representar flujos de procesos de una manera adecuada para que un servidor BPEL
pueda leerla e interpretarla. Es decir, es un lenguaje de especificación completamente ejecutable.
17
El desarrollo de BPEL nace de la necesidad de manejar lenguajes distintos entre la
programación a gran escala y la programación detallada, ya que en su esencia ambos tipos de
desarrollo requieren de distintos grados de comunicación con otros servicios.
A través de un documento XML BPEL, un analista de negocio es capaz de representar la
lógica asociada y los elementos con los que se verá relacionado. Estos elementos serán servicios
Web y la lógica el proceso BPEL.
Es un lenguaje de alto nivel que lleva el concepto de servicio un paso adelante al
proporcionar métodos de definición y soporte para flujos de trabajo y procesos de negocio. [16]
18
CAPÍTULO 4
PROCESO DE DESARROLLO
Para la construcción del Configurador P3S se utilizó una metodología de desarrollo que
sigue unos lineamientos propios de la empresa. En el presente capítulo se estudia en qué consiste
este proceso de desarrollo, explicando sus fases y actividades
A lo largo de las fases del proceso de desarrollo dentro de la empresa Indra, se busca
destacar los siguientes aspectos:
 Trabajo en equipo: las tareas para el desarrollo del proyecto son divididas entre los
participantes y buscan complementarse entre sí.
 Reuniones semanales: semanalmente se realizan reuniones para discutir el progreso del
proyecto, lo que permite la comunicación constante entre los miembros del equipo, la cual
se hace extensiva al cliente para darle a conocer la evolución del proyecto.
 Modular: el proyecto se desarrolla por módulos haciéndolo más legible y manejable. Estos
lineamientos de desarrollo buscan dividir un problema complejo en varios sub-problemas
más simples con el fin de que puedan ser resueltos fácilmente.
4.1 Fases
El desarrollo del proyecto se basa en un proceso de desarrollo por etapas o fases a través
de las cuales se simplifican los objetivos, buscando respuestas eficientes y rápidas para un
ambiente de requerimientos cambiantes.
A continuación se describen las actividades correspondientes a cada fase.
4.1.1 Análisis y Diseño
En esta primera fase del desarrollo se realiza un estudio del proyecto, cuyo fin es
19
planificar y diseñar la solución al problema planteado. Las actividades ejecutadas en esta fase se
detallan a continuación:
 Identificación y análisis de los requerimientos funcionales y no funcionales: esta
actividad permite determinar con exactitud las necesidades y los requerimientos del cliente.
Se realiza un estudio sobre el modelo de negocios de la empresa cliente, se coteja la
situación actual (problema) versus la situación ideal (solución).
 Definición de objetivos y alcance: se precisan los objetivos a cumplir una vez analizado el
problema, lo que permite determinar los productos a desarrollar en el proyecto definiendo
así su alcance.
 Estudio de las herramientas a utilizar: se definen las herramientas tecnológicas a ser
utilizadas considerando las necesidades del proyecto, las cuales son estudiadas para conocer
sus ventajas y desventajas.
 Elaboración del diseño funcional: esta actividad permite preparar el documento que
contempla la visión general del proyecto a desarrollar definiendo el alcance y los objetivos
que alcanzará, se describe el modelo del negocio implicado en la solución, se especifican
los requerimientos funcionales y no funcionales, finalizando con la presentación visual de
cómo será el producto final.
 Elaboración del documento de arquitectura: realización del registro documental donde
se especifica la estructura de la aplicación así como las decisiones tecnológicas establecidas
para la concepción de la solución, indicando los requerimientos que tiene el ambiente de
desarrollo de cada módulo en que es dividido el proyecto.
 Elaboración del diseño técnico: se documenta el bosquejo que se tiene de la solución
diseñada, donde se indican las estructuras de los objetos y métodos a utilizar, la
codificación, así como los criterios para realizar las validaciones y verificación de los datos
involucrados.
 Diseño de la matriz de pruebas: actividad que tiene como fin elaborar en base a las
funcionalidades planteadas, un patrón de pruebas de la aplicación, las cuales serán
realizadas una vez culminado el desarrollo.
20
4.1.2 Implementación
La segunda fase del desarrollo consiste en la aplicación de métodos que permiten poner en
funcionamiento el Configurador P3S. Las actividades ejecutadas se resumen a continuación.
 Codificación: se desarrolla la solución planteada en base a lo establecido en los
documentos de arquitectura, técnico y funcional, aplicando para ello las tecnologías
analizadas.
 Integración: se unifica el trabajo con la integración de las funcionalidades y módulos
paralelamente al desarrollo, lo que permite observar los resultados rápidamente.
4.1.3 Pruebas
Esta tercera fase permite ejecutar las pruebas necesarias para evaluar la aplicación y
determinar los ajustes de ser necesarios. Las actividades ejecutadas se resumen:
 Pruebas unitarias: se aplica la matriz de pruebas realizada en el diseño, y se señalan los
resultados obtenidos.
 Validación de las soluciones: se elabora un registro donde se evidencian los resultados de
la matriz de pruebas con el fin de comprobar que el comportamiento obtenido en las
pruebas unitarias es el correcto.
 Pruebas integrales: se aplica la matriz de pruebas integrales realizada en el diseño, y se
indican en ella los resultados obtenidos.
 Validación de la solución integral: se elabora un registro donde se evidencian los
resultados de la matriz de pruebas con el fin de comprobar que el comportamiento obtenido
en las pruebas integrales es el correcto.
 Identificación de fallas y ajustes: de acuerdo a los resultados obtenidos con la aplicación
de las pruebas, se reparan las fallas encontradas y se realizan los ajustes pertinentes.
4.1.4 Implantación y Seguimiento
La cuarta y última fase se relaciona con la culminación del proyecto. Las actividades
ejecutadas se detallan a continuación:
 Preparación de la solución: se elabora una carpeta de entrega con los archivos listos para
ser implantados.
21
 Documentación formal: se elabora el manual del programador, representado por un
documento que contiene las especificaciones técnicas de la solución desarrollada y los
pasos para su instalación. De igual manera, un manual de usuario para explicar el
funcionamiento de la aplicación a los usuarios finales.
 Apoyar el proceso de implantación: esta actividad permite al equipo de desarrollo servir
de soporte durante la implantación del sistema en la empresa cliente.
 Apoyar las pruebas integrales del cliente: servir de soporte durante el proceso de pruebas
que se realicen en la empresa cliente, lo que permitirá resolver dificultades si se presentan.
22
CAPÍTULO 5
DESARROLLO DE LA SOLUCIÓN
El siguiente capítulo explica detalladamente el proceso de desarrollo del proyecto de
pasantía, describiendo de qué manera se emplearon las distintas herramientas expuestas en
capítulos anteriores. Este capítulo está dividido de acuerdo a las distintas fases establecidas por
los lineamientos de desarrollo utilizados en la empresa.
Dado que la capa Middleware es la encargada de manejar toda la lógica de negocio que
implica el Configurador P3S, en este informe de pasantía se busca el no ser muy específico con
respecto a las funcionalidades desarrolladas y a los datos que se manejan, para respetar las
políticas de confidencialidad acordadas entre Indra y la empresa cliente.
5.1 Análisis y Diseño
Esta es la primera fase del desarrollo del proyecto Configurador P3S, como se explicó de
forma detallada anteriormente, esta fase viene representada por el análisis de las necesidades y de
los requerimientos del sistema así como el estudio de las tecnologías a ser utilizadas durante el
desarrollo, estableciendo así el enfoque técnico que tendrá el proyecto. Dado que es la fase de
planteamiento y planificación de la solución, gran parte de las actividades se efectuaron en
conjunto con todo el equipo del Configurador P3S para el correcto acoplamiento de las tres capas
de la aplicación.
En esta fase se realizaron las actividades descritas en las próximas subsecciones.
5.1.1 Identificación y análisis de los requerimientos funcionales y no funcionales
En esta actividad se analizaron las necesidades del cliente principalmente por medio de
reuniones entre parte del equipo del Configurador P3S de Indra y los líderes del proyecto de la
empresa cliente. En total se identificaron un total de 25 requerimientos, 20 requerimientos
23
funcionales y 5 requerimientos no funcionales.
Los cuadros de requerimientos funcionales y no funcionales determinado se pueden
consultar en los apéndices B1 y B2, respectivamente.
5.1.2 Definición de objetivos y alcance
En esta actividad se estudiaron los requerimientos funcionales y no funcionales, y se
analizó el problema planteado y la solución propuesta para determinar los objetivos y el alcance
que tenía el Configurador P3S y la capa del Middleware, esta información se encuentra descrita
dentro del Capítulo 2 del presente libro, donde se describe la definición del proyecto de pasantía.
5.1.3 Estudio de las herramientas a utilizar
A lo largo de esta fase se contemplaron distintas opciones para la codificación en cuanto
al ambiente de desarrollo y el lenguaje usado en la implementación del Middleware, basándose
en las necesidades que tenía la empresa.
En cuanto al ambiente de desarrollo de la capa Middleware, se planteó la codificación
bajo la plataforma JEE, el cual requiere un entorno de ejecución conocido como servidor de
aplicaciones, este servidor permite la publicación de servicios web que proveen las
funcionalidades que ejecuta el Middleware facilitando así el acceso a dichas funcionalidades por
parte del FrontEnd y de otros aplicativos que las requieran.
Se propuso el usar el servidor de aplicaciones Oracle WebLogic dado que el cliente tiene
varios aplicativos dentro de la plataforma Postpago que usan este servidor. Se establece que el
desarrollo se hará sobre la versión del servidor WebLogic más reciente Oracle WebLogic Server
11gR1. Con el fin de crear una capa compatible con los demás aplicativos que tiene el cliente, el
desarrollo se hace de forma tal que el Middleware sea compatible con versiones anteriores de este
servidor de aplicaciones, ya que existen sistemas usados en la plataforma Postpago del cliente
que están publicados en versiones antiguas, se establece como requisito mínimo para el uso de la
aplicación contar con la versión BEA WebLogic Server 8.1.
Basándose en las necesidades del cliente y las exigencias del mismo se estudian dos
posibles lenguajes para realizar la codificación de los servicios web a publicar. Primero se plantea
desarrollar toda la capa sobre el lenguaje Java usando los distintos componentes que tiene la
plataforma JEE para la creación de los servicios web, pero por una solicitud del cliente se llega al
24
acuerdo de dividir la implementación del Middleware creando los objetos necesario como clases
Java y usando el lenguaje BPEL en la composición de los servicios web. A pesar de que esta
combinación de lenguajes fue la que se acordó con el cliente en la fase de diseño como ambiente
de desarrollo de la capa, una vez invertido algún tiempo en la fase de implementación del
sistema, el cliente solicita volver al planteamiento original de desarrollar la capa Middleware en
su totalidad usando Java junto a la plataforma JEE.
Se plantea usar la herramienta Apache Ant para ejecutar las tareas necesarias de
compilación y construcción del archivo que empaquete todo el aplicativo para ser publicado en el
servidor de aplicaciones.
Adicionalmente, se hace uso de un sistema de registro de mensajes utilizando la
herramienta Log4J, esto con el principal fin de ejecutar la depuración del sistema en el momento
que sea necesario.
5.1.4 Elaboración del diseño funcional
Esta actividad consistió en la elaboración del documento funcional, donde se refleja la
descripción general del proyecto así como los objetivos y alcances del mismo, los requerimientos
funcionales y no funcionales, una visión general del problema y de la solución planteada. Parte
del contenido de este documento está desglosado previamente a lo largo de las distintas secciones
del presente informe de pasantía. Este documento también incluye todas las reglas del negocio
implicadas en la configuración P3S, esta información no se incluyen en este documento por
políticas de confidencialidad de la empresa cliente.
5.1.5 Elaboración del diseño técnico
En este documento se indican todos los aspectos técnicos diseñados para el desarrollo del
Configurador P3S. Para la capa Middleware se presentan las clases a crear y las principales
funciones que son implementadas para el manejo de la lógica de negocio.
En la figura 5.1 se muestran los tipos abstractos de datos creados por el Middleware para
la abstracción de la información manejada por el Configurador P3S, las flechas indican la
relación de contención que hay entre los objetos del negocio.
25
Figura 5.1 – Objetos diseñados para la Capa Middleware
5.1.6 Elaboración del documento de arquitectura
Este documento describe los diferentes aspectos relacionados con las decisiones
tecnológicas establecidas para el desarrollo del Configurador P3S según se estudió en las
actividades anteriores. Las herramientas usadas por el Middleware descritas en este documento
fueron las siguientes:
 Plataforma: Java Enterprise Edition (JEE 6)
 Servidor de Aplicaciones: Oracle WebLogic Server 11gR1
 Herramienta de compilación: Apache Ant 1.8.1
 Registro de logs: Apache Log4J 1.2.15
 IDE: Eclipse 3.5 Galileo
Estas herramientas se encuentran especificadas en el capítulo 3.
5.1.7 Diseño de la matriz de pruebas
Durante esta actividad se especificaron las pruebas unitarias e integrales a realizar, los
datos de prueba y los resultados esperados. El modelo de esta matriz de pruebas puede verse en el
Apéndice C.
26
5.2 Implementación
Una vez terminado el tiempo establecido de análisis y diseño del proyecto, se inició con la
fase de implementación del mismo; en esta fase se desarrollaron las funcionalidades previstas
lográndose completar la codificación en un tiempo menor al establecido. Dentro de esta fase se
buscó codificar el Middleware como la capa más independiente de las tres del Configurador P3S;
mientras avanzaba el desarrollo se iban integrando paralelamente cada funcionalidad alcanzada
junto con las capas BackEnd y FrontEnd.
5.2.1 Clases elaboradas
La función principal que tiene el Middleware es el de abstraer los datos y la lógica del
negocio implicada para su fácil manejo a nivel de FrontEnd o de alguna otra aplicación que
quiera tener acceso a la información manejada por el Configurador P3S, para cumplir esto se
crean tipos abstractos de datos que permitan encapsular la información requerida en la
configuración P3S.
En la tabla 1 se describen las distintas clases desarrolladas.
Nombre de
la clase
Descripción
Este objeto es usado para encapsular
los datos de un servicio, producto, plan
QuerySeleccion
o promoción requeridos para la
configuración P3S.
Es el objeto principal que contiene
todos los datos necesarios para el
proceso de configuración P3S,
ElementoTarificable buscando abstraer la lógica del negocio
implicada en dicho proceso.
ArbolTarificacion
Objeto usado como cabecera del árbol
binario en que se contemplan las
tarifas a modificar. Esta concepción de
árbol binario viene dada por cómo se
maneja el negocio del cliente.
Nodo
Con esta clase se representan los nodos
del ArbolTarificacion, cada Nodo
cuenta con dos apuntadores a objetos
de su mismo tipo, representando así
una estructura de árbol binario.
27
Nombre del
Atributo
Tipo del
Atributo
identificador
long
nombre
abreviatura
id_elem_tarif
id_prod
tipo_elem_tar
nombre_elem_tar
estado
tipo_tarifa_general
arboles_tarificacion
id_arbol_tar
id_concepto_fact
id_def_cpto_fact
nombre_cpto_fact
nodo_raiz
id_nodo
nodo_true
nodo_false
condicion
tarifas
String
String
long
long
String
String
String
String
ArbolTarificacion[]
long
long
long
String
Nodo
long
Nodo
Nodo
String
DetalleTarifa[]
Parametro
DetalleTarifa
ModifTarifa
AbstractObject
Objeto usado para representar los datos
que contiene un tipo de tarifas que son
concebidas en forma de matrices.
Este es el objeto que representa cada
tarifa con la que se facturan los
productos, planes, promociones y
servicios, y son estos objetos los que se
busca modificar en el Configurador
P3S. Con este objeto se representan
tanto las tarifas como los descuentos.
Objeto usado para encapsular toda la
información necesaria para la creación
de los scripts de configuración. Este
objeto se construye con la información
del DetalleTarifa a modificar y los
datos nuevos ingresados por el usuario
de la aplicación.
Clase abstracta de donde extienden
todas las otras clases creadas en el
Middleware. Dentro de ella se
implementaron los métodos comunes
que tengan los objetos abstractos.
nom_parametro
String
val_parametro
descripcion
id_spec
id_tarifa
id_conex_tarifa_dcto
nombre_tarifa
monto
numero_tramo
categoria_spec
fecha_inicio
fecha_fin
unidad
parametros
id_spec
id_conex_tarifa_dcto
id_nodo
numero_tramo
monto
fecha_inicio_vigencia
fecha_fin_vigencia
nuevo
modificado
categoria_spec
String
String[]
long
long
long
String
double
int
int
date
date
String
Parametro[]
long
long
long
int
double
date
date
boolean
boolean
int
Tabla 1 – Clases Desarrolladas
(Nota: la representación “TIPO []”, indica que el atributo es un arreglo de ese tipo.)
5.2.2 Conexión con la capa BackEnd
La capa BackEnd está conformada por un paquete que contiene los procedimientos
escritos en SQL capaces de consultar, organizar y devolver la información solicitada por el
Middleware.
La conexión entre el Middleware y la base de datos donde se encuentra la capa BackEnd,
fue establecida por medio de un objeto DataSource, creado desde el servidor de aplicaciones
WebLogic. Este DataSource usa el controlador Oracle's Driver Thin XA para conexiones por
instancias, para acceder a la base de datos Oracle donde están almacenados los procedimientos
del BackEnd.
28
Al usar este controlador se deben configurar las propiedades para la conexión al servidor
de base de datos que usa el Configurador P3S; dichas propiedades son las siguientes.
 Dirección IP o nombre de la maquina servidor.
 Puerto de conexiones del servidor.
 Nombre de la base de datos.
 Usuario y contraseña con la que se conectará a la base de datos.
Además, se establece el nombre JNDI que tendrá el DataSource; este nombre será
asociado con el objeto DataSource, mediante a una interfaz proveedora de servicios (Service
Provider Interface, SPI) contenida en el servidor de aplicaciones. Los objetos que se encuentran
en la capa Middleware pueden usar el objeto DataSource, y las conexiones que éste establece, a
través de su nombre JNDI, pudiendo así realizar llamadas a los procedimientos de la capa
BackEnd.
Se creó una clase llamada DBAccess.java, la cual sólo se encarga manejar las conexiones
a la base de datos usando el DataSource previamente descrito; esta clase tiene dos métodos, uno
encargado de establecer la conexión con la base de datos, y el otro método cierra dicha conexión.
Estas conexiones son manejadas mediante instancias de la clase java.sql.Connection del
API JDBC.
La invocación de los procedimientos creados en la capa BackEnd se hace de una forma
generalizada en todos los métodos del Middleware; primero se establece la conexión con la clase
DBAccess.java, se arma la línea en SQL para invocar al procedimiento, se instancia la clase
java.sql.CallableStatement con el comando SQL realizado y en este objeto se establecen
los parámetros de entrada y los tipos de los parámetros de salida del procedimiento a ejecutar.
Después se realiza la asignación de los datos devueltos por este procedimiento a los objetos que
se van a manejar; esta asignación implica transformar la información recibida como estructuras
de base de datos, en instancias de las clases Java creadas por el Middleware.
En la figura 5.2 se ve cómo se establece el proceso de llamada de algún procedimiento de
base de datos. En el ejemplo se llama a un procedimiento que tiene tres parámetros, el primero es
un parámetro de entrada de tipo VARCHAR, el segundo es un parámetro de entrada y de salida y
es de tipo NUMBER, y el tercero es un parámetro solo de salida el cual es una estructura de base
de datos creadas por el BackEnd.
29
Figura 5.2 - Ejemplo de la invocación a un procedimiento en el BackEnd.
5.2.3 Implementación de los EJB
Dado que el Configurador P3S fue diseñado en una arquitectura de tres capas, y el pedido
del cliente de desarrollar el Middleware usando el lenguaje Java, todo el desarrollo de esta capa
se realizó bajo la plataforma JEE, usando la API Enterprise JavaBeans versión 2.0 (EJB), la cual
es uno de los estándares de Java más usados para la creación de las capas de negocio en
aplicaciones distribuidas.
Desde el punto de vista de la codificación, un EJB no es más que un conjunto de clases
Java que cumplen ciertas normas de implementación y de nomenclatura que permite ser
desplegado desde el servidor de aplicaciones, para que pueda ser manejado; esta estructura
permite publicar métodos en servicios web para que sean accedidos desde cualquier aplicación
externa; se crearon cuatro EJB entre los que se dividen los métodos según el manejo del negocio.
La estructura de cada EJB del Middleware es la siguiente:
 Bean de sesión (SessionBean): esta es la clase Java que implementa el EJB en sí, es donde
se encuentran definidos todos los métodos que se publican en el servicio web y otros
30
relacionados con la propia clase. Dentro de estas clases es que se codifica la lógica del
negocio.
 Interfaz remota (EJBObject): en esta interfaz se describen los métodos implementados en
el SessionBean que se desea sean accesibles por el cliente externo; mediante esta interfaz el
cliente puede invocar los métodos como si el propio EJB se encontrara disponible en su
máquina.
 Interfaz home (EJBHome): es usada por el cliente únicamente para crear, destruir o buscar
algún EJB; se puede considerar como una interfaz administrativa para el EJB.
Con respecto a los métodos propios que debe contener los EJB, el programador sólo debe
declararlos y no ocuparse de su implementación ya que será el propio servidor de aplicaciones
quien lo haga y permita la conexión remota.
En la tabla 2 se refleja la nomenclatura para las clases creadas por el Middleware según
las convenciones para los EJB.
Clase EJB
Nombre del Archivo
Bean de sesión
<nombre_del_ejb>Bean.java
Interfaz remota
<nombre_del_ejb>.java
Interfaz home
<nombre_del_ejb>Home.java
Tabla 2 – Convención usada para los nombres de los EJB.
Además de lo anterior, hacen falta unos archivos XML de nombre ejb-jar.xml y
weblogic-ejb-jar.xml, llamados Descriptores de Despliegue; dichos archivos contienen la
información de todos los EJB creados, se indican los métodos, interfaces y demás datos
necesarios para su despliegue en el servidor.
5.2.4 Métodos y funcionamiento del Middleware
La mayoría de los métodos desarrollados son para ejecutar los procedimientos de base de
datos de la forma como se explicó previamente en este capítulo. Todos estos procedimientos solo
ejecutan consultas a la base de datos sin realizar modificaciones, por lo que el fin de estos
métodos es el de buscar la información y ordenarla según sea la aplicación de la lógica del
negocio que se deba realizar.
31
El método principal que no implica el acceso a la base de datos, es el que se encarga de la
generación de los scripts; este método recibe desde la capa FrontEnd un arreglo de la estructura
ModifTarifa, que contiene todas las modificaciones realizadas por el usuario del Configurador
P3S. Dentro de este método se manejan los datos recibidos dependiendo de la lógica del negocio
y de los cambios realizados por el usuario para estructurar el script SQL; este script es el que
posteriormente se aplicará a la base de datos de Postpago para completar el proceso de
configuración en la plataforma P3S.
Para que la capa FrontEnd haga uso de los métodos implementados en los EJB del
Middleware, se crea un servicio web que se ejecuta en el servidor de aplicaciones WebLogic,
donde se publica el acceso a dichos métodos para su implementación. El desarrollo de este
servicio web permite también que el Middleware pueda ser usado desde cualquier aplicación que
tenga acceso al servidor WebLogic.
En la figura 5.3 se representa gráficamente la integración de las tres capas en la ejecución
de algún método de consulta del Configurador P3S.
Figura 5.3 – Ciclo de ejecución del Configurador P3S
El funcionamiento del servidor de aplicaciones del
Middleware dentro del
Configurador P3S es el siguiente: Cuando el FrontEnd realiza una invocación de algún método
dentro del servicio web, el servidor al recibir la llamada debe encontrar una referencia del EJB
que contiene el método invocado; si no existe una instancia del EJB dentro del contenedor, se usa
32
la interfaz EJBHome para crearla; es necesario asociar la instancia generada con el EJBObject del
EJB, esto permite invocar los métodos del EJB sobre dicha instancia. Una vez confirmado que
existe la instancia del EJB se ejecuta el método a través de la interfaz remota, si el método accede
a un procedimiento de la capa BackEnd se maneja la conexión a la base de datos con el
DataSource, se obtiene la información y se ejecuta el método en el servidor sobre la instancia del
EJB en cuestión, para luego retornar los resultados al FrontEnd.
5.2.5 Compilación e implantación del Middleware
A pesar de que toda la codificación de la lógica del negocio se hace en la clase Bean, es
necesaria la creación de las interfaces y de los descriptores de despliegue para el correcto
funcionamiento de los EJB, esto supone un trabajo extra para el programador ya que para crear
un nuevo método o reflejar un cambio relevante en alguna clase Bean se deben modificar tres
clases .java. Pensando en esto y en el crecimiento que tendrá el Configurador P3S en posteriores
fases, se hizo uso de la herramienta XDoclet, esta herramienta permite generar código usando
ciertas etiquetas en los comentarios de las clases Bean, de forma que al ejecutar el XDoclet se
analizan estas etiquetas y se generan las interfaces EJBObject y EJBHome para cada EJB, así
como los descriptores de despliegue necesarios para la publicación de los servicios, con esto se
trabaja cada EJB en un sólo archivo, reduciendo el tiempo necesario para el desarrollo y
facilitando la codificación al momento de algún cambio. XDoclet se emplea junto con la
herramienta Apache Ant al momento de querer compilar el proyecto, se generan las interfaces y
los descriptores de despliegue para luego compilar los EJB con el resto del Middleware.
Con la herramienta Apache Ant se ejecuta todo el proceso de compilación y despliegue
del Middleware, una vez generadas las interfaces y los descriptores de despliegue usando
XDoclet, se compilan todas las clases y se empaquetan junto con los descriptores de despliegue
en un archivo .JAR (Java ARchive), que es el formato indicado para que el servidor de
aplicaciones los ejecute dentro de su contenedor de objetos. Usando un conjunto de bibliotecas
proporcionadas por WebLogic se desarrollan los archivos XML y las clases necesarias para la
creación del servicio web donde se publican los métodos implementados en los EJB; estos
archivos son empaquetados en otro archivo con la extensión .WAR (Web Application aRchive),
este formato de archivo es el usado por el servidor de aplicaciones para las aplicaciones web;
tanto el .JAR que contiene los EJB como el .WAR donde se declara el servicio web son
empaquetados en un archivo .EAR (Enterprise ARchive), con el cual el servidor de aplicaciones
33
ejecuta todo el Middleware como una sola aplicación. Una vez terminado el proceso de
compilación, se despliega la aplicación en el servidor usando la herramienta Apache Ant.
Para la invocación del servicio por parte del FrontEnd, es necesario utilizar una biblioteca
cliente que contenga las clases necesarias para poder hacer uso de los métodos y los objetos
proporcionado por el Middleware. Esta biblioteca es generada usando la herramienta Apache Ant
junto con varias clases suministradas por el servidor WebLogic, a partir del archivo WSDL que
describe el servicio web publicado
5.2.6 Implementación de prototipos usando BPEL
Al inicio del proyecto se tenía planteado, por exigencia de la empresa cliente, el uso del
Lenguaje de Ejecución de Procesos de Negocio (Business Process Excecution Language, BPEL,
por sus siglas en inglés) como lenguaje estandarizado para el desarrollo del Middleware. La razón
es que esta tecnología permite el control centralizado de la invocación de distintos servicios web,
que en conjunto con una cierta lógica del negocio ayuda a la programación en gran escala.
Además, este lenguaje proporciona una serie de beneficios a la hora de modelar procesos
complejos, componiendo procesos en base a un conjunto de servicios web que se encarguen de su
ejecución.
En la fase de análisis y diseño se realizó un estudio detallado de esta herramienta, y se
determinó que presentaba una complejidad y amplitud que no se adaptaba a las necesidades del
proyecto. Esto debido a que la empresa tenía planteado el uso de esta tecnología para el proyecto
global Configurador P3S que incluye una serie de fases y funcionalidades cuya interacción
presenta una estructura que requiere una organización bastante compleja; estas funcionalidades
adicionales serán desarrolladas para el Configurador P3S en fases posteriores. Para este periodo
de pasantía sólo se contempla la primera fase que abarca el módulo de tarifas y descuentos, donde
la interacción es mucho más sencilla y el proceso no requiere de una estructura compleja.
BPEL está orientado a la orquestación, que impone un orden y comportamiento individual
a cada uno de los servicios web. Además maneja la distribución de los procesos en un sistema, es
decir, se enfoca en todo el flujo y jerarquía de procesos involucrados en la aplicación, detallando
su estructura en una composición de varios servicios que permiten llevar a cabo todas las
acciones de un proceso complejo. Para esto se toma mucho en cuenta la interacción con entes
externos que permita la comunicación completa de los módulos o componentes.
34
Para el módulo de tarifas del Configurador P3S el proceso es muy sencillo, se requiere
algo más aplicado al manejo de los datos, como lo son los EJB de Java. Dado esto, se planteó a la
empresa cliente una segunda opción que proponía el uso de Java para este desarrollo, herramienta
que permitía una interacción sencilla y una buena inclusión de la lógica del negocio. La empresa
cliente se negó a tomar esta opción, alegando que debía utilizarse BPEL como habían exigido en
un principio.
Como consecuencia de esto y a pesar de las dificultades encontradas, se inició la fase de
implementación desarrollando las primeras funcionalidades con este lenguaje. Se invirtió un
tiempo considerable en el desarrollo, al mismo tiempo que se aprendían las formas de uso que
tiene el lenguaje.
Se crearon distintos prototipos funcionales de aplicativos que emularan el desarrollo de la
capa del Middleware. Al entrar en la cuarta semana de desarrollo, se empieza a codificar, usando
BPEL, los distintos servicios web que tendría la capa Middleware definitiva; es ahí cuando la
empresa cliente pidió el uso de Java para el desarrollo de los métodos del Middleware, y se tuvo
que volver a iniciar la implementación bajo esta nueva tecnología, que fue con la cual se
completó el desarrollo de la solución.
BPEL es un lenguaje que usa una codificación basada en archivos XML y los servicios
web son implementados como flujos procesos; distintas herramientas de desarrollo integrado
permiten programar estos procesos usando representaciones graficas de estos flujos. En la figura
5.4 se refleja gráficamente un servicio web prototipo codificado en BPEL, aquí se ve
representado el servicio web como un flujo de procesos, donde la primera tarea viene dada por la
invocación del servicio así como la recepción de los parámetros de entrada proporcionados por el
cliente, luego se ejecuta un condicional que despliega dos flujos, si se da el caso afirmativo del
condicional se ejecuta el flujo de la izquierda, que ejecuta una asignación, luego ejecuta un trozo
de código Java, y luego se hace una invocación a un método de inserción en la base de datos. El
flujo de la negación del condicional solo asigna los valores y ejecuta un método de consulta en
BackEnd, ambos flujos terminan con la asignación de los valores deseados al mensaje de salida
del servicio web.
Podemos ver con el ejemplo la forma de codificación que tendrían los servicios web del
Middleware usando BPEL. El cambio más significativo para las otras capas sería que para cada
método debe ser publicado un servicio web, ya que ese es el esquema con el que BPEL maneja la
35
orquestación de servicios; mientras que, usando Java junto con las diversas herramientas
previamente descritas, se publica un sólo servicio web para todos los métodos realizados.
Figura 5.4 – Servicio Web prototipo desarrollado usando BPEL
36
Se considera que para posteriores fases y nuevos alcances del proyecto Configurador P3S
se puede estudiar si es conveniente usar BPEL para estructurar la interacción compleja de los
módulos a elaborar. Pero actualmente, basándose en las pruebas elaboradas tanto por el equipo de
desarrollo como por el cliente, la tecnología Java permite satisfacer de forma eficaz las
necesidades contempladas en este módulo inicial de configuración de tarifas y descuentos P3S.
5.3 Pruebas
Al culminar la fase de desarrollo se procedió con la fase de pruebas siguiendo las matrices
planteadas en la fase de análisis y diseño.
Las pruebas unitarias de la capa Middleware se realizaron desde un programa Java creado
para las pruebas que emula la forma como el FrontEnd llama a los métodos publicados en el
servicio web. Las pruebas integrales de las tres capas fueron ejecutadas aplicando lo establecido
en la matriz de pruebas desde el punto de vista del usuario final del Configurador P3S. Las fallas
encontradas fueron debidamente corregidas, tras cada modificación del código se realizaban las
pruebas establecidas hasta que todo el resultado de las matrices resultara exitoso.
5.4 Implantación y seguimiento
Dentro del alcance inicial del proyecto de pasantía no se tenía contemplado el
cumplimiento de esta fase, pero dado que el proceso de desarrollo fue en un tiempo menor a lo
estimado, y como al realizar las pruebas no se reflejaron incidencias significativas, fue posible
realizar esta actividad.
Con el fin de cumplir en su totalidad con el desarrollo de la aplicación, el pasante se
involucró en el proceso de implantación del Configurador P3S en la empresa cliente; la primera
actividad fue la elaboración del manual del programador, el cual incluye las especificaciones
técnicas que requiere la capa Middleware, los pasos para la instalación del ambiente de ejecución,
y las instrucciones de compilación y despliegue de la aplicación.
Luego el pasante asistió a las oficinas de la empresa cliente para el proceso de instalación
del sistema; se instaló en un ambiente similar al que tendrá el Configurador P3S en producción,
también se creó un dominio del servidor de aplicaciones portable, para poder distribuirlo en
varias máquinas del cliente sin necesidad de instalar componentes externos requeridos por la
37
aplicación.
Una vez entregado el producto por parte de Indra, la empresa cliente lleva a cabo una serie
de pruebas propias para asegurar la calidad del sistema antes de su paso a producción. Si se
presenta alguna falla o alguna corrección que se quiera hacer, el equipo de desarrollo del
Configurador P3S proporciona el soporte necesario.
Este proceso de seguimiento concluyó, y no se presentó incidencia alguna relacionada con
la capa Middleware. El proyecto Configurador P3S fue finalizado y aprobado por la empresa
cliente con 2 semanas de antelación a lo previsto, y se encuentra actualmente en el área de
producción del cliente. Reflejando así la calidad que hubo en el proceso de desarrollo de la
aplicación durante el periodo de pasantía.
38
CONCLUSIONES Y RECOMENDACIONES
La realización del proyecto de pasantía larga permitió al pasante interactuar en el campo
de trabajo, así como tener la oportunidad de utilizar los conocimientos académicos adquiridos en
el transcurso de la carrera, logrando culminar con éxito los objetivos planteados al inicio del
proyecto.
El proyecto contempló el desarrollo de la capa Middleware de la aplicación
Configurador P3S, la cual permite enlazar las capas de BackEnd y FrontEnd. Este desarrollo
permitió la abstracción de los datos obtenidos de la capa de datos (BackEnd), así como la
transformación y aplicación de la lógica de negocio requerida sobre dichos datos, haciéndolos
accesibles a la capa de presentación (FrontEnd) del sistema. Adicionalmente, la capa Middleware
se encarga de generar los scripts de configuración a partir de los datos suministrados por la capa
FrontEnd, los cuales indican los cambios que el usuario del Configurador P3S, introdujo en la
aplicación. Estos scripts generados son necesarios para aplicar las configuraciones de tarifas
deseadas sobre el módulo de aprovisionamiento de P3S.
La capa Middleware se planteó como un módulo independiente con respecto a las otras
dos capas con las que se comunica, encapsulando el modelo del negocio que maneja el
Configurador P3S. Se desarrolló la capa Middleware como un módulo portable, interoperable y
de fácil acceso.
El proyecto contempló la investigación de las herramientas a emplear, el análisis de los
requerimientos presentados por el cliente, y el estudio de los conceptos del negocio involucrados
en la configuración de producto, planes, promociones y servicios. Una vez desarrollada la capa
Middleware, se realizaron todas las pruebas unitarias y posteriormente las pruebas integrales.
Todo este proceso fue realizado bajo un estándar de desarrollo propio de la empresa, el cual
contempla cuatro fases, cada una con sus respectivas actividades.
En cuanto al alcance del proyecto, no se acordó la realización de la última fase de
desarrollo (implantación y seguimiento); sin embargo, las actividades planteadas se realizaron en
tiempos menores a los planificados, por lo que dicha fase se ejecutó y actualmente se está
realizando el seguimiento al proyecto.
39
El éxito del proyecto ha motivado al cliente a plantearse la realización de una segunda
fase de desarrollo del Configurador P3S. El planteamiento propone ampliar las funcionalidades
en el Configurador P3S teniendo como meta futura un aplicativo primordial para la plataforma
Postpago del cliente, donde el Configurador P3S sea el único encargado de la gestión y manejo
de los productos, planes, promociones y servicios.
Es importante mencionar que el éxito del proyecto le permite a la empresa reducir
sorprendentemente los tiempos de las configuraciones. En la Tabla 3 se pueden observar las
diferencias entre la configuración manual y la realizada con el Configurador.
Tipos de tarifa
Tiempos
Configuración
Configuración
automatizada
manual (Vieja)
(Configurador P3S)
3 horas
2 min
4 horas
4 min
Ítem
Renta Básica
Tarifas Planas Cupos Adicionales
y Descuentos Renta básica + Cupos
Adicionales
Renta Básica
Tarifas de
Cupos Adicionales
Matrices
Renta básica + Cupos
Adicionales
8 horas
5 min
3 horas
6 horas
2 min
4 min
10 horas
5 min
Tabla 3 – Cuadro comparativo entre los tiempos de configuraciones según los tipos de tarifas
Por último, se tienen dos recomendaciones para la empresa Indra. La primera es sobre la
elaboración de futuros proyectos en la empresa, se pide que se realicen continuas reuniones con
el cliente, logrando una efectiva comunicación donde la forma en que se desarrolla el proyecto
sea totalmente entendida por el cliente, y no se tengan que realizar grandes cambios en el
transcurso del desarrollo.
La segunda recomendación, es el de que se elabore una documentación más formal de lo
que es el proceso de desarrollo y la forma de trabajo que lleva Indra con sus distintos proyectos,
ya que para cumplir con todo el proceso de desarrollo establecido se siga una metodología formal
que esté fundamentada en estándares definidos, para así poder llevar a cabo todas las actividades
de las distintas fases del desarrollo, cumpliendo con un orden específico.
40
REFERENCIAS BIBLIOGRÁFICAS
[1]
Indra Company. Disponible en: http://www.indracompany.com/.
[2]
IBM. “Concepts and Planning: What is distributed computing” en el enlace:
http://publib.boulder.ibm.com/infocenter/txformp/v6r0m0/index.jsp?topic=/com.ibm.cics.
te.doc/erziaz0015.htm, consultado el 09/09/2010.
[3]
Kernel
Error.
(2009).
Arquitectura
3
Capas.
Disponible
en
Internet:
http://kernelerror.net/programacion/php/arquitectura-3-capas/#more-169, consultado el
20/08/2010.
[4]
World Wide Web Consortium. (2004). Web Services Architecture. Disponible en Internet:
http://www.w3.org/TR/ws-arch, consultado el 01/09/2010.
[5]
C. Mateu. Desarrollo de Aplicaciones Web, Fundació per a la Universitat Oberta de
Catalunya 2004.
[6]
ORACLE Corporation. Java EE at a Glance: Overview. 2010. Disponible en:
http://www.oracle.com/technetwork/java/javaee/overview/index.html,
consultado
el
09/09/2010.
[7]
ORACLE
Corporation.
Enterprise
JavaBeans
Technology
http://www.oracle.com/technetwork/java/index-jsp-140203.html,
Disponible
en:
consultado
el
01/09/2010.
[8]
R. Monson-Haefel. Enterprise Java Beans 4th Edition, Ed. O'Reilly & Associates 2004.
[9]
ORACLE
Corporation.
JDBC
Overview
http://www.oracle.com/technetwork/java/overview-141217.html,
Disponible
consultado
en:
el
01/09/2010.
[10]
D. Bales. JDBC Pocket Reference. O'Reilly Media. 2003.
[11]
Apache Software Foundationion. Logging Services: Log4J 1.2. Disponible en:
http://logging.apache.org/log4j/1.2/index.html, consultado el 01/09/2010.
41
[12]
Apache Software Foundationion. Apache Ant 1.8.1 Manual. Disponible en Internet:
http://ant.apache.org/manual/index.html, consultado el 01/09/2010.
[13]
XDoclet
Team.
About
XDoclet.
Disponible
en
Internet:
http://xdoclet.sourceforge.net/xdoclet/index.html, consultado el 01/09/2010.
[14]
A. Molpeceres Touris; M. Pérez Mariñán. Arquitectura empresarial y software libre,
J2EE Disponible en: http://ccia.ei.uvigo.es/docencia/SCS/articulo-j2ee.pdf, consultado el
01/09/2010.
[15]
Área de Ciencias de la Computación e Inteligencia Artificial de la Universidad de Vigo.
Proyecto Java EE 2009/10: Presentación de la práctica, consultado el 09/09/2010.
[16]
T. Andrews; F. Curbera; H, Dholakia. Business Process Execution Language for Web
Services. Disponible en Internet:
http://download.boulder.ibm.com/ibmdl/pub/software/dw/specs/ws-bpel/ws-bpel.pdf,
consultado el 09/09/2010.
42
APÉNDICE A
GLOSARIO DE TÉRMINOS
 API (Application Programming Interface): Es una interfaz que permite que una aplicación
haga uso de las funcionalidades que tenga una biblioteca u otra aplicación externa.
 Biblioteca: Es una colección subprogramas empaquetados, que se usan para desarrollar
software.
 Configuración P3S: Proceso para establecer algún cambio sobre los planes, promociones y
servicios de los productos que ofrece la empresa cliente.
 Descuento: monto en moneda o porcentaje (%) que se le deduce a las tarifas asociadas a un
cliente.
 Interoperabilidad: Capacidad de los sistemas de tecnologías de la información y las
comunicaciones, y de los procesos empresariales a los que apoyan, de intercambiar datos y
posibilitar la puesta en común de información y conocimientos.
 Log: Es usado para registrar datos o información de eventos ocurridos para un dispositivo en
particular o aplicación, en un periodo de tiempo determinado.
 Plan: Elemento que permiten definir tarifas y/o contadores para los diferentes conceptos
facturables del negocio. Define la forma de facturar y/o tasar un concepto.
 Portabilidad: Se define como la característica que posee un software para ejecutarse en
diferentes plataformas, el código fuente del software es capaz de reutilizarse en vez de crearse
un nuevo código cuando el software pasa de una plataforma a otra.
 Producto: agrupación de uno o más líneas de negocio que será ofrecido al usuario bajo un
cierto comportamiento predefinido por el negocio.
 Promoción: Modifican la forma de facturar o tasar un concepto, a través de: descuentos,
redefinición de tarifas, otorgamiento de cupos/contadores. Pueden tener asociado un cargo
mensual por el disfrute de la promoción.
 Script: Un script es un conjunto de instrucciones que permiten la automatización de tareas
creando pequeñas utilidades.
43
 Servicio: Valor agregado que puede ofrecerse para un producto base.
 Tarifa: monto en una moneda determinada que se le configura a un plan, promoción o
servicio, con lo cual se le tasa el consumo o renta del cliente.
 WSDL (Web Services Description Language): Es un lenguaje basado en XML que se usa
para describir la interfaz pública de los servicios web; eso significa que detalla los protocolos
y los formatos de los mensajes necesarios para interactuar con los servicios listados en su
catálogo. Un programa cliente que se conecta a un servicio web puede leer el WSDL para
determinar las funciones disponibles en el servidor
.
44
APÉNDICE B
REQUERIMIENTOS DEL SISTEMA
A continuación se muestran algunos requerimientos funcionales y no funcionales del
Configurador P3S. En total se identificaron un total de 25 requerimientos, 20 requerimientos
funcionales y 5 requerimientos no funcionales. En este informe se muestran solo algunos
requerimientos levantados en la fase de diseño, y son mostrados de forma parcial respetando las
políticas de confidencialidad acordadas entre Indra y la empresa cliente.
B.1 Requerimientos funcionales
Código
Nombre
Descripción
Tipo
Precondiciones
Detalles
RF-001
Consulta de productos
Consulta de los productos a configurar
Consulta
Código
Nombre
Descripción
Tipo
Precondiciones
Detalles
RF-002
Consulta de los planes de producto
Consulta de los planes de producto según el producto seleccionado
Consulta
Es necesario el id_producto y el estado del plan a consultar
Código
Nombre
Descripción
Tipo
Precondiciones
Detalles
RF-003
Consulta de las promociones de producto
Consulta de las promociones de producto según el producto seleccionado
Consulta
Es necesario el id_producto y el estado de la promoción a consultar
Código
Nombre
Descripción
Tipo
Precondiciones
Detalles
RF-004
Consulta de los planes de servicio
Consulta de los planes de servicio según el producto y servicio seleccionado
Consulta
Es necesario el id_producto, id_servicio y el estado del plan a consultar
Se mostraran todos los productos configurados en la base de datos
45
RF-005
Consulta de las promociones de servicio
Consulta de las promociones de servicio según el producto y servicio
seleccionado
Consulta
Tipo
Precondiciones Es necesario el id_producto, id_servicio y el estado del plan a consultar
Detalles
Código
Nombre
Descripción
RF-006
Consulta de tarifas en base al plan o promoción escogido
Consulta de la información completa referente a las tarifas correspondientes
al plan o promoción seleccionado
Consulta
Tipo
Precondiciones Es necesario el id_plan o id_promocion a consultar
Detalles
Código
Nombre
Descripción
RF-007
Actualización puntual del monto de una tarifa en función de un intervalo de
fechas
Se modifica el monto de una tarifa determinada.
Descripción
Modificación
Tipo
Precondiciones Es necesario el nuevo monto que tendrá la tarifa y el intervalo de fechas que
estará vigente. El monto debe ser en la moneda que esté actualmente
definida para la tarifa a actualizar.
El monto puede ser representado en cualquier tipo de moneda que se haya
Detalles
configurado en el sistema.
Código
Nombre
Código
Nombre
Descripción
Tipo
Precondiciones
Detalles
RF-008
Actualización puntual del monto de un descuento en función de un
intervalo de fechas
Se modifica el monto de un descuento determinado.
Modificación
Es necesario el nuevo monto que tendrá el descuento y el intervalo de
fechas que estará vigente. El monto debe ser de la forma que esté
actualmente definida para el descuento a actualizar.
El monto puede ser representado en porcentaje o en el monto monetario
exacto a descontar.
46
B.2 Requerimientos no funcionales
RNF-001
Código
Construir una interfaz gráfica sencilla y amigable
Nombre
Descripción La interfaz debe presentar la información de una manera ordenada de manera
que al usuario se le haga sencillo su uso e identifique de manera rápida las
funcionalidades.
La estructura de las pantallas es especificada en el diseño técnico de la
Detalles
aplicación.
RNF-002
Código
Tiempos eficientes de respuesta
Nombre
Descripción Para las búsquedas de las tarifas a modificar y la creación de los scripts de
modificación, se requiere que los tiempos de respuesta sean rápidos.
Se determinarán los tiempos de configuración manual, y una vez terminada la
Detalles
aplicación se tomarán estos nuevos tiempos para realizar una comparación.
RNF-003
Código
Crear una capa middleware genérica para otros aplicativos.
Nombre
Descripción Las funcionalidades de la capa middleware deben ser publicadas mediante a
servicios web, para poder ser accedido por otros aplicativos que puedan requerir
de los servicios brindados por el configurador.
Detalles
47
APÉNDICE C
MATRIZ DE PRUEBAS
A continuación se presenta una muestra de la matriz de pruebas rellenada en las pruebas
unitarias hechas en la capa Middleware.
Descripción:
Pruebas Unitarias Middleware
Aplicación:
Configurador de Tarifas P3S
ID Prueba
1
2
3
4
5
6
7
Fecha
Ejecución
22/08/2010
22/08/2010
22/08/2010
22/08/2010
23/08/2010
23/08/2010
23/08/2010
Funcionalidad
RSAN:
Descripción
Datos de Entrada
Resultado Esperado
INDRA
Resultado Obtenido
Se espera obtener un arreglo Se obtuvo un arreglo de tipo
del tipo querySeleccion con querySeleccion con todos los
todos los productos existentes productos existentes
obtenerProducto
Método que retorna un arreglo de
QuerySeleccion con todos los
productos existentes
N/A
obtenerPlanServicio
Método que retorna un arreglo de
QuerySeleccion con todos los
Planes de Servicio, para un
id_producto, id_servicio y un
estado específicos.
id_producto: 1 (VALIDO)
id_servicio: 20 (VALIDO)
estado: H (VALIDO)
obtenerPlanServicio
Método que retorna un arreglo de
QuerySeleccion con todos los
Planes de Servicio, para un
id_producto, id_servicio y estado
específicos
id_producto: 1 (VALIDO)
id_servicio: 20 (VALIDO)
estado: G (INVALIDO)
Se espera obtener un NULL y Se obtuvo como respuesta un NULL y
que se registre un mensaje en el siguiente mensaje en el log de la
el Log de la aplicación
aplicación: "El estado ingresado no es
válido"
obtenerPlanServicio
Método que retorna un arreglo de
QuerySeleccion con todos los
Planes de Servicio, para un
id_producto, id_servicio y estado
específicos
id_producto: -15 (INVALIDO)
id_servicio: -15 (INVALIDO)
estado: G (INVALIDO)
Se espera obtener un NULL y Se obtuvo como respuesta un NULL y
que se registre un mensaje en el siguiente mensaje en el log de la
el Log de la aplicación
aplicación: "El estado ingresado no es
válido"
obtenerPlanServicio
Método que retorna un arreglo de
QuerySeleccion con todos los
Planes de Servicio, para un
id_producto, id_servicio y estado
específicos
id_producto: 0
id_servicio: 0
estado: NULL
Se espera obtener un NULL y Se obtuvo como respuesta un NULL y
que se registre un mensaje en el siguiente mensaje en el log de la
el Log de la aplicación
aplicación: "El estado no puede ser
NULL"
obtenerPlanServicio
Método que retorna un arreglo de
QuerySeleccion con todos los
Planes de Servicio, para un
id_producto, id_servicio y estado
específicos
id_producto: 0
id_servicio: 0
estado: H (VALIDO)
Se espera obtener un NULL y Se obtuvo como respuesta un NULL y
que se registre un mensaje en el siguiente mensaje en el log de la
el Log de la aplicación
aplicación: "No se encontraron planes
asociados"
obtenerPlanServicio
Método que retorna un arreglo de
QuerySeleccion con todos los
Planes de Servicio, para un
id_producto, id_servicio y estado
específicos
id_producto: 0
id_servicio: 20 (VALIDO)
estado: NULL
Se espera obtener un NULL y Se obtuvo como respuesta un NULL y
que se registre un mensaje en el siguiente mensaje en el log de la
el Log de la aplicación
aplicación: "El estado no puede ser
NULL"
id_producto: 0
id_servicio: 20 (VALIDO)
estado: H (VALIDO)
Se espera obtener un NULL y Se obtuvo como respuesta un NULL y
que se registre un mensaje en el siguiente mensaje en el log de la
el Log de la aplicación
aplicación: "No se encontraron planes
asociados"
Se espera obtener un arreglo
del tipo querySeleccion con
todos los planes de servicio.
Se obtuvo un arreglo del tipo
querySeleccion con los planes de
servicio de un id_producto,
id_servicio y estado especificados
Status
Exitoso
Exitoso
Exitoso
Exitoso
Exitoso
Exitoso
Exitoso
8
23/08/2010
obtenerPlanServicio
Método que retorna un arreglo de
QuerySeleccion con todos los
Planes de Servicio, para un
id_producto, id_servicio y estado
específicos
9
23/08/2010
obtenerServicio
Método que retorna un arreglo de
QuerySeleccion con todos los
Servicios, para un id_producto, y
estado específicos
id_producto: 1 (VALIDO)
estado: "H" (VALIDO)
Se espera obtener un arreglo
del tipo querySeleccion con
todos los planes de servicio
Se obtuvo un arreglo del tipo
querySeleccion con los servicios de un
id_producto, y estado especificados
Exitoso
10
23/08/2010
obtenerServicio
Método que retorna un arreglo de
QuerySeleccion con todos los
Servicios, para un id_producto, y
estado específicos
id_producto: 2 (VALIDO)
estado: "I" (VALIDO)
Se espera obtener un arreglo
del tipo querySeleccion con
todos los planes de servicio
Se obtuvo un arreglo del tipo
querySeleccion con los servicios de un
id_producto, y estado especificados
Exitoso
11
23/08/2010
obtenerServicio
Método que retorna un arreglo de
QuerySeleccion con todos los
Servicios, para un id_producto, y
estado específicos
id_producto: -15 (INVALIDO)
estado: "H" (VALIDO)
Se espera obtener un NULL y Se obtuvo como respuesta un NULL y
que se registre un mensaje en el siguiente mensaje en el log de la
el Log de la aplicación
aplicación: "No se encontraron
servicios asociados"
Exitoso
id_producto: 1 (VALIDO)
estado: "G" (INVALIDO)
Se espera obtener un NULL y Se obtuvo como respuesta un NULL y
que se registre un mensaje en el siguiente mensaje en el log de la
el Log de la aplicación
aplicación: "El estado ingresado no es
válido"
Exitoso
Se espera obtener un NULL y Se obtuvo como respuesta un NULL y
que se registre un mensaje en el siguiente mensaje en el log de la
el Log de la aplicación
aplicación: "El estado ingresado no es
válido"
Exitoso
Se espera obtener un NULL y Se obtuvo como respuesta un NULL y
que se registre un mensaje en el siguiente mensaje en el log de la
el Log de la aplicación
aplicación: "El estado no puede ser
NULL"
Exitoso
12
23/08/2010
obtenerServicio
Método que retorna un arreglo de
QuerySeleccion con todos los
Servicios, para un id_producto, y
estado específicos
13
23/08/2010
obtenerServicio
Método que retorna un arreglo de
QuerySeleccion con todos los
Servicios, para un id_producto, y
estado específicos
id_producto: -15 (INVALIDO)
estado: "G" (INVALIDO)
14
23/08/2010
obtenerServicio
Método que retorna un arreglo de
QuerySeleccion con todos los
Servicios, para un id_producto, y
estado específicos
id_producto: 0
estado: NULL
48
Exitoso
Descargar