2 PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ FACULTAD DE CIENCIAS E INGENIERÍA Análisis, diseño e implementación de un sistema experto para la evaluación de la calidad de tanques de almacenamiento de combustibles Tesis para optar por el Título de Ingeniero Informático, que presenta el bachiller: Diego Espinoza Cubas ASESOR: Ing. Rony Cueva Moscoso Lima, Mayo del 2015 3 Resumen Hoy en día la extracción de recursos naturales es una de las principales actividades en nuestro país. Gracias a la riqueza de nuestro territorio, múltiples empresas invierten en este sector, siendo las industrias mineras y de hidrocarburos las que generan mayores ingresos a los inversionistas y al país. El incremento de estas actividades ha generado un incremento en la demanda de diferentes tipos de estructuras metálicas que den soporte a las diferentes industrias, como la minera, pesquera o petrolera. Una de las estructuras con mayor requerimiento son los tanques de almacenamiento, los cuales son usados para conservar distintos tipos de líquidos, minerales o combustibles que serán utilizados para la extracción, tratamiento, transporte o algún otro proceso que maneje la organización. Los tanques de almacenamiento luego de ser diseñados e instalados en las plantas o puntos de extracción, almacenan distintos tipos de líquidos y son expuestos a distintos tipos de condiciones climáticas. Esto a lo largo del tiempo hacen que presenten se puedan presentar fallas o averías, las cuales podrían perjudicar la conservación de los líquidos al interior de estos. El presente proyecto plantea la implementación de un sistema experto que pueda evaluar la condición y calidad de un tanque de almacenamiento de combustibles, utilizando las reglas ingresadas por un usuario experto, y en base a éstos poder determinar cuál es el estado y nivel de calidad actual de un tanque de almacenamiento. Para esto se desarrollarán los principales componentes del sistema experto, los cuales consisten en: base de hechos, motor de inferencia, interfaz gráfica y una base de conocimientos. Por medio de la interfaz gráfica el usuario interactuará con el sistema experto e introducirá la información a la base de hechos, la cual en conjunto con las reglas almacenadas en la base de conocimientos será evaluada por el motor de inferencia, el cual realizará un análisis y brindará un resultado sobre la calidad del tanque a los especialistas, agilizando las labores dentro del proceso de calidad. 4 5 6 7 Índice de Contenido Introducción ................................................................................................................................... 1 1. Generalidades ........................................................................................................................ 3 1.1. Problemática ................................................................................................................. 3 1.2. Objetivos del proyecto ................................................................................................... 5 1.3. Marco conceptual .......................................................................................................... 6 1.4. Estado del arte .............................................................................................................. 9 1.5. Planificación ................................................................................................................ 16 1.6. Descripción y sustentación de la solución .................................................................. 18 2. Análisis ................................................................................................................................. 19 2.1. Definición de la metodología de la solución ................................................................ 19 2.1.1. Metodología para la gestión del proyecto: PMI ................................................... 19 2.1.2. Metodología para el desarrollo de software: RUP .............................................. 20 2.1.3. Metodología para el desarrollo del sistema experto ........................................... 21 2.2. Identificación de requisitos .......................................................................................... 23 2.2.1. Requisitos no funcionales ................................................................................... 23 2.2.2. Requisitos funcionales ........................................................................................ 23 2.3. Análisis de la solución ................................................................................................. 29 2.3.1. Viabilidad de la solución ...................................................................................... 29 2.3.2. Análisis técnico y económico .............................................................................. 29 2.3.3. Restricciones de costo y tiempo.......................................................................... 32 2.3.4. Actores ................................................................................................................ 32 2.3.5. Módulos ............................................................................................................... 32 2.3.6. Diagrama de clases ............................................................................................. 37 2.3.7. Casos de uso del sistema ................................................................................... 38 3. Diseño .................................................................................................................................. 46 3.1. Arquitectura del software............................................................................................. 46 3.2. Diseño de Interfaz gráfica y diagramas de secuencia ................................................ 51 3.3. Estructuras del sistema experto .................................................................................. 66 3.3.1. Estructura de los archivos para las cargas masivas ........................................... 66 3.3.2. Base de conocimientos y reglas.......................................................................... 67 4. Construcción ........................................................................................................................ 70 4.1. Construcción ............................................................................................................... 70 4.1.1. Tecnologías a utilizar .......................................................................................... 70 4.1.2. Elaboración del motor de inferencia .................................................................... 71 4.1.3. Elaboración de la base de hechos ...................................................................... 72 4.1.4. Elaboración de la base de conocimientos ........................................................... 73 4.2. Pruebas ....................................................................................................................... 74 4.2.1. Casos de prueba ................................................................................................. 74 5. Observaciones, conclusiones y recomendaciones .............................................................. 81 5.1. Observaciones ............................................................................................................ 81 5.2. Conclusiones ............................................................................................................... 81 5.3. Recomendaciones y trabajos a futuro ......................................................................... 82 6. Referencias bibliográficas .................................................................................................... 83 8 Índice de Imágenes Figura 1. Arquitectura básica de un sistema experto .................................................................... 7 Figura 2. Interfaz de usuario de INTERGRAPH TANK ............................................................... 10 Figura 3. Interfaz de usuario de ETANK2000 ............................................................................. 11 Figura 4. SQA Advisory System – ingreso al sistema ................................................................ 12 Figura 5. SQA Advisory System – selección de estándar .......................................................... 12 Figura 6. SQA Advisory System – reporte de evaluación ........................................................... 13 Figura 7. Analizador de java inteligente – interfaz gráfica .......................................................... 14 Figura 8. SIRVAN – Base metodológica de la NTCSE ............................................................... 15 Figura 9. Estructura de descomposición del trabajo (EDT) ........................................................ 16 Figura 10. Diagrama de Gantt ..................................................................................................... 17 Figura 11. Metodología PMBOK [PMBOK] ................................................................................. 20 Figura 12. Metodología RUP [RUP] ............................................................................................ 21 Figura 13. Funcionamiento de un sistema experto [Experto] ..................................................... 22 Figura 14. Módulo de seguridad ................................................................................................. 34 Figura 15. Módulo de proyectos .................................................................................................. 35 Figura 16. Módulo de procesamiento .......................................................................................... 35 Figura 17. Módulo de reportes .................................................................................................... 36 Figura 18. Diagrama de clases ................................................................................................... 37 Figura 19. Arquitectura cliente-servidor [ARQCS] ...................................................................... 46 Figura 20. Arquitectura de un sistema experto ........................................................................... 47 Figura 21. Arquitectura de tipo MVC ........................................................................................... 48 Figura 22. Arquitectura híbrida .................................................................................................... 48 Figura 23. Flujo de datos en el sistema ...................................................................................... 50 Figura 24. Diagrama de despliegue ............................................................................................ 50 Figura 25. Administración de lotes .............................................................................................. 51 Figura 26. Nuevo lote .................................................................................................................. 52 Figura 27. Diagrama de secuencia: Nuevo lote .......................................................................... 53 Figura 28. Modificar lote .............................................................................................................. 54 Figura 29. Diagrama de secuencia: Modificar lote ...................................................................... 54 Figura 30. Ver lote ....................................................................................................................... 56 Figura 31. Nuevo tanque ............................................................................................................. 56 Figura 32. Diagrama de secuencia: Nuevo tanque ..................................................................... 57 Figura 33. Modificar tanque ........................................................................................................ 58 Figura 34. Diagrama de secuencia: Modificar tanque ................................................................ 58 Figura 35. Diagrama de secuencia: Eliminar tanque .................................................................. 59 Figura 36. Evaluación de tanque ................................................................................................ 60 Figura 37. Diagrama de secuencia: Evaluación del tanque ....................................................... 61 Figura 38. Administrador de conocimiento ................................................................................. 62 Figura 39. Nueva regla ................................................................................................................ 62 Figura 40. Nueva rama................................................................................................................ 63 Figura 41. Nueva regla ................................................................................................................ 63 Figura 42. Modificar regla ........................................................................................................... 64 Figura 43. Diagrama de secuencia: Modificar regla ................................................................... 65 Figura 44. Estructura de archivo de texto ................................................................................... 66 Figura 45. Estructura árbol de nodos .......................................................................................... 67 Figura 46. Relación entre conocimiento y regla .......................................................................... 67 Figura 47. Estructura de datos regla ........................................................................................... 68 Figura 48. Ejemplo de encadenamiento regresivo ..................................................................... 72 Figura 49. Tabla de hechos y clase de hechos .......................................................................... 73 9 Índice de Tablas Tabla 1. Requisitos no funcionales ............................................................................................. 23 Tabla 2. Requisitos de seguridad ................................................................................................ 25 Tabla 3. Requisitos de proyecto .................................................................................................. 27 Tabla 4. Requisitos de procesamiento ........................................................................................ 28 Tabla 5. Requisitos de reportes .................................................................................................. 28 Tabla 6. Análisis económico ....................................................................................................... 31 Tabla 7. Resumen de análisis económico .................................................................................. 31 Tabla 8.Condiciones y sus operadores ....................................................................................... 69 Tabla 9. Pruebas unitarias de nuevo lote.................................................................................... 76 Tabla 10. Pruebas unitarias de modificar lote ............................................................................. 76 Tabla 11. Pruebas unitarias de nuevo tanque ............................................................................ 77 Tabla 12. Pruebas unitarias de modificar tanque ....................................................................... 78 Tabla 13. Pruebas unitarias de nueva regla ............................................................................... 78 Tabla 14. Pruebas unitarias de modificar regla .......................................................................... 79 Tabla 15. Pruebas unitarias de evaluación de tanque ................................................................ 80 1 Introducción En la actualidad la industria en nuestro país ha crecido de manera rápida gracias al sector de extracción, que ha hecho que grandes empresas transnacionales vengan al país a invertir en la explotación y extracción de distintos minerales e hidrocarburos. Todo esto genera un incremento en la demanda de productos en la industria que manufactura estructuras metálicas, específicamente en los tanques de almacenamiento. Estos tanques son utilizados para poder conservar distintos tipos de líquidos, ya sean agua, minerales extraídos, combustible u algún otro necesario en el proceso industrial y que requiere de ser almacenado en alguna planta o punto de extracción específico. Estos tanques de almacenamiento son diseñados e instalados, luego de los cuales son expuestos a diferentes condiciones climáticas y almacenan distintos tipos de materiales que a lo largo del tiempo hacen que presenten fallas o averías, las cuales perjudicarían la conservación de los líquidos al interior de estos. El presente proyecto plantea la implementación de un sistema experto que pueda evaluar la condición y calidad de un tanque de almacenamiento en los cuales se guardará distintos tipos de combustibles, con el objetivo de facilitar la labor de la revisión de los operadores y de los especialistas. Para esto un usuario experto registrará diferentes reglas en la base de datos y utilizando la información que será proporcionada por los usuarios realizando la inspección, el sistema podrá determinar el estado actual y el nivel de calidad que presenta el tanque en evaluación. En el capítulo 1 se describirá la situación actual en la industria, los conceptos fundamentales para entender este proyecto, el estado del arte relacionado a la elaboración de tanques de almacenamiento y la sustentación de la solución presentada. En el capítulo 2 se presentará el análisis realizado para poder construir la solución, la elaboración de requisitos que cumplirá la solución. Además se presentarán los diagramas de casos de uso y la especificación de los principales casos de uso. 2 En el capítulo 3 se presentará el diseño de la solución en los que se incluye la arquitectura que se utilizará, los estándares gráficos que se seguirán, los prototipos de las ventanas que tendrá la solución y finalmente los diagramas de secuencia. En el capítulo 4 se describirá como se construirá la solución, es decir de qué forma se elaborarán los principales componentes, además se presentarán los casos de prueba de las funcionalidades más importantes. En el capítulo 5 se presentarán las conclusiones a las que se llegaron luego de la elaboración del proyecto, las observaciones y las recomendaciones para una posible mejora de este proyecto. 3 1. Generalidades 1.1. Problemática En la actualidad, el Perú presenta un crecimiento económico constante en la región. En el año 2014 la tasa de crecimiento estimado del país será de 5.5% según el Fondo Monetario Internacional [Gestión], el más alto de Latinoamérica. Este incremento viene siendo impulsado por el crecimiento de las múltiples industrias que se desarrollan en el país, de las cuales destacan principalmente en la industria minera y de hidrocarburos. El crecimiento en conjunto de ambos sectores fue de 7.92% en el mes de febrero del presente año, con un 9.8% de incremento para la minería, beneficiado principalmente por el aumento de la demanda de metales como el cobre y el hierro, los cuales se incrementaron el 22.9% y 11.9% respectivamente. Por otro lado el sector de hidrocarburos presentó un crecimiento de 1.89%, gracias al incremento de la explotación de petróleo crudo y gas natural [INEI]. Con estos resultados ambos sectores han presentado un crecimiento ininterrumpido de once meses al mes de febrero. Las empresas del sector de hidrocarburos por lo general operan fuera de las ciudades por lo que la preservación de los materiales usados en la operación es importante para la continuidad de la extracción. De igual manera debido a que las plantas se encuentran fuera de la ciudad y usualmente en provincia, la preservación y conservación de la materia prima extraída es un tema crítico. Debido a la importancia de la preservación de los materiales almacenados, las empresas utilizan diferentes tipos de estructuras para conservar los productos extraídos y los materiales utilizados en las operaciones en sus plantas. En el caso 4 específico de los materiales en estado líquido y en estado gaseoso, estos se reservan en tanques de almacenamiento que son construidos especialmente para los diferentes tipos de materiales que contendrán, las zonas geográficas en las cuales serán instalados y que además ayudarán a preservar la calidad de los materiales guardados en ellos. La elaboración de un tanque de almacenamiento, es un proceso que se puede dividir en dos etapas:  Análisis y diseño  Construcción y evaluación de la calidad El análisis y diseño son realizados por un especialista que puede ser un ingeniero mecánico o civil, los cuales deben seguir normas o estándares internacionales. En el caso del Perú la norma más utilizada es la API-650, publicada por el American Petroleum Institute y la cual es utilizada a nivel mundial. En esta etapa generalmente se utiliza software desarrollado en base a alguna de estas normas, los cuales asistirán a los especialistas en la en los cálculos, revisión y validación. Luego de esto se procede a construir el tanque de almacenamiento, en esta etapa, debido a la exigencia rigurosa de las normas, las empresas fabricantes se ven en la necesidad de realizar un control de calidad en los diferentes procesos de fabricación, para validar la correcta ejecución de los parámetros establecidos por el diseño y las normas utilizadas. Estos controles de calidad requieren que un usuario experto realice una revisión del tanque en construcción in situ. Dicho usuario debe conocer la norma utilizada y los factores de control de calidad que establece y que se tomaron en cuenta al momento de realizar el diseño, siendo los más comunes:  Las condiciones ambientales a las cuales será expuesto el recipiente.  La sustancia ya sea en estado líquido o gaseoso que será almacenado.  El material del cual será construido.  Las dimensiones.  La zona geográfica en la cual será instalado. Debido a la poca cantidad de herramientas de apoyo y a las limitaciones en sus funcionalidades, el usuario experto generalmente realiza las revisiones de manera 5 manual y en forma frecuente para los diferentes recipientes que se fabrican, lo cual adicionalmente a todos los factores mencionados anteriormente pueden hacer que la evaluación se vuelva una actividad compleja, tediosa y que pueda inducir a errores cometidos durante la revisión, ya sea debido al cansancio u otras condiciones externas y que puedan llevar al rechazo del producto, y por consiguiente pérdida en los costos del producto por fabricación y tiempo en mano de obra. El presente proyecto de tesis propone construir un sistema experto que permita asistir con la evaluación y control de la calidad de los tanques de almacenamiento a los usuarios encargados de esta labor. Debido al uso de normas y reglas para poder determinar el estado y la calidad de un tanque exigidos por las normas, así como del ingreso de múltiples parámetros o variables, se considera que desarrollar un sistema experto será la mejor solución al problema, ya que los sistemas expertos destacan en el manejo de reglas y datos ingresados por los usuarios, con los cuales puede llegar a tomar una decisión u obtener un resultado de la misma manera que un usuario experto. Las evaluaciones se realizarán utilizando las reglas registradas por los usuarios expertos, utilizando un módulo de conocimientos en el sistema y con la información del tanque evaluado, la cual será ingresada por medio de una interfaz gráfica. Adicionalmente se proveerá a los usuarios con módulos que permitan registrar información relacionada a los lotes de producción, los tanques evaluados y los resultados obtenidos, permitiendo identificar (en caso existiesen) fallas o errores constantes que se realicen en la construcción, además de poder generar y obtener estadísticas del proceso. 1.2. Objetivos del proyecto Objetivo general Se pretende realizar el análisis, diseño e implementación de un sistema experto que evalúe la calidad de los tanques de almacenamiento de distintos tipos de líquidos o gases. 6 Objetivos específicos a. Definir y seleccionar una arquitectura adecuada para el sistema. b. Construir una base de datos para el conocimiento, en el cual el experto registrará sus conocimientos sobre la evaluación de la calidad de los tanques de almacenamiento siguiendo una metodología de encadenamiento regresivo. c. Construir un motor de inferencia que relacione los conocimientos y las reglas ingresadas a las bases de datos con la información ingresada por los usuarios. d. Implementar la base de hechos y el módulo de adquisición de conocimientos para que el experto ingrese la información necesaria. Resultados esperados a. Diseño de la arquitectura de información y las estructuras de datos necesarias para soportar el sistema experto. b. Diseñar una base de datos que pueda almacenar las reglas y/o normas que registrarán los usuarios expertos, además de la información general de los tanques que serán evaluados. c. Implementar un motor de inferencia en Java que permita relacionar las reglas o normas registradas con la información específica de cada tanque de almacenamiento para su evaluación. d. Desarrollar una interfaz gráfica que permita a los usuarios registrar información sobre los tanques a ser evaluados e ingresar las reglas o normas que se utilizarán para las evaluaciones. 1.3. Marco conceptual En esta sección se presentarán los conceptos teóricos más importantes que se tocarán en este trabajo, se dividirán en dos partes, una relacionada a los conceptos claves de un sistema experto y por otro lado los conceptos relacionados a la construcción de los tanques de almacenamiento. Sistema experto: Sistema de computadora que emulará a un experto humano en la toma de decisiones: “…es un programa de computadora inteligente que usa el conocimiento y procedimientos inferenciales para resolver problemas que son lo 7 suficientemente difíciles como para requerir del conocimiento de un experto humano para solucionarlos” [Feigenbaum 82]. Base de hechos: Es una memoria donde se almacenarán los elementos, datos e información introducida por el usuario y que será utilizada para la resolución del problema en particular. [Giarratano 89]. Base de conocimiento: Es una base de datos que contendrá los conocimientos y las reglas o normas utilizadas por el experto y que serán relacionados los hechos introducidos por el usuario para poder obtener una solución a los problemas. [Giarratano 89]. Motor de inferencia: Será el encargado de modelar el proceso del razonamiento de un experto humano, utiliza la inferencia para decidir si los datos introducidos por el usuario cumplen ciertas reglas y cuál de estas reglas es la que tiene mayor prioridad de ejecución. [Giarratano 89]. Figura 1. Arquitectura básica de un sistema experto Interfaz gráfica: Es el mecanismo que utilizará el usuario final para introducir los datos y hechos al sistema experto. [Giarratano 89]. 8 Módulo de explicaciones: Es el módulo encargado de explicarle al usuario como y porque el sistema experto llego a tomar una decisión en particular. [Giarratano 89]. Usuario experto: Es la persona que introduce los conocimientos en la base de conocimientos del sistema experto y que serán utilizados para resolver problemas. [Giarratano 89] Usuario Final: Es la persona que utiliza el sistema experto para resolver sus problemas y el que interactuara con la interfaz grafica para poder comunicarse con el sistema. [Giarratano 89] Tanque: Recipiente de forma cilíndrica que se utilizará para almacenar distintos tipos de líquidos, apoyado sobre una base de concreto y pueden ser anclados o no en el concreto. Pueden ser abiertos o cubiertos con un techo en la parte superior. [Brownell 1959] Casco: Envolvente del tanque, formado por planchas de acero de diferentes espesores, las cuales serán unidas mediante soldadura horizontal y vertical haciéndolo estanco. [Brownell 1959] Fondo: Parte inferior del tanque, que servirá de apoyo al tanque sobre una superficie de concreto, la cual será plana o estará ligeramente inclinada. Estará formado por planchas unidas por soldadura que hacen estanco. [Brownell 1959] Techo: Cobertura superior del tanque, será cónica o de tipo domo, el cual será soportado o auto soportado. [Brownell 1959] 9 Anclaje: Elemento de fijación entre el tanque y la base de concreto, servirá para evitar el volteó del tanque durante un sismo o debido al viento. [Brownell 1959] Anillo de rigidez superior: Perfil de acero que rigidizará la parte superior del tanque contra el viento y que servirá de apoyo al techo. [Brownell 1959] Tipo de material: Son los diferentes materiales cuyo uso será permitido en la elaboración de los tanques. El material más común para la construcción de los tanques de almacenamiento es el acero al carbono, el cual permite soldabilidad en las placas. Formato de planchas: Dimensión de las planchas de acero que usualmente se obtendrán en el mercado local o importación cuando se trate de aceros especiales. API-650: Es la norma que será utilizada como referencia para la elaboración de las reglas y el conocimiento que manejará el sistema experto a construir. [API 2007] 1.4. Estado del arte Sistemas para diseño y evaluación de tanques de almacenamiento INTERGRAPH ® TANK Elaborado por: Intergraph Corporation. Descripción: Intergraph Tank es un software para el análisis, diseño y evaluación de tanques de almacenamiento de petróleo. Provee a los usuarios con rápidos y acertados diseños para nuevos tanques y puede evaluar los tanques existentes. [ITANK] 10 INTERGRAPH TANK posee las siguientes características:  Permite definir los datos de entrada a los estándares de la American Petroleum Institute.  Provee al usuario de una interfaz gráfica para interactuar con el programa.  Permite analizar y realizar cálculos dependiendo de los estándares seleccionados.  Genera reportes.  Posee una base de datos de los materiales.  Utiliza los estándares API 650/653. Figura 2. Interfaz de usuario de INTERGRAPH TANK ETANK 2000 Elaborado por: Eware, Inc. Descripción: Etank2000 es un software de diseño de tanques de almacenamiento que soporta las siguientes normas: API-650, API-620, API-653, UL-142. Este programa puede diseñar tanques y reevaluar tanques desde cero. [ETANK] 11 Etank2000 posee las siguientes características:  Soporta múltiples normas y códigos para el diseño de tanques.  Posee un editor de materiales para que el usuario pueda definir los suyos de manera fácil.  Genera reportes detallados con la información del tanque y de sus distintas partes. Estos reportes contienen también los materiales utilizados y las dimensiones.  Soporta distintas formas de techos, anclajes, anillos de compresión, entre otros.  Ayuda al usuario subrayando de un color diferente las entradas incorrectas. Figura 3. Interfaz de usuario de ETANK2000 Sistemas para evaluación de calidad Sistema de consulta para el control de calidad de software Elaborado por: Khalid Eldrandaly Descripción: Este sistema es un prototipo desarrollado con la finalidad de brindar asistencia a personas u organizaciones que se encuentren en la etapa de control de calidad de 12 proyectos de software. Para esto el sistema se encargará de encontrar las diferencias entre los prerrequisitos y las funcionalidades con las que cuenta el software evaluado. Una vez finalizada la evaluación, el sistema emitirá un reporte que permita corregir e implementar las funcionalidades faltantes y así poder cumplir con los procedimientos o estándares establecidos. [Khalid] El sistema presenta las siguientes características:  La interfaz gráfica fue desarrollada utilizando Microsoft Visual Basic 6.0  El módulo del sistema experto fue desarrollado utilizando Visual Rule Studio  Para la base de datos se utilizó Microsoft Access 2003.  Utiliza estándares como CMMI o ISO/IEC 90003:2004 Figura 4. SQA Advisory System – ingreso al sistema Figura 5. SQA Advisory System – selección de estándar 13 Figura 6. SQA Advisory System – reporte de evaluación Sistemas Expertos en evaluación de calidad java Elaborado por: Franco Madou, Martín Agüero, Gabriela Esperón, Daniela López de Luise. Descripción: Este proyecto plantea la creación de un sistema que permita analizar y optimizar el código fuente de software creado en lenguaje Java. El análisis inicia extrayendo características de los archivos seleccionados y los clasifica utilizando Redes Neuronales. Con esta clasificación un sistema experto procede a realizar recomendaciones para la mejora del código fuente del software, mejorando la calidad del producto final. [Madou] El sistema posee las siguientes características:  Está desarrollado en lenguaje Java.  La red neuronal utilizada es de tipo Perceptrón multicapa.  El sistema experto utiliza el motor de reglas JESS, escrito en Java y basado en CLIPS. 14 Figura 7. Analizador de java inteligente – interfaz gráfica Sistema de monitoreo de calidad del servicio eléctrico. Elaborado por: Esteban Inga Llanca, Raúl Vilcahuamán Sanabria Descripción: Este sistema ha sido elaborado para poder realizar el monitoreo de los parámetros de calidad establecidos en la “Norma Técnica de Calidad de los Servicios Eléctricos” (NTCSE). Las empresas eléctricas ingresan información mediante una extranet, la cual es revisada por el ente regulador OSINERGMIN (Perú) utilizando los dos siguientes sistemas en conjunto:  Sistema Informático para la Selección Aleatoria (SISA)  Sistema Informático de Recepción y Validación de Información (SIRVAN), sistema experto con base de conocimiento especializada en la NTCSE peruana. Las empresas eléctricas ingresan la programación semestral de las mediciones de tensión y de precisión de la medida por medio del SISA utilizando una plataforma 15 de tipo Extranet. Una vez finalizado el control semestral, las empresas reportan la información al SIRVAN. [Inga] El sistema posee las siguientes características:  Está desarrollado en lenguaje Java.  Utiliza base de datos Oracle.  SIRVAN, es un sistema experto con base de conocimientos en la NTCSE. Figura 8. SIRVAN – Base metodológica de la NTCSE Sistema de Información y vigilancia de la calidad del agua (SIVCA) Elaborado por: Ing. David Mora Reyes y Biól. Jose Luis Gomez Juarez. Descripción: SIVCA es un sistema que se encarga de realizar la vigilancia del agua que se suministra a los habitantes del Distrito Federal en México. El sistema está conformado por los siguientes módulos: inspección sanitaria, resultados analíticos, control de calidad, costos, matemático y toma de decisiones. El ambiente en que se desarrolla involucra el concepto de un sistema de información geográfico, por lo cual cuenta la ubicación de puntos fijos como pozos, manantiales, tanques de almacenamiento, bombeo entre otros) y sitios 16 aleatorios (tomas domiciliarias) donde se recolecta el agua para luego ser enviados al Laboratorio Central de Control para su análisis. [Mora] Los cinco primeros módulos mencionados realizan actividades rutinarias que permiten la operación sistemática de la vigilancia de la calidad del agua, mientras que el sistema de toma de decisiones interactúa con el ambiente grafico y tiene la posibilidad de obtener los lugares de interés para el análisis de su información para poder obtener las reglas expertas relacionadas a la química del agua, inspección sanitaria, control de calidad analítico, costos o cualquier otro factor que puedan ayudar a la toma de decisiones. [Mora] 1.5. Planificación En esta sección se presenta la Estructura de Descomposición del Trabajo (EDT) que contiene descomposición jerárquica del proyecto y también se presenta el diagrama de Gantt del proyecto en el cual se podrá observar la planificación de los tiempos para cada una de las etapas en las que se dividirá el proyecto. Figura 9. Estructura de descomposición del trabajo (EDT) 17 En la planificación del proyecto se estima un aproximado de 700 horas de trabajo mínimo. En el diagrama de Gantt se observará que el proyecto durara 340 días que sería aproximadamente un año (sin contar los sábados, domingos y feriados) y trabajando un promedio de 2 o 3 horas diarias en el proyecto. A continuación el diagrama de Gantt de las tareas que se realizarán en el proyecto y sus duraciones: Tarea Duración (Días) Inicio Fin Análisis, Diseño e Implementación de un sistema para la evaluación de la calidad para tanques de almacenamiento empleando un sistema experto 253 23/08/2010 21/10/2013 Fase de Concepción 17 23/08/2010 09/09/2010 Definición preliminar del producto 7 23/08/2010 30/08/2010 Elaboración del Marco Conceptual 3 30/08/2010 02/09/2010 Elaboración del Estado del Arte 7 02/09/2010 09/09/2010 Fase de Elaboración 134 09/09/2010 21/10/2011 Documentación de Planificación y Análisis 74 09/09/2010 22/11/2010 Correcciones y Actualizaciones 14 09/09/2010 23/09/2010 Catálogo de Requisitos 7 23/09/2010 30/09/2010 ERS 20 30/09/2010 20/10/2010 WBS 3 20/10/2010 23/10/2010 Diagrama de Gantt 3 23/10/2010 26/10/2010 Diagramas de Casos de Uso 20 26/10/2010 15/11/2010 Diagrama de Clases 7 15/11/2010 22/11/2010 Documentación de Arquitectura 31 22/08/2011 22/09/2011 Correcciones y Actualizaciones 7 22/08/2011 29/08/2011 Documento de Arquitectura 7 29/08/2011 05/09/2011 Diagramas de Secuencia 14 05/09/2011 19/09/2011 Diagrama Entidad-Relación 3 19/09/2011 22/09/2011 Documentación de Diseño Detallado 15 22/09/2011 07/10/2011 Correcciones y Actualizaciones 7 22/09/2011 29/09/2011 Prototipos de la interfaz gráfica 5 29/09/2011 04/10/2011 Estandares de Programación 3 04/10/2011 07/10/2011 Documentación de Plan de Pruebas 14 07/10/2011 21/10/2011 Correcciones y Actualizaciones 7 07/10/2011 14/10/2011 Casos de Prueba 7 14/10/2011 21/10/2011 Fase de Construcción 80 21/10/2011 29/09/2013 Primera Iteración 15 21/10/2011 05/11/2011 Segunda Iteración 15 05/11/2011 20/11/2011 Tercera Iteración 15 20/11/2011 05/12/2011 Cuarta Iteración 35 25/08/2013 29/09/2013 Fase de Transición 22 29/09/2013 21/10/2013 Correcciones Finales 7 29/09/2013 06/10/2013 Pruebas de Software 5 06/10/2013 11/10/2013 Recopilación de la documentación 3 11/10/2013 14/10/2013 Afinamiento del proyecto para la sustentación final 7 14/10/2013 21/10/2013 Figura 10. Diagrama de Gantt 18 1.6. Descripción y sustentación de la solución Para poder darle una solución efectiva y eficiente al problema antes mencionado, se plantea el desarrollo de un sistema experto para la evaluación de la calidad de los tanques de almacenamiento. La decisión de utilizar un sistema experto se toma debido a que estas aplicaciones, por su arquitectura y diseño, permiten ingresar y almacenar conocimientos (ya sean normas establecidas u obtenidos por la experiencia) que luego serán utilizadas por el sistema para evaluar los diferentes datos que un usuario ingrese. De esta manera se puede obtener un resultado que este asociado directamente al conocimiento previamente ingresado y a los datos que se ingresan al momento de realizar una evaluación (esta sería la labor principal del motor de inferencia de un sistema experto). El usuario del sistema adicionalmente podrá administrar lotes, luego agregar tanques a este lote para finalmente ejecutar el sistema experto y evaluar estos tanques ingresados. Luego visualizará una terminal con un número de preguntas a las cuales el usuario del sistema deberá responder, estas respuestas serán los hechos que se guardaran en la base de hechos. Una vez que el sistema evalúe todos los hechos y los asocie con los conocimientos, procederá a dar un resultado, que sería el estado en el que se encuentra el tanque de almacenamiento y una calificación cuyo valor significaría la calidad del tanque. Este proyecto buscará ofrecer una solución a todas aquellas personas que estén encargados de la evaluación de la calidad de los tanques de almacenamiento, ya que la evaluación de la calidad de un tanque de almacenamiento depende de muchos factores y normas que se deben tomar en cuenta. Esto hace que este trabajo sea bastante pesado, complejo y en muchos casos dependa bastante de la experiencia del operador o ingeniero que se encuentre realizando la evaluación de algún tanque. Por lo cual un sistema que pueda realizar estas tareas sería de gran ayuda para el personal encargado de esta tarea, ya que contarían con un apoyo adicional al momento de tomar decisiones acerca del estado de un tanque de almacenamiento. 19 2. Análisis En este capítulo se detallará el análisis que se realizó partiendo de los requerimientos del sistema, se explicará la metodología a utilizarse y finalmente se evaluará el proyecto a través de un análisis técnico y económico. 2.1. Definición de la metodología de la solución 2.1.1. Metodología para la gestión del proyecto: PMI Se utilizarán los estándares del PMBOK (Project Management Body of Knowledge) para la gestión de este proyecto. Este será dividido en los siguientes procesos: Iniciación, Planificación, Ejecución, Control y Cierre. [12Manage]. A continuación se definen los procesos antes mencionados y adicionalmente en la Figura 11, se podrá observar cómo estos interactúan entre ellos:  Iniciación: En esta etapa se definirá el tema, objetivo principal, objetivos específicos y resultados esperados.  Planificación: Se definirá el alcance, los entregables que se requieren, el cronograma y las actividades. Utilizando esto se puede obtener el costo y esfuerzo requerido para realizar el proyecto.  Ejecución: En esta etapa es en que se pondrá en marcha el plan realizado, para este caso se utilizará la metodología RUP, para el desarrollo de software. 20  Control: En esta etapa se realizarán las correcciones necesarias en el proyecto, se gestionarán los cambios solicitados y se realizará la gestión de los riesgos.  Cierre: En esta última etapa se realizará el cierre del proyecto, validando que el producto cumpla con los requisitos definidos inicialmente y concluyendo todas las actividades antes planificadas. Figura 11. Metodología PMBOK [PMBOK] 2.1.2. Metodología para el desarrollo de software: RUP El proyecto se realizará utilizando la metodología RUP (Rational Unified Process) para el control de las actividades y las tareas que se efectuarán a lo largo del desarrollo del sistema. A su vez se utilizará la técnica de modelado UML (Unified Modeling Language), la cual será utilizada para realizar el análisis, diseño, construcción y documentación del sistema. Las etapas en las que RUP divide el desarrollo del sistema son cuatro: concepción, elaboración, construcción y transición. A continuación se presentará cómo se desarrollarán las etapas del proyecto y adicionalmente en la Figura 12 se podrá observar una comparación de los recursos y el tiempo que se invierte en cada una de las etapas mencionadas. 21  Concepción: En esta etapa se definirá el proyecto que va a realizarse y su alcance. También se analizarán los requerimientos funcionales y no funcionales que presentará el sistema.  Elaboración: En esta parte se realizará el análisis y diseño del software utilizando para ello documentos como: Catalogo de Requisitos, Especificación de Requisitos de Software, Diagramas de Secuencia, Diagramas de Entidad- Relación, Prototipos de interfaz gráfica, entre otros.  Construcción: En la etapa de construcción se realizará el desarrollo del software utilizando los documentos de análisis y diseños elaborados en la fase de Elaboración. Se construirán tres versiones las cuales funcionaran correctamente y a las cuales se les ira agregando funcionalidades en cada entrega hasta cumplir con todos los requerimientos del sistema.  Transición: Finalmente en este punto se realizarán las pruebas al software luego de su construcción y se procederá a hacer una recopilación de los documentos realizados a lo largo de las fases anteriores. Figura 12. Metodología RUP [RUP] 2.1.3. Metodología para el desarrollo del sistema experto Para el desarrollo del sistema experto se tendrá en cuenta las siguientes consideraciones: 22  El sistema experto presentará un encadenamiento de tipo regresivo, esto debido a que la cantidad de resultados es menor a la cantidad de datos ingresados por el usuario. El encadenamiento regresivo toma una hipótesis inicial, luego pide que se ingresen distintos datos, el sistema verificará que la hipótesis cumpla con los datos. En caso de no cumplir, pasará a verificar otra hipótesis usando los datos anteriormente registrados y pidiendo otros de tal forma que pueda confirmar.  Las reglas podrán ser ingresados a la base de conocimientos de dos maneras diferentes: de forma masiva (archivo de texto) o de forma manual (mediante el administrador de conocimientos).  Los datos que serán cargados a la base de hechos ingresarán mediante una interfaz en la cual el sistema experto realizará un número de preguntas a las cuales el usuario responderá.  El motor de inferencia será implementado utilizando el lenguaje Java, este será el encargado de evaluar las reglas de la base de conocimientos y los datos que contenga la base de hechos. A continuación se presentará una imagen donde se visualizará cómo funciona un sistema experto. (Figura 13) Figura 13. Funcionamiento de un sistema experto [Experto] 23 En la Figura 13 se puede observar cómo interactúan los diferentes componentes del sistema. Los hechos son recibidos de la interfaz gráfica o algún otro sistema, para luego unirse a las reglas y ser enviadas al motor de inferencia, el cual luego de evaluar los datos y reglas, le envía el resultado al usuario por medio de la interfaz gráfica. 2.2. Identificación de requisitos En esta sección se detallarán todos los requisitos que deberá cumplir el sistema, tanto los no funcionales como los funcionales. La sección funcional se dividirá en cuatro módulos diferentes: seguridad, proyecto, procesamiento y reportes. A su vez se detallará cual es la prioridad, la cual podrá ser: Alta, Media o Baja. Por otro lado la exigencia del requisito en el sistema podrá ser: Obligatoria u Opcional. 2.2.1. Requisitos no funcionales Requisito Prioridad Exigencia 1 El software será desarrollado en lenguaje Java Alta Obligatoria 2 El software trabajará sobre el sistema operativo Windows. Media Obligatoria 3 La interfaz gráfica deberá ser simple e intuitiva. Media Obligatoria 4 Se utilizará el IDE Netbeans para la programación. Baja Opcional 5 El sistema experto utilizará encadenamiento regresivo y la base de conocimientos será representado por medio de un árbol de reglas. Alta Obligatoria 6 Las reglas del sistema experto estarán basadas en la norma API-650. Alta Obligatoria 7 El sistema tendrá un acceso restringido por medio de contraseñas encriptadas. Media Obligatoria Tabla 1. Requisitos no funcionales 2.2.2. Requisitos funcionales El sistema se dividirá en cuatro módulos: Seguridad, Proyectos, Procesamiento y Reportes. A continuación se listarán los requisitos del sistema para cada uno de estos módulos. 24 Módulo de Seguridad Requisito Prioridad Exigencia 1 El sistema contará con un módulo para el inicio de sesión, el cual solicitará una cuenta de usuario y una contraseña para todo el que desee ingresar al sistema. Alta Obligatoria 2 El módulo de inicio de sesión adicionalmente contará con una opción para recuperar contraseñas por medio de una pregunta secreta asociada al usuario, con la cual podrá restaurar su contraseña. Media Opcional 3 El sistema permitirá ingresar información sobre las personas relacionadas al proceso de producción o al sistema, las cuales no necesariamente contarán con un usuario. Entre los datos a ingresar estarían los siguientes: nombre, apellido paterno, apellido materno, documento de identidad, email, teléfono, tipo de empleado y observaciones. Media Obligatoria 4 El sistema permitirá modificar la información relacionada a las personas registradas en el sistema. Media Obligatoria 5 El sistema permitirá el cambio de estado de una persona, entre los cuales figuran: activo e inactivo. Media Obligatoria 6 El sistema permitirá crear cuentas de usuarios, las cuales permitirán a las personas ingresar al sistema. Entre los datos a registrar se encuentran: cuenta de usuario, contraseña (dos veces), la persona asociada al usuario y el perfil del usuario. Alto Obligatoria 7 El sistema permitirá modificar la información relacionada a los usuarios registrados en el sistema. Media Obligatoria 8 El sistema permitirá el cambio de estado de un usuario, entre los cuales figuran: activo e inactivo. En caso un usuario ingrese incorrectamente su contraseña un número de veces, su cuenta tendrá estado bloqueado. Media Obligatoria 9 El sistema permitirá crear diferentes perfiles, los cuales contendrán los permisos a diferentes funcionalidades. Entre los datos a registrar se encuentran: nombre del perfil, descripción y permisos asociados. Alta Obligatoria 10 El sistema permitirá modificar la información y permisos relacionados a los perfiles del sistema. Media Obligatoria 11 El sistema permitirá el cambio de estado de un perfil entre los cuales figuran: activo e inactivo. Media Obligatoria 25 12 El sistema permitirá al administrador configurar el número de intentos que tendrá un usuario para ingresar su contraseña correctamente, luego del cual la cuenta será bloqueada. Media Obligatoria 13 El sistema permitirá establecer el número mínimo de caracteres que deberá poseer una contraseña. Media Obligatoria 14 El sistema permitirá establecer la duración de una contraseña antes de que se requiera cambiarla. Media Obligatoria 15 El sistema validará que una contraseña nueva no sea similar a una anteriormente usada, dado un número de días establecido por el administrador del sistema. Media Obligatoria 16 El sistema validará que una misma cuenta de usuario no esté conectada en más de una terminal. Media Opcional 17 El sistema guardará una bitácora con todas las acciones que se realicen, guardando en la base de datos el tipo de acción, la tabla afectada, el usuario, la fecha y la hora. Media Opcional 18 El sistema permitirá a cada usuario registrado en el sistema cambiar su contraseña y pregunta secreta. Media Obligatoria 19 El sistema permitirá la creación de varios grupos de operadores, los cuales serán conjuntos de usuarios de tipo operador, y serán asociados a un lote de tanques. Entre los datos a registrar se encuentran: el nombre del grupo, la descripción y los usuarios que pertenecen al grupo. Media Opcional 20 El sistema permitirá modificar la información relacionada a los grupos de operadores registrados en el sistema. Media Opcional Tabla 2. Requisitos de seguridad Módulo de Proyectos Requisito Prioridad Exigencia 1 El sistema contará con una pantalla principal en donde se listaran todos los lotes a los cuales el usuario tenga permiso de acceder. Alta Obligatoria 2 El sistema permitirá realizar la búsqueda de lotes en la pantalla principal donde contará con filtros para la búsqueda. Entre los filtros estarían los siguientes: nombre, estado, fecha de trabajo inicio y fecha de trabajo fin. Alta Obligatoria 3 El sistema permitirá la creación lotes, en los cuales se almacenarán los tanques de almacenamiento. El creador Alta Obligatoria 26 seleccionará al grupo de operadores que trabajará el lote. Entre los datos a registrar se encuentran: nombre, grupo asociado, descripción, fecha de trabajo inicio y fecha de trabajo fin. 4 El sistema permitirá modificar la información relacionada a los lotes creados en el sistema. Alta Obligatoria 5 El sistema permitirá eliminar un lote utilizando el botón eliminar. Media Obligatoria 6 El sistema permitirá a los usuarios de un grupo, agregar tanques de almacenamiento al lote. Entre los datos a registrar del tanque se encuentran: nombre del tanque, descripción, tipo y persona encargada de la elaboración del tanque. Solo podrán agregarse tanque a los lotes que se encuentren activos. Alta Obligatoria 7 El sistema permitirá al usuario creador de un tanque modificar la información relacionada a este. Alta Obligatoria 8 El sistema permitirá a los usuarios creadores de un tanque, ejecutar un motor de inferencia para evaluar su calidad, una vez guardado el tanque de almacenamiento. Alta Obligatoria 9 El sistema le mostrará al usuario la lista de reglas disponibles, para que este seleccione y realice la evaluación utilizándola. Alta Obligatoria 10 El sistema le mostrará al usuario creador de un tanque, que ejecute el motor de inferencia, una interfaz gráfica para poder ingresar los datos relacionados al tanque de almacenamiento creado. Estos datos serán utilizados junto con las reglas por el motor de inferencia para poder realizar la evaluación de la calidad del tanque. Alta Obligatoria 11 El sistema almacenará los datos ingresados por los usuarios en la evaluación, de esta manera la información puede ser consultada posteriormente. Alta Obligatoria 12 El sistema permitirá la generación de un reporte en el cual se listará todos los datos ingresados y las reglas utilizadas en la evaluación. Media Opcional 13 El sistema permitirá crear los tipos de tanques que se producen, entre los datos a registrarse figuran: nombre y descripción. Media Opcional 14 El sistema permitirá modificar la información relacionada a los tipos de tanques. Media Opcional 27 15 El sistema permitirá el cambio de estado de un tipo de tanque, entre los cuales figuran: activo e inactivo. Media Opcional 16 El sistema permitirá crear los tipos de calidad que serán asignados a un tanque luego de su evaluación. Estos tipos de calidad serán asociados a una regla como resultado final de esta, entre los datos a registrarse figuran: nombre y descripción. Media Opcional 17 El sistema permitirá modificar la información relacionada a los tipos de calidad. Media Opcional 18 El sistema permitirá cambiar el estado de un tipo de calidad, entre los que figuran: activo e inactivo. Media Opcional Tabla 3. Requisitos de proyecto Módulo de Procesamiento Requisito Prioridad Exigencia 1 El sistema permitirá cargar el archivo de texto con la información de las reglas, de tal forma que esta sea guardada en el sistema. Media Opcional 2 El sistema permitirá guardar la información de las reglas en un archivo de texto. Media Opcional 3 El sistema permitirá la creación de reglas para la base de conocimientos mediante una interfaz provista al usuario experto. Entre los datos a registrar figuran: nombre de la regla, identificador, descripción, la pregunta a realizar y las ramas ligadas a las reglas hijas. Alta Obligatoria 4 El sistema permitirá la creación de las ramas ligadas a las reglas hijas, en las cuales se establece la condición que se debe cumplir para que el motor de inferencia utilice una regla en la evaluación del tanque de almacenamiento. Entre los datos a registrar figuran: tipo de condición, condición, si se trata de una lista de datos y el/los dato(s) a evaluar. Así mismo se deberá ingresar la información de la regla asociada a esta rama. Entre los datos a registrar figuran: nombre de la regla, descripción, la pregunta a realizar y si se trata del fin de la regla. En caso se trata del fin, se deberá seleccionar la calidad asociada en lugar de registrar una pregunta. Alta Obligatoria 28 5 El sistema permitirá modificar la información relacionada a las reglas y ramas registradas en el sistema. Alta Obligatoria 6 El sistema permitirá cambiar el estado de las reglas entre los que figuran: Activa e Inactiva. Alta Obligatoria 7 El sistema contará con un motor de inferencia el cual se encargara de relacionar la información ingresada y las reglas registradas en el sistema. Alta Obligatoria 8 El sistema permitirá la evaluación de un tanque de almacenamiento de forma individual, es decir sin que pertenezca a un lote. Alta Obligatoria Tabla 4. Requisitos de procesamiento Módulo de Reportes Requisito Prioridad Exigencia 1 El sistema permitirá generar un reporte de seguridad, según un rango de fechas, en el cual se visualizarán las acciones realizadas por los usuarios, las tablas afectadas por estas acciones, la fecha y hora en la que se realizó. Media Opcional 2 El sistema permitirá generar un reporte en el cual se visualizará toda la información ingresada en la evaluación de un tanque. Media Opcional 3 El sistema permitirá generar un reporte de productividad, en un rango de fechas, en el cual se visualizará la cantidad de tanques evaluados por los diferentes usuarios. Media Opcional 4 El sistema permitirá generar un reporte, en el cual se visualizará la calidad de todos los tanques producidos por un usuario en particular. Media Opcional 5 El sistema permitirá generar un reporte, en el cual se visualizará la calidad de todos los tanques producidos y asociados a un lote. Media Opcional 6 El sistema permitirá generar un reporte, en el cual se visualizará la calidad de todos los tanques producidos en un rango de fechas. Media Opcional Tabla 5. Requisitos de reportes 29 2.3. Análisis de la solución 2.3.1. Viabilidad de la solución Se planteará un proyecto de implementación cuyo desarrollo se tratará de realizar con la mayor cantidad de software libre a fin de evitar el pago de las licencias a los propietarios de éstos. Para el desarrollo de la interfaz de usuario, base de conocimientos y motor de inferencia se usará el lenguaje de programación Java, utilizando el entorno de desarrollo Netbeans IDE y se trabajará bajo el sistema operativo Windows 7. Se trabajará con un motor de base de datos MySQL y se usará el programa MySQL Workbench para el modelado de la base de datos y para el control de la misma. Todas las librerías que se utilicen serán de uso libre para evitar pagos a terceros. Para el modelado del sistema se usará la página web Cacoo con una cuenta de tipo gratuita. El desarrollo del sistema será realizado con recursos propios. El tiempo que se planteo para el desarrollo del software es de aproximadamente un año para las cuatro diferentes etapas del proyecto: concepción, elaboración, construcción y transición. Además se considera que el proyecto se desarrollará en periodo académico por lo tanto si es que fuera necesario, se alargará el plazo de entrega final o de alguna de las etapas. Por todo lo expuesto anteriormente, se considera la implementación de este proyecto es viable. 2.3.2. Análisis técnico y económico Análisis técnico El proyecto presentará una dificultad intermedia, se evitará realizar un sistema muy complejo de tal forma que pueda ser utilizado en computadoras no muy potentes o de última generación. Se utilizará con el sistema operativo Windows, ya que es el sistema con mayor difusión en todo el mundo y a su vez se trabajará con el lenguaje de programación Java, que es de distribución gratuita y que tiene como principal ventaja su portabilidad, es decir si bien se trabajará con Windows, será posible llevar el sistema a otros sistemas operativos como Linux. [Deitel] 30 Para el desarrollo se usará la interfaz NetBeans en su versión 7.0.1 ésto debido a que cuenta con una útil herramienta para construir interfaces gráficas en Java, lo cual facilitara la elaboración de la aplicación [Netbeans]. Para la base de datos se usará un gestor para modelos relacionales, en este caso se seleccionó MySQL debido a que a pesar de ser una herramienta de uso libre es muy difundida y utilizada, por lo cual cuenta con grandes cantidades de información y soporte al mismo. [MySQL] Análisis económico Como ya se mencionó anteriormente, se procurará realizar el proyecto utilizando herramientas libres para así poder evitar gastos que luego no se podrán costear. Los únicos gastos que se realizarán serian en los recursos de las computadoras donde se realizará el proyecto, impresiones, libros o artículos, si es que fueran necesarios y ayudarán al desarrollo del proyecto y finalmente en la mano de obra que se utilizará en el proyecto. Los gastos mencionados se mostrarán a continuación en una tabla y estarán relacionados con la planificación previamente hecha, se estima que el costo por hora será un promedio de diez nuevos soles (suposición) y que se trabajará un promedio entre 2 y 3 horas por día. Recursos Días Total (Soles) Fase de Concepción Definición Preliminar del Producto 5 150 Fase de Elaboración Corrección de entregas pasadas 7 210 Catálogo de Requisitos 7 210 ERS 7 210 Documentación de estándares de interfaz 7 210 WBS 3 90 Formato de Horas 3 90 Corrección de entregas Pasadas 7 210 Elaboración de Diagramas de secuencia 14 420 Elaboración de Diagrama Entidad-Relación 7 210 Documento de Arquitectura 7 210 31 Corrección de entrega pasada 7 210 Prototipos de interfaz gráfica 7 210 Preliminar de plan de pruebas de integración y unitarias 7 210 Corrección de las pruebas pasadas 7 210 Casos de Pruebas 5 150 Secuencia de Pruebas 7 210 Fase de Construcción Implementación de la base de hechos. 14 420 Implementación de la base de conocimientos 21 630 Revisión de estándares 5 150 Correcciones y actualizaciones 14 420 Implementación del motor de inferencia 21 630 Implementación del motor para explicaciones 10 300 Revisión de estándares 5 150 Correcciones y actualizaciones 14 420 Implementación de la GUI 14 420 Revisión de estándares. 5 150 Fase de Transición Correcciones Finales 14 420 Pruebas al Software 7 210 Documentación 7 210 Total 265 7950 Tabla 6. Análisis económico En resumen se observará que cada fase tomaría un promedio de: Recursos Días Total (Soles) Fase de Concepción 5 150 Fase de Elaboración 109 3270 Fase de Construcción 123 3690 Fase de Transición 28 840 Total 265 7950 Tabla 7. Resumen de análisis económico 32 2.3.3. Restricciones de costo y tiempo Como ya se mencionó anteriormente el manejo de los costos será el de invertir la menor cantidad de dinero posible, esto debido a que no se cuenta con el apoyo económico de terceros. El proyecto se realizará utilizando recursos propios y mano de obra propia. En cuanto a las restricciones de tiempo el proyecto se desarrollará en el periodo académico y que en caso se necesite más tiempo para poder completar las tareas, es posible alargar el plazo de entrega, pero se tendría que volver a reprogramar las tareas que dependen de otras. 2.3.4. Actores El sistema contará con los siguientes actores: Administrador del sistema, Usuario y Usuario experto, a continuación se presentará su descripción. Administrador del sistema: El administrador del sistema viene a ser el encargado de la seguridad del sistema, es decir de administrar las cuentas de usuarios, administrar los perfiles y modificar los parámetros de seguridad según sea necesario. Operador: El operador es aquel que podrá registrar en el sistema los tanques de almacenamiento a los diferentes lotes, así como realizar las evaluaciones. Para esto podrá registrar los diferentes datos relacionados con cada tanque en la base de hechos del sistema experto. También podrá generar algunos tipos de reportes y crear los lotes de productos, dependiendo si es que tienen el permiso correspondiente. Usuario experto: Es el usuario que se encargará de darle mantenimiento a la base de conocimientos, motor de inferencia y verificará que todos los resultados dados por el sistema experto sean correctos. 2.3.5. Módulos El sistema a implementar contará con cuatro módulos principales, a continuación se presentará la descripción de cada uno de éstos. 33 Módulo de seguridad: El módulo de seguridad será manejado principalmente por el administrador del sistema. La funcionalidad de Inicio de Sesión será utilizada por todos los usuarios del sistema, este validará que la persona que desea acceder al sistema sea un usuario registrado y que su contraseña coincida con la de la base de datos. En el caso un usuario no recordara su contraseña, esta podrá ser recuperada por medio de una pregunta secreta, la cual habilitará la opción de cambiar la contraseña actual. El Administrador de Personas permitirá registrar a las diferentes personas que participan en el proceso de producción y no necesariamente serán usuarios del sistema, este mantenimiento también permitirá realizar modificaciones en la persona, así como darla de baja. A su vez el Administrador de Usuarios podrá crear nuevas cuentas y asociarlas a una persona ya registrada en la base de datos, también modificar las cuentas existentes o desactivar las que no se utilicen. Otra funcionalidad de este módulo es el Administrador de Grupos, el cual permitirá asociar un conjunto de cuentas de usuario de tipo operador bajo una agrupación, de tal forma que puedan ser manejados y seleccionados como participantes de la evaluación de un lote en forma conjunta. Por otro lado el Administrador de Perfiles permitirá la creación, modificación y eliminación de éstos, los cuales contarán con diferentes funcionalidades y los cuales serán asignados posteriormente a los diferentes usuarios para que estos obtengan los permisos y accesos a las diferentes funcionalidades del sistema. El Administrador de Seguridad permitirá al administrador del sistema controlar el tipo de seguridad del sistema, modificando los diferentes parámetros de seguridad según se crea necesario. Finalmente cada uno de los usuarios podrá manejar los datos propios de su cuenta como contraseña, pregunta y respuesta secreta. 34 Figura 14. Módulo de seguridad Módulo de proyectos El módulo de proyectos será el que contenga todos los mantenimientos encargados del manejo de los lotes. El Administrador de Lotes permitirá administrar la lista completa de lotes, creándolos o eliminándolos, ofreciendo la opción de realizar búsquedas con filtros. Una vez que el lote es creado, es posible modificar o visualizar la información de este, utilizando el Administrador del Lote. Adicionalmente se pueden agregar tanques de almacenamiento a un lote utilizando el Administrador de Tanques. Una vez que un tanque es creado se puede pasar a realizar la evaluación del mismo para que el sistema experto pueda diagnosticar el tipo de calidad al cual pertenece el producto. El Administrador de Tipos de Tanque será utilizado para agregar, modificar o desactivar los distintos tipos de tanques que se produzcan. Finalmente se contará con un Administrador de Calidad, en el cual se podrá agregar diferentes tipos que podrán tener los tanques de almacenamiento luego de su evaluación. 35 Figura 15. Módulo de proyectos Módulo de procesamiento Utilizando el Administrador del Conocimientos se podrán agregar reglas de forma masiva (por medio de un archivo de texto) o de forma individual mediante un Administrador de Conocimientos, también se podrán modificar estas reglas, así como eliminarlas en caso estas fueran erradas o no sirvieran. Adicionalmente este módulo presenta la funcionalidad para poder ejecutar el sistema experto para evaluar la calidad de un producto de forma independiente, es decir sin que esté ligado a un Lote. Figura 16. Módulo de procesamiento 36 Módulo de reportes Este módulo será el encargado de generar los distintos reportes informativos del sistema. Para poder crearlos se necesitará contar con el permiso correspondiente, asignado por el administrador del sistema. El reporte de la bitácora de seguridad solamente podrá ser utilizado por el administrador del sistema, ya que pertenecen al módulo de seguridad. Por otro lado el reporte de explicación de resultados será utilizado por los usuarios expertos para corroborar el buen funcionamiento de las reglas en el sistema. Finalmente los operadores tendrán acceso a los reportes de evaluación, en el cual se visualizará la cantidad de tanques evaluados por usuario y también podrán generar tres distintos reportes relacionados a la calidad de los tanques evaluados. Figura 17. Módulo de reportes 37 2.3.6. Diagrama de clases El diagrama de clases ha sido diseñado de tal manera que contenga todas las clases necesarias y que soporten las exigencias del sistema. A continuación se presentará el diagrama. Por otro lado el diagrama de entidad-relación, el cual mostrará la estructura de la base de datos se encuentra en la sección de Anexos, apartado B. Figura 18. Diagrama de clases 38 2.3.7. Casos de uso del sistema En esta sección se presentarán los principales casos de uso del sistema, cada caso de uso contará con una descripción detallada de su funcionamiento principal, así como algún funcionamiento alterno en caso lo tuviera. Administración de lotes Código CU001 Módulo Proyectos Descripción Esta funcionalidad consistirá en la presentación de una pantalla principal donde se visualizará una lista de lotes en los que participa el usuario registrado. El usuario podrá crear un nuevo lote, modificarlo, visualizarlo y eliminarlo. Caso de Uso Principal: Crear nuevo lote Precondición - Estar registrado en el sistema - Contar con el permiso para poder crear nuevos lotes 1. El usuario seleccionará la opción “Nuevo” en la barra de botones lateral. 2. El sistema mostrará al usuario una nueva ventana llamada “Nuevo Lote”, donde aparecerán los siguientes campos a ser llenados: Nombre de Lote, Descripción, Nombre de Grupo, Fecha de Inicio de Trabajo y Fecha de Fin de Trabajo. 3. El usuario llenará los campos Nombre de Lote y Descripción con datos informativos sobre el lote. 4. El usuario seleccionará Agregar Grupo. 5. Se mostrará una ventana con la lista de grupos de usuarios registrados. 6. Se seleccionará uno de los grupos. 7. El usuario ingresará la fecha en que iniciará el trabajo en el lote. 8. El usuario ingresará la fecha en que finalizará el trabajo en el lote. 9. El usuario seleccionará la opción Guardar. 10. El sistema grabará los datos ingresados en la base de datos 11. Se cerrará la ventana. Post-condición - Los datos registrados serán grabados en la base de datos en caso se haya presionado Guardar. - Los datos no serán grabados en la base de datos si no se presionó Guardar antes de Salir. Caso de Uso Alternativo: Modificar lote Precondición - Estar registrado en el sistema. - Contar con el permiso para poder modificar lotes. - Ser el creador del lote. 39 1. El usuario seleccionará un lote de la tabla de Lotes y le dará doble click izquierdo del mouse. 2. El sistema mostrará al usuario una pantalla con todos los datos relacionados a un lote. Los datos modificables serán: Nombre del Lote, Descripción, Nombre de Grupos, Fecha de Inicio de Trabajo y Fecha de Fin de Trabajo. 3. El usuario modificará alguno de los campos mencionados en el paso 2. 4. El usuario seleccionará la opción de Guardar. 5. El sistema guardará los cambios en la base de datos. 6. Se cerrará la ventana. Post-condición - Los datos modificados serán grabados en la base de datos en caso se haya presionado Guardar. - Los datos modificados no serán grabados en la base de datos si no se presionó Guardar antes de Salir. Caso de Uso Alternativo: Ver lote Precondición - Estar registrado en el sistema. - Ser participante de la evaluación del lote. 1. El usuario seleccionará un lote de la tabla de Lotes y le dará doble click izquierdo del mouse. 2. El sistema mostrará al usuario una pantalla con todos los datos relacionados a un lote 3. El usuario seleccionará la opción de Salir. 4. Se cerrará la ventana. Post-condición - No se realizará ningún tipo de cambio. Caso de Uso Alternativo: Eliminar lote Precondición - Estar registrado en el sistema. - Ser usuario creador del lote 1. El usuario seleccionará un lote de la tabla de Lotes y seleccionará la opción Eliminar, en la barra de botones lateral. 2. El sistema mostrará un mensaje de confirmación. 3. El usuario seleccionará que si desea eliminar el lote. 4. El sistema eliminará al lote de la lista de lotes activos. Post-condición - Se realizarán los cambios en la base de datos. Administración de tanques Código CU002 Módulo Proyectos 40 Descripción Esta funcionalidad consistirá en la creación, modificación y eliminación de algún tanque de almacenamiento relacionado con un lote. Por otro lado cuando el usuario se encuentre en alguna de las pantallas de este mantenimiento podrá utilizar la funcionalidad Evaluación, para evaluar la calidad del tanque en que se encuentra trabajando. Caso de Uso Principal: Crear nuevo tanque Precondición - Estar registrado en el sistema - Participar en la evaluación del lote seleccionado. - Contar con el permiso para crear tanques. 1. El usuario seleccionará un lote de la tabla de lotes y le da doble click del botón izquierdo del mouse. 2. El sistema mostrará la pantalla de Ver Lote. 3. El usuario seleccionará la opción Agregar. 4. Se mostrará la pantalla de Nuevo Tanque con los siguientes datos a registrar: Nombre del Tanque, Tipo de Tanque, Persona Encargada y Descripción. 5. El usuario seleccionará la opción Guardar. 6. El sistema guardará los datos registrados. 7. Ser cerrará la ventana. Post-condición - Los datos registrados serán grabados en la base de datos en caso se haya presionado Guardar. - Los datos no serán grabados en la base de datos si no se presionó Guardar antes de Salir. Caso de Uso Alterno: Modificar tanque Precondición - Estar registrado en el sistema - Participar en la evaluación del lote seleccionado. - Ser el creador del tanque. 1. El usuario seleccionará un lote de la tabla de lotes y le da doble click del botón izquierdo del mouse. 2. El sistema mostrará la pantalla de Ver Lote. 3. El usuario seleccionará un tanque de la tabla de tanques y le da doble click del botón izquierdo del mouse. 4. Se mostrará la pantalla de Modificar Tanque con los siguientes datos a modificables: Nombre del Tanque, Tipo de Tanque, Persona Encargada y Descripción. 5. El usuario seleccionará la opción Guardar. 6. El sistema guardará los datos registrados. 7. Se cerrará la ventana. Post-condición - Los datos registrados serán grabados en la base de datos en caso se haya presionado Guardar. 41 - Los datos no serán grabados en la base de datos si no se presionó Guardar antes de Salir. Caso de Uso Alterno: Eliminar tanque Precondición - Estar registrado en el sistema - Participar en la evaluación del lote seleccionado. - Ser el creador del tanque. 1. El usuario seleccionará un lote de la tabla de lotes y le da doble click del botón izquierdo del mouse. 2. El sistema mostrará la pantalla de Ver Lote. 3. El usuario seleccionará un tanque de la tabla de tanques y selecciona la opción Eliminar. 4. Se mostrará un mensaje de confirmación. 5. El usuario seleccionará que si desea eliminar el tanque. 6. Se sistema eliminará el tanque de la lista de tanques activos en la base de datos. Post-condición - Se realizarán los cambios en la base de datos. Administración de conocimiento Código CU003 Módulo Procesamiento Descripción Esta funcionalidad consistirá en la creación, modificación y eliminación de las reglas que contendrá la base de conocimientos del sistema experto. Para su fácil mantenimiento será creada una interfaz gráfica que ayude con la interacción con las reglas. Caso de Uso Principal: Crear nueva regla Precondición - Estar registrado en el sistema. - Contar con el permiso para administrar el conocimiento. 1. El usuario seleccionará la opción de Administrar Conocimiento en la pantalla principal. 2. El sistema mostrará la pantalla de Administrar Conocimiento. 3. El usuario seleccionará la opción Nuevo. 4. El sistema mostrará la pantalla Nueva Regla, la cual contiene los siguientes campos: Nombre, Pregunta que se realizará, Explicación de la pregunta, Id del Padre, Agregar Rama y Eliminar Rama. 5. El usuario registrará todos los datos. 6. El usuario seleccionará la opción Guardar. 7. El sistema guardará los datos registrados. 8. Se cerrará la ventana. 42 Post-condición - Los datos registrados serán grabados en la base de datos en caso se haya presionado Guardar. - Los datos no serán grabados en la base de datos si no se presionó Guardar antes de Salir. Caso de Uso Alternativo: Modificar regla Precondición - Estar registrado en el sistema. - Contar con el permiso para administrar el conocimiento. 1. El usuario seleccionarán la opción de Administrar Conocimiento en la pantalla principal. 2. El sistema mostrará la pantalla de Administrar Conocimiento. 3. El usuario seleccionará una regla y le da doble click del botón izquierdo del mouse. 4. El sistema mostrará la pantalla Ver Regla, la cual contiene los siguientes campos modificables: Nombre, Pregunta que se realizará, Explicación de la pregunta, Id del Padre, Agregar Rama y Eliminar Rama. 5. El usuario seleccionará la opción Guardar. 6. El sistema guardará los datos registrados. 7. Se cerrará la ventana. Post-condición - Los datos registrados serán grabados en la base de datos en caso se haya presionado Guardar. - Los datos no serán grabados en la base de datos si no se presionó Guardar antes de Salir. Caso de Uso Alternativo: Desactivar regla Precondición - Estar registrado en el sistema. - Contar con el permiso para administrar el conocimiento. 1. El usuario seleccionará la opción de Administrar Conocimiento en la pantalla principal. 2. El sistema mostrará la pantalla de Administrar Conocimiento. 3. El usuario seleccionará una regla y selecciona la opción Desactivar. 4. El sistema mostrará un mensaje de advertencia sobre las consecuencias que puede traer eliminar una regla. 5. El usuario confirmará su acción. 6. El sistema eliminará la regla de la lista de reglas activas. Post-condición - Se realizarán los cambios en la base de datos. Caso de Uso Alternativo: Desactivar regla padre Precondición - Estar registrado en el sistema. Contar con el permiso para administrar el conocimiento. 1. El usuario seleccionará la opción de Administrar Conocimiento en la pantalla principal. 2. El sistema mostrará la pantalla de Administrar Conocimiento. 43 3. El usuario seleccionará una regla y selecciona la opción Desactivar Padre. 4. El sistema mostrará un mensaje de advertencia sobre las consecuencias que puede traer eliminar una regla padre. 5. El usuario confirmará su acción. 6. El sistema eliminará la regla de la lista de reglas activas. Post-condición - Se realizarán los cambios en la base de datos Caso de Uso Alternativo: Guardar conocimiento en archivo de texto Precondición - Estar registrado en el sistema. - Contar con el permiso para administrar el conocimiento. 1. El usuario seleccionará la opción de Administrar Conocimiento en la pantalla principal. 2. El sistema mostrará la pantalla de Administrar Conocimiento. 3. El usuario seleccionará la regla que desea guardar. 4. El usuario seleccionará la opción Guardar Regla. 5. El usuario seleccionará la dirección en la cual se guardará el archivo. 6. El usuario confirmará su acción. 7. El sistema generará el archivo de texto. Post-Condición - Se generará el archivo de texto en la dirección seleccionada. Caso de Uso Alternativo: Cargar conocimiento de archivos de texto Precondición - Estar registrado en el sistema. - Contar con el permiso para administrar el conocimiento. 1. El usuario seleccionará la opción de Administrar Conocimiento en la pantalla principal. 2. El sistema mostrará la pantalla de Administrar Conocimiento. 3. El usuario seleccionará la opción Abrir Regla. 4. El usuario seleccionará el archivo de texto donde están contenidas las reglas. 5. El usuario confirmará su acción. 6. El sistema cargarán las reglas a la base de datos. Post-condición - Se realizarán los cambios realizados en la base de datos. Caso de Uso Alternativo: Agregar ramas Precondición - Estar registrado en el sistema. - Contar con el permiso para administrar el conocimiento. - Encontrarse en Nueva Regla o Ver Regla. 1. El usuario seleccionará la opción de Agregar Rama en las pantallas de Nueva Regla o Ver Regla. 2. El sistema mostrará la pantalla de Nueva Rama, con los siguientes datos para ser ingresados: Tipo de condición, Valor, Es lista, Es fin, Nombre, Pregunta a realizar y Explicación de la pregunta. 3. El usuario registrará todos los datos. 44 4. En caso el usuario seleccione Es Fin, deberá seleccionar el tipo de calidad que dará como respuesta la regla. 5. El usuario seleccionará la opción guardar. 6. Se cerrará la ventana. Post-condición - Se asociará la nueva rama con la regla. Caso de Uso Alternativo: Ver rama Precondición - Estar registrado en el sistema. - Contar con el permiso para administrar el conocimiento. - Encontrarse en Nueva Regla o Ver Regla. 1. El usuario seleccionará una rama de la tabla de ramas asociadas a una regla. 2. El sistema mostrará la pantalla de Modificar Rama, con los siguientes datos para ser ingresados: Tipo de condición, Valor, Es lista, Es fin, Nombre, Pregunta a realizar y Explicación de la pregunta. 3. El usuario seleccionará la opción Guardar. 4. El sistema guardará los datos registrados. 5. Se cerrará la ventana de Ver Rama Post-condición - Se realizarán los cambios realizados en la base de datos. - Se realizarán los cambios en la regla. Evaluar tanque de almacenamiento Código CU004 Módulo Proyecto y Procesamiento Descripción Esta funcionalidad consistirá en la ejecución del motor de inferencia del sistema experto, el cual le solicitará el ingreso de datos al usuario, para luego utilizarlos y poder generar un resultado con respecto al tanque de almacenamiento evaluado. Esta evaluación se podrá realizar tanto con un tanque que pertenezca a un lote como con uno sin lote. Caso de Uso Principal: Evaluar tanque de almacenamiento de un lote Precondición - Estar registrado en el sistema. - Participar en la evaluación del lote seleccionado. - Ser el creador del tanque. - Contar con el permiso para realizar evaluaciones. 1. El usuario seleccionará un lote de la tabla de lotes y le dará doble click del botón izquierdo del mouse. 2. El sistema le mostrará la pantalla de Ver Lote. 3. El usuario seleccionará un tanque de la tabla de tanques y le da doble click del botón izquierdo del mouse. 45 4. Se mostrará la ventana de Ver Tanque. 5. El usuario seleccionará la opción Evaluación. 6. El sistema le mostrará al usuario la lista de reglas disponibles. 7. El usuario seleccionará la regla que necesite. 8. El sistema le mostrará la pantalla de Evaluación 9. El sistema mostrará las preguntas que necesitará responder el usuario. 10. El usuario responderá las preguntas que le realizará el sistema. 11. El usuario responderá las preguntas hasta que el sistema crea que ya tiene suficiente información. 12. El sistema le mostrará al usuario el resultado de la evaluación. 13. El sistema le mostrará al usuario la pantalla Almacenamiento de Resultados con los siguientes datos: Nombre, Resultados Final y Observaciones. 14. El usuario seleccionará la opción Guardar. 15. El sistema actualizará los nuevos datos en la base de datos. 16. El usuario seleccionará la opción Salir. 17. Se cerrará la ventana. Post-condición - El motor de inferencia mostrará el resultado obtenido. - Se almacenarán los datos en la base de datos. Caso de Uso Alternativo: Evaluar tanque de almacenamiento sin un lote Precondición - Estar registrado en el sistema. - Contar con el permiso para realizar evaluaciones. 1. El usuario seleccionará la opción de Evaluar Tanque de Almacenamiento. 2. El sistema le mostrará al usuario la lista de reglas disponibles. 3. El usuario seleccionará la regla que necesite. 4. El sistema mostrará la pantalla de Evaluación. 5. El sistema le mostrará las preguntas que necesita responder el usuario. 6. El usuario responderá las preguntas que le realizará el sistema. 7. El usuario responderá las preguntas hasta que el sistema tenga suficiente información. 8. El sistema le mostrará al usuario el resultado de la evaluación. 9. El sistema le mostrará al usuario la pantalla Almacenamiento de Resultados con los siguientes datos: Nombre, Resultados Final y Observaciones. 10. El usuario seleccionará la opción Guardar. 11. El sistema actualizará los nuevos datos en la base de datos. 12. El usuario seleccionará la opción Salir. 13. Se cerrará la ventana. Post-condición - El motor de inferencia mostrará el resultado obtenido. - Se almacenarán los datos en la base de datos. 46 3. Diseño El objetivo de este capítulo será mostrar de forma detallada el diseño del sistema. Utilizaremos el Lenguaje Unificado de Modelado (UML por sus siglas en inglés) para modelar el software. Se mostrará la arquitectura que se usará para la construcción del sistema, también se presentarán los diagramas de secuencia y el diseño de la interfaz gráfica de las principales funcionalidades. 3.1. Arquitectura del software La elección de una apropiada arquitectura es un paso crítico en el diseño y posterior construcción de cualquier tipo de software, ya que en esta se deben ver reflejados los principales elementos del software. Se utilizará una arquitectura de tipo Cliente – Servidor para esta aplicación, en la Figura 19 podemos ver como los datos e información serán manejados y almacenados en el servidor, mientras que el cliente enviará diferentes tipos de peticiones al servidor, por medio de una red, para que este le responda enviándole la información pedida. Figura 19. Arquitectura cliente-servidor [ARQCS] 47 El software a desarrollar se compondrá de dos elementos principales: un sistema de información y un sistema experto, ambos elementos interactuarán entre ellos y se compondrán a su vez de otros elementos. A continuación se explicará en forma detallada la arquitectura de cada uno de estos dos elementos principales. La arquitectura del sistema experto poseerá los siguientes componentes: base de conocimientos, base de hechos, motor de inferencia, módulo de explicaciones, módulo de adquisición de conocimientos e interfaz gráfica. El motor de inferencia interactuará directamente con la base de conocimiento y la base de hechos, relacionando la información que obtiene de estas para poder llegar a un resultado. La interfaz gráfica es el medio por el cual el usuario enviará o recibirá información del motor de inferencia, base de hechos y/o módulo de adquisición de conocimientos. Por otro lado el módulo de explicaciones tendrá una comunicación directa con el motor de inferencia y la interfaz gráfica, ya que recibirá información del motor de inferencia para que luego se muestre por medio de la interfaz gráfica. Todos estos elementos y la forma cómo interactúan entre ellos pueden ser observados en la Figura 20. Figura 20. Arquitectura de un sistema experto La arquitectura del sistema de información será diferente a la del sistema experto, por lo que su diseño sería otro. Para esto se utilizará una arquitectura de tipo MVC (Modelo, Vista y Controlador), como se puede observar en la Figura 21 este diseño 48 nos permitirá manejar los datos, la lógica y la interfaz grafica del sistema de forma que cada una sea independiente de la otra. Esta separación de componentes dará la ventaja de que podrán ser manipularlos sin afectar en forma directa a los otros componentes, por lo que agregar, modificar o eliminar datos de estos se hará más fácil. Figura 21. Arquitectura de tipo MVC Como se tendrá dos tipos de arquitectura diferente para un solo sistema, podría complicar la construcción de éste, por lo que se decidirá juntar los elementos más importantes de ambos y diseñar una sola arquitectura con estos elementos. En la Figura 22 se puede observar cómo se ha unido las dos arquitecturas antes mencionadas para formar una sola que agrupe a ambas. Figura 22. Arquitectura híbrida 49 Esta arquitectura híbrida será muy similar al modelo MVC, con la diferencia que contendrá los elementos del sistema experto dentro de cada uno de los componentes de este. Las razones por las cuales se agruparán de esta manera serán explicadas a continuación. El componente “Lógica” será el que contendrá mayor cantidad de elementos en él, esto se deberá a que realizará varias operaciones de distintos tipos. Entre ellos se tendrá al módulo de adquisición del conocimiento, que será el encargado de registrar las nuevas reglas en la base de conocimientos. También se encontrará el motor de inferencia que es el que realizará todo el análisis de los casos presentados. Adicionalmente este será el encargado de interactuar con la Base de Datos, la cual también contiene a la base de conocimientos del sistema. Finalmente se tendrá al módulo de explicaciones en este componente, ya que interactuará directamente con el motor de inferencia. El componente “Entidades” será el encargado de manejar los datos del sistema, es por eso que se colocará la base de hechos en él. La interfaz gráfica no sufrirá cambios, ya que en ambas arquitecturas será un elemento en común. La interacción que se dará entre los componentes construidos del sistema experto y la base de datos será parte fundamental del sistema a desarrollarse, no sólo por la persistencia de la información que viajará por el sistema de información, sino debido a que es ahí donde se almacenan todas las reglas y conocimientos que utilizará el sistema experto. Es por eso que se ha tenido especial cuidado en el diseño de cómo estas van a trabajar en conjunto. Como ya se mencionó antes la base de conocimientos será almacenada en la base de datos, por lo que será necesario importar todas las reglas almacenadas para poder enviárselas al motor de inferencia construido en Java. A continuación se presentará un flujo en donde se mostrará cómo van a trabajar todos estos elementos en conjunto. 50 Figura 23. Flujo de datos en el sistema En la Figura 23 se muestra la forma como interactuarán los principales elementos del sistema. La base de conocimientos será importada por el Gestor de Base de Conocimientos, el cual la obtendrá de la base de datos. Luego el sistema le enviará ese grupo de datos al motor de inferencia. Con esas reglas, el motor le muestra al usuario por medio del Gestor de Ingreso de Datos, la pregunta que deberá responder. Una vez que el usuario la responde, este dato se almacenará en la Base de Hechos y será enviada al motor de inferencia. El motor asociará este dato con las reglas que tiene y verificará cuál de ellas se cumple y en función a esto el motor de inferencia solicitará nuevas reglas al Gestor de Base de Conocimientos. Este proceso se repetirá hasta que el motor de inferencia llegue a un resultado final y se le muestre al usuario por medio del Gestor de Ingreso de Datos. Para finalizar se presenta un diagrama de despliegue en la Figura 24, en el cual podemos visualizar cómo interactúan los principales componentes del sistema y el hardware utilizado. Como ya se menciono antes, se utilizará una arquitectura Cliente-Servidor. Figura 24. Diagrama de despliegue 51 3.2. Diseño de Interfaz gráfica y diagramas de secuencia Como ya se mencionó anteriormente en esta sección se observarán los prototipos de las pantallas más importantes del sistema. Adicionalmente se presentará los diagramas de secuencia. El motivo de por el cual se presentarán ambos en una misma sección es para facilitar el entendimiento de los diagramas de secuencia visualizando la interfaz gráfica, de esta forma será más fácil identificar y entender cada paso mostrado en el diagrama de secuencia. Administrador de lotes Esta funcionalidad permite administrar los distintos lotes de tanques que serán creados por los usuarios del sistema. A su vez será la pantalla principal del sistema, luego que el usuario ingrese al sistema esta será la primera pantalla que podrá ver. En la siguiente imagen se presenta el diseño de la pantalla. (Figura 25) Figura 25. Administración de lotes En la parte inferior aparecerá una lista de todos los lotes en los cuales participa el usuario, ya sea como creador o como miembro de un grupo. Se permitirá realizar una búsqueda de los lotes mediante parámetros específicos como el nombre del lote, estado actual del lote, fecha de inicio de trabajo mínimo, fecha de inicio de trabajo máximo, fecha de fin de trabajo mínimo y fecha de fin de trabajo máximo. En la parte superior se visualizarán diferentes botones para el acceso a los diferentes mantenimientos del sistema, los cuales estarán habilitados en caso el usuario cuente con los permisos y el perfil adecuado. En la barra lateral se 52 hallarán los botones Nuevo y Eliminar, los cuales servirán para crear un nuevo lote, así como eliminar un lote creado anteriormente. Nuevo lote La funcionalidad de Nuevo lote es iniciada en la pantalla de Administración de lotes al seleccionar el botón Nuevo, luego se mostrará una ventana donde se podrá llenar datos del lote como nombre del lote, grupo asignado, descripción, fecha de inicio de trabajo y fecha de fin de trabajo. En la siguiente imagen se presenta el diseño de la pantalla (Figura 26). Figura 26. Nuevo lote A continuación se presentará el diagrama de secuencia para este caso. 53 Figura 27. Diagrama de secuencia: Nuevo lote Cuando el usuario se encuentra en la pantalla guiNuevoLote (Figura 26), podrá asignar el grupo que participará en el proceso de evaluación del lote. Para esto se creará una nueva ventana llamada guiSeleccionarGrupo, en la cual se mostrarán todos los grupos activos. En esta ventana se creará un objeto beGrupo, que almacenará los datos recibidos de la base de datos, y un objeto lógico blGrupo, el cual mediante el método Obtener_Grupos realiza la consulta a la base de datos que obtendrá la lista de grupos activos. Una vez que se obtiene la lista, se muestra en la ventana guiSeleccionarGrupo y el usuario procede a seleccionar uno de ellos. Una vez que se completan los datos del formulario, se seleccionará la opción Guardar, lo cual registrará la información ingresada en la base de datos. Para esto se creará un objeto beLote, que almacenará los datos ingresados en la ventana, y un objeto lógico blLote, el cual contiene el método que realizará la conexión con la base de datos y guardará la información, creando el nuevo lote. Modificar lote La funcionalidad de Modificar lote será iniciada en la ventana de Administración de lotes (Figura 25) al seleccionar dos veces un lote. En la siguiente imagen se presenta el diseño de la pantalla (Figura 28), en donde se podrán modificar los 54 datos como nombre del lote, grupo asignado, descripción, fecha de inicio de trabajo y fecha de fin de trabajo. Figura 28. Modificar lote A continuación se presentará el diagrama de secuencia. Figura 29. Diagrama de secuencia: Modificar lote 55 Luego de seleccionar el lote, se inicializará la pantalla guiModificarLote (Figura 28), la cual recibirá como parámetro el id del lote. Posteriormente se crearán los objetos beLote y blLote, con los cuales se realizará una consulta a la base de datos utilizando el método Obtener_Datos. Este método recibe como parámetros el id del lote y beLote, y devolverá los datos del lote seleccionado en el objeto beLote. Una vez que se tiene la información almacenada en la entidad beLote, los datos se mostrarán en la pantalla guiVerLote y podrá ser modificada por el usuario. El usuario podrá modificar el grupo que participará en el proceso de evaluación del lote. Para esto se creará una nueva ventana llamada guiSeleccionarGrupo, en la cual se mostrarán todos los activos. En esta ventana se creará un objeto beGrupo, que almacenará los datos recibidos de la base de datos, y un objeto blGrupo, el cual mediante el método Obtener_Grupos realizará la consulta a la base de datos que obtendrá la lista de grupos activos. Una vez que se obtiene ésta se muestra en la ventana guiSeleccionarGrupo y el usuario procede a seleccionar uno de los grupos. Luego que el esté complete los datos del formulario, seleccionará la opción Guardar, el cual registrará la información ingresada en la base de datos. Para esto se creará un objeto beLote, que almacenará los datos ingresados en la ventana, y un objeto lógico blLote, el cual contiene el método que realizará la conexión con la base de datos y guardará la información, creando el nuevo lote. Nuevo tanque La funcionalidad de crear un nuevo tanque en un lote, se iniciará desde la ventana de Ver lote (Figura 30), la cual se abrirá al seleccionar dos veces un lote en la pantalla Administrar lotes (Figura 25). 56 Figura 30. Ver lote El usuario seleccionará la opción de Agregar y se abrirá la ventana Nuevo tanque en la cual el usuario ingresará los datos como el nombre del tanque, tipo de tanque, persona encargada del tanque y la descripción. En la siguiente imagen se presenta el diseño de la pantalla (Figura 31). Figura 31. Nuevo tanque A continuación se presentará el diagrama de secuencia. 57 Figura 32. Diagrama de secuencia: Nuevo tanque El usuario seleccionará la opción Agregar, se creará de la pantalla guiNuevoTanque (Figura 31), donde se registrará los datos básicos del tanque. El usuario podrá seleccionar la persona encargada de la producción del tanque, para esto se creará una nueva ventana llamada guiSeleccionarPersona, en el cual se mostrarán todas las personas activas. En esta ventana se creará un objeto bePersona, que almacenará los datos recibidos de la base de datos, y un objeto blPersona, el cual mediante el método Obtener_Persona realizará la consulta a la base de datos que obtendrá la lista de personas activas. Una vez que se obtiene la lista de personas, esta se muestra en la ventana guiSeleccionarPersona y el usuario procede a seleccionar una. Luego cuando se seleccione Guardar, se creará un objeto beTanque, donde se guardarán los datos del tanque, para luego ser enviados al objeto lógico blTanque, el cual contiene el método que realizará la conexión a la base de datos para guardar los datos ingresados. Modificar tanque Esta funcionalidad permitirá modificar los datos que se ingresaron al crear el tanque, entre los cuales se tienen el nombre del tanque, tipo de tanque, persona encargada y descripción. Además solo el usuario creador del tanque podrá modificar los datos. En la siguiente imagen se presenta el diseño de la pantalla (Figura 33). 58 Figura 33. Modificar tanque A continuación se presentará el diagrama de secuencia. Figura 34. Diagrama de secuencia: Modificar tanque El usuario utilizará la funcionalidad Modificar_Tanque(), dando doble click a un tanque de la lista de tanques en Ver lote (Figura 30). Luego de esto se creará una ventana guiModificarTanque, en la cual se creará un objeto beTanque y blTanque con los cuales se realizará una consulta a la base de datos utilizando el método 59 Obtener_Datos que recibe como parámetro el id del tanque y beTanque, y devolverá los datos del tanque seleccionado en el objeto beTanque. Una vez que se tienen los datos en el objeto beTanque, estos se mostrarán en la ventana guiModificarTanque y podrán ser modificados por el usuario. El usuario podrá modificar la persona encargada seleccionada anteriormente, para esto se creará una nueva ventana llamada guiSeleccionarPersona, en el cual se mostrarán todas las personas activas. En esta ventana se creará un objeto bePersona, que almacenará los datos recibidos de la base de datos, y un objeto blPersona, el cual mediante el método Obtener_Persona realizará la consulta a la base de datos que obtendrá la lista de personas activas. Una vez que se obtiene la lista de personas, esta se muestra en la ventana guiSeleccionarPersona y el usuario procede a seleccionar una persona. Luego cuando se seleccione Guardar, se creará un objeto beTanque, donde se guardarán los datos del tanque ingresados en la ventana, para luego ser enviados al objeto lógico blTanque, el cual contiene el método que realizará la conexión a la base de datos para guardar los datos. Eliminar tanque La funcionalidad de Eliminar tanque se iniciará desde la pantalla de Modificar lote (Figura 28), el usuario seleccionará un tanque de la lista y presionará el botón Eliminar. Figura 35. Diagrama de secuencia: Eliminar tanque El usuario seleccionará la opción de Eliminar, luego de esto se creará un objeto lógico blTanque el cual recibirá el id del tanque seleccionado para luego realizar el cambio de estado en la base de datos. 60 Evaluar tanque La funcionalidad de evaluar un tanque se podrá inicializar de dos formas: creando o modificando un tanque o mediante el administrador de lotes. En ambos casos el usuario seleccionará la regla que utilizará para la evaluación y luego de esto se creará la ventana Evaluación (Figura 36). Figura 36. Evaluación de tanque Se usará esta interfaz gráfica para ingresar los datos a la base de hechos del sistema experto, los cuales serán utilizados por el motor de inferencia. El panel de bitácora de respuestas se almacenarán todas las preguntas y sus respuestas de forma que el usuario pueda guiarse, del mismo modo también aparecerá en la parte inferior la pregunta y un campo con opciones desplegables con la respuesta en caso sea una respuesta predeterminado o aparecerá un campo de texto en caso sea una respuesta de tipo libre. La respuesta se colocará en el campo de texto inferior, luego de ingresarla esta se muestra en el área de ingreso de datos. A continuación se presentará el diagrama de secuencia. 61 Figura 37. Diagrama de secuencia: Evaluación del tanque Al iniciar la evaluación, se creará la pantalla guiIngresarDatos (Figura 36) y luego de eso también se creará un objeto beRegla en el cual se guardará el id de la regla elegida inicialmente y un objeto lógico blConocimiento con el cual se obtendrán los datos de la regla (como la pregunta y tipo de dato de la respuesta) y los datos de las reglas hijas (ramas). Una vez que el usuario ingrese la respuesta, se asigna este dato al objeto beRegla y se envía al motor de inferencia mediante el método Evaluar_Respuesta(), con beRegla como parámetro. Luego de realizar la evaluación, el motor de inferencia asignará al objeto beRegla la regla hija que cumple con la evaluación y se creará un objeto blConocimiento, con el cual se obtendrán los datos de esta regla hija y sus reglas hijas (ramas) asignadas. Esto se repetirá tantas veces como el usuario deba ingresar información al sistema. Nueva regla La funcionalidad de crear una nueva regla se iniciará desde el Administrador de conocimiento (Figura 38). El usuario seleccionará la opción Nuevo y se creará la ventana Nueva Regla (Figura 39). 62 Figura 38. Administrador de conocimiento Figura 39. Nueva regla En esta ventana se podrán ingresar los siguientes datos: un nombre para reconocer rápidamente a la regla, la pregunta que se realizará, la explicación de la pregunta y el id del Padre, el cual será un código que servirá para identificar todo un conjunto de reglas. Adicionalmente el usuario deberá ingresar las reglas hijas que estarán ligadas a esta regla y sus condiciones. Para esto el usuario seleccionará la opción Agregar y se creará la ventana guiNuevaRama en la cual el usuario ingresará el tipo de condición, la condición y el dato a evaluarse. Adicionalmente se ingresará el nombre de la regla hija, la pregunta que se 63 realizará con esta y su respectiva explicación. En la siguiente imagen se puede visualizar la ventana Nueva Rama (Figura 40). Figura 40. Nueva rama A continuación se presentará el diagrama de secuencia. Figura 41. Nueva regla 64 La opción Nueva regla creará la ventana guiNuevaRegla (Figura 39), luego de esto se creará el objeto beConocimiento en el cual se almancerán todos los datos ingresados en las ventanas. Cuando el usuario seleccione la opción Agregar, se creará una nueva ventana guiNuevaRama (Figura 40), la cual creará un nuevo objeto beReglaHija en la cual se registrarán los datos ingresados. Una vez que se termina de ingresar la información, el objeto beReglaHija es enviada a la ventana guiNuevaRegla, donde es asignada al objeto beConocimiento. En caso el usuario seleccionará dos veces una regla hija, se creará la ventana guiModificarRama, la cual creará un objeto beReglaHija en la cual se almacenerá la información y un objeto blConocimiento, el cual obtendrá los datos de la regla utilizando el método Obtener_Datos(). Una vez que los datos son modificados y guardados, estos son enviados nuevamente a la ventana guiNuevaRegla(). Luego se seleccionará la opción Guardar y se creará un objeto blConocimiento, el cual contiene el método Guardar_Regla() que realizará la conexión a la base de datos y guardará los datos. Modificar regla El usuario seleccionará dos veces una regla en el Administrador de Conocimientos, esto creará la ventana Modificar Regla (Figura 42), en la cual se podrá modificar los datos de una regla como nombre de la regla, pregunta que realizará, explicación de la pregunta, id del Padre (en caso se trate de una regla Padre) y la lista de reglas hijas asociadas. Figura 42. Modificar regla 65 A continuación se presentará el diagrama de secuencia. Figura 43. Diagrama de secuencia: Modificar regla El Usuario experto seleccionará dos veces la regla a modificar en el Administrador de conocimiento y se creará la ventana guiModificarRegla, la cual recibirá como parámetro el id de la regla. Una vez creada la ventana, se creará el objeto beConocimiento y el objeto blConocimiento, que será utilizado para obtener los datos de la regla de la base de datos, mediante su método Obtener_Datos. Cuando el usuario seleccione la opción Agregar, se creará una nueva ventana guiNuevaRama (Figura 40), la cual creará un nuevo objeto beReglaHija en la cual se registrarán los datos ingresados. Una vez que se termina de ingresar la información, el objeto beReglaHija es enviada a la ventana guiNuevaRegla, donde es asignada al objeto beConocimiento. En caso el usuario seleccionará dos veces una regla hija, se creará la ventana guiModificarRama, en la cual se cargarán todos los datos de la regla hija seleccionada. En este caso no es necesario obtener los datos de la regla hija ya que estos fueron obtenido en la inicialización de la ventana. Luego se seleccionará la opción Guardar y se creará un objeto blConocimiento, el cual contiene el método Guardar_Regla() que realizará la conexión a la base de datos y guardará los datos. 66 3.3. Estructuras del sistema experto En esta sección se planteará la estructura que tendrán los distintos elementos que se utilizarán en el sistema, entre ellos tenemos los archivos para cargas masivas de datos a la base de conocimientos y también la estructura de las reglas de la base de conocimientos. 3.3.1. Estructura de los archivos para las cargas masivas Los archivos de texto se utilizarán para poder cargar de forma masiva todas las reglas y conocimientos a la base de conocimientos del sistema experto. Estos poseerán una estructura definida para que el sistema pueda reconocer cada elemento contenido en el archivo. Figura 44. Estructura de archivo de texto La estructura que se seguirá es bastante simple, se utilizarán signos de mayor “>” y menor “<” para distinguir cada uno de los datos del archivo. En la primera parte (<>) se tendrán los datos de cada una de las reglas de forma individual. Mientras que la segunda parte (<>) se tiene la relación de padres e hijos entre los nodos definidos en la primera parte. 67 3.3.2. Base de conocimientos y reglas El diseño de la base de conocimientos y la relación entre las reglas se realizará por medio de la construcción de una estructura de datos de tipo árbol de nodos. Cada nodo representará una regla en la cual se almacenarán el nombre de la regla, explicación / descripción de ésta y la pregunta que realizará esta regla. Como se podrá ver en la Figura 45, cada uno de los nodos tendrá diferentes ramas las cuales lo conectarán con otros nodos (que serian también llamados hijos). Cada nodo, a excepción del nodo inicial, tendrá una condición que se deberá cumplir para que se pueda pasar del nodo padre al nodo evaluado y así poder bajar de nivel en el árbol. Figura 45. Estructura árbol de nodos Para poder representar este árbol como una estructura de datos en Java, se construyó una clase llamada BE_Regla, la cual contiene a la clase BE_Conocimientos (ver Figura 18 diagrama de clases) y adicionalmente tiene de forma recursiva una lista de BE_Regla, de esta forma las ramas (condiciones) y los nodos del siguiente nivel estarán ligadas a una regla superior y a su vez estas tendrán una lista de BE_Regla generando así una estructura de tipo árbol. En la Figura 46 y en la Figura 47 se podrá observar la representación de la estructura en Java. Figura 46. Relación entre conocimiento y regla 68 Figura 47. Estructura de datos regla Como ya se mencionó los conocimientos podrán tener tres tipos de condiciones:  Numéricas  Booleanas  Alfanuméricas Según el tipo de condición elegida, la regla esperará un tipo de dato que será ingresado por el usuario, este dato será el que se comparará con el valor de la condición. Los valores que se evaluarán, se ingresan al momento de crear la regla, pueden ser uno o varios, en este caso se les llamará Lista. Cada uno de los tipos de condiciones presentará diferentes operadores de condiciones las cuales podrán ser elegidas según el tipo de condición. A continuación se listarán los operadores 69 Tabla 8.Condiciones y sus operadores Cada una de estas condiciones será evaluada y comparada según el operador con el valor o valores que se ingresa al crear el nodo. De esta forma se podrán representar las reglas de la norma, utilizando una estructura de datos que será fácil de recorrer y a su vez será fácil de construir para enviársela al motor de inferencia del sistema experto, el cual será el que realice la evaluación de datos ingresados y reglas contenidas en la base de conocimientos. Condición ¿Se ingresa una lista de valores? Operador Numérica No Mayor (>) Numérica No Menor (<) Numérica No Igual (=) Numérica No Diferente (<>) Numérica No Mayor o Igual (>=) Numérica No Menor o Igual (<=) Numérica Si Está en el rango Numérica Si No está en el rango Numérica Si Pertenece Numérica Si No Pertenece Booleana No Sí Booleana No No Alfanumérica No Igual (=) Alfanumérica No Diferente (<>) Alfanumérica Si Pertenece Alfanumérica Si No Pertenece 70 4. Construcción El objetivo de este capítulo será las consideraciones tomadas para la implementación de la aplicación. Entre ellas se presentarán las tecnologías utilizadas, estructuras y pruebas a realizarse en la aplicación. 4.1. Construcción 4.1.1. Tecnologías a utilizar La aplicación consistirá de dos componentes principales: un sistema de información y un sistema experto. Para la construcción de ambos se utilizará el lenguaje Java, que sigue un paradigma de programación orientado a objetos. La base de datos poseerá un modelo relacional, es por eso que se utilizará el sistema gestor de base de datos MySQL. A continuación se especificará un poco más sobre estas tecnologías.  El lenguaje Java presenta un paradigma de programación orientado a objetos y será utilizado para el desarrollo de la interfaz gráfica, manejo de datos y conexión a la base de datos. Un punto importante sobre este lenguaje es que puede ser ejecutada desde cualquier tipo de plataforma, ya sea hardware o software, por lo que es ideal en caso se desee realizar una aplicación multiplataforma. [Deitel]  MySQL es un sistema gestor de base de datos de tipo relacional, que soporta múltiples conexiones a está y adicionalmente se trata de una herramienta de tipo libre, por lo que no se necesita una licencia para 71 utilizarla. Al ser tan difundida se cuenta con una gran cantidad de soporte a esta herramienta, así como información sobre su uso. [MySQL] 4.1.2. Elaboración del motor de inferencia Se utilizará el método de encadenamiento regresivo para poder relacionar las reglas o normas y deducir un resultado. El encadenamiento regresivo consiste en seleccionar una lista de resultados posibles, los cuales se tratarán de confirmar o rechazar dependiendo de los datos ingresados por el usuario. Cada uno de los elementos de esta lista de resultados podrá considerarse como una hipótesis inicial. Cada una de estas hipótesis será evaluada por un grupo de reglas y datos ingresados para confirmarla o rechazarla, si esta hipótesis no cumpliera con alguna de las reglas será descartada y se pasará a evaluar la siguiente hipótesis. En el caso la hipótesis cumpliera con todas las reglas, esta será el resultado final de la evaluación del motor de inferencia. Se usará este método regresivo y no el método progresivo, ya que la evaluación de los tanques de almacenamiento se realizará en base a niveles de calidad. Estos niveles serán establecidos por el usuario experto en la materia y tendrán un significado preestablecido (por ejemplo calidad de nivel 1 significa que el tanque se encuentra en perfectas condiciones, pero la calidad de nivel 4 significa que el tanque está malogrado y no puede ser reparado), utilizando distintos datos ingresados por el usuario, el motor de inferencia verificará si el tanque en evaluación pertenece a un nivel de calidad o no. En caso sea rechazado se pasará a evaluar el siguiente nivel hasta poder llegar a un resultado. A continuación se presentará un ejemplo de cómo funcionará el encadenamiento regresivo con el motor de inferencia y algunas reglas básicas que tendrá la base de conocimientos. 72 Figura 48. Ejemplo de encadenamiento regresivo 4.1.3. Elaboración de la base de hechos La base de hechos se considerará como una memoria temporal, en la cual se almacenarán todos los datos e información ingresada por el usuario al momento de la ejecución de la aplicación [Giarratano 89]. Debido a esto los hechos podrán ser guardados en una clase del componente de entidades, que se creará al momento de ejecutarse la aplicación. Por otro lado se busca que estos hechos no se pierdan luego de que se ejecute la evaluación de un tanque, motivo por el cual el último ingreso de datos a la base de hechos de un tanque, será guardada en la base de datos, de tal forma que éstos podrán ser visualizados la siguiente vez que se revise el proyecto. Es por eso que se tendrá una tabla en la base de datos que permita guardar esta información de forma que no se pierda una vez finalizada la aplicación y también habrá una clase en el componente de entidades que permitirá almacenar y manejar los hechos ingresados. A continuación se presentará la tabla Hechos y la clase Hechos. 73 Figura 49. Tabla de hechos y clase de hechos La información que será guardada en la base de hechos ingresará al sistema experto por medio de una interfaz gráfica, en la cual irán apareciendo distintas preguntas, las cuales el usuario deberá responder, siendo estas respuestas los datos que se almacenará en la base de hechos. 4.1.4. Elaboración de la base de conocimientos La base de conocimientos será el componente del sistema experto donde se almacenarán todas las reglas e información ingresada por el usuario experto. La información que contendrá la base de conocimientos será usada por el motor de inferencia junto con los datos de la base de hechos, utilizando ambos para poder realizar sus deducciones y evaluar los diferentes casos que se presentarán. [Giarratano 89] Los conocimientos serán almacenados en la base de datos, de tal forma que puedan ser reutilizados cada vez que sea necesario, ya sea por el usuario para evaluar un caso ingresado por el o por el experto que desee darle mantenimiento a las reglas del sistema. Las reglas podrán ser ingresadas de forma manual mediante una interfaz gráfica, que será proporcionada al usuario experto, de igual forma se permitirá usar un archivo .txt para poder cargar las reglas de forma masiva a la base de conocimientos. Al momento de realizar una evaluación, el motor de inferencia reconocerá cual es la nodo inicial del árbol de reglas, luego de esto cargará únicamente hijos de este. Cada uno de estos será evaluado según el ingreso de que realice el usuario (al cual se le mostrará en pantalla la pregunta). Cuando se encuentre un nodo que 74 cumpla con el dato ingresado y con la condición asociada, el motor de inferencia bajará al siguiente nivel, en el hijo que cumplió la evaluación y cargará las reglas asociadas. Este proceso se repetirá hasta que se encuentre un nodo con la etiqueta de “Fin” y que este asociado a un nivel de calidad. 4.2. Pruebas Las pruebas son parte importante del desarrollo de cualquier software, en estas se podrán identificar las fallas de la aplicación debido a distintos errores que se pueden haber cometido en cualquiera de las fases del proyecto. El objetivo final de estas pruebas será entregar una aplicación libre de fallas y así garantizar un producto de calidad. 4.2.1. Casos de prueba Los casos de prueba se encargarán de verificar que las distintas funcionalidades de los módulos no presenten errores y brinden el resultado esperado. Debido a que cada funcionalidad presenta una estructura diferente de las otras, las pruebas variarán de acuerdo a cada una de ellas. En todos los casos se presentará una prueba donde se espera un resultado positivo, es decir que el ingreso de datos y el funcionamiento sea el correcto. Mientras que en otro caso se ingresarán datos incorrectos y se espera que se muestre un mensaje de error por parte de la aplicación. En esta sección se presentarán los casos de prueba de las principales funcionalidades del sistema. 75 Nuevo lote Código PU001 Precondición - El usuario se encuentra en la pantalla de Crear Nuevo Lote Paso Acción Resultado Esperado 1 El campo Nombre y Descripción se encuentran vacíos, la hora de inicio y hora de fin también se encuentran vacios. No hay usuarios ni un grupo de operadores seleccionados. Se selecciona Guardar. Se muestra un mensaje informando que no se permiten datos vacíos en los campos nombre, hora de inicio y hora de fin. 2 El campo Nombre tiene el valor “Lote #3”, la descripción se encuentra llena, hay 3 usuarios seleccionados y un grupo de operadores seleccionado, la hora de inicio y la hora de fin se encuentran vacios. Se selecciona Guardar. Se muestra un mensaje informando que no se permite vacíos los datos de hora de inicio y hora de fin. 3 El campo Nombre tiene el valor “Lote #3”, la descripción se encuentra llena, hay 3 usuarios seleccionados y un grupo de operadores seleccionado, la hora de inicio es 28 y la hora de fin es 20. Se muestra un mensaje informando que la hora de inicio debe ser menor a la hora de fin y que la hora debe estar entre 0 y 24. 4 El campo Nombre tiene el valor “Lote #3”, la descripción se encuentra llena, hay 3 usuarios seleccionados y un grupo de operadores seleccionado, la hora de inicio es 9 y la hora de fin es 3. Se muestra un mensaje informando que la hora de fin debe ser mayor a la hora de inicio. 5 El campo Nombre tiene el valor “Lote #3”, la descripción se encuentra llena, hay 3 usuarios seleccionados y un grupo de operadores Se muestra un mensaje informando que la hora de fin debe estar entre 0 y 24. 76 seleccionado, la hora de inicio es 9 y la hora de fin es 26. 6 El campo Nombre tiene el valor “Lote #3”, la descripción se encuentra llena, hay 3 usuarios seleccionados y un grupo de operadores seleccionado, la hora de inicio es 9 y la hora de fin es 13. Se muestra un mensaje informando que la creación del nuevo lote fue un éxito. Tabla 9. Pruebas unitarias de nuevo lote Modificar lote Código PU002 Precondición - El usuario se encuentra en la pantalla de Ver Lote Paso Acción Resultado Esperado 1 El campo Nombre y Descripción se encuentran vacíos. No hay usuarios ni un grupo de operadores seleccionados. Se selecciona Guardar. Se muestra un mensaje informando que no se permiten datos vacios en el campo nombre. 2 El campo Nombre tiene el valor “Lote #3”, la descripción se encuentra llena, hay 3 usuarios seleccionados y un grupo de operadores seleccionado. Se selecciona Guardar. Se muestra un mensaje informando que la creación del nuevo lote fue un éxito. Tabla 10. Pruebas unitarias de modificar lote Nuevo tanque Código PU003 Precondición - El usuario se encuentra en la pantalla de Nuevo Tanque Paso Acción Resultado Esperado 1 El campo Nombre del tanque y Descripción se encuentran Se muestra un mensaje informando que no se permite 77 vacíos, el campo Tipo de Tanque y Creador del Tanque se encuentran con el valor “Seleccione una opción”. Se selecciona Guardar. datos vacíos y que se debe seleccionar un tipo de tanque y un creador. 2 El campo Nombre del Tanque es “Tanque #3”, la descripción se encuentra llena, el campo Tipo de Tanque es “Sin Techo” y el Creador del Tanque es “Seleccione una opción”. Se selecciona la opción guardar. Se muestra un mensaje informando que se debe seleccionar un creador para el tanque. 3 El campo Nombre del Tanque es “Tanque #3”, la descripción se encuentra llena, el campo Tipo de Tanque es “Sin Techo” y el Creador del Tanque es “Juan Perez”. Se selecciona la opción guardar. Se muestra un mensaje informando que la creación del nuevo lote fue un éxito. Tabla 11. Pruebas unitarias de nuevo tanque Modificar tanque Código PU004 Precondición - El usuario se encuentra en la pantalla de Ver Tanque Paso Acción Resultado Esperado 1 El campo Nombre del tanque y Descripción se encuentran vacíos, el campo Tipo de Tanque y Creador del Tanque se encuentran con el valor “Seleccione una opción”. Se selecciona Guardar. Se muestra un mensaje informando que no se permite dato vacío en el campo nombre del tanque y que se debe seleccionar un tipo de tanque y un creador. 2 El campo Nombre del Tanque es “Tanque #3”, la descripción se encuentra llena, el campo Tipo de Tanque es “Sin Techo” y el Creador del Tanque es Se muestra un mensaje informando que se debe seleccionar un creador para el tanque. 78 “Seleccione una opción”. Se selecciona la opción guardar. 3 El campo Nombre del Tanque es “Tanque #3”, la descripción se encuentra llena, el campo Tipo de Tanque es “Sin Techo” y el Creador del Tanque es “Juan Perez”. Se selecciona la opción guardar. Se muestra un mensaje informando que la creación del nuevo lote fue un éxito. Tabla 12. Pruebas unitarias de modificar tanque Nueva regla Código PU005 Precondición - El usuario se encuentra en la pantalla de Nueva Regla Paso Acción Resultado Esperado 1 El campo Nombre, Pregunta y Explicación se encuentran vacíos. Se selecciona Guardar. Se muestra un mensaje informando que no se permite datos vacios en los campos nombre, explicación y pregunta. 2 El campo Nombre es “Regla para diámetro”, la descripción se encuentra llena. El campo pregunta se encuentra vacio. Se selecciona Guardar. Se muestra un mensaje informando que el campo pregunta debe ser diferente a vacio. 3 El campo Nombre es “Regla para diámetro”, la descripción se encuentra llena. El valor del campo pregunta es “¿Cuál es el diámetro del tanque?”. Se selecciona Guardar. Se muestra un mensaje informando que la creación de la regla fue un éxito. Tabla 13. Pruebas unitarias de nueva regla 79 Modificar regla Código PU006 Precondición - El usuario se encuentra en la pantalla de Ver Regla Paso Acción Resultado Esperado 1 El campo Nombre, Explicación y Pregunta se encuentran vacíos, el campo estado se encuentra con el valor “Seleccione una opción”. Se selecciona Guardar. Se muestra un mensaje informando que no se permite datos vacíos en los campos nombre, pregunta y explicación. 2 El campo Nombre es “Regla para diámetro”, la explicación se encuentra llena, El campo pregunta se encuentra vacio. Se selecciona Guardar. Se muestra un mensaje informando que el campo pregunta no puede ser vacío. 3 El campo Nombre es “Regla para diámetro”, la explicación se encuentra llena. El valor de los campos pregunta es “¿Cuál es el diámetro del tanque?”. Se selecciona Guardar. Se muestra un mensaje informando que la creación de la regla fue un éxito. Tabla 14. Pruebas unitarias de modificar regla Evaluación de tanques Código PU007 Precondición - El usuario se encuentra en la pantalla de Evaluación de Tanques Paso Acción Resultado Esperado 1 El usuario presiona el botón Salir cuando el sistema experto se está ejecutando. Se muestra un mensaje de advertencia, donde se le informa al usuario que cerrar la pantalla hará que la evaluación se cierre. El mensaje espera la confirmación del usuario. 2 El motor de inferencia solicita Se muestra un mensaje 80 las medidas del tanque. Se muestra que el Tipo de Respuesta es un Ingreso Libre Numérico. El usuario ingresa como respuesta letras y números informándole al usuario que solo puede ingresar números. 3 El motor de inferencia solicita el material del cual está hecho el tanque. Se muestra que el Tipo de Respuesta es Ingreso Libre No Numérico. El usuario ingresa como respuesta letras y números. Se muestra un mensaje informándole al usuario que solo puede ingresar letras. 4 El motor de inferencia solicita las medidas del tanque. Se muestra que el Tipo de Respuesta es un Ingreso Libre Numérico. El usuario ingresa como respuesta números. El sistema valida la respuesta como correcta y muestra la siguiente pregunta. 5 El motor de inferencia solicita el material del cual está hecho el tanque. Se muestra que el Tipo de Respuesta es Ingreso Libre No Numérico. El usuario ingresa como respuesta letras. El sistema valida la respuesta como correcta y muestra la siguiente pregunta. Tabla 15. Pruebas unitarias de evaluación de tanque 81 5. Observaciones, conclusiones y recomendaciones 5.1. Observaciones En el presente proyecto de fin de carrera se ha tratado uno de los principales problemas del negocio de construcción de estructuras metálicas, específicamente los tanques de almacenamiento de líquidos u otros materiales, que es la evaluación de la calidad que presentan estos ya sea al momento de ser producidos o luego de que estos han estado en uso cierto tiempo. La aplicación realizada utiliza la norma API-650, establecida por el American Petroleum Institute y que es una norma estándar a nivel mundial. Por otro lado para el desarrollo del proyecto se puso en práctica varios conocimientos teóricos aprendidos a lo largo de la carrera de ingeniería informática. Así mismo se tuvo que analizar y diseñar una forma de representar una estructura de datos que pudiera soportar la información de la base de conocimientos, lo que llevo al diseño de la estructura de tipo árbol de nodos que se construyó y utilizó para cargar las reglas en el motor de inferencia. 5.2. Conclusiones Luego de realizar el presente trabajo se pudo llegar a las siguientes conclusiones:  Se logró realizar el análisis, diseño e implementación de un sistema para la evaluación de la calidad de tanques de almacenamiento, utilizando un sistema experto. 82  Se logró construir una base de conocimientos, en la cual se plasmaron las reglas de la norma API-650, para la evaluación de la calidad de los tanques, establecida por la American Petroleum Institute.  Se logró construir una base de hechos en la cual se almacenan todos los datos relacionados a un tanque de almacenamiento, esta base de hechos luego será utilizada junto con la base de conocimientos por el motor de inferencia.  Se logró construir un motor de inferencia utilizando el lenguaje de programación Java, el cual se encarga de realizar la evaluación de los tanques.  Se debe contar con una persona experta en el tema para poder realizar un proyecto de sistemas expertos, ya que sobre su conocimiento se construirá la base de la aplicación.  Los sistemas expertos son herramientas ideales para la evaluación de la calidad, no solo de tanques de almacenamiento o estructuras metálicas, sino para cualquier tipo de producto.  Los sistemas expertos no pueden reemplazar a un experto humano en la labor que este realiza, pero sí puede apoyarlo en su labor, realizando un rápido análisis del producto, el cual luego puede ser revisado por el experto humano. 5.3. Recomendaciones y trabajos a futuro Se recomienda el uso de los sistemas expertos para todas las aplicaciones relacionadas con la evaluación o análisis de un producto determinado. A su vez es sumamente importante contar con un experto en el tema, que tenga la disponibilidad y disposición de apoyar el proyecto. Con lo que respecta a trabajos a futuro se recomienda complementar este proyecto con uno relacionado al procesamiento de imágenes de la especialidad de ingeniería electrónica, con lo cual se podría automatizar incluso más el proceso de evaluación de calidad de los tanques de almacenamiento. 83 6. Referencias bibliográficas [Gestión] Diario Gestión, “Perú crecerá a 5.5% en 2014, estimó el FMI” http://gestion.pe/economia/latinoamerica-crecera-25-2014-estimo-fmi-2093990 [INEI] Instituto Nacional de Estadística e Informática (Perú), “Producción Nacional, Febrero 2014” http://www.inei.gob.pe/media/MenuRecursivo/boletines/01-produccion-nacional-feb-2014.pdf [Feigenbaum 82]. Edward A. Feigenbaum, “Knowledge Engineering in the 1980’s”. Dept. of Computer Science, Stanford University, Stanford CA, 1982. [Khalid]. Khalid Eldrandaly, “A Knowledge-Based Advisory System for software quality assurance”, Universidad de Zagazig, Egipto http://www.academia.edu/493350/A_Knowledge- Based_Advisory_System_for_Software_Quality_Assurance [Madou]. Franco Madou, Martín Agüero, Gabriela Esperón, Daniela López de Luise., “Sistemas Expertos en Evaluación de Calidad Java”, Universidad de Palermo, Argentina. http://www.researchgate.net/publication/267305785_Sistemas_Expertos_en_Evaluacin_de_Cali dad_Java [Inga]. Esteban Inga Llanca, Raúl Vilcahuamán Sanabria, “Sistema de Monitoreo de Calidad del Servicio Eléctrico: Caso Peruano”. http://www.osinerg.gob.pe/newweb/uploads/Estudios_Economicos/Sistema%20de%20Monitore o%20de%20Calidad%20del%20Servicio%20Electrico.%20Caso%20Peruano.%20_einga.pdf [ITANK] Intergraph Corporation, TANK Product Details http://www.coade.com/products/tank# [ETANK] Eware, Inc, ETANK2000 Features http://www.etank.com/features.html [Giarratano 89] Joseph Giarratano, Gary Ridley “Expert Systems: Principles and Programming”. PWS-KENT Publishing Company, Boston, 1989. [12Manage] Jean-Michel DE JAEGER, 12 Manage - The executive fast track, España http://12manage.com/methods_pmi_pmbok_es.html [Tupia 2009] Manuel Francisco Tupia Anticona, “Fundamentos de Inteligencia Artificial”, 84 Tupia Consultores y Auditores S.A.C. Lima. 2009 [Chopra 1989] Anil K.Chopra, “Dynamics of structures: A Primer”. California. 1989. [API 2007] American Petroleum Institute. “Welded steel tanks for oil storage”. Washington, DC 2007. [Mora] David Mora Reyes, Jose Luis Gomez Juarez, “El uso de sistemas expertos en la vigilancia de la calidad del agua” [Brownell 1959] Lloyd E. Brownell, Edwin H. Young, “Process Equipment Design” John Willey & Sons, Inc. Nueva York.1959. [Experto] Alberto Pacheco, División de Estudios de Posgrado e Investigación - IT Chihuahua, Chihuahua – México, http://www.depi.itch.edu.mx/apacheco/ai/definic.htm [RUP] Symbolik Group http://symbolikgroup.com/img/servicios/g-metodologia.png [PMBOK] 12Manage http://www.12manage.com/images/picture_pmi_pmbok_processes.gif [ARQCS] Universidad Nacional de Luján http://www.unlu.edu.ar/~tyr/tyr/TYR-trab/satobigal/documentacion/beej/cs.gif [Deitel 2007] Harvey M. Deitel, Paul J. Deitel “Java: How to Program” Prentice Hall; 7 Edition, 2007 [MySQL] MySQL http://dev.mysql.com/doc/refman/5.1/en/what-is-mysql.html [MinBlog 2008] Min Tran, Min’s Blog, 2008 http://min.frexy.com/article/the_milky_set_is_now_complete/ [Netbeans] Netbeans 7.0.1 Release information http://netbeans.org/community/releases/70/ [Eppinette 1997] 85 Matt Eppinette, R. Anthony Inman, "Expert systems and the implementation of quality customer service", Industrial Management & Data Systems, Vol. 97 Iss: 2, pp.63 – 68, 1997 [Ooshaksaraie 2011] Ooshaksaraie, L. and N.E.A. Basri, “An expert system applied in construction water quality monitoring”, Am. J. Environ. Sci., 7: 75-81. 2011