UNIVERSIDAD SIMÓN BOLÍVAR Ingeniería de la Computación Construcción del Módulo de Gestión de Alertas para el Control de Fraude Masivo en Entidades Bancarias. Por Orlando Alberto Rocca Mata INFORME FINAL DE CURSOS EN COOPERACIÓN 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 2007 i Construcción del Módulo de Gestión de Alertas para el Control de Fraude Masivo en Entidades Bancarias. Autor: Orlando Rocca Fecha: Octubre 2007 Tutor Académico: Marlene Goncalves Tutor Industrial: José Materán RESUMEN La inseguridad que se presenta en el sistema bancario electrónico venezolano y mundial obliga a las entidades a desarrollar soluciones de software que permitan implementar controles para evitar el fraude. En el siguiente informe se presenta la documentación del proceso de construcción del módulo de gestión de alertas para SUAF+ (Sistema Unidad Anti-Fraude Plus), el cual forma parte de la solución de software que la empresa Sigmenta Business Technologies quiere desarrollar en su sistema de control de fraude masivo en entidades bancarias. El proceso de desarrollo del proyecto se basa fundamentalmente en dos módulos del sistema, el módulo front Web y el módulo de servicios de acceso a datos implementado completamente en Java junto con las especificaciones de Java Edición Empresarial. Ya que pueden existir otras implementaciones de los servicios hechas en ambiente CICS-COBOL, el diseño del módulo front Web debe ser lo suficientemente flexible como para soportar distintas implementaciones de los servicios. iii DEDICATORIA A mi madre, porque siempre te paraste primero que yo a darme fuerzas para iniciar todos los días de mi vida. A mi padre, por darme el espíritu de lucha que hoy me tiene aquí. A mi hermano Arnaldo, por el apoyo incondicional que siempre me ayudó a continuar. A mi hermanita Marianny, por seguir adelante. A Dios, por lo que soy, lo que tengo y lo que tendré. iv AGRADECIMIENTOS Gracias a mi familia que siempre me ayudó incondicionalmente a continuar esforzándome para conseguir lo que quiero. A la profesora Marlene Goncalves por brindarme los conocimientos y la ayuda en las mil y una materias que me impartió incluyendo el trabajo de ser mi tutora académica. Al profesor Ascender Suárez por haberme brindado la confianza al iniciar esta hermosa carrera, sus palabras “bienvenido a la carrera” al cambiarme a Ingeniería de la Computación fueron significativas por más sencillas que parezcan. A mis compadres y amigos por el apoyo mutuo para salir adelante con esta carrera, incluyendo los días de trasnocho y entregas de proyectos a última hora. También a los profesores que nos daban las eternas prorrogas. Gracias a Dios por permitirme seguir luchando y haberme brindado la oportunidad de superarme. A todos, infinitas gracias. v ÍNDICE GENERAL RESUMEN ............................................................................................................................................................... III DEDICATORIA..................................................................................................................................................... IV AGRADECIMIENTOS ..........................................................................................................................................V ÍNDICE GENERAL .............................................................................................................................................. VI ÍNDICE DE TABLAS ....................................................................................................................................... VIII ÍNDICE DE FIGURAS ....................................................................................................................................... IX INTRODUCCIÓN..................................................................................................................................................13 PLANTEAMIENTO DEL PROBLEMA............................................................................................................15 2.1. OBJETIVOS GENERALES ................................................................................................................................16 ENTORNO EMPRESARIAL ..............................................................................................................................18 SIGMENTA BUSINESS TECHNOLOGIES ......................................................................................................................18 MARCO TEÓRICO/TECNOLÓGICO.............................................................................................................20 4.1 ARQUITECTURA DE SOFTWARE .......................................................................................................................20 4.2 FUNDAMENTOS TECNOLÓGICOS ....................................................................................................................22 ANÁLISIS................................................................................................................................................................27 5.1 PANORAMA GENERAL.......................................................................................................................................27 5.2 CASOS DE USO ...............................................................................................................................................30 FIGURA 5.1. DIAGRAMA DE CASOS DE USO DEL SISTEMA ................................................................................32 DISEÑO ....................................................................................................................................................................33 6.1 DECISIONES GENERALES ...............................................................................................................................33 6.2 ARQUITECTURA DEL SISTEMA ........................................................................................................................34 6.2.1 Sobre el Diseño Lógico...................................................................................................................34 6.2.2 Despliegue del Sistema............................................................................................................39 6.2.3 Sobre el Diseño Visual....................................................................................................................41 IMPLEMENTACIÓN ............................................................................................................................................42 7.1 CONFIGURACIÓN DEL AMBIENTE DE DESARROLLO .......................................................................................42 7.2 IMPLEMENTACIÓN DEL SISTEMA SUAF+.......................................................................................................43 7.2.1 Módulo Front Web: ..........................................................................................................................44 7.2.2 Módulo de Servicios de Acceso a Datos...................................................................................46 7.2.3 Módulo de Ayudas Online..............................................................................................................47 7.3 FASES DE PRUEBA...........................................................................................................................................50 7.4 PROBLEMAS ENCONTRADOS ...........................................................................................................................51 CONCLUSIONES Y RECOMENDACIONES ...............................................................................................53 8.1 CONCLUSIONES ...............................................................................................................................................53 8.2 RECOMENDACIONES ........................................................................................................................................54 REFERENCIAS.......................................................................................................................................................56 vi ADMINISTRACIÓN DEL PROYECTO .........................................................................................................58 A.1 PLANIFICACIÓN ...............................................................................................................................................58 A.2 RIESGOS ..........................................................................................................................................................59 DOCUMENTOS DE DISEÑO............................................................................................................................61 B.1. CASOS DE USO ..............................................................................................................................................61 B.2. DIAGRAMAS DE SECUENCIA DEL SISTEMA ..................................................................................................64 DISEÑO DE INTERFACES DE USUARIO .................................................................................................70 ENTORNO EMPRESARIAL ..............................................................................................................................79 vii ÍNDICE DE TABLAS TABLA TABLA TABLA TABLA TABLA TABLA TABLA TABLA TABLA 7.1. CAPACIDADES EXIGIDAS VS FUNCIONALIDAD EN EL SISTEMA................ 50 A.1. PLANIFICACIÓN GENERAL DEL PROYECTO...............................................58 A.2. TABLA DE RIESGOS..............................................................................59 B.1. CASO DE USO: ATENDER ALERTAS PENDIENTES......................................61 B.2. CASO DE USO: CONSULTAR ALERTAS PENDIENTES..................................62 B.3. CASO DE USO: CONSULTAR ALERTAS GESTIONADAS...............................62 B.4. CASO DE USO: CONFIGURAR PARÁMETROS GENERALES...........................63 B.5. CASO DE USO: CONSULTAR AYUDAS EN LÍNEA........................................63 B.6. CASO DE USO: CONSULTAR LISTA DE ENTIDADES...................................64 viii ÍNDICE DE FIGURAS FIGURA 4.1. ARQUITECTURA DE TRES CAPAS............................................................21 FIGURA 5.1. DIAGRAMA DE CASOS DE USO DEL SISTEMA...........................................32 FIGURA 6.1. MODELO CONCEPTUAL DEL MÓDULO DE GESTIÓN DE ALERTAS.................34 FIGURA 6.2. CAPAS DE LA APLICACIÓN SUAF+..........................................................35 FIGURA 6.3. MODELO DE DISEÑO: PAQUETES ...........................................................37 FIGURA 6.4. NODOS DEL SISTEMA...........................................................................40 FIGURA 6.5. COMPONENTES DEL SISTEMA EN LOS NODOS DONDE SE EJECUTAN...........40 FIGURA 7.1 VENTANA DE AYUDAS EN LÍNEA DE LA APLICACIÓN..................................48 FIGURA 7.2. VENTANA DE AYUDAS EN LÍNEA DE LA APLICACIÓN CON BARRA MINIMIZADA.................................................................................................49 FIGURA B.1. DIAGRAMA DE SECUENCIA PARA EL CASO COMPLETO DE GESTIÓN DE ALERTAS................................................................................. .....................65 FIGURA B.2. DIAGRAMA DE SECUENCIA PARA LA CONEXIÓN A LOS SERVICIOS DE ACCESO A DATOS ................................................ ........................................67 FIGURA B.3. DIAGRAMA DE SECUENCIA DEL MÓDULO DE SERVICIOS DE ACCESO A DATOS. FUNCIONALIDAD DE ATENCIÓN DE ALERTAS.........................................69 FIGURA C.1. BOCETO INICIAL DE ENTIDADES ALERTADAS PARA LA ATENCIÓN DE ALERTAS.......................................................................................................70 FIGURA C.2. PANTALLA FINAL DE ENTIDADES ALERTADAS PARA LA ATENCIÓN DE ALERTAS.......................................................................................................71 FIGURA C.3. BOCETO INICIAL DE ALERTAS PENDIENTES PARA LA ATENCIÓN DE ALERTAS ....................................................................................................................71 FIGURA C.4. PANTALLA FINAL DE ALERTAS PENDIENTES PARA LA ATENCIÓN DE ALERTAS ....................................................................................................................72 FIGURA C.5. PANTALLA FINAL DE ALERTAS PENDIENTES PARA LA ATENCIÓN DE ALERTAS ....................................................................................................................73 FIGURA C.6. BOCETO INICIAL DE ENTIDADES ALERTADAS PARA LA SUPERVISIÓN DE ALERTAS...................................................................................................... 73 FIGURA C.7. PANTALLA FINAL DE ENTIDADES ALERTADAS PARA LA SUPERVISIÓN DE ALERTAS.......................................................................................................74 FIGURA C.8. BOCETO INICIAL DE ALERTAS PENDIENTES PARA LA SUPERVISIÓN DE ALERTAS.......................................................................................................75 FIGURA C.9. PANTALLA FINAL DE ALERTAS PENDIENTES PARA LA SUPERVISIÓN DE ALERTAS ......................................................................................................75 FIGURA C.10. BOCETO INICIAL DE ALERTAS GESTIONADAS PARA LA SUPERVISIÓN DE ALERTAS......................................................................................................76 FIGURA C.11. PANTALLA FINAL DE ALERTAS GESTIONADAS PARA LA SUPERVISIÓN DE ALERTAS.......................................................................................................76 FIGURA C.12. BOCETO INICIAL DE PARÁMETROS GENERALES .....................................77 FIGURA C.13. PANTALLA FINAL DE CONSULTA DE PARÁMETROS GENERALES ................77 FIGURA C.14. PANTALLA FINAL DE CONFIGURACIÓN DE PARÁMETROS GENERALES........78 FIGURA ANEXO1. ESTRUCTURA ORGANIZACIONAL DE SBT ...................................... .79 ix GLOSARIO DE TÉRMINOS Y ACRÓNIMOS API Del inglés Application Programming Interface - Interfaz de Programación de Aplicaciones, es el conjunto de funciones y procedimientos o métodos que ofrece cierta librería para ser utilizado por otro software como una capa de abstracción. BEAN Es un componente software que tiene la particularidad de ser reutilizable y así evitar la tediosa tarea de programar los distintos componentes uno a uno. CICS Acrónimo en inglés de Customer Information Control System (en español, Sistema de Control de Información de Clientes), es un gestor transaccional, o monitor de teleproceso, que se ejecuta principalmente en mainframes IBM COBOL Acrónimo de COmmon Business -Oriented Language, Lenguaje Común Orientado a Negocios, es un lenguaje creado en el año 1960 con el objetivo de crear un lenguaje de programación universal que pudiera ser usado en cualquier ordenador, ya que en los años 1960 existían numerosos modelos de ordenadores incompatibles entre sí, y que estuviera orientado principalmente a los negocios, es decir, a la llamada informática de gestión. CORBA Common Object Request Broker Architecture — arquitectura común de intermediarios en peticiones a objetos, es un estándar que establece una plataforma de desarrollo de sistemas distribuidos facilitando la invocación de métodos x remotos bajo un paradigma orientado a objetos. CORE Núcleo. En informática se usa especialmente para referirse al núcleo de un procesador. En el ambiente de Mainframe es utilizado para referirse al conjunto de procesos que conforman el motor principal del sistema. CSS Hojas de estilo en cascada (Cascading Style Sheets, por sus siglas en ingles), son un lenguaje formal usado para definir la presentación de un documento estructurado escrito en HTML o XML (y por extensión en XHTML). El W3C (World Wide Web Consortium) es el encargado de formular la especificación de las hojas de estilo que servirá de estándar para los agentes de usuario o navegadores. FRONT WEB Es la parte del software que interactúa con el usuario y hace referencia a la visualización del usuario navegante (por un lado), y del administrador del sitio con sus respectivos sistemas (por el otro). HTML HyperText Markup Language. Lenguaje de marcación diseñado para estructurar textos y presentarlos en forma de hipertexto, que es el formato estándar de las páginas web. IDE Un entorno de desarrollo integrado o en inglés Integrated Development Environment ('IDE') es un programa compuesto por un conjunto de herramientas para un programador JAVA Es un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems a principios de los años 1990. El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel como punteros. xi JAVASCRIPT Es un lenguaje interpretado, es decir, que no requiere compilación, utilizado principalmente en páginas web, con una sintaxis semejante a la del lenguaje Java y el lenguaje C. JDBC Es el acrónimo de Java Database Connectivity, un API que permite la ejecución de operaciones sobre bases de datos desde el lenguaje de programación Java independientemente del sistema de operación donde se ejecute o de la base de datos a la cual se accede utilizando el dialecto SQL del modelo de base de datos que se utilice. PDF Del inglés Portable Document Format, Formato de Documento Portátil, es un formato de almacenamiento de documentos, desarrollado por la empresa Adobe Systems. SQL Lenguaje de Consulta Estructurado (Structured Query Language), es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones sobre las mismas. UML: Siglas en inglés (Unified Modeling Language) de Lenguaje Unificado de Modelado, que corresponde al lenguaje de modelado de sistemas de software más conocido y utilizado en la actualidad. Web: Palabra usada para hacer referencia al World Wide Web, que es un sistema de documentos de hipertexto enlazados y accesibles a través de Internet, denominados páginas Web. XML: Siglas en inglés de eXtensible Markup Language («lenguaje de marcas extensible»), es un metalenguaje extensible etiquetas desarrollado por el World Wide Web Consortium. xii de Capítulo 1 INTRODUCCIÓN En la actualidad, los sistemas bancarios presentan grandes problemas a causa de las estafas electrónicas realizadas por personas inescrupulosas, las cuales mediante distintas modalidades de fraude se apoderan de grandes cantidades de dinero de las entidades a través de los sistemas digitales de las mismas. Estas modalidades de fraude suelen ser difíciles de detectar en el momento de la ejecución del delito por lo que las entidades bancarias se ven obligadas a tomar acciones posteriores a los hechos que minimicen las violaciones a sus sistemas. Aún más difícil de detectar son las estafas que se llevan a cabo con complicidad interna. Tal es el caso por ejemplo del fraude informático realizado en el 2006 cuando se logró extraer de forma irregular diez mil millones de bolívares del Banco Confederado con tarjetas de crédito en solo dieciséis horas y que según investigaciones se llevo a cabo a través de un empleado de confianza de la referida institución bancaria.[6] La inseguridad que se presenta en el sistema bancario electrónico venezolano y mundial obliga a las entidades a implementar controles para evitar el fraude por representar una pérdida de activos de sus clientes. Así, surgen diversas herramientas antifraude que detectan el acto delictivo siguiendo constantemente las irregularidades que se puedan presentar en las transacciones hechas sobre los bancos, permitiendo que las entidades bancarias estén en conocimiento de posibles fraudes. De esta forma, las entidades pueden tomar las acciones respectivas para evitar o solucionar la pérdida de sus activos. En este contexto, es útil contar con un sistema de gestión de alertas de posibles estafas, en el que se puedan atender eficientemente estas alarmas y éstas 13 puedan ser procesadas debidamente para minimizar el impacto de los fraudes sobre las entidades bancarias. La empresa Sigmenta Business Technologies (SBT)[17] ofrece actualmente entre sus productos un sistema de control antifraude para clientes (SUAF, Sistema Unidad Anti-Fraude). El producto está dirigido a solventar casos de fraude sobre los clientes de las entidades y permite la gestión de alertas que reflejan el posible uso indebido de las tarjetas de crédito o débito del cliente por parte de terceras personas. Si se sospecha de un uso indebido de una tarjeta, ésta es bloqueada con el fin de evitar su uso inapropiado. Pero esto sólo resuelve los casos de fraude realizados directamente contra las tarjetas de un cliente y todavía sigue quedando un abanico de posibilidades de hechos fraudulentos directamente contra las entidades. No obstante, SBT se ha planteado la tarea de solucionar el problema de los ataques a través de fraudes masivos que extraen grandes sumas de dinero al banco con diversos tipos de tarjetas en puntos específicos de servicio bancario. Por otra parte, el Sistema Unidad Anti-Fraude Plus (SUAF+), es una nueva herramienta que requiere ser integrada con SUAF como un módulo nuevo, para proporcionar la gestión de alertas de fraude masivo en entidades, lo que implica que se abarque más el rango de control de fraude para las entidades con los productos de SBT. La idea es incorporar la herramienta con la posibilidad de poder proveer ambos sistemas juntos (SUAF y SUAF+) o cada uno de manera individual. En el presente informe se explica con detalle el desarrollo del sistema SUAF+ para gestionar las alertas de fraude masivo en entidades bancarias. En el segundo capítulo se describe el planteamiento detallado del problema, seguido por el tercer capítulo donde se muestra el contexto empresarial en donde se realizó la pasantía. En el capítulo 4 se presenta el marco teórico/tecnológico para el desarrollo del proyecto. Los capítulos 5, 6 y 7 describen detalladamente el proceso de análisis, diseño y desarrollo del proyecto, respectivamente. Finalmente, en el capítulo octavo se exponen una serie de conclusiones y las recomendaciones finales de esta pasantía. 14 Capítulo PLANTEAMIENTO DEL PROBLEMA 2 Con el objeto de monitorear el flujo transaccional que transita a través de un punto de servicio bancario, la empresa Sigmenta Business Technologies ha puesto en desarrollo el Sistema Unidad Anti-Fraude Plus, SUAF+1. El objetivo de SUAF+ es gestionar alertas tempranas que permitan atenuar el efecto que tiene un fraude electrónico a nivel masivo, a diferencia de SUAF que se orienta al control antifraude a nivel del cliente individual. En particular, SUAF+ busca captar la utilización incorrecta del resultado de transacciones o la alteración de cualquiera de las etapas del procesamiento de una transacción, para frenar el perjuicio que esto puede provocar en las entidades financieras. Para ello, SUAF+ monitorea algún tipo de variación en la cantidad de transacciones y en el monto de estas en un lapso determinado de tiempo sobre distintos puntos de servicios bancarios. Esta variación se compara versus el comportamiento histórico de cada entidad involucrada lo que debe generar indicadores para detectar el posible fraude. Para realizar esta tarea el sistema cuenta con distintos módulos que cumplen con funcionalidades especificas, entre ellos están los módulos de gestión de alertas que se encargan del procesamiento de los datos de transacciones anómalas por posible fraude. Actualmente, en SUAF se utilizan repositorios de datos a los cuales se acceden a través de servicios implementados en tecnología COBOL-CICS [7], lo que implica grandes gastos de dinero para sus clientes debido a la necesidad de adquirir licencias de software. De esta forma, es una exigencia de mucho valor para la empresa que los servicios a los repositorios de datos de SUAF+ puedan ser implementados en lenguajes y ambientes que no impacten al sistema con costos de licencias ajenas al producto o en procesos de conversión de datos entre servicios y la capa front. 1 SUAF+, por ser sucesor del sistema actual SUAF, Sistema Unidad Anti-Fraude de la empresa SBT 15 2.1. Objetivos Generales El objetivo principal de este proyecto de pasantía es diseñar e implementar el módulo de gestión de alertas de SUAF+ que permita la atención de alertas por parte de los operadores, las consultas de alertas y la parametrización general de SUAF+. Este módulo es de carácter significativo para el sistema puesto que a través de él, el usuario tendrá la posibilidad de: • Configurar los parámetros generales del sistema para la gestión de alertas. Los parámetros generales incluyen la decisión de hacer la carga automática de bines2, el lapso de espera para anular una alerta en gestión, el envío de mensaje de alerta al operador, la frecuencia del envío de alerta al operador, la frecuencia a utilizar para el análisis de la información que puede originar alerta, u otras características generales con respecto al módulo de gestión de alertas que se consideren necesarios. • Atender cada una de las alertas por entidad bancaria para que el operador determine los posibles fraudes masivos y así se atenúe el efecto que éstos conllevan. Esta gestión de alertas debe considerar que no se le asignen las mismas alertas a diferentes operadores, de manera que no se solapen en trabajo. • Consultar las alertas que están pendientes, en gestión o que ya han sido gestionadas, de manera que el usuario tenga la posibilidad de ver todos los movimientos anómalos por entidad bancaria y como están siendo atendidos por sus operadores. Además, es necesario entonces la posibilidad de que el front pueda acceder indistintamente según configuración de la aplicación a servicios desarrollados en Los bines son datos específicos de tarjetas por banco, estos son únicos para todas las entidades y reflejan el tipo de tarjeta (por ejemplo tarjeta dorada, platinum, etc) que provee la entidad a sus clientes. 2 16 tecnología COBOL-CICS o en el lenguaje con el que se implementen en este proyecto de pasantía. Adicionalmente, es indispensable que se incluya un módulo independiente de “Ayudas” para facilitar el manejo de la aplicación por parte de los usuarios, por lo que este módulo ha de ser desarrollado pensando en su uso tanto en la aplicación SUAF+ como en otras aplicaciones. Finalmente, el módulo requiere que los servicios al repositorio de datos sean desarrollados de manera independiente para ser utilizados por otras aplicaciones que requieran de ellos. Asimismo, las distintas funcionalidades producto de esta pasantía deben ser integradas en el front de SUAF por lo que es necesario que el diseño y el desarrollo del front para SUAF+ consideren especificaciones del sistema SUAF de tal manera que puedan ser integrados en un mismo producto. 17 Capítulo 3 ENTORNO EMPRESARIAL Sigmenta Business Technologies Sigmenta Business Technologies (SBT) es una subsidiaria de G. M. Advanced Security Technologies (GMAST) group, uno de los principales proveedores mundiales de sistemas de seguridad. GMAST ha participado en el desarrollo de muchos sistemas transaccionales que la han llevado a acumular experiencia y le han permitido penetrar en el complicado mundo del negocio financiero y así conocer lo importante que es alcanzar el delicado equilibrio requerido entre la riqueza de proceso y el tiempo de respuesta aceptable. Apoyado en esta experiencia y considerando los requisitos del negocio de sus clientes, GMAST desarrolló y patentó la Tecnología Transaccional Sincrónica/Asincrónica (TTSA®)[17]. Basada en redes neuronales y sistemas expertos, esta tecnología se construyó con algoritmos exclusivos y esquemas de alta precisión, cuyo enfoque principal es ayudar al sistema transaccional de la institución a ejecutar procesos pesados con el alto contenido de inteligencia de negocio, mientras cumple con los estrictos requerimientos de tiempos de respuesta que los sistemas en línea deben contemplar. En marzo de 2003, GMAST respondió al éxito de sus productos y servicios en el sector financiero altamente competitivo y creó Sigmenta Business Technologies (SBT). Sigmenta, desde entonces, está a cargo de todo lo que se relaciona con innovación tecnológica única de GMAST, incluyendo productos, servicios, recursos humanos y técnicos, conocimiento, desarrollo y soluciones. Sigmenta se dedica exclusivamente a soluciones de negocios de comercialización y desarrollo para las instituciones financieras. Por otra parte, su 18 sistema de productos está enfocado a permitir que las instituciones emisoras de tarjetas puedan crear productos financieros nuevos y personalizados para clientes finales, mientras brindan nuevas dimensiones de seguridad al área de transacciones financieras. La estrategia de negocio de Sigmenta es desarrollar un conjunto de productos avanzados basados en tecnologías únicas. La Tecnología Transaccional Sincrónica/Asincrónica (TTSA®) permite una dirección sofisticada de alta velocidad y síncrona en el manejo de transacciones de pago y que puede utilizarse en diversas áreas. Esta tecnología puede ser aplicada, entre otras, a la prevención de fraude en medios de pago, a servicios únicos que se pueden ofrecer a los titulares de tarjeta y a los dueños individuales de la cuenta, y los nuevos modelos del negocio que pueden ser creados basados en las aplicaciones innovadoras para las tarjetas del pago y extenderse a otros sectores de la población como son los prepagados y no bancarizados. La empresa mantiene en su visión el poder ofrecer a las instituciones financieras, tecnología de punta que les permita crear rápidamente productos y servicios innovadores para acceder a sectores de la población tradicional y no tradicional, así como a empresas y gobierno; teniendo como visión convertirse en el proveedor principal de tecnologías y de soluciones innovadoras para el sector financiero. Entre los principales productos que mantiene la empresa podemos mencionar las siguientes soluciones de software: la solución financiera total para no bancarizados CNB, la solución antifraudes para medios de pago SUAF, el sistema de segmentación de condiciones de consumo para tarjetas crédito/debito SCAT y la solución total para prepago eBonus . [17] Finalmente, se presenta en el Anexo A la estructura organizacional de la empresa donde se resalta en amarillo la posición del pasante en la empresa. 19 Capítulo MARCO TEÓRICO/TECNOLÓGICO 4 En este capítulo se expone la información teórica y tecnológica que soporta el trabajo de pasantía. Estos conceptos relatados a continuación forman parte del diseño e implementación del proyecto. Básicamente, se comenzará a exponer la teoría para el desarrollo del sistema, ésta como se verá explica el modelo de programación por capas que es el centro de desarrollo de nuestra aplicación. Luego se enfatizará sobre cada una de las tecnologías importantes utilizadas para la implementación del sistema. 4.1 Arquitectura de software En el diseño de sistemas informáticos actual se suele usar las arquitecturas multinivel o Programación por capas. En dichas arquitecturas a cada nivel se le confía una misión simple, lo que permite el diseño de arquitecturas escalables que pueden ampliarse con facilidad en caso de que las necesidades aumenten [8]. El diseño más en boga actualmente es el diseño en tres niveles o en tres capas [3], el cual consiste en dividir los componentes del sistema en capa de presentación, capa de negocio y capa de datos. La primera capa, la de presentación, es la que ve el usuario, presenta el sistema al usuario, le comunica la información y captura la información del usuario dando un mínimo de proceso. Esta capa se debe comunicar únicamente con la capa de negocio. En el siguiente nivel tenemos la capa de negocio que es donde residen los programas que se ejecutan, recibiendo las peticiones del usuario y enviando las respuestas tras el proceso. Se denomina capa de negocio, e incluso de lógica del negocio, pues es aquí donde se establecen todas las reglas que deben cumplirse. Esta capa se comunica con la capa de presentación, 20 para recibir las solicitudes y presentar los resultados, y con la capa de datos, para solicitar al gestor de base de datos para almacenar o recuperar datos de él. Por último se encuentra la capa de datos donde residen los datos. Está formada por uno o más gestores de bases de datos que realiza todo el almacenamiento de datos, reciben solicitudes de almacenamiento o recuperación de información desde la capa de negocio. En la figura 4.1 se puede ver la conceptualización de cómo se distribuyen los componentes de una aplicación de arquitectura de tres capas sobre los nodos físicos que participan en el flujo de datos [8]. La capa de presentación sería la que se muestra en la máquina del cliente, la capa de negocios estaría en el servidor principal de la aplicación y la capa de datos en un servidor de base de datos. Figura 4.1 Arquitectura de tres capas Todas estas capas pueden residir en un único ordenador, si bien lo más usual es que haya una multitud de ordenadores donde reside la capa de presentación. Las capas de negocio y de datos pueden residir en el mismo ordenador, y si el crecimiento de las necesidades lo aconseja se pueden separar en dos o más ordenadores. Así, si el tamaño o complejidad de la base de datos aumenta, se 21 puede separar en varios ordenadores los cuales recibirán las peticiones del ordenador en que resida la capa de negocio. Si por el contrario fuese la complejidad en la capa de negocio lo que obligase a la separación, esta capa de negocio podría residir en uno o más ordenadores que realizarían solicitudes a una única base de datos. En sistemas muy complejos se llega a tener una serie de ordenadores sobre los cuales corre la capa de datos, y otra serie de ordenadores sobre los cuales corre la base de datos. Uno de los más importantes patrones de la arquitectura de software es la programación por capas, la cual es un estilo de programación en la que el objetivo primordial es la separación de la lógica de negocios de la lógica de diseño. La ventaja principal de este estilo, es que el desarrollo se puede llevar a cabo en varios niveles y en caso de algún cambio sólo se ataca al nivel requerido sin tener que revisar entre código mezclado. Además, permite distribuir el trabajo de creación de una aplicación por niveles, de este modo, cada grupo de trabajo está totalmente abstraído del resto de niveles, simplemente es necesario conocer la API que existe entre niveles [4]. 4.2 Fundamentos Tecnológicos Para el desarrollo del sistema SUAF+ se tiene previsto utilizar varias tecnologías con las que cuenta su predecesor SUAF por lo que es necesario tener presente cuáles son y las ventajas que presentan para poder asegurar una implementación óptima en condiciones de desarrollo. Lo más importante en esta sección es la plataforma Java Platform, Enterprise Edition o Java EE [11], que es una plataforma de programación para desarrollar y ejecutar software de aplicaciones en el lenguaje de programación Java[5] con arquitectura distribuida de “n” niveles, basándose ampliamente en componentes de software modulares que se ejecutan sobre un servidor de aplicaciones. 22 La plataforma Java EE está definida por una especificación e incluye varias especificaciones de API, tales como JDBC [13], RMI [15], e-mail, JMS[14], Servicios Web, XML[21], etc. Java EE también permite configurar algunas especificaciones únicas para Java EE para componentes permitiendo al desarrollador crear una aplicación empresarial portable entre plataformas y escalable, a la vez que integrable con otras tecnologías. Estas especificaciones incluyen Enterprise JavaBean[10]s, servlets[16], JavaServer Pages[12] y varias tecnologías de servicios Web. Otros beneficios añadidos son, por ejemplo, que el servidor de aplicaciones puede manejar transacciones, seguridad, escalabilidad, concurrencia y gestión de los componentes desplegados, lo que implica que los desarrolladores pueden concentrarse más en la lógica de negocio de los componentes en lugar de en tareas de mantenimiento de bajo nivel. Es de resaltar que en esta plataforma se desarrollará todo el sistema propuesto, esto para aprovechar todas las ventajas que ya se discutieron anteriormente. Por otra parte, en Java EE se especifica el uso de un contenedor Web el cual es la implementación que hace cumplimiento del contrato de componentes Web [1] de la arquitectura J2EE. Este contrato especifica un entorno de ejecución para componentes Web que incluye seguridad, concurrencia, gestión del ciclo de vida, procesamiento de transacciones, despliegue y otros servicios. Un contenedor Web suministra muchos servicios así como también una vista federada de las APIs de la plataforma J2EE. Para el caso del desarrollo del sistema SUAF se utilizará el Sun Java System Application Server 7 [9] como contenedor Web porque cumple con un buen desempeño y robustez, además es el contenedor por excelencia con el que trabaja la empresa SBT. 23 Por otro lado, una de las especificaciones más significativas en el desarrollo del sistema son los Enterprise JavaBeans (EJB) [10] que son una de las API que forma parte del estándar de construcción de aplicaciones empresariales Java EE de Sun Microsystems. Su especificación detalla cómo los servidores de aplicaciones proveen objetos desde el lado del servidor que son, precisamente, los EJBs como por ejemplo comunicación remota utilizando CORBA [18], transacciones, control de la concurrencia, eventos utilizando JMS [14] (Java messaging service), servicios de nombres y de directorio, seguridad, ubicación de componentes en un servidor de aplicaciones. La especificación de Enterprise Java Bean define los roles jugados por el contenedor de EJB y los EJBs, además de disponer los EJBs en un contenedor [1]. El objetivo de los EJBs es dotar al programador de un modelo que le permita abstraerse de los problemas generales de una aplicación empresarial como son la concurrencia, las transacciones, la persistencia, la seguridad, etc. El hecho de estar basado en componentes permite que éstos sean flexibles y sobre todo reutilizables. Por otra parte, existen tres tipos de EJBs : los EJBs de entidad, los de sesión y los dirigidos por mensajes. Los EJBs de Entidad (Entity EJBs) tienen como objetivo encapsular los objetos del lado del servidor que almacena los datos. Los EJBs de Entidad presentan la característica fundamental de la persistencia y robustez en acceso a datos. Con respecto a los EJBs de Sesión (Session EJBs) son los que gestionan el flujo de la información en el servidor y generalmente, sirven a los clientes como una fachada de los servicios proporcionados por otros componentes disponibles en el servidor. Por último, los EJBs dirigidos por mensajes (Messagedriven EJBs) son los únicos beans con funcionamiento asíncrono, que se suscriben a un tema (topic) o a una cola (queue) usando el Java Messaging System (JMS) y los mismos se activan al recibir un mensaje dirigido a dicho tema o cola. 24 En el presente proyecto se utilizará los EJBs de entidad para garantizar la persistencia y los EJBs de sesión como fachada para el acceso a los servicios de acceso a datos. Otra de las tecnologías importantes utilizadas en el sistema fue los Java Server Pages (JSP) [12] que permiten generar contenido dinámico para Web, en forma de documentos HTML [20], XML [21] o de otro tipo. Esta tecnología es un desarrollo de la compañía Sun Microsystems. La especificación JSP 1.2 fue la primera que se liberó y en la actualidad está disponible la especificación JSP 2.1. JSP fue la base para el desarrollo de las interfaces de usuario de la aplicación. Las JSP's permiten la utilización de código Java mediante bloques de código incrustado en páginas Web. Además es posible utilizar algunas acciones JSP predefinidas mediante etiquetas. Estas etiquetas pueden ser enriquecidas mediante la utilización de librerías de etiquetas (TagLibs o Tag Libraries) externas e incluso personalizadas. El funcionamiento general de la tecnología JSP comienza cuando el servidor de aplicaciones interpreta el código contenido en la página JSP para construir un Servlet, cuya salida será un documento estático, típicamente HTML, que se presentará en la pantalla del navegador del usuario. Un Servlet es un programa que se ejecuta en un servidor y cuyo uso más común es generar páginas Web de forma dinámica a partir de los parámetros de la petición que envíe el navegador Web. Por último, la tecnología JDBC [13] que es el acrónimo de Java Database Connectivity, es un API que permite la ejecución de operaciones sobre bases de datos desde el lenguaje de programación Java independientemente del sistema de operación donde se ejecute o de la base de datos a la cual se accede utilizando el dialecto SQL del modelo de base de datos que se utilice. 25 El API JDBC se presenta como una colección de interfaces Java y métodos de gestión de manejadores de conexión hacia cada modelo específico de base de datos. Un manejador de conexiones hacia un modelo de base de datos en particular es un conjunto de clases que implementan las interfaces Java y que utilizan los métodos de registro para declarar los tipos de localizadores a base de datos (URL) que pueden manejar. Para utilizar una base de datos particular, el usuario ejecuta su programa junto con la librería de conexión apropiada al modelo de su base de datos, y accede a ella estableciendo una conexión, para ello provee un localizador a la base de datos y los parámetros de conexión específicos. A partir de cuando se conecta el usuario puede realizar cualquier tipo de tareas con la base de datos a las que tenga permiso: consultas, actualizaciones, creación y eliminacion de tablas, ejecución de procedimientos almacenados en la base de datos, etc. Este tipo de conectividad a base de datos será de mucha utilidad para implementar consultas alternas a las bases de datos en el módulo de servicios de acceso a datos. 26 Capítulo 5 ANÁLISIS En este capítulo se describen las actividades realizadas durante el inicio del desarrollo del Sistema SUAF+. Para el análisis se desarrollaron diversas actividades como por ejemplo el estudio del panorama general del sistema y levantamiento de requerimientos donde se determinará cuáles requerimientos funcionales y no funcionales serán necesarios para que el módulo cumpla con los objetivos deseados por la compañía. Además se tuvo un lapso de estudio de las herramientas de tecnología a ser utilizadas. En esta fase de análisis se hizo una previa planificación a seguir para el desarrollo del sistema que se puede ver en el Apéndice A.1. De igual manera, se construyó una tabla de riesgos posibles sobre la planificación y el proceso de implementación del proyecto que se pueden ver en el Apéndice A.2. 5.1 Panorama general SUAF+ es una herramienta que consta de varios módulos. Para este proyecto de pasantía se ha escogido el desarrollo del módulo de gestión de alertas con los respectivos servicios a los repositorios de datos, el módulo de ayudas online, y el desarrollo de los diversos componentes de interacción entre los distintos módulos. Para el entendimiento de cómo debe operar el módulo es necesario conocer las restricciones del sistema. La entidad bancaria no debe esperar por el sistema para seguir despachando dinero a las peticiones, sino más bien el sistema recaba los datos de las transacciones y mediante algunos filtros se emiten alertas que deben ser presentados a los operadores para que las gestionen. 27 En cuanto a la gestión de alertas, no puede haber solapamiento en la operación entre los operadores. Es decir, un operador no puede atender las alertas que actualmente están siendo atendidas por otro operador. Los operadores tienen un límite máximo de gestión de una alerta dada. Es decir, un operador no puede tener retenida una alerta por tiempo ilimitado por lo que si no ha concluido de gestionar la alerta en el lapso dado se le retira la gestión de esa alerta. Esto para evitar sabotajes o caídas del sistema de cada operador. Es de resaltar que, la atención de alertas es realizada por un operador y la consulta de alertas serán hechas sólo por los supervisores. Con respecto a las funcionalidades de parametrización general sólo puede ser llevada a cabo por los administradores del sistema. Por último, aunque el operador esté en el front de SUAF se le debe presentar una alerta si hay alertas por atender en SUAF+ Por otra parte, un problema encontrado en el sistema actual de conexión de SUAF es que los tiempos de desarrollo de front para nuevas funcionalidades que se comunican con COBOL-CICS [7] se hacen muy largos, porque no hay una configuración dinámica que permita ayudar al desarrollo. Por lo tanto, es deseable que el grupo de trabajo diseñe un componente que conste de un manejo dinámico y eficiente para la conexión a los servicios de COBOL-CICS. Entre las características que el sistema debe presentar de acuerdo a los requerimientos establecidos por los clientes está el manejo amigable al usuario. Es decir, es necesario que la herramienta sea sencilla de usar ya que los usuario pasaran gran parte del tiempo en ellas y necesitan rapidez al momento de manipularla. El cliente desea que el personal de SUAF+ se acostumbre fácilmente a la nueva herramienta, para ello se debe contemplar una interfaz sencilla, manejo amigable, que permitan la rápida adaptación de los usuarios al sistema. 28 De igual forma el sistema debe ser flexible a distintas configuraciones de interfaz por lo que se debe tener esto en cuenta a la hora de diseñar la estructura de la interfaz. Además, el desarrollo debe contemplar que la herramienta sea escalable y de poder soportar inserciones de nuevas funcionalidades en la gestión de alertas de manera que el producto pueda ir creciendo según los requerimientos. Asimismo, es necesaria una ayuda en línea, así que la herramienta contará con páginas de ayuda especializadas para cada una de las funcionalidades. Éstas sirven como una referencia rápida para el usuario en caso que no comprenda alguno de los elementos de navegación de la página o la funcionalidad de la misma. También se desea que los sistemas SUAF y SUAF+ se puedan manejar desde un mismo portal, por lo que se espera la integración de las dos aplicaciones y desarrollo de SUAF+ que incluya un fácil acoplamiento con SUAF. La integración tiene como meta que el producto pueda ser comercializado para quien lo requiera sin el problema de la adquisición de costosas nuevas licencias de terceros, y que el sistema se pueda distribuir con las viejas licencias si ya los clientes las tienen, razón por la que se espera un desarrollo modular de la conexión a servicios a repositorios, para que se pueda escoger la plataforma de servicios que se requiera. Finalmente, se quisiera minimizar el tiempo de desarrollo para nuevas funcionalidades hacia servicios en COBOL-CICS, lo que hace pensar en un desarrollo de un módulo de conexión a COBOL-CICS de manera dinámica y eficiente, para facilitar el desarrollo y mejorar el sistema en escalabilidad. Como característica adicional, la aplicación a nivel de front end se debe poder presentar multi-idioma pues así esta implementado SUAF por lo que se debe contemplar este requerimiento. 29 5.2 Casos de Uso Los casos de uso definen la funcionalidad pura del sistema y derivan de los requerimientos funcionales del proyecto. Asimismo, sobre cada caso de uso actúan los usuarios que harán tendrán disponibilidad de efectuar dichas funcionalidades. Aquí se hará una descripción simple de los usuarios del sistema y de los casos de uso del mismo según los usuarios implicados. En la figura 5.1, se observa el diagrama de casos de uso de la aplicación. Como se ve en el sistema se contemplan tres tipos básicos de usuarios: operadores, supervisores y administradores. Los operadores son los usuarios que atienden de alertas en el sistema. Por otra parte, los supervisores son los que suelen hacer inspección de cómo están trabajando los operadores y revisan el estado de las alertas atendidas y por atender. Por último, los administradores que configuran el sistema en general y se encargan de operaciones de mantenimiento del sistema. Los casos de uso que se observan en la figura 5.1 están agrupados por usuario del sistema, lo que deja un panorama claro de lo que debe hacer cada integrante del sistema. Se puede discernir que existen tres casos de uso que pueden ejecutar todos los integrantes del sistema estos son las consultas listado de entidades, ayudas en línea y parámetros generales. Se tiene entonces que consultar lista de entidades es el caso de uso que permite a todos los usuarios obtener el conjunto de identificadores de entidades para acceder a otras funcionalidades sobre ellas. Luego consultar ayudas en línea permite a todos los usuarios obtener referencia rápida en caso que no se comprenda alguno de los elementos del sistema. Y por último en este grupo de casos de uso se tiene a consultar parámetros generales, el cual brinda información del sistema a todos los usuarios del mismo para que se pueda informar a los administradores de una posible mala configuración que deban atender. 30 En el caso de los usuarios de tipo operador sólo se le asigna el caso de uso Atender alertas pendientes, pues es una funcionalidad que consiste básicamente en asignarle al operador las alertas pendientes de una entidad en particular para que pueda procesarlas. Este caso de uso incluye a su vez el caso de uso de procesar alertas, el cual consiste en que el operador envíe al servidor la información procesada de una o más alertas que ya han sido gestionadas por él. En cuanto a los supervisores, sólo tiene las funciones de inspeccionar el estado de la gestión de alertas por lo que los casos de uso asociados a este usuario son consultar alertas pendientes y alertas gestionadas. Las consultas de alertas pendientes de una entidad, es un caso de uso que corresponde a la actividad de revisión de las alertas que se encuentran como no atendidas o las que están siendo atendidas, para poder verificar si están siendo gestionadas por los operadores. Por otra parte, las consultas de alertas gestionadas de una entidad, es un caso de uso exclusivo para los supervisores del sistema y corresponde a la actividad de supervisión de las alertas que ya fueron procesadas por los operadores de manera de comprobar datos de alertas y poder verificar como han sido gestionadas por los operadores. Para culminar con los casos de uso, se tiene el caso de uso del administrador del sistema a desarrollar, configurar parámetros generales. Este caso de uso solamente debe ser asignado a los administradores del sistema pues tienen la potestad de configurar la carga automática de bines o datos específicos de tarjetas por banco, el lapso de espera para anular una alerta en gestión, envío de mensaje de alerta al operador, la frecuencia del envío de alerta al operador, la frecuencia a utilizar para el análisis de la información que puede originar alerta, u otras características generales con respecto al módulo de gestión de alertas que se consideren necesarios. 31 Figura 5.1. Diagrama de Casos de Uso del sistema La descripción más detallada de estos casos de uso puede ser vista en el Apéndice B. 32 Capítulo 6 DISEÑO En este capítulo se describen las actividades asociadas al diseño de la arquitectura general que tendrá el sistema a desarrollar, por ello es la fase más delicada del proyecto. 6.1 Decisiones Generales Para esta fase se necesitaron tomar ciertas decisiones importantes para el cumplimiento de los requerimientos de desarrollo. Las primeras decisiones de diseño se basaron en los objetivos generales del proyecto y en las restricciones del mismo. Por decisión general, el diseño principal de interfaz de usuario es la misma del diseño del sistema SUAF ya que para la integración de los dos sistemas el cliente prefiere que se vean como si fuese uno solo. Para la conexión con los servicios de repositorios de datos se creará un módulo de conexión general que conecte los módulos de front con los módulos de servicios de repositorio de manera transparente. 33 6.2 Arquitectura del Sistema A continuación se describirá el modelado de la arquitectura del sistema a desarrollar utilizando varias herramientas que brinda el lenguaje UML[8]. 6.2.1 Sobre el Diseño Lógico Aquí se expone el modelo conceptual del módulo de gestión de alertas, el cual describe los conceptos más importantes y sus respectivas relaciones los unos con los otros. La figura 6.1 muestra el modelo conceptual del módulo de gestión de alertas. Se puede observar en la figura que las entidades bancarias son el centro de la gestión, pues sobre ellas es que se producen las alertas de fraude y sobre ellas estarán estas alertas pendientes o gestionadas. Figura 6.1. Modelo Conceptual del módulo de gestión de alertas Por otro lado, la estructura del diseño del sistema a desarrollar se basa principalmente en dos módulos: Front Web y Servicios de Acceso a Datos. Estos módulos comprenden varias capas del sistema como lo son las capas de presentacion, Negocio y conexión a Acceso de Datos en el caso del módulo Front Web y JavaServicios para el Módulo de Servicios de Acceso a Datos. 34 En el diagrama de la Figura 6.2 se observa las distintas capas representadas dentro de su correspondiente módulo. Estas capas están dispuestas según el flujo de datos en el sistema, y como se ve también la organización de los módulos cumple con esta norma. Figura 6.2.Capas de la Aplicación SUAF+. En el desarrollo de cada una de las capas se ha dispuesto una manera modular de diseño que independice cada capa y que a su vez haga transparente la comunicación entre ellas minimizando el impacto que pueda tener un cambio esencial en alguna de las capas sobre las demás. 35 Cada una las capas según los módulos cumple un objetivo especifico dentro de la arquitectura de programación por capas. Estas son explicadas a continuación. Primero, la capa de Presentación es la capa con la cual interactúa el usuario en el Front Web, lo que comúnmente se denomina interfaz de usuario. Siguiendo con la siguiente capa, la de lógica de Negocio es la capa que recibe la petición del usuario desde la capa de presentación y se encarga de darle manejo a dicha petición en el Front Web. Se han establecido una serie de manejadores dentro de esta capa que se encargan de distribuirse la carga de las peticiones según la funcionalidad que el usuario este solicitando. La capa de Conexión a Servicios de Acceso a Datos en Core es más bien un submódulo que surge de la necesidad de que la aplicación en el Front Web pueda interactuar con distintas implementaciones de Servicios de Acceso a Datos a Core (en COBOL-CICS [7] o JAVA en nuestro caso), por lo que es considerablemente importante que el diseño de esta capa se haga de la manera más dinámica posible. Por último la capa de Servicios (Java) de Acceso a Datos en Core: esta capa es la que maneja las peticiones de datos a Core, accede a los datos y los manipula según las peticiones retornando los datos procesados. Además en esta capa se maneja la concurrencia de acceso de usuarios a los datos para garantizar la integridad de los mismos, como es el caso de la atención de alertas donde es necesario bloquear el acceso a otros usuarios por cierto tiempo estimado. Este módulo se desarrollará completamente independiente del módulo Front Web de manera que pueda ser utilizado por otro módulo si se necesita. 36 Ahondando más en el diseño, la Figura 6.3 muestra los paquetes de cada capa mencionada anteriormente separados por los módulos en los que se clasifican las capas. Figura 6.3. Modelo de Diseño: Paquetes En este diseño se expone claramente que se debe tener un orden de paquetes según cada capa que se esté desarrollando, esto para ahorrar problemas de identificación de clases y evitar el posible solapamiento de archivos en el mismo directorio lo que traería problemas de implementación y pruebas. 37 Esto hace separar más los conceptos en los paquetes los cuales se irán describiendo según su funcionalidad y el conjunto de clases que encierran dentro de cada módulo a desarrollar. Dentro del módulo Front Web que será implementado en su totalidad bajo el paquete <com.swd.cfp.fr> se puede también ver que se han especificado subpaquetes del mismo para las capas que contiene. Estas capas son la de presentación, negocio y conexión a de acceso a datos. La capa de presentación del módulo Front Web se diseñó bajo el paquete <com.swd.cfp.fr.fachada> y estará asignado a contener las clases que gestionan las peticiones de la capa de presentación enviando la respectiva petición a la siguiente capa. La capa de Negocio tiene su diseño bajo el paquete <com.swd.cfp.fr.logica> y que tiene a su vez dos sub-paquetes más: el <com.swd.cfp.fr.logica.beans> que es un paquete que contiene los contenedores que se usaran para transportar los datos de una capa a la otra; y el <com.swd.cfp.fr.logica.manejadores> que es un paquete que gestionará todo lo correspondiente a la petición de la capa de presentación hará la petición de acceso a datos y responderá nuevamente a la capa de presentación. Por último, para el módulo de Front Web se tiene la capa de Conexión de Acceso a Datos en Core quien tiene su diseño sobre el paquete <com.swd.conexioncore> el cual es un paquete que contiene todas las clases que hacen posible la conexión a los servicios de acceso a datos de forma transparente. Luego, se tiene que el módulo de Servicios de Acceso a Datos en Java tendrá como paquete principal a <com.swd.cfp.jservicios>, éste también contemplará varios sub-paquetes. Estos son: <com.swd.cfp.jservicios.fachada> que es el paquete que contiene la fachada de comunicación hacia los servicios que se implementan en este módulo. Siguiendo con <com.swd.cfp.jservicios.servicios> que 38 contiene todas las clases que proveen de los servicios que manejan los datos de la petición, procesan los mismos y devuelven la respuesta a la petición. Finalizando con <com.swd.cfp.jservicios.accesodatos> que será el paquete que contiene todas las clases que proveen la conexión a los repositorios de datos Adicionalmente, se encuentran tres paquetes genéricos fuera de los dos módulos principales. Estos son paquetes reutilizables que contienen clases que pueden ser utilizadas a lo largo del sistema, evitando así la redundancia de código. El primero de ellos es <com.swd.util> que contiene las clases genéricas de conversión de datos como fechas y montos y es donde están las clases encargadas de acceder a las propiedades del sistema. El segundo de los paquetes es <com.swd.excepciones> el cual es necesario pues en el se definen las clases manejadoras de errores o excepciones del sistema. Por último, se encuentra el paquete <com.swd.ayudas> el cual será el que contenga todas las clases necesarias para el módulo de ayudas en línea. 6.2.2 Despliegue del Sistema En la figura 6.4 se observa los nodos físicos que participan en el flujo de datos en el sistema. Esto es, desde que el usuario hace una petición desde su computador pasando el mensaje al servidor Web quien hará la petición a un servidor de conexión de datos hasta gestionarse el acceso a la base de datos. Luego se producirá el proceso inverso para hacer llegar al cliente la respuesta a su petición. 39 Figura 6.4. Nodos del sistema En la figura 6.5 se puede ver específicamente los componentes de software que interactúan en el flujo de datos sobre cada uno de los nodos físicos. Figura 6.5. Componentes del sistema en los nodos donde se ejecutan. Particularmente se sigue una lógica sencilla del modelo Cliente Servidor de tres capas, aunque con un nodo más por estar el servidor de servicios de acceso a 40 datos. La necesidad de este servidor de acceso a datos es básicamente por seguridad de los datos, aunque los tres servidores dispuestos en la imagen anterior cumplen funciones distintas, es muy probable que sea el mismo servidor. 6.2.3 Sobre el Diseño Visual Como ya se mencionó el diseño general de las pantallas deben ir de acuerdo al diseño de SUAF pues es requerimiento poder integrar los dos sistemas y que no existan discordancias entre uno y otro. Por otra parte, se diseñaron algunos bocetos gráficos de la mayoría de las funcionalidades a implementar. Estos fueron presentados al cliente para garantizar que la disposición de los elementos estuviese acorde con sus requerimientos. Estos bocetos están incluidos en el apéndice D, así como también las pantallas finales de la aplicación. 41 Capítulo 7 IMPLEMENTACIÓN En este capítulo se describen todas las actividades realizadas con respecto a la construcción del sistema. Durante esta fase se describen las herramientas utilizadas, la implementación del sistema, el estado actual del sistema y los problemas encontrados en esta fase. 7.1 Configuración del ambiente de desarrollo El ambiente de desarrollo principal se centra en las estaciones de trabajo asignados, los cuales constan del sistema operativo Microsoft Windows XP Professional. Como gran parte del sistema a desarrollar se encuentra en el lenguaje Java se necesitaba una herramienta que ayudara al desarrollador a construir las clases y paquetes necesarios de manera efectiva. Para ello se decidió hacer uso del IDE NetBeans 5.5, que es una herramienta muy potente para construir proyectos del tipo J2EE, además tiene una gran capacidad de conexión a los servidores de aplicaciones y servidores Web desde la misma herramienta, lo cual provee gran agilidad a la hora de montar las funcionalidades que se van desarrollando en los servidores de pruebas. Como existen varios desarrolladores implementando distintas partes del sistema se decidió utilizar una herramienta de control de versiones (cvs), para ello se recurrió a la aplicación CVSNT pues es de fácil uso, instalación y configuración lo que ahorra el tiempo al momento de aprender a utilizar la herramienta. 42 Como herramienta de ayuda para el desarrollo Web se usaron Macromedia Dreamweaver 8, que es una herramienta de diseño Web muy útil pues tiene una extensa biblioteca de información de referencia de varios lenguajes y tópicos para el desarrollo Web. Por otro lado también se utilizó Eclipse Palette 2.0.20, que es un selector o capturador de colores, que permite copiar cualquier tono que se vea en cualquier pixel de nuestro monitor. A partir del tono capturado, se puede generar una paleta de tonos similares. Como era necesario agilizar las pruebas de las funcionalidades en los servidores, se prefirió hacer una instalación del servidor Sun Java System Application Server 7 en la estación de trabajo del pasante para esas pruebas inmediatas que se hacen necesarias hacer sin tener que ir a otra máquina. También fue necesario instalar la herramienta Adobe Acrobat 7.0 Professional para la creación de los documentos en formato PDF que son necesarios para el módulo de ayudas de la aplicación. Para comprobar que la páginas Web que se están desarrollando son compatibles con la mayoría de los navegadores, además del Internet Explorer para el que debe estar certificado obligatoriamente el sistema, se decidió instalar los navegadores Mozilla Firefox, Netscape y Opera, los cuales junto con el IE forman gran parte de los navegadores que hay actualmente en el mercado. 7.2 Implementación del Sistema Suaf+ El sistema se decidió implementar en dos partes principales, la primera parte se dedicaría enteramente a desarrollar todo lo relacionado con el módulo Front Web, luego de esto se desarrollaría la segunda parte donde se dedicaría a desarrollar el módulo de Servicios de Acceso a Datos de SUAF+. En esta sección se explicará el desarrollo de estas partes. 43 7.2.1 Módulo Front Web: Para el módulo de front Web se había hecho un diseño de tres capas las cuales se desarrollan de manera modular para que la comunicación entre ella fuese totalmente transparente. Estas capas son la capa de presentación, la capa de lógica de negocio y la sub-capa de conexión a servicios de acceso a datos en core. La implementación de estas capas se describen a continuación. En la capa de presentación se implementó todo lo relacionado con la interfaz de usuario. Como es un sistema que debe ser totalmente compatible con SUAF se decidió tomar las especificaciones de éste para desarrollar SUAF+. El desarrollo las páginas Web se manejó con el lenguaje JSP[12] en las páginas dinámicas y se usó el lenguaje HTML en los documentos que no requieren de mayor dinamismo. El lenguaje JavaScript [2] fue útil para proveer a los documentos de mayor funcionalidad de cara al usuario, para hacerlas más dinámicas a la hora de validar datos que el usuario ingrese en el sistema, lo cual hace más ágil la funcionalidad pues como los datos se validan en la misma máquina del cliente, éste no tiene que esperar a que los datos vuelvan del servidor cuando hay un error en ellos. Para dar un manejo eficiente de la apariencia de la aplicación de cara al usuario se empleó de las hojas de estilo (CSS) [19] que permiten cambiar la apariencia del sistema sin tener que modificar las páginas Web. Las “pantallas” finales se pueden observar en el apéndice D. El servidor escogido para esta aplicación fue el Sun Java System Application Server 7 [9] que provee la empresa Sun Microsystems, el cual consta de una gran robustes en el manejo de concurrencia de usuarios. 44 Para la comunicación de esta capa con la capa de lógica de Negocio se implementó una clase neurálgica que actúa de puente entre una capa y la otra, lo que hace totalmente transparente las implementaciones que existan en la capa de Negocio haciendo el desarrollo de las capas enteramente modulares. Luego, en la capa de lógica de negocio se programó todo lo relacionado con la lógica de la aplicación. Para la construcción de esta capa se usó el lenguaje Java el cual provee grandes ventajas en el desarrollo de sistemas como lo son modularidad, flexibilidad y reusabilidad, junto con la gran cantidad de librerías de utilidad que existen de este lenguaje lo que ahorra muchísimo en desarrollo de aplicaciones. Se empleó Java en su versión J2SE 1.4 para la realización de las clases y J2EE 1.3 para la construcción de los paquetes de instalación. Esta capa se desarrolló siguiendo el diseño de paquetes hecho en la fase de diseño. Los datos que mandan y esperan estas clases con respecto a la capa de conexión a servicios de acceso a datos se manejan a través de estructuras de tipo Hash. Estos datos se procesan y se incluyen en los contenedores tipo bean para regresarlos al la capa de Presentación. Por otro lado, en la capa de conexión a servicios de acceso a datos en Core se presenta la implementación de la conexión a los servicios de datos. En esta capa se emplea Java J2SE [5] para el desarrollo de las clases, recurriendo a la ‘Reflexión’ para resolver el problema de la conexión a distintas implementaciones de servicios de acceso a datos pues es una de las grandes ventajas que ofrece a los programadores el lenguaje Java, ya que para conectarse a una o a otra implementación de los servicios no se necesita reescribir y recompilar el código dependiendo del servicio a utilizar, pues se toma el tipo de conexión de una variable en un archivo externo de propiedades del sistema (property) el cual contiene los datos de conexión y se hace la invocación al servicio configurado sin 45 necesidad de importarse clases innecesarias. Con esto dependiendo de los datos de conexión el módulo hará reflexión hacia las respectivas interfaces que harán el enlace a los servicios correspondientes. Una parte delicada para la conexión a los Servicios en COBOL-CICS es que se tiene que hacer un manejo eficiente y dinámico para las nuevas funcionalidades o modificaciones en las existentes que surjan de ese lado. Para solucionar ese problema se implementó en esta capa un manejo dinámico de la conexión a este tipo de servicio donde la descripción de los parámetros de entrada y de salida se leen desde archivos XML[21] situados en el servidor Web, los cuales proveen toda la información para poder hacer llamada a estos servicios en COBOL-CICS a través de una gran cadena de caracteres donde van los campos de los parámetros de entrada y salida según se describan en los XML. Este manejo quita un buen lapso de retraso de los tiempos desarrollo en el sistema para las nuevas funcionalidades o las modificaciones a las existentes. 7.2.2 Módulo de Servicios de Acceso a Datos En este módulo se implementará todo lo relacionado con los servicios de acceso a datos del sistema. Se sirvió de Java en su versión J2SE 1.4 para el desarrollo de las clases y J2EE 1.3 para la construcción de los paquetes de instalación, sobre todo se hará uso de los EJB2.0 provistos por J2EE 1.3 que proporcionan entre otras cosas gran capacidad de manejo de concurrencia de usuarios con los EJB de sesión y un buen manejo de acceso a las bases de datos a través de los EJB de entidad pues brindan confiabilidad y buen desempeño, además se hace uso también de JDBC para algunas funcionalidades que no son soportadas por EJB2.0 como count, max, min y otras funcionalidades de SQL que son necesarias tener. 46 Este módulo consta de una interfaz de acceso, la cual hace la distribución de las peticiones a los respectivos servicios. Esta interfaz esta implementada en EJB de sesión al que debe referenciar el módulo que interactúe con ella. Cada servicio esperará un contenedor de datos de tipo Hash que se retornará con los datos de salida. Para el acceso a los repositorios de datos se hace uso de los EJB de entidad pues proveen de gran confiabilidad a la hora de acceder a los datos de manera concurrente, estos EJB son configurados por archivos XML de despliegue propios para estas funcionalidades y necesitan de parámetros especiales que hay que añadir en la configuración del servidor. 7.2.3 Módulo de Ayudas Online Aquí se desarrolló también el módulo de Ayudas que está totalmente en la capa de presentación. Este módulo consta de un grupo de páginas en JSP y HTML y elementos como archivos JS, CSS [17], imágenes y documentos pdf, que están reunidos en un paquete independiente de la aplicación, esto hace que cualquier aplicación pueda utilizarlo siguiendo unos simples pasos de instalación. El módulo de ayudas consta principalmente de una sección de búsqueda por índice de palabras y la sección principal donde se muestra el documento de ayuda solicitado. Este documento solicitado es de formato PDF y se almacena en un directorio específico del servidor, al igual que el archivo donde se almacena el índice de búsqueda. El módulo actúa como una ventana de tipo emergente que será invocada con una función en JavaScript provista por un archivo JS que se incluye en el módulo de Ayudas. Para hacer esta llamada es necesario agregarle una clave de búsqueda, la cual sirve para buscar el documento en el servidor y mostrarlo en la sección principal de la ventana emergente de ayudas. 47 Para las búsquedas por índice de palabras se diseñó un esquema por índices en un archivo de propiedades del sistema. En el lenguaje Java existen muchas librerías para el manejo de estos archivos, sobre todo en la búsqueda de palabras clave pues las mismas son almacenadas en una estructura de tipo Hash lo que agiliza esta búsqueda. Teniendo esta facilidad sobre estos archivos se asigna las palabras a los documentos de búsqueda asociados o viceversa y luego se busca los títulos de estos documentos para mostrarlos en los resultados de la búsqueda para que puedan ser seleccionados por el usuario y mostrados entonces en la sección principal para visualizar el documento. En la figura 7.1 se presenta la pantalla principal del módulo de ayudas. Figura 7.1 Ventana de Ayudas en Línea de la aplicación 48 El diseño de la página se basó en un compendio de páginas de ayuda de aplicaciones entre las cuales resaltaba más la disposición del elemento de búsqueda en el área superior izquierda y la disposición de la lista de resultados por debajo de la primera mencionada dejando todo el espacio restante para mostrar el documento que se requiera. Para mayor comodidad del usuario se dispuso de un elemento que oculta la barra izquierda lo que deja mayor rango de visión del documento como se puede ver en el ejemplo de la figura 7.2. Figura 7.2. Ventana de Ayudas en Línea de la aplicación con barra minimizada 49 7.3 Fases de Prueba Las pruebas para el sistema tuvieron como enfoque cada uno de las funcionalidades del sistema así como los requerimientos para el mismo. Para la realización de estas pruebas fueron utilizados métodos muy simples que sólo incluyeron la comprobación por parte del cliente que los requerimientos impuestos al sistema eran aceptables. Esta comprobación puede ser vista en la tabla 7.1 en el estado actual del sistema. Capacidades exigidas Interfaz para que el personal de SUAF+ se acostumbre fácilmente a la nueva herramienta. Que los sistemas SUAF y SUAF+ se puedan manejar desde un mismo portal. Que el producto pueda ser comercializado para quien lo requiera sin el problema de la adquisición de costosas nuevas licencias de terceros. Funcionalidad en el sistema Si, Interfaz sencilla, manejo amigable, Ayudas Online. Si. Si, Desarrollo en ambiente abierto (JAVA). Que el sistema se pueda distribuir con las viejas licencias. Si, soporte para varias implementaciones de servicios, incluyendo la anterior. Minimizar el tiempo de desarrollo para nuevas funcionalidades hacia servicios en COBOL-CICS. Si. Funcionalidades totalmente operativas. Si. Tabla 7.1. Capacidades exigidas vs Funcionalidad en el sistema 50 7.4 Problemas encontrados Para el desarrollo del sistema se encontraron varios problemas de implementación y configuración del sistema. Además de la dificultad de aprender el manejo de los componentes EJB2.0 se tuvo problemas al hacer ciertas consultas a base de datos pues no se soportan funciones nativas de ORACLE como count, max, min, avg ,etc lo que limitaba al momento de tener que hacer ciertas consultas especificas en el módulo de servicios. Aunque estas limitaciones se resuelven en versiones posteriores de los EJB, la no compatibilidad de otras versiones con la versión de J2EE 1.3 hizo decidir seguir usando los EJB2.0. Para resolver esta limitación fueron utilizadas accesos a la base de datos a través de funcionalidades provistas por JDBC que sí facilitaban el manejo de las funciones antes mencionadas. Otro problema encontrado fue la configuración del aplicativo desde la herramienta Netbeans pues esta soporta solamente configuraciones desde las versiones de J2EE 1.4 y EJB2.1 y EJB3, y las demás herramientas para hacerlo en las versiones anteriores se encuentran descontinuadas y ya no se consiguen. Para resolver este problema se decidió hacer los paquetes de la aplicación en la versión J2EE1.4 y EJB2.1 en el IDE NetBeans y luego se hicieron los cambios para la versión anterior a mano. Otro problema que surgió fue cómo hacer que el módulo de conexión a servicios de acceso a datos fuese totalmente dinámico, pues para nuevas implementaciones de servicios se debía recompilar el módulo para que atendiera a estas nuevas implementaciones. Esto se resolvió utilizando reflexión de Java y un archivo de propiedades donde se encuentran los datos de conexión a los servicios que se desean usar. Para el módulo de ayudas se había establecido que los archivos PDF se almacenaran dentro del paquete de la aplicación tal como se guardan las páginas 51 HTML, pero esto hizo ver que el paquete de instalación se haría excesivamente grande a medida que se agregaran más documentos PDF de ayuda lo que incurre en hacer más pesado el despliegue de la aplicación en el servidor. Para ello se diseño una nueva estructura para la búsqueda de los documentos de ayuda. Los documentos serán almacenados en un lugar cualquiera del servidor y su ruta será establecida en un archivo de propiedades de la aplicación, así se podrá hacer la instalación de la aplicación a parte de los documentos de ayuda y estos serán leídos en tiempo de ejecución y desplegados en la máquina del cliente como si estuviesen dentro del paquete de la aplicación. 52 Capítulo CONCLUSIONES Y RECOMENDACIONES 8 8.1 Conclusiones El proyecto de pasantía permitió construir satisfactoriamente el módulo de gestión de alertas el cual permite a los usuarios hacer la debida atención de alertas de fraude masivo contra entidades bancarias, permitiendo la posterior supervisión y la correspondiente configuración general del sistema. El proceso de desarrollo se ha llevado a cabo con éxito en el tiempo estimado de duración de la pasantía. Todos los objetivos de la pasantía fueron cubiertos completamente, incluyendo aquellos requerimientos que fueron incluidos posteriormente a la elaboración del plan de pasantía, logrando conseguir un producto que cumple con todos los requisitos funcionales y no funcionales que se habían impuesto. Para facilitar dicha labor se llevó a cabo procesos de análisis, diseño y desarrollo para la herramienta de gestión de alertas de SUAF+, la cual da efectivamente una interfaz de gestión y resuelve el problema de tener que invertir demasiado tiempo en atender las alertas de posibles fraudes sobre las entidades bancarias. La solución planteada involucró el desarrollo de una aplicación empresarial Web bajo el enfoque de separación por capas totalmente modulares que permiten mayor flexibilidad a la hora de integrar nuevas funcionalidades a la aplicación. El uso de servidores de control de versiones, la continua revisión del desarrollo y la correcta planificación de actividades aumentaron el entendimiento entre los desarrolladores de los distintos módulos del sistema lo que incrementa la capacidad de trabajo en equipo de los implicados incluyendo el pasante. Además, el 53 contacto con el cliente y la empresa han dejado en el pasante conocimientos de diversa índole empresarial que valen de mucho para enfrentar futuros retos. Se lograron buenas características de usabilidad en el sistema mediante la constante revisión del mismo junto con los usuarios inmediatos, los cuales aportaron buenas ideas de cómo serían las interfaces más fáciles de manejar para ellos. 8.2 Recomendaciones Para que la gestión de alertas sea más eficiente y efectiva, ayudaría en gran manera incluir un servicio de mensajes de texto para enviar mensajes a celulares de los supervisores o de alguien predeterminado del sistema cuando hay una alerta sin atender. Esto es importante, pues puede ser el caso que ningún operador este conectado a la aplicación, por lo que no se podría saber en esos casos que hay un posible fraude sino hasta que alguien ingrese a la aplicación. Para hacer este servicio es necesario contratar un proveedor de servicios de mensaje de texto, y establecer reglas o protocolos de comunicación que pueden variar entre proveedores lo que hace un poco engorroso el desarrollo, pero aportaría gran funcionalidad al sistema. En estos instantes el sistema front de SUAF y el de SUAF+ trabajan sobre una plataforma muy vieja (J2EE1.3, J2SE1.4, EJB2.0, Sun Application Server 7) por lo que se tiene que reinventar la rueda al querer añadir nuevos módulos a los aplicativos, o como en el caso del Sun Java System Application Server 7 al cual no se le piensa dar más soporte por parte de Sun Microsystems. Es muy recomendable que se estudie la posibilidad de subir a versiones más avanzadas en la plataforma del sistema para agilizar el desarrollo de nuevas funcionalidades y darle mantenimiento seguro a la aplicación. En el módulo de ayudas desarrollado, la búsqueda por índice de palabras fue realizado a través del uso de un archivo que contiene este índice. Sería recomendable para otra fase de desarrollo implementar el índice de búsquedas 54 desde una base de datos pues las búsquedas se acelerarían considerablemente en especial cuando el índice de palabras crezca en gran medida. Aunque no es el caso del módulo de Front de SUAF desarrollado por el pasante, el sistema en general está certificado para su uso a través del navegador Internet Explorer de Microsoft. Sería recomendable que se certifique también para la mayoría de los navegadores como Netscape, Firefox u Opera, para no obligar a los usuarios a utilizar algo distinto de lo que usualmente usan y dar al sistema otra característica de accesibilidad. 55 REFERENCIAS [1]Bodoff, S. (2004). The J2EE Tutorial. Boston: Addison-Wesley. [2]Goodman, D. (2001). JavaScript Bible, Gold Edition. Hungry Minds, Inc. [3]Buschmann F., Meunier R., Rohnert H., Sommerlad P., Stal M. (1996) A System of Patterns: Pattern-Oriented Software Architecture. Wiley. [4]Fowler, M. (1997). Analysis Patterns: Reusable Object Models. Addison-Wesley. [5]Gosling J., Joy B., Steele G. y Bracha G. (2005). The Java language specification. Boston: Addison-Wesley. [6]Hernández,G. (2006, 30 de octubre) Mediante fraude informático roban 10 millardos a banco Confederado. Diario el Carabobeño. (URL: http://www.el-carabobeno.com/ p_pag_hnot.aspx?art=a311006e14&id=t311006-e14). [7]IBM (2007). CICS: Customer Information Control System. (URL: http://www- 306.ibm.com/software/htp/cics/). [8]Larman, C. (2002), UML y Patrones, Segunda edición, Prentice-Hall. [9]SDN, SUN Developer Network (2007). Sun Java System Application Server 7 (URL: http://docs.sun.com/app/docs/coll/ApplicationServer7_04q2_Update2?l=es). [10]SDN, SUN Developer Network (2007). Enterprise JavaBeans Technology. (URL: http://java.sun.com/products/ejb/). [11]SDN, SUN Developer Network (2007). Java EE at a Glance. (URL: http://java.sun.com/ javaee/index.jsp). 56 [12]SDN, SUN Developer Network (2007). JavaServer Pages Technology. (URL: http://java.sun.com/products/jsp/). [13]SDN, SUN Developer Network (2007). Java SE - Java DB and Java Database Connectivity (JDBC). (URL: http://java.sun.com/javase/technologies/database/). [14]SDN, SUN Developer Network (2007). Java Message Service. (URL: http://java.sun.com/products/jms/index.jsp). [15]SDN, SUN Developer Network (2007). Remote Method Invocation Home. (URL: http://java. sun.com/javase/technologies/core/basic/rmi/index.jsp). [16]SDN, SUN Developer Network (2007). Java Servlet Technology (URL: http://java.sun.com / products/servlet/). [17]Sigmenta Business Technologies (SBT) (2007). Company Overview. (URL: http://www. sigmenta.com). [18]The Object Management Group (2007) About the Object Management Group (OMG). (URL: http://www.omg.org/gettingstarted/) [19]World Wide Web Consortium (W3C) (2006). Guía Breve de CSS. (URL: http://www. w3c.es/Divulgacion/Guiasbreves/HojasEstilo) [20]World Wide Web Consortium (W3C) (2006). Guía Breve de XHTML. (URL: http://www. w3c.es/Divulgacion/Guiasbreves/XHTML). [21]World Wide Web Consortium (W3C) (2007). Guía Breve de Tecnologías XML. (URL: http:// www.w3c.es/Divulgacion/Guiasbreves/TecnologiasXML). 57 APÉNDICE A Administración del Proyecto A.1 Planificación Para el comienzo del proyecto se previó que el desarrollo del sistema tuviera una duración de 5 meses (20 semanas), los cuales están detallados por actividades descritas en el Plan de trabajo y pueden estar sujetas a cambios. Como se requiere desarrollar dos módulos del componente SUAF+ para la gestión de alertas (front y servicios), la planificación del proyecto deberá entonces constar con dos fases importantes: - Fase de desarrollo de los servicios a repositorio - Fase de desarrollo de Front Además se previó una fase previa de estudio del panorama general del sistema y una fase final de integración, pruebas y certificación del producto. Se tiene entonces la siguiente tabla de planificación del proyecto: FASE DESCRIPCIÓN • • • Estudio del panorama general del sistema. Levantamiento de requerimientos funcionales y no funcionales del sistema. Estudio de tecnología a ser utilizada • • • Análisis Diseño Implementación Desarrollo de Front • • • Análisis Diseño Implementación Integración, pruebas y certificación • • Integración de Servicios y Front Pruebas , refinamiento y certificación de los componentes de Atención de Alertas, Consultas de Alertas y Parametrización General del sistema SUAF+ Documentación Estudio del panorama general Desarrollo de los servicios a repositorio • Tabla A.1. Planificación General del proyecto 58 A.2 Riesgos En la siguiente tabla se presentan los riesgos encontrados en la fase de inicio con sus correspondientes consecuencias, su estrategia de mitigación, plan de contingencia, su impacto en el desarrollo y su probabilidad de ocurrencia: Riesgo Impacto (1-5) % probabilidad Realizar una nueva planificación del proyecto. 4 30% Revisar el estatus del proyecto periódicamente para verificar que las actividades se están realizando en el tiempo previsto. Realizar una nueva planificación del proyecto, dividiendo las actividades de manera más adecuada y dejando un tiempo prudencial entre cada una de ellas. 3 50% Delimitar cuidadosament e el alcance del proyecto. Realizar una nueva planificación del proyecto incluyendo mayor tiempo para las actividades. 3 50% Consecuencia Mitigación Se retrasa la culminación de la fase de análisis. Realizar la validación de los requerimientos con todos los integrantes del desarrollo de SUAF+. Mala planificación de las actividades a realizar para el desarrollo de la herramienta dado que se requiere mayor esfuerzo del previsto. Este riesgo puede retrasar y afectar la culminación proyecto. El alcance del sistema resulta muy extenso y ambicioso. No es posible construir el sistema diseñado en el tiempo disponible. Surgimiento de nuevos requerimientos o modificaciones en los mismos. 59 Contingencia Retraso de otros desarrolladores en partes del sistema de las cuales depende el módulo que se esta desarrollando Que el cliente no le guste la manera en que se muestran las funcionalidades Este riesgo puede retrasar y afectar la culminación proyecto en el tiempo estimado. Revisar el estatus del proyecto periódicamente para verificar que las actividades se están realizando en el tiempo previsto. Trabajo en equipo. Exigir a todos los desarrolladores cumplir con los tiempos de entrega previstos. Esto puede retrasar el proyecto y afectar la culminación proyecto en el tiempo estimado. Reuniones periódicas con el cliente para que esté al tanto de todo lo que se muestra de las funcionalidades . Tener holguras en la planificación del proyecto para poder mitigar este riesgo a tiempo. Realizar una nueva planificación del proyecto, exigiendo a todos los desarrolladores cumplir con los tiempos de entrega previstos. 3 60% Realizar una nueva planificación del proyecto si es necesario. 3 70% Tabla A.2. Tabla de riesgos 60 APÉNDICE Documentos de Diseño B B.1. Casos de Uso En este apéndice se muestran los casos de uso que describen el uso del sistema por parte del usuario. Estos casos de uso son para el proyecto las funcionalidades propias del sistema a desarrollar, aquellas perceptibles para el usuario final. En estos casos se cumple una lógica de ejecución que se puede describir haciendo uso de las definiciones de casos de uso que se hace a continuación. Tabla B.1. Caso de Uso: Atender Alertas Pendientes Actor Principal Operadores Precondiciones • Listar Entidades Alertadas Indicadores de • El Sistema indica un mensaje de alertas procesada exitosamente. Éxito Principal 1.El operador selecciona una entidad alertada para atender Escenario de Éxito 2.El sistema le muestra al operador las alertas pendientes para la entidad 3.El operador procesa una o más alertas con un una descripción de las acciones tomadas Flujos Alternativos 4. El sistema le indica que las alertas fueron procesadas exitosamente. - Ya existe un operador B atendiendo el grupo de alertas que pretende tomar el operador A 1. Las alertas de la entidad que quiere procesar el operador A ya esta siendo procesada 1.1.El sistema no permite acceder al operador A a las alertas que esta procesando el operador B - El operador se excede el tiempo que se le dio para procesar las alertas 2. El operador excede el tiempo que se le dio para procesar alertas y aun no hace ningún movimiento. 2.1 El sistema expulsa al operador del proceso de las alertas que tenia asignadas Frecuencia de Ocurrencia Alta , es la principal funcionalidad de uno de los usuarios 61 Tabla B.2. Caso de Uso: Consultar Alertas Pendientes Supervisores Actor Principal Precondiciones • Listar Entidades Alertadas Indicadores de Éxito • El Sistema muestra una lista de alertas pendientes de la entidad deseada por el supervisor Principal Escenario de 1.El operador selecciona una entidad alertada para consultar alertas Éxito pendientes 2.El sistema le muestra al operador las alertas pendientes para la entidad Flujos Alternativos - No existen alertas pendientes para la entidad seleccionada para el momento 1. No existen alertas pendientes para el momento 1.1 El sistema indica al usuario que no existen alertas pendientes para esta entidad Frecuencia de Ocurrencia Alta , es una de las principales funcionalidades de uno de los usuarios Tabla B.3. Caso de Uso: Consultar Alertas Gestionadas Supervisores Actor Principal Precondiciones • Listar Entidades Alertadas Indicadores de Éxito • El Sistema muestra una lista de alertas gestionadas de la entidad deseada por el supervisor Principal Escenario de 1.El operador selecciona una entidad alertada para consultar alertas Éxito gestionadas 2.El sistema le muestra al operador las alertas gestionadas para la entidad Flujos Alternativos - No existen alertas gestionadas para la entidad seleccionada para el rango de fechas actual 1. No existen alertas gestionadas para el rango de fechas actual 1.1 El sistema indica al usuario que no existen alertas gestionadas para esta entidad en el rango de fechas indicado 1.2 El usuario cambia el rango de fechas de búsqueda de alertas gestionadas a f 1.3.a Existen datos para el rango de fechas f El sistema le muestra al operador las alertas gestionadas para la entidad 1.3.b No existen datos para el rango de fechas f Volver al punto 1 Frecuencia de Ocurrencia Alta , es una de las principales funcionalidades de uno de los usuarios 62 Tabla B.4. Caso de Uso: Configurar Parámetros Generales Administradores Actor Principal Precondiciones Ninguna Indicadores de Éxito • El Sistema muestra un mensaje de que los parámetros fueron modificados con éxito Principal Escenario de Éxito Flujos Alternativos 1.El administrador cambia uno o más de los parámetros generales posibles. 2.El sistema le muestra al administrador un mensaje de que los parámetros fueron modificados con éxito - Existe invalido un valor invalido dentro de los parámetros 1. El administrador ingresó un valor invalido 2. El sistema le muestra un mensaje que indica que el parámetro modificado tiene un formato invalido Frecuencia de Ocurrencia Alta , es una de las principales funcionalidades de uno de los usuarios Tabla B.5. Caso de Uso: Consultar Ayudas en línea Todos Actor Principal Precondiciones Ninguna Indicadores de Éxito • Principal Escenario de Éxito 1.El usuario pide un documento de ayuda de una la funcionalidad f Flujos Alternativos El Sistema muestra al usuario un documento de ayuda para la funcionalidad pedida 2.El sistema le muestra al usuario un documento de ayuda para la funcionalidad f - No existe documento de ayuda para la funcionalidad f 1. El usuario eligió un documento de ayuda que no existe 2. El sistema le muestra un mensaje que indica que el documento de ayuda para la funcionalidad f no esta disponible Frecuencia de Ocurrencia Media , es una de las principales funcionalidades de apoyo para manejar el sisitema. 63 Tabla B.6. Caso de Uso: Consultar Lista de Entidades Todos Actor Principal Precondiciones Ninguna Indicadores de Éxito • Principal Escenario de Éxito 1.El usuario pide la lista de entidades del sistema Flujos Alternativos El Sistema muestra al usuario una lista de las entidades en el sistema 2.El sistema le muestra al usuario una lista de las entidades en el sistema - No existen entidades configuradas en el sistema 1. El sistema indica al usuario que no existen entidades para listar es ese momento Frecuencia de Ocurrencia Alta , es la manera a través de la cual se acceden a otras funcionalidades de frecuencia Alta. B.2. Diagramas de Secuencia del Sistema A continuación se presentan los diagramas de secuencia que representan al sistema en un ejemplo del caso de uso atención de alertas. Estos reflejan el flujo de datos a través de los módulos por lo que los se separarán en dos diagramas del módulo front Web y el diagrama que muestra el flujo en el módulo de servicios de acceso a datos . Para la figura B.1 el diagrama de secuencia completo para lo que sería el proceso en front de gestionar una alerta. Esto de por sí implica 3 de los casos de uso antes mencionados: consultar lista de entidades, atender alertas y procesar la alerta. Como se puede ver todas las llamadas que se hacen desde los JSPs se realizan contra la clase FachadaInterfaz que es una clase neurálgica que recibe las 64 peticiones y las asigna a la clase manejador correspondiente para esa petición. Esto hace que se trabaje de manera modular y que los cambios en una u otra capa de la aplicación tenga un menor impacto el los restantes módulos. Luego de la FachadaInterfaz se encuentran a los manejadores de peticiones que son los que gestionan las peticiones, verifican los datos, los envían a Core y al recibir la respuesta de Core procesan la información para retornársela a FachadaInterfaz para presentar en la Web. En el diagrama de la figura B.1 se muestra los tres casos de uso juntos para poder ver la estructura de las llamadas y el flujo de datos que se toma para una proceso completo dentro del front Web entre las capas de presentación y negocios. Figura B.1. Diagrama de secuencia para el caso completo de gestión de alertas 65 Por otra parte, en la figura B.2 se muestra el flujo de datos en la capa de conexión a servicios de acceso a datos. Aquí se puede observar como se resuelve la transparencia de conexión a servicios de distintas implementaciones. Primero que nada las peticiones las recibirá el objeto “ConectorACore”, que es el que administra el tipo de conexión y los pasos a seguir para efectuar la llamada los servicios. Continuando con lo anterior, el objeto “ConectorACore” extrae el tipo de conexión a servicios desde el objeto “Prop” el cual es el encargado de administrar el archivo de propiedades de la aplicación. Luego se resuelve en hacer la conexión y envío de los datos según el tipo de conexión obtenida. Luego, para las llamadas a los JServicios sólo es necesario enviar los mismos datos que se reciben de la capa de negocios al módulo de servicios en Java sin realizar ninguna conversión adicional. Por el contrario, en la conexión con los servicios en COBOL-CICS se hacen procesos adicionales, pues se desarrolló también una manera efectiva y eficiente de soportar ese tipo de servicios aumentando la capacidad de mantenimiento del sistema y minimizando el tiempo de desarrollo. El flujo de datos en esta sección se observa en la figura B.2 cuando el objeto “ConectorACore” llama al objeto “Trama” donde se construyen los datos a partir del servicio y el contenedor que se le provee, el objeto “Trama” sabe como armar la llamada pues obtiene el descriptor del servicio del objeto “DescripciónEsquema”. Además, el objeto “DescripciónEsquema” extraerá la descripción del servicio indicado de un archivo XML, esta información quedará cargada en memoria de manera que cuando se vuelva a preguntar por el servicio se mantenga la descripción a la mano y se ahorre el trabajo de leerlo desde un archivo nuevamente. Después de obtener la descripción del archivo se genera una trama o contenedor de los campos en una cadena de caracteres que en el diagrama se llama “tramaString” al cual se le agregan los campos que vienen de la web según la descripción que viene de los XMLs. Esta trama se envía a los servicios en COBOL- 66 CICS, los que se representan en la figura B.2 con el objeto Cics. Por último la trama que es obtenida como retorno se le hace la conversión inversa al tipo de contenedor que se maneja en la capa de negocio. Figura B.2. Diagrama de secuencia para la conexión a los servicios de acceso a datos 67 Por último, se presenta el flujo de datos para la funcionalidad de atención de alertas pendientes que se puede observar en el diagrama de la figura B.3. Este módulo fue diseñado para que solamente se tenga que hacer referencia al objeto “InterfazJServicios” de manera que el resto módulo sea totalmente transparente para quien lo utilice como es el caso del módulo front en este proyecto. El objeto “InterfazJServicios” cumple con la función de recibir las peticiones y enviarlas al servicio que es solicitado. Por otra parte, todo lo que tiene que ver con los accesos a datos de alertas pendientes o gestionadas es procesado por el objeto “Alertas” el cual contiene los métodos respectivos para el procesamiento del servicio. Luego de que el objeto “InterfazJServicios” delega el servicio al objeto “Alertas” se procede a obtener el constructor de EJB de entidad “AlertasLocalHome” para el acceso a los datos de alertas en la base de datos. Este constructor de EJB de entidad se obtiene de un objeto “ResourceLocator” que resuelve la referencia al EJB a través del JNDI de alertas que le es provisto. Por otro lado, cuando el objeto “Alertas” recibe el constructor de EJB de entidad “AlertasLocalHome” se procede a hacer la llamada a la instancia de “DataPaginación”, la cual a través del constructor de EJB de entidad y los parámetros de busqueda hará el acceso a base de datos y obtendrá el subconjunto de alertas pedido. Esto es una colección de EJB de entidad “AlertasLocal” que son los que mantienen la persistencia contra la base de datos. Por último, se le extraen a las instancias “AlertasLocal” los datos necesarios para procesar en el servicio y se construye el contenedor de respuesta con los datos procesados. 68 Figura B.3. Diagrama de secuencia del módulo de servicios de acceso a datos. Funcionalidad de atención de alertas De los diagramas anteriores se puede establecer cual es flujo de datos correspondientes a todas la aplicación pues todas las funcionalidades han sido desarrolladas de la misma manera. Esto ayuda a la hora de hacerle mantenimiento a la aplicación pues se sabe donde se realizan exactamente los procesos de las funcionalidades y al estar diseñado modularmente el mantenimiento se hace más limpio. 69 APÉNDICE Diseño de Interfaces de Usuario C Aquí se mostraran los bocetos que fueron hechos para visualizar lo que el cliente deseaba inicialmente para el desarrollo de las mismas y además se presentan las pantallas finales de la aplicación atención consultas de alertas y parámetros generales, las cuales son el resultado del continuo feedback con el cliente. Entidades alertadas para la atención de alertas. Figura C.1. Boceto inicial de entidades alertadas para la atención de alertas Se puede observar en la pantalla final (Figura C.2) que las entidades alertadas que no están siendo gestionadas por los operadores se muestran con un icono en color rojo titilante, el cual al ser presionado da acceso al operador a atender las alertas de esa entidad. Por otra parte, las entidades que están siendo atendidas por otro operador muestran un icono en color amarillo el cual no contiene el acceso a esa entidad pues está siendo gestionada por otro operador. Los demás elementos como la hora de alerta, código de entidad, etc. con respecto al boceto inicial (Figura C.1) corresponden con la pantalla final. 70 Figura C.2. Pantalla final de entidades alertadas para la atención de alertas Alertas Pendientes para la atención de alertas. Figura C.3. Boceto inicial de alertas Pendientes para la atención de alertas 71 En las pantallas que siguen a continuación se muestran las pantallas las que se llegaron para mostrar la funcionalidad de atención de alertas con respecto al boceto inicial mostrado en la figura C.3. En la figura C.4 se muestran las alertas dentro de una subventana con scroll, pues al cliente no le parecía que se mostraran todas continuamente hacia abajo en la ventana principal ya que prefería que toda la aplicación se mostrara dentro de la ventana principal sin el scroll en esta última. De igual modo, se tiene que los indicadores de alertas por transacción o por monto se muestran resaltados en color rojo pero además se muestran en un tamaño de carácter superior y en negritas para aquellos que no puedan distinguir el color que se les presenta. Figura C.4. Pantalla final de alertas Pendientes para la atención de alertas Luego en la figura C.5, se muestra el momento de enviar las alertas procesadas a las cuales se les debe ingresar obligatoriamente una descripción de las acciones tomadas. Como se ve sólo aparecen las alertas que se debieron seleccionar en la pantalla anterior. 72 Figura C.5. Pantalla final de alertas Pendientes para la atención de alertas Entidades alertadas para la consulta de supervisión de alertas Figura C.6. Boceto inicial de entidades alertadas para la supervisión de alertas En la pantalla final (figura C.7) se puede observar que además de las funcionalidades del boceto original visto en la figura C.6, donde se elige una acción a realizar sobre una de las entidades de la lista de entidades, se añade la funcionalidad de realizar la acción ingresando el código de la entidad, esto para 73 agilizar la búsqueda en el caso que existan muchas entidades y se conozca el identificador correspondiente. Figura C.7. Pantalla final de entidades alertadas para la supervisión de alertas 74 Alertas pendientes para la consulta de supervisión de alertas Figura C.8. Boceto inicial de alertas pendientes para la supervisión de alertas Se ve que en la pantalla final en la figura C.9 se mantienen en general todas las funcionalidades del boceto inicial (figura C.8) incluyendo el rango de fechas y las búsquedas por identificador de tipo de tarjetas -bin. En la pantalla el campo estatus muestra si las alertas están siendo gestionadas o se encuentran pendientes por gestionar. Figura C.9. Pantalla final de alertas pendientes para la supervisión de alertas 75 Alertas gestionadas para la consulta de supervisión de alertas Figura C.10. Boceto inicial de alertas gestionadas para la supervisión de alertas Siguiendo con la descripción de las pantallas, se tiene que en la pantalla final se mantienen en general todas las funcionalidades del boceto inicial incluyendo el rango de fechas y las búsquedas por identificador de tipo de tarjetas -bin-. Cada registro de alerta contiene la descripción de la acción tomada para la gestión. Figura C.11. Pantalla final de alertas gestionadas para la supervisión de alertas 76 Parámetros generales Figura C.12. Boceto inicial de parámetros generales Para los parámetros generales se decidió separar en dos pantallas la consulta de la modificación por el motivo la configuración es realizada por los administradores y nadie más. La mayoría de los elementos en las pantallas se encuentran de manera semejante al de los bocetos pues el cliente lo prefirió así. Figura C.13. Pantalla final de consulta de parámetros generales 77 Figura C.14. Pantalla final de configuración de parámetros generales 78 ANEXO A Entorno Empresarial Figura Anexo1.Estructura Organizacional de SBT 79 El primer nivel de la jerarquía en la empresa Sigmenta Business Technologies corresponde a la Presidencia de la empresa, en donde se encuentran los socios de la empresa que son los encargados de realizar las negociaciones con los clientes. En el segundo nivel se presenta la Dirección de Tecnología y Productos Latinoamérica, que se encarga de las actividades gerenciales respecto al desarrollo de productos y tecnologías en Latinoamérica, específicamente en Venezuela. Por debajo de esta dirección se encuentran tres secciones gerenciales: Tecnología y Desarrollo, Relaciones Corporativas y Estrategia del Producto y Estudio del Mercado. La primera se encarga del desarrollo de los productos y tecnologías que la empresa ofrece a sus clientes, la segunda gestiona las relaciones con los clientes y las empresas con las cuales existen sociedades o convenios, y la tercera se encarga de las actividades de publicidad y mercadeo de los productos y tecnologías de la empresa. A su vez, la sección de Tecnología y Desarrollo, que es la más extensa de las tres mencionadas, se subdivide en cinco secciones especializadas en áreas técnicas: Desarrollo de componentes Front-End y aplicaciones Web, Sistemas de cuentas (accounting systems), Arquitectura Técnica, Soporte técnico y de Bases de Datos y Sistemas de Autorización. En cada una de estas se tienen líderes de proyectos, analistas y desarrolladores, bajo la supervisión correspondiente. 80 de los encargados de la sección 81