TESIS PUCP Esta obra ha sido publicada bajo la licencia Creative Commons Reconocimiento-No comercial-Compartir bajo la misma licencia 2.5 Perú. Para ver una copia de dicha licencia, visite http://creativecommons.org/licenses/by-nc-sa/2.5/pe/ PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ FACULTAD DE CIENCIAS E INGENIERÍA Construcción y Pruebas de una herramienta de desarrollo de soluciones para inteligencia de negocios – Análisis dimensional Tesis para optar por el Título de Ingeniero Informático Presentada por: Rosario Graciela López Gonzáles Luis Alejandro Urbina Palomino LIMA – PERÚ 2007 RESUMEN Hoy en día las empresas necesitan depositar mucha confianza en la toma de decisiones sobre sus negocios, basándose en la información que poseen sobre sus operaciones y lo que ocurre en el mercado. Estas decisiones, que son tomadas en un contexto de alta y creciente competencia, se toman cada vez más utilizando la mayor cantidad de información que la empresa posee. Una mala decisión puede afectar significativamente a la organización. La toma de decisiones implica incertidumbre y por lo tanto riesgo. Para minimizar estos riesgos es necesario disponer de información. La información en la empresa debe ser clara, precisa, oportuna, completa, de fácil acceso y sobre todo necesaria y no superflua. Para aquellos que desarrollan y mantienen los sistemas de información de soporte de decisiones, se hace necesario contar con una herramienta que ofrezca versatilidad y facilidad en la implementación de soluciones. Esta herramienta debe permitir generar reportes de diversos tipos e integrar información y datos desde diversos contextos. La arquitectura de datos e información debe ser diseñada del modo más simple posible pero a la vez efectivo, entendible y eficiente. Es necesario tener un modelo que represente el negocio de la manera más adecuada y permita diseñar la obtención de la información de ésta del modo más natural. Además, otro punto clave en este tipo de sistemas es la población y la calidad de los datos con los que se cuenta. En base a un modelo, o metadata, se puede determinar el tipo de información que va a ser contenida en éste. Una tarea importante es probar los datos a ser puestos en este esquema, por lo que la utilidad de una herramienta que basada en reglas las pueble con datos es significativa. Por lo tanto, el presente proyecto de tesis consiste en construir una aplicación que asiste II en el diseño de modelos de datos dimensionales, parte fundamental del data mart. Estos modelos podrán ser enviados a motores de base de datos y generados en ellos, automáticamente. También se propone que la herramienta construida para este tema de tesis permita a los usuarios generar datos en base a reglas definidas para sus modelos dimensionales y con éstos poblar la base de datos. En este caso la herramienta trabajará por medio de una interfaz con un Sistema Generador de Datos ya existente. El producto se aplica para los principales manejadores de base de datos relacionales, tales como Oracle y MS Sql Server. Los datos podrán ser almacenados en archivos de texto y XML. Este tema de tesis propone desarrollar las etapas de construcción y pruebas del proceso de desarrollo de productos de software para la herramienta propuesta. Las etapas de análisis y diseño de dicha herramienta son presentadas en la tesis “Análisis y diseño de una herramienta de desarrollo de soluciones para inteligencia de negocios – Análisis dimensional”. III “A mi familia, quienes me dieron su apoyo, en especial a mi madre, quien nunca dejo que me rindiera y siempre insistió que siguiera adelante. A Hernán, quien siempre me apoyó dándome la mano cuando lo necesitaba.” -Rosario López "A mi familia, que me ayudaron y soportaron todo este tiempo." -Luis Urbina IV Agradecimientos “Agradecemos a todos aquellos que confiaron en nosotros y nos apoyaron en la elaboración y desarrollo de este trabajo, aconsejándonos y ayudándonos a poder superar los diferentes obstáculos y dificultades surgidos a lo largo del camino. A los familiares de cada uno de nosotros por ayudarnos de diversas maneras. A nuestros compañeros de grupo Analízame que sustentan en la tesis hermana con los temas de análisis y diseño, quienes fueron unos excelentes compañeros. Esto es para todos ustedes. Gracias”. V ÍNDICE GENERAL ÍNDICE GENERAL ........................................................................................................................V ÍNDICE DE FIGURAS ..................................................................................................................VI ÍNDICE DE TABLAS ...................................................................................................................VII ÍNDICE DE TABLAS ...................................................................................................................VII INTRODUCCION........................................................................................................................... 8 1. MARCO TEORICO.............................................................................................................. 11 1.1. Definiciones....................................................................................................................... 11 1.2. Definición de la Problemática............................................................................................ 16 1.3. Objetivo Principal .............................................................................................................. 18 1.4. Objetivos Específicos........................................................................................................ 19 1.5. Solución Propuesta: Características de la Herramienta ................................................... 20 1.6. Productos existentes......................................................................................................... 20 2. Construcción de la Plataforma de Integración .................................................................... 24 2.1. Consideraciones preliminares........................................................................................... 24 2.1.1. Metodología usada ......................................................................................................... 25 2.1.2. Lenguaje de Programación usado ................................................................................. 25 2.1.3. Herramientas y componentes empleados en la etapa de desarrollo ............................. 26 2.1.4. Herramientas y componentes empleados en la etapa de pruebas y ejecución............. 28 2.1.5. Entorno de Ejecución ..................................................................................................... 29 2.2. Esfuerzo en la construcción .............................................................................................. 32 2.2.1. Determinación de los Puntos de Función sin Ajustar (UFP) .......................................... 32 2.2.2. Estimación por Cocomo II .............................................................................................. 41 2.2.3. Conclusión ...................................................................................................................... 42 2.3. Construcción de la herramienta ........................................................................................ 43 2.4. Integración del generador externo .................................................................................... 45 2.5. Implementación de la seguridad ....................................................................................... 50 2.6. Presentación de algunas pantallas ................................................................................... 51 2.6.1. Ventana de inicio ............................................................................................................ 51 2.6.2. Ejemplo de ventana de administración ......................................................................... 53 2.6.3. Ejemplo de ventana de detalle – detalle de Dimensión ................................................ 54 2.6.4. Ejemplo de ventana de detalle – detalle de Fact .......................................................... 57 2.6.5. Ejemplo de ventana de generación de datos ................................................................ 58 3. Pruebas de la plataforma .................................................................................................... 61 3.1. Consideraciones preliminares........................................................................................... 61 3.2. Pruebas de funcionalidad.................................................................................................. 63 3.2.1. Pruebas de funcionalidad del modulo de análisis .......................................................... 63 3.2.2. Pruebas de desempeño del modulo de seguridad......................................................... 69 3.3. Pruebas unitarias .............................................................................................................. 70 3.4. Consideraciones para la implementación de la herramienta............................................ 78 4. Observaciones, conclusiones y recomendaciones ............................................................. 80 4.1. Observaciones .................................................................................................................. 80 4.2. Conclusiones..................................................................................................................... 81 4.3. Recomendaciones ............................................................................................................ 81 VI ÍNDICE DE FIGURAS Figura 2.1: Ciclo de desarrollo de la herramienta ....................................................................... 25 Figura 2.2: Arquitectura empleada.............................................................................................. 29 Figura 2.3: Estructura de carpetas de los archivos fuente.......................................................... 44 Figura 2.4: Algoritmo: Generación de datos de prueba .............................................................. 47 Figura 2.5: Diagrama de secuencias: Generación de datos de prueba...................................... 49 Figura 2.6: Diagrama de clases de seguridad ............................................................................ 50 Figura 2.7: Ventanas de la herramienta - Pantalla principal ....................................................... 52 Figura 2.8: Ventanas de la herramienta - Administrar empresa ................................................. 53 Figura 2.9: Ventanas de la herramienta - Detalle de Empresa................................................... 53 Figura 2.10: Ventanas de la herramienta - Detalle de dimensión 1............................................ 54 Figura 2.11: Ventanas de la herramienta - Detalle de dimensión 2............................................ 54 Figura 2.12: Ventanas de la herramienta - Detalle de atributo ................................................... 55 Figura 2.13: Ventanas de la herramienta - Detalle de jerarquía ................................................. 56 Figura 2.14: Ventanas de la herramienta - Detalle de tabla ....................................................... 56 Figura 2.15: Ventanas de la herramienta - Detalle de campo .................................................... 57 Figura 2.16: Ventanas de la herramienta - Detalle de Fact ........................................................ 58 Figura 2.17: Ventanas de la herramienta - Detalle de Medida ................................................... 58 Figura 2.18: Ventanas de la herramienta – Configurar reglas de generación ............................ 59 Figura 2.19: Ventanas de la herramienta – Regla de generación Número ................................ 59 Figura 2.20: Ventanas de la herramienta – Generar data de prueba ......................................... 60 VII ÍNDICE DE TABLAS Tabla 1.1: Comparación entre base de datos transaccional y Data Warehouse........................ 13 Tabla 1.2: Cuadro comparativo de herramientas de Inteligencia de Negocios .......................... 22 Tabla 2.1: Manejadores de base de datos y versiones .............................................................. 31 Tabla 2.2: Determinación de ILF y DET...................................................................................... 34 Tabla 2.3: Complejidad de ILF. ................................................................................................... 35 Tabla 2.4: Resumen de puntos de función sin ajustar. ............................................................... 35 Tabla 2.5: Determinación de EI, EO y EQ. ................................................................................. 36 Tabla 2.6: Determinación de DETs y FTRs. ............................................................................... 39 Tabla 2.7: Determinación de Consultas externas. ...................................................................... 40 Tabla 2.8: Resultado de la determinación de Consultas externas.............................................. 40 Tabla 2.9: Cálculo de puntos de función sin ajustar. .................................................................. 41 Tabla 2.10: Determinación de los factores del proyecto............................................................. 41 Tabla 2.11: Determinación de los multiplicadores de esfuerzo 1 ............................................... 41 Tabla 2.12: Determinación de los multiplicadores de esfuerzo 2 ............................................... 41 Tabla 2.13: Determinación de los multiplicadores de esfuerzo 3 ............................................... 42 Tabla 2.14: Determinación de los multiplicadores de esfuerzo 4 ............................................... 42 Tabla 3.1: Casos de prueba - módulo de análisis....................................................................... 68 Tabla 3.2: Casos de pruebas - módulo de seguridad ................................................................ 70 Tabla 3.3: Clases válidas y no válidas - Administrar tema - Nombre..........................................72 Tabla 3.4: Clases válidas y no válidas - Administrar tema - Descripción....................................72 Tabla 3.5: Casos de prueba encontrados - Administrar tema .................................................... 72 Tabla 3.6: Casos de prueba a implementar - Administrar tema ................................................. 73 Tabla 3.7: Clases válidas y no válidas - Administrar dimensión - Nombre..................................73 Tabla 3.8: Clases válidas y no válidas - Administrar dimensión - Descripción............................73 Tabla 3.9: Casos de prueba encontrados - Administrar dimensión ............................................ 73 Tabla 3.10: Casos de prueba encontrados - Administrar dimensión .......................................... 74 Tabla 3.11: Clases válidas y no válidas – Regla de generación número – Sistema...................74 Tabla 3.12: Clases válidas y no válidas – Regla de generación número – Núm Decimales.......74 Tabla 3.13: Clases válidas y no válidas – Regla de generación número – Signo.......................74 Tabla 3.14: Clases válidas y no válidas – Regla de generación número – Tipo de gen.............74 Tabla 3.15: Clases válidas y no válidas – Regla de generación número – Mínimo....................75 Tabla 3.16: Clases válidas y no válidas – Regla de generación número – Máximo...................75 Tabla 3.17: Clases válidas y no válidas – Regla de generación número – Incremento..............75 Tabla 3.18: Clases válidas y no válidas – Regla de generación número – Constante................75 Tabla 3.19: Casos de prueba encontrados – Regla de generación numero .............................. 78 8 INTRODUCCION La Tecnología de la Información se ha convertido en la actualidad en una herramienta clave en los más importantes procesos dentro de las organizaciones. La creciente competitividad del mercado y la globalización de la industria nos hacen pensar que para las organizaciones ya no basta con sólo cumplir sus objetivos y metas individuales, sino que es necesario plantearse nuevos retos. Puesto que cada vez es más necesaria la innovación y el planeamiento estratégico que permita a las organizaciones trascender con su producto o servicio, es que se requiere tomar medidas que permitan a cada organización destacar en su mercado y tener mayor acogida. Hoy en día el mercado ya no sólo busca un producto que satisfaga sus necesidades, siempre busca algo más. Los clientes ya no salen a buscar el mercado, es el mercado el que debe buscar al cliente. Para poder llegar mejor al cliente es necesario tomar decisiones que involucren a toda la organización, pero estas decisiones deben estar sustentadas en una base segura y confiable. Un componente indispensable en la toma de decisiones es el manejo eficaz y eficiente de los datos y la información que forma parte del conocimiento de la organización. En este contexto es donde aparecen conceptos como el de Inteligencia de Negocios, que apoyados en técnicas, herramientas, estrategias y metodologías, buscan brindar a las organizaciones, en base a la información que éstas poseen, los parámetros e indicadores que se necesitan para el proceso de la toma de decisiones. En el mercado existen numerosas herramientas que apoyan la implementación de soluciones de Inteligencia de Negocios, pero muy pocas organizaciones las utilizan en nuestro país debido a diversos factores como la falta de conocimiento en el tema, el alto costo que 9 implica implantar una plataforma informática de este tipo o porque las existentes presentan limitaciones en sus funcionalidades que no les permite adaptarse al espectro de requerimientos de las empresas. En otros casos, éstas soluciones no están integradas o no ofrecen apoyo para todas las etapas de un proyecto de Inteligencia de Negocios. Como marco general para la elaboración de este trabajo de tesis, se ha propuesto la elaboración de una herramienta integral dividida en módulos que permite analizar, desarrollar y explotar un Data Warehouse de una organización o de varias de ellas a través de Internet. Para esto se ha considerado que un proyecto de Inteligencia de Negocios consta de tres etapas claramente definidas las cuales son: análisis y diseño, desarrollo del ETL y explotación y presentación de datos en forma de reportes. Este trabajo de tesis ha tomado como referencia el desarrollo del módulo que se encarga de la etapa de análisis y diseño de un Data Warehouse, el cual ha sido dividido en cuatro etapas: análisis, diseño, construcción y pruebas. Se propone, para efectos de esta tesis, desarrollar las etapas de construcción y pruebas. Las etapas de análisis y diseño se presentan en la tesis “Análisis y Diseño de una herramienta de desarrollo de soluciones para inteligencia de negocios – Análisis dimensional”. En conjunto, ambos trabajos de tesis (el presente y el mencionado líneas atrás) completan el desarrollo del módulo de análisis, el cuál forma parte de una herramienta integral de Inteligencia de Negocios, dividida en tres módulos funcionales los cuales son: Análisis, Extracción y Explotación. Con el módulo de Análisis los usuarios inician un proyecto de Data Warehouse. El usuario propone la estructura y diseño de tablas donde se almacenará la información que los usuarios consideren necesaria para su análisis. Esta etapa es de vital importancia dentro del desarrollo de proyectos de Inteligencia de Negocios debido a que se debe definir de manera tal que se pueda asegurar que se puedan obtener los datos con los que se cargarán dicha estructura utilizando el módulo de Extracción y, además, se debe asegurar que la estructura permitirá al módulo de Explotación mostrar los reportes finales que los usuarios requieran. Este documento describe el esfuerzo en la construcción y desarrollo de pruebas del modulo de análisis, el cual ha sido dividido en cinco capítulos. El primer capítulo presenta la definición de la problemática hallada por el equipo de desarrollo y la solución planteada por el mismo. Adicionalmente se presentan definiciones y conceptos de utilidad para mayor entendimiento del tema. El segundo capítulo contiene las especificaciones para la plataforma de integración de la herramienta. Se presentan las consideraciones preliminares y los requisitos mínimos para que la herramienta funcione correctamente en un ambiente de producción. También se presentan las mediciones en esfuerzo de horas. Por último, se detallan la interacción entre los componentes construidos y los utilizados externamente para el funcionamiento de la herramienta. El tercer capítulo presenta las pruebas que se han diseñado para comprobar el correcto 10 funcionamiento de la herramienta. Se proponen hacer pruebas de funcionalidad, pruebas de desempeño, pruebas de validación y al final se muestra un reporte con los resultados de las pruebas. El cuarto y último capítulo contiene las conclusiones y observaciones que el equipo ha considerado necesario aportar al final del desarrollo de la herramienta. Adicionalmente se presentan los anexos, que incluyen toda la documentación que se elaboró durante el desarrollo de la herramienta de análisis y que no se encuentre contenida en el presente documento. Esta documentación es adicional y permite tener mayor conocimiento del trabajo de desarrollo del equipo. 11 1. MARCO TEORICO Este primer capítulo presenta el marco teórico necesario para comprender el concepto de la Inteligencia de Negocios sobre el cual está basado el presente trabajo de tesis. Se presentan las definiciones de conceptos básicos para comprender el tema en mención y otros que se han considerado útiles por estar relacionados con el tema de Inteligencia de Negocios. Este primer capítulo se presenta en forma similar en la tesis “Análisis y Diseño de una herramienta de desarrollo de soluciones para inteligencia de negocios – Análisis dimensional”. 1.1. Definiciones A continuación se presentan las definiciones que han sido consideradas necesarias establecer previamente por su relación con el tema, luego se define el concepto de Inteligencia de Negocios y, por último, se detallan las definiciones básicas propias de la teoría de Inteligencia de Negocios. Los conceptos que se han definido son: • Sistemas transaccionales. • Data Warehouse. • Inteligencia de Negocios. • Conceptos de Inteligencia de Negocios. a) Sistemas transaccionales 12 Los sistemas transaccionales u operacionales son sistemas que permiten a la empresa manejar sus transacciones u operaciones cotidianas. Estos son los sistemas que operan sobre el “backbone" (columna vertebral) de cualquier empresa o institución, entre las que se tiene como ejemplo sistemas de ingreso de órdenes de trabajo, inventario, fabricación, planilla y contabilidad, entre otros. Debido a su volumen e importancia en la organización, los sistemas operacionales siempre han sido las primeras partes de la empresa a ser informatizados. A través de los años, estos sistemas operacionales se han extendido, revisado, mejorado y mantenido al punto que hoy, ellos son completamente integrados en la organización. Actualmente, la mayoría de las organizaciones grandes de todo el mundo, no podrían operar sin sus sistemas operacionales y los datos que estos sistemas mantienen. Sin embargo, estos sistemas, debido al volumen y frecuencia de actualización que tienen, no permiten o dificultan la obtención de los siguientes tipos de información: • Reportes Históricos, debido a que no almacenan información histórica o la almacenan en estructuras de datos con diseños complejos en la mayor parte de los casos. • Estudios históricos por indicador, debido a que en la mayor parte de los casos la estructura de la información no lo permite o no fue diseñada para soportarlo. • Reportes estadísticos, debido a que la información cambia constantemente y los resultados también podrían variar con cada ejecución del reporte. Un diseño complicado dificulta en gran parte la obtención de reportes estadísticos debido a que la información se encuentra en varias fuentes de datos. • Otros, debido a la ejecución de un reporte con demasiada información consumiría demasiados recursos de base de datos y podría incluso dañar la base de datos transaccional. b) Data Warehouse Según Inmon [Inm 2000], un Data Warehouse es una colección de datos orientados a temas, integrados, no-volátiles y variante en el tiempo, organizados para soportar necesidades empresariales. Según definición del INEI [INEI 2005], un Data Warehouse se crea al extraer datos desde una o más bases de datos de aplicaciones transaccionales. La data extraída es transformada para eliminar inconsistencias y resumida si es necesario, y luego es cargada en el Data Warehouse. El proceso de transformar, crear el detalle de tiempo variante, resumir y combinar los extractos de datos, ayudan a crear el ambiente para el acceso a la información de la organización. Este nuevo enfoque orienta a las personas, en todos los niveles de la organización, a efectuar su toma de decisiones con más responsabilidad. La tabla 1.1 muestra una comparación entre conceptos de Base de Datos Transaccional 13 y Data Warehouse. Base de Datos Transaccional Data Warehouse Datos Operacionales Datos del negocio para Toma de decisiones Orientado a la aplicación Orientado tema del negocio Actual Actual + histórico Detallada Detallada más resumida Cambia continuamente Estable Tabla 1.1: Comparación entre base de datos transaccional y Data Warehouse El Data Warehouse permite tener información histórica a un nivel de detalle que permite armar con facilidad los reportes que los usuarios requieran. Estos reportes permitirán al usuario evaluar no sólo el estado actual de un tema específico, sino que también permite evaluar como ha ido cambiando esta situación a lo largo del tiempo. Sin embargo, para que el Data Warehouse tenga una estructura que permita entregar al usuario la información que éste requiera, es necesario que se realice un proceso de análisis que permita al desarrollador definir, en base a los requerimientos iniciales del usuario, el modelo adecuado. Si la estructura inicial del Data Warehouse no satisface todas las necesidades iniciales, los desarrolladores se verán en la situación de tener que regresar al comienzo del análisis y redefinir la estructura, corrigiendo errores. Es por esto que se considera a la parte inicial de análisis una de las más importantes en el proceso de desarrollo de un Data Warehouse. Las características principales de un Data Warehouse, según el INEI [INEI 2005] son: 1. Orientado al tema. Los sistemas transaccionales engloban todos los procesos del negocio debido a que éstos son trabajados en forma de flujos de trabajo en un ambiente operacional. Un Data Warehouse trabaja en base a entidades como Cliente, Producto, Proveedor, etc y muestra información por temas de interés, como por ejemplo: Ventas, Compras, Operaciones, entre otros. En un Data Warehouse se comparten entre sí entidades de la organización. 2. Integrado. El aspecto más importante del ambiente Data Warehousing es que la información encontrada al interior está siempre integrada. La integración de datos se muestra de muchas maneras: en convenciones de nombres consistentes, en la medida uniforme de variables, en la codificación de estructuras consistentes, en atributos físicos de los datos consistentes, fuentes múltiples 14 y otros. Uno de los mayores problemas en las bases de datos transaccionales es que suelen ser manejadas por distintas aplicaciones las cuales no están relacionadas entre sí. Este es uno de los aspectos en donde tiene mayor fuerza el Data Warehouse, que contiene toda la información que la organización necesita de todas sus fuentes transaccionales. 3. De tiempo variante Se define como uno de los parámetros más importantes al tiempo. El Data Warehouse es cargado con información actualizada cada cierto periodo de tiempo, lo que permite tener data constante durante ese intervalo, para poder evaluar el estado de un indicador de una forma estable. 4. No volátil Los sistemas transaccionales cambian con tanta frecuencia que el estudio de la información a una fecha determinada puede ser un tema imposible de resolver. c) Inteligencia de negocios Inteligencia de negocios es el conjunto de estrategias y herramientas utilizadas para la gestión y creación de conocimiento a partir del análisis de la información existente en diferentes fuentes dentro de la organización. Mediante la inteligencia de negocios se logra consolidar y analizar la información con razonable velocidad, detalle y precisión para ayudar a tomar mejores decisiones de negocios. Las empresas a medida que crecen, aumentan proporcionalmente sus necesidades de información. Es por esto que requieren usar técnicas de análisis de información cada vez más complejas. A continuación se mencionan las tres etapas de evolución de las técnicas mencionadas: Reportes y consultas Esta es la etapa más simple de análisis de información. En ésta, la información se obtiene mediante consultas ejecutadas directamente de las fuentes de información originales como base de datos u hojas de cálculo por ejemplo. La elaboración de estos reportes puede demandar gran cantidad de esfuerzo según la complejidad y diversidad de las fuentes y estructuras de datos la organización. Los reportes obtenidos en esta etapa son estáticos, es decir, no se puede obtener más niveles de detalle sobre la información mostrada. Por otro lado, el tiempo de respuesta de las consultas es relativamente alto, debido a que no se cuenta con información resumida y los datos se extraen de sistemas que soportan gran carga operacional. 15 Procesamiento analítico en línea (OLAP) A diferencia de la etapa anterior en la cual la información se obtiene de las fuentes operacionales, en OLAP (On-Line Analytical Processing) consiste en realizar consultas sobre estructuras dimensionales donde los datos transaccionales fueron migrados de manera resumida. Estas estructuras dimensionales se encuentran en una base de datos intermedia denominada Data Warehouse. La ventaja de OLAP es que se pueden elaborar reportes dinámicos que los usuarios pueden manipular y su vez obtener más detalle sobre éstos, de acuerdo a sus necesidades específicas. Esto se debe principalmente a la simplicidad de las estructuras dimensionales, de donde se extrae la información resumida. Otra gran ventaja es que el tiempo de respuesta es mucho menor que el de la etapa de previa. El motivo es la poca complejidad de las consultas (debido a la estructura simple) y que la información se encuentra en bases de datos del Data Warehouse, las cuales responden eficientemente a las consultas. Data Mining Data Mining es la etapa del análisis de datos que permite descubrir mediante algoritmos complicados y procesos de investigación, tanto el significado de la información como las relaciones y patrones a partir de los datos existentes en un Data Warehouse. El Data Mining se apoya en diversas disciplinas como la inteligencia artificial y estadística para obtener este tipo de información especializada. d) Conceptos relacionados con Inteligencia de Negocios Tomando como base los ejemplos expuestos por Kimball [KIM 2002], se presentan las siguientes definiciones: Tema de Análisis Un Tema de análisis es un tema de interés que contiene información respecto a uno o más procesos de una empresa. Un tema de análisis está referido a un tema específico de la empresa de donde se requiere conocer su estado a través del tiempo según determinado nivel de detalle. Por ejemplo, para una empresa comercializadora, un tema de análisis debería ser Ventas por ser uno de los temas más importantes en el rubro de la empresa. Dimensión Una dimensión es una entidad de análisis que contiene información respecto a las unidades o entidades de negocio que se van a analizar. Por ejemplo, en un tema de análisis de ventas, las dimensiones podrían ser Cliente y Producto. 16 Dimensión Tiempo La dimensión tiempo sirve para indicar la frecuencia con la que se está obteniendo información para un determinado tema de análisis. La dimensión tiempo puede estar al nivel de año, mes, día o incluso a otro periodo que defina la empresa, como la estación del año. Atributo Un atributo es una unidad de información relativa a una dimensión. Por ejemplo, para una dimensión Cliente, un atributo seria el nombre, y otro sería la fecha de nacimiento. Fact Una fact o tabla de hechos es una entidad que contiene información integrada con un nivel de detalle determinado para ciertos valores de análisis. El nivel de detalle, llamado también granularidad, lo determina la cantidad de dimensiones que están asociados a dicha fact. Los valores de análisis suelen presentarse en cantidades numéricas y son llamados, según la información que contengan, medidas e indicadores. Por ejemplo, una fact ejemplo podría ser la fact Ventas, relacionada a las dimensiones Cliente y Producto y la dimensión tiempo Mes. Medida Una medida es un valor que contiene, a nivel de detalle de la fact a la que pertenece, un valor representativo. Por ejemplo, para la fact Ventas, una medida útil sería CantidadVendida que contenga la cantidad de veces que un producto fue vendido a un cliente por mes. Indicador Un indicador permite medir la evolución de una medida en un tema de análisis. ETL (Extract, Transform and Load) Es el proceso mediante el cual se extrae la data de la base de datos transaccional, se transforma mediante operaciones y algoritmos complicados, y se cargan los datos ya transformados en el Data Warehouse. 1.2. Definición de la Problemática En la actualidad la Tecnología de la Información se ha convertido en una herramienta clave en el proceso de desarrollo continuo dentro de las organizaciones. La competitividad del mercado y la globalización de la industria plantean un reto mayor dentro de toda organización pues se hace necesaria la innovación y el planeamiento estratégico que permita a la empresa trascender con su producto o servicio. Un componente indispensable en la toma de decisiones es el manejo eficaz y eficiente de los datos y la información que forma parte del conocimiento de la organización. En este contexto es donde aparecen conceptos como el de Inteligencia de Negocios que apoyados en 17 técnicas, herramientas, estrategias y metodologías buscan ofrecer los resultados más adecuados. En el mercado existen algunas herramientas que apoyan la implementación de soluciones de Inteligencia de Negocios, pero son muy pocas las organizaciones que los utilizan en nuestro país, principalmente por el alto costo que implica implantar la plataforma informática de este tipo de soluciones o porque las existentes presentan limitaciones que no se adaptan al espectro de posibilidades que las empresas necesitan. Una de las principales dificultades que se presentan en la fase de análisis es la de realizar el modelamiento dimensional. El uso de buenas prácticas orientadas a los conceptos de Inteligencia de Negocios para realizar un buen modelo dimensional es frecuentemente obviado. Esto se debe principalmente a que se acostumbra aplicar las buenas prácticas del modelo entidad-relación de los tradicionales sistemas transaccionales, ya que éste resulta más familiar que el modelo dimensional. Por otro lado, debido a que son muchas las personas que participan en un proyecto de inteligencia de negocios, se suele representar una misma entidad en más de una dimensión lo cual origina duplicidad de esfuerzo y pérdida de consistencia en el modelo. Otra dificultad se presenta en el momento de desear probar el diseño del Data Warehouse incluso antes de haber completado el ETL. Sin datos no se pueden probar los diseños ya que una herramienta de explotación requeriría que se tengan datos para poder explotarlos y mostrarlos en los reportes. Por esto, es conveniente poder cargar las tablas con datos ficticios pero coherentes que permita revisar el diseño y comprobar su utilidad. La estandarización de los datos es una de las principales características de los Data Warehouse. Este punto se acostumbra considerar en fases posteriores al análisis lo cual origina que no se lleve un planeamiento adecuado para aplicar correctamente la estandarización en el Data Warehouse del proyecto. En la etapa de análisis se elaboran diversos modelos y documentación que describen el proyecto a desarrollar. Este material se usa frecuentemente para realizar diferentes consultas que apoyarán en las tareas de las siguientes etapas del proyecto. Sin embargo, estos artefactos no se reutilizan eficientemente ya que no se trabaja sobre éstos. Por ejemplo, se vuelven a hacer los modelos dimensionales previamente definidos en lugar de usarlos como base para generar nuevos artefactos. Los equipos de trabajo de proyectos de Inteligencia de negocios reúnen una considerable cantidad de personas. Esto obliga a llevar una adecuada gestión de configuración que ayude a mantener la integridad de los artefactos elaborados. Otro problema que resulta de tener grandes cantidades de personas en un proyecto, es la validación de los usuarios finales. Esta validación se realiza en las fases finales del proyecto. Esto implica que si dicha validación no es satisfactoria puede significar que se deban realizar grandes cambios en el sistema y por ende mucho del trabajo efectuado durante desarrollo sea considerado 18 como infructuoso. Es por eso que se considera muy importante para el módulo de análisis, el desarrollo paralelo de un módulo de seguridad que permita definir desde el inicio de un proyecto, los usuarios y sus respectivas funcionalidades. 1.3. Objetivo Principal En base a lo expuesto en el apartado 1.2 y haciendo referencia a los conceptos descritos en el punto 1.1, es que se define el objetivo principal, que es elaborar la construcción y las pruebas para una herramienta que permita desarrollar la etapa de análisis en proyectos de Inteligencia de Negocios. El análisis y diseño de la misma herramienta se han desarrollado en la tesis “Análisis y Diseño de una herramienta de desarrollo de soluciones para inteligencia de negocios – Análisis dimensional”. Es importante destacar que es ésta la labor inicial y, por lo tanto, la más importante del proceso de desarrollo de un proyecto de Inteligencia de Negocios. Se debe definir correctamente la estructura de tablas que: a) Pueda ser llenada correctamente en base a las tablas fuentes transaccionales. El analista debe definir si puede obtener o no la información que requiere. Para esto se debe conocer bien las fuentes de datos y asegurar que se cuenta con la información necesaria para cargar correctamente la estructura de tablas diseñadas en el análisis. El proceso de carga se hace en una etapa posterior llamada ETL. b) Permita obtener los resultados esperados. El modelo debe permitir a herramientas de explotación elaborar reportes en base a su estructura. Esto es de suma importancia debido a que es en dicha etapa que se prueba la utilidad del Data Warehouse, por lo que es necesario que, una vez elaborado el diseño del Data Warehouse, éste sea probado. Para esto es necesario poder generar datos de prueba que permitan probar la eficiencia del diseño antes de pasar a las siguientes etapas del proyecto. c) Validar la seguridad de funcionalidades por usuario. Debido a que en un proyecto de Inteligencia de Negocios existen una gran cantidad de roles con diferentes funcionalidades, y que la información que se va a manejar es de la más alta importancia para la toma de decisiones en una empresa, se ha encontrado la necesidad de diseñar un módulo de seguridad que permita validar a los usuarios que ingresan a la herramienta, las funcionalidades y niveles de acceso que éstos deban tener, en base a perfiles definidos por un usuario especial llamado administrador, el cual si tiene acceso irrestricto a todas las funcionalidades de la herramienta. 19 1.4. Objetivos Específicos Teniendo en cuenta lo expuesto en el apartado 1.3, que expone una visión general de lo que es una herramienta de inteligencia de negocios que apoye la labor de análisis, se propone los siguientes objetivos específicos que debe cumplir dicha herramienta. a) Permitir realizar con facilidad el modelamiento dimensional de tablas orientado a Inteligencia de Negocios. Se proporciona un modelador gráfico que permite diseñar la estructura de tablas del Data Warehouse utilizando componentes gráficos orientados a los conceptos relacionados con Inteligencia de Negocios, y que permiten administrar la forma visual y lógica del Data Warehouse. b) Asistir en el modelamiento dimensional para asegurar el uso de buenas prácticas. La solución a construir debe apoyar en el diseño de los modelos dimensionales del Data Warehouse con el fin de promover, mediante el empleo de mensajes de advertencia y sugerencias, el uso de buenas prácticas. Así se asegurará que los modelos dimensionales fueron elaborados tomando en consideración lineamientos de diseño adecuados. c) Administrar de manera eficiente los elementos del proyecto. Los sistemas de inteligencia de negocios reúnen gran cantidad de elementos. Esto demanda que la solución a construir administre de manera amigable y eficiente todos estos componentes con el fin de brindar perspectivas que permitan observar globalmente el proyecto. d) Probar la eficiencia del modelo dimensional con generación de datos de prueba. Para apoyar a la labor de control de calidad del modelo dimensional es necesario que las tablas de dicho modelo sean llenadas con datos para posteriormente ser probados por una herramienta de explotación. La solución propuesta incluye en sí la opción de generar datos de prueba a fin de que los analistas en un proyecto de inteligencia de negocios puedan probar su modelo antes de pasar a las siguientes etapas de desarrollo. e) Reutilizar los productos obtenidos en la etapa de análisis Con el fin de reutilizar los productos resultantes de la fase de análisis del proyecto, la solución deberá contar con medios que permitan que estos productos sean usados en las etapas posteriores. Así se logrará ahorrar esfuerzo en el equipo de trabajo y evitar posibles 20 errores u omisiones en el traspaso de los productos de una etapa a otra. 1.5. Solución Propuesta: Características de la Herramienta La herramienta propuesta constituye una Solución para aplicar eficientemente conceptos de Inteligencia de Negocios, y está apoyada no sólo en la idea de desarrollar una aplicación útil y funcional sino en el resultado de una investigación y posterior análisis para definir un producto que se ajuste a la realidad organizacional. Esta herramienta es parte de un proyecto de creación de una herramienta integral para Inteligencia de Negocios, descrita en el Anexo I. La aplicación cubre los pasos esenciales en la etapa de análisis de cualquier proyecto de Inteligencia de Negocios. Se comienza creando una empresa, la cual puede tener muchos proyectos. Cada proyecto cuenta con una serie de temas de análisis donde se permite graficar modelos relacionados con una o más facts. La empresa cuenta con dimensiones que pueden ser utilizadas y reutilizadas por cualquier tema de análisis y tener relación con las facts que existen en cada tema de análisis. La herramienta planteada debe permitir no sólo diseñar los modelos del Data Warehouse, sino que a demás permite poblar las bases de datos con valores ficticios a fin de poder probar la eficiencia del modelo planteado. Esto puede significar considerable ahorro en tiempo de pruebas y redefinición de modelos que resultan debido a un mal planteamiento inicial de la solución. La herramienta también debe ser versátil en el sentido que no estará sujeta a un estándar específico sino que da libertad a la empresa de poder aplicar sus propios análisis y estructura de orígenes de datos. La herramienta que se plantea empleará una arquitectura escalable tanto a nivel de hardware como en la inclusión de nuevos componentes que puedan formar parte de la solución. Este trabajo de tesis propone presentar las etapas de construcción y pruebas de dicha herramienta. Como se ha mencionado ya anteriormente, las etapas de análisis y diseño, que son las etapas iniciales en la construcción de productos de software y consideradas base para las etapas que conforman el trabajo que se presenta en esta tesis, han sido desarrolladas en la tesis “Análisis y Diseño de una herramienta de desarrollo de soluciones para inteligencia de negocios – Análisis dimensional”. 1.6. Productos existentes Después de investigar sobre la gran variedad de productos de Inteligencia de Negocios que existen en la actualidad, se ha seleccionado una lista con los productos más representativos, de los cuales se muestra un cuadro comparativo en la tabla 1.2. A continuación se muestra dicha lista con una breve reseña por cada producto a detallas. a) Sagent Solution Plattform Sistema integrado que realiza el proceso ETL y a demás permite definir el formato para 21 presentar la información clave para la toma de decisiones en la empresa. [SAG 2006] b) Oracle Business Intelligence Solutions Contiene un paquete completo para la aplicación de Inteligencia de Negocios utilizando siempre el motor de base de datos Oracle [ORA 2006]. Entre sus aplicativos se encuentra el Warehouse Builder, herramienta que sirve para el proceso de ETL. c) MicroStrategy Este software permite a los usuarios diseñar y mostrar sus reportes en base a su propia metadata generada a partir de la información que obtiene de las tablas diseñadas en el motor de base de datos. Permite diseñar, adicionalmente, documentos web y documentos html basados en los reportes elaborados. Tiene, entre otras ventajas, la gestión de seguridad centralizada, la administración, el desarrollo y la implementación de soluciones de Business Intelligence en forma centralizada. [MST 2006]. d) Business Objects Esta herramienta permite a los usuarios el acceso, análisis y distribución de la información. Business Objects se caracteriza por ser una herramienta fácil de usar, segura, escalable y extensible. Incluye soluciones de consulta, generación de informes y análisis, un portal de BI con funcionalidad completa de broadcasting y potentes herramientas de administración. [BUS 2006]. e) Ascential Datastage Ascential Enterprise Integration Suite™ brinda una infraestructura para administrar el enorme volumen, la variedad y la velocidad de los datos que hoy poseen todas las organizaciones. Ascential Enterprise Integration Suite™, que incluye a Ascential DataStage™, Ascential DataStage TX™, Ascential ProfileStage™, Ascential QualityStage™ y Enterprise Integration Platform™ de Ascential, mejora la calidad de los datos para beneficio de cada departamento y cada proyecto dentro de una organización, a nivel mundial. Esta serie integrada de programas ayuda a las empresas a optimizar las contribuciones de sus recursos informáticos existentes, incluidos los sistemas gestión de relaciones con los clientes (CRM), la planificación de recursos de empresa (ERP), la gestión de cadena de suministros (SCM), la inteligencia de negocios (BI) y el análisis estratégico, el intercambio informatizado de datos (EDI), el comercio electrónico y las centrales de 22 datos. [ADS 2006] Características S A G E N T O R A C L E B U S IN E S S IN T E L L IG E N C E S O L U T IO N M IC R O S T R A T E G Y B U S IN E S S O B JE C T S IN T E L L IG E N C E P L A T A F O R M A S C E N T IA L D A T A S T A G E 1. Data Warehouse Escalable      2. Independencia del motor de base de datos     3. Permite administrar su propia metadata.    4. Reportes Web    5. Seguridad     6. Asistente     7. Administración de proyectos    8. Plataforma independiente  Tabla 1.2: Cuadro comparativo de herramientas de Inteligencia de Negocios La mayoría de los productos mencionados anteriormente están orientados a los procesos de ETL y explotación de los datos. Además, se menciona a manera de ejemplo el modelador de bases de datos Erwin pues la herramienta que se plantea en este trabajo de tesis incluye también un modelador que es usado en el diseño de data marts. Cabe resaltar que existen otras herramientas modeladoras de base de datos, como Easy Case, Oracle Designer, Power Designer y System Architect. • Erwin PLATINUM ERwin es una herramienta para el diseño de bases de datos y permite generar y dar mantenimiento de aplicaciones. ERwin permite visualizar la estructura, los elementos importantes, y optimizar el diseño de la base de datos. Genera automáticamente las tablas y miles de líneas de stored procedures y triggers para los principales tipos de base de datos. Esta herramienta es soportada por diversos manejadores de bases de datos, como Oracle, SQL Server, Sysbase, etc. Erwin tiene una modalidad de diseño de bases de datos especial para el modelamiento dimensional que permite definir dimensiones y facts y que permite generar modelos conservando ciertos lineamientos de metadata definidos en CWM por la empresa Oracle. 23 [ERW 2007]. Como ejemplo de herramientas de generación de datos de prueba, se muestra a continuación Datatect. • Datatect Herramienta que permite generar datos en archivos planos o directamente en base de datos. Los valores de campos pueden contener llaves foráneas y respetar la integridad referencial. El usuario tiene la capacidad de leer la estructura de la tabla de la base de datos. Permite generar datos en base a reglas constantes, aleatorias y secuenciales, y contiene una serie de reglas definidas por defecto y valores de listas por defectos para países, ciudades, nombres, números de teléfono y direcciones. [Dat 2006] 24 2. Construcción de la Plataforma de Integración Este capítulo presenta el trabajo inicial elaborado por los miembros del equipo de desarrollo que elaboró esta tesis en el momento de construcción de la herramienta. La primera labor que se desarrollo fue la de definir las consideraciones preliminares para la construcción de la herramienta y definir las herramientas que se usarían. Dentro del alcance determinado para la presente tesis se tiene propuesto la implementación de la herramienta que cumpla y satisfaga las necesidades de apoyo necesitadas por el usuario en el desarrollo de modelos lógicos de datos dimensionales, y en su población con datos generados en base a reglas definidas por el usuario. Seguidamente se presenta en grandes rasgos la labor de construcción de la herramienta mostrando para ello los más importantes y críticos puntos. Se presentan primero los componentes construidos y la interacción entre ellos, seguidamente se presenta como se ha definido la interacción de la herramienta con el motor de datos externo utilizado y, por último, la implementación del módulo de seguridad. 2.1. Consideraciones preliminares A continuación definiremos las consideraciones preliminares sobre las cuales se desarrolló la etapa de construcción de la herramienta. Estas características son importantes para conocer bajo qué condiciones la aplicación rendirá de la mejor manera, y que consideraciones o pautas se tomaron en cuenta en el desarrollo de ésta. 25 2.1.1. Metodología usada Se empleó como metodología de desarrollo RUP (Rational Unified Process) la cual trabaja con el lenguaje de modelamiento UML (the Unified Modelling Language) versión 1.2 para el análisis y diseño de la herramienta, lo cuál se presenta en la tesis “Análisis y Diseño de una herramienta de desarrollo de soluciones para inteligencia de negocios – Análisis dimensional”. Para esta etapa de construcción de la herramienta, tema principal del presenta capítulo, se han utilizado como referencia los anexos B, C y D. Es necesario recalcar que la etapa de construcción de la herramienta es en alto grado dependiente de las etapas de Análisis y Diseño de la herramienta, se presenta en la figura 2.1 el ciclo de desarrollo de un producto de software, con los artefactos que deben ser creados en cada etapa. ANÁLISIS IMPLEMENTACIÓNDISEÑO Elaboración del diagrama de casos de uso Elaboración del diagrama de clases de análisis Elaboración del diagrama de clases de diseño Elaboración de los diagramas de secuencias Implementación de la herramienta Figura 2.1: Ciclo de desarrollo de la herramienta 2.1.2. Lenguaje de Programación usado Al iniciar la construcción de la herramienta se presentaron diversas alternativas de tecnologías de desarrollo, siendo las más fuertes opciones la tecnología .NET con sus dos más importantes alternativas de lenguaje de programación; C# y Visual Basic .NET; y la 26 tecnología J2EE con el lenguaje de programación Java. El lenguaje de programación designado para la implementación de esta herramienta es el lenguaje Java debido a que cuenta con tres ventajas que no poseen las otras alternativas mencionadas y que sugieren su empleo. A continuación se presentan dichas ventajas [SUN 2007]: El primer motivo es que este lenguaje es orientado a objetos, lo cual permite una mayor fidelidad en la programación respecto al diseño elaborado previamente; y dentro de los lenguajes existentes orientados a objetos, Java es el que tiene mayor solidez y experiencia en soluciones de nivel, lo que permite que se pueda tener confianza en este lenguaje para la implementación. El segundo punto que ha sido considerado es que Java no depende de una plataforma en particular, sino que se desenvuelve en distintos medios, permitiendo el desarrollo de aplicaciones que pueden ser libres o comerciales, y entornos que se prestan para desarrollo o ejecución de igual manera. Estos entornos vendrían a ser los basados en Unix y los de DOS/Windows. La razón de esto es que Java trabaja sobre una máquina virtual (JVM) El tercer motivo de esta elección es que Java es libre, y cuenta con variedad y cantidad de elementos como librerías, documentación (JavaDocs, tutoriales y otros) y componentes desarrollados por diversos fabricantes (Sun Microsystems) y organizaciones. Muchos de estos componentes, que facilitan la labor de programación acorde a las necesidades del programador, son libres también. El uso de Java y el entorno de desarrollo empleado son explicados en el siguiente punto. 2.1.3. Herramientas y componentes empleados en la etapa de desarrollo Las herramientas usadas en la construcción son programas de fácil obtención, uso, y también por lo general son productos libres (open source) o gratuitos (freeware), para aminorar los costos en el desarrollo de nuestra herramienta. Distinguimos claramente dos etapas, la de desarrollo y la de pruebas, que deberá simular fielmente la puesta en producción. En este punto se enlista aquellos productos usados en la primera etapa. J2SDK (Java 2 Software Development Kit) La implementación de la herramienta ha sido desarrollada empleando el lenguaje de programación Java, perteneciente a Sun Microsystems. [SUN 2007] Esto permite tener incluidas a la máquina virtual, las clases estándares y las herramientas para que por medio de la línea de comandos se compile, ejecute, documente y depure las aplicaciones Java desarrolladas. 27 Se ha utilizado para la implementación de la herramienta la versión 1.5.0 del SDK, debido a las características que maneja dicha versión que son de amplia utilidad para el desarrollo, frente a versiones como la 1.4 y anteriores. Entre estas características, tenemos las siguientes, que son de utilidad [SUN 2007]: • Las nuevas librerías y clases. • Manejo de tipos genéricos, lo cual ayuda enormemente en el manejo de listas y colecciones. Además si estas colecciones contienen objetos que a su vez contienen tipos primitivos de datos, estos objetos son automáticamente desempaquetados, obteniéndose los datos primitivos contenidos sin necesidad de una conversión (cast) específico. • Otra característica en los arreglos es la forma de recorrerlos, que involucra menos código en las iteraciones. • Manejo de concurrencia. • Empleo de metadata (información sobre la información) en el código, a modo de tags tipo JavaDoc (los cuales también existen en .net). • Características del lenguaje C, como el empleo de argumentos en llamadas a métodos o formatos en la impresión de variables. Eclipse 3.1 Eclipse [ECL 2007] es un entorno de desarrollo libre, desarrollado por la Fundación Eclipse, en la cual participaban grandes empresas de reconocida trayectoria en el desarrollo de soluciones, como Borland e IBM. Este entorno es la base de otros como WebSphere, de IBM. Se apoya en el J2SDK. Eclipse se empleó para la escritura del código fuente, para la compilación y depuración del código fuente. Una ventaja del empleo de Eclipse es la posibilidad de emplear componentes accesorios, plugins, los cuales pueden ser libres o propietarios. Se emplearon plugins libres para el manejo del entorno de trabajo (framework) JSF (JavaServlet Faces), utilizado en el diseño de la interfaz web del cliente. Estos plugins permitieron una programación más sencilla y rápida en este framework. Este motivo, y las limitaciones de otras entornos propuestos inicialmente, como NetBeans (de Sun, en sus versiones 3.6, 4.0, 4.1) o JDeveloper 10 g (de Oracle) en aspectos como la memoria requerida, o la dificultad para la integración de plugins, ya que los equipos requeridos en el desarrollo (y también los de los usuarios finales) no son ni deben ser más potentes de lo estrictamente necesario, hicieron que Eclipse fuese finalmente el entorno de desarrollo escogido. 28 Apache Tomcat 5.5 Apache Tomcat [TOM 2007] es un servidor de aplicaciones web en Java, desarrollado por Apache. En este caso viene a ser la implementación de referencia para los contenedores web definidos en la especificación J2EE (Java 2 Enterprise Edition), siendo hoy el más popular de los servidores libres, sobre todo en servidores Linux. Entre las razones de su elevada aceptación están la fácil configuración, su estabilidad y su portabilidad, ya que funcionará sobre cualquier sistema operativo que cuente con la máquina virtual de Java, esto porque Tomcat fue escrito sobre Java. Tomcat fue elegido por ser una herramienta ampliamente difundida y de uso sencillo. Internet Explorer Internet Explorer es el navegador web de mayor uso en la actualidad, aunque su uso se limita al sistema operativo Windows, en sus diferentes versiones. La consola de Java ya viene incluida en el navegador (muy necesaria para la ejecución de applets), a diferencia de otros como Mozilla Firefox. Esta consola de Java permite depurar e identificar errores durante la etapa de desarrollo. Componentes Diversos Se cuenta con otros componentes y librerías además de los de JSF. Por ejemplo se emplea Castor, para el trabajo con los archivos XML. Castor es un entorno de trabajo de datos para Java, que vincula los objetos Java con objetos persistentes, como documentos XML o tablas relacionales. En el caso de este proyecto para la persistencia se usa documentos XML, los cuales son accedidos mediante clases hechas ex profeso con la ayuda de Castor. 2.1.4. Herramientas y componentes empleados en la etapa de pruebas y ejecución Durante la etapa de pruebas y en su ejecución, se emplean: J2RE ( Java 2 Runtime Enviroment ) [SUN 2007] Esta herramienta mediante la máquina virtual de java (JVM), y otros componentes como el recolector de basura (Garbage Collector) ejecuta las aplicaciones hechas en Java, almacenadas en archivos class y jar. Las pruebas fueron realizadas en los dos sistemas operativos de mayor importancia, los cuales son Windows y Linux (similar a Unix en muchos aspectos, ya que está basado en él), las cuales al ser hechas realmente sobre la JVM (Máquina Virtual de Java) no causará efectos diferentes en un sistema operativo frente a otro. Por otra parte, al igual que en la etapa de desarrollo, se empleó como servidor de 29 aplicaciones al Tomcat, además de diversos componentes. 2.1.5. Entorno de Ejecución En este punto se trata la arquitectura y el entorno en general donde se ejecuta la herramienta. Tiene importancia dentro de esto la ubicación en la arquitectura del servidor web, que deberá permitir un acceso seguro y fácil a los clientes. Esta arquitectura debe permitir que el acceso esté garantizado de forma continua. El detalle de la arquitectura se presenta en el anexo G. Arquitectura planteada En un entorno como el actual se tienen aplicaciones que son accedidas por numerosos integrantes, los cuales pueden estar o no concentrados físicamente, es decir pueden estar en varias ubicaciones geográficas. Puede haber varios analistas accediendo a un modelo de datos, de los cuales uno puede estar modificándolo, mientras que los demás lo pueden leer mas no modificarlo. Hoy las tecnologías de la comunicación y las redes que la soportan nos permiten sostener toda esa estructura, por lo que herramientas como la que se está desarrollando se pueden desenvolver con éxito. Figura 2.2: Arquitectura empleada La arquitectura implementada es una arquitectura web como la mostrada en la figura 2.2, es decir se involucra una aplicación cliente, la cual es el navegador web. Mediante el protocolo HTTP el cliente eleva una solicitud al servidor web, el cual localiza la página web en su sistema de archivos. La comunicación es a través de un servlet, el cual maneja las clases que interactúan con las páginas. Las páginas a ser devueltas son JSF, aunque en algunos casos incluyen applets. En el caso de JSF puro, el servidor generará las páginas según la solicitud recibida. Estas páginas son devueltas al navegador. En el caso de los applets, en cambio, se 30 tratará de aplicaciones que serán cargadas por el cliente una sola vez, y estas se comunicarán con el servidor por cuenta propia, a través de un servlet dedicado a ello. La arquitectura web, a diferencia de la cliente-servidor, permite mayor flexibilidad entre el cliente y el servidor, haciendo al primero muy liviano. De hecho esta arquitectura permite que el cliente no necesite componente alguno en un instante inicial de operacion, sino que estos se irán bajando según se requiera. La funcionalidad propiamente dicha está concentrada en el servidor de aplicaciones. Los usuarios se conectan mediante la red al servidor, pudiendo acceder a esta funcionalidad de este modo. Esta arquitectura se puede aún desarrollar más, de modo que el cliente, no sólo mediante la web, sino mediante interfaces simples o complejas interactúe con el servidor, mediante servicios web, los cuales serían ofrecidos por el servidor o servidores, y estos entre sí también interactúen. A continuación una breve explicación sobre los applets y JSF, empleados en la implementación, indicando sus características y ventajas. JSF JSF, o JavaServer Faces, es una tecnología que simplifica la construcción de interfaces para aplicaciones Java. Permite a los desarrolladores, con distintos niveles de habilidad, construir aplicaciones web con amplia facilidad mediante el uso en conjunto de componentes UI reusables. Dichos componentes son conectados a un origen de datos para la aplicación (application data source). Además eventos del cliente pueden ser vinculados a manejadores de eventos del servidor. La especificación de la tecnología JavaServer Faces está definida por la comunidad de desarrollo de especificaciones para Java (Community Process), mediante las especificaciones JSR 127 y JSR 252. La implementación de la especificación JSF está siendo llevada a cabo por los integrantes del proyecto JavaServerFaces, a su vez parte del proyecto Glass Fish, que busca el desarrollo de un servidor de aplicaciones open source. JSF está basado en los JavaServer Pages, o JSP. Sin embargo, aunque los archivos físicos empleados usan la extensión .jsp, al ser invocados se llaman utilizando el mismo nombre con la extensión .jsf. Se puede definir reglas de navegación entre las páginas, en función a valores que son devueltos por las acciones invocadas de las páginas. En la herramienta la mayor parte de las funcionalidades se acceden mediante páginas JSF. En el módulo de seguridad la totalidad de la funcionalidad es accedida de este modo. En Análisis se accede por ventanas emergentes invocadas desde el applet. Estas ventanas permiten el ingreso y visualización de datos. Applets Un applet es, siguiendo la definición dada por Sun [APL 2006], un programa escrito en el lenguaje de programación Java que puede ser incluido en una página HTML, (o también JSF) 31 de un modo análogo que cuando se incluye una imagen en una página. Cuando un usuario emplea un navegador que soporte la tecnología Java para ver una página que contiene un applet, el código del applet es transferido al equipo cliente, y ejecutado por la Máquina Virtual Java (JVM) del navegador. Los applets a diferencia de las demás clases públicas no cuentan con un método principal (main) ni un constructor, sino con un método llamado init. Un applet puede ser un agente peligroso en caso de no conocerse la fuente de éste, por lo que es una buena práctica que estos estén firmados. En la herramienta se cuenta con un solo applet, el cual es la entidad principal de la herramienta. Ese applet cuenta con un menú, un árbol y un panel sobre el que se dibujan los componentes. Sistemas manejadores de Bases de Datos La herramienta interactuará con dos manejadores de base de datos relacionales (RDBMS por sus siglas en inglés), y las versiones con las que se ha probado la herramienta se muestran en la tabla 2.1: RDBMS Versión Microsoft SQL Server 2000 Oracle 8i Tabla 2.1: Manejadores de base de datos y versiones Los motores de bases de datos listados son aquellos que no solamente son compatibles con la herramienta, sino que también lo son con el motor DatProducer, con el cual se interactúa. Es gravitante conocer las versiones de motor de base de datos con las que se trabaja, ya que la metadata puede tener que variar su estructura con un cambio de versión. La escalabilidad a partir de los motores mencionados en la tabla superior no es difícil, ya que mediante el empleo adecuado del polimorfismo y las características y librerías del lenguaje Java para el acceso a motores de base de datos se puede lograr ésta sin una dificultad extraordinaria. Los puntos que son tomados en cuenta en este aspecto son: la sintaxis del lenguaje SQL, soportado por estos manejadores, y también los tipos de datos manejados por cada RDBMS es un tema muy importante en la generación de datos. 32 La conexión al RDBMS se dará solo en caso que los datos generados o estructuras creadas se inserten directamente en la base de datos, aunque sólo se crearán archivos los cuales podrán ser ejecutados en estos manejadores de base de datos. Otros aspectos del entorno Siguiendo la arquitectura planteada para la ejecución de la herramienta, el Servidor Web, que es único para la aplicación conjunta (en sentido lógico, no necesariamente físico), estará puesto en un nodo céntrico que permita la conexión por parte de las aplicaciones cliente, de manera eficiente y sencilla, aunque segura. La seguridad física planteada incluye dispositivos físicos tales como firewalls. Además el mencionado servidor deberá estar disponible las 24 horas del día, por lo que son necesarios los mecanismos de respaldo pertinentes, como servidores de repuesto, UPS y afines. El servidor web y el de aplicaciones pueden ejecutarse en cualquier sistema que tenga a la plataforma Java, en particular Linux y Windows, que son aquellos sobre los que han sido probados. En cuanto a la aplicación cliente, lo podrá hacer en cualquier navegador que soporte applets. 2.2. Esfuerzo en la construcción Se presenta a continuación la estimación del proyecto para la construcción de la herramienta planteada para este trabajo de tesis En este apartado se propone: • Calcular el esfuerzo teórico que debería producir la construcción de la herramienta. • Calcular el nivel de dificultad empleando las reconocidas técnicas de Puntos de Función y Cocomo II conjuntamente. Las definiciones de fórmulas, acrónimos y tablas empleados en éste apartado se describen al detalle en el anexo E. Se determinó el esfuerzo que tomó la construcción de la herramienta según la técnica de puntos de función. 2.2.1. Determinación de los Puntos de Función sin Ajustar (UFP) Este punto contiene el detalle del cálculo de puntos de función sin ajustar. ILF y EIF Se determinaron los DETs y RETs de cada uno de los ILF. El resultado de esta tarea se muestra en la tabla 2.2. Utilizando dicha tabla y la tabla de cálculo de complejidad para EIF e ILF (ver anexo E) se obtiene la complejidad de cada uno de ellos. El resultado de esta tarea se muestra en la tabla 2.3, que se muestra en la siguiente página: 33 ILF DET Usuario Nombre Nombres Apellidos Email Habilitado Contraseña Empresas Proyectos Perfil Nombre Habilitado Permisos Permiso Nombre Codigo de Funcionalidad Nivel Tabla Nombre Esquema Campos Campo Nombre esPrimaria Nulidad Valor por defecto Tipo de Regla Mínimo Máximo Tipo de dato Nombre de tabla relacionada Configurado Tema Análisis Nombre Dimensiones Facts Indicadores Proyecto Nombre Descripción Empresa Nombre Dirección Rubro RUC Página Web Representante local Regla de Generación Opción de generación Nombre de archivo Tipo de generación Tipo de formación Tipo de formato Constante fecha Constante hora Valor de incremento Unidad de incremento Valor mínimo Valor máximo Sistema Número decimal Signo Secuencialidad Rango Inicio Rango Fin Patrones 34 ILF DET Tipo Dato Nombre Tipo Dato Equivalente Nombre Manejador de base de datos Orden parámetro longitud Orden parámetro longitud decimal Formato Longitud Estándar Valores posibles Mayúsculas Minúsculas Tipo oración Tipo título Longitud variable Posición día Posición mes Posición año Año corto Es fecha Es hora Precisión Escala Dimensión Nombre Descripción Actualización Alias Atributo Nombre Descripción Relación Nombre Dim. Tiempo Nombre Descripción Periodo Jerarquía Nombre Descripción Atributos Fact Nombre Descripción Medida Nombre Descripción Tipo de agregación Indicador Nombre Expresión Etiqueta Medidas Facts Periodo Cantidad Unidad Tabla 2.2: Determinación de ILF y DET 35 ILF #DET #RET COMPLEJIDAD Usuario 7 1 BAJA Perfil 3 2 BAJA Permiso 3 1 BAJA Tabla 3 1 BAJA Campo 10 1 BAJA Tema Análisis 4 3 BAJA Proyecto 2 1 BAJA Empresa 6 1 BAJA Regla de Generación 18 3 BAJA Tipo Dato 1 1 BAJA Tipo Dato Equivalente 4 1 BAJA Formato 16 2 BAJA Dimensión 4 2 BAJA Atributo 2 1 BAJA Relación 1 1 BAJA Dim. Tiempo 3 1 BAJA Jerarquía 3 2 BAJA Fact 3 2 BAJA Medida 4 2 BAJA Indicador 5 3 BAJA Periodo 2 1 BAJA Tabla 2.3: Complejidad de ILF. Con la tabla 2.3, se realizó el cálculo de los puntos de función sin ajustar. El resultado de esta tarea se resume en la tabla 2.4. TIPO DE FUNCIÓN COMPLEJIDAD FUNCIONAL SUBTOTALES TOTALES ILF 21 Baja x 7 = 147 0 Media x 10 = 0 0 Alta x 15 = 0 147 EIF 0 Baja x 5 = 0 0 Media x 7 = 0 0 Alta x 10 = 0 0 Tabla 2.4: Resumen de puntos de función sin ajustar. Según la tabla anterior se obtienen 147 puntos de función sin ajustar. EI, EO, y EQ Inicialmente se determinaron las entradas externas para cada caso de uso. El resultado se muestra en la tabla 2.5, en la siguiente página: 36 CASO DE USO ENTRADA EXTERNA Login de Usuario Logeo de Usuario Mantenimiento de Perfiles Mantenimiento de Perfiles Mantenimiento de Usuarios Mantenimiento de Usuarios Inserción de Notas Inserción de Notas Creación de Diccionario de Datos Administración de objetos Generación de Documento Generar Documento Configuración de las reglas de generación Seleccionar tabla y campo a configurar Regla de generación cadena Regla de generación número Regla de generación fecha. Generación de Datos de prueba Seleccionar tabla Parámetros de la generación Administración de Diagramas de Temas de Análisis o Vistas Análisis Generación de tablas a partir del modelo de análisis diseñado Generación de Tablas Administración de Proyectos Especificación de Proyecto Administración de Empresas Especificación de Empresa Administración de Dimensiones Especificación de Dimensión Administración de Tablas Especificación de Tabla Administración de Campos Especificación de Campo Administración de Dimensiones Tiempo Especificación de Dimensión Tiempo Administración de Atributos de Dimensión Especificación de Atributo Administración de Jerarquías de Dimensión Especificación de Jerarquía Administración de Facts Especificación de Fact Administración de Medidas de Fact Especificación de Medida Administración de Indicadores de Tema Especificación de Indicadores Administración de Formato de Datos Administración de Formato Nuevo Formato de Datos Tabla 2.5: Determinación de EI, EO y EQ. Luego, se determinaron los DETs, FTRs y la complejidad de cada entrada externa (para la determinación de la complejidad se utilizó la tabla T01. del anexo). El resultado se muestra en la tabla 2.6: ENTRADA EXTERNA DETS FTR #DETS #FTR COMPL. Logeo de Usuario Nombre Contraseña Acción Usuario 3 1 Baja Mantenimiento de Perfiles Nombre Descripción Permiso Nivel permiso Acción Agregar Acción Modificar Acción Eliminar Mensaje Perfil Usuario 8 2 Media 37 ENTRADA EXTERNA DETS FTR #DETS #FTR COMPL. Mantenimiento de Usuarios Nombre Descripción Nombres Apellidos Contraseña E-mail Empresa Perfil Empresa Proyecto Perfil Proyecto Acción Agregar Acción Modificar Acción Eliminar Mensaje Usuario Empresa Proyecto 14 3 Alta Inserción de Nota Tipo Descripción Acción Mensaje Componente 4 1 Baja Creación de Diccionario de Datos Nombre objeto Usuario Tipo objeto Descripción Objeto Usuario 7 2 Media Generar Documento Tema de Análisis Acción Seleccionar Tipo Archivo Acción Exportar Tema Análisis 4 1 Baja Reglas de Configuración Tabla Campo Acción Tabla Campo 3 2 Baja Regla de generación Cadena Nombre tabla Nombre campo Tipo Dato Tipo de generación Nombre Lista Tipo formación patrón Ordenamiento Es mayúscula Mínimo Máximo Constante Incremento Acción Agregar Tipo formación patrón Ordenamiento Es mayúscula Mínimo Máximo Constante Incremento Acción Eliminar Acción Grabar Campo Tipo de generación Lista predefinida Patrón 22 4 Alta 38 ENTRADA EXTERNA DETS FTR #DETS #FTR COMPL. Regla de generación Número Nombre tabla Nombre campo Tipo Dato Signo Sistema Num Decimales Tipo generación Ordenamiento Mínimo Máximo Constante Incremento Acción Grabar Campo Valores de generación 13 2 Media Regla de generación Fecha Nombre tabla Nombre campo Tipo Dato Formato Año constante Mes constante Dia constante Hora constante Minuto constante Seg. constante Año mínimo Año máximo Mes mínimo Mes máximo Día mínimo Día máximo Hora mínimo Hora máximo Minuto mínimo Minuto máximo Seg. Mínimo Seg. Máximo Unidad de incremento Valor de incremento Acción Grabar Campo Formato Valores generación 25 3 Alta Generación de Datos Tabla Manejador BD Instancia Base datos Servidor Usuario Acción Tabla Parámetros 6 2 Media Análisis Acción Menú Acción Modelo Modelo Dimensional Tabla Tema Análisis 4 2 Baja Generación de Tablas Tabla Acción Agregar Opciones de Configuración Manejador Acción Tabla 5 1 Baja Especificación de Proyecto Nombre Descripción Acción Proyecto 3 1 Baja 39 ENTRADA EXTERNA DETS FTR #DETS #FTR COMPL. Especificación de Empresa Nombre Dirección Rubro Página web Representante legal Acción Empresa 6 1 Baja Especificación de Dimensión Nombre Descripción Actualización Alias Acción Atributo Acción Jerarquía Acción Dimensión Atributo Jerarquía 7 3 Alta Especificación de Tabla Nombre Descripción Esquema Acción Campo Acción Campo Tabla 5 2 Media Especificación de Dimensión Tiempo Nombre Descripción Periodo Acción Dim. Tiempo 4 1 Baja Especificación de Atributo Nombre Descripción Campo ID Campo Nombre Campo Orden Acción Atributo Campo 6 2 Media Especificación de Jerarquía Nombre Descripción Atributos Acción Jerarquía Atributo 4 2 Baja Especificación de Fact Nombre Descripción Acción Fact Medida Relación 3 3 Media Especificación de Medidas Nombre Descripción Campo Tipo Acción Medida Campo 5 2 Media Especificación de Indicadores Nombre Descripción Expresión Etiqueta Acción Medida Campo 5 2 Media Administración de Formato Tabla Formato Actual Formato Tipo de dato Acción Formato Acción Tabla Formato Tipo de dato 6 3 Alta Nuevo Formato de Datos Aplicar Acción Agregar Acción Formato 3 1 Baja Tabla 2.6: Determinación de DETs y FTRs. 40 A continuación se determinaron las consultas externas para cada caso de uso. El resultado de esta tarea se muestra en la tabla 2.7: CASO DE USO CONSULTA EXTERNA Administración de Campos Búsqueda de Formato Creación de Diccionario de Datos Búsqueda de Objeto Configurar reglas de generación Búsqueda de Tablas Búsqueda de Campos Generación de datos Búsqueda de Tablas Administración de Fact Búsqueda de Fact Administración de Dimensión Búsqueda de Dimensión Administración de Tabla Búsqueda de Tabla Administración de Tema Búsqueda de Tema Administración de Indicador Búsqueda de Indicador Administración de Proyecto Búsqueda de Proyecto Administración de Empresa Búsqueda de Empresa Nuevo Formato de Datos Búsqueda de Tipo Dato Tabla 2.7: Determinación de Consultas externas. Luego, se determinaron los DETs, FTRs y la complejidad de cada consulta externa (para la determinación de la complejidad se utilizo la tabla T03. del anexo E). El resultado de esta tarea se muestra en la tabla 2.8: CONSULTA EXTERNA DETS FTR #DETS #FTR COMPL. Búsqueda de Formato Nombre Formato 1 1 Baja Búsqueda de Objeto Nombre Objeto 1 1 Baja Búsqueda de Fact Nombre Fact 1 1 Baja Búsqueda de Dimensión Nombre Dimensión 1 1 Baja Búsqueda de Tabla Nombre Tabla 1 1 Baja Búsqueda de Tema Nombre Tema 1 1 Baja Búsqueda de Indicador Nombre Indicador 1 1 Baja Búsqueda de Proyecto Nombre Proyecto 1 1 Baja Búsqueda de Empresa Nombre Empresa 1 1 Baja Búsqueda de Tipo Dato Nombre Tipo Dato 1 1 Baja Tabla 2.8: Resultado de la determinación de Consultas externas. Con las tablas anteriores, se realizó el cálculo de los puntos de función sin ajustar para los EQs y EIs. El resultado de esta tarea se resume en la tabla 2.9. Según la tabla 2.9 se obtienen 153 puntos de función sin ajustar para el proyecto. En total para el proyecto obtenemos (147+153)=300 puntos de función sin ajustar. Por lo tanto, llevando los puntos de función a líneas de código (KLCF), tenemos: Líneas de código =300*53 (en java) = 15900 líneas = 15,9 KLCF (en java) 41 Tipo de Función Complejidad Funcional Totales de Complejidad Totales de Tipo de Función EI ___11_ Baja x3 = ____9_ Media x4 = ____5_ Alta x6 = 57 36 __________________30 ______123______ EQ ___10_ Baja x3 = ___0__ Media x4 = ___0__ Alta x6 = 30 0 __________________0 _______30______ Tabla 2.9: Cálculo de puntos de función sin ajustar. 2.2.2. Estimación por Cocomo II Para el cálculo de la estimación mediante Cocomo II se han usado las tablas 2.10, 2.11, 2.12, 2.13 y 2.14 calculadas en base a las definiciones propuestas en la teoría de Cocomo II y las consideraciones propias del equipo de desarrollo. Criterios de Aplicación Factor de Escala (yi) Valor Precedentes 4.96 Flexibilidad de desarrollo 3.04 Arquitectura / Solución de riesgo 1.41 Cohesión del equipo / interacción 3.29 Madurez del proceso 4.68 TOTAL (sumatoria) 17.38 Tabla 2.30: Determinación de los factores del proyecto Multiplicadores de Esfuerzo Criterio de costo (xi) Producto Valor RELY 1.10 DATA 1.00 CLPX 1.00 RUSE 1.00 DOCU 1.00 TOTAL (productoria) 1.1 Tabla 2.11: Determinación de los multiplicadores de esfuerzo 1 Multiplicadores de Esfuerzo Criterio de costo (xi) Personal Valor ACAP 0.71 AEXP 1.22 PCAP 0.81 PEXP 1.19 LTEX 1.20 PCON 0.81 TOTAL (productoria) 0.8116 Tabla 2.12: Determinación de los multiplicadores de esfuerzo 2 42 Multiplicadores de Esfuerzo Criterio de costo (xi) Plataforma Valor TIME 1.11 STOR 1.00 PVOL 0.87 TOTAL (productoria) 0.9657 Tabla 2.43: Determinación de los multiplicadores de esfuerzo 3 Multiplicadores de Esfuerzo Criterio de costo (xi) Proyecto Valor TOOL 0.90 SITE 0.93 SCED 1.00 TOTAL (productoria) 0.837 Tabla 2.54: Determinación de los multiplicadores de esfuerzo 4 Exponente = 0.91 + 0.01*(Σ Factores) = 0.91 + 0.01*17.38 = 1.0838 Esfuerzo = e = 2.94 * (KLCF) exponente (Π Multiplicadores) = 2.94 * (15.9) 1.0838 {Π (1.1)( 0.8116)( 0.9657)( 0.837)} = 42.53 = 42.5 meses persona Siendo el equipo de desarrollo de la herramienta compuesto por cinco personas las cuales han trabajado en forma paralela partes distintas (por lo que se puede considerar el esfuerzo como acumulativo) durante todo el tiempo que se requirió desde el inicio hasta el fin de la evaluación, según Cocomo II el proyecto debió tomar aproximadamente 8 meses y 12 días. 2.2.3. Conclusión Estas técnicas de estimación de tiempos de proyectos de software permiten tener una idea de cuanto podría tomar elaborar un producto de software, sin embargo, éstos no consideran que en la vida real pueden ocurrir ciertos imprevistos que podrían atrasar o adelantar los procesos. También debe tomarse en cuenta la sensibilidad que tiene COCOMO II al seleccionarse los factores y conductores (drivers), que puede producir estimaciones que no se aproximan a la realidad. Esta claro que ninguna técnica está en las condiciones de poder prever tales tipos de inconvenientes, por lo que se consideran confiables hasta cierto punto. Respecto al tiempo que tomó la construcción de la herramienta de análisis podemos decir que es dos años, con un promedio de entre diez y veinte horas semanales. Tomando quince horas semanales, y considerando que los tiempos que Cocomo II estima son a un horario completo (40 horas semanales), obtenemos 9 meses por persona, si es que los integrantes se hubiesen dedicado a tiempo completo al proyecto. Por lo tanto en el caso de este proyecto de tesis, tomó aproximadamente 9 meses por persona la construcción de la herramienta desde su análisis, tiempo cercano por encima al 43 estimado con las técnicas antes mencionadas. 2.3. Construcción de la herramienta Para la construcción de la herramienta se han seguido los lineamientos y bases definidos en la etapa de análisis y que se encuentran documentados en los anexos C y D. Se han creado los paquetes de análisis y seguridad, en los cuales se encuentran los archivos fuente para el correcto funcionamiento de cada uno de los módulos mencionados anteriormente. Para el nombramiento de las clases a implementar se siguió el estándar ya definido el cual permite identificar al módulo dueño o administrador de dicha clase, del modo descrito a continuación: • Módulo Análisis: BAnombre_clase • Módulo Extracción: BEnombre_clase • Módulo Explotación: BXnombre_clase Se definió una estructura de carpetas y directorios que permitan hacer fácil la depuración y lectura del código, así como también identificar donde se encuentran las clases correspondientes a cada una de las capas que componen la arquitectura elegida para el desarrollo del proyecto, permitiendo a los miembros del equipo trabajar específicamente en alguna de las capas del proyecto sin problemas de integración posteriores. Se muestra dicha estructura en la figura 2.3. Tal y como muestra la figura 2.3, la estructura de carpetas se basa primero en separar las clases por cada uno de los módulos que conforman el proyecto, tomando como parte adicional las clases comunes a los tres módulos, después, por cada sub-parte se definen las clases que forman la lógica o también denominadas clases base en la carpeta clases, las que conforman el funcionamiento del panel de dibujo en la carpeta dib, las que establecen la persistencia en la carpeta XML, aquellas que definen el comportamiento del applet en la carpeta applet y las que conforman el flujo de seguridad del proyecto en la carpeta seguridad. Para construir los archivos con las fuentes de la herramienta se definieron Estándares que permitieran dar facilidad y claridad de entendimiento a los archivos fuentes de la herramienta. Los estándares permiten a los desarrolladores trabajar en forma ordenada su código y futuras personas que se encarguen del mantenimiento de las herramientas desarrolladas. Los estándares utilizados para la construcción de este trabajo de tesis se definen y detallan en el anexo H. 44 Figura 2.3: Estructura de carpetas de los archivos fuente A continuación se hace una breve descripción de cada paquete de la herramienta y se explica cuales son las funciones de las clases contenidas. a) Applet. Clases propias del applet. Son las clases que permiten el funcionamiento del modelador gráfico y de la ventana principal de la herramienta. Contiene tanto la parte del modelador como el menú principal con las funcionalidades de la herramienta. b) Clases. Son las clases base de la herramienta. Contienen la información básica de cada objeto según su definición. c) Gestores. Son las clases que gestionan o administran a las clases. Por medio de estas clases, se puede hacer operaciones de agregar y eliminar objetos, búsquedas y demás. 45 d) Controles. Son las clases que se encargan de la comunicación entre los Gestores y los beans. Estas clases son usadas para que los Beans puedan registrar operaciones y puedan obtener resultados de consultas en forma transparente. e) Beans. Son las clases que interactúan con las ventanas en jsf. Estas clases, llamadas también Mannaged Beans, son las que sirven de interfaz entre las clases internas de la aplicación y las ventanas, ya que recogen la información de las clases internas de la herramienta y las muestran en las ventanas, que recolectan dicha información y la muestran. f) Simulación. Paquete donde están contenidas las clases que se encargan de generar el xml que se utiliza para que funcione el componente externo DatProducer. g) Xml. Son las clases que contienen las operaciones que permiten acceder y modificar los xmls donde se guarda la información. Por medio de estas clases se realizan las operaciones de registrar, eliminar y hacer consultas alterando los xmls en los casos que sea necesario. 2.4. Integración del generador externo La herramienta, como se ha mencionado antes, ofrece la ventaja de generar datos que permitan a los usuarios poblar las tablas de sus modelos y revisar si éstos cumplen con sus necesidades. Para lograr esto, era necesario tener un componente o un paquete que permitiera realizar dicho trabajo o, en otro caso, desarrollar dicho paquete. Se eligió usar un motor de datos existente, llamado DatProducer, debido a las siguientes ventajas: • Ahorro de esfuerzo en horas / hombre. • Uso de una herramienta probada y eficiente. • Confiabilidad en dicha herramienta Se nos proporcionó un archivo .jar que permitía ser accedido mediante una clase principal, llamada ManejadorProyecto al cual debíamos enviarle una ruta de la cual se pudiera leer un archivo .xml en un formato especial con las definiciones de las tablas, campos y reglas de generación que permitan generar los datos con los que se procedería a poblar las tablas del modelo dimensional. Es de suma importancia que el archivo .xml generado sea hecho en un formato legible por DatProducer. Es por esto que se debía definir correctamente los pasos a seguir con la finalidad de definir 46 correctamente el flujo de la aplicación y en que punto especifico se iba a dar la interacción entre la herramienta elaborada y el aplicativo DatProducer. Este algoritmo utilizado desde que el usuario hace contacto con la herramienta de este trabajo de tesis hasta que se invoca a DatProducer es el siguiente: Se seleccionó “generar data de prueba”: • Se Seleccionan las tablas del proyecto a generar datos de prueba. • Se reciben y validan la dirección donde se grabará el archivo con scripts. • Para cada tabla seleccionada: o Obtener tablas relacionadas o Obtener campos. o Para cada uno de sus campos verificar.  El campo debe estar configurado. • Crear el encabezado del XML. • Para cada tabla seleccionada: o Obtener campos. o Para cada uno de sus campos verificar:  Leer regla de generación.  Añadir definición de archivo XML. • Cerrar XML. • Enviar XML a interface “DatProducer”. • Recibir scripts de inserción de datos. • Grabar archivo con scripts en dirección indicada. • Enviar un mensaje de confirmación al usuario. Este algoritmo muestra a grandes rasgos como se tiene definido el flujo de interacción entre el usuario, la herramienta y el componente DatProducer. La figura 2.4 muestra el diagrama de flujo del algoritmo anteriormente explicado. 47 No Sí ¿Aún quedan campos? No Sí ¿Aún quedan tablas seleccionadas? Inicio Crear encabezado de XML Verif icar configuración Recibir scripts de inserción de datos Enviar xml a interface “DatProducer” Obtener campos Seleccionar tablas Fin Recibir y validar dirección donde se grabará el script No Sí ¿Aún quedan campos? No Sí ¿Aún quedan tablas seleccionadas? Cerrar XML Leer regla de generación Obtener campos Añadir definición de archivo XML Enviar mensaje de confirmación Grabar scripts en dirección indicada Figura 2.4: Algoritmo: Generación de datos de prueba El algoritmo presentado anteriormente en la figura 2.4 ha sido extraído del trabajo de tesis “Análisis y diseño de una herramienta de desarrollo de soluciones para inteligencia de negocios – Análisis dimensional”. Para la construcción de dicho algoritmo, se propuso seguir los siguientes lineamientos: 48 • La interacción entre la herramienta y DatProducer debe ser transparente para el usuario. • La herramienta guardará con formato propio en xmls propios de la aplicación los datos de las reglas de generación que se definan por cada campo de cada tabla. • En el momento que se solicite generar datos, se generará un xml especial, con un formato tal que pueda ser leído por DatProducer y procesado. • Debido a que es una aplicación web, se debe asegurar que los datos generados puedan ser recibidos por el usuario. Para esto se crean archivos llamados outfile.zip que contienen todos los archivos con los scripts generados. Debido a que DatProducer requiere para su procesamiento un archivo .xml con una estructura totalmente diferente a las estructuras de tablas manejadas por la herramienta de tesis, se ha visto la necesidad de crear un paquete especial llamado simulación con una estructura de clases especial que permite generar con mayor facilidad el xml que se requiere en datproducer. La aplicación comienza la interacción con el usuario mediante el componente appletanalisis, por donde selecciona la opción de menú “Motor de Datos” -> “Generar datos de prueba”. Seguidamente se le muestra al usuario una ventana donde puede seleccionar las tablas de las que desea generar data, y selecciona Generar. Se comienza la interacción entre las clases de la herramienta. La herramienta llega al paquete Simulación dentro del paquete Análisis y crea la estructura de datos similar a la que requiere DatProducer. Esta estructura de clases fue creada debido a que la herramienta utiliza Castor para generar xmls en base a las clases existentes mapeandolas directamente hacia su respectivo xml. El DatProducer comienza su labor una vez que la herramienta de esta tesis ha generado su xml. El modo de operar de DatProducer es transparente para la herramienta debido a que se cuenta con un archivo .jar el cual realiza sus operaciones y lo que devuelve es los scripts de inserción, los cuales son guardados en una carpeta dentro del servidor. La herramienta recolecta los scripts que ha generado el DatProducer y crea un archivo de extensión .zip, el cual se le envia al usuario solicitante de dichos scripts para ser guardado en cualquier carpeta que se desee. Como se puede apreciar, la generación de datos es total y completa responsabilidad de DatProducer, el cual opera con el xml generado por la herramienta. Esto significa que significo mayor trabajo la generación de dicho xml para asegurar una correcta interacción con DatProducer. La figura 2.5 muestra el diagrama de secuencias para la generación de datos. 49 : Analista : AppletAnalisis : JSObject : FacesServlet : GenerarDataJSP : Gene rarDataBe an : ControlTabla : ControlEmpresa : GestorEmpresa empresa : Empresa : GestorTabla : ControlMotorDatos da tProd ucer : DatPro duce r 1: generarDatosPrueba() 2: eval(javascript) 3: [if] exito 4: foward() 5: submit() 8: generarDatosPrueba(idEmpresa, idTablas, manejadorBD) 9: actionEvent(evt) 30: display(mensajeDescarga) 6: create() 7: populate() 10: buscarAction() 29: mensajeDescarga 11: buscarTablas(idTablas) 27: mensaje 12: buscarEmpresa(idEmpresa) 16: empresa 13: buscarEmpresa(idEmpresa) 14: buscarEmpresa(idEmpresa) 15: empresa 17: buscarTablas(idTablas) 21: lis taTablas 18: buscarTablas(idTablas) 19: buscarTablas(idTablas) 20: lis taTablas 22: generarData(listaTablas) 23: xml =generarXMLMotor() 24: new() 25: generar(xml) 26 : men saje 28: z ipear() Figura 2.5: Diagrama de secuencias: Generación de datos de prueba 50 2.5. Implementación de la seguridad El módulo de seguridad ha sido considerado de suma importancia para ser configurado en la etapa de análisis de proyectos de desarrollo de Inteligencia de Negocios debido a que se permite tener validada la seguridad por funcionalidad y componente (solamente a nivel de empresa y desde que se inicia un proyecto. Las clases elaboradas para la implementación del módulo de seguridad han sido diseñadas con la finalidad de ser utilizadas por los demás módulos que conforman la herramienta integral de inteligencia de negocios. La seguridad ofrecida por la herramienta está basada en permisos de acceso por funcionalidad y estos permisos están enlazados a su vez a perfiles que son relacionados con usuarios definidos para una empresa determinada. El manejo de este esquema requiere además de clases gestoras como GestorUsuario, GestorPerfil y GestorFuncionalidad, así como también la clase ControlSeguridad que es la que sirve de puente de comunicación de este módulo con el resto de las clases de los distintos módulos de la aplicación. La figura 2.6 muestra el esquema de las clases que componen la seguridad de la aplicación. EmpresaXUsuario idEmpresa perfil Usuario nombreUsuario contrasenha apellidosUsuario email perfil habilitado accesoAnalisis accesoExtraccion accesoExplotacion accesoSeguridad listaEmpresas listaProyectos Proyecto agregarTema() eliminarTema() modificarTema() buscarTema() buscarDimension() agregarFact() eliminarFact() modificarFact() buscarFact() (from general) UsuarioXProyecto idProyecto perfil Funcionalidad idFuncionalidad codigoFuncionalidad modulo Perfil permisos habilitado getPermiso() buscarPermisoXNombre() Permiso codigoFuncionalidad modulo nivel ParametrosSeguridad PERFIL_ADMINISTRADOR PERFIL_VISITANTE NOMBRE_PERFIL_DEFECTO DESCRIPCION_PERFIL_DEFECTO FRENTE_ANALISIS FRENTE_EXTRACCION FRENTE_EXPLOTACION FRENTE_SEGURIDAD LOGIN_ANALISIS LOGIN_EXTRACCION LOGIN_EXPLOTACION LOGIN_SEGURIDAD LOGIN_NO_ACCESO LOGIN_ERROR LOGIN_FAIL ADMIN_NAME ADMIN_PASS ADMIN_DESC ObjetoPerfil idPerfil IdObjeto nombrePerfil nombreObjeto GestorUsuario listUsuCon listUsuarios idUsuarioSeteado agregarUsuario() modificarDatosUsuario() modificarUsuario() buscarUsuario() eliminarUsuario() eliminarUsuarioGestor() buscarUsuarioXNombre() buscarPerfilXNombre() GestorPerfil listPerfiles listPerfilesBus idPerfilSeteado agregarPerfil() buscarPerfil() modificarDatosPerfil() modificarPerfil() eliminarPerfil() eliminarPerfilGestor() buscarPerfilXNombre() ControlSeguridad gestorFuncionalidad gestorPerfil gestorUsuario agregarUsuario() getUsuarios() modificarUsuario() buscarUsuario() eliminarUsuario() getUsuarioPerfil() getUsuarioPermiso() getUsuarioXObjeto() agregarEmpresaUsuario() modificarEmpresaUsuario() eliminarEmpresaUsuario() buscarEmpresaUsuario() agregarProyectoUsuario() modificarProyectoUsuario() eliminarProyectoUsuario() buscarProyectoUsuario() validaUsuario() cambiarContrasenhaUsuario() conectarUsuario() desconectarUsuario() existeUsuario() getPerfiles() agregarPerfil() ... GestorFuncionalidad listFuncionalidades listFuncionalidadesBus idFuncionalidadSeteada agregarFuncionalidad() buscarFuncionalidad() modificarFuncionalidad() eliminarFuncionalidad() eliminarFuncionalidadGestor() buscarFuncionalidadXNombre() Figura 2.6: Diagrama de clases de seguridad 51 Las funcionalidades del módulo de seguridad están agrupadas dentro de las siguientes grandes categorías: administración de perfiles y administración de usuarios. Dentro de administración de perfiles, se tiene, como se mencionó anteriormente, a la inclusión de permisos dentro de un perfil. Un permiso es el vínculo de un perfil o rol a una funcionalidad de la herramienta. En varios casos este permiso puede tener más de un nivel de acceso como sólo lectura o modificación, por ejemplo al ver la especificación de un componente. Las funcionalidades han sido puestas en el sistema de forma manual y en caso que se aumenten o retiren alguna, también tendrán que ser retiradas del módulo manualmente (a nivel de XML), y modificado el código fuente que les haga referencia. La administración de usuarios es la otra parte relevante del módulo de seguridad. El usuario contiene además de la información propia de este (incluyendo una contraseña para acceso) la definición de un perfil por defecto (al acceder a la herramienta), además de las empresas y proyectos a los que el usuario podrá acceder, y para cada uno de estos tendrá un perfil que le limitará el acceso a cada componente y las funcionalidades que tenga vinculadas. 2.6. Presentación de algunas pantallas En esta sección se presentan algunas de las pantallas mas representativas de la herramienta. La definición de cada una de las pantallas de la herramienta se encuentra detallada en el anexo J. 2.6.1. Ventana de inicio La primera pantalla que se muestra en la figura 2.7 es la pantalla principal. Esta pantalla se encuentra dividida en 3 importantes secciones. La primera sección se encuentra en la parte superior de la aplicación y contiene al menú principal y la barra de herramientas. Las opciones que se presentan en el menú son: • Metadata. Contiene las operaciones básicas de administración lógica de los objetos principales que se tienen para la herramienta: empresas, proyectos, temas, dimensiones y facts. • Motor de datos. Contiene las opciones de configurar reglas de generación y generar datos de prueba. • Datos. Contiene las operaciones de: Generar documentación, generar script de creación de tablas y la estimación el tamaño del DataWarehouse. • Miscelaneo. Contiene las opciones de Acerca de, cambiar contraseña y salir. La segunda sección está en la parte izquierda y contiene el árbol explorador de objetos 52 existentes por empresa. Se puede conocer por cada empresa cuales son los proyectos que existen, y para cada uno de éstos últimos, cuantos temas contienen. Las dimensiones se encuentran contenidas todas por empresa y éstas son utilizadas por los temas de análisis. Cada tema cuenta con una lista de facts. La tercera sección está en la parte derecha y contiene el modelador gráfico de la herramienta. Esta sección muestra, por cada tema de análisis, su modelo gráfico, permitiendo al usuario agregar o quitar facts, dimensiones y relaciones. Cualquier modificación que se realice en el modelador gráfico se estarán registrando también en forma lógica, permitiendo editar cada objeto tanto desde el árbol de objetos como desde el modelador gráfico. Entre las funcionalidades adicionales que presenta el modelador gráfico están las de aumentar o disminuir el tamaño de visibilidad del modelo (zoom), deshacer o rehacer las ultimas operaciones efectuadas por el usuario sobre el gráfico, insertar notas propias de los usuarios que no son partes directas del modelo. Figura 2.7: Ventanas de la herramienta - Pantalla principal 53 2.6.2. Ejemplo de ventana de administración A continuación se muestra en la figura 2.8 la ventana de Administrar Empresa, a la cuál se accede mediante la opción de menú Metadata -> Empresas -> Administrar Empresas. Esta ventana sirve para hacer búsquedas de empresas en base a su nombre y/o descripción, crear nuevas empresa, modificar y eliminar las ya existentes. Similar a esta ventana también se tienen las ventanas para Administrar Proyectos, Administrar Temas, Administrar Facts y Administrar Dimensiones, las cuales se encuentran detalladas en el anexo G. Figura 2.8: Ventanas de la herramienta - Administrar empresa La siguiente es la ventana para crear Nueva Empresa, ubicada en la figura 2.9. A esta ventana se accede presionando el botón Crear en la ventana Administrar Empresa mostrada en la figura 2.8. Esta ventana contiene los datos principales con los que se debe crear una empresa dentro de la aplicación. Similar a esta ventana Figura 2.9: Ventanas de la herramienta - Detalle de Empresa 54 2.6.3. Ejemplo de ventana de detalle – detalle de Dimensión La siguiente ventana que se muestra en la figura 2.10 es Detalle de dimensión. Esta ventana se muestra inicialmente con los datos básicos de dimensión. Una vez que se graba la dimensión, la ventana muestra las opciones de administración de Atributos y Jerarquías (Ver figura 2.11). Figura 2.10: Ventanas de la herramienta - Detalle de dimensión 1 Una vez creada una dimensión, se crea un objeto tabla que será su correspondiente en el momento que se cree el modelo físico a ser creado en base de datos. Ambos objetos estarán siempre relacionados en todo momento que funcione la herramienta. Figura 2.11: Ventanas de la herramienta - Detalle de dimensión 2 55 Seleccionando al botón Crear en la tabla de atributos de la figura 2.11, se puede crear nuevos atributos para la dimensión. La figura 2.12 muestra la ventana utilizada para la creación de atributos. En la ventana inicial de creación aparecen sólo los datos mínimos para la creación de un atributo. Una vez grabado dicho atributo, aparecen en la ventana los campos creados por dicho atributo. Una dimensión creada tiene también una tabla asociada y un campo llave primaria creado por defecto. Por cada atributo que se le agrega a la dimensión, se crean por defecto dos campos, un campo id y un campo nombre, y adicionalmente se muestra la opción de crear un campo orden, estos campos sirven para indicar la relación entre un atributo y la tabla física de un modelo. El campo id contiene el id de cada atributo y el campo nombre contiene el nombre o descripción de dicho campo, lo cual será mostrado al momento de generar los reportes con el módulo de explotación. El campo orden es opcional y permite conocer si se desea ordenar los valores del atributo en el momento de mostrar los reportes. Estos campos pueden ser modificados o eliminados según lo desee el usuario. Figura 2.12: Ventanas de la herramienta - Detalle de atributo El usuario puede modificar los datos que crea convenientes para cada uno de los campos del atributo o eliminarlos si no los considera necesarios. Seleccionando al botón Crear en la tabla de jerarquías de la figura 2.11, se puede crear nuevas jerarquías para la dimensión. La figura 2.13 muestra la ventana utilizada para la creación de jerarquías. En la ventana inicial de creación aparecen sólo los datos necesarios para la creación de la jerarquía y, una vez grabada dicha jerarquía, aparece la opción de agregar o retirar atributos. Las jerarquías permiten agrupar atributos que tengan alguna relación entre sí y que deba ser respetada al momento que se realicen los reportes en el módulo de explotación del modelo y la generación de reportes. 56 Figura 2.13: Ventanas de la herramienta - Detalle de jerarquía La siguiente ventana es la que se muestra en la figura 2.14, la ventana Detalle de tabla. A esta ventana se accede por medio del botón Ver Tabla de la ventana Detalle de dimensión, mostrada en la figura 2.12. Figura 2.14: Ventanas de la herramienta - Detalle de tabla 57 Esta ventana muestra los datos de la tabla relacionada con la dimensión inicial. Como se ha mencionado anteriormente, una dimensión grabada tiene asociada a sí una tabla que será su correspondiente cuando dicho modelo se grabe en Base de Datos. El usuario puede modificar el nombre del campo, tipo de formato (Numérico, fecha, cadena y otros), y otros que se pueden apreciar en la figura 2.15. A esta ventana también se puede acceder desde la ventana Detalle de atributo mostrada en la figura 2.12, si se selecciona uno de los campos que contiene el atributo. Figura 2.15: Ventanas de la herramienta - Detalle de campo 2.6.4. Ejemplo de ventana de detalle – detalle de Fact La siguiente ventana que se muestra es la de Detalle de Fact, en la figura 2.16. Una Fact, como se puede apreciar, contiene Medidas e indicadores, los cuales pueden ser creados, editados o eliminados según lo defina el usuario. Accediendo a la opción Crear de la tabla de medidas de la Fact, se llega a la ventana de Detalle de Medida, mostrada en la figura 2.17. En ella el usuario puede definir los datos principales de dicha medida incluyendo el campo correspondiente que se crea. Para la modificación del campo de la medida se mostrará una ventana similar a la que aparece en la figura 2.15. 58 Figura 2.16: Ventanas de la herramienta - Detalle de Fact Figura 2.17: Ventanas de la herramienta - Detalle de Medida 2.6.5. Ejemplo de ventana de generación de datos La siguiente ventana que se muestra es la ventana por donde se inicia la configuración de las reglas de generación. Se muestra en la figura 2.18 la ventana de donde el usuario seleccionará el campo de una tabla para el cuál desee configurar su regla de generación. Todos los campos tienen asignado una regla de generación por defecto según el tipo de dato (Cadena, Número, Fecha). El usuario selecciona un campo y se mostrará la ventana correspondiente para configuración de su regla de generación. Para el ejemplo, se muestra en la figura 2.19 los parámetros para la configuración numérica. 59 Figura 2.18: Ventanas de la herramienta – Configurar reglas de generación Figura 2.19: Ventanas de la herramienta – Regla de generación Número El usuario puede cambiar los parámetros que crea convenientes. Existen ventanas similares para las reglas de generación Fecha y Cadena. Para la generación de datos, el usuario debe acceder a la ventana Generación de datos de prueba, mostrada en la figura 2.20, seleccionar las tablas facts para las que quiere probar el modelo y los datos generados, y solicitar la generación. La herramienta detectará por cada Fact, cuales son las tablas dimensiones de las cuáles depende, y también generará datos para dichas tablas, esto con la finalidad de evitar falta de integridad en los datos a insertar en 60 base de datos. Estos datos llegarán al usuario final en forma de scripts de inserción en un archivo .zip que contenga varios archivos .sql con dichos scripts de inserción para cada tabla generada. Figura 2.20: Ventanas de la herramienta – Generar data de prueba 61 3. Pruebas de la plataforma Este capitulo contiene las pautas necesarias para poder definir el ambiente requerido para que la herramienta funcione correctamente. Se detallan las especificaciones de hardware y software, de equipo y al final, a manera de ejemplo, una propuesta de prueba integral que cubre la mayor parte de las funcionalidades que debe cumplir la herramienta, según lo estipulado en los capítulos anteriores y según lo indica el anexo A. La construcción de un buen Plan de Pruebas es la piedra angular y en consecuencia el principal factor crítico de éxito para la puesta en práctica de un proceso de pruebas que permita entregar un software de mejor nivel. No obstante que cada esfuerzo o proceso de pruebas puede ser diferente y específico, la mayor parte de los proyectos informáticos, sean de nuevos desarrollos o de mantenimiento de aplicaciones, tienen un marco común para la realización de las pruebas. 3.1. Consideraciones preliminares A continuación se presentan las consideraciones preliminares para el correcto funcionamiento de la herramienta. Estas son las condiciones que el equipo de desarrollo considera básicas e indispensables para que la herramienta pueda funcionar y rendir con resultados óptimos y que satisfagan los casos de prueba de desempeño de la herramienta. Consideraciones de Hardware Los requerimientos mínimos de hardware para que la herramienta funcione son: • Procesador Pentium III para los equipos clientes y Pentium IV para el servidor. 62 • 128 MB de memoria RAM para las computadoras clientes. Para el servidor 512 MB de memoria. • Monitor de 14”. • Resolución de 1024 x 768 píxeles. • Para el caso del servidor, éste deberá tener una capacidad mínima de 20 GB, pero esta puede variar en función a la cantidad de datos a almacenar y la frecuencia de las tomas. • Para todos los módulos de usuarios, se requerirá disco duro de 20 GB. • Para los módulos de usuarios se requerirá acceso a Internet o que los módulos estén conectados a una red local con el servidor. Requerimientos Software Los requerimientos software de la herramienta son: • El sistema operativo deberá ser uno de los siguientes: Windows, GNU/Linux o cualquier superior. • Para la implementación de la herramienta será necesario que se cuente con el jdk1.5, Apache Tomcat y los manejadores de datos Oracle y SQL Server. • Licencias correspondientes para el uso de los manejadores de bases de datos a emplear. Requerimientos de Documentación Los requerimientos de documentación de la herramienta son: • Manual de Usuario, el cual debe contener la descripción general de la herramienta y a su vez servirá como documento de guía para el cliente o usuario de la herramienta. • Guías de Instalación y Configuración, las cuales apoyarán al usuario en la instalación de la herramienta. Requerimientos de Personal Los requerimientos de personal para la prueba son: • El equipo del frente de análisis BI-PUCP que estará conformado por un jefe de proyecto, un documentador, un analista y dos desarrolladores, lo cuales irán rotando en el tiempo. 63 Requerimientos de Datos de Prueba Los requerimientos de datos de prueba de la herramienta son: • Los datos que se utilicen en la pruebas de aceptación deberán tener un formato estándar en relación a los tipos de datos reales, para poder así observar el desempeño de la herramienta en condiciones de trabajo normales. • Por otro lado, para pruebas de robustez los datos deberán contener valores extremos que permitan observar como reacciona la herramienta a ellos y así poder aplicar las medidas correctivas pertinentes. 3.2. Pruebas de funcionalidad El propósito de efectuar prueba de funcionalidad es poder verificar que la herramienta es capaz de responder ante los casos de uso planteados para el desarrollo de la misma y el correcto cumplimiento de los requerimientos tanto funcionales como no funcionales, utilizando para ello casos de prueba que permitan identificar el comportamiento del producto y ver si su respuesta ante las exigencias a las que será sometido está dentro del rango de aceptación esperado. Para estas pruebas es necesario que, en primer lugar, se cuente con las herramientas y especificaciones definidos en el apartado anterior, considerados indispensables para la implementación de la herramienta. Las pruebas de funcionalidad son a alto nivel y permiten confirmar al usuario final que la herramienta cumple con los requerimientos necesarios para su uso. Las pruebas de desempeño están divididas en: • Pruebas de funcionalidad del módulo de análisis • Pruebas de funcionalidad del módulo de seguridad 3.2.1. Pruebas de funcionalidad del modulo de análisis Se propone desarrollar un caso de prueba general que involucre diversos casos de uso para probar las funcionalidades de la herramienta. Para este caso se ha decidido simular un flujo de desarrollo simulando un ambiente real en el que debería funcionar la aplicación tratando de involucrar a la mayor cantidad de casos de uso que se pueda. Para mayor entendimiento de los casos de prueba desarrollados, se presenta a continuación el siguiente esquema: 64 1 Crear la empresa: EmpPrueba 2 Administrar proyecto: ProyPrueba 2.1 Crear proyecto ProyPrueba 2.2 Modificar el proyecto ProyPrueba 3 Administrar un tema de análisis: TemaPrueba 3.1 Crear el tema TemaPrueba 3.2 Modificar el tema TemaPrueba 4 Agregar al modelador una fact y dos dimensiones relacionadas hacia dicha fact. 4.1 La dimensión Cliente con un atributo llamado Nombre y otro llamado FecNac (Fecha de nacimiento) 4.2 La dimensión Producto con un atributo llamado Código y otro llamado Nombre 4.3 La fact ProductosXCiliente, con llave primaria de las dimensiones anteriormente creadas. Y una medida llamada Cantidad. 5 Generar Datos de prueba 5.1 Generar Datos de prueba con la configuración por defecto. 5.2 Modificar la configuración de un campo y luego generar Datos de prueba con la configuración por defecto 6 Creación de script de creación de tablas. 7 Insertar ambos scripts en el motor de base de datos correspondiente verificando que no salgan errores 8 Generar documento. Se elaboró un cuadro la siguiente información por cada prueba: Nombre del caso de uso relacionado, detalle de la prueba, resultado esperado, resultado obtenido, acción correctiva y observaciones. Luego de efectuar dichas pruebas en varias ocasiones y corregir los errores encontrados, la herramienta llegó a un estado óptimo para cumplir dichas pruebas. La tabla 3.1 muestra dicho cuadro indicando el nombre del caso de uso relacionado, el detalle de la prueba y los resultados esperados, los cuales fueron los resultados obtenidos en la última revisión de la herramienta. 65 Nombre Detalle de la prueba Resultado Esperados 1.Crear Empresa 1 El usuario hace clic en Metadata -> Nuevo -> Empresa 2 El usuario Ingresa los datos de la empresa: Nombre = EmpPrueba, Descripción = Empresa de prueba Se debe agregar la nueva empresa al árbol 1 El usuario hace ciclo en Metadata -> Nuevo -> Proyecto 2 El usuario Ingresa los datos del proyecto: Nombre = ProyPrueba, Descripción = Proyecto de prueba Se debe agregar el nuevo proyecto al árbol 2. Administrar Proyecto 1 El usuario hace doble click en el proyecto ProyPrueba y se habré una ventana de edición, donde se ven los datos ingresados anteriormente. 2 El usuario cambia el campo Descripción = Proyecto cambiado. Si se vuelve a abrir la ventana de edición, deben verse los cambios reflejados 1 El usuario hace ciclo en Metadata -> Nuevo -> Tema 2 El usuario Ingresa los datos del proyecto: Nombre = TemaPrueba, Descripción = Tema de prueba Se debe agregar el nuevo tema al árbol. Se debe crear un panel por defecto para diagramar el nuevo tema. 3. Administrar Tema 1 El usuario hace doble clic sobre el tema de Análisis y se abre una ventana de edición, donde se ven los datos ingresados anteriormente. 2 El usuario cambia el campo Descripción a lo que desee. Si se vuelve a abrir la ventana de edición deben verse los cambios reflejados 4. Agregar al modelador una fact y dos dimensiones Creación de la dimensión Cliente. 1 El usuario crea la dimensión Cliente, para lo cual usa el diagramador haciendo clic sobre el icono de dimensión y luego sobre el panel. 2 El usuario abre la ventana de edición para la dimensión Cliente, haciendo doble clic sobre dicha dimensión. 3 El usuario agrega los atributos Nombre y FecNac. Para esto hace clic en el botón “agregar atributo” y crea uno a uno los atributos indicados. Los atributos se crean con dos campos por defecto. Dejarlos con los parámetros por defecto. 4 El usuario guarda los cambios. Los cambios deben verse reflejados en: Árbol, Diagrama y ventana de edición, para todos los objetos involucrados. 66 Nombre Detalle de la prueba Resultado Esperados Creación de la dimensión Producto 1 El usuario crea la dimensión Producto, para lo cual usa el diagramador haciendo clic sobre el icono de dimensión y luego sobre el panel. 2 El usuario abre la ventana de edición para la dimensión Producto, haciendo doble clic sobre dicha dimensión. 3 El usuario agrega los atributos Nombre y Descripción. Para esto hace clic en el botón “agregar atributo” y crea uno a uno los atributos indicados. Los atributos se crean con dos campos por defecto. Dejarlos con los parámetros por defecto. 4 El usuario guarda los cambios. Los cambios deben verse reflejados en: Árbol, Diagrama y ventana de edición, para todos los objetos involucrados. Creación de la fact Ventas. 1 Se debe crear la fact Ventas, para lo cual hace clic en el icono de fact y luego hace clic sobre el panel. 2 El usuario agrega las relaciones desde las dos dimensiones anteriormente creadas con la fact Ventas. 3 El usuario agrega la medida Cantidad. Para esto, hace clic en el botón “agregar medida”. 4 Si el usuario retira una relación de dimensión, debe desaparecer del gráfico y de la definición de la fact. (Hacer doble clic sobre la fact y verificar en la ventana de modificación que se han conservado los cambios. 5 Si el usuario vuelve a agregar la relación de la dimensión, éste debe aparecer tanto gráficamente como lógicamente. Para verificar que se ha agregado lógicamente, debe volver a abrir la ventana de edición de la fact Ventas y en ella deben verse reflejados los cambios. 6 El usuario guarda los cambios. Los cambios deben verse reflejados en: Árbol, Diagrama y ventana de edición, para todos los objetos involucrados. 67 Nombre Detalle de la prueba Resultado Esperados Primero se probará generar datos de prueba con las especificaciones por defecto. 1 El usuario debe entrar al menú Motor de Datos -> Generar datos de prueba. 2 El usuario selecciona la o las tablas que desea generar. Para el caso, selecciona la dimensión Cliente. 3 El usuario ingresa los datos necesarios para generar los datos de prueba: Motor de base de datos, conexión, puerto, usuario. 4 El usuario solicita generar datos Debe descargarse en la máquina del usuario un archivo .zip con los archivos que contienen los scripts generados. 5. Generar datos de prueba Ahora se va a probar la configuración de las reglas de generación: Regla de generación número: 1 El usuario debe entrar al menú Motor de Datos -> Configurar reglas de Generación. Se le mostrará una ventana con las tablas Cliente, Producto y FactVentas 2 El usuario selecciona la dimensión Cliente. Debe aparecer al lado derecho de la ventana una cuadricula con los campos que contiene dicha tabla. Dichos campos deben ser: • CampoID • NombreID • NombreDesc • FecNacID • FecNacDesc 3 campos con nombre similar. 4 El usuario selecciona el campo CampoID y entra a la ventana de configuración. 5 Por defecto, el CampoID sólo puede ser numérico y secuencial. Los únicos parámetros que puede cambiar el usuario son el rango mínimo y máximo y la secuencialidad. 6 El usuario coloca valor mínimo 500 y valor máximo 100. Debe emitirse un mensaje de error. 7 El usuario coloca valor mínimo 100, valor máximo 5000 y secuencialidad 5. El usuario selecciona guardar. 8 Luego debe ir a la ventana de generación de datos de prueba. Los cambios deben quedar registrados para el campoID de la tabla Cliente. Los datos que se generen para el campoID deben ser secuenciales comenzando por 100 y aumentando de 5 en 5, sin exceder el valor máximo de 5000. 68 Nombre Detalle de la prueba Resultado Esperados 6. Generar script de creación de tablas 1 El usuario selecciona Creación de script de tablas. Debe levantarse una ventana en la que aparecen las tablas Cliente, Producto y FactVentas. 2 El usuario selecciona todas las Tablas 3 El usuario selecciona generar script de generación de tablas. Debe grabarse en la maquina cliente un archivo con los scrips que el usuario puede usar. 4 El usuario deberá correr el script en algún manejador de base de datos para verificar la correcta creación del mismo 5 Adicionalmente, el usuario puede probar insertar los datos generados en el caso de prueba anterior. Se deben crear correctamente las tablas y deben insertarse los datos de prueba sin generar errores 7. Generar documento 1 El usuario debe solicitar generar documento. Se debe levantar una ventana con todos los temas disponibles. Por ahora solo se cuenta con el tema default y TemaPrueba. 2 El usuario debe seleccionar Tema Prueba y solicitar generar documentación. Se debe generar un archivo .zip que debe descargarse en la maquina cliente y contener los siguientes archivos: • TemaPrueba.html • DimCliente.html • DimClienteAtrNombre.html • DimClienteAtrFNac.html • DimProducto.html • DimProductoAtrNombre.html • DimProducto.AtrDescrip.html • FactVentas.htlml • TablaCliente.html. • TablaProducto.html • TablaFactVentas.html O similares a estas, con links de navegación entre ellas. Para poder ver el documento se debe comenzar por el archivo TemaPrueba.html Tabla 3.1: Casos de prueba - módulo de análisis 69 3.2.2. Pruebas de desempeño del modulo de seguridad Para el módulo de seguridad se desarrolló una serie de pruebas que involucraba los casos de uso Administrar Usuario y Administrar perfil. A continuación se muestra el esquema de las pruebas usadas: Administrar Usuario 1 Se crea un Usuario sin empresas y un perfil sin permisos 1.1 Se agrega al Usuario una empresa y se sigue con un perfil sin permisos. 1.2 Se agrega permisos al perfil del usuario para con cada una de estas empresas 2 Administrar Perfil 2.1 Crear perfil 2.2 Asignar perfil a usuario. Verificar que el perfil funciona correctamente. La tabla 3.2 muestra el detalle de las pruebas mencionadas anteriormente. Nombre Detalle de la prueba Resultados Obtenidos 1 Ingresar a la herramienta como administrador de sistema a la herramienta 2 Crear el usuario: UsuPrueba 3 Ingresar a la herramienta con el usuario UsuPrueba El usuario UsuPrueba debe ingresar a la herramienta, sin permisos de ningún tipo 1. Administrar Usuario 1 Ingresar a la herramienta (módulo de análisis) como administrador y crear 5 empresas: emp1, emp2, emp3, emp4 y emp5. 2 Asignarle las empresas emp1 y emp2 al usuario UsuPrueba con un perfil sin permisos. 3 Ingresar a la herramienta con el usuario UsuPrueba y verificar que solo puede ver a las empresas asignadas pero que no tiene permisos sobre dichas empresas El usuario UsuPrueba debe poder ver en el árbol de la herramienta sólo a las empresas emp1 y emp2 y pero sin permisos sobre ellas, es decir, sin opciones en los menús. 70 Nombre Detalle de la prueba Resultados Obtenidos 1 Ingresar a la herramienta como administrador 2 Buscar de las empresas que el usuario UsuPrueba tiene permiso y asignarle un perfil con permisos (o añadirle permisos al perfil anterior) a la empresa emp1. 3 Ingresar a la herramienta con el usuario UsuPrueba y verificar que tiene permisos sobre la empresa emp1 según el perfil asignado y que en la empresa emp2 no tiene permisos. El usuario debe ver que tiene los permisos asignados para la empresa emp1, pero sigue sin permisos para la empresa emp2. 1 Ingresar a la herramienta como administrador. 2 Crear un perfil llamado PerfilPrueba 3 Asignarle a dicho perfil los permisos que se deseen. El perfil debe quedar grabado en la metadata de la herramienta. 2. Administrar Perfil 1 Ingresar a la herramienta como administrador. 2 Buscar al usuario UsuPrueba. 3 Asignarle a la empresa emp2 del usuario UsuPrueba el perfil PerfilPrueba. 4 Ingresar a la herramienta como usuario UsuPrueba y verificar los cambios. El usuario debe ver que tiene los permisos del perfil PerfilPrueba sobre la empresa emp2. Tabla 3.2: Casos de pruebas - módulo de seguridad 3.3. Pruebas unitarias El propósito de efectuar pruebas unitarias es poder validar las ventanas de la aplicación a fin de verificar que todas las entradas al sistema estén correctamente validadas. En las pruebas unitarias de sistema, los datos de prueba deberán cubrir los posibles valores de cada parámetro basado en los requerimientos. Debido a que probar cada uno de los valores es impráctico, se deberán de escoger unos cuantos valores de cada clase de equivalencia. Una clase de equivalencia es un conjunto de valores que deberán ser tratados igual. Idealmente, los casos de prueba que evalúan condiciones de error son escritos de forma separada de los casos de prueba funcionales y deberán incluir pasos para verificar los mensajes de error y los registros. Las pruebas se efectúan por cada componente de cada ventana, por lo que se propone un caso ideal para todos los demás campos menos para el 71 que se está probando, a fin de poder detectarlos. Las pruebas Unitarias serán del tipo Caja Negra, el cuál se centran en lo que se espera de un módulo, es decir, intentan encontrar casos en que el módulo no se atiene a su especificación. Por ello se denominan pruebas funcionales, y el probador se limita a suministrarle datos como entrada y estudiar la salida, sin preocuparse de lo que pueda estar haciendo el módulo por dentro. El problema con las pruebas de caja negra no suele estar en el número de funciones proporcionadas por el módulo (que siempre es un número muy limitado en diseños razonables); sino en los datos que se le pasan a estas funciones. El conjunto de datos posibles suele ser muy amplio (por ejemplo, un entero). A la vista de los requisitos de un módulo, se sigue una técnica algebraica conocida como "clases de equivalencia". Esta técnica trata cada parámetro como un modelo algebraico donde unos datos son equivalentes a otros. Si logramos partir un rango excesivamente amplio de posibles valores reales a un conjunto reducido de clases de equivalencia, entonces es suficiente probar un caso de cada clase, pues los demás datos de la misma clase son equivalentes. El problema está pues en identificar clases de equivalencia, tarea para la que no existe una regla de aplicación universal; pero hay recetas para la mayor parte de los casos prácticos: • Si un parámetro de entrada debe estar comprendido en un cierto rango, aparecen 3 clases de equivalencia: por debajo, en y por encima del rango. • Si una entrada requiere un valor concreto, aparecen 3 clases de equivalencia: por debajo, en y por encima del rango. • Si una entrada requiere un valor de entre los de un conjunto, aparecen 2 clases de equivalencia: en el conjunto o fuera de él. • Si una entrada es booleana, hay 2 clases: si o no. • Los mismos criterios se aplican a las salidas esperadas: hay que intentar generar resultados en todas y cada una de las clases. Lograr una buena cobertura con pruebas de caja negra es un objetivo deseable; pero no suficiente a todos los efectos. Un programa puede pasar con holgura millones de pruebas y sin embargo tener defectos internos que surgen en el momento más inoportuno (Murphy no olvida). El detallado de las pruebas unitarias se presenta en el Anexo K. Para un rápido entendimiento se muestra a continuación una breve descripción de lo que se muestra por cada ventana a ser validada. 72 • Campos relacionados. Son los campos que posee la ventana y que deben ser ingresados por el usuario. • Casos de prueba encontrados. Son todos los casos de prueba que se obtienen de cruzar todas las posibles formas de ingreso de datos por cada campo, sean estas formas de ingreso de Clase valida (CV) o Clase no valida(CNV). • Casos de prueba a implementar. Son los casos de prueba que se consideran sirven para ser implementadas debido a que permiten evaluar cada campo. Un caso de prueba es descartado cuando en este hay mas de una clase no valida ya en el momento de ejecutarse, no se podría detectar donde la ventana esta encontrando el error. A continuación y como modelo de pruebas equivalentes, se presentan 3 ejemplos significativos: Caso de prueba para clase equivalente – Ventana Administrar Temas de Análisis a) Campos relacionados: A continuación se listan los campos que se encuentran en la ventana Administrar Tema e Análisis. Nombre: Cadena Alfanumérica (de 5 a 15 caracteres), en la tabla 3.3. CV Cadena de longitud 5..15 caracteres 1 a CNV Cadena de longitud 0..4 caracteres 2 b CNV Cadena de longitud 15 a mas caracteres 3 c Tabla 3.3: Clases válidas y no válidas - Administrar tema - Nombre Descripción: Cadenas Alfanuméricas. (de 0 a 50 caracteres), en la tabla 3.4. CV Cadena de longitud 0..50 caracteres 4 d CNV Cadena de longitud más de 50 caracteres 5 e Tabla 3.4: Clases válidas y no válidas - Administrar tema - Descripción b) Casos de Prueba Encontrados: La tabla 3.5 contiene los casos de prueba encontrados para la ventana Administrar Tema. N° Caso Análisis Resultado 1 (a,d) los dos son cv Sirve. Funciona (+) 2 (a,e) a es cv y e es cnv Sirve. Falla por e (-) 3 (b,d) b es cnv y d es cv Sirve. Falla por b (-) 4 (b,e) b es cnv y e es cnv No sirve. Falla por b o e 5 (c,d) c es cnv y d es cv Sirve. Falla por d (-) 6 (c,e) c es cnv y e es cnv No sirve. Falla por c o e Tabla 3.5: Casos de prueba encontrados - Administrar tema 73 c) Casos de Prueba a Implementar: La tabla 3.6 contiene los casos de prueba que han sido considerados necesarios implementar para poder validar la ventana Administrar Tema. N° Caso Valores Resultado Esperado Observaciones 1 “nombre1”, “descripción1” Grabar OK 2 “nombre1”, “12341……” (más de 50 caracteres) Error 3 “abc” “descripción1” Error 5 “abcabcabcabcabcabcabc” “descripción1” Error Tabla 3.6: Casos de prueba a implementar - Administrar tema Casos de prueba para clase equivalente - Ventana Administrar Dimensión a) Campos relacionados: A continuación se listan los campos que se encuentran en la ventana Administrar Fact. Nombre: Cadena Alfanumérica (de 5 a 15 caracteres), en la tabla 3.7 CV Cadena de longitud 5..15 caracteres 1 a CNV Cadena de longitud 0..4 caracteres 2 b CNV Cadena de longitud 15 a mas caracteres 3 c Tabla 3.7: Clases válidas y no válidas - Administrar dimensión- Nombre Descripción: Cadenas Alfanuméricas. (de 0 a 50 caracteres), en la tabla 3.8 CV Cadena de longitud 0..50 caracteres 4 d CNV Cadena de longitud más de 50 caracteres 5 e Tabla 3.8: Clases válidas y no válidas - Administrar dimensión- Descripción b) Casos de Prueba Encontrados: La tabla 3.9 contiene los casos de prueba encontrados para la ventana Administrar Tema. N° Caso Análisis Resultado 1 (a,d) los dos son cv Sirve. Funciona (+) 2 (a,e) a es cv y e es cnv Sirve. Falla por e (-) 3 (b,d) b es cnv y d es cv Sirve. Falla por b (-) 4 (b,e) b es cnv y e es cnv No sirve. Falla por b o e 5 (c,d) c es cnv y d es cv Sirve. Falla por d (-) 6 (c,e) c es cnv y e es cnv No sirve. Falla por c o e Tabla 3.9: Casos de prueba encontrados - Administrar dimensión c) Casos de Prueba a Implementar: La tabla 3.6 contiene los casos de prueba que han sido considerados necesarios implementar para el caso de uso Administrar Fact. 74 N° Caso Valores Resultado Esperado Observaciones 1 “nombre 1” “descripción 1” Grabar OK 2 “nombre 1” “12341……” Error 3 “abc” “descripción 1” Error 5 “abcabcabcabcabcabcabc” “descripción 1” Error Tabla 3.10: Casos de prueba encontrados - Administrar dimensión Casos de prueba para clase equivalente - Ventana Configurar regla de generación numero. a) Campos relacionados: A continuación se listan los campos que se encuentran en la ventana Configurar regla de generación numero. (La ventana correspondiente se muestra en la figura 2.19) Sistema: Valor predefinido, en la tabla 3.11 CV Valor predefinido 1 a CNV Cualquier otro valor 2 b Tabla 3.11: Clases válidas y no válidas - Regla de generación Número - Sistema Num. Decimales: Número entre 0 y 5, en la tabla 3.12 CV Número entre 0 y 5 3 c CNV Número menor que 0 4 d CNV Número mayor que 5 5 e Tabla 3.12: Clases válidas y no válidas - Regla de generación Número - Num. Decimales Signo: Valor predefinido, en la tabla 3.13 CV Valor predefinido 6 f CNV Cualquier otro valor 7 g Tabla 3.13: Clases válidas y no válidas - Regla de generación Número - Signo Tipo de generación: Valor predefinido, en la tabla 3.14 CV Valor predefinido 8 h CNV Cualquier otro valor 9 i Tabla 3.14: Clases válidas y no válidas - Regla de generación Número – Tipo de gen. Mínimo: Número entre –9223372036854775808 y 9223372036854775807, en la tabla 3.15 75 CV Número entre 0 y 9223372036854775807 10 j CNV Número menor que –9223372036854775808 11 k CNV Número mayor que 9223372036854775807 12 l CNV No número 13 m Tabla 3.15: Clases válidas y no válidas - Regla de generación Número - Mínimo Máximo. Decimales: Número entre –9223372036854775808 y 9223372036854775807, en la tabla 3.16 CV Número entre 0 y 9223372036854775807 14 n CNV Número menor que –9223372036854775808 15 o CNV Número mayor que 9223372036854775807 16 p CNV No número 17 q Tabla 3.16: Clases válidas y no válidas - Regla de generación Número - Máximo Incremento. Decimales: Número entre –9223372036854775808 y 9223372036854775807, en la tabla 3.17 CV Número entre 0 y 9223372036854775807 18 r CNV Número menor que –9223372036854775808 19 s CNV Número mayor que 9223372036854775807 20 t CNV No número 22 u Tabla 3.17: Clases válidas y no válidas - Regla de generación Número - Incremento Constante. Decimales: Número entre -9223372036854775808 y 9223372036854775807, en la tabla 3.18 CV Número entre 0 y 9223372036854775807 23 v CNV Número menor que -9223372036854775808 24 w CNV Número mayor que 9223372036854775807 25 x CNV No número 26 y Tabla 3.18: Clases válidas y no válidas - Regla de generación Número - Constante b) Casos de Prueba Encontrados: Para este caso no se listan los casos de prueba encontrados debido a que son demasiados y se considera innecesario listarlos para una ventana con tantos campos como la analizada en este momento. c) Casos de Prueba a Implementar: La tabla 3.19 contiene los casos de prueba que han sido considerados necesarios implementar para el caso de uso Configurar regla de generación numero. Caso Valores Resultado Esperado Observaciones a c Sistema = Decimal Num Decimales = 2 Grabar OK 76 Caso Valores Resultado Esperado Observaciones f h j n r v Signo = Positivo Tipo generación = Aleatorio Mínimo = 0 Máxima = 10000 Incremento = (No interesa) Constante = (No interesa) b c f h j n r v Sistema = (Otro) Num Decimales = 2 Signo = Positivo Tipo generación = Aleatorio Mínimo = 0 Máximo = 10000 Incremento = (No interesa) Constante = (No interesa) Error a d f h j n r v Sistema = Decimal Num Decimales = -3 Signo = Positivo Tipo generación = Aleatorio Mínimo = 0 Máximo = 10000 Incremento = (No interesa) Constante = (No interesa) Error a e f h j n r v Sistema = Decimal Num Decimales = 10 Signo = Positivo Tipo generación = Aleatorio Mínimo = 0 Máximo = 10000 Incremento = (No interesa) Constante = (No interesa) Error a c g h j n r v Sistema = Decimal Num Decimales = 2 Signo = (Otro) Tipo generación = Aleatorio Mínimo = 0 Máximo = 10000 Incremento = (No interesa) Constante = (No interesa) Error a c f i j n r v Sistema = Decimal Num Decimales = 2 Signo = Positivo Tipo generación = (Otro) Mínimo = 0 Máximo = 10000 Incremento = (No interesa) Constante = (No interesa) Error a c f h k n r v Sistema = Decimal Num Decimales = 2 Signo = Positivo Tipo generación = Aleatorio Mínimo = -9999999999999999999999999999 Máximo = 10000 Incremento = (No interesa) Constante = (No interesa) Error a c f h Sistema = Decimal Num Decimales = 2 Signo = Positivo Tipo generación = Aleatorio Error 77 Caso Valores Resultado Esperado Observaciones l n r v Mínimo = 9999999999999999999999999999 Máximo = 10000 Incremento = (No interesa) Constante = (No interesa) a c f h m n r v Sistema = Decimal Num Decimales = 2 Signo = Positivo Tipo generación = Aleatorio Mínimo = “Hola” Máximo = 10000 Incremento = (No interesa) Constante = (No interesa) Error a c f h j o r v Sistema = Decimal Num Decimales = 2 Signo = Positivo Tipo generación = Aleatorio Mínimo = 0 Máximo = -999999999999999999999999999 Incremento = (No interesa) Constante = (No interesa) Error a c f h j p r v Sistema = Decimal Num Decimales = 2 Signo = Positivo Tipo generación = Aleatorio Mínimo = 0 Máximo = 9999999999999999999999999999 Incremento = (No interesa) Constante = (No interesa) Error a c f h j q r v Sistema = Decimal Num Decimales = 2 Signo = Positivo Tipo generación = Aleatorio Mínimo = 0 Máximo = “hola” Incremento = (No interesa) Constante = (No interesa) Error a c f h j n s v Sistema = Decimal Num Decimales = 2 Signo = Positivo Tipo generación = Secuencial Mínimo = 0 Máximo = 10000 Incremento = -9999999999999999999999999 Constante = (No interesa) Error a c f h j n t v Sistema = Decimal Num Decimales = 2 Signo = Positivo Tipo generación = Secuencial Mínimo = 0 Máximo = 10000 Incremento = 9999999999999999999999999 Constante = (No interesa) Error a c f h j n Sistema = Decimal Num Decimales = 2 Signo = Positivo Tipo generación = Secuencial Mínimo = 0 Máximo = 10000 Error 78 Caso Valores Resultado Esperado Observaciones u v Incremento = “Hola” Constante = (No interesa) a c f h j n r w Sistema = Decimal Num Decimales = 2 Signo = Positivo Tipo generación = Constante Mínimo = (No interesa) Máximo = (No interesa) Incremento = (No interesa) Constante = -9999999999999999999999999 Error a c f h j n r x Sistema = Decimal Num Decimales = 2 Signo = Positivo Tipo generación = Constante Mínimo = (No interesa) Máximo = (No interesa) Incremento = (No interesa) Constante = 9999999999999999999999999 Error a c f h j n r y Sistema = Decimal Num Decimales = 2 Signo = Positivo Tipo generación = Constante Mínimo = (No interesa) Máximo = (No interesa) Incremento = (No interesa) Constante = “hola” Error Tabla 3.19: Casos de prueba encontrados – Regla de generación numero 3.4. Consideraciones para la implementación de la herramienta De acuerdo a lo descrito en los puntos anteriores de este capitulo, la implementación requiere que se haya pasado previamente por dichos puntos, siendo necesario: a) Cumplir con las consideraciones preliminares para el desarrollo e implementación de la herramienta. b) Haber cumplido con las pruebas de desempeño planteadas para la herramienta. Sin embargo, el objetivo de la elaboración de un producto de software no es sólo que éste sea desarrollado, también se busca que el producto sea correctamente usado por los usuarios. Si esta herramienta, producto del trabajo de tesis del equipo de desarrollo, fuese implementada para su uso en un ambiente real, se añaden las siguientes recomendaciones para el correcto uso de la herramienta. Respecto al personal que ha de brindar mantenimiento a la herramienta, se recomendaría que la persona tenga conocimientos básicos de las tecnologías descritas en el capítulo 2. Así mismo, para de los usuarios de la herramienta, se recomendaría inicialmente leer con anticipación los manuales de uso que están incluidos en la herramienta y, más importante aún, se recomendaría que éstos tengan conocimientos del concepto y aplicaciones del tema Inteligencia de Negocios. 79 Por último, siendo ésta una herramienta orientada al tema de Inteligencia de Negocios, no se recomienda su uso en otras aplicaciones. Debido a que la herramienta esta orientada al modelamiento dimensional sigue ciertas reglas propias de dicho tipo de modelamiento, por lo que si se usara en otros tipos de proyectos, por ejemplo en un modelamiento transaccional, dichas reglas limitarían su diseño. Esta herramienta cuenta con varias facultades que permiten hacer de una forma bastante fácil el desarrollo de proyectos de inteligencia de negocios, tales como: c) Diagramador orientado a Inteligencia de Negocios d) Generador de script de creación de tablas e) Generador de datos de prueba configurable f) Documentación por cada tema. g) Metadata guardada en archivos XMLs de fácil acceso y mantenimiento. Cualquiera de estas facilidades utilizadas en forma individual pierden parte de su valor, ya que es en el uso total de la herramienta que se ha considerado que se puede cubrir todos los requerimientos básicos para desarrollar el análisis de un proyecto de Inteligencia de Negocios 80 4. Observaciones, conclusiones y recomendaciones En este capitulo final se presentan las observaciones realizadas durante el desarrollo de la tesis, las conclusiones obtenidas y las recomendaciones que se han considerado pertinentes. 4.1. Observaciones e) El software libre contribuye a reducir significativamente los costos de desarrollo de software, tanto en cuanto al uso de herramientas de desarrollo como la reutilización de componentes desarrollados por terceros. f) El paradigma orientado a objetos resulta de gran ayuda cuando se intenta realizar aplicaciones de tipo graficas. Los conceptos de clases, instancias y asociación se reflejan en los tipos, elementos, relaciones en el lienzo de dibujo del modelo dimensional. g) Para la etapa de análisis se utilizó UML como lenguaje estándar para la construcción de los artefactos del software. h) La herramienta posee un alto grado de escalabilidad, esto debido a que el desarrollo de la misma ha sido pensado para que en el futuro se pueda añadir funcionalidades o características sin ningún problema. i) El prototipo del modelador dimensional fue desarrollado durante al final de la etapa de análisis y éste evolucionó hasta convertirse en el producto final. 81 4.2. Conclusiones a) Con las pruebas realizadas se ha logrado demostrar la utilidad del modelo genérico propuesto y de la arquitectura basada en web para la construcción de la herramienta que lo implementa. b) Se desarrolló una aplicación cliente con interfaz gráfica de usuario que permite realizar las tareas de modelamiento dimensional y administración de objetos conectándose a un servidor web. Dicha aplicación resulta bastante intuitiva pues su diseño se basó en el empleo de herramientas de desarrollo de software y aplicaciones de modelamiento de objetos. c) La herramienta desarrollada en todo momento valida la integridad de los objetos en la base de datos. Por ejemplo, si se desea eliminar un objeto, la herramienta automáticamente valida las dependencias, para que la integridad de datos no se vea afectada. d) El desarrollo de la herramienta permite concluir que el desarrollo de aplicaciones web utilizando estándares J2EE, en particular mediante la tecnología JSF, facilita de manera más rápida el desarrollo de la interfaz con el usuario, en lo referido a las páginas web, debido a que los elementos de las mismas son manejados mediante objetos. e) Durante el desarrollo de la aplicación se tuvo que realizar una interacción con el motor de generación de datos, con lo cual se demostró la flexibilidad de la herramienta para integrarse con otras herramientas. 4.3. Recomendaciones a) Por ser un producto desarrollado en Java, la herramienta se distribuye como una aplicación web que cumple con los estandares J2EE. Para mejorar el rendimiento, se sugiere instalarla en contenedores web de mejores prestaciones que el Tomcat, como lo son servidores de Oracle, BEA o IBM, por citar algunos de ellos. b) Antes de instalar el sistema en un entorno de producción, se recomienda realizar pruebas de rendimiento exhaustivos, especialmente en los casos que se utilice para dar soporte a usuarios geográficamente distribuidos. c) En el futuro se recomienda agregar a la herramienta la posibilidad de generar data para otros manejadores de bases de datos relacionales como por ejemplo Postgre, Informix, entre otros. d) El producto desarrollado tiene un amplio campo en el mercado debido a que las empresas están apuntando a desarrollar el concepto de inteligencia de negocios en mérito de crecer y madurar. e) El tema de este trabajo resulta interesante para cualquier estudiante de Ingeniería 82 Informática o de Ingeniería de Sistemas, por lo que sería muy conveniente implementar un área de estudio en la sección de Ingeniería Informática de la Pontifica Universidad Católica del Perú, en donde los alumnos y/o ex alumnos ayuden en la construcción de futuras versiones u otras herramientas de Inteligencia de Negocios. f) La herramienta es de por sí intuitiva, pero debería contar con una ayuda completa, no sólo de la herramienta, sino también de los conceptos básicos de inteligencia de negocios para poder realizar modelamientos eficientes y útiles. g) Para que los usuarios prefieran esta herramienta, ésta debe de satisfacer todas sus necesidades, por lo que se recomienda, en el futuro, implementar objetos que permitan realizar tareas adicionales que no han sido contemplados en la presente tesis, como por ejemplo un visualizador de objetos, un log de eventos de la herramienta y definición de datamining. 83 BIBLIOGRAFIA 1. [JVE 2002] Jesús Vegas. Arquitectura Web. 2002 2. [KIM 2002] Ralph Kimbal, 2002. The Data Warehouse Toolkit. Second Edition. John Wiley & Sons. Inc. 3. [INM 2002] W. H. Inmon. 2002. Building the data Warehouse. John Wiley & Sons. Inc. 4. [INEI 2005] http://www.inei.gob.pe/biblioineipub/bancopub/Inf/Lib5084/11.HTM 5. [SAG 2006] http://www.sagent.com 6. [ORA 2006] http://www.oracle.com/solutions/business_intelligence/index.html. Oracle Business Intelligence Solutions 7. [MST 2006] http://www.microstrategy.com. MicroStrategy home page. 8. [BUS 2006] http://www.businessobjects.com. Business Objects home page. 9. [ADS 2006] http://es.ascential.com/productos/ 10. [ERW 2007] http://www.knowledgestorm.com/search/keyword/Erwin%20Software/GAWJAN/Erwin%2 0Software/secname,ad/ad2,i/ad3,g/ad5,g/ad6,i 11. [DAT 2006] http://www.datatec.co.za/ 12. [SUN 2006] http://java.sun.com. 13. [APL 2007] http://java.sun.com/applets/ 14. [ECL 2007] http://www.eclipse.org/ 15. [TOM 2007] http://tomcat.apache.org/ 84 ANEXOS 1 ANEXO A. LISTA DE EXIGENCIAS Exigibilidad: E=Exigible, D=Deseable Dificultad: A=Alta, M=Media, B=Baja Prioridad: A=Alta, M=Media, B=Baja Nº EXIGENCIA Ex ig ib ili da d D ifi cu lta d Pr io rid ad PLATAFORMA, TIPO DE PRODUCTO Y COMPONENTES EXTERNOS 1 El producto consistirá en una aplicación web. E M A 2 El servidor web se desarrollará en lenguaje Java y se ejecutará sobre un contenedor web con soporte para Servlets(Apache Tomcat 5.5.12). E M A 3 La aplicación cliente se desarrollará en lenguaje Java con componentes Swing para el applet y para la parte web se utilizara JSF. E M A 4 La aplicación web se distribuirá mediante un archivo war estándar que pueda ser instalado como aplicación web en un contenedor web J2EE. E M B 5 Para el almacenamiento de información de los objetos se utilizará archivos de tipo XML. E M A 6 El producto se desarrollará utilizando la herramienta Eclipse 3.1. E M B 7 El tiempo de respuesta de búsquedas será menor a 2 minutos. E M A USUARIOS – FUNCIONALIDADES GENERALES 8 El producto manejará transacciones seguras. E M A 9 Confirmación de acciones mediante mensajes pop up. E B A 10 Permite el manejo de objetos que se podrán arrastrar y soltar (drag & drop). E A A 11 Permite la configuración de apariencia gráfica de cada elemento o tipo de elemento (color de fondo, letra, tamaño, tipo de línea). E B B 12 Permite aumentar y disminuir la escala de visualización de los diagramas (zoom +/- y zap) de los modelos. E A M 13 Permite la generación de documentación del modelo en formato HTML. E B M 14 Permite dejar notas en forma gráfica dentro del modelador. A M 15 Permite la importación de elementos entre modelos. E A A 16 Permite registro de descripciones sobre los elementos. E M M 17 Permite el bloqueo de un modelo en caso esté siendo modificado por otro usuario. E A A 18 Permite almacenar quien fue el usuario que creó un objeto. E M A 19 Permite almacenar quien fue el último usuario que modificó un objeto. E M A 20 Permite ver la relación de los objetos que han sido creados con la herramienta. E M M 21 Permite ver los datos de un objeto haciendo doble clic al mismo. E M M MODELADOR DIMENSIONAL 22 Permite el manejo de los objetos de manera gráfica. E A A 23 Permite la administración de elementos de la empresa: proyectos, dimensiones, tablas, atributos, jerarquías. E A A 24 Permite la administración de elementos del modelo: temas de análisis, facts, medidas, indicadores y relaciones. E A A 25 Permite organizar el modelo según proyectos-temas-facts-dimensiones. E A A 26 Permite el manejo de periodicidad de carga de una dimensión(política de tipo de actualización de la dimensión). E M M 27 Entorno gráfico para el diseño del modelo estrella. E A A 28 Permite la reutilización de elementos definidos previamente E A A 2 arrastrándolos y soltándolos (drag & drop) donde se requiera. 29 Permite configurar buenas prácticas por proyecto. E A A 30 Alarma para señalar el uso de malas prácticas de modelamiento dimensional en caso de que se incurra en alguna, esto según lo configurado previamente como buenas prácticas para el proyecto al que pertenece el tema. E A A 31 Permite definir atributos a las dimensiones. E A A 32 Permite definir jerarquías a las dimensiones. E A A 33 Permite definir indicadores a los temas de análisis E A A 34 Permite definir medidas a las facts. E A A 35 Permite agregar, modificar o eliminar los campos id, orden y nombre, campos pertenecientes a la dimensión vista como tabla, relacionados a un atributo de la dimensión. E A A 36 Permite agregar, modificar o eliminar los campos id, orden y nombre, campos pertenecientes a la fact vista como tabla, relacionados a una medida de la fact. E A A 37 Permite identificar las medidas como aditivas, semi-aditivas y no-aditivas. E M A 38 Permite la administración de formatos de datos para cada elemento. E M A 39 Permite la asignación de formatos de datos para cada elemento. E A A 40 Maneja todos los tipos de datos de acuerdo al RDBMS seleccionado. E M M 41 Generación de scritps para la creación de las tablas del modelo. E M M 42 Permite realizar el deshacer y rehacer en el modelador. E A M 43 Exportar el modelo a un formato gráfico (jpg). E A M 44 Identificación de usuario que tiene en uso un elemento. E M M 45 Permite la estimación del tamaño del DataWarehouse. E M M 46 Permite la administración de múltiples proyectos por empresa. E M A 47 Permite la administración de múltiples temas por proyecto de empresa. E M A 48 Registro de esfuerzo por modelo. D A M 49 Permite definir las medidas como operaciones entre campos. D M B GENERADOR DE DATOS 50 Desarrollo basado en DatProducer . E M A 51 Permite la configuración de reglas de formación de la data para cada campo de cada tabla (GUI Web). E A A 52 Permite la generación de datos para los siguientes RBDMS: MSSqlServer, Oracle. E A A 53 Permite la definición de reglas de generación cadena en base a listas predefinidas. E A A 54 Permite la definición de reglas de generación cadena en base a patrones definidos por el usuario. E A A 55 Permite la definición de reglas de generación numéricas, para formatos con tipos de dato numérico. E A A 56 Permite la definición de reglas de generación tipo fecha, para formatos con tipos de dato fecha. E A A 57 Permite seleccionar la o las facts que se desean generar. E A A 58 Por cada fact seleccionada para generar, se deben seleccionar todas las dimensiones relacionadas. E A A 59 Devuelve un archivo .zip con los resultados de la generación de datos. E M A 60 Permite agregar nuevas listas predefinidas a la herramienta. D M B METADATA 61 Almacenamiento de la data(modelo) de los elementos generados con la herramienta. E A A 62 Permite que cada objeto tenga su diccionario de datos. E A A 63 Permite realizar búsquedas para todos los objetos (elementos): temas de análisis, facts, dimensiones, proyectos, empresas. E A A 64 Permite editar los siguientes del tema: medidas, indicadores y relaciones. E A A 65 Permite editar los objetos pertenecientes a la dimensión: atributos y jerarquías. E M M 3 66 Permite mantener la integridad de los objetos al momento de eliminar alguno. E A A 67 Permite registro de descripciones y notas sobre los elementos. E M M 68 Permite la generación de reportes a partir de la metatada. D M M 69 Visualización gráfica de la dependencia de los objetos. - a partir de un objeto seleccionado. - a partir de un tipo de objeto. D M M 70 Permitir guardar la metadata de los objetos de manera encriptada. D M M SEGURIDAD 71 Permite el manejo de privilegios por objetos. D M B 72 Permite el manejo de privilegios por empresas. E M A 73 Permite el manejo de privilegios por proyectos. E M A 74 Permite la administración de múltiples empresas. E M M 75 Permite la administración de usuarios por empresa (nota una persona puede estar en varias empresas y solo tener un id). E M M 76 Permite la administración de perfiles. E M A 77 Permite la asignación de usuarios a empresas. E M M 78 Permite la administración de privilegios de usuarios por objetos. D M B 79 Permite la administración de accesos para la visualización de reportes. E A M 80 Navegador corporativo de todos los elementos E A A 81 Validación de nombre de usuario y contraseña para el acceso a la herramienta. E B A 82 Administración de usuarios. E M A 83 Activación y desactivación de usuarios. D B A 84 Administración de la contraseña del usuario. E M A 85 Administración de perfiles. E M A 86 Se contará con los siguientes perfiles predeterminados de usuario: Administrador de la Herramienta y Usuario. E B M 87 Restricción de funcionalidad por perfiles. E M M 88 Bloqueo de la herramienta por un tiempo configurable en caso de haber un intento de ingreso fallido a la herramienta por tercera vez consecutiva. D M M 89 Se generará un reporte dirigido al administrador de la herramienta consignando los intentos fallidos de acceso a la herramienta y a los componentes. D A M 90 Bloqueo de Componentes por concurrencia. E M A 91 Se permitirá conocer qué usuario creó los siguientes componentes: tema de análisis, flujo de transformación, e informes. E M M 92 Control del tiempo de inactividad de un usuario determinado. D A B 93 Control del máximo número de usuarios conectados a la herramienta simultáneamente. D A M 94 Reutilización de perfiles definidos en otros proyectos E M M 95 Creación de nuevos roles de proyecto utilizando como plantillas a roles previamente definidos, tanto fuera como dentro del proyecto E B M 96 Almacenamiento de contraseñas en formato encriptado. E M A 97 Encriptación de los datos transmitidos por Web E M M 98 Control de Privilegios de Acceso a Componentes (sólo lectura o escritura). E M M 99 Exige al usuario a cambiar su contraseña cada 45 días. D M M 1 ANEXO B. ESPECIFICACION DE REQUISITOS DE SOFTWARE INDICE 1. Introducción. ..................................................................................................3 1.1 Propósito......................................................................................................3 1.2 Ámbito del Sistema......................................................................................3 1.3 Definiciones, Acrónimos y Abreviaturas......................................................3 1.3.1 Definiciones ...............................................................................................3 1.3.2 Acrónimos..................................................................................................4 1.4 Referencias..................................................................................................4 1.5 Visión General de la ERS............................................................................5 2. Descripción General ......................................................................................5 2.1 Modelo de Casos de Uso ............................................................................5 2.1.1 Catálogo de Actores ....................................................................................6 2.1.2 Casos de Uso por Módulo ...........................................................................7 2.2 Características de los Usuarios.................................................................11 2.3 Suposiciones y Dependencias ..................................................................12 3. Especificación de Casos de Uso .................................................................13 3.1 Modulo Seguridad – Paquete Seguridad ..................................................13 3.1.1 Caso de Uso Administrar Roles del Sistema ............................................13 3.1.2 Caso de Uso Administrar Permisos...........................................................15 3.1.3 Caso de Uso Administrar Usuarios del Sistema .......................................16 3.1.4 Caso de Uso Administrar Roles de la empresa ........................................17 3.1.5 Caso de Uso Administrar Roles del proyecto............................................19 3.2 Módulo de Análisis – Paquete diseño de modelo dimensional .................21 3.2.1 Caso de Uso Administrar Empresa ...........................................................21 3.2.2 Caso de Uso Administrar Proyectos..........................................................23 3.2.3 Caso de Uso Configurar buenas prácticas de modelamiento...................25 3.2.4 Caso de Uso Administrar Objetos .............................................................26 3.2.5 Caso de Uso Administrar Temas...............................................................26 3.2.6 Caso de Uso Administrar Dimensiones.....................................................28 3.2.7 Caso de Uso Administrar Jerarquías.........................................................30 3.2.8 Caso de Uso Administrar Atributos. ..........................................................31 3.2.9 Caso de Uso Administrar Facts.................................................................33 3.2.10 Caso de Uso Administrar Medidas. .....................................................34 3.2.11 Caso de Uso Administrar Indicadores. ................................................35 3.2.12 Caso de Uso Administrar Formato de Datos.......................................36 3.2.13 Caso de Uso Asignar Formato de Datos a Campo.............................38 3.2.14 Caso de Uso Exportar Grafico.............................................................39 3.2.15 Caso de Uso Buscar Empresa ............................................................40 3.2.16 Caso de Uso Buscar Proyecto.............................................................40 3.2.17 Caso de Uso Buscar Tema..................................................................41 3.2.18 Caso de Uso Buscar Fact....................................................................42 3.2.19 Caso de Uso Buscar Dimensión..........................................................42 3.2.20 Caso de Uso Buscar Formato de datos ..............................................43 3.2.21 Caso de Uso Crear Tablas en Base de datos.....................................44 3.2.22 Caso de Uso Estimación del tamaño del Data Warehouse ................44 3.3 Módulo de Análisis - Paquete Generación de datos de prueba................46 3.3.1 Caso de Uso Configurar las regla de generación .....................................46 2 3.3.2 Caso de Uso Generar Datos de prueba....................................................48 3.4 Módulo de Análisis - Paquete Documentación..........................................49 3.4.1 Caso de Uso Generar Documento ............................................................49 4. Requisitos de Interfaces Externos ...............................................................50 4.1 Interfaces de Usuario.................................................................................50 4.2 Interfaces Hardware ..................................................................................50 4.3 Interfaces Software....................................................................................50 4.4 Interfaces de Comunicación ......................................................................50 4.5 Seguridad...................................................................................................50 1. Caso de Uso “Validar Usuario”..................................................................51 3 1. Introducción. El presente documento “Especificación de Requisitos de software” contiene el total de requisitos encontrados para la elaboración de del módulo de Análisis del proyecto “Elaboración de una herramienta integrada de inteligencia de negocios”. Se presenta mediante la técnica de Casos de uso y se especifican los requisitos de la herramienta para su mejor entendimiento. Este documento ha sido elaborado siguiendo las normas recomendadas en el documento “IEEE Recommended Practice for Software Requirements Specification IEEE Std 830-1998”. 1.1 Propósito El objeto del presente documento es definir las funcionalidades y restricciones de la herramienta que se desea construir. Se busca especificar de manera formal todas las funcionalidades y restricciones del sistema a construir, para evitar así dudas o confusiones que puedan existir por parte del cliente final o en el equipo desarrollador sobre alguna funcionalidad de la aplicación. 1.2 Ámbito del Sistema Se presentan los requerimientos única y exclusivamente para el módulo de análisis de la herramienta mencionada en la introducción. Este proyecto ha sido propuesto con la finalidad de implementar una solución que gestione el análisis para el manejo y desarrollo de DataWarehouse. La motivación que impulsa este trabajo es elaborar una herramienta que facilite y mejore el acceso a la información estratégica de una organización usando como base los conceptos de Inteligencia de Negocios. La herramienta en general permitirá manejar de manera flexible todas las operaciones relacionadas a la visualización y acceso a la información. 1.3 Definiciones, Acrónimos y Abreviaturas 1.3.1 Definiciones Dimensión Es la descripción de una dimensión de la base de datos. Contiene la información de sus campos (metadata) Atributo Suele representar las características de una dimensión. Cada atributo puede relacionarse hasta con 3 campos de la de la tabla asociada: Campo Id: Se refiere al campo que será utilizado para hacer las consultas dentro del sistema. Campo Nombre: Es el campo que servirá para ser mostrado en los informes o gráficos. Orden: Es el campo que se utilizará para ordenar a los regstros de una dimensión. 4 Jerarquía Agrupa a atributos que pertenecen a una o más dimensiones, y permite la navegabilidad en el informe. Hechos Son los campos de la fact. Indicador Elemento de medida definido por los hechos. Se expresa mediante fórmulas matemáticas que tienen como operándolos a los campos de la fact. Filtro Se distinguen los tipos de filtro: Por rangos: Los que se encuentran en el rango por valor numérico o cadena Los que no se encuentran en el rango por valor numérico o cadena. Posición : Los n primeros Los n últimos Los que no son n primeros Los que no son n últimos Se encuentra en Lista : Solo los que pertenecen a la lista No se encuentra en la Lista Compuesto: es la agrupación de uno o más filtros simples o compuestos. Tema Es el conjunto de Facts y Dimensiones relacionadas a un tema específico del negocio. Informe En la agrupación de los siguientes elementos: Atributos Indicadores Filtros Jerarquías Muestra la información que el usuario solicita. Proyecto Es la agrupación de uno o más temas de análisis. Empresa Es la agrupación de temas y dimensiones. Rol de Sistema Es un conjunto de privilegios que competen al sistema. Los roles establecen diferentes niveles de acceso a la aplicación. Rol de Proyecto Es un conjunto de privilegios que competen al proyecto. Perfil Es el conjunto de uno o más roles del sistema y algún rol de proyecto asociado a un proyecto. Usuario Es la persona que usa la aplicación. Un usuario puede tener uno o más perfiles. Gráfico Contiene los mismos elementos que un Informe, sin embargo se presenta visualmente distinto. Objetos del Sistema Son todos los Miembros, Filtros, Indicadores, Hechos, Dimensiones, Roles, Perfil, Jerarquías, Informes y Gráficos, definidos en este documento. Objetos del Informe Son todos los Miembros, Filtros, Indicadores y Jerarquías definidos en este documento. 1.3.2 Acrónimos ERS Especificación de Requisitos de Software 1.4 Referencias • IEEE Recommended Practice for Software Requirements Specification IEEE Std 830-1998 5 1.5 Visión General de la ERS Este documento consta de 3 partes. Esta primera parte introductoria da una visión general de lo que se quiere lograr con el Sistema con el uso de la ERS. La segunda parte hace una descripción general de las funciones que realizará el sistema sin entrar mucho en detalle, pues sólo incluye las principales tareas y se muestran las relaciones y dependencias que puedan existir entre los módulos más importantes. Finalmente, en la tercera parte se detallará paso a paso como funciona cada módulo del sistema con el fin de cubrir con todos los requerimientos. 2. Descripción General Esta herramienta deberá permitir a los desarrolladores de proyectos de inteligencia de negocios elaborar eficientemente su labor. Para esto se contará con un modelador gráfico que permita diseñar visualmente los modelos de datos que se usarán en el DataWarehouse. La administración de la metadata se realizará mediante ventanas emergentes donde se podrán rellenar los datos propios de una dimensión, una fact, una empresa, etc. Adicionalmente, la herramienta deberá permitir que los sistemas de almacenamiento de datos (DataWarehouses) se puedan diseñar, crear, poblar (con datos simulados) y probar de un modo sencillo para el usuario. En esta sección se presenta una descripción a alto nivel del sistema para la herramienta propuesta. Se presentará el modelo de casos de uso (modelo que muestra la funcionalidad de la herramienta), las características de los usuarios, las suposiciones y dependencias del sistema. Para poder personalizar los tipos de usuarios a la herramienta, estos serán divididos de acuerdo a sus funcionalidades. Adicionalmente se presenta como un módulo adicional, el módulo de seguridad, que permitirá personalizar, en caso lo requieran los clientes, los permisos por actor. 2.1 Modelo de Casos de Uso En esta sección se presentan los diagramas de casos de uso del sistema obtenidos durante el proceso de especificación de requisitos, los cuales permiten mostrar a alto nivel las funcionalidades que el sistema realizará. Inicialmente, se indica el catálogo de actores que interactúan con el sistema y posteriormente la descripción de cada uno de los paquetes con sus respectivos diagramas de casos de uso. 6 2.1.1 Catálogo de Actores Administrador Sistema El administrador del sistema puede registrar nuevos usuarios en el sistema, configurar los perfiles de usuario y asignarles perfiles a los usuarios dentro del ámbito del sistema. Además puede configurar conexiones a Base de Datos y empresas. Administrador del Proyecto Es el encargado de diseñar las jerarquías, programar los indicadores, cargar las dimensiones de la base de datos, crear miembros y especificar los hechos con los que trabaja el sistema, dentro del contexto de un proyecto, en una empresa establecida. Arquitecto del Sistema Se le denomina a la persona cuya tarea es la de crear los objetos con los que se elaborarán los informes. Analista Persona encargada de crear, modificar y ejecutar paquetes de transformación de datos usando el software. También creará los temas de análisis, que representarán vistas del negocio que serán analizadas. Constructor Se le denomina a la persona cuya tarea es la de elaborar gráficos o informes con los objetos que ha diseñado el Arquitecto del Sistema. Observador Es aquel usuario que solo consultará los informes o gráficos pero no efectuará ningun cambio en ellos. Usuario El usuario es aquel encargado de desarrollar datamarts, asistido por la herramienta. Debe tener conocimientos avanzados de computación y conocimientos en el análisis en Data Warehouses y datamarts. Usuario Administrador El usuario administrador es aquel encargado de los perfiles de las aplicaciones y sistemas a realizar. Debe tener conocimientos avanzados de computación y una capacitación en el manejo de la herramienta y de los modelos de bases de datos, además de tener un papel directivo en el área, tal como Administrador de Bases de Datos. Generador de datos El usuario generador en base a las reglas que ha sido definidas previamente, generará datos que permitan simular data del negocio. Debe tener conocimientos de base de datos y del 7 negocio. Probador (Tester) Este usuario tendrá a su cargo la parte de de probar las características del modelo en motores de base de datos así como la generación de datos. No podrá modificar la estructura de los datos ni tampoco las reglas de generación de datos, sino solo acceder a la metadata a modo de solo lectura. Administrador del Sistema Administrador del Proyecto Arquitecto del Sistema Usuario analista Generador de Datos Probador ConstructorObservador Usuario 2.1.2 Casos de Uso por Módulo MODULO SEGURIDAD Paquete Seguridad Este paquete contiene los casos de uso relacionados con la administración de los usuarios, sus perfiles (roles) y los permisos contenidos en estos. Mientras que los perfiles son únicos por usuario, estos perfiles serán formados por varios permisos, cada uno sobre funcionalidades de la herramienta. La funcionalidad de este paquete va más allá del alcance de la presente tesis, debido a que también interactúa con los demás módulos de la herramienta, tales como Extracción y Explotación. 8 Administrar permisos Administrar usuarios del sistema Administrar roles de sistema Administrador del Proyecto (from Use Case View) Administrar roles del proyecto Administrador del Sistema (from Use Case View) Administrar roles de la empresa <> 9 MÓDULO ANÁLISIS Paquete Diseño del modelo dimensional Este paquete involucra a los casos de uso propios del diseño del modelo dimensional. Se muestra los casos de uso que permiten la creación de un proyecto, perteneciente a una empresa, un tema de análisis dentro de dicho proyecto y añadir todos los objetos que desee el usuario al tema, como Facts, Dimensiones, atributos, medidas, jerarquías o indicadores. El uso de la herramienta comienza en la creación de un proyecto, dentro de una empresa (la cual debe ser única), el cual se crea con un tema de análisis por defecto. En un tema de análisis se puede comenzar a crear gráficamente el modelo dimensional. Administrar Medidas Administrar Proyectos Administrar Temas Administrar Dimensiones Administrar Atributos Administrar Jerarquias Usuario (from Seguridad) Administrar Facts <> <> <> 10 Paquete Generación de datos de prueba El paquete de simulación permitirá al usuario definir reglas de generación de campos para cada tabla del modelo, las cuales pueden ser o Dimensiones o Facts, y, en base a dichas reglas de generación el usuario podrá solicitar la generación de data de prueba como sentencias de inserción las cuál podrá insertar en una base de datos, la cuales se podrán guardar o ejecutar inmediatamente. Paquete Documentación El paquete documentación permite al usuario documentar un tema de análisis en base a la información que se tiene del mismo en los archivos fuentes. 11 2.2 Características de los Usuarios Administrador del Proyecto Es el encargado de diseñar las jerarquías, programar los indicadores , cargar las dimensiones de la base de datos, crear miembros y especificar los hechos con los que trabaja el sistema. Administrador del Sistema El administrador del sistema será un usuario con conocimientos técnicos, por lo tanto deberá tener avanzados conocimientos sobre computación. Éste será el encargado de administrar a los demás usuarios, así como configurar sus accesos al sistema. Además podrá configurar las conexiones al repositorio de datos. Arquitecto del Sistema Se considera en este grupo a los encargados de diseñar la estructura de los informes, es decir, el manejo de aquellos objetos en base a los cuales se crean los informes (dentro de la aplicación, estos serán llamados jerarquías, indicadores, dimensiones, miembros y hechos). El arquitecto del sistema deberá tener conocimiento del modelo dimensional que se empleará para modelar un informe o un gráfico. Analista En este grupo estarán los encargados de crear, modificar y ejecutar paquetes de transformación de datos usando el software. Debe ser una persona que tenga el conocimiento técnico adecuado pero que también conozca de la lógica del negocio para poder obtener los resultados esperados. Constructor Se considera así a todos los usuarios cuya tarea sea la de elaborar gráficos o informes con los objetos que ha diseñado el Arquitecto del Sistema. 12 Observador Son todos aquellos usuarios del sistema que consultan los informes y los gráficos que han sido creados por el Constructor y el Arquitecto Usuario El usuario es aquel encargado de desarrollar el Sistema de Data Warehouse, asistido por la herramienta. Debe tener conocimientos avanzados de computación y conocimientos en el análisis en Data Warehouse. Usuario Administrador El usuario administrador es aquel encargado de los perfiles de las aplicaciones y sistemas a realizar. Debe tener conocimientos avanzados de computación y una capacitación en el manejo de la herramienta y de los modelos de bases de datos, además de tener un papel directivo en el área, tal como Administrador de Bases de Datos. Generador de datos El usuario generador en base a las reglas que ha sido definidas previamente, generará datos que permitan simular data del negocio. Debe tener conocimientos de base de datos y del negocio. Probador (Tester) Este usuario tendrá a su cargo la parte de probar las características del modelo en motores de base de datos así como la generación de datos. No podrá modificar la estructura de los datos ni tampoco las reglas de generación de datos, sino solo acceder a la metadata a modo de solo lectura. 2.3 Suposiciones y Dependencias • Se asume que se cuenta con las licencias necesarias para la respectiva instalación de la herramienta. • Se asumirá que el servidor permanecerá en funcionamiento durante el uso de la herramienta. • Cualquier petición de cambios en la especificación debe ser aprobada por todas las partes. • Se asume que los requisitos descritos en este documento son estables una vez que sea aprobado. • La herramienta se desarrollará utilizando una arquitectura web. 13 3. Especificación de Casos de Uso Esta sección contiene a nivel detallado la funcionalidad y restricciones del sistema. El detalle de la funcionalidad se determina con la especificación de casos de uso y las restricciones a la funcionalidad se especifican con los requisitos de interfaces externos, los requisitos de rendimiento, los requisitos de desarrollo y los miembros de la herramienta. 3.1 Modulo Seguridad – Paquete Seguridad Administrar permisos Administrar usuarios del sistema Administrar roles de sistema Administrador del Proyecto (from Use Case View) Administrar roles del proyecto Administrador del Sistema (from Use Case View) Administrar roles de la empresa <> 3.1.1 Caso de Uso Administrar Roles del Sistema Permite al usuario administrar los datos de los roles o perfiles que utilizan los usuarios la herramienta. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1 Flujo Básico El caso de uso se inicia con el usuario. 1. El usuario selecciona la opción “Administrar perfiles”. 2. El sistema muestra las opciones “Crear Perfil”, “Buscar Perfil”. 3. El usuario selecciona la opción “Crear Perfil”. 4. El sistema verifica que el usuario tenga privilegios de creación de Perfiles. 5. Si la verificación falla 14 a. El sistema muestra un mensaje indicando que el usuario no tiene permisos de creación de perfiles. b. El caso de uso termina. 6. El sistema muestra un formulario para la creación de Perfiles. Dicho formulario contiene los siguientes campos: nombre, descripción, si está habilitado y los permisos que lo conforman. 7. El usuario ingresa los campos solicitados del perfil. El usuario selecciona la opción “Guardar Perfil”. 8. El caso de uso termina. 1.2 Flujos Alternativos i. Modificar Perfil 1. El usuario selecciona “Buscar Perfil”. 2. El sistema muestra una lista de los perfiles registrados 3. El usuario selecciona el perfil que desea revisar. 4. El sistema muestra un formulario con los datos del perfil. 5. El usuario cambia los datos que crea convenientes. 6. El usuario selecciona “grabar”. 7. El sistema verifica que los datos ingresados sean correctos. 8. El sistema emite un mensaje de verificación. 9. El usuario selecciona “aceptar”. 10. El caso de uso termina. ii. Eliminar Perfil 1. El usuario selecciona la opción “Buscar Perfil”. 2. El sistema muestra los perfiles registrados. 3. El usuario selecciona los perfiles que desea eliminar. 4. Si un perfil está siendo usado por algún usuario no se podrá eliminar al perfil. 5. El caso de uso finaliza. 2. Requerimientos Especiales El usuario debe ser administrador del sistema. 3. Precondiciones Validación de usuario El usuario debe haber ingresado al sistema, al módulo de seguridad. Para los casos de Crear y Eliminar perfiles el usuario debe tener privilegios de Administración de Perfiles, el cual solo es tenido por los administradores de Sistema. 4. Post condiciones Ninguna. 5. Puntos de extensión 15 Administrar permisos. 3.1.2 Caso de Uso Administrar Permisos Permite al usuario administrar los permisos de un perfil o rol. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1 Flujo Básico El caso de uso se inicia con el usuario. 1. El sistema muestra la relación de permisos del perfil abierto. 2. El usuario selecciona la opción “Crear Permiso”. 3. El sistema muestra un formulario para la creación de Permisos. Dicho formulario contiene los siguientes campos: nombre, descripción, código de funcionalidad, nivel de acceso y módulo. 4. El usuario ingresa los campos solicitados del permiso. El usuario selecciona la opción “Guardar Permiso”. 5. El caso de uso termina. 1.2 Flujos Alternativos i. Modificar Permiso 1. El sistema muestra una lista de los permisos registrados en el perfil 2. El usuario selecciona el permiso que desea revisar. 3. El sistema muestra un formulario con los datos del permiso. 4. El usuario cambia los datos que crea convenientes. 5. El usuario selecciona “grabar”. 6. El sistema verifica que los datos ingresados sean correctos. 7. El sistema emite un mensaje de verificación. 8. El usuario selecciona “aceptar”. 9. El caso de uso termina. ii. Eliminar Permiso 1. El sistema muestra los perfiles registrados. 2. El usuario selecciona los permisos que desea eliminar. 3. Si un permiso pertenece a un perfil que está siendo usado por algún usuario no se verán los cambios hasta que el usuario vuelva a ingresar a la aplicación. 4. El caso de uso finaliza. 2. Requerimientos Especiales El usuario debe ser administrador del sistema. 3. Precondiciones Validación de usuario El usuario debe haber ingresado al sistema, al módulo de seguridad. 16 Perfil Abierto El usuario debe tener abierto un perfil, el cual estará modificando. Para los casos de Crear y Eliminar perfiles el usuario debe tener privilegios de Administración de Perfiles, el cual solo es tenido por los administradores de Sistema. 4. Post condiciones Ninguna. 5. Puntos de extensión Ninguno. 3.1.3 Caso de Uso Administrar Usuarios del Sistema Permite al usuario administrar los datos de los usuarios que utilizan la herramienta. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1 Flujo Básico El caso de uso se inicia con el usuario. 1. El usuario selecciona la opción “Administrar usuarios”. 2. El sistema muestra las opciones “Crear Usuario”, “Buscar Usuario”. 3. El usuario selecciona la opción “Crear Usuario”. 4. El sistema verifica que el usuario tenga privilegios de creación de Usuarios. 5. Si la verificación falla a. El sistema muestra un mensaje indicando que el usuario no tiene permisos de creación de usuarios. b. El caso de uso termina. 6. El sistema muestra un formulario para la creación de Usuarios. Dicho formulario contiene los siguientes campos: nombre (nick), descripción, nombre y apellido, contraseña, correo electrónico, estado, perfil y si está habilitado para acceder a cada módulo. 7. El usuario ingresa los campos solicitados del usuario. El usuario selecciona la opción “Guardar Usuario”. 8. El caso de uso termina. 1.2 Flujos Alternativos i. Modificar Usuario 1. El usuario selecciona “Buscar Usuario”. 2. El sistema muestra una lista de los usuarios registrados 3. El usuario selecciona el usuario que desea revisar. 4. El sistema muestra un formulario con los datos del usuario. 5. El usuario cambia los datos que crea convenientes. 6. El usuario selecciona “grabar”. 7. El sistema verifica que los datos ingresados sean correctos. 17 8. El sistema emite un mensaje de verificación. 9. El usuario selecciona “aceptar”. 10. El caso de uso termina. ii. Eliminar Usuario 1. El usuario selecciona la opción “Buscar Usuario”. 2. El sistema muestra los usuarios registrados. 3. El usuario selecciona los usuarios que desea eliminar. 4. Si un usuario está conectado, o se tiene objetos creados o modificados por dicho usuario el usuario no se podrá eliminar al usuario. 5. El caso de uso finaliza. 2. Requerimientos Especiales El usuario debe ser administrador del sistema. 3. Precondiciones Validación de usuario El usuario debe haber ingresado al sistema, al módulo de seguridad. Para los casos de Crear y Eliminar usuarios el usuario debe tener privilegios de Administración de Usuarios, el cual solo es tenido por los administradores de Sistema. 4. Post condiciones Ninguna. 5. Puntos de extensión Ninguno. 3.1.4 Caso de Uso Administrar Roles de la empresa Permite al usuario administrar los permisos correspondientes a empresas de un usuario. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1 Flujo Básico El caso de uso se inicia con el usuario. 1. El sistema muestra la relación de empresas a las que tiene acceso un usuario. 2. El usuario selecciona la opción “Añadir empresa”. 3. El sistema verifica que el usuario tenga privilegios de creación de perfiles de empresas. 4. Si la verificación falla a. El sistema muestra un mensaje indicando que el usuario no tiene permisos de creación de roles de empresa. b. El caso de uso termina. 18 5. El sistema muestra un formulario para la creación de roles de empresas. Dicho formulario contiene los siguientes campos: perfil. 6. El usuario ingresa el campo solicitado por la asociación. El usuario selecciona la opción “Guardar”. 7. El caso de uso termina. 1.2 Flujos Alternativos i. Modificar Perfil 1. El sistema muestra la relación de empresas a las que tiene acceso un usuario. 2. El usuario selecciona la relación que desea revisar. 3. El sistema muestra un formulario con el perfil actual. 4. El usuario cambia el perfil de la empresa. 5. El usuario selecciona “grabar”. 6. El sistema verifica que los datos ingresados sean correctos. 7. El sistema emite un mensaje de verificación. 8. El usuario selecciona “aceptar”. 9. El caso de uso termina. ii. Eliminar Perfil 1. El sistema muestra la relación de empresas a las que tiene acceso un usuario. 2. El usuario selecciona las empresas que desea eliminar. 3. Si un usuario está conectado a dicha empresa, la asociación se mantendrá para ese usuario. 4. El caso de uso finaliza. 2. Requerimientos Especiales El usuario debe ser administrador del sistema. 3. Precondiciones Validación de usuario El usuario debe haber ingresado al sistema, al módulo de seguridad. Para los casos de Crear y Eliminar roles de empresa el usuario debe tener privilegios de Administración de Roles de Empresa, el cual solo es tenido por los administradores de Sistema. Usuario abierto El usuario tiene que estar abierto para modificar los perfiles de las empresas vinculadas a él. 4. Post condiciones Ninguna. 5. Puntos de extensión Ninguno. 19 3.1.5 Caso de Uso Administrar Roles del proyecto Permite al usuario administrar los permisos correspondientes a proyectos de empresas de un usuario. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1 Flujo Básico El caso de uso se inicia con el usuario. 1. El sistema muestra la relación de proyectos a las que tiene acceso un usuario. Estos proyectos pertenecen a empresas del usuario 2. El usuario selecciona la opción “Añadir proyecto”. 3. El sistema verifica que el usuario tenga privilegios de creación de perfiles de proyectos. 4. Si la verificación falla a. El sistema muestra un mensaje indicando que el usuario no tiene permisos de creación de roles de proyectos. b. El caso de uso termina. 5. El sistema muestra un formulario para la creación de roles de proyectos. Dicho formulario contiene los siguientes campos: perfil. 6. El usuario ingresa el campo solicitado por la asociación. El usuario selecciona la opción “Guardar”. 7. El caso de uso termina. 1.2 Flujos Alternativos i. Modificar Perfil 1. El sistema muestra la relación de proyectos a las que tiene acceso un usuario. 2. El usuario selecciona la relación que desea revisar. 3. El sistema muestra un formulario con el perfil actual. 4. El usuario cambia el perfil del proyecto. 5. El usuario selecciona “grabar”. 6. El sistema verifica que los datos ingresados sean correctos. 7. El sistema emite un mensaje de verificación. 8. El usuario selecciona “aceptar”. 9. El caso de uso termina. ii. Eliminar Perfil 1. El sistema muestra la relación de proyectos a los que tiene acceso un usuario. 2. El usuario selecciona los proyectos que desea eliminar. 3. Si un usuario está conectado a dicho proyecto, la asociación se mantendrá para ese usuario. 4. El caso de uso finaliza. 20 2. Requerimientos Especiales El usuario debe ser administrador del proyecto. 3. Precondiciones Validación de usuario El usuario debe haber ingresado al sistema, al módulo de seguridad. Para los casos de Crear y Eliminar roles de empresa el usuario debe tener privilegios de Administración de Roles de Proyecto, el cual solo es tenido por los administradores de Sistema y de Proyecto. Usuario abierto El usuario tiene que estar abierto para modificar los perfiles de las empresas vinculadas a él. 4. Post condiciones Ninguna. 5. Puntos de extensión Ninguno. 21 3.2 Módulo de Análisis – Paquete diseño de modelo dimensional Administrar empresas Administrador del Sistema (from Use Cas...) Administrar atributos Administrar jerarquías Administrar medidas Administrar proy ectos Administrar dimensiones <> <> Administrar f acts Administrar temas <> Administrar indicadores <> Administrador del proy ecto (from Use Cas...) Conf igurar buenas prácticas de modelamiento Usuario de la Herramienta Administrar objetos Administrar f ormato de datos <> Asignar f ormato de datos a campo <> Exportar gráf ico Usuario (from Use Cas...) Crear tablas en base de datos buscar empresa <> buscar proy ecto <> buscar tema <> buscar f ormato de datos <> <> buscar f act <> buscar dimensión <> 3.2.1 Caso de Uso Administrar Empresa Permite al usuario administrar los datos de la o las empresas que van a usar la herramienta. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 22 1.1 Flujo Básico El caso de uso se inicia con el usuario. 1. El usuario selecciona la opción “Administrar empresas”. 2. El sistema muestra las opciones “Crear Empresa”, “Buscar Empresa”. 3. El usuario selecciona la opción “Crear Empresa”. 4. El sistema verifica que el usuario tenga privilegios de creación de Empresas. 5. Si la verificación falla a. El sistema muestra un mensaje indicando que el usuario no tiene permisos de creación de empresas. b. El caso de uso termina. 6. El sistema muestra un formulario para la creación de Empresas. Dicho formulario contiene los siguientes campos: nombre de la empresa, dirección de la empresa, razón social, Rubro de la empresa, página web de la empresa, DNI de representante legal y nombres (nombres y apellidos) de representante legal. 7. El usuario ingresa el los campos solicitados de la empresa. 8. El usuario selecciona la opción “Guardar Empresa”. 9. El caso de uso termina. 1.2 Flujos Alternativos i. Modificar Empresa 1. El usuario selecciona “Buscar Empresa”. 2. El sistema invoca al caso de uso “Buscar Empresas”. 3. El usuario selecciona el la empresa que desea abrir. 4. Si el usuario no tiene permiso para acceder a la empresa. a. El sistema muestra un mensaje indicando que el usuario no tiene permiso de modificación de datos de la empresa. b. El caso de uso termina. 5. El sistema muestra un formulario con los datos de la empresa. 6. El usuario cambia los datos que crea convenientes. 7. El usuario selecciona “grabar”. 8. El sistema verifica que los datos ingresados sean correctos. 9. El sistema emite un mensaje de verificación. 10. El usuario selecciona “aceptar”. 11. El caso de uso termina. ii. Eliminar Empresa 1. El usuario selecciona la opción “Buscar Empresa”. 2. El sistema invoca al caso de uso “Buscar Empresa”. 3. El sistema muestra las empresas. 4. El usuario selecciona las empresas que desea eliminar. 5. Si la empresa tiene proyectos grabados que no están siendo usados: 23 a. Si los proyectos están vacío, emite un mensaje de advertencia indicando que estos será eliminado definitivamente del sistema. b. Si sus proyectos tienen contenido, el sistema emite un mensaje de verificación indicando que se eliminarán todos los elementos que contenga dicho proyecto. c. El usuario confirma la eliminación las empresas seleccionadas. d. El sistema elimina la empresa. e. El caso de uso finaliza. 6. Si la empresa tiene proyectos que están siendo usado por algún usuario, el sistema muestra un mensaje comunicando que no puede eliminar la empresa. 7. El caso de uso finaliza. 2. Requerimiento Especiales Ninguno 3. Precondiciones Validación de usuario El usuario debe haber ingresado al sistema. Para los casos de Crear y Eliminar empresas el usuario debe tener privilegios de Administración de Empresas. 4. Post condiciones Ninguna. 5. Puntos de extensión Ninguno. 3.2.2 Caso de Uso Administrar Proyectos Permite al usuario configurar los proyectos existentes en el sistema, así como crear nuevos y eliminar existentes. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1 Flujo Básico El caso de uso se inicia con el usuario. 1. El usuario selecciona la opción “Administrar proyectos”. 2. El sistema muestra las opciones “Crear Proyecto”, “Abrir Proyecto”, “Eliminar Proyecto”. 3. El usuario selecciona la opción “Crear Proyecto”. 4. El sistema verifica que el usuario tenga privilegios de creación de Proyectos. 5. Si la verificación falla a. El sistema muestra un mensaje indicando que el usuario no tiene permisos de creación de proyectos. b. El caso de uso termina. 24 6. El sistema muestra un formulario para la creación de Proyectos. Dicho formulario contiene los siguientes campos: empresa a la que pertenece el proyecto, nombre del proyecto, descripción del proyecto. 7. El usuario ingresa la empresa a la que pertenece el proyecto, el nombre y la descripción del proyecto. 8. El usuario selecciona la opción “Guardar Proyecto”. 9. El caso de uso termina. 1.2 Flujos Alternativos 1. Abrir Proyecto 6. El usuario selecciona “Abrir Proyecto”. 7. El sistema muestra los proyectos existentes. 8. El usuario selecciona el proyecto que desea abrir. 9. Si el usuario no tiene permiso para acceder al proyecto. a. El sistema muestra un mensaje indicando que el usuario no tiene permiso de modificación del proyecto seleccionado. b. El caso de uso termina. 10. El sistema abre el proyecto. 11. El caso de uso termina. 2. Eliminar Proyecto 1. El usuario selecciona la opción “Eliminar Proyecto”. 2. Si el proyecto no está siendo usado por algún usuario: a. Si el proyecto está vacío, emite un mensaje de advertencia indicando que el proyecto será eliminado definitivamente del sistema. b. Si el proyecto tiene contenido, el sistema emite un mensaje de verificación indicando que se eliminarán todos los elementos que contenga dicho proyecto. c. El usuario confirma la eliminación del proyecto abierto. d. El sistema elimina el proyecto. e. El caso de uso finaliza. 3. Si el proyecto está siendo usado por algún usuario, el sistema muestra un mensaje comunicando que no puede eliminar el proyecto. 4. El caso de uso finaliza. 3. Cerrar Proyecto 1. El usuario selecciona la opción “Cerrar proyecto”. 2. El sistema muestra un mensaje de confirmación. 3. El usuario selecciona la opción “Sí”. 4. El sistema guarda los cambios efectuados y cierra el proyecto. 2. Requerimiento Especiales 25 Ninguno 3. Precondiciones Validación de usuario El usuario debe haber ingresado al sistema. Para los casos de Crear y Eliminar proyectos el usuario debe tener privilegios de Administración de Proyectos. 4. Post condiciones Ninguna. 5. Puntos de extensión Ninguno. 3.2.3 Caso de Uso Configurar buenas prácticas de modelamiento Permite al usuario configurar la forma en que el sistema validará las buenas prácticas de modelamiento. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1. Flujo Básico El caso de uso se inicia con el usuario. 1. El usuario selecciona la opción “Configurar buenas prácticas de modelamiento” 2. El sistema muestra un formulario con los siguientes ítems: Exigir sólo una dimensión tiempo asociada a una fact, No permitir medidas con campos no numéricos, No permitir la relación entre dimensiones, No permitir más de un campo como llave primaria de una dimensión. Cada uno de estos ítems tienen estas tres opciones: “Deshabilitado”, “Sólo mensaje de advertencia”, “Habilitado”. 3. El usuario selecciona la opción deseada por cada ítem. 4. El sistema muestra los campos para la personalización de identificadores: Notación postfija, Notación prefija y un campo para escribir la cadena constante. 5. El usuario ingresa la regla de identificadores a aplicar en el proyecto. 6. El caso de uso termina. 2. Requerimiento Especiales Ninguno 3. Precondiciones Validación de usuario: El usuario debe haber ingresado al sistema. Proyecto Abierto: El usuario debe haber abierto un proyecto. 4. Post condiciones Ninguna. 26 5. Puntos de extensión Ninguno. 3.2.4 Caso de Uso Administrar Objetos Permite al usuario visualizar las características del objeto. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1. Flujo Básico El caso de uso se inicia con el usuario. 1. El usuario selecciona la opción “Propiedades” sobre un objeto. 2. El sistema muestra la siguiente información sobre el objeto: Usuario creador, Fecha de creación, fecha de modificación, Usuario que usa al objeto al momento de la consulta. 3. El usuario selecciona la opción “Aceptar”. 4. El caso de uso termina. 2. Requerimiento Especiales Ninguno 3. Precondiciones Validación de usuario: El usuario debe haber ingresado al sistema. Proyecto Abierto: El usuario debe haber abierto un proyecto. 4. Post condiciones Ninguna. 5. Puntos de extensión Ninguno. 3.2.5 Caso de Uso Administrar Temas Permite al usuario configurar los temas existentes en el sistema, así como crear nuevos y eliminar existentes. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1. Flujo Básico El caso de uso se inicia con el usuario. 1. El usuario selecciona la opción “Crear Tema”. 2. El sistema muestra un formulario para la creación de Temas. Dicho formulario contiene los siguientes campos: nombre y descripción. 3. El usuario ingresa el nombre y la descripción del tema. 4. El usuario selecciona la opción “Guardar Tema”. 27 5. El sistema crea el tema y los muestra en la relación de temas creados del proyecto abierto. 6. El caso de uso termina. 1.2. Flujos Alternativos i. Cerrar Tema 1. El usuario selecciona la opción “Cerrar Tema”. 2. El sistema muestra un mensaje de confirmación. 3. El usuario selecciona la opción “Sí”. 4. El sistema guarda los cambios efectuados y cierra el tema abierto. ii. Modificar tema 1. El usuario selecciona la opción “Modificar Tema” sobre un Tema de análisis. 2. El sistema muestra el formulario con los siguientes campos del tema: nombre y descripción. 3. El usuario hace los cambios correspondientes. 4. El usuario selecciona “grabar”. 5. El sistema pide confirmación. 6. El usuario selecciona “aceptar”. 7. El sistema guarda los cambios efectuados. iii. Eliminar Tema 1. El usuario selecciona la opción “Eliminar Tema” sobre un Tema de análisis. 2. Si el Tema no esta siendo usado: a. El sistema muestra un mensaje de verificación. b. El usuario selecciona la opción “Sí“. c. El sistema elimina el Tema del proyecto. 3. Si el Tema está siendo usado por otro usuario, se le notifica al usuario que no puede eliminar dicho Tema. 4. El caso de uso termina. 2. Requerimiento Especiales Ninguno 3. Precondiciones Validación de usuario: El usuario debe haber ingresado al sistema. Proyecto Abierto: El usuario debe haber abierto un proyecto. 4. Post condiciones Ninguna. 5. Puntos de extensión Ninguno. 28 3.2.6 Caso de Uso Administrar Dimensiones. Permite al usuario configurar las dimensiones de una empresa. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1. Flujo Básico El caso de uso se inicia con el usuario. 1. El usuario selecciona la opción “Crear Dimensión”. 2. El sistema muestra el formulario de Especificación de Dimensiones. Dicho formulario contiene las siguientes entradas: nombre, tipo (Dimensión normal o Dimensión tiempo), alias, descripción y jerarquías. El usuario ingresa el nombre, tipo, alias, descripción, tipo de actualización: Actualizar registro, Crear registro, y Crear Campo (para definir si una llave primaria es surrogate key o no) y jerarquías. 3. El usuario selecciona la opción “Guardar Dimensión”. 4. El sistema crea la dimensión en la empresa. 5. El caso de uso termina. 1.2. Flujos Alternativos ii. Incluir Dimensión a Tema. 1. El usuario abre un Tema. 2. El usuario selecciona la opción “Incluir Dimensión” 3. El sistema muestra la opción “Crear Nueva Dimensión” y una lista de dimensiones creadas en el proyecto y que no estén incluidas en el Tema previamente seleccionado. 4. Si el usuario selecciona la opción “Crear Nueva Dimensión”. a. El sistema muestra el formulario para la Especificación de Dimensiones. b. El usuario ingresa los datos de mostrados en el formulario y selecciona la opción “Guardar Tema”. c. El sistema crea la dimensión en el proyecto y la incluye en la dimensión. 5. Si el usuario selecciona una dimensión de las mostradas por el sistema. a. El sistema incluye la dimensión seleccionada en el tema. 6. El caso de uso termina. iii. Modificar Dimensión 1. El usuario selecciona la opción “Especificar Dimensión” sobre una Dimensión. 2. El sistema muestra el formulario de Especificación de Dimensiones. Dicho formulario contiene las siguientes entradas nombre, tipo (Dimensión normal o Dimensión tiempo), alias, descripción, atributos y jerarquías. El usuario modifica los campos que considere conveniente. 3. En caso que se modifiquen jerarquías se va al caso de uso “Administrar Jerarquías”. 29 4. En caso que se modifiquen atributos se va al caso de uso “Administrar Atributos”. 5. El usuario selecciona la opción “Guardar Dimensión”. 6. El sistema guarda los cambios efectuados. iv. Eliminar Dimensión 1. El usuario selecciona la opción “Eliminar Dimensión” sobre una Dimensión. 2. El sistema muestra un formulario de confirmación. 3. El usuario selecciona la opción “Sí“. 4. El sistema muestra la relación de temas donde se encuentra la Dimensión a eliminar y un mensaje de confirmación. 5. El sistema excluye a la dimensión de todos los temas donde estaba incluida y luego la elimina del proyecto. 6. El caso de uso termina. v. Excluir Dimensión de Tema. 1. El usuario abre un Tema. 2. El usuario selecciona una Dimensión del Tema abierto y elige la opción “Excluir de Tema”. 3. El sistema muestra un formulario de confirmación. 4. El usuario selecciona la opción “Sí”. 5. Si la dimensión no se encuentra en otros Temas: a. El sistema muestra un mensaje consultando si se desea eliminar la dimensión de la empresa. b. Si el usuario selecciona la opción “Cancelar” i. El caso de uso termina. c. Si el usuario selecciona la opción “Sí” i. El sistema elimina la dimensión de la empresa actual. 6. Si la dimensión se encuentra en otros Temas. a. El sistema excluye la dimensión del tema. 2. Requerimiento Especiales Ninguno 3. Precondiciones Validación de usuario: El usuario debe haber ingresado al sistema. Proyecto Abierto: El usuario debe haber abierto un proyecto. 4. Post condiciones Ninguna. 5. Puntos de extensión Administrar Medidas. 30 Administrar Jerarquías. 3.2.7 Caso de Uso Administrar Jerarquías. Permite al usuario configurar las jerarquías existentes en una dimensión, así como crear nuevas y eliminar existentes. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1. Flujo Básico El caso de uso se inicia con el usuario. 1. El usuario selecciona la opción “Crear Jerarquía”. 2. El sistema muestra un formulario para la especificación de Jerarquías. Dicho formulario contiene las siguientes entradas: nombre, descripción, lista de atributos. 3. El usuario ingresa los valores y por lo menos un atributo. 4. La opción guardar jerarquía es habilitada. 5. El usuario selecciona el orden del atributo incluido en la jerarquía. 6. Los pasos 3 y 5 se pueden repetir hasta que se termine de ingresar atributos al sistema. 7. El usuario selecciona la opción “Guardar Jerarquía” 8. El caso de uso termina. 1.2. Flujos Alternativos i. Modificar Jerarquía 1. El usuario selecciona una jerarquía y elige la opción “Modificar Jerarquía”. 2. El sistema muestra un formulario con las entradas vistas en el paso 2 del flujo principal. 3. El usuario modifica alguna de estas entradas y selecciona la opción “Guardar Jerarquía”. 4. El sistema guarda los cambios efectuados. 5. El caso de uso termina. ii. Eliminar Jerarquía 1. El usuario selecciona una Jerarquía y elige la opción “Eliminar Jerarquía”. 2. El sistema muestra un formulario de confirmación. 3. El usuario selecciona la opción “Sí”. 4. El sistema elimina la jerarquía de la dimensión seleccionada. 2. Requerimiento Especiales Ninguno 31 3. Precondiciones Validación de usuario: El usuario debe haber ingresado al sistema. Proyecto Abierto: El usuario debe haber abierto un Proyecto. Dimensión Abierta: El usuario debe haber abierto una Dimensión. Atributos Creados: La dimensión debe tener los atributos en cuestión. 4. Post condiciones Ninguna. 5. Puntos de extensión Ninguno. 3.2.8 Caso de Uso Administrar Atributos. Permite al usuario configurar los atributos existentes en una dimensión, así como crear nuevos y eliminar existentes. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1. Flujo Básico El caso de uso se inicia con el usuario. 1. El usuario selecciona la opción “Crear Atributo”. 2. El sistema muestra un formulario para la especificación de Atributos. Dicho formulario contiene las siguientes entradas: nombre, descripción, campo identificador, campo nombre, campo orden. 3. El usuario ingresa los valores. 4. El usuario selecciona la opción “Guardar Atributo”. 5. El sistema crea el atributo en la dimensión seleccionada. 6. El caso de uso termina. 1.1. Flujos Alternativos i. Incluir Atributo a Jerarquía 1. El usuario abre una Jerarquía 2. El usuario selecciona la opción “Incluir Atributo a Jerarquía” 3. El sistema muestra la opción “Crear Nuevo Atributo” y la relación de atributos existentes en la dimensión seleccionada y no incluidos en la jerarquía. 4. Si el usuario selecciona la opción “Crear Nuevo Atributo”: a. El sistema muestra el formulario de especificación de jerarquía. b. El usuario ingresa los datos y selecciona la opción “Guardar Atributo”. 5. Si el usuario selecciona un atributo de los mostrados por el sistema. a. El sistema incluye el atributo en la jerarquía. 6. El caso de uso termina. ii. Modificar Atributo 1. El usuario selecciona la opción “Modificar Atributo” 32 2. El sistema muestra un formulario para la especificación de Atributos. En el formulario aparecen las entradas especificadas el paso 2 del flujo principal. 3. El usuario modifica alguna de las entradas mostradas y elige la opción “Guardar Atributo” 4. El sistema guarda los cambios efectuados del Atributo. iii. Eliminar Atributo 1. El usuario selecciona la opción “Eliminar Atributo” sobre una Atributo. 2. El sistema muestra un formulario de confirmación. 3. El usuario selecciona la opción “Sí“. 4. El sistema muestra la relación de jerarquías donde se encuentra el Atributo a eliminar y un mensaje de confirmación. 5. El sistema excluye al Atributo de todas las jerarquías donde estaba incluida y de la dimensión seleccionada. 6. El sistema consulta si desea eliminar la tabla asociada al Atributo. 7. El usuario selecciona “Sí”. 8. El sistema elimina la tabla asociada al Atributo. 9. El caso de uso termina. iv. Excluir Atributo de Jerarquía. 1. El usuario abre una Jerarquía. 2. El usuario selecciona un Atributo de la Jerarquía abierta. El sistema muestra un formulario de confirmación. 3. El usuario selecciona la opción “Sí”. 4. Si el atributo no se encuentra en otras Jerarquías: a. El sistema muestra un mensaje consultando si se desea eliminar el Atributo de la Jerarquía. b. Si el usuario selecciona la opción “Cancelar” i. El caso de uso termina. c. El sistema excluye al Atributo de la Jerarquía. d. Si el usuario selecciona la opción “Sí” i. El sistema elimina al Atributo de la Dimensión. 5. Si el atributo se encuentra en otros temas. a. El sistema excluye al Atributo de la Jerarquía. 2. Requerimiento Especiales Ninguno 3. Precondiciones Validación de usuario: El usuario debe haber ingresado al sistema. Proyecto Abierto: El usuario debe haber abierto un Proyecto. Dimensión Abierta: El usuario debe haber abierto una Dimensión 4. Post condiciones 33 Ninguna. 5. Puntos de extensión Ninguno. 3.2.9 Caso de Uso Administrar Facts Permite al usuario configurar las facts del proyecto. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1. Flujo Básico El caso de uso se inicia con el usuario. 1. El usuario abre un Tema de Análisis. 2. El usuario selecciona la opción “Crear Fact”. 3. El sistema muestra el formulario de Especificación de Facts. Dicho formulario contiene las siguientes entradas: nombre, descripción y medidas. 4. El usuario ingresa el nombre, la descripción, las medidas de la Fact. 5. El usuario selecciona la opción “Guardar Fact”. 6. El sistema crea la Fact en el Tema. 7. El caso de uso termina. 1.2. Flujos Alternativos i. Modificar Fact 1. El usuario selecciona la opción “Especificar Fact” sobre una Fact. 2. El sistema muestra el formulario de Especificación de Facts. Dicho formulario contiene las siguientes entradas nombre, descripción y medidas de la fact. 3. Se va al caso de uso “Administrar Medidas de Fact”. 4. El usuario selecciona la opción “Guardar Fact”. 5. El sistema guarda los cambios efectuados 6. El caso de uso termina. ii. Eliminar Fact 1. El usuario selecciona la opción “Eliminar Fact” sobre una Fact. 2. El sistema muestra un formulario de confirmación. 3. El usuario selecciona la opción “Sí“. 4. El sistema elimina la Fact del Tema. 2. Requerimiento Especiales Ninguno 3. Precondiciones 34 Validación de usuario: El usuario debe haber ingresado al sistema. Proyecto Abierto: El usuario debe haber abierto un Proyecto. Tema abierto: El usuario debe haber abierto un Tema de Análisis. 4. Post condiciones Ninguna. 5. Puntos de extensión Administrar Medidas. 3.2.10 Caso de Uso Administrar Medidas. Permite al usuario configurar las Medidas existentes en una Fact, así como crear nuevas y eliminar existentes. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1. Flujo Básico El caso de uso se inicia con el usuario. 1. El usuario selecciona la opción “Crear Medida”. 2. El sistema muestra un formulario para la especificación de Medidas. Dicho formulario contiene las siguientes entradas: nombre, descripción, función de agregación, tipo de dato: cadena, numérico o entero (el valor por defecto debe ser entero cuando la agregación es Count o numérico en otros casos). 3. El usuario ingresa el nombre, la descripción, función de agregación y tipo de dato. 4. El usuario selecciona la opción “Guardar Medida”. 5. El sistema crea la Medida en la Fact seleccionada. 6. El caso de uso termina. 1.2. Flujos Alternativos i. Modificar Medida 1. El usuario selecciona la opción “Modificar Medida” 2. El sistema muestra un formulario para la especificación de Medidas. Dicho formulario contiene las siguientes entradas: nombre, descripción. El usuario modifica alguna de las entradas mostradas y elige la opción “Guardar Medida” 3. El sistema guarda los cambios efectuados de la Medida. 4. El caso de uso termina. ii. Eliminar Medida 1. El usuario selecciona la opción “Eliminar Medida” sobre una Medida. 2. El sistema muestra un formulario de confirmación. 3. El usuario selecciona l a opción “Sí“. 4. El sistema elimina la Medida de la Fact. 5. El caso de uso termina. 35 2. Requerimiento Especiales Ninguno 3. Precondiciones Validación de usuario: El usuario debe haber ingresado al sistema. Proyecto Abierto: El usuario debe haber abierto un Proyecto. Tema Abierto: El usuario debe haber abierto un Tema de Análisis. Fact Abierta: El usuario debe haber abierto una Fact. 4. Post condiciones Ninguna. 5. Puntos de extensión Ninguno. 3.2.11 Caso de Uso Administrar Indicadores. Permite al usuario definir los Indicadores en función de medidas existentes en una Fact, así como crear nuevas y eliminar existentes. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1. Flujo Básico El caso de uso se inicia con el usuario. 1. El usuario selecciona la opción “Crear Indicador”. 2. El sistema muestra un formulario para la especificación de Indicadores. Dicho formulario contiene las siguientes entradas: nombre, descripción, etiqueta, fórmula o expresión. 3. El usuario ingresa los datos 4. El usuario selecciona la opción editar formula y aparece una ventana en la cual puede colocar las medidas de las facts del tema e indicar operaciones matemáticas. 5. El sistema verifica que la fórmula ingresada es correcta. 6. El usuario acepta la fórmula. 7. El usuario selecciona la opción “Guardar Indicador”. 8. El sistema crea el indicador en el Tema seleccionado. 9. El caso de uso termina. 1.2. Flujos Alternativos i. Modificar Indicador 1. El usuario selecciona la opción “Modificar Indicador” 2. El sistema muestra un formulario para la especificación de Indicadores. Dicho formulario contiene las siguientes entradas: nombre, descripción, etiqueta, fórmula. El usuario modifica cualquiera de las entradas mostradas y elige la opción “Guardar Indicador”. 36 3. El sistema guarda los cambios efectuados en el Indicador. 4. El caso de uso termina. ii. Eliminar Indicador 1. El usuario selecciona la opción “Eliminar Indicador” sobre una Indicador. 2. El sistema muestra un formulario de confirmación. 3. El usuario selecciona l a opción “Sí“. 4. El sistema elimina el indicador del Tema. 5. El caso de uso termina. 2. Requerimiento Especiales Ninguno 3. Precondiciones Validación de usuario: El usuario debe haber ingresado al sistema. Proyecto Abierto: El usuario debe haber abierto un Proyecto. Tema abierto: El usuario debe haber abierto un Tema de Análisis. Fact Abierta: El usuario debe haber abierto una Fact. Medida Creada: El usuario debe haber creado al menos una medida. 4. Post condiciones Ninguna. 5. Puntos de extensión Ninguno. 3.2.12 Caso de Uso Administrar Formato de Datos El propósito de este caso de uso es permitir al usuario definir como es que quiere el formato de presentación de los campos de una tabla cualquiera. Se permitirá definir nuevos formatos en base a los tipos de datos ya existentes y poder usarlos en uno o más campos. Este caso de uso es iniciado por el Usuario independientemente o dentro de los casos de uso Administrar Atributo, Administrar Medidas y Administrar Indicadores. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1. Flujo Básico 1. El usuario selecciona “Administrar Formato de Datos”. 2. Se le mostrará un formulario en el que deberá especificar las características de este nuevo formato, lo que dependerá del tipo de dato: a. Para números, cantidad de decimales, cantidad de enteros y longitud. b. Para tipo fecha se indica la cantidad de dígitos a usarse para día, mes y año y el orden en que se desea ver. c. Para el tipo cadena se especifica la longitud de la cadena. 3. El usuario llena los campos correspondientes. 4. El usuario selecciona guardar nuevo formato. 37 5. La herramienta verifica a que empresa pertenece el proyecto y guarda el formato asociado a dicha empresa. 6. La herramienta mostrará un mensaje de verificación. 1.2. Flujo Alternativo i. Modificar Formato 1. El usuario invoca al CU Buscar Formato de Datos. 2. El sistema muestra un listado con los formatos de datos existentes. 3. El usuario selecciona un formato de la lista. 4. El usuario selecciona “Modificar Formato de Datos”. 5. El sistema muestra todos los formatos existentes. 6. El usuario selecciona un formato y solicita “Modificar Formato” 7. Se le mostrará un formulario donde figuren las características de este formato, lo que dependerá del tipo de dato: a. Números, cantidad de decimales, cantidad de enteros y longitud. b. Fecha se indica la cantidad de dígitos a usarse para día, mes y anho y el orden en que se desea ver. c. Cadena se especifica la longitud de la cadena. 8. El usuario modifica los campos que desee. 9. El usuario selecciona guardar formato. 10. La herramienta mostrará un mensaje de verificación. ii. Modificar Formato 1. El usuario invoca al CU Buscar Formato de Datos. 2. El sistema muestra un listado con los formatos de datos existentes. 3. El usuario selecciona uno o mas formatos de datos de la lista. 4. El usuario selecciona “Eliminar Formato de Datos”. 5. El sistema muestra todos los formatos existentes. 6. El usuario selecciona un los formatos que desee y solicita “Modificar Formato” 7. La herramienta muestra un mensaje de verificación. 8. El usuario acepta. 9. La herramienta verifica que los formatos a eliminar no estén asociados a algún campo de alguna tabla. Si todo es conforme, la herramienta elimina los formatos seleccionados. 10. La herramienta muestra un mensaje de conformidad. 2. Requerimientos Especiales. No existen requerimientos especiales en este caso de uso. 3. Precondiciones Validación de usuario: El usuario debe haber ingresado al sistema. Proyecto Abierto: El usuario debe haber abierto un Proyecto. 38 Tema de análisis activo: Debe existir un tema de análisis activo con un grafico. 4. Poscondiciones Formato administrado. Se debe haber creado, modificado o eliminado algún formato de datos. 5. Puntos de Extensión No existen puntos de extensión para este caso de uso. 3.2.13 Caso de Uso Asignar Formato de Datos a Campo El propósito de este caso de uso es permitir al usuario definir como es que quiere el formato de presentación de los campos de una tabla cualquiera. Se permitirá definir nuevos formatos en base a los tipos de datos ya existentes y poder usarlos en uno o más campos. Este caso de uso es iniciado por el Usuario independientemente o dentro de los casos de uso Administrar Atributo, Administrar Medidas y Administrar Indicadores. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1. Flujo Básico 1. El usuario selecciona una de las Dimensiones ya creadas en el modelo dimensional. 2. El usuario selecciona “Asignar Formato de Datos” 3. La herramienta muestra una ventana con un listado de los campos de la dimensión. 4. El usuario escoge el campo al que desee dar formato. 5. El usuario escoge la modalidad de estandarización: Crear un nuevo formato de dato, Utilizar un formato predefinido. 6. Si el usuario escoge la modalidad Utilizar un formato predefinido, a. la herramienta mostrará todos los formatos de datos asociados a la empresa a la que pertenece el proyecto seleccionado. b. el usuario selecciona uno de los formatos. c. Luego va al punto 8. 7. Si el usuario escoge la modalidad Crear un nuevo formato de dato se llama al caso de uso Administrar Formato de Dato 8. El usuario selecciona “aceptar” 9. La herramienta envía un mensaje de verificación. 10. El usuario selecciona aceptar. 11. La herramienta guardará las modificaciones hechas por el usuario. 1.2. Flujo Alternativo No existen flujos alternativos en este caso de uso. 2. Requerimientos Especiales. No existen requerimientos especiales en este caso de uso. 3. Precondiciones 39 Validación de usuario: El usuario debe haber ingresado al sistema. Proyecto Abierto: El usuario debe haber abierto un Proyecto. Tema de análisis activo: Debe existir un tema de análisis activo con un grafico. 4. Poscondiciones Datos Estandarizados. Luego de haberse ejecutado este caso de uso, los datos habrán quedado estandarizados según el usuario haya solicitado. 5. Puntos de Extensión No existen puntos de extensión para este caso de uso. 3.2.14 Caso de Uso Exportar Grafico. El propósito de este caso de uso es permitir al usuario exportar el gráfico a cualquiera de los siguientes formatos: jpg, gif., bmp, pdf. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1. Flujo Básico El caso de uso se inicia con el usuario. 1. El usuario selecciona la opción “Exportar gráfico”. 2. El sistema muestra un formulario con los siguientes parámetros: tipo de formato al que desea importar (jpg, bmp, gif, pdf) y un botón de aceptar 3. El usuario selecciona uno de los formatos y selecciona aceptar. 4. El sistema muestra un formulario para que el usuario indique en que directorio desea guardar su archivo y que nombre desea darle al archivo 5. El usuario selecciona el directorio destino e ingresa el nombre del archivo. 6. El usuario acepta guardar el archivo. 7. El sistema muestra un mensaje de verificación. 1.2. Flujo Alternativo No existen flujos alternativos en este caso de uso. 2. Requerimiento Especiales Ninguno 3. Precondiciones Validación de usuario: El usuario debe haber ingresado al sistema. Proyecto Abierto: El usuario debe haber abierto un Proyecto. Tema de análisis activo: Debe existir un tema de análisis activo con un grafico. 4. Post condiciones Archivo de exportación generado: Luego de haberse ejecutado este caso de uso, debe haberse generado correctamente el archivo solicitado por el usuario. 5. Puntos de extensión Ninguno. 40 3.2.15 Caso de Uso Buscar Empresa El propósito de este caso de uso es buscar una entidad empresa. Este caso de uso es iniciado por un usuario cualquiera del sistema. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1. Flujo Básico 1. El usuario selecciona la opción “Buscar Empresa”. 2. La herramienta solicita el nombre de la empresa y/o RUC. 3. El usuario ingresa el nombre de la empresa a buscar y/o su RUC. 4. La herramienta muestra una lista con las empresas que cumplen con los filtros de búsqueda. 5. El usuario selecciona una empresa y selecciona “Aceptar”. 6. El caso de uso finaliza. 1.2. Flujo Alternativo No existen flujos alternativos en este caso de uso. 2. Requerimientos Especiales. No existen requerimientos especiales en este caso de uso. 3. Precondiciones Validación de usuario: El usuario debe haber ingresado al sistema. 4. Poscondiciones Empresa seleccionada. El usuario tendrá seleccionada la empresa que haya estado buscando. 5. Puntos de Extensión No existen puntos de extensión en este caso de uso. 3.2.16 Caso de Uso Buscar Proyecto El propósito de éste caso de uso es buscar una entidad proyecto. Este caso de uso es iniciado por un usuario cualquiera del sistema. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1. Flujo Básico 1. El usuario selecciona la opción “Buscar Proyecto”. 2. La herramienta solicita el nombre del proyecto y la empresa a la que pertenece. 3. El usuario ingresa el nombre del proyecto a buscar y la empresa a la cual pertenece. 4. La herramienta muestra una lista con los proyectos cuyo nombre coincida o contenga el nombre ingresado por el usuario. 5. El usuario selecciona un proyecto y selecciona “Aceptar”. 41 6. La herramienta carga el proyecto seleccionado por el usuario en la herramienta con todo su contenido incluyendo temas de análisis, facts, dimensiones, jerarquías, atributos e indicadores. 1.2. Flujo Alternativo No existen flujos alternativos en este caso de uso. 2. Requerimientos Especiales. No existen requerimientos especiales en este caso de uso. 3. Precondiciones Validación de usuario: El usuario debe haber ingresado al sistema. 4. Poscondiciones Proyecto abierto. El usuario tendrá el proyecto que haya solicitado abierto en la herramienta. 5. Puntos de Extensión No existen puntos de extensión en este caso de uso. 3.2.17 Caso de Uso Buscar Tema El propósito de éste caso de uso es buscar una entidad tema de análisis. Este caso de uso es iniciado por un usuario cualquiera del sistema. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1. Flujo Básico 1. El usuario selecciona la opción “Buscar Tema”. 2. La herramienta solicita el nombre del tema a buscar. 3. El usuario ingresa el nombre de tema a buscar de entre los temas que tiene el proyecto. 4. La herramienta muestra los temas cuyo nombre contenga el valor ingresado por el usuario. 5. El usuario selecciona un tema y selecciona “Aceptar”. 6. La herramienta carga dentro del proyecto activo el tema buscado con todos los objetos que éste contenga: dimensiones, temas, jerarquías, atributos e indicadores. 1.2. Flujo Alternativo No existen flujos alternativos en este caso de uso. 2. Requerimientos Especiales. No existen requerimientos especiales en este caso de uso. 3. Precondiciones Validación de usuario: El usuario debe haber ingresado al sistema. Proyecto Abierto: El usuario debe haber abierto un proyecto. 4. Poscondiciones Tema abierto: Luego de haberse ejecutado este caso de uso el tema seleccionado debe estar cargado en el proyecto activo. 5. Puntos de Extensión 42 No existen puntos de extensión en este caso de uso. 3.2.18 Caso de Uso Buscar Fact El propósito de éste caso de uso es buscar una entidad fact. Este caso de uso es iniciado por un usuario cualquiera del sistema. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1. Flujo Básico 1. El usuario selecciona la opción “Buscar Fact”. 2. La herramienta solicita el nombre de la Fact a buscar y la empresa a la cual pertenece. 3. El usuario ingresa el nombre de la Fact a buscar. 4. La herramienta muestra las facts cuyos nombres contengan el valor ingresado por el usuario y que pertenezcan a la misma empresa del proyecto abierto. 5. El usuario selecciona una fact y selecciona “Aceptar”. 6. La herramienta devuelve la fact seleccionada incluyendo todos los objetos a los que esté relacionada: dimensiones, medidas e indicadores. 1.2. Flujo Alternativo No existen flujos alternativos en este caso de uso. 2. Requerimientos Especiales. No existen requerimientos especiales en este caso de uso. 3. Precondiciones Validación de usuario: El usuario debe haber ingresado al sistema. Proyecto Abierto: El usuario debe haber abierto un proyecto. Tema Abierto: El usuario debe haber abierto un tema. 4. Poscondiciones Fact Seleccionada: Luego de haberse ejecutado este caso de uso la Fact, esta ha sido seleccionada. 5. Puntos de Extensión No existen puntos de extensión en este caso de uso. 3.2.19 Caso de Uso Buscar Dimensión El propósito de este caso de uso es buscar una entidad dimensión. Este caso de uso es iniciado por un usuario cualquiera del sistema. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1. Flujo Básico 1. El usuario selecciona la opción “Buscar Dimensión”. 2. La herramienta solicita el nombre de la dimensión. 3. El usuario ingresa el nombre de la dimensión. 43 4. La herramienta muestra las dimensiones cuyos nombres contengan el valor ingresado por el usuario y que a demás pertenezcan a la misma empresa del proyecto actualmente abierto. 5. El usuario selecciona una dimensión y selecciona “Aceptar”. 6. La herramienta devuelve la dimensión seleccionada incluyendo sus atributos y jerarquías. 1.2. Flujo Alternativo No existen flujos alternativos en este caso de uso. 2. Requerimientos Especiales. No existen requerimientos especiales en este caso de uso. 3. Precondiciones Validación de usuario: El usuario debe haber ingresado al sistema. Proyecto Abierto: El usuario debe haber abierto un proyecto. Tema Abierto: El usuario debe haber abierto un tema. 4. Poscondiciones Dimensión Seleccionada: Luego de haberse ejecutado este caso de uso la dimensión ha sido seleccionada. 5. Puntos de Extensión No existen puntos de extensión en este caso de uso. 3.2.20 Caso de Uso Buscar Formato de datos El propósito de éste caso de uso es buscar una entidad Formato de datos. Este caso de uso es iniciado por un usuario cualquiera del sistema. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1. Flujo Básico 1. El usuario selecciona la opción “Buscar Formato de datos”. 2. La herramienta muestra un formulario con filtros de búsqueda: Nombre, tipo de dato. 3. El usuario ingresa los datos solicitados. 4. La herramienta muestra los formatos que cumplan con los filtros ingresados por el usuario y que pertenezcan a la misma empresa del proyecto abierto. 5. El usuario selecciona un formato y selecciona “Aceptar”. 6. La herramienta devuelve el formato seleccionado. 1.2. Flujo Alternativo No existen flujos alternativos en este caso de uso. 2. Requerimientos Especiales. No existen requerimientos especiales en este caso de uso. 3. Precondiciones Validación de usuario: El usuario debe haber ingresado al sistema. Proyecto Abierto: El usuario debe haber abierto un proyecto. Tema Abierto: El usuario debe haber abierto un tema. 44 4. Poscondiciones Formato Seleccionada: Luego de haberse ejecutado este caso de uso el formato de datos queda seleccionado 5. Puntos de Extensión No existen puntos de extensión en este caso de uso. 3.2.21 Caso de Uso Crear Tablas en Base de datos El propósito de éste caso de uso es poder crear los scripts de inserción de tablas de un proyecto (facts y dimensiones) e insertarlos directamente en base de datos. Este caso de uso es iniciado por un usuario cualquiera del sistema. 1. Flujo de Trabajo A continuación se detalla el flujo básico de este caso de uso. 1.1. Flujo Básico 1. El usuario selecciona la opción “Crear tablas en base de datos”. 2. La herramienta muestra un formulario con el listado de tablas (dimensiones y facts) que existen en el proyecto activo, una opción de “Generar scripts de inserción”, otra opción de “crear en base de datos” y los siguientes datos de conexión para ser llenadas por el usuario: Manejador de base de datos, Usuario y contraseña de cliente, Servidor, instancia y puerto. Adicionalmente el formulario contiene una opción para verificar la conexión en base a los parámetros antes mencionados. 3. El usuario selecciona las tablas de las que desea crear tablas en base de datos y llena los valores solicitados en el formulario. 4. El usuario selecciona una de las opciones del formulario: a. “Generar script de inserción”. Esta opción le mostrará al usuario una caja de texto con el script de creación de tablas y la opcion de guardar dicho script. b. “Crear en base de datos”. Esta opción inserta directamente el script en la base de datos. 5. La herramienta muestra un mensaje de verificación. 1.2. Flujo Alternativo No existen flujos alternativos en este caso de uso. 2. Requerimientos Especiales. No existen requerimientos especiales en este caso de uso. 3. Precondiciones Validación de usuario: El usuario debe haber ingresado al sistema. Proyecto Abierto: El usuario debe haber abierto un proyecto. 4. Poscondiciones Tablas generadas. Esto depende de que opción elija en usuario en el paso 4. 5. Puntos de Extensión No existen puntos de extensión en este caso de uso. 3.2.22 Caso de Uso Estimación del tamaño del Data Warehouse El propósito de este caso de uso es estimar el tamaño físico que ocuparía el Data Warehouse 45 Este caso de uso es iniciado por el Usuario. 1. Flujo de Trabajo 1.1. Flujo Básico 1. El usuario selecciona “Estimar tamaño del Data Warehouse”. 2. La herramienta muestra un formulario listando todas las tablas del proyecto. 3. El usuario ingresa la cantidad de registros promedio que tendría cada tabla, el porcentaje de crecimiento anual que tendría cada tabla, el tipo de manejador de base de datos que albergarían los datos, y selecciona la opción calcular. 4. La herramienta muestra el tamaño que ocuparía cada tabla y el tamaño total del Data Warehouse. 5. El caso de uso termina. 2. Requerimientos Especiales. No existen requerimientos especiales en este caso de uso. 3. Precondiciones Validación de usuario: El usuario debe haber ingresado al sistema. Proyecto Abierto: El usuario debe haber abierto un proyecto. 4. Poscondiciones Ninguna. 5. Puntos de Extensión No existen puntos de extensión para este caso de uso. 46 3.3 Módulo de Análisis - Paquete Generación de datos de prueba El paquete de Simulación con datos de Prueba incluye todo lo relacionado la generación de datos de prueba en base a reglas de generación y formación que defina el usuario para las tablas del modelado y su visualización mediante scripts de prueba. El usuario recibirá asistencia en esta parte, recibiendo sugerencias para evitar generar reglas que generen inconsistencia en datos y otros. 3.3.1 Caso de Uso Configurar las regla de generación El propósito de este caso de uso poder definir la regla de generación para un campo cualquiera de una tabla seleccionada por el usuario para la generación de datos de prueba. La definición de dicha regla de generación deberá respetar el formato de dicho campo definido en el modelador y su extensión o longitud. Este caso de uso es iniciado por el Usuario. 1. Flujo de Trabajo 1.1. Flujo Básico 1. El usuario selecciona la opción “Configurar reglas de generación” 2. La herramienta muestra todas las tablas que pertenecen al tema abierto. 3. El usuario selecciona una de las tablas del listado. 47 4. El sistema le muestra la relación de campos que contiene la tabla y los siguientes datos por cada campo: nombre de campo, tipo de dato, un indicador de PK, un indicador de FK, un indicador de nulidad, tipo de regla de generación, valor mínimo, valor máximo, un indicador para saber si el campo ha sido configurado o tiene la configuración por defecto. Se muestra una opción para que el usuario indique la cantidad de registros que desea generar para dicha tabla. 5. El usuario selecciona un campo y solicita configurar regla de generación. Dependiendo del tipo de dato del campo se mostrará diferentes formularios a usuario: a. Cadena: Se mostrará un formulario con los siguientes campos: Nombre de campo, longitud, opciones de generación: por lista o por un conjunto de patrones. En caso se escoja una lista se pedirán indicar la lista predefinida de la cual se van a obtener los datos de prueba del archivo de texto a leer. En caso de escogerse un conjunto de patrones, se solicitarán los siguientes campos, según sea el tipo de formación que se escoja: i. Para Constante, el valor constante. ii. Para numérico, generación (aleatorio, ascendente o descendente), el número de caracteres, incremento, mínimo, máximo, iii. Para no numérico los mismos datos de b a demás de indicar si estará formado por mayúsculas o minúsculas. b. Numérico. Se mostrará una ventana con los siguientes campos: Nombre del campo, tamaño y un botón para continuar. Se mostrará un formulario donde el usuario deberá llenar: i. Sistema de numeración (Decimal, Octal, Hexadecimal) . ii. Signo (positivo, negativo o ambos). iii. El tipo de generación (aleatorio, constante o secuencial – ascendente o descendente) y, si es secuencial, solicitará un mínimo, un máximo y el valor de incremento. c. Fecha/Hora. Se mostrarán los siguientes campos: nombre del campo, formato (Fecha, Hora o FechaHora), y el tipo de generación. Dependiendo del tipo de generación el usuario deberá llenar los siguientes campos: i. Aleatoria: Rango de fechas y/o rango de horas. ii. Constante: Valor constante para fecha y/o para hora. iii. Secuencial: Tipo de secuencia (ascendente o descendente), rango de fechas y/o horas, el valor de incremento y la unidad de incremento (hora, día, mes). 6. El usuario podrá repetir el paso 5 para todos los campos que encuentre en la tabla seleccionada 7. El usuario podrá repetir los pasos 3-6 para las tablas que desee y que se encuentren en el tema abierto. 8. El usuario selecciona “guardar”. 9. El sistema muestra un mensaje de verificación. 2. Requerimientos Especiales 48 No existen requerimientos especiales en este caso de uso. 3. Precondiciones Validación de usuario: El usuario debe haber ingresado al sistema. Proyecto Abierto: El usuario debe haber abierto un Proyecto. 4. Poscondiciones Campos con reglas de generación configuradas: Los campos que hayan sido configurados deben permanecer con las reglas de configuración definidas por el usuario. 5. Puntos de Extensión Caso de uso Generar Datos de prueba 3.1.3.2. 3.3.2 Caso de Uso Generar Datos de prueba El propósito de este caso de uso es poder generar las sentencias de inserción de datos para las tablas seleccionadas de un tema abierto respetando la integridad de las mismas, permitiendo fijar un número máximo de registros a crear y que serán almacenados en un archivo de tipo Zip que contendrá un conjunto de archivo de texto. Este caso de uso es iniciado por el Usuario. 1. Flujo de Trabajo 1.1. Flujo Básico 1. El usuario selecciona la opción “Generar data de prueba” 2. . La herramienta muestra un formulario con los siguientes campos a llenar por el usuario: Manejador de base de datos, Usuario y contraseña de cliente, Servidor, instancia y puerto. Estos datos servirán para la definición de los archivos de inserción a generar. 3. La ventana muestra también la relación de las facts de la empresa. 4. El usuario seleccionara en que tablas deseara generar la data y selecciona “aceptar”. 5. La herramienta verifica y busca las tablas de las que depende cada fact. 6. La herramienta solicita la dirección destino donde se desean guardar los archivos de inserción de los datos generados. 7. El usuario escoge la ruta y selecciona aceptar. 8. La herramienta realiza la generación de datos, llena los archivos correspondientes y los empaqueta en un archivo de tipo Zip. 9. La herramienta muestra un mensaje de verificación. 1.2. Flujo Alternativo 1. En el punto 4, si la herramienta encuentra inconsistencias o campos que no han recibido una correcta definición de regla de generación, muestra un mensaje indicando que hay error. 2. En el punto 7, si el usuario selecciona cancelar, se regresa al punto 5. 2. Requerimientos Especiales No existen requerimientos especiales en este caso de uso. 3. Precondiciones Validación de usuario: El usuario debe haber ingresado al sistema. Proyecto Abierto: El usuario debe haber abierto un Proyecto. 49 4. Poscondiciones 4.1. Generación de archivo Luego de haberse ejecutado este caso de uso, se deberá de haber generado un archivo de tipo .Zip con las sentencias de inserción para generar datos. 5. Puntos de Extensión No existen puntos de extensión para este caso de uso. 3.4 Módulo de Análisis - Paquete Documentación El paquete de Documentación incluye todas aquellas acciones que serán realizadas por el usuario con el fin de documentar los modelos que defina o diseñe. Los casos de uso incluidos en este paquete son: Creación de diccionario de datos, Inserción de notas y Generar Documento. 3.4.1 Caso de Uso Generar Documento El propósito de este caso de uso es generar un documento en base al diccionario de datos, el cual será exportado al formato HTML. Este caso de uso es iniciado por el Usuario. 1. Flujo de Trabajo 1.1. Flujo Básico 1. El usuario selecciona “Generar documento”. 2. La herramienta muestra una lista con los temas existentes en el proyecto activo. 3. El usuario selecciona uno o más temas. 4. El usuario selecciona el formato en que quiere que se genere el documento. 5. El usuario solicita “generar documento”. 6. El sistema genera la documentación y muestra un formulario para ingresar la ruta de creación del documento. 7. El usuario selecciona la ruta y escoge “aceptar” 8. La herramienta guarda el archivo .zip con la documentación generada en la ruta indicada. 2. Requerimientos Especiales. 50 No existen requerimientos especiales en este caso de uso. 3. Precondiciones 3.1. Validación de usuario Para que este caso de uso se ejecute, se ha debido realizar el caso de uso Login de Usuario y debe haber abierto un tema. 3.2. Proyecto abierto Para que este caso de uso se ejecute, el usuario debe tener abierto un proyecto 4. Poscondiciones 4.1. Documento generado Luego de haberse ejecutado este caso de uso, el documento correspondiente se genera y puede ser accedido en la ruta seleccionada por el usuario. 5. Puntos de Extensión No existen puntos de extensión para este caso de uso. 4. Requisitos de Interfaces Externos 4.1 Interfaces de Usuario La interfaz de usuario será gráfica y el manejo del programa se realizará a través de teclado y ratón. 4.2 Interfaces Hardware Servidor de aplicaciones que proveerá el acceso a la aplicación web. 4.3 Interfaces Software Interfaz de comunicación con la herramienta DatProducer. 4.4 Interfaces de Comunicación La interfaz de comunicación se realizará mediante una interfaz web 4.5 Seguridad Cuando un usuario intente conectarse al sistema deberá introducir su usuario (login) y clave de acceso (contraseña), y el sistema deberá comprobar que se trata de un usuario autorizado. Si el identificador introducido no corresponde a un usuario autorizado o la clave no coincide con la almacenada, se dará una indicación de error. La herramienta tendrá distintos tipos de usuarios y a cada uno de ellos se le permitirá únicamente el acceso a aquellas funciones que le correspondan. Esta información se encuentra contenida en los casos de uso del negocio y en las especificaciones de casos de uso del negocio. El Caso de Uso asociado a este miembro es Validar Usuario. 51 Usuario del Sistema Validar Usuario 4.5.1 Caso de Uso “Validar Usuario” El propósito de este caso de uso es permitir a un usuario que ingrese al sistema, evitando que cualquier persona ajena al proyecto pueda acceder a la información de dicho proyecto. 1. Flujo de Trabajo Flujo Básico 1. El usuario ingresa su identificación de usuario (login) y su contraseña. 2. El sistema muestra la pantalla principal de la aplicación. 2. Requerimientos especiales No existen Requerimientos especiales para este caso de uso. 3. Precondiciones No existen precondiciones para este caso de uso. 4. Postcondiciones Si la información ingresada es correcta el usuario podrá acceder al sistema. 5. Puntos de Extensión No existen puntos de extensión para este caso de uso. ANEXO D. Documento de diseño INDICE 1. Introducción...........................................................................................................3 1.1 Propósito........................................................................................................3 1.2 Alcance ..........................................................................................................3 1.3 Referencias....................................................................................................3 1.4 Visión general del documento de diseño ......................................................3 2. Diagramas de clases ............................................................................................3 2.1. Diagramas de clases de diseño del módulo de análisis ...............................4 2.1.1. Vista Modelamiento dimensional ...............................................................4 2.1.2. Vista Modelamiento....................................................................................5 2.1.3. Vista Modelamiento – Dibujo .....................................................................6 2.1.4. Vista Motor de Datos..................................................................................6 2.1.5. Vista Simulación.........................................................................................7 2.1.6. Vista Controles...........................................................................................7 2.1.7. Vista Seguridad..........................................................................................8 3. Diagramas de secuencia ......................................................................................8 3.1. Paquete de seguridad....................................................................................9 3.1.1. Caso de Uso Administrar Roles del Sistema.............................................9 3.1.2. Caso de Uso Administrar Permisos.........................................................10 3.1.3. Caso de Uso Administrar Usuarios del Sistema......................................11 3.1.4. Caso de Uso Administrar Roles de la Empresa ......................................12 3.1.5. Caso de Uso Administrar Roles del Proyecto..........................................13 3.2. Paquete Diseño de modelo dimensional.....................................................14 3.2.1. Caso de Uso Administrar Empresa..........................................................14 3.2.2. Caso de Uso Administrar Proyecto..........................................................16 3.2.3. Caso de Uso Configurar buenas prácticas de modelamiento .................18 3.2.4. Caso de Uso Administrar Objetos............................................................19 3.2.5. Caso de Uso Administrar Temas.............................................................20 3.2.6. Caso de Uso Administrar Dimensiones ...................................................22 3.2.7. Caso de Uso Administrar Jerarquías.......................................................25 3.2.8. Caso de Uso Administrar Atributos..........................................................26 3.2.9. Caso de Uso Administrar Facts ...............................................................28 3.2.10. Caso de Uso Administrar Medidas ..........................................................31 3.2.11. Caso de Uso Administrar Indicadores .....................................................32 3.2.12. Caso de Uso Administrar Formato de Datos ...........................................33 3.2.13. Caso de Uso Asignar Formato de Datos a Campo .................................34 3.2.14. Caso de Uso Exportar Gráfico .................................................................35 3.2.15. Caso de Uso Buscar Empresa.................................................................36 3.2.16. Caso de Uso Buscar Proyecto.................................................................37 3.2.17. Caso de Uso Buscar Tema......................................................................38 3.2.18. Caso de Uso Buscar Fact ........................................................................39 3.2.19. Caso de Uso Buscar Dimensión ..............................................................40 3.2.20. Caso de Uso Buscar Formato de datos...................................................41 3.2.21. Caso de Uso Crear Tablas en Base de datos .........................................42 3.3. Paquete Generación de datos de prueba ...................................................43 3.3.1. Caso de Uso Configurar las regla de generación....................................43 3.3.2. Caso de Uso Generar Datos de prueba ..................................................44 3.3.3. Caso de Uso Estimación del tamaño del Data Warehouse.....................45 3.4. Paquete Documentación .............................................................................46 3.4.1. Caso de Uso Generar Documento...........................................................46 1. Introducción El presente es el documento de diseño elaborado por el equipo de trabajo del módulo de análisis para la elaboración de la “Herramienta integrada de soluciones para proyectos de Inteligencia de Negocios”, propuesto como tema de tesis. 1.1 Propósito Este documento provee una descripción de las funcionalidades de los módulos de análisis y seguridad de la herramienta propuesta, a través de los diferentes diagramas que muestran de forma detallada como se comportará ésta frente a los diferentes casos en los que pueda ser empleada. Además se podrá apreciar como está diseñada la herramienta de modo que ayude a entender el estilo que se empleará en su realización. 1.2 Alcance Esta versión del documento describirá los diagramas de clases de diseño y los diagramas de secuencia de los casos de uso que se desarrollarán. Para la elaboración de este documento se ha tomado como referencia los documentos mencionados en el punto 1.3. 1.3 Referencias Las referencias aplicables son: 1. Anexo B. Especificación de requerimientos de software. 2. Anexo C. Documentación de modelo de datos. 1.4 Visión general del documento de diseño Este documento consta de dos secciones. Esta sección es la introducción y proporciona una visión general del Documento de diseño. En la sección dos se muestra los diagramas de clases de diseño creados para la herramienta. La sección tres presenta los diagramas de secuencia de los flujos de los casos de uso. La definición de las clases y secuencias referidas a la generación de datos se muestran en el punto 1.3. 2. Diagramas de clases En esta sección se muestran los diagramas de clases de diseño. 2.1. Diagramas de clases de diseño del módulo de análisis 2.1.1. Vista Modelamiento dimensional Ilustración 1: Diagrama de clases de diseño de Modelamiento Dimensional O bj et o id no m br e de sc rip ci on fe ch aC re ac io n fe ch aM od ifi ca ci on BA Fo rm at o lo ng itu d tip oD at o es ta nd ar va lo re sP os ib le s[ ] (fr om a na lis is) Fa ct lis tM ed id as M ed id a tip oA gr eg ac io n ca m po D im en si on tip oA ct ua liz ac io n ca m po Id en tif ic ad or Je ra rq ui a at rib ut os ag re ga rA tri bu to () el im in ar At rib ut o( ) m ov er At rib ut oP os ic io n( ) At rib ut o ca m po Id ca m po N om br e ca m po O rd en D im en si on Ti em po pe rio do BA Ti po D at o tip os D at oE qu iva le nt es BA Fo rm at oN um er o pr ec is io n es ca la(f ro m a na lis is) BA Fo rm at oC ad en a es M in us cu la s es M ay us cu la s es Ti po Ti tu lo es Ti po O ra ci on es Lo ng itu dV ar ia bl e (f ro m a na lis is) BA Fo rm at oF ec ha po si ci on D ia po si ci on M es po si ci on An ho es An ho C or to es Fe ch a es H or a (fr om a na lis is) Pr oy ec to Te m a lis tD im en si on es lis tIn di ca do re s lis tT ab la s di ag ra m a Ta bl a es qu em a ca m po s R el ac io n id Ta bl a id C am po In di ca do r ex pr es io n id Te m a et iq ue ta lis tId M ed id as lis tId Fa ct s Em pr es a di re cc io n R U C ru br o pa gi na W eb re pr es en ta nt eL eg al D im en si on XT em a id D im en si on id Je ra rq ui as ag re ga rJ er ar qu ia () m od ifi ca rJ er ar qu ia () el im in ar Je ra rq ui a( ) bu sc ar Je ra rq ui a( ) Pe rio do ca nt id ad un id ad BA Ti po D at oE qu iva le nt e m an ej ad or Ba se D at os no m br e or de nP ar am et ro Lo ng itu d or de nP ar am et ro Lo ng itu dD ec im al BA R eg la G en er ac io n (fr om a na lis is) BA C am po es Ll av eP rim ar ia nu lid ad va lo rP or D ef ec to es Ll av eF or an ea co nf ig ur ad o re gl aG en er ac io n fo rm at o re la ci on(fr om a na lis is) BA R G Fe ch a tip oG en er ac io n co ns ta nt eF ec ha co ns ta nt eH or a in cr em en to Va lo r in cr em en to U ni da d m in im oF ec ha m in im oH or a m ax im oF ec ha m ax im oH or a (fr om a na lis is) BA R G N um er o tip oG en er ac io n co ns ta nt e in cr em en to m in im o m ax im o si st em a nu m er oD ec im al es si gn o( fr om a na lis is) BA Pa tro nC ad en a tip oG en er ac io n co ns ta nt e in cr em en to m in im o m ax im o tip oP at ro n lo ng itu d es M ay us cu la (fr om a na lis is) BA R G C ad en a op ci on G en er ac io n no m br eA rc hi vo (fr om a na lis is) 2.1.2. Vista Modelamiento DimensionTiempo periodo Periodo cant idad uni dad 1 GestorEmpresa agregarEmpresa() eliminarEmpresa( ) modificarEmpresa() buscarEmpresa( ) Relacion idTabla idCampo DimensionXTema idDimension idJerarquias agregarJerarquia() modificarJerarquia() eliminarJerarquia() buscarJerarquia() Medida tipoAgregacion campo Indicador expresion idTema etiqueta listIdMedidas listIdFacts 1..* 0..* GestorProyecto agregarProyecto() modificarProyecto() eliminarProyecto() buscarProyecto() Empresa direccion RUC rubro paginaWeb representanteLegal agregarDimension() modificarDimension() eliminarDimension() buscarDimension() agregarProyecto() modificarProyecto() eliminarProyecto() buscarProyecto() GestorTabla agregar Tabla( ) modificar Tabla( ) elim inar Tabla( ) busc arTabla() 1 1 Tabla esquema campos agregarCampo() eliminarCampo() modificarCampo() buscarCampo() 0..* 1 GestorDimension agregar Dimension( ) modif icar Dimension( ) elim inar Dimension( ) buscarDimension() Dimension tipoActualizacion campoIdentificador agregarAtributo() eliminarAtributo() modificarAtributo() buscarAtributo() agregarJerarquia() eliminarJerarquia() modificarJerarquia() buscarJerarquia() 1..* 0..* Proyecto agregarTema() eliminarTema() modificarTema() buscarTema() buscarDimension() agregarFact() eliminarFact() modificarFact() buscarFact() GestorTema agregarTema() modificarTema() eliminarTema() buscarTema() 1 1 GestorFact agregarFact() modificarFact() eliminarFact() buscarFact() Fact listMedi das agr egar Medida() eliminarMedida( ) modificarMedida( ) buscarMedida() Tema listDimensiones listIndicadores listTablas diagrama incluirTabla() excluirTabla() estaTabla() agregarIndicador() modificarIndicador() eliminarIndicador() agregarFact() modificarFact() eliminarFact() 1 1 DiagramaDibujo 11 BAReglaGeneracion (from analisis) BACampo esLlavePrimaria nulidad valorPorDefecto esLlaveForanea configurado reglaGeneracion formato relacion (from analisis) 0..* 1 0..* 1 1 1 Jerarquia atributos agregarAtributo() eliminarAtributo() moverAtributoPosicion() Atributo campoId campoNombre campoOrden 0..* +orden 0..* +nombre 0..* +id BAFormato l ongitud t ipoD ato estandar valoresPosibles[] (from analisis) 0..* 1 BATipoD ato tiposDatoEquivalentes 0..* 1 BATipoDatoEquivalenteBean manejador nombre ordenParmLong ordenParmLongDec (from analisis) Ilustración 2: Diagrama de clases de diseño de Modelamiento Dimensional - Vista de Relaciones 2.1.3. Vista Modelamiento – Dibujo BALineaDib BALineaD ib( ) r evali date( ) i sVali dSour ce() i sVali dTar get() BAObjetoActivoDib nombre fondo BAObjetoActivoDib() getColorFondo() setColorFondo() getNombre() setNombre() revalidate() BADi agr amPanel (from analisis) ObjetoDib objetoLogico idObjetoLogico defaultWidth defaultHeight relaciones selectedCorner labelNombre getIdObjetoLogico() setIdObjetoLogico() getObjetoLogico() setObjetoLogico() ObjetoDib() inicializar() contains() processMouseDragged() processMousePressed() drawBorder() addRelation() getRelations() setRelations() revalidate() LineaDib points source target dragPoint LineaDib() isValidTarget() isValidSource() contains() drawBorder() isChangeSizePoint() revalidate() processMouseDragged() paintComponent() setTarget() getTarget() addPoint() setSource() getSource() getPoints() setPoints() getIntermediatePoint() ElementoDib dragX : Integer dragY : Integer sel ected : Boolean getId() set Id() i sSelected( ) setSelected( ) getDragX() setDragX() getDragY() setDragY() ElementoDib( ) processM ouseDragged() processM ousePressed() processRigthClick() processM ouseReleased() BAFactDib nameLabel atributosAuxiliar tieneLlave primeravez cambio cambioCont contelement panel agregarAtributp() removerAtributo() agregarLlave() removerLlave() revalidate() actualizaFact() procesarMenuContextual() ordenaAtributos() isPrimeraVez() BANotaDib textLabel BANotaDib() revalidate() paintComponent() getTextLabel () setTextLabel() BADimensionDib nameLabel atributosAuxiliar tieneLlave primeravez cambio cambioCont contelement panel BADimensionDib() agregarAtributo() removerAtributo() revalidate() actualizaDimension() procesarMenuContextual() ordenaAtributos() isPrimeraVez() BADimensionTieDib nameLabel atri butosAuxi li ar tieneLlave primeravez cambio cambioCont contelement panel BADimensionTieD ib() agr egar Atributo() removerAtri buto( ) revalidate() actualizaDimension() procesarMenuC ontextual( ) ordenaAtri butos( ) isPrimeraVez() BALabelDib BALabelDib() getText( ) Ilustración 3: Diagrama de clases de diseño de Modelamiento Dimensional - Dibujo 2.1.4. Vista Motor de Datos BAFormatoCadena esMinusculas esMayus culas esTipoTi tu lo esTipoO racion esLongitudVariable (from analisis) BAFormatoFecha posicionDia posicionMes posicionAnho esAnhoCorto esFecha esHora (from anal isis) BAFormatoNumero precision escala (from analisis) BAReglaGeneracion (from analisis) BARGCadena opcionGeneracion nombreArchivo (from analisis) BARGFecha tipoGeneracion constanteFecha constanteHora incrementoValor incrementoUnidad minimoFecha minimoHora maximoFecha maximoHora (from anal isis) BARGNumero tipoGeneracion constante incremento minimo maximo sistema numeroDecimales signo (from analisis) BAFormato longitud tipoDato estandar valoresPosibles[] (from anal isis) BATipoDato tiposDatoEquivalentes (from general) 0..* 1 BATipoD atoEquival ente manejadorBaseDatos nombre ordenParametroLongitud ordenParametroLongitudDecimal (from general) BACampo esLlavePrimaria nulidad valorPorDefecto esLlaveForanea configurado reglaGeneracion formato relacion (from analisis) 0..* 1 1 1 Conexion usuario instancia manejador servidor puerto General nombre descripcion usuario flagseguridad ruta fechacreacion fechamodificacion numregcommit DatProducer cargarValoresAdicionales() cargarProyecto() BAControlXML guardarXMLMotor() guardarProyecto() guardarTema() guardarTabla() ... (from anali... Tabla esquema campos agregarCampo() eliminarCampo() modificarCampo() buscarCampo() (from gene... Metadata Tabla nombre estado numcampos numregistrosgenerar estadooperacion unique manejador ListaCampos Campo nombre tipoDatoBD tipoDatoGD tamano digitosDecimales posicion nCampOp nulo pk fk valDefault nomUnique padre campoPadre tabla configurado configuradoOperac ion numNullCreados uso fila ... Entero base sistema signo constante valorMin valorMax secuencia ReglaGeneracion tipoDatoCampo porcentajeNulos modificado modificadoOperacion opcionFormaGenerar orden FechasHoras formato variable secuencia diaMin mesMin anhoMin diaMax mesMax anhoMax horaMin minutoMin segMin horaMax ... PartesCadena valorMin valorMax secuencia opcionGrupoFormacion opcionFormaGenerar cantidadCaracteres constante opcionPatron opcionMayMin ... Cadena opcionGeneracion opcionArchivoPredefinido archivoListaDatos tamanoCadena tamanhoCampo ControlMotorDatos generarModeloMotor() zipperFiles() usandoDatProducer() generarXML() generarConversion() Proyecto Ilustración 4: Diagrama de clases de diseño de Motor de Datos 2.1.5. Vista Simulación General nombre descri pcion usuario fl agseguridad ruta fechacreacion fechamodif icacio n numreg commi t Con exion usuario instancia manejador servidor puerto Proyecto Metadata Tabla nombre estado numcampos numregistrosgenerar estadooperacion unique manejador ListaCampos Campo nombre tipoDatoBD tipoDatoGD tamano digitosDecimales posicion nCampOp nulo pk fk valDefault nomUnique padre campoPadre tabla configurado configuradoOperacion numNullCreados uso fila esMaestro esDetalle ... Entero base sistem a signo constante val orMin val orMax secue ncia FechasHoras formato variable secuencia diaMin mesMin anhoMin diaMax mesMax anhoMax horaMin minutoMin segMin horaMax ... Regla Generacion tipoDatoCampo porcentajeNulos modificado modificadoOperacion opcionFormaGenerar orden PartesCadena valorMin valorMax secuencia opcionGrupoFormacion opcionFormaGenerar cantidadCaracteres constante opcionPatron opcionMayMin opcionLetraAscii porcRegConstAGenerar Cadena opcionGeneracion opcionArchivoPredefinido archivoListaDatos tamanoCadena tamanhoCampo ItfXm lBean generarObjeto() generarBean() ControlMotorDatos generarModeloMotor() Ilustración 5: Diagrama de clases usadas de Simulación 2.1.6. Vista Controles ControlTema agregarTema() modif icarTema() eliminarTema() buscarTema() agregarIndicador() modif icarIndicador() eliminarIndicador() buscarIndicador() agregarFactTema() eliminarFactTema() agregarDimension() eliminarDimension() ControlFact agregarFact() modif icarFact() eliminarFact() buscarFact() agregarMedida() modif icarMedida() eliminarMedida() buscarMedida() agregarRelacionFact() ControlTabla buscarTabla() modif icarTabla() eliminarTabla() agregarTabla() agregarCampoTabla() modif icarCampoTabla() eliminarCampoTabla() buscarCampoTabla() modif icarTipoDatoCampo() modif icarReglaGeneracionCampo() modif icarFormatoCampo() ControlDimension agregarDimension() modif icarDimension() eliminarDimension() buscarDimension() agregarAtributoDimension() modif icarAtributoDimension() eliminarAtributoDimension() buscarAtributoDimension() agregarJerarquiaDimension() modif icarJerarquiaDimension() eliminarJerarquiaDimension() agregarRelacionDimension() modif icarPeriodoDimensionTiempo() mov erJerarquiaEnDimension() ControlProy ecto agregarProy ecto() modif icarProy ecto() eliminarProy ecto() buscarProy ecto() agregarNuev oJob() BAControlRG buscarRegla() eliminarRegla() agregarReglaGeneracion() modif icarReglaGeneracion() ControlEmpresa gestorEmpresa buscarEmpresa() agregarEmpresa() modif icarEmpresa() eliminarEmpresa() getListaDimensiones() getListaProy ectos() getListaTemas() getListaFacts() GestorEmpresa agregarEmpresa() eliminarEmpresa() modif icarEmpresa() buscarEmpresa() 1 1 CastorXML Empresa direccion RUC rubro paginaWeb representanteLegal agregarDimension() modif icarDimension() eliminarDimension() buscarDimension() agregarProy ecto() modif icarProy ecto() eliminarProy ecto() buscarProy ecto() XmlMaker escribirBean() eliminarBean() leerBean() escribirBeanMotor() XmlDibMaker leerBean() escribirBean() eliminarBean() Proy ecto agregarTema() eliminarTema() modif icarTema() buscarTema() buscarDimension() agregarFact() eliminarFact() modif icarFact() buscarFact() GestorDimension agregarDimension() modif icarDimension() eliminarDimension() buscarDimension() 1 1 ControlMotorDatos generarModeloMotor() zipperFiles() usandoDatProducer() generarXML() generarConv ersion() (from simulacion_data) GestorProy ecto agregarProy ecto() modif icarProy ecto() eliminarProy ecto() buscarProy ecto() 1 1 GestorTabla agregarTabla() modif icarTabla() eliminarTabla() buscarTabla() 1 1 ControlXmlMaker eliminarBean() escribirBean() leerBean() eliminarDibBean() escribirDibBean() leerDibBean() 1 1 1 1 GestorTema agregarTema() modif icarTema() eliminarTema() buscarTema() 1 1 Tema listDimensiones listIndicadores listTablas diagrama incluirTabla() excluirTabla() estaTabla() agregarIndicador() modif icarIndicador() eliminarIndicador() agregarFact() modif icarFact() eliminarFact() BAControlXML guardarXMLMotor() guardarProy ecto() guardarTema() guardarTabla() guardarDimension() guardarFact() guardarAtributo() guardarEmpresa() guardarIndicador() guardarTabla() eliminarEmpresa() eliminarProy ecto() eliminarDimension() eliminarTema() eliminarFact() eliminarTabla() leerEmpresa() leerProy ecto() leerDimension() leerTema() leerFact() leerTabla() (from analisis) GestorFact agregarFact() modif icarFact() eliminarFact() buscarFact() 1 1 Ilustración 6: Diagrama de clases de diseño de Controles 2.1.7. Vista Seguridad ParametrosSeguridad PERFIL_ADMINISTRADOR PERFIL_VISITANTE NOMBRE_PERFIL_DEFECTO DESCRIPCION_PERFIL_DEFECTO FRENTE_ANALISIS FRENTE_EXTRACCION FRENTE_EXPLOTACION FRENTE_SEGURIDAD LOGIN_ANALISIS LOGIN_EXTRACCION LOGIN_EXPLOTACION LOGIN_SEGURIDAD LOGIN_NO_ACCESO LOGIN_ERROR LOGIN_FAIL ADMIN_NAME ADMIN_PASS ADMIN_DESC ObjetoPerfil idPerfil IdObjeto nombrePerfil nombreObjeto Proyecto agregarTema() eliminarTema() modificarTema() buscarTema() buscarDimension() agregarFact() eliminarFact() modificarFact() buscarFact() (from general) Usuari oXPr oyecto idProyecto perfil EmpresaXUsuario idEmpresa perfil Permiso codigoFuncionalidad modulo nivel Usuario nombreUsuario contrasenha apellidosUsuario email perfil habilitado accesoAnalisis accesoExtraccion accesoExplotacion accesoSeguridad listaEmpresas listaProyectos Perfil permisos habilitado getPermiso() buscarPermisoXNombre() Funcionalidad idFuncionalidad codigoFuncionalidad modulo GestorUsuario listUsuCon listUsuarios idUsuarioSeteado agregarUsuario() modificarDatosUsuario() modificarUsuario() buscarUsuario() eliminarUsuario() eliminarUsuarioGestor() buscarUsuarioXNombre() buscarPerfilXNombre() GestorPerfil listPerfiles listPerfilesBus idPerfilSeteado agregarPerfil() buscarPerfil() modificarDatosPerfil() modificarPerfil() eliminarPerfil() eliminarPerfilGestor() buscarPerfilXNombre() GestorFuncionalidad listFuncionalidades listFuncionalidadesBus idFuncionalidadSeteada agregarFuncionalidad() buscarFuncionalidad() modificarFuncionalidad() eliminarFuncionalidad() eliminarFuncionalidadGestor() buscarFuncionalidadXNombre() ControlSeguridad gestorFuncionalidad gestorPerfil gestorUsuario agregarUsuario() getUsuarios() modificarUsuario() buscarUsuario() eliminarUsuario() getUsuarioPerfil() getUsuarioPermiso() getUsuarioXObjeto() agregarEmpresaUsuario() modificarEmpresaUsuario() eliminarEmpresaUsuario() buscarEmpresaUsuario() agregarProyectoUsuario() modificarProyectoUsuario() eliminarProyectoUsuario() buscarProyectoUsuario() validaUsuario() cambiarContrasenhaUsuario() conectarUsuario() desconectarUsuario() existeUsuario() getPerfiles() agregarPerfil() ... Ilustración 7: Diagrama de clases de diseño de Seguridad 3. Diagramas de secuencia Los diagramas de secuencias permiten tener una idea clara de la metodología usada por los desarrolladores y facilita posteriores procesos de mantenimiento y corrección, dado que permiten documentar procesos complicados de programación que pueden ser entendidos fácilmente por otros. Esta sección incluye los diagramas de secuencias relevantes que muestran el detalle de la interacción entre las clases que permiten el correcto funcionamiento de las funcionalidades propuestas en el Anexo B. 3.1. Paquete de seguridad 3.1.1. Caso de Uso Administrar Roles del Sistema : A n a lis ta : A p p le tA n a lis is : J S O b je c t : F a c e s S e r v le t : U s u a r io J S P : U s u a r io B e a n : C o n tr o lS e g u r id a d : G e s to r P e r fil p e r fil : P e r fil 1 : a d m in is tr a r P e r fil( ) 2 : ev a l ( ja va s c r ipt) 3 : [i f] e x ito 4 : fo w a r d ( ) 5 : s u b m it( ) 8 : a g r e g a r P e r fil( n o m b r e ,d e s c r ip c io n ,h a b ilita d o ) 9 : a c tio n E v e n t( e v t) 1 7 : d is p la y ( m e s s a g e ) 6 : c r e a te ( ) 7 : p o p u la te ( ) 1 0 : n u e v o A c tio n ( ) 1 6 : m e s s a g e 1 1 : a g r e g a r P e r fil( n o m b r e ,d e s c r ip c io n ,h a b ilita d o ) 1 5 : 1 3 : a g r e g a r P e r fil( p e r fil) 1 4 : 1 2 : n e w ( ..) Ilustración 8: Diagrama de secuencias – Administrar Roles del Sistema 3.1.2. Caso de Uso Administrar Permisos : Analis ta : Appl etA nali s is : J SObjec t : F ac es Serv let : Perm is oBeanJ SP : Perm is os Bean : C ontrolSeguridad : Ges torPerf il perf il : Perf il perm is o : Perm is o 1: adm inis t rarPerm isos () 2: ev al(jav as c ript ) 3: [ if ] ex ito 4: f oward() 5: s ubm it () 8: adm inis t rarPerm is o(idPerf il, nom bre, des c ripc ion, c odigoF unc ionalidad, m odulo, niv el) 9: ac t ionEv ent(ev t ) 24: dis play (m es s age) 6: c reate() 7: populate() 10: nuev oAc t ion() 23: m es sage 11: adm inis t rarPerm is o(. . . ) 22: 12: bus c arPerf il(idPerf il) 14: perf il 13: bus c arPerf il(idPerf il) 15: new(. . ) 16: agregarPerm is o( perm i s o) 17: agregarPerm is o(perm is o) 18: 19: m odif ic arPerf il(perf il) 20: m odif ic arPerf il(perf il) 21: Ilustración 9: Diagrama de secuencias – Administrar Permisos 3.1.3. Caso de Uso Administrar Usuarios del Sistema : Analista : AppletAnalisis : JSObject : FacesServlet : UsuarioJSP : UsuarioBean : ControlSeguridad usuario : Usuario : GestorUsuario perfil : Perfil 1: administrarUsuario() 2: eval(javascript ) 3: [if] exito 4: foward() 5: submit() 8: aministrarUsuario(nombre,descripcion,nombreUsuario,apellidosUsuario,contrasenha,email,habilitado,accesos) 9: actionEvent(evt) 20: dis play(message) 6: create() 7: populat e( ) 10: nuevoAction() 19: mess age 11: agregarUsuario(..) 18: 16: agregarUsuario(usuario) 17: 12: new(..) 13: new(..) 14: setPerfil(perfil) 15: setPerfil(perfil) Ilustración 10: Diagrama de secuencias – Administrar Usuarios del Sistema 3.1.4. Caso de Uso Administrar Roles de la Empresa : Analista : AppletAnalisis : JSObject : FacesServlet : EmpresaUsuarioJSP : EmpresaUsuarioBean : ControlSeguridad : GestorUsuario : GestorPerfil perfil : Perf il empresaxusuario : EmpresaXUsuario usuario : Usuario 1: administrarRolesEmpresa() 2: eval(javascript) 3: [if] exito 4: foward() 5: submi t() 8: administrarRolesEmpresa(idEmpresa, idUsuario, idPerfil) 9: actionEvent(evt) 26: display(message) 6: create() 7: populate() 10: nuevoAction() 25: mess age 11: agregarEmpresaUsuario(.. ) 24: 12: buscarUsuario(idUsuario) 13: buscarUsuario(idUsuario) 14: usuario 22: modificarUsuario(usuario) 23: 15: buscarPerfil(idPerfil) 17: perfil 16: buscarPerfil(idPerfil) 18: new(...) 19: agregarListaEmpresas(empresaxusuario) 20: agregarListaEmpresas(empresaxusuario) 21: Ilustración 11: Diagrama de secuencias – Administrar Roles de la Empresa 3.1.5. Caso de Uso Administrar Roles del Proyecto : Analista : AppletAnalisis : JSOb ject : FacesServlet : ProyectoUsuarioJSP : ProyectoUsuarioBean : Control Segu ridad : GestorUsuario : GestorPerfil perfi l : Perfil proyectoxusuario : ProyectoXUsua rio usuario : Usuario 1: administrarRolesProyecto() 2: eval(javascript) 3: [if] exito 4: foward() 5: submit() 8 : adm inistrarRol esPro yecto(idProyecto, idUsu ari o, i dPerfi l ) 9: actionEvent(evt) 26: display(message) 6: create() 7 : po pula te() 10: nuevoAction() 25: message 11: agregarProyectoUsuario(..) 24: 15 : buscarPerfi l(idPerfi l) 17: pe rfi l 16: buscarPerfi l(idPerfil) 12: buscarUsuario(idUsuario) 13: buscarUsuario(idUsuario) 14: usuario 1 8: new(. .. ) 19: agregarListaProyectos(proyectoxusuario) 20: agregarListaProyectos(proyectoxusuario) 21: 22: modificarUsuario(usuario) 23: Ilustración 12: Diagrama de secuencias – Administrar Roles del Proyecto 3.2. Paquete Diseño de modelo dimensional 3.2.1. Caso de Uso Administrar Empresa : A n a l i sta : A p p l e tA n a l i si s : J S O b j e c t : F a ce sS e rv l e t : N u e v a E m p re sa J S P : E m p re sa Be a n : C o n tro l E m p re sa e m p re sa : E m p re sa : G e sto rE m p re sa 1 : c re a rE m pr e sa( ) 2 : ev al (j av a sc ri pt ) 3 : [ i f ] e x i to 4 : fo w a rd () 5 : su b m i t() 8 : c re a rE m p re sa (n o m b re , R u c , D i re cc i o n , T e l e fo n o , R a z o n S o c i a l , R e p re se n ta n te L e g a l ) 6 : c re a te () 7 : p o p u l a te () 9 : ac t i o n E v en t (e v t) 1 0 : n u e v o A c t i o n () 1 1 : a g re g a rE m p re sa (. . . ) 1 2 : n e w (. . . ) 1 3 : a g re g a rE m p re sa (e m p re sa ) 1 7 : d i sp l a y (m e ssa g e ) 1 5 : 1 6 : m e ssa g e 1 4 : Ilustración 13: Diagrama de secuencias – Administrar Empresa – Crear Empresa : Ana l ista : Apple tAna l isis : JSObject : FacesServle t : Edi ta rEm presaJSP : Em presaBean : Control Em presa : GestorEm presa em presa : Em presa : B ACo ntro lXM L em presaBean : XM LBean : Contro lXm lM aker 1 : guardarEm presa() 2 : eva l (javascrip t) 3 : [i f] exi to 4 : foward() 5 : subm i t() 8 : guardarEm presa(nom bre , Ruc, Di reccion , T ele fono, Razon Socia l , Representan teLega l ) 9 : actionEvent(evt) 25 : disp lay(m essage) 6 : crea te() 7 : popu la te () 10 : m od i ficarAction() 24 : m essa ge 11: guardarEm presa(...) 23 : 15 : se tValores(...) 12 : buscarE mpresa( idE mp resa) 13: buscarEm presa(idEm presa) 14: em presa 16: guardarEm presa(em presa) 22: 17 : new() 18 : generarBean(em presa) 19: em presaBean 20: escrib i rBean(em presaBean) 21: guardarProyecto() *[para cada proyecto] Ilustración 14: Diagrama de secuencias – Administrar Empresa – Guardar Empresa 3.2.2. Caso de Uso Administrar Proyecto : Analista : AppletAnalisis : JSObject : FacesServl et : NuevoProyectoJSP : ProyectoBean : Control Proyecto : ControlEmpresa : GestorEmpresa empresa : Empresa proyecto : Proyecto : GestorProyecto 1: crearProyecto() 2: eval(javascript) 3: [i f] exito 4: foward() 5: submit() 8: crearProyecto(nombre, descripcion) 9: actionEvent(evt) 24: display(message) 6: create() 7: populate() 10: nuevoAction() 23: message 11: agregarProyecto(...) 22: 12: buscarEmpresa(idEm presa) 13: buscarEmpresa(idEmpresa) 14: buscarEmpresa(idEmpresa) 15: empresa 16: em presa 17: new() 18: agregarProyecto(proyecto) 19: agregarProyecto(proyecto) 20: 21: Ilustración 15: Diagrama de secuencia - Administrar proyectos – Crear proyecto : A n a l i sta : A p p le tA n a li sis : JS Ob j e ct : Fa ce sS e rv l e t : E d i ta rP ro ye cto JS P : P ro ye cto B e a n : Co n tro lP ro ye cto : Co n tro lE m p re sa : G e sto rE m p re sa e m p re sa : E m p re sa : G e sto rP ro ye cto p ro ye cto : P ro ye cto : B A Co n tro lX M L p ro ye cto B e a n : X M L B e a n : Co n tro lX m lM a ke r 1 : g u a rd a rP ro ye cto () 2 : e va l (j a va scri p t) 3 : [ i f] e xi to 4 : fo wa rd () 5 : su b m i t() 8 : g u a rd a rP ro ye cto (n o m b re , d e scri p ci o n l ) 9 : a ct i o n E ve n t(e vt) 3 4 : d i sp l a y(m e ssa g e ) 6 : cre a te () 7 : p o p u la te () 1 0 : m o d i fi ca rA ct i o n () 3 3 : m e ssa g e 1 1 : g u a rd a rP ro ye cto (i d E m p re sa , i d P ro ye cto , n o m b re , d e scri p ci o n ) 3 2 : 1 2 : b u sca rE m p re sa (i d E m p re sa ) 1 6 : em p re sa 1 3 : b u sca rE m p re sa (i d E m p re sa ) 1 4 : b u sc a rEm p re sa (i d E m p re sa ) 1 5 : e m p re sa 1 7 : g u a rd a rP ro ye cto (i d P ro ye cto ) 3 1 : 1 8 : b u sca rP ro ye cto (i d P ro ye c to ) 1 9 : b u sca rP ro ye cto (i d P ro ye cto ) 2 0 : p ro ye c to 2 1 : se te a rV a lo re s(...) 2 2 : g u a rd a rP ro ye cto (p ro ye cto ) 3 0 : 2 3 : n e w() 2 4 : g e n e ra rB e a n (p ro ye cto ) 2 5 : P roy e ct o B e a n 2 6 : e scri b i rB e a n (p ro ye cto B e a n ) 2 7 : gu a rda r Te m a ( ) 2 8 : g u a rd a rJo b s() 2 9 : g u a rd a rP ro g ra m a cio n e s() *[p a ra ca d a te m a ] *[ p ar a ca d a jo b ] *[p a ra ca d a p ro g ra m a cio n ] Ilustración 16: Diagrama de secuencia - Administrar proyectos – Guardar proyecto 3.2.3. Caso de Uso Configurar buenas prácticas de modelamiento : A nalista : A ppletA nalisis : JS Object : FacesS ervlet : B uenasP racticasJS P : B uenasP racticasB ean : ControlP royecto : ControlE mpresa : GestorE mpresa empresa : E mpresa : GestorP royecto proyecto : P royecto : B A C ontrolX ML buenaP ractica : B uenaP ractica 1: configurarB uenasP racticas() 2: eval(javascript) 3: [if] exito 4: foward() 5: submit() 8: conf igur arB uenasPr acti cas(opci ones) 9: actionE vent(evt) 30: display(message) 6: create() 7: populate() 10: nuevoA ction() 29: message 11: configurarB uenasP racticas(...) 28: 12: buscarE mpresa(idE mpresa) 16: empresa 13: buscarE mpresa(idE mpresa) 14: buscarE mpresa(idE mpresa) 15: empresa 23: guardarP royecto(proyecto) 27: 24: guardarP royecto(proyecto, empresa) 25: guar darP royect o(pr oyecto) 26: 17: buscarP royecto( idP royecto) 18: buscarP royecto(idP royecto) 19: proyecto 20: proyecto 22: setearB uenasP racticas(buenaP ractica) 21: new (opciones) Ilustración 17: Diagrama de secuencia - Configurar buenas prácticas de modelamiento 3.2.4. Caso de Uso Administrar Objetos : Analista : AppletAnalisis : JSObject : FacesServlet : PaginaJSP : PaginaBean : Control objeto : Objeto 1: dobleClickObjeto() 2: eval(javascript) 3: [if] exito 4: foward() 5: submit() 6: create() 7: populate() 8: buscarObjeto() 9: objeto 10: getDatos() 11: datos 12: cargarCampos 13: pagina cargada 14: pagina Ilustración 18: Diagrama de secuencia - Administrar objetos 3.2.5. Caso de Uso Administrar Temas : Anal ista : AppletAnal isis : JSObject : FacesServlet : Nu evoTemaJS P : TemaBean : ControlTema : ControlEmp resa : Ge storEmpre sa empresa : Empresa : GestorProyecto proyecto : Proyecto tema : T ema : GestorTema 1: crearTema() 2: eval(javascript) 3: [i f] exi to 4: foward() 5: sub mit() 8: crearTema(nombre, descripcion) 9: actionEvent(evt) 29: display(message) 6: create() 7: populate() 10: nuevoAction() 28: message 11: agregarTema(...) 27: 12: buscarEmpresa(idEmpresa) 16: empresa 13: buscarEmpresa(idEmpresa) 14: buscarEmpresa(idEmpresa) 15: empresa 17 : busc arPro yecto(i dProyecto ) 18: buscarProyecto(idProyecto) 19: buscarProyecto(idProyecto) 20: proyecto 21: proyecto 22: new(nombre, descripcion) 23: agregarTema(tema) 24: agregarTema(tema) 25: 26: Ilustración 19: Diagrama de secuencia - Administrar temas – Crear tema : A na lis t a : A pple tA nalis is : J S O bjec t : F ac es S erv le t : E d ita rTem aJ S P : Tem aB ean : C on t ro lTem a : C ont ro lE m pres a : Ges t or E m pres a em pres a : E m pres a : G es to rP roy ec t o p roy ec to : P roy ec t o : G es to rTem a : B A C on t ro lXML : C on t ro lXm lMak e r t em aB ean : XMLB ean t em a : Tem a * [p ara c ada ind ic ador] * [ pa ra c ada f ac t ] * [ pa ra c ada d im ens ionx t em a ] 1 : guarda rP roy ec t o() 2: ev al(jav a s c rip t ) 3: [ if ] e x it o 4: f oward() 5: s ubm it () 8 : guarda rTem a(nom bre , des c ripc ionl) 9: ac t ionE v en t (ev t ) 40: d is p lay (m es s age ) 6 : c rea te () 7 : popula te () 10 : m od i f ic a r Ac t ion( ) 39: m es s age 11: gua rdarTem a(id E m pres a, idP roy ec to , idTem a, nom bre, des c ripc ion ) 38: 12 : bus c arE mpres a(idE m pres a ) 16: em pres a 13 : bus c arE m pres a (idE m pres a) 14: bus c a rE m pres a(idE m pres a ) 15: em pres a 17: bus ca rP roy e ct o(idP roy ec t o) 18 : bus c arP roy ec to (idP roy ec to ) 19 : bus c arP roy ec to (idP roy ec t o) 20 : proy ec t o 31 : es c rib irB ean(tem aB ean) 21: p roy ec to 22: gua rdarTem a(. . . ) 23: bus c a rTem a(idTem a) 24 : bus c arTem a(idTem a) 25 : tem a 26: s et ea rV a l o res (. .. ) 27 : guarda rTem a( tem a) 28: new() 29: generarB ean(tem a) 30: t em aB ean 32: gua rdarD ime ns iones x Tem a() 33 : guarda rI nd ic ado res () 34 : guarda rF ac t () 35: gua rdarD ibujo () 36: 37: Ilustración 20: Diagrama de secuencia - Administrar temas – Guardar tema 3.2.6. Caso de Uso Administrar Dimensiones : Anal ist a : AppletAnalisis : JSObject : FacesServ let : Nu evaDimensionJSP : DimensionBean : ControlDimension : ControlEmpresa : GestorEmpresa empresa : Empresa dimension : Dimension : GestorDimension : GestorTabla campoId : Campo 1: cr earDimension() 2: ev al(jav ascript) 3: [if ] exito 4: f oward() 5: subm it() 8: crearDimension(nombre, descripcion, tipo, tipoActualizacion) 9: act ionEv ent (ev t) 26: display (message) 6: create() 7: populate() 10: nuev oAction() 25: message 11: agregarDimension(...) 24: 12: buscarEmpresa(idEmpresa) 16: empresa 13: buscarEmpresa(idEmpresa) 14: buscarEmpresa(idEmpresa) 15: empresa 20: agregarDimension(dimension ) 23: 21: agregarDimension(dimension) 17: new() 22: agregarTabla(dimension) 18: new() 19: agregarCampoId(campoId) Ilustración 21: Diagrama de secuencia - Administrar dimensiones – Crear dimensión : A nali sta : A ppletA na lisis : JSOb ject : FacesS ervlet : E d ita rD im ensi onJSP : D imensionB ean : Contro lD imension : C ontro lE m presa : GestorE mpresa em presa : E mpresa : GestorD im ension dimension : D imension : B A C ontro lX M L dimensionB ean : X M LB ean : C ontro lX m lMaker *[para cada a tributo] *[para cada je rarquia ] 1 : guardarD im ension() 2 : eval(javascript) 3: [if] exito 4: foward() 5: subm it() 8: guardarDi mesion( idD imensi on,...) 9 : act ionE vent(evt) 34: d isp lay(message) 6 : create() 7: populate() 10: m odi fi ca rA cti on() 33 : message 11 : guardarD imension(...) 32 : 12: busca rE mpresa(id Em presa ) 16: empresa 13 : busca rE mpresa(id Em presa ) 14 : buscarE m presa(idE m presa) 15: em presa 17 : gua rdarD imensio n(idD ime nsion) 31: 18: busca rD im ensio n(i dDi m ension) 19: buscarD im ension (idD imension) 20: d imension 21: setearValore s(. ..) 22 : guardarD imension(d imension) 30: 27 : guardarA tributo( ) 28 : gua rdarJera rquia() 24 : ge nerarB e an(di mension) 25: d imensionB ean 26: escri birB ean(dime nsionB ean) 23: new() 29 : gua rdarTabla() Ilustración 22: Diagrama de secuencia - Administrar dimensiones – Guardar dimensión : Analista : AppletAnalisis : AppletServ let : ControlTema : ControlEmpresa : GestorEmpresa empresa : Empresa : GestorProy ecto proy ecto : Proy ecto : GestorTema tema : Tema : GestorDimension dimensionxtema : DimensionXTema 1: incluirDimension(idEmpresa, idProy ecto,idTema,idDimension) 35: getR esult s(response) 2: getConnection() 5: incluirDimension(idEmpresa, idProy ecto,idTema,idDimension) 6: buscarEmpresa(idEmpresa) 7: buscarEmpresa(idEmpresa) 8: buscarEmpresa(idEmpresa) 9: empresa 10: empresa 11: busc arProy ecto( idProy ecto) 12: busc arProyect o(idProyect o) 13: busc arProyect o(idProyect o) 14: proy ecto 15: proy ecto 16: buscarTema(idTema) 17: busc arTem a( idTem a) 18: buscarTema(idTema) 19: tema 20: tema 24: if [noExiste] buscarDimension() 25: busc arD imension( idD im ension) 26: buscarDimension(idDimension) 27: dimension 28: dimension 21: buscarDimension(idDimension) 23: noExiste 22: busc arD im ension() 29: if [dimension] new() 30: agregarDimensionTema(dimension) 31: agregarDimensionTema(dimension) 32: 33: 34: 3: conexion 4: incluirDimension(idEmpresa, idProy ecto,idTema,idDimension, conexio) Ilustración 23: Diagrama de secuencia - Administrar dimensiones - Incluir dimensión en tema 3.2.7. Caso de Uso Administrar Jerarquías : Analista : AppletAnalisis : JSObject : FacesServ let : Nuev aJerarquiaJSP : JerarquiaBean : ControlDimension : ControlEmpresa : GestorEmpresa empresa : Empresa : GestorDimension dimension : Dimension jerarquia : Jerarquia 1: crearJerarquia() 2: ev al(jav ascript) 3: [if ] exito 4: f oward() 5: submit() 8: crea rJerarquia(idEmpresa, idDimension, nombre, des cripcion, atributos) 9: actionEv ent(ev t) 29: di sp lay (message ) 6: create() 7: populate() 10 : nu ev o Action() 28: mess ag e 11: agregarJerarquia(...) 27: 12: buscarEmpresa(idEmpresa) 16 : em presa 13: buscarEmpresa(idEmpresa) 14: buscarEmpresa(idEmpresa) 15: empresa 17: buscarDimension(idDimension) 18: buscarDimension(idDimension) 19: buscarDimension(idDimension) 20: dimension 21: dimension 22: new(nombre, descripcion, atributos) 23: agregarJerarquia(jerarquia) 24: agregarJerarquia(jerarquia) 25: 26: guardarDimension(dimension) Ilustración 24: Diagrama de secuencia - Administrar jerarquías 26 3.2.8. Caso de Uso Administrar Atributos : A nalis t a : A pplet A nalis is : JS O bjec t : F acesS erv let : Nu evoA t rib ut oJSP : A t ributoB ean : Cont rolD im ens ion : C ont rolE m presa : G es torE m presa em presa : E m presa : G es t orD im ens ion dim ens ion : D im ens ion at r ibuto : A t r ibuto cam poNom bre : Cam po cam poI d : Cam po 1: c rearA t r ibut o() 2: eval(javasc r ipt ) 3: [ if ] ex it o 4: f oward( ) 5: subm it () 8: cre arA t r ibu to( idEm presa, idD ime ns ion, n om bre, descrip c ion) 9: ac t ionE vent (ev t ) 36: display (m essa ge) 6: c reat e() 7: populat e() 10: nuevoA c t ion() 35: m essage 11: agregarA t r ibut o(. . . ) 34: 12: bu scarEm presa(i dE m pre sa) 16: em presa 13: buscarE m presa( idE m presa) 14: buscarE m presa( idE m presa) 15: em presa 17: buscarD im ens ion(idD im ens ion) 21: dim ens ion 32: guardarD im ens ion(dim ens ion) 18: buscarD im ens ion( idD im ens ion) 19: buscarD im ens ion( idD im ens ion) 20: dim ens ion 23: agregarA t r ibut o(at r ibut o) 24: agregarA t r ibuto(at ributo) 25: 22: newA t ributo(nom bre, desc r ipc ion) 33: guardarT abla(dim ens ion) 26: new() 29: new() 2 7: agre garC am poId(ca m poI d ) 28: agrega rCam po Id(cam poI d) 30: agrega rCam po Nom br e(cam p oNom b re) 3 1: agreg arCam poNom b re(cam poN om bre) Ilustración 25: Diagrama de secuencia - Administrar atributos - Crear atributo 27 : Anal ista : Ap pletAn ali sis : JS Obj ect : FacesServlet : EditarJerarquiaJSP : Jerarqu iaB ean : ControlDimension : ControlEmpresa : GestorEmp resa empresa : Empresa : GestorDimension dimension : Dimension atributo : Atributo jerarquia : Jerarquia 1: incluirAtributoJerarquia() 2: eval(javascript) 3: [i f] exi to 4: foward() 5: submit() 8: agregarAtributoJerarquia(idEmpresa, idDimension, idAtributo, idJerarquia) 9: actionEvent(evt) 34: display(message) 6: create() 7: populate() 10: nuevoAction() 33: message 11: agregarAtributoJerarquia(...) 32: 12: buscarEm presa(idEmpresa) 16: empresa 13: buscarEmpresa(idEmpresa) 14: buscarEmpresa(idEmpresa) 15: emp resa 17: buscarDimension(idDimension) 21: dimension 31: guardarDimension(dimension) 18: buscarDimension(idDimension) 19: buscarDimensi on(idDimensio n) 20: dimension 22: buscarAtributo(idAtributo) 25: buscarJerarquia(idJerarquia) 23: buscarAtributo(idAtributo) 26: buscarJerarquia(idJerarquia) 24: atrib uto 27: jerarqui a 28: agregarAtributo(jerarquia) 29: agregarAtributo (jerarquia) 30: Ilustración 2: Diagrama de secuencia - Administrar atributos - Incluir atributo en jerarquía 28 3.2.9. Caso de Uso Administrar Facts : Anali sta : AppletAnalisis : JSObject : FacesServlet : NuevaFactJSP : FactBean : Control Fact : ControlEmpresa : GestorEmpresa empresa : Empresa : GestorProyecto proyecto : Proyecto : GestorTema tema : Tema fact : Fact : GestorFact 1: crearFact() 2: eval(javascript) 3: [if] exito 4: foward() 5: submit() 8: crearFact(idEmpresa, idProyecto, idTema, nombre, descripcion) 9: actionEvent(evt) 35: display(message) 6: create() 7: populate() 10: nuevoAction() 34: message 11: agregarFact(...) 33: 12: buscarEmpresa(idEmpresa) 16: empresa 13: buscar Empresa(i dEmpresa) 14: buscarEmpresa(idEmpresa) 15: empresa 17: buscarProyecto(idProyecto) 21: proyecto 18: buscar Pr oyecto( idProyecto) 19: buscarProyecto(idProyecto) 20: proyecto 22: buscarTema(idTema) 23: buscarTema(idTema) 24: buscarTema(idTema) 25: tema 26: tema 27: new(nombre, descripcion) 28: agregarFact(fact) 29: agregarFact(fact) 30: agregarFact (fact) 31: 32: Ilustración 27: Diagrama de secuencia - Administrar facts – Crear Fact. 29 : Analista : AppletAnalisis : JSObject : FacesServlet : EditarFactJSP : FactBean : ControlFact : ControlEmpresa : GestorEmpresa empresa : Empresa : GestorProyecto proyecto : Proyecto : GestorTema tema : Tema : GestorFact fact : Fact : BAControlXML : ControlXmlMaker factBean : FactBean 1: guardarFact() 2: eval(javascript) 3: [if] exito 4: foward() 5: submit() 8: guardarFact(idEmpresa, idProyecto, idTema, nombre, descripcion, medidas) 9: actionEvent(evt) 42: display(message) 6: create() 7: populate() 10: nuevoAction() 41: message 11: editarFact(...) 40: 12: buscarEmpresa(idEmpresa) 16: empresa 13: buscarEmpresa(idEmpresa) 14: buscarEmpresa(idEmpresa) 15: empresa 17: buscarProyecto(idProyecto) 21: proyecto 18: buscarProyecto(idProyecto) 19: buscarProyecto(idProyecto) 20: proyecto 22: buscarTema(idTema) 26: tema 23: buscarTema(idTema) 24: buscarTema(idTema) 25: tema 27: guar darFact(i dFact) 28: buscarFact(idFact) 29: buscarFact(idFact) 30: fact 31: setearValores(...) 32: guardar Fact(fact) 33: new() 34: generarBean(fact) 35: factBean 36: escribirBean(factBean) 37: guardarTabla() 38: 39: Ilustración 28: Diagrama de secuencia - Administrar facts – Guardar fact 30 : Analista : AppletAnalisis : Apple tServ let : ControlTema : ControlEmpresa : GestorEmpresa empresa : Empresa : GestorProy ecto proy ecto : Proy ecto : Ges torTem a tema : Tema : GestorFact f act : Fac t 1: incluirFact(idEmpresa, idProy ecto,idTema,idFact) 26: getResults(response) 4: incluirFact(idEmpresa, idProy ecto,idTema,idFact, conexion) 5: incluirFact(idEmpresa, idProy ecto,idTema,idFact) 27: 28: 6: buscarEmpresa(idEmpresa) 10: em presa 7: bus carEmpresa(idEmpres a) 8: buscarEmpresa(idEmpresa) 9: empresa 11: buscarProy ecto(idProy ecto) 15: proy ecto 12: buscarProy ecto(idProy ecto) 13: buscarProy ecto(idProy ecto) 14: proy ecto 16: buscarTema(idTema) 20: tema 17: buscarTema(idTema) 18: buscarTema(idTema) 19: tema 21: new() 22: agregarFact(f ac t) 23: agregarFact(f act) 24: 25: 2: getConnection() 3: conexion Ilustración 29: Diagrama de secuencia - Administrar facts – Incluir fact en Tema 31 3.2.10. Caso de Uso Administrar Medidas : Analista : AppletAnalisis : JSObject : FacesServlet : NuevaMedidaJSP : MedidaBean : ControlFact : Control Empresa : GestorEmpresa empresa : Empresa : GestorProyecto proyecto : Proyecto : GestorTema tema : Tema : GestorF act fact : Fact medida : Medida campo : Campo 1: crearMedida() 2: eval(javascript) 3: [if] exito 4: foward() 5: submit () 8: crearMedida(idEmpresa, idProyecto, idTema, idFact, nombre, descripcion) 9: actionEvent(evt) 40: display(message) 6: create() 7: populate() 10: nuevoAction() 39: message 11: agregarMedida(...) 38: 12: buscarEmpresa(idEmpresa) 16: empresa 13: buscarEmpresa(idEmpresa) 14: buscarEmpresa(idEmpresa) 15: empresa 17: buscarProyecto(idProyecto) 21: proyecto 18: buscarProyecto(idProyecto) 19: buscarProyecto(idProyecto) 20: proyecto 22: buscarTema(idTema) 26: tema 23: buscarTema(idTema) 24: buscarTema(idTema) 25: tema 27: buscarFact(idFact) 28: buscarFact(idFact) 29: buscarFact(i dFact) 30: fact 31: fact 32: agregarMedida(nombre, descri pcion) 33: new(nombre, descripcion) 34: agregarMedi da(medida) 35: new() 36: agregarCampo(campo) 37: Ilustración 30: Diagrama de secuencia - Administrar medidas – Crear medida 32 3.2.11. Caso de Uso Administrar Indicadores : Analista : AppletAnalisis : JSObject : FacesServlet : NuevoIndicadorJSP : IndicadorBean : ControlFact : ControlEmpresa : GestorEmpresa empresa : Empr esa : GestorProyecto proyecto : Proyecto : GestorT ema tema : Tema indicador : Indicador 1: crearIndicador() 2: eval( javascr ipt) 3: [if] exito 4: foward() 5: submit() 8: crearIndicador(idEmpresa, idProyecto, idTema, nombre, descripcion, expresion, etiqueta) 9: actionEvent(evt) 33: display(message) 6: create() 7: populate() 10: nuevoAction() 32: message 11: agregarIndicador(...) 31: 12: buscarEmpresa( idEmpr esa) 16: empresa 13: buscarEmpresa(idEmpresa) 14: buscarEmpresa(idEmpresa) 15: empresa 17: buscarProyecto(idProyecto) 21: proyecto 18: buscarProyecto(idProyecto) 19: buscarProyecto(idProyecto) 20: proyecto 22: buscarTema(idTema) 26: tema 23: buscarTema(idTema) 24: buscar Tema(i dTema) 25: tema 28: agr egar Indicador(indicador) 30: 27: new(nombre, descripcion, expresion, etiqueta) 29: agregarIndicador(indicador) Ilustración 31: Diagrama de secuencia - Administrar indicadores – Crear indicador 33 3.2.12. Caso de Uso Administrar Formato de Datos : Analista app : AppletAnalisis mostrarResultado : ServletAnalisis gestor : GestorFormato : Formato : BAControlFormato 1: clicCrearFormato 4: ingresaDatosFormato 2: especificarTipoDato 3: formulario a llenar 7: crearFormato(datos) 10: new( ) 11: especificaAtributos 12: mostrarResultado 13: mostrarResultado 14: mostrarResultado 5: getConnection( ) 6: conexión 8: crearFormato(datos) 9: agregarFormato( ) Ilustración 32: Diagrama de secuencia - Administrar formatos – Crear formato 34 3.2.13. Caso de Uso Asignar Formato de Datos a Campo : Analista app : AppletAnalisis servletAna : ServletAnalisis gestor : GestorFormato dim : Dimension atr : Atributo : BAControlFormato 1: clicAsignarFormato 2: lista de campos 3: modalidadEstandarizacion 4: [modalidad=crearFormato]AdministrarFormatoDatos 5: [modalidad=predefinido]obtenerFormatoPredefinido 6: nombreFormato 7: clicAceptar 10: asignarFormatoCampo(datos ) 21: mostrarResultado 8: getConnection( ) 9: conexión 11: asignarFormatoCampo 12: buscarFormato( ) 13: formato 14: buscarAtributo( ) 15: atributo 16: asignarFormato 17: atributo modificado 18: modificarAtributo( ) 19: mostrarResultado 20: mostrarResultado Ilustración 33: Diagrama de secuencia – Asignar formato de datos a campo 35 3.2.14. Caso de Uso Exportar Gráfico : Analista : AppletAnalisis exporter:JPan elImageExport chooser : JFileChooser screenImage : ScreenImage 1: clickExportarGraf ico() 2: new() 3: exportPanel() 4: new() 5: showOpenDialog() 6: showOpenDialog() 7: 8: 9: 10: guardar(nombre, tipoArchiv o) 11: guardar(nombre, tipoArchiv o) 12: new() 13: createImage(panel) 14: c reateI mage(pane l, tipoArch iv o) 15: 16: Ilustración 34: Diagrama de secuencia – Exportar gráfico 36 3.2.15. Caso de Uso Buscar Empresa : Ana li sta : AppletAnalisis : JSObject : FacesServlet : AdministrarEmpresaJSP : GestorEmpresaBean : ControlEmpresa : GestorEmpresa 1: buscarEmpresa() 2: eval(javascript) 3: [if] exito 4: foward() 5: submit() 8: buscarEmpresa(nombre) 9: actionEvent(evt) 17: display(listaEmpresas) 6: create () 7: populate() 10: buscarAction() 16: l istaEmpresas 11: buscarEmpresa(nombre) 12: buscarEmpresa(nombre) 13: buscarEmpresa(nombre) 14: l istaEmpresas 15: listaEmpresas Ilustración 35: Diagrama de secuencia – Buscar Empresa 37 3.2.16. Caso de Uso Buscar Proyecto : Analista : AppletAnalisis : JSObject : FacesServlet : AdministrarProyectoJSP : GestorProyectoBean : ControlProyecto : ControlEmpresa : GestorEmpresa empresa : Empresa : GestorProyecto 1: buscarProyecto() 2: eval(javascript) 3: [if] exito 4: foward() 5: submit() 8: buscarProyecto(idEmpresa, nombre) 9: actionEvent(evt) 24: display(listaProyectos) 6: create() 7: populate() 10: buscarAction() 23: listaProyectos 11: buscarProyectoXNombre(idEmpresa, nombre) 22: listaProyectos 12: buscarEmpresa(idEmpresa) 13: buscarEmpresa(idEmpresa) 14: buscarEmpresa(idEmpresa) 15: empresa 16: empresa 17: buscarProyectoxNombre(nombre) 18: buscarProyectoxNombre (nombre) 19: buscarProyectoxNombre (nombre) 20: listaProyectos 21: listaProyectos Ilustración 36: Diagrama de secuencia – Buscar Proyecto 38 3.2.17. Caso de Uso Buscar Tema : Analista : AppletAnalisis : JSObject : FacesServ let : AdministrarTemaJSP : GestorTemaBean : ControlProy ecto : ControlEmpresa : GestorEmpresa empresa : Empresa : GestorProy ecto proy ecto : Proy ecto : GestorProy ecto 1: buscarTema() 2: ev al(jav ascript) 3: [if ] exito 4: f oward() 5: submit() 8: buscarTema(idEmpresa, nombre) 9: actionEv ent(ev t) 30: display (listaTemasFinal) 6: create() 7: populate( ) 10: buscarAction() 29: listaTemasFinal 11: getListaTemas(idEmpresa, nombre) 28: listaTemasFinal 12: buscarEmpresa(idEmpresa) 16: em presa 13: buscarEmpresa(idEmpresa) 14: buscarEmpresa(idEmpresa) 15: empresa 17: obtenerTemas() 21: l ist aProyect os 18: getProy ectos() 19: getProy ectos() 20: listaProy ectos 22: buscarTemaxnombre(nombre) 23: buscarTemaxnombre(nombre) 24: buscarTemaxnombre(nombre) 25: listaTemas 26: listaTemas 27: agregarList aFinal(listaTemas) *Para cada proy ecto Ilustración 37: Diagrama de secuencia – Buscar Tema 39 3.2.18. Caso de Uso Buscar Fact : Analista : AppletAnalisis : JSObject : FacesServ let : AdministrarFactJSP : GestorFactBean : ControlTema : ControlEmpresa : GestorEmpresa empresa : Empresa : GestorProy ecto proy ecto : Proy ecto : GestorProy ecto tema : Tema : GestorFact *Para cada proy ecto 1: buscarFact() 2: ev al(jav ascript) 3: [if ] exito 4: f oward() 5: submit() 8: buscarFact(idEmpresa, nombre) 9: actionEv ent(ev t) 35: display (listaFactsFinal) 6: create() 7: populate() 10: buscarAction() 34: listaFactsFinal 11: getListaFacts(idEmpresa, nombre) 33: listaFactsFinal 32: agregarListaFinal(listaFacts) 12: buscarEmpresa(idEmpresa) 16: empresa 13: buscarEmpresa(idEmpresa) 14: buscarEmpresa(idEmpresa) 15: empresa 17: obtenerTemas() 21: listaProy ectos 18: getProy ectos() 19: getProy ectos() 20: listaProy ectos 22: getTemas() 26: listaTemas 23: getTemas() 24: getTemas() 25: listaTemas 27: buscarFactxnombre(nombre) 28: buscarFactxnombre(nombre) 29: buscarFactxnombre(nombre) 30: listaFacts 31: listaFacts * Para cada tema Ilustración 38: Diagrama de secuencia – Buscar Fact 40 3.2.19. Caso de Uso Buscar Dimensión : Analista : AppletAnalisis : JSObject : FacesServlet : AdministrarDimensionJSP : GestorDimensionBean : ControlDimension : ControlEmpresa : GestorEmpresa empresa : Empresa : GestorDimension 1: buscarDimension() 2: eval(javascript) 3: [if] exito 4: foward() 5: submit() 8: buscarDimension(idEmpresa, nombre) 9: actionEvent(evt) 24: display(llistaDimensiones) 6: create() 7: populate() 10: buscarAction() 23: llistaDimensiones 11: buscarDimensionXNombre(idEmpresa, nombre) 22: llistaDimensiones 12: buscarEmpresa(idEmpresa) 16: empresa 13: buscarEmpresa(idEmpresa) 14: buscarEmpresa(idEmpresa) 15: empresa 17: buscarDimensionxNombre(nombre) 21: llistaDimensiones 18: buscarDimensionxNombre(nombre) 19: buscarDimensionxNombre(nombre) 20: llistaDimensiones Ilustración 39: Diagrama de secuencia – Buscar Dimensión 41 3.2.20. Caso de Uso Buscar Formato de datos : Analista : AppletAnalisis : JSObject : FacesServlet : AdministrarFormatoJSP : GestorFormatoBean : ControlDimension : ControlEmpresa : GestorEmpresa empresa : Empresa : GestorTabla tabla : Tab la formato : BAFormato 1: buscarFormato() 2: eval(javascript) 3: [if] exito 4: foward() 5: submit() 8: buscarFormato(idEmpresa, idTabla, idFormato) 9: actionEvent(evt) 27: display(mensaje) 6: create() 7: populate() 10: buscarAction() 26: mensaje 11: buscarFormato(idEmpresa, idTabla, idFormato) 25: 12: buscarEmpresa(idEmpresa) 16: empres a 13: buscarEmpresa(idEmpresa) 14: buscarEmpresa(idEmpresa) 15: empresa 17: buscarTabla(idTabla) 21: tabla 18: buscarTabla(idTabla) 19: buscarTabla(idTabla) 20: tabla 22: buscarForm ato(idForm ato) 23: buscarFormato(idFormato) 24: formato Ilustración 40: Diagrama de secuencia – Buscar Formato de Datos 42 3.2.21. Caso de Uso Crear Tablas en Base de datos : Analista : AppletAnalisis : JSObject : FacesServlet : GenerarScriptJSP : GenerarScriptBean : ControlTabla : ControlEmpresa : GestorEmpresa empresa : Empresa : GestorTabla 1: crearTablasBD() 2: eval(javascript) 3: [if] ex ito 4: f owa rd( ) 5: submit() 6: create() 7: populate() 8: seleccionarTablas(idEmpresa, idTablas, manejadorBD) 9: actionEvent(evt) 10: generarAction() 11: seleccionarTablas(idEmpresa, idTablas, manejadorBD) 12: buscarEmpresa(idEmpresa) 13: buscarEmpresa(idEmpresa) 14: buscarEmpresa(idEmpresa) 15: empresa 16: empresa 17: getTablas(idTablas) 18: getTablas(idTablas) 19: lis taTablas 20: generarScript(listaTablas, manejadorBD) 21: 22: generarZip() 23: mensaje 24 : d isp lay (men saj e) Ilustración 41: Diagrama de secuencia – Crear Tablas en Base de datos 43 3.3. Paquete Generación de datos de prueba 3.3.1. Caso de Uso Configurar las regla de generación : Analista : AppletAnalisis : JSObject : FacesServlet : ConfigurarReglasGenJSP : ConfigurarReglasGenBean : ControlTabla : ControlEmpresa : GestorEmpresa empresa : Empresa : GestorT abla tabla : Tabla campo : Campo regla : BAReglaGeneracion 1: configurarReglasGeneracion() 2: eval(javascript) 3: [if] exito 4: foward() 5: submit() 9: guardarAction() 10: configurarRegla(..) 11: buscarEmpresa(idEmpresa) 12: buscarEmpresa(idEmpresa) 13: buscarEmpresa(idEmpresa) 14: empresa 15: empresa 16: buscarTabla(idTabla) 17: buscarTabla(idTabla) 18: buscarTabla(idTabla) 19: tabla 20: tabla 21: buscarCampo(idCampo) 22: buscarCampo(idCampo) 23: cam po 24: nrew(. .) 25: setReglaG eneracion(regla) 6: create() 7: populate() 8: configurarReglasGeneracion(idEmpresa, idTabla, idCampo, configuracion) 26: guardarTabla(tabla) 27: mensaje 28: mensaje 29: mostrarMensaje(mensaje) Ilustración 42: Diagrama de secuencia - Configurar las regla de generación 44 3.3.2. Caso de Uso Generar Datos de prueba : Analista : AppletAnalis is : JSObject : FacesServlet : GenerarDataJSP : Gene rarDataBe an : ControlTabla : ControlEmpresa : GestorEmpresa empresa : Empresa : GestorTabla : ControlMotorDatos da tProd ucer : DatPro duce r 1: generarDatosPrueba() 2: eval(javascript) 3: [if] ex ito 4: foward() 5: submit() 8: generarDatosPrueba(idEmpresa, idTablas, manejadorBD) 9: actionEvent(evt) 30: display(mensajeDescarga) 6: create() 7: populate() 10: buscarAction() 29: mensajeDescarga 11: buscarTablas(idTablas) 27: mensaje 12: buscarEmpresa(idEmpresa) 16: empresa 13: buscarEmpresa(idEmpresa) 14: buscarEmpresa(idEmpresa) 15: empresa 17: buscarTablas(idTablas) 21: listaTablas 18: buscarTablas(idTablas) 19: buscarTablas(idTablas) 20: lis taTablas 22: generarData(listaTablas) 23: xml =generarXMLMotor() 24: new() 25: generar(xml) 26 : m en saje 28: z ipear() Ilustración 43: Diagrama de secuencia - Generar Datos de prueba 45 3.3.3. Caso de Uso Estimación del tamaño del Data Warehouse : Analista : AppletAnalisis : JSObject : FacesServlet : EstimacionDWHJSP : EstimacionDWHBean : ControlTabla : ControlEmpresa : GestorEmpresa empresa : Empresa : GestorTabla 1: estimacionDWH() 2: eval(javascript) 3: [if] exito 4: foward() 5: submit () 8: estimacionDWH(idEmpresa, idTablas, manejadorBD, crecimiento) 9: actionEvent(evt) 25: display(mensaje) 6: create() 7: populate() 10: buscarAction() 24: mensaje 11: buscarTablas(idTablas) 12: buscarEmpresa(idEmpresa) 16: empresa 13: buscarEmpresa(idEmpresa) 14: buscarEmpresa(idEmpresa) 15: empresa 17: buscarTablas(idTablas) 21: listaTablas 18: buscarTablas(idTablas) 19: buscarTablas(idTablas) 20: listaTablas 22: listaTablas 23: estimarDWH(listaTablas, manejadorBD, crecimiento) Ilustración 44: Diagrama de secuencia - Estimación del tamaño del Data Warehouse 46 3.4. Paquete Documentación 3.4.1. Caso de Uso Generar Documento : Analista : AppletAnalis is : JSO bject : F acesServlet : G enerarDocum entacionJSP : G estorT em aBean archivoHT M L : A rchivo 1: generarDocum ento() 2: eval(ja va scri pt) 3: [ if ] exito 4: foward() 5: subm it () 8: generarDocum ento(idT em as) 9: act ionEvent (evt ) 17: display(m ensajeDescarga) 6: create() 7: populate() 10: docum entarAct ion() 16: m ensajeDescarga 12: s = generarHT M L(tem a) 11: buscarT em a(idT em a) 13: new() 14: setCuerpo(s) *[para cada tem a seleccionado] 15: zipear() Ilustración 45: Diagrama de secuencia – Generar Documento ANEXO E. ESTIMACION DE TIEMPOS PARA EL PROYECTO INDICE 1. Introducción...................................................................................................2 1.1 Propósito................................................................................................2 1.2 Alcance ..................................................................................................2 1.3 Referencias............................................................................................2 2. Determinación de Puntos de Función:..........................................................2 2.1 Definiciones y Acrónimos ......................................................................2 2.2 Determinación de los Puntos de Función sin Ajustar (UFP) .................3 2.2.1 ILF y EIF.............................................................................................3 2.2.2 EI, EO, y EQ.......................................................................................6 2.3 Estimación por Cocomo II:...................................................................11 2.3.1 Determinación de los factores del proyecto.....................................11 2.3.2 Determinación de los multiplicadores de esfuerzo: .........................11 3. Conclusión ..................................................................................................12 2 USO DE COCOMO 1. Introducción Este documento describe la estimación del proyecto para la elaboración del módulo de análisis del trabajo de tesis planteado. Este documento tiene los siguientes objetivos: • Calcular el esfuerzo que produciría el desarrollo de la herramienta. • Calcular el nivel de dificultad empleando las reconocidas técnicas de Cocomo II y Puntos de Función conjuntamente. 1.1 Propósito El propósito de ésta Estimación de Proyecto es el de poder predecir la dificultad y tiempo que se empleó en el desarrollo del módulo de análisis del trabajo de tesis propuesto por el grupo, lo cual servirá para corroborar si los plazos establecidos en documentos como el Plan de Proyecto con su diagrama de Gantt son los adecuados, pudiendo ver la holgura o estrechez de los plazos. También tomando en cuenta factores de entorno e internos poder llegar a una conclusión útil. 1.2 Alcance Esta Estimación de Proyecto abarca todos los casos de uso que se han implementado en el módulo de análisis del presente trabajo de tesis, incluyendo el cálculo de Puntos de Función y la estimación mediante Cocomo II. 1.3 Referencias Se tomaron por referencia a los siguientes documentos: 1. Anexo A. Lista de exigencias. 2. Anexo B. Especificación de requisitos de Software. 3. Anexo D. Documento de diseño.. 2. Determinación de Puntos de Función: 2.1 Definiciones y Acrónimos A continuación aparecen los acrónimos utilizados en el presente documento. Acrónimo Significado EI Entradas externas.- datos o información de control que procede de fuera de los límites de la aplicación. EO Salidas externas.- datos o información de control que sale fuera de los lımites de la aplicación mediante un proceso lógico. EQ Consultas externas.-procesos elementales que obtienen una combinación de entrada/salida como resultado de una recuperación de datos, pero no mantienen ningún ILF. ILF Ficheros lógicos internos.- son grupos de datos lógicamente relacionados identificables por el usuario, o información de control contenida dentro de los lımites de la aplicación. EIF Ficheros de interfaz externos.- información de control utilizada en la aplicación pero mantenida por otra. DET Elemento de tipo dato.- campo no recursivo y reconocible por el usuario. 3 Acrónimo Significado RET Elemento de tipo registro.- subgrupo de DETs reconocibles por el usuario. FTR Tipo de fichero referenciado.- fichero al que una transacción hace referencia. 2.2 Determinación de los Puntos de Función sin Ajustar (UFP) Este punto contiene el detalle del cálculo de puntos de función sin ajustar. 2.2.1 ILF y EIF Se determinaron los DETs y RETs de cada uno de los ILF. El resultado de esta tarea se muestra en las tablas que se muestran a continuación: ILF DET Usuario Nombre Nombres Apellidos Email Habilitado Contraseña Empresas Proyectos Perfil Nombre Habilitado Permisos Permiso Nombre Codigo de Funcionalidad Nivel Tabla Nombre Esquema Campos Campo Nombre esPrimaria Nulidad Valor por defecto Tipo de Regla Mínimo Máximo Tipo de dato Nombre de tabla relacionada Configurado Tema Análisis Nombre Dimensiones Facts Indicadores Proyecto Nombre Descripción Empresa Nombre Dirección Rubro RUC Página web Representante local 4 ILF DET Regla de Generación Opción de generación Nombre de archivo Tipo de generación Tipo de formación Tipo de formato Constante fecha Constante hora Valor de incremento Unidad de incremento Valor mínimo Valor máximo Sistema Número decimal Signo Secuencialidad Rango Inicio Rango Fin Patrones Tipo Dato Nombre Tipo Dato Equivalente Nombre Manejador de base de datos Orden parámetro longitud Orden parámetro longitud decimal Formato Longitud Estándar Valores posibles Mayúsculas Minúsculas Tipo oración Tipo título Longitud variable Posición día Posición mes Posición año Año corto Es fecha Es hora Precisión Escala Dimensión Nombre Descripción Actualización Alias Atributo Nombre Descripción Relación Nombre Dim. Tiempo Nombre Descripción Periodo Jerarquía Nombre Descripción Atributos Fact Nombre Descripción Medida Nombre Descripción Tipo de agregación 5 ILF DET Indicador Nombre Expresión Etiqueta Medidas Facts Periodo Cantidad Unidad Utilizando la tabla anterior y la tabla de cálculo de complejidad para EIF e ILF (ver anexo) se obtuvo la complejidad de cada uno de ellos. El resultado de esta tarea se muestra en las siguientes tablas. ILF #DET #RET COMPLEJIDAD Usuario 7 1 BAJA Perfil 3 2 BAJA Permiso 3 1 BAJA Tabla 3 1 BAJA Campo 10 1 BAJA Tema Análisis 4 3 BAJA Proyecto 2 ¡ BAJA Empresa 6 1 BAJA Regla de Generación 18 3 BAJA Tipo Dato 1 1 BAJA Tipo Dato Equivalente 4 1 BAJA Formato 16 2 BAJA Dimensión 4 2 BAJA Atributo 2 1 BAJA Relación 1 1 BAJA Dim. Tiempo 3 1 BAJA Jerarquía 3 2 BAJA Fact 3 2 BAJA Medida 4 2 BAJA Indicador 5 3 BAJA Periodo 2 1 BAJA Con la tabla anterior, se realizó el cálculo de los puntos de función sin ajustar. El resultado de esta tarea se resume en la siguiente tabla. TIPO DE FUNCIÓN COMPLEJIDAD FUNCIONAL SUBTOTALES TOTALES ILF 21 Baja x 7 = 147 0 Media x 10 = 0 0 Alta x 15 = 0 147 EIF 0 Baja x 5 = 0 0 Media x 7 = 0 0 Alta x 10 = 0 0 Según la tabla anterior se obtienen 147 puntos de función sin ajustar. 6 2.2.2 EI, EO, y EQ Inicialmente se determinaron las entradas externas para cada caso de uso. El resultado de esta tarea es la tabla que se muestra a continuación: CASO DE USO ENTRADA EXTERNA Login de Usuario Logeo de Usuario Mantenimiento de Perfiles Mantenimiento de Perfiles Mantenimiento de Usuarios Mantenimiento de Usuarios Inserción de Notas Inserción de Notas Creación de Diccionario de Datos Administración de objetos Generación de Documento Generar Documento Configuración de las reglas de generación Seleccionar tabla y campo a configurar Regla de generación cadena Regla de generación número Regla de generación fecha. Generación de Datos de prueba Seleccionar tabla Parámetros de la generación Administración de Diagramas de Temas de Análisis o Vistas Análisis Generación de tablas a partir del modelo de análisis diseñado Generación de Tablas Administración de Proyectos Especificación de Proyecto Administración de Empresas Especificación de Empresa Administración de Dimensiones Especificación de Dimensión Administración de Tablas Especificación de Tabla Administración de Campos Especificación de Campo Administración de Dimensiones Tiempo Especificación de Dimensión Tiempo Administración de Atributos de Dimensión Especificación de Atributo Administración de Jerarquías de Dimensión Especificación de Jerarquía Administración de Facts Especificación de Fact Administración de Medidas de Fact Especificación de Medida Administración de Indicadores de Tema Especificación de Indicadores Administración de Formato de Datos Administración de Formato Nuevo Formato de Datos Luego, se determinaron los DETs, FTRs y la complejidad de cada entrada externa (para la determinación de la complejidad se utilizó la tabla T01. del anexo). El resultado de esta tarea es la tabla que se muestra a continuación: ENTRADA EXTERNA DETS FTR #DETS #FTR COMPL. Logeo de Usuario Nombre Contraseña Acción Usuario 3 1 Baja Mantenimiento de Perfiles Nombre Descripción Permiso Nivel permiso Acción Agregar Acción Modificar Acción Eliminar Mensaje Perfil Usuario 8 2 Media 7 ENTRADA EXTERNA DETS FTR #DETS #FTR COMPL. Mantenimiento de Usuarios Nombre Descripción Nombres Apellidos Contraseña Email Empresa Perfil Empresa Proyecto Perfil Proyecto Acción Agregar Acción Modificar Acción Eliminar Mensaje Usuario Empresa Proyecto 14 3 Alta Inserción de Nota Tipo Descripción Acción Mensaje Componente 4 1 Baja Creación de Diccionario de Datos Nombre objeto Usuario Tipo objeto Descripción Objeto Usuario 7 2 Media Generar Documento Tema de Análisis Acción Seleccionar Tipo Archivo Acción Exportar Tema Análisis 4 1 Baja Reglas de Configuración Tabla Campo Acción Tabla Campo 3 2 Baja Regla de generación Cadena Nombre tabla Nombre campo Tipo Dato Tipo de generación Nombre Lista Tipo formación patrón Ordenamiento Es mayúscula Mínimo Máximo Constante Incremento Acción Agregar Tipo formación patrón Ordenamiento Es mayúscula Mínimo Máximo Constante Incremento Acción Eliminar Acción Grabar Campo Tipo de generación Lista predefinida Patrón 22 4 Alta 8 ENTRADA EXTERNA DETS FTR #DETS #FTR COMPL. Regla de generación Número Nombre tabla Nombre campo Tipo Dato Signo Sistema Num Decimales Tipo generación Ordenamiento Mínimo Máximo Constante Incremento Acción Grabar Campo Valores de generación 13 2 Media Regla de generación Fecha Nombre tabla Nombre campo Tipo Dato Formato Año constante Mes constante Dia constante Hora constante Minuto constante Seg. constante Año mínimo Año máximo Mes mínimo Mes máximo Día mínimo Día máximo Hora mínimo Hora máximo Minuto mínimo Minuto máximo Seg. Mínimo Seg. Máximo Unidad de incremento Valor de incremento Acción Grabar Campo Formato Valores generación 25 3 Alta Generación de Datos Tabla Manejador BD Instancia Base datos Servidor Usuario Acción Tabla Parámetros 6 2 Media Análisis Acción Menú Acción Modelo Modelo Dimensional Tabla Tema Análisis 4 2 Baja Generación de Tablas Tabla Acción Agregar Opciones de Configuración Manejador Acción Tabla 5 1 Baja 9 ENTRADA EXTERNA DETS FTR #DETS #FTR COMPL. Especificación de Proyecto Nombre Descripción Acción Proyecto 3 1 Baja Especificación de Empresa Nombre Dirección Rubro Página web Representante legal Acción Empresa 6 1 Baja Especificación de Dimensión Nombre Descripción Actualización Alias Acción Atributo Acción Jerarquía Acción Dimensión Atributo Jerarquía 7 3 Alta Especificación de Tabla Nombre Descripción Esquema Acción Campo Acción Campo Tabla 5 2 Media Especificación de Dimensión Tiempo Nombre Descripción Periodo Acción Dim. Tiempo 4 1 Baja Especificación de Atributo Nombre Descripción Campo ID Campo Nombre Campo Orden Acción Atributo Campo 6 2 Media Especificación de Jerarquía Nombre Descripción Atributos Acción Jerarquía Atributo 4 2 Baja Especificación de Fact Nombre Descripción Acción Fact Medida Relación 3 3 Media Especificación de Medidas Nombre Descripción Campo Tipo Acción Medida Campo 5 2 Media Especificación de Indicadores Nombre Descripción Expresión Etiqueta Acción Medida Campo 5 2 Media Administración de Formato Tabla Formato Actual Formato Tipo de dato Acción Formato Acción Tabla Formato Tipo de dato 6 3 Alta Nuevo Formato de Datos Aplicar Acción Agregar Acción Formato 3 1 Baja 10 A continuación se determinaron las consultas externas para cada caso de uso. El resultado de esta tarea es la siguiente tabla: CASO DE USO CONSULTA EXTERNA Administración de Campos Búsqueda de Formato Creación de Diccionario de Datos Búsqueda de Objeto Configurar reglas de generación Búsqueda de Tablas Búsqueda de Campos Generación de datos Búsqueda de Tablas Administración de Fact Búsqueda de Fact Administración de Dimensión Búsqueda de Dimensión Administración de Tabla Búsqueda de Tabla Administración de Tema Búsqueda de Tema Administración de Indicador Búsqueda de Indicador Administración de Proyecto Búsqueda de Proyecto Administración de Empresa Búsqueda de Empresa Nuevo Formato de Datos Búsqueda de Tipo Dato Luego, se determinaron los DETs, FTRs y la complejidad de cada consulta externa (para la determinación de la complejidad se utilizo la tabla T03. del anexo). El resultado de esta tarea es la tabla que se muestra a continuación: CONSULTA EXTERNA DETS FTR #DETS #FTR COMPL. Búsqueda de Formato Nombre Formato 1 1 Baja Búsqueda de Objeto Nombre Objeto 1 1 Baja Búsqueda de Fact Nombre Fact 1 1 Baja Búsqueda de Dimensión Nombre Dimensión 1 1 Baja Búsqueda de Tabla Nombre Tabla 1 1 Baja Búsqueda de Tema Nombre Tema 1 1 Baja Búsqueda de Indicador Nombre Indicador 1 1 Baja Búsqueda de Proyecto Nombre Proyecto 1 1 Baja Búsqueda de Empresa Nombre Empresa 1 1 Baja Búsqueda de Tipo Dato Nombre Tipo Dato 1 1 Baja Con las tablas anteriores, se realizó el cálculo de los puntos de función sin ajustar para los EQs y EIs. El resultado de esta tarea se resume en la siguiente tabla. Tipo de Función Complejidad Funcional Totales de Complejidad Totales de Tipo de Función EI ___11_ Baja x3 = ____9_ Media x4 = ____5_ Alta x6 = 57 36 __________________30 ______123______ EQ ___10_ Baja x3 = ___0__ Media x4 = ___0__ Alta x6 = 30 0 __________________0 _______30______ 11 Según la tabla anterior se obtienen 153 puntos de función sin ajustar para el proyecto. En total para el proyecto obtenemos (147+153)=300 puntos de función sin ajustar. Por lo tanto, llevando los puntos de función a líneas de código (KLCF), tenemos: Líneas de código =300*53 (en java) = 15900 líneas = 15,9 KLCF (en java) 2.3 Estimación por Cocomo II: 2.3.1 Determinación de los factores del proyecto Criterios de Aplicación Factor de Escala (yi) Valor Precedentes 4.96 Flexibilidad de desarrollo 3.04 Arquitectura / Solución de riesgo 1.41 Cohesión del equipo / interacción 3.29 Madurez del proceso 4.68 TOTAL (sumatoria) 17.38 2.3.2 Determinación de los multiplicadores de esfuerzo: Multiplicadores de Esfuerzo Criterio de costo (xi) Producto Valor RELY 1.10 DATA 1.00 CLPX 1.00 RUSE 1.00 DOCU 1.00 TOTAL (productoria) 1.1 Multiplicadores de Esfuerzo Criterio de costo (xi) Personal Valor ACAP 0.71 AEXP 1.22 PCAP 0.81 PEXP 1.19 LTEX 1.20 PCON 0.81 TOTAL (productoria) 0.8116 Multiplicadores de Esfuerzo Criterio de costo (xi) Plataforma Valor TIME 1.11 STOR 1.00 PVOL 0.87 TOTAL (productoria) 0.9657 Multiplicadores de Esfuerzo Criterio de costo (xi) Proyecto Valor TOOL 0.90 SITE 0.93 SCED 1.00 TOTAL (productoria) 0.837 Exponente = 0.91 + 0.01*(Σ Factores) = 0.91 + 0.01*17.38 = 1.0838 12 Esfuerzo = e = 2.94 * (KLCF) exponente (Π Multiplicadores) = 2.94 * (15.9) 1.0838 {Π (1.1)( 0.8116)( 0.9657)( 0.837)} = 42.53 = 42.5 meses persona 3. Conclusión En virtud de que el equipo de desarrollo está conformado por cinco personas y hemos empezado a trabajar todas al mismo tiempo la conclusión a la que se llega es que el proyecto durará aproximadamente 8 meses y medio (43/5), en base a esta estimación y considerando la duración del curso y el hecho de que se empezó el análisis del proyecto en febrero se prevé que se podrá concluir con éste pero usando el plazo total de tiempo del que se dispone para el proyecto y tal vez relegando algunos requerimientos definidos como deseables en el Catálogo de Requisitos de la Herramienta, siendo esto último sujeto de negociación entre el equipo de desarrollo y el profesor del curso. 13 Tablas Utilizadas Tabla para determinar la complejidad de un EI 1 a 4 DET 5 a 15 DET 16 o más DET 0 a 1 FTR BAJA BAJA MEDIA 2 FTR BAJA MEDIA ALTA 3 o más FTR MEDIA ALTA ALTA Tabla para determinar la complejidad de un EO 1 a 5 DET 6 a 19 DET 20 o más DET 0 a 1 FTR BAJA BAJA MEDIA 2 a 3 FTR BAJA MEDIA ALTA 4 o más FTR MEDIA ALTA ALTA Tabla para determinar la complejidad de un EQ 0 a 5 DET 6 a 19 DET 20 o más DET 0 a 1 FTR BAJA BAJA MEDIA 2 a 3 FTR BAJA MEDIA ALTA 4 o más FTR MEDIA ALTA ALTA Tabla para determinar la complejidad de un ILF o EIF 1 a 19 DET 20 a 50 DET 51 o más DET 1 RET BAJA BAJA MEDIA 2 a 5 RET BAJA MEDIA ALTA 6 o más RET MEDIA ALTA ALTA ANEXO F. ESTIMACION DE TIEMPOS PARA EL PROYECTO EVALUACION DE METRICAS 1. Introducción Este documento describe la evaluación de las métricas usadas para estimar la cantidad de esfuerzo empleada para la realización del módulo de análisis de la herramienta planteada como tema de tesis. Este documento tiene los siguientes objetivos: • Mostrar el esfuerzo real empleado en el desarrollo de la herramienta. • Confrontar el valor obtenido mediante la estimación, empleando las técnicas de Cocomo II y Puntos de Función conjuntamente, con el valor real de esfuerzo que demandó el proyecto. 1.1 Propósito El propósito de esta Evaluación de Métricas es el de poder confrontar los valores de esfuerzo estimados con anterioridad y los valores reales obtenidos para el desarrollo del módulo de análisis de la herramienta planteada y poder llegar a una conclusión sobre la calidad y grado de exactitud de la estimación realizada, así como determinar los factores que pudieron haber influido en la obtención de esfuerzos diferentes si ese es el caso. 1.2 Alcance Esta Evaluación de Métricas abarca el análisis del esfuerzo real invertido en el proyecto por parte del equipo de desarrollo, el cual se ve reflejado en el registro de las horas semanales invertidas por cada uno a lo largo de la vida de éste. 1.3 Referencias Se tomaron por referencia a los siguientes documentos: 1. Anexo A. Lista de Exigencias. 2. Anexo E. Estimación del Proyecto. 3. Formato de Horas actualizado al 05 de enero de 2007, Módulo de Análisis. 2. Esfuerzo real invertido en el proyecto El esfuerzo total invertido en el proyecto a lo largo de las semanas se muestra en el siguiente cuadro, contrastado con el esfuerzo estimado por semana: Semana Horas Estimadas Horas Reales 2 39 44 3 28 28 4 26 24 2 Semana Horas Estimadas Horas Reales 5 27 28 6 22 24 7 33 31 8 49 50 9 62 64 10 102 101 11 128 155 12 98 110 13 0 0 14 125 136 15 125 124 16 125 132 17 125 131 18 125 151 19 100 89 Total 1339 1422 Variación en Cantidad 83 Variación en Porcentaje 6.20% Como se aprecia en el cuadro el esfuerzo real que demandó el proyecto supera por un valor relativamente bajo respecto al total (83 horas que hacen un 6.2 % del total inicial) estimado para cada semana de trabajo, esto hace suponer que se realizó estimación aproximadamente correcta ya que los valores son bastante cercanos. Hay que tener en cuenta que se trataba de una estimación de tiempos, por lo que se esperaba cierto margen de diferencia entre lo estimado y lo real. Para verificar esto último contrastaremos el esfuerzo real con el calculado por Cocomo II. 3. Esfuerzo estimado con Cocomo II Determinación de los factores del proyecto: Criterios de Aplicación Factor de Escala (yi) Valor Precedentes 4.96 Flexibilidad de desarrollo 3.04 Arquitectura / Solución de riesgo 1.41 Cohesión del equipo / interacción 3.29 Madurez del proceso 4.68 TOTAL (sumatoria) 17.38 3 Determinación de los multiplicadores de esfuerzo: Multiplicadores de Esfuerzo Criterio de costo (xi) Producto Valor RELY 1.10 DATA 1.00 CLPX 1.00 RUSE 1.00 DOCU 1.00 TOTAL (productoria) 1.1 Multiplicadores de Esfuerzo Criterio de costo (xi) Personal Valor ACAP 0.71 AEXP 1.22 PCAP 0.81 PEXP 1.19 LTEX 1.20 PCON 0.81 TOTAL (productoria) 0.8116 Multiplicadores de Esfuerzo Criterio de costo (xi) Plataforma Valor TIME 1.11 STOR 1.00 PVOL 0.87 TOTAL (productoria) 0.9657 Multiplicadores de Esfuerzo Criterio de costo (xi) Proyecto Valor TOOL 0.90 SITE 0.93 SCED 1.00 TOTAL (productoria) 0.837 Exponente = 0.91 + 0.01*(Σ Factores) = 0.91 + 0.01*17.38 = 1.0838 Esfuerzo = e = 2.94 * (KLCF) exponente (Π Multiplicadores) = 2.94 * (15.9) 1.0838 {Π (1.1)( 0.8116)( 0.9657)( 0.837)} = 42.53 = 42.5 meses persona Entonces, tomando en cuenta que se inició el proyecto con los cinco integrantes, quienes han permanecido en el grupo durante el desarrollo del mismo, se estimó que éste duraría 8 meses y medio (42.5/5) de trabajo. Descontando a este tiempo estimado, el que hubiese tomado el implementar las funcionalidades que fueron cambiadas de exigible a negociable durante la negociación, que debía durar un mes, se llegó a estimar que el proyecto total duraría 7 meses y medio. ANEXO G. DOCUMENTO DE ARQUITECTURA INDICE ANEXO F. DOCUMENTO DE ARQUITECTURA................................................................. 1 1. Objetivo.......................................................................................................................... 2 2. Referencias.................................................................................................................... 2 3. Representación de la arquitectura ................................................................................. 2 4. Metas y restricciones de la arquitectura......................................................................... 2 4.1 Metas............................................................................................................................. 2 4.2 Restricciones del sistema .............................................................................................. 2 5. Vista Lógica ................................................................................................................... 3 5.1 Diagrama de Clases......................................................................................................... 3 5.1.1. Paquetes ............................................................................................................... 3 5.1.2. Paquete Modelamiento Dimensional ..................................................................... 4 5.1.3. Paquete Simulación............................................................................................... 6 5.1.4. Paquete Seguridad................................................................................................ 7 5.1.5. Paquete Manejador XML....................................................................................... 8 6. Vista de Despliegue ....................................................................................................... 8 6.1 Computadora personal..................................................................................................... 8 6.2 Servidor de aplicaciones Web.......................................................................................... 8 7. Vista de Implementación................................................................................................ 9 7.1 General ............................................................................................................................ 9 7.2 Paquete Modelamiento Dimensional .............................................................................. 10 8. Tamaño y desempeño ................................................................................................. 11 9. Calidad......................................................................................................................... 11 2 1. Objetivo Este Documento de Arquitectura de Software provee una revisión de la arquitectura de “Herramienta integrada de soluciones para proyectos de Inteligencia de Negocios”. 2. Referencias Se tomaron por referencia a los siguientes documentos: 1. Anexo A. Lista de Exigencias. 2. Anexo B. Especificación de requisitos de Software. 3. Anexo D. Documento de Diseño. 3. Representación de la arquitectura Este documento presenta la arquitectura como una serie de vistas: vista lógica, vista de despliegue y de implementación. Estas vistas han sido especificadas basándose en la metodología UML. 4. Metas y restricciones de la arquitectura Se tomarán en cuenta las siguientes metas y restricciones para el diseño de la arquitectura del sistema: 4.1 Metas 1. Brindar una visión general del sistema a través de distintas vistas, que permitan un entendimiento más claro del sistema, explicando las interrelaciones y las funcionalidades entre los componentes que lo conforman. 2. Proporcionar a los programadores una estructura para el desarrollo del sistema que facilite su trabajo identificando las partes que lo conforman. 3. Ser una base que facilite los mantenimientos, ampliaciones o modificaciones que en el futuro podría requerir el sistema. 4.2 Restricciones del sistema 1. El sistema será una aplicación web. 2. El sistema funcionará sobre archivos XML. 3. Se utilizará la herramienta de desarrollo Java para la construcción del software y el entorno de desarrollo será Linux. 3 5. Vista Lógica Dentro de la vista lógica tenemos al diagrama de clases. 5.1 Diagrama de Clases 5.1.1. Paquetes Modelamiento Dimensional Documentacion Manejador XML Simulacion Seguridad 4 5.1.2. Paquete Modelamiento Dimensional Vista de herencias Objeto id nombre descripcion fechaCreacion fechaModificacion BAFormato longitud tipoDato estandar valoresPosibles[] (from analisis) Fact listMedidas Medida t ipoAg reg acion campo Dimension atributos jerarquias tipoActualizacion campoIdentificador Jerarquia listAtributos Atributo campoId campoNombre campoOrden D imensionTiempo periodo TipoDato BAFormatoNumero precision escala (from analisis) BAFormatoCadena esMinusculas esMayusculas esTipoTitulo esTipoOracion esLongitudVariable (from analisis) BAFormatoFecha posicionDia posicionMes posicionAnho esAnhoCorto esFecha esHora (from analisis) Proyecto Tema l istDi mensi ones l ist Indi cadores l istTablas di agrama Tabla esquema campos Relacion idTabla idCampo Indicador expresion idTema etiqueta listIdMedidas listIdFacts Empresa direccion RUC rubro paginaWeb representanteLegal DimensionXTema i dDi mensi on i dJerarqui as Periodo cantidad unidad BATipoDatoEquivalente manejador BaseDatos nombre ordenParametr oLongitud ordenParametr oLongitudDecim al BAReglaGeneracion (from anali... BACampo esLlavePrimaria nulidad valorPorDefecto esLlaveForanea configurado relacion reglaGeneracion formato ( fr om anal is is ) BARGFecha tipoGeneracion constanteFecha constanteHora incrementoValor incrementoUnidad minimoFecha minimoHora maximoFecha maximoHora (from analisis) BARGNumero tipoGeneracion constante incremento minimo maximo sistema numeroDecimales signo (from analisis) BAPatronCadena tipoGeneracion constante incremento minimo maximo tipoPatron longitud esMayuscula (from anali... BARGCadena opcionGeneracion nombreArchivo (from analisis) Vista de relaciones DimensionTiempo periodo Periodo cant idad uni dad 1 GestorEmpresa agregarEmpresa() eliminarEmpresa( ) modificarEmpresa() buscarEmpresa( ) Relacion idTabla idCampo DimensionXTema idDimension idJerarquias agregarJerarquia() modificarJerarquia() eliminarJerarquia() buscarJerarquia() Medida tipoAgregacion campo Indicador expresion idTema etiqueta listIdMedidas listIdFacts 1..* 0..* GestorProyecto agregarProyecto() modificarProyecto() eliminarProyecto() buscarProyecto() Empresa direccion RUC rubro paginaWeb representanteLegal agregarDimension() modificarDimension() eliminarDimension() buscarDimension() agregarProyecto() modificarProyecto() eliminarProyecto() buscarProyecto() GestorTabla agregar Tabla( ) modificar Tabla( ) elim inar Tabla( ) busc arTabla() 1 1 Tabla esquema campos agregarCampo() eliminarCampo() modificarCampo() buscarCampo() 0..* 1 GestorDimension agregar Dimension( ) modif icar Dimension( ) elim inar Dimension( ) buscarDimension() Dimension tipoActualizacion campoIdentificador agregarAtributo() eliminarAtributo() modificarAtributo() buscarAtributo() agregarJerarquia() eliminarJerarquia() modificarJerarquia() buscarJerarquia() 1..* 0..* Proyecto agregarTema() eliminarTema() modificarTema() buscarTema() buscarDimension() agregarFact() eliminarFact() modificarFact() buscarFact() GestorTema agregarTema() modificarTema() eliminarTema() buscarTema() 1 1 GestorFact agregarFact() modificarFact() eliminarFact() buscarFact() Fact listMedi das agr egar Medida() eliminarMedida( ) modificarMedida( ) buscarMedida() Tema listDimensiones listIndicadores listTablas diagrama incluirTabla() excluirTabla() estaTabla() agregarIndicador() modificarIndicador() eliminarIndicador() agregarFact() modificarFact() eliminarFact() 1 1 DiagramaDibujo 11 BAReglaGeneracion (from analisis) BACampo esLlavePrimaria nulidad valorPorDefecto esLlaveForanea configurado reglaGeneracion formato relacion (from analisis) 0..* 1 0..* 1 1 1 Jerarquia atributos agregarAtributo() eliminarAtributo() moverAtributoPosicion() Atributo campoId campoNombre campoOrden 0..* +orden 0..* +nombre 0..* +id BAFormato l ongitud t ipoD ato estandar valoresPosibles[] (from analisis) 0..* 1 BATipoD ato tiposDatoEquivalentes 0..* 1 BATipoDatoEquivalenteBean manejador nombre ordenParmLong ordenParmLongDec (from analisis) 5 Vista Documentación JFrmNotAgr mostrar() GestorComponente componentes restringirComponente() registraClave() accesoComponente() agregarNota() (from Seguridad) ComponenteModeloDimensional id nombre descripcion datosComponentes() registraClave() verificarClave() (from Seguridad) contiene JFrmDicDatAgr mostrar() AdmModelamientoDimensional temas dimensiones facts 11..* 1 1 llama a 1..* 1 modifica a JFrmDocGen mostrar() exportar() TemaAnalisis 0..* 1 llama a DataWarehouse nombre preparaEncabezado() generarDoc() 1..* 1invoca a 1..* 1 6 Vista GUI BALineaDib BALineaD ib( ) r evali date( ) i sVali dSour ce() i sVali dTar get() BAObjetoActivoDib nombre fondo BAObjetoActivoDib() getColorFondo() setColorFondo() getNombre() setNombre() revalidate() BADi agr amPanel (from analisis) ObjetoDib objetoLogico idObjetoLogico defaultWidth defaultHeight relaciones selectedCorner labelNombre getIdObjetoLogico() setIdObjetoLogico() getObjetoLogico() setObjetoLogico() ObjetoDib() inicializar() contains() processMouseDragged() processMousePressed() drawBorder() addRelation() getRelations() setRelations() revalidate() LineaDib points source target dragPoint LineaDib() isValidTarget() isValidSource() contains() drawBorder() isChangeSizePoint() revalidate() processMouseDragged() paintComponent() setTarget() getTarget() addPoint() setSource() getSource() getPoints() setPoints() getIntermediatePoint() ElementoDib dragX : Integer dragY : Integer sel ected : Boolean getId() set Id() i sSelected( ) setSelected( ) getDragX() setDragX() getDragY() setDragY() ElementoDib( ) processM ouseDragged() processM ousePressed() processRigthClick() processM ouseReleased() BAFactDib nameLabel atributosAuxiliar tieneLlave primeravez cambio cambioCont contelement panel agregarAtributp() removerAtributo() agregarLlave() removerLlave() revalidate() actualizaFact() procesarMenuContextual() ordenaAtributos() isPrimeraVez() BANotaDib textLabel BANotaDib() revalidate() paintComponent() getTextLabel () setTextLabel() BADimensionDib nameLabel atributosAuxiliar tieneLlave primeravez cambio cambioCont contelement panel BADimensionDib() agregarAtributo() removerAtributo() revalidate() actualizaDimension() procesarMenuContextual() ordenaAtributos() isPrimeraVez() BADimensionTieDib nameLabel atri butosAuxi li ar tieneLlave primeravez cambio cambioCont contelement panel BADimensionTieD ib() agr egar Atributo() removerAtri buto( ) revalidate() actualizaDimension() procesarMenuC ontextual( ) ordenaAtri butos( ) isPrimeraVez() BALabelDib BALabelDib() getText( ) 5.1.3. Paquete Simulación Vista Relaciones BAFormatoCadena esMinusculas esMayus culas esTipoTi tu lo esTipoO racion esLongitudVariable (from analisis) BAFormatoFecha posicionDia posicionMes posicionAnho esAnhoCorto esFecha esHora (from anal isis) BAFormatoNumero precision escala (from analisis) BAReglaGeneracion (from analisis) BARGCadena opcionGeneracion nombreArchivo (from analisis) BARGFecha tipoGeneracion constanteFecha constanteHora incrementoValor incrementoUnidad minimoFecha minimoHora maximoFecha maximoHora (from anal isis) BARGNumero tipoGeneracion constante incremento minimo maximo sistema numeroDecimales signo (from analisis) BAFormato longitud tipoDato estandar valoresPosibles[] (from anal isis) BATipoDato tiposDatoEquivalentes (from general) 0..* 1 BATipoDatoEquival ente manejadorBaseDatos nombre ordenParametroLongitud ordenParametroLongitudDecimal (from general) BACampo esLlavePrimaria nulidad valorPorDefecto esLlaveForanea configurado reglaGeneracion formato relacion (from analisis) 0..* 1 1 1 Conexion usuario instancia manejador servidor puerto General nombre descripcion usuario flagseguridad ruta fechacreacion fechamodificacion numregcommit DatProducer cargarValoresAdicionales() cargarProyecto() BAControlXML guardarXMLMotor() guardarProyecto() guardarTema() guardarTabla() ... (from anali... Tabla esquema campos agregarCampo() eliminarCampo() modificarCampo() buscarCampo() (from gene... Metadata Tabla nombre estado numcampos numregistrosgenerar estadooperacion unique manejador ListaCampos Campo nombre tipoDatoBD tipoDatoGD tamano digitosDecimales posicion nCampOp nulo pk fk valDefault nomUnique padre campoPadre tabla configurado configuradoOperac ion numNullCreados uso fila ... Entero base sistema signo constante valorMin valorMax secuencia ReglaGeneracion tipoDatoCampo porcentajeNulos modificado modificadoOperacion opcionFormaGenerar orden FechasHoras formato variable secuencia diaMin mesMin anhoMin diaMax mesMax anhoMax horaMin minutoMin segMin horaMax ... PartesCadena valorMin valorMax secuencia opcionGrupoFormacion opcionFormaGenerar cantidadCaracteres constante opcionPatron opcionMayMin ... Cadena opcionGeneracion opcionArchivoPredefinido archivoListaDatos tamanoCadena tamanhoCampo ControlMotorDatos generarModeloMotor() zipperFiles() usandoDatProducer() generarXML() generarConversion() Proyecto 7 Vista Motor Simulación General nombre descri pcion usuario fl agseguridad ruta fechacreacion fechamodif icacion numregcommi t Con exion usuario instancia manejador servidor puerto Proyecto Metadata Tabla nombre estado numcampos numregistrosgenerar estadooperacion unique manejador ListaCampos Campo nombre tipoDatoBD tipoDatoGD tamano digitosDecimales posicion nCampOp nulo pk fk valDefault nomUnique padre campoPadre tabla configurado configuradoOperacion numNullCreados uso fila esMaestro esDetalle ... Entero base sistem a signo constante val orMin val orMax se cuencia FechasHoras formato variable secuencia diaMin mesMin anhoMin diaMax mesMax anhoMax horaMin minutoMin segMin horaMax ... ReglaGeneracion tipoDatoCampo porcentajeNulos modificado modificadoOperacion opcionFormaGenerar orden PartesCadena valorMin valorMax secuencia opcionGrupoFormacion opcionFormaGenerar cantidadCaracteres constante opcionPatron opcionMayMin opcionLetraAscii porcRegConstAGenerar Cadena opcionGeneracion opcionArchivoPredefinido archivoListaDatos tamanoCadena tamanhoCampo ItfXm lBean generarObjeto() generarBean() ControlMotorDatos generarModeloMotor() 5.1.4. Paquete Seguridad ParametrosSeguridad PERFIL_ADMINISTRADOR PERFIL_VISITANTE NOMBRE_PERFIL_DEFECTO DESCRIPCION_PERFIL_DEFECTO FRENTE_ANALISIS FRENTE_EXTRACCION FRENTE_EXPLOTACION FRENTE_SEGURIDAD LOGIN_ANALISIS LOGIN_EXTRACCION LOGIN_EXPLOTACION LOGIN_SEGURIDAD LOGIN_NO_ACCESO LOGIN_ERROR LOGIN_FAIL ADMIN_NAME ADMIN_PASS ADMIN_DESC ObjetoPerfil idPerfil IdObjeto nombrePerfil nombreObjeto Proyecto agregarTema() eliminarTema() modificarTema() buscarTema() buscarDimension() agregarFact() eliminarFact() modificarFact() buscarFact() (from general) Usuari oXPr oyecto idProyecto perfil EmpresaXUsuario idEmpresa perfil Permiso codigoFuncionalidad modulo nivel Usuario nombreUsuario contrasenha apellidosUsuario email perfil habilitado accesoAnalisis accesoExtraccion accesoExplotacion accesoSeguridad listaEmpresas listaProyectos Perfil permisos habilitado getPermiso() buscarPermisoXNombre() Funcionalidad idFuncionalidad codigoFuncionalidad modulo GestorUsuario listUsuCon listUsuarios idUsuarioSeteado agregarUsuario() modificarDatosUsuario() modificarUsuario() buscarUsuario() eliminarUsuario() eliminarUsuarioGestor() buscarUsuarioXNombre() buscarPerfilXNombre() GestorPerfil listPerfiles listPerfilesBus idPerfilSeteado agregarPerfil() buscarPerfil() modificarDatosPerfil() modificarPerfil() eliminarPerfil() eliminarPerfilGestor() buscarPerfilXNombre() GestorFuncionalidad listFuncionalidades listFuncionalidadesBus idFuncionalidadSeteada agregarFuncionalidad() buscarFuncionalidad() modificarFuncionalidad() eliminarFuncionalidad() eliminarFuncionalidadGestor() buscarFuncionalidadXNombre() ControlSeguridad gestorFuncionalidad gestorPerfil gestorUsuario agregarUsuario() getUsuarios() modificarUsuario() buscarUsuario() eliminarUsuario() getUsuarioPerfil() getUsuarioPermiso() getUsuarioXObjeto() agregarEmpresaUsuario() modificarEmpresaUsuario() eliminarEmpresaUsuario() buscarEmpresaUsuario() agregarProyectoUsuario() modificarProyectoUsuario() eliminarProyectoUsuario() buscarProyectoUsuario() validaUsuario() cambiarContrasenhaUsuario() conectarUsuario() desconectarUsuario() existeUsuario() getPerfiles() agregarPerfil() ... 8 5.1.5. Paquete Manejador XML Proy ectoBean autor idJobs idTemas idFiltros idProgs idCubos estado XMLMaker leerBean() escribirBean() eliminarBean() leerDibBean() escribirDibBean() eliminarDibBean() opname() escribirXMLMotor() XMLBean id nombre descripcion f echaCreacion f echaModif icacion generaBean() generarObjeto() BAControlXML guardarProy ecto() guardarTema() guardarTabla() guardarDimension() guardarFact() guardarAtributo() guardarEmpresa() guardarIndicador() guardarTabla() eliminarEmpresa() eliminarProy ecto() eliminarDimension() eliminarTema() eliminarFact() eliminarTabla() leerEmpresa() leerProy ecto() leerDimension() leerTema() leerFact() leerTabla() *1 EmpresaBean idProyectos idDimensiones idTablas direccion RUC rubro paginaWeb representanteLegal AtributoBean idC ampoId idC ampoN ombre idC ampoOrden DimensionBean idCampoIdentif icador tipoActualizacion unidad numero esDimensionTiempo JerarquiaBean idAtributos MedidaBean idCampo tipoAgregacion DimensionXTemaBean idDimension idJerarquias FactBean IndicadorBean idMedidas idFacts expresion etiqueta TemaBean Diagrama DibujoBean componentesGraficos relacionesGraficas TablaBean esquema BACampoBean esLlave permiteNul o idTablaRel acion idC ampoR elacion Itf XmlBean generarObjeto() generarBean() 6. Vista de Despliegue Servidor de Aplicaciones Web Cliente 6.1 Computadora personal Los usuarios acceden a la aplicación a través de computadoras personales. Aquí se poseerá la interfaz de dicha aplicación web, para la cual los usuarios necesitarán contar con un navegador Web. 6.2 Servidor de aplicaciones Web Las computadoras a través de las cuales los usuarios acceden a la herramienta se conectan a este servidor para tener acceso a las funcionalidades y datos de la aplicación. Esta conexión se lleva a cabo a través de la Internet. 9 7. Vista de Implementación El modelo de componentes muestra el conjunto de paquetes reutilizables de cada módulo de la Herramienta integrada de soluciones para proyectos de Inteligencia de Negocios, así como las respectivas interfaces que deben exponer para que se interrelacionen de una manera clara. 7.1 General Manejad or XML GUI Modelamiento Dimensional Seguridad Simulaci ón AccesarArchivo AdministrarAccesoC omponente ValidarUsuario GenerarDatosPrueb a 10 7.2 Paquete Modelamiento Dimensional Dimensi ones Facts TemasA nalisis Formatos AdministrarMedid as AdministrarFacts BuscarFact AdministrarJerarqu ias AdministrarDimens iones AdministrarAtributo s BuscarDimension AdministrarFormato s BuscarFormato AdministrarTemasA nalisis AdministrarRelacion es 11 8. Tamaño y desempeño La arquitectura de software de la herramienta satisface los requerimientos clave de tamaño y desempeño, según se establece en la ERS y el Catálogo de Requisitos: 1. La herramienta permitirá que las transacciones que se realicen sean seguras, de modo que ningún ente externo a la herramienta pueda acceder a la información que éstas manejen. Para tal fin se definirán varios niveles de acceso. 2. La herramienta permitirá el acceso concurrente de varios usuarios, de modo que puedan realizar transacciones simultáneas. 3. Las transacciones y/o consultas de los usuarios deberán tener una duración no mayor de 5 segundos (tiempo considerado como aceptable con un ancho de banda de 1000kb). 9. Calidad La arquitectura de software del sistema satisface los requerimientos clave de calidad, según se establece en la ERS y el Catálogo de Requisitos: 1. La aplicación servidor se ejecutarán sobre el sistema operativo GNU/Linux. 2. La interfaz de usuario de la herramienta deberá ser Web y su manejo se realizará por medio de teclado y ratón. Deberá además ser diseñada teniendo siempre en cuenta la facilidad de uso que debe tener esta, para mayor comodidad del usuario. 3. El usuario deberá tener alguna forma de conocer el resultado de sus acciones, mediante mensajes de confirmación o variaciones en pantalla. 1 ANEXO H. DOCUMENTO DE ESTÁNDARES DE PROGRAMACIÓN 1. Introducción 1.1 Objetivos El presente documento ha sido elaborado con la finalidad de presentar los estándares y buenas prácticas que se usaron en la implementación de la herramienta AXEbit. 1.2 Alcance El presente documento de estándares de programación es aplicable no sólo al módulo de Extracción, sino a los otros dos módulos involucrados en el desarrollo de AXEbit. Los estándares aquí presentados han sido considerados los necesarios para hacer un código entendible por los miembros del equipo y por ajenos al mismo que requieran revisarlo. El estándar presentado será aplicado por todos los miembros del equipo de desarrollo para todas las funcionalidades que se presenten. 2. Estándares de programación Los siguientes son los estándares aplicados dentro del desarrollo de la herramienta: 2.1 Sobre variables, métodos, constantes y excepciones 2.1.1 Nombres de variables Los nombres de las variables cumplirán con las siguientes características: • Ser descriptivos. • No serán muy largos, pero se entenderá a simple vista la información que guardan. • La primera palabra estará en minúsculas. Si contienen varias palabras la primera letra de la segunda palabra será en mayúsculas. Ejemplos: totalObjetos, objetosSelecc, numProyectos, etc. 2.1.2 Nombres de métodos Los nombres de los métodos cumplirán con las siguientes características: • Se respetarán las características de las variables. Ejemplos: actualizarFact, eliminarObjeto, etc. 2 2.1.3 Constantes Los nombres de las constantes cumplirán con las siguientes características: • Estarán exclusivamente en mayúsculas. • En caso se tenga una constante compuesta por más de una palabra, estas estarán separadas por el carácter: “_”. Ejemplos: NUM_FACT, TOTAL_OBJETOS, etc. 2.1.4 Excepciones Los nombres de las excepciones cumplirán con las siguientes características: • Los métodos que realicen algún procedimiento de resultado esperado, serán del tipo void y lanzarán excepciones específicas y personalizadas. Ejemplo: Con el método "buscarDimension(dimension)" se espera encontrar un objeto dimensión. En caso no se encuentre el objeto esperado, se lanzara una excepción personalizada (por ejemplo BuscarDAOException). • Las excepciones personalizadas serán clases que heredan de Exception, y se personalizara el ExceptionMessage devuelto. • Las excepciones personalizadas serán creadas a nivel de funcionalidad (excepción de procesamiento de BD, error lógico, etc.). Ejemplo: DAOException (excepción a nivel de BD): Buscar DAOException. XMLException (excepción de persistencia): CrearXMLException, BuscarXMLException, ActualizarXMLException, etc. 2.2 Generalidades • Se usara Java 1.5, el estándar de programación base será el de java (propuesto por Sun), sobre ello se usara el formato de Eclipse (reglas de indentación, espaciado, etc). Para acceder a dicho formato basta con: hacer click derecho- >Source->Format. desde el IDE. • Se utilizarán los siguientes plugins: o Amateras Faces IDE, Amateras HtmlEditor, version 2.0.0. • Se utilizarán las siguientes implementaciones: o Apache o MyFaces Tomahawk, implementación de componentes JSF, como trees, tabbedPanes y calendars. o Apache Tiles, antes struts-tiles, para la separación de zonas en las páginas. 3 • Un archivo fuente sólo contendrá una clase (además de inner classes que puedan existir). Las clases serán siempre públicas, los atributos serán protected cuando haya herencia (clase padre), private en cualquier otro caso. • Para listas de objetos no se usará la clase vector, se usara la interface List, la cual se instanciará como ArrayList. Por lo general, las listas llevarán el prefijo "lista" (ej: listaDimensiones) o algo que lo identifique como una agrupación. • La lógica de los servlets se hará en un método personalizado que se llamará doAction, el cual será llamado desde el doPost() y/o doGet(). • Los beans de persistencia heredarán de la clase XMLBean, la cual implementará Serializable (flag para un correcto marshalling). • Sobre los comentarios: o Se utilizarán comentario JavaDoc y comentarios normales. o Los comentarios JavaDoc se harán siempre, tanto a nivel de clase, métodos y constantes (comentarios para la documentación de las clases implementadas). Para detalles, ver la especificación de JavaDocs, desde el IDE: click derecho ->source -> add java comment. o Se utilizarán comentarios dentro de la implementación de métodos (comentarios de desarrollo) cuando haya algo que especificar (no es obligatorio comentar toda la implementación). o Al inicio de cada clase se colocara el autor, fecha de creación y a lista de las fechas de modificación (acompañadas del responsable y de una breve descripción de lo que se ha ido modificando). • Se usarán archivos properties (bundle). Estos archivos serán usados para todo texto inserto en las páginas JSF utilizadas (labels, títulos, subtítulos, encabezados). • El uso de scriptlets (<% %>) sólo se hará cuando sea absolutamente necesario y no exista otra posibilidad de desarrollo. • Los import se harán hasta la clase específica, no se usará el formato: import paquete.*; • Sobre los títulos de las paginas, se usará el nombre del proyecto seguido de la funcionalidad, "AXEbit - Funcionalidad". • Ejemplo: AXEbit – Crear Fuente de Datos. • Las hojas de estilo y javascript se referenciarán externamente, usando link para los css y