FUNDACIÓN UNIVERSIDAD DE LAS AMÉRICAS PUEBLA Escuela de Ingeniería Departamento de Computación, Electrónica y Mecatrónica Sistema de gestión de salas y de dispositivos de Red basado en la tecnología de Java Server Faces Tesis profesional sometida por Rafael Cornelio Bautista Rafael Rodríguez Montes Como requisito parcial para obtener el título de Licenciatura en Ingeniería en Sistemas Computacionales y Tecnologías de la Información Dirigida por Dr. Oleg Starostenko Basarab Dr. Roberto Rosas Sinodal: Dr. Daniel Vallejo Rodríguez Santa Catarina Mártir. Cholula, Puebla Primavera 2010 Sta. Catarina Mártir, Cholula, Puebla a 14 de mayo 2010 Sistema gestor de salas y dispositivos de red basado en JSF Página 2 Resumen Las tendencias tecnológicas de hoy en día se enfocan al desarrollo basado en aplicaciones web, ya que gracias a los avances y desarrollo de velocidad en el ancho de banda del Internet y de las intranets corporativas, ah permitido cada vez más el uso de aplicaciones ligeras a través de la web, sin embargo, este desarrollo se ha impulsado bastante ya que existen grandes ventajas para los usuarios, al no requerir recursos para poder ejecutar o abrir aplicaciones, ya que todo se encuentra en la web; muestra de esto ha sido el esfuerzo de Google al integrar su tecnología de “Google Docs” para hacer mas practico, rápido, sin requerimientos rigurosos de hardware, ni costos de licencia por equipo. Esto también ha sido una de las tantas ventajas que ha representado la vitalización, que es una rama de estas tendencias tecnológicas. De forma general lo anterior fue un argumento del porqué dar solución a esta necesidad a través de una aplicación web, ya que inicialmente empezamos con una aplicación local, la convertimos a una aplicación web usando los mismos frameworks iniciales (gammu). Otro framework importante usado en este proyecto, fue el uso de un demonio de mensajes de texto para celular, que funciona en base a eventos programados por nosotros, el cual nos es bastante útil para interactuar con el sistema gestor de salas a través de mensajes de texto vía celular. Para informar de eventos y confirmar asistencias, de tal manera que no solo tenemos interacción vía web, sino de manera móvil a través de mensajes sencillos y prácticos. Haciendo que la aplicación esté disponible a cualquier hora en cualquier momento. Sistema gestor de salas y dispositivos de red basado en JSF Página 3 Para el desarrollo de la aplicación se uso java server faces, que nos ofrece una serie de ventajas (ser un estándar, componentes configurables, ocultar en parte que es una aplicación web, promover el trabajo con backing beans, entre otras que desarrollaremos más adelante). El objetivo de esta aplicación se basa en resolver la necesidad de administración de un conjunto de salas que se encuentran ubicadas en distintos lugares geográficos, que corresponden a las diferentes dependencias del gobierno del estado de Puebla. Todas estas bajo una misma infraestructura interconectada a través de tecnologías de WiMax, que se encuentran en continuo crecimiento, integrando nuevas dependencias hasta poderse interconectar con otros estados, a la par de esto se encuentra la necesidad del control de todos los dispositivos de red, es decir se requiere una base de datos que se encuentre siempre disponible para asignar direcciones IP, lo cual se integro en la aplicación como un segmento del proyecto. Sistema gestor de salas y dispositivos de red basado en JSF Página 4 Índice de contenidos 1. Introducción ................................................................................................................ 15 1.1 Antecedentes .......................................................................................................... 15 1.2 Histórico................................................................................................................. 18 1.3 Contexto de la Aplicación...................................................................................... 19 1.3.1 Integración de tecnología WiMAX ................................................................ 21 1.4 Planteamiento del problema................................................................................... 22 1.5 Objetivo de la tesis ................................................................................................. 24 1.6 Objetivos específicos (Administración de la sala de conferencias) ....................... 25 1.7 Objetivos específicos (Sistemas de gestión de ips) ............................................... 31 1.8 Alcances ................................................................................................................. 31 1.9 Resumen de Capitulo ............................................................................................. 32 2. Opciones de Tecnología en el mercado para esta infraestructura. ........................ 33 3. En el almacenamiento (MySQL) ............................................................................... 34 3.1 4. Arquitectura del sistema ............................................................................................ 36 4.1 5. MVC ...................................................................................................................... 37 JFreeChart .................................................................................................................. 39 5.1 6. Un SGBD como MYSQL permite: ........................................................................ 35 Interfaz gráfica ....................................................................................................... 42 Gammu ........................................................................................................................ 46 Sistema gestor de salas y dispositivos de red basado en JSF Página 5 7. 8. 9. 6.1 PhpMyAdmin & Gammu....................................................................................... 48 6.2 Uso de gammu en un prototipo previo................................................................... 50 6.3 Detalles técnicos .................................................................................................... 50 Java Server Faces ....................................................................................................... 53 7.1 El porqué del uso de este JSF ................................................................................ 53 7.2 JSF Introducción .................................................................................................... 55 7.3 Objetivos de JSF .................................................................................................... 56 7.4 Versiones de JSF .................................................................................................... 57 7.5 Ventajas de JSF ...................................................................................................... 57 7.6 Integrando Ajax a JSF............................................................................................ 59 7.7 Comparativa con prototipos previos al uso de JSF ................................................ 59 7.7.1 En Vista .......................................................................................................... 59 7.7.2 En el entorno de Desarrollo ............................................................................ 62 JSF Vs Struts ............................................................................................................... 64 8.1 Demostrando el uso de JSF en comparación de Struts .......................................... 65 8.2 Prime Faces ............................................................................................................ 68 Diseño de la Implementación ..................................................................................... 76 9.1 Esquema de base de datos en la gestión de sala..................................................... 76 9.2 Descripción de los Triggers Para la base de datos de la gestión de salas .............. 77 9.3 Esquema de base de datos en la gestión de dispositivos de red ............................. 78 Sistema gestor de salas y dispositivos de red basado en JSF Página 6 9.4 Esquema de base de datos del Demonio de mensajes (Gammu) ........................... 79 9.5 Diagrama de clases de la Aplicación ..................................................................... 81 9.6 Diagrama de clases para la gestión de dispositivos de red .................................... 86 9.7 Funcionamiento del gestor de dispositivos de red ................................................... 88 10. Implementación del sistema gestor de salas y dispositivos de red ......................... 89 10.1 Introducción ....................................................................................................... 89 10.2 Identificación del usuario ................................................................................... 90 10.3 Interfaz de Administrador .................................................................................. 90 10.4 Alta de un evento................................................................................................ 91 10.5 Alta de usuario ................................................................................................... 93 10.6 Invitaciones ........................................................................................................ 94 10.7 Alta de lugar ....................................................................................................... 96 10.8 Alta de sala ......................................................................................................... 96 11. Evaluación y Conclusiones......................................................................................... 97 11.1 Con respecto a las experiencias aprendidas ....................................................... 97 11.2 Con respecto al uso de los frameworks .............................................................. 97 12. Trabajos a Futuro..................................................................................................... 100 Bibliografía ........................................................................................................................ 101 Apéndice A: Otras corridas del software..................................................................... 106 Sistema gestor de salas y dispositivos de red basado en JSF Página 7 Apéndice B: Video de grafica con PrimeFaces en el sistema de SICOM, funcionando en tiempo real ................................................................................................................. 107 Sistema gestor de salas y dispositivos de red basado en JSF Página 8 Índice de figuras FIGURA 1.1: DESCRIPCIÓN GENERAL DE LOS PRINCIPALES ENLACES QUE CUENTA LA INFRAESTRUCTURA DE RED DE TELECOMUNICACIONES SICOM 2009 (INTELIMAX, 2009) ......................................................... 19 FIGURA 1.2: EXPANSIONES RECIENTES DE LA RED DE TELECOMUNICACIONES SICOM 2009 (INTELIMAX, 2009) ................................................................................................................................................................ 20 FIGURA 1.3: SE MUESTRA LA IMPLEMENTACIÓN DE LAS RADIO BASES DE TECNOLOGÍA WIMAX EN FUNCIONAMIENTO (INTELIMAX, 2009) .................................................................................................. 21 FIGURA 1.4: PLANEACIÓN A FUTURO DE LA INTEGRACIÓN DE EQUIPOS WIMAX (INTELIMAX, 2009) ........... 22 FIGURA 1.5: CURVA DE APRENDIZAJE .............................................................................................................. 25 FIGURA 2.1: SISTEMA DE RESERVA DEL AULA MAGNA DEL CIRIA. ................................................................... 34 FIGURA 4.1: FLUJO A TRAVÉS DEL MODELO MVC ............................................................................................ 38 FIGURA 5.1: EJEMPLO DE GRAFICAS QUE SE PUEDEN GENERAR EN JFREECHART .......................................... 40 FIGURA 5.2: EJEMPLOS DE GRAFICAS QUE SE PUEDEN GENERAR EN JFREECHART ......................................... 40 FIGURA 5.3: EN ESTA PRIMERA GRÁFICA, SE PUEDE VER QUE ESTÁN REPRESENTADOS LOS 12 MESES DEL AÑO, ASÍ MISMO SE MUESTRA LA RELACIÓN EXISTENTE ENTRE EL MES ESPECIFICADO Y SU OCUPACIÓN EXPRESANDO EN OTRAS PALABRAS EL NÚMERO DE VECES QUE SE HIZO USO DE LA SALA A LO LARGO DEL AÑO. ............................................................................................................................ 42 FIGURA 5.4: EN SEGUNDO PUESTO ESTÁ UNA GRÁFICA DEL TIPO LINEAL, ESTE ESTILO DE GRÁFICA PUEDE SER UTILIZADA PARA MOSTRAR LAS ESTIMACIONES DE CRECIMIENTO EN CUANTO A ASIGNACIONES DE IP O BIEN AL IGUAL QUE LAS SALAS Y SU USO, PARA MOSTRAR EL NUMERO DE ASIGNACIONES QUE SE HAN HECHO EN UN PERIODO DETERMINADO. .................................................................................. 43 FIGURA 5.5: FINALMENTE COMO SE PUEDE APRECIAR, ESTA ES UNA GRÁFICA DE PASTEL, QUE SE PIENSA PODRÍA SER DE MUCHA UTILIDAD PARA MOSTRAR LA PROPORCIÓN DE USO EN LA DIRECCIONES IP POR EJEMPLO AQUELLAS QUE SE UTILIZAN PARA VIDEO, VOZ O TRANSMISIÓN DE DATOS. ................ 43 FIGURA 5.6: CONJUNTO DE PRUEBAS PARA LA REALIZACIÓN DE GRAFICAS EN TIEMPO REAL BASADAS EN VALORES ALEATORIOS, Y COMO PODEMOS VER CUMPLIERON SATISFACTORIAMENTE LOS REQUISITOS Sistema gestor de salas y dispositivos de red basado en JSF Página 9 DE RESPUESTA QUE NECESITAMOS PARA GRAFICAR LOS DISTINTOS TIPOS DE EVENTOS QUE VAMOS USAR EN TIEMPO REAL PARA EL MONITOREO. ...................................................................................... 44 FIGURA 7.1: VENTANA PRINCIPAL DE NUESTRA BASE DE DATOS QUE USARA NUESTRO DEMONIO DE MENSAJES (GAMMU) EN LA CUAL SE ESTABLECERÁ PARÁMETROS DE RESPUESTA, LISTA DE NÚMEROS TELEFÓNICOS Y CASOS DE REACCIÓN EN BASE A LOS MÓDULOS QUE SE PROGRAMARÁN .................. 48 FIGURA 7.2: PRUEBAS DE RECONOCIMIENTO DEL DISPOSITIVO TELEFÓNICO Y DE ENVÍO DE MENSAJES A TRAVÉS DE SERVIDOR GAMMU Y DE FONDO TENEMOS EL ARCHIVO DE CONFIGURACIÓN QUE TIENE LA INFORMACIÓN DEL PUERTO, CONEXIÓN A TRAVÉS DE BLUETOOTH CON EL EQUIPO CELULAR. NOTA: NO EXISTE UNA CONFIGURACIÓN DE CONEXIÓN EN LA PÁGINA DE SOPORTE, SIN EMBARGO A BASE DE PRUEBAS, EXPERIMENTOS Y CONOCIMIENTO SE PUDO DEDUCIR LA CONEXIÓN HASTA ENCONTRARLA DE MANERA EXITOSA..................................................................................................... 49 FIGURA 7.3: DEMONIO DE GAMMU ACTIVAD, COMO PARÁMETRO DE ENTRADA SE LE DA LA CONFIGURACIÓN DE CONEXIÓN Y LA INFORMACIÓN NECESARIA PARA CONECTAR CON MYSQL, EN EL ARCHIVO SMSDRC. .................................................................................................................................. 50 FIGURA 7.4: INTERFAZ DE PRUEBA PARA EL ENVIÓ DE MENSAJES A TRAVÉS DE LA INTERACCIÓN CON LA BASE DE DATOS Y EL DEMONIO DE GAMMU ACTIVO, EN EL MOMENTO QUE SE PONE UN MENSAJE EN EL AUTBOX DE LA BASE DATOS, AUTOMÁTICAMENTE LO ENVÍA Y LO MANDA EN SENDITEMS INDICANDO QUE YA SE ENVIÓ EL MENSAJE DE MANERA EXITOSA. ....................................................... 50 FIGURA 7.5: ESPECIFICACIONES DE CONFIGURACIÓN PARA QUE FUNCIONE DE MANERA CORRECTA EL DEMONIO (SE SEÑALA LA PARTE DE DEFINICIÓN DEL EQUIPO CELULAR Y DE LA BASE DE DATOS). ..... 52 FIGURA 8.1: MUESTRA EN CÓMO SE CREABAN LOS EVENTOS Y SE AGREGABAN LOS USUARIOS AL EVENTO Y AL MOMENTO DE HACER ESTO EL SISTEMA MANDABA MENSAJE VÍA CELULAR Y CORREO HECHOS CON MENSAJES PREDEFINIDOS....................................................................................................................... 60 FIGURA 8.2 VALIDANDO USUARIO INCORRECTO ............................................................................................. 60 FIGURA 8.3: VALIDACIONES ESPECÍFICAS (SE PLANEA VALIDAR EN TIEMPO REAL USANDO AJAX). ESTAS VALIDACIONES CUENTAN CON DETALLES ESPECÍFICOS, POR EJEMPLO SI AUN CORREO LE HACE FALTA Sistema gestor de salas y dispositivos de red basado en JSF Página 10 UN PUNTO O LA ARROBA O SI E SU NÚMERO DE CELULAR NO SON NÚMEROS Y NO ES DE 10 DÍGITOS. ................................................................................................................................................................ 61 FIGURA 8.4: MOSTRAMOS EL ENTORNO DE DESARROLLO EN NETBEANS, DE LADO INFERIOR IZQUIERDO TENEMOS NUESTRO CONJUNTO DE BEAS, Y DENTRO LOS “ROWSET” CON CONSULTAS PREDEFINIDAS DE TAL MANERA QUE SE SINCRONIZAN CON LOS “DATAPROVIDER” PARA PODER HACER USO DE ESTAS CONSULTAS Y VINCULARLOS CON LOS OBJETOS NECESARIOS. .............................................................. 62 FIGURA 8.5: ENTORNO DE TRABAJO SIN JSF, ENFOCADO A UNA APLICACIÓN LOCAL BASADO EN PROTOTIPOS PREVIOS, HACIENDO NOTAR LA DIFERENCIA DE HERRAMIENTAS SIN JSF. ............................................ 63 FIGURA 9.1: PANTALLA DE DESPLIEGUE DE LISTADO USADO COMO PRUEBA PARA DEMOSTRAR LA EFICIENCIA DE STRUTS EN COMPARACIÓN DE JSF (ALEMAN, 2010) ...................................................... 65 FIGURA 9.2: TABLA COMPARATIVA ENTRE JSF Y STRUTS EN BASE A LAS HORAS HOMBRE DE TRABAJO HECHAS A PARTIR DE UN EXPERIMENTO (ALEMAN, 2010) .................................................................... 67 FIGURA 9.3: TABLA COMPARATIVA ENTRE JSF Y STRUTS EN BASE A LAS HORAS HOMBRE DE TRABAJO PARA EL MANTENIMIENTO DE UNA PÁGINA EN BASE A UN EXPERIMENTO (ALEMAN, 2010) ........................ 67 FIGURA 9.4: PRIMEFACES: BARRAS DE PROGRESO EN TIEMPO REAL (CASOS DE USO DE PRIMEFACES, 2010) ................................................................................................................................................................ 68 FIGURA 9.5: PRIME FACES: DASHBOARD CON FUNCIONES SIMILARES A LAS VENTANAS DE WINDOWS, INCLUYEN EFECTOS GRÁFICOS. (CASOS DE USO DE PRIMEFACES, 2010) ............................................... 69 FIGURA 9.6: PRIMEFACES: POSIBILIDAD DE USO DE MENÚS CONTEXTUALES SOBRE IMÁGENES .................. 69 FIGURA 9.7: PRIMEFACES: EJEMPLOS DE APLICACIONES USANDO LA LIBRERÍA TOUCHFACES PARA DISPOSITIVOS MÓVILES CON CAPACIDADES DE INTERFAZ TÁCTIL ......................................................... 71 FIGURA 9.8: DIAGRAMA DE SECUENCIA DE PRIMEFACES ................................................................................ 71 FIGURA 9.9: CASO 1 DEMOSTRANDO LAS GRÁFICAS EN TIEMPO REAL, DE LADO IZQUIERDO ES LA BASE DE DATOS ACTUAL DE LAS CONFIRMACIONES ............................................................................................ 73 FIGURA 9.10: CASO 2, CONSIDERANDO QUE LOS DOS INVITADOS CONFIRMARON (DETALLE DE LADO IZQUIERDO EN LA BASE DE DATOS), SE ACTUALIZA LA GRAFICA DE MANERA AUTOMÁTICA SIN TENER QUE ACTUALIZAR LA PAGINA DEL LADO DERECHO ................................................................................ 74 Sistema gestor de salas y dispositivos de red basado en JSF Página 11 FIGURA 10.1: ESQUEMA DE BASE DE DATOS PARA LA PARTE DE LA GESTIÓN DE SALAS DE VIDEO CONFERENCIAS. ...................................................................................................................................... 76 END FIGURA 10.2: ESTRUCTURA BÁSICA DE TRIGGER. .................................................................................... 77 FIGURA 10.3: TRIGGER QUE ELIMINA INVITACIONES DEL EVENTO QUE SE ELIMINÓ ...................................... 77 FIGURA 10.4: ESQUEMA DE BASE DE DATOS PARA EL GESTOR DE DIRECCIONES IP ....................................... 78 FIGURA 10.5: PRIMERA PARTE DEL ESQUEMA DE BASE DE DATOS DEL DEMONIO DE MENSAJES DE TEXTO PARA CELULAR (GAMMU) (GAMMU, 2009) ........................................................................................... 79 FIGURA 10.6: PRIMERA PARTE DEL ESQUEMA DE BASE DE DATOS DEL DEMONIO DE MENSAJES DE TEXTO PARA CELULAR (GAMMU) (GAMMU, 2009) ........................................................................................... 80 FIGURA 10.7: LA CLASE MANEJADOR, LA CUAL GESTIONA PROCESOS COMO LA PROYECCIÓN, PERSISTENCIA Y MANEJO DE ATRIBUTOS BÁSICOS. ....................................................................................................... 82 FIGURA 10.8: CLASE MANEJADOR, LA CUAL GESTIONA LA SALIDA DE TODOS LOS DATOS A TRAVÉS DE COMPONENTES VISUALES. ..................................................................................................................... 83 FIGURA 10.9: CLASE VALIDACIONES, EN LA CUAL SE ENCUENTRAN LAS VALIDACIONES BÁSICAS PARA LA ENTRADA DE INFORMACIÓN DE LAS DIFERENTES SECCIONES DEL SISTEMA. ........................................ 84 FIGURA 10.10: CLASE QUE VALIDA EMPALMES EN LA GESTIÓN DE SALAS. ..................................................... 85 FIGURA 10.11: CLASE UTILERÍAS, REÚNE UN CONJUNTO OPERACIONES BÁSICAS COMO BÚSQUEDAS PERSONALIZADAS Y GESTIÓN Y CONVERSIÓN DE DATOS....................................................................... 86 FIGURA 10.12: DIAGRAMA DE CLASES DE LAS FAMILIAS DE OCTETOS PARA LA GESTIÓN DE DIRECCIONES IP ................................................................................................................................................................ 87 FIGURA 10.13 DIAGRAMA DE CLASES PARA EL ÚLTIMO OCTETO DE LA GESTIÓN DE DISPOSITIVOS DE RED. 87 FIGURA 10.7.1: SISTEMA GESTOR DE DISPOSITIVOS DE RED ........................................................................... 88 FIGURA 11.1: PANTALLA DE IDENTIFICACIÓN PARA EL USUARIO .................................................................... 90 FIGURA 11.2: INTERFAZ DE ADMINISTRADOR. ................................................................................................. 90 FIGURA 11.3: ALTA DE EVENTOS EN ESTA PARTE CABE LA POSIBILIDAD DE VER LOS EVENTOS QUE SE ENCUENTRAN YA PARA LA FECHA INDICADA, ASÍ NO SERÍA FÁCIL PREVER ALGÚN INCONVENIENTE PARA EL EVENTO QUE DESEAMOS PLANEAR COMO SE MUESTRA EN LA SIGUIENTE IMAGEN ............. 91 Sistema gestor de salas y dispositivos de red basado en JSF Página 12 FIGURA 11.4 VERIFICACIÓN DE EVENTOS YA ESTABLECIDOS PARA UNA FECHA DADA ANTES DE DAR DE ALTA UN EVENTO ............................................................................................................................................. 91 FIGURA 11.5: PROBANDO VALIDACIONES PARA DAR DE ALTA UN EVENTO .................................................... 92 FIGURA 11.6: ALTA DE USUARIO, PROBANDO LAS VALIDACIONES BÁSICAS ................................................... 93 FIGURA 11.7: BUSCANDO EVENTOS POR NOMBRE PARA INVITAR AL PERSONAL ........................................... 94 FIGURA 11.8: BUSCANDO INVITADOS AL EVENTO PREVIAMENTE SELECCIONADO ......................................... 95 FIGURA 11.9: PROBANDO LAS VALIDACIONES BÁSICAS AL DAR DE ALTA UN EVENTO................................... 96 FIGURA 11.10: DANDO DE ALTA UNA SALA DE CONFERENCIAS. ..................................................................... 96 Sistema gestor de salas y dispositivos de red basado en JSF Página 13 Lista de acrónimos WiMAX- Wordwide Interoperability JSF- Java Server Faces MVC- Model View Controller SCT- Secretaría de comunicaciones y transportes IP – Protocolo de Internet JSP- java server pages SICOM – Sistema de Información y comunicación del estado de Puebla XML – Extensible Markup Language DTD- Document Type Definition JSP- Java Server Pages JPA- Java Persistence API SQL-Structured Query Language Sistema gestor de salas y dispositivos de red basado en JSF Página 14 1. Introducción 1.1 Antecedentes En el proyecto integrador que es manejado por proveedores y personal que trabaja en el departamento de TI en el sistema de información y comunicaciones del Estado de Puebla (SICOM), se presentan una serie de necesidades y problemáticas enfocadas a la administración de salas, y dispositivos de red, dada esta situación, se requiere desarrollar tecnología de software aplicativa a la medida, para poder seguir creciendo como dependencia de tecnología, basa en las tendencias de desarrollo de software más actuales. Existen una serie de proyectos integradores dentro de esta dependencia de gobierno, a los cuales nos enfocaremos es específicamente a la gestión de salas de conferencias que se encuentran en diferentes dependencias del Gobierno del Estado de Puebla, y que debido a su crecimiento se ha dificultado la administración de éstas, por lo que es necesario recurrir a la gestión sistemática a través del uso de las tecnologías de la Información para optimizar este proceso. De forma paralela existe otra necesidad similar, pero con la base de datos de dispositivos de red, la cual se requiere constante mente en diferentes puntos de la infraestructura para poder dar de alta y dar de baja equipos dentro de la red. Para esto se empezó planteando un software para instalarse de manera local, es decir en cada computadora donde se había a utiliza era necesario la instalación, y de forma paralela se requería un sistema de base de datos centralizado, pero al seguir la investigación sobre este tipo de aplicación, encontramos una solución basándose en las tendencias de desarrollo de software enfocado a aplicaciones web, ya que ofrece una gran cantidad de Sistema gestor de salas y dispositivos de red basado en JSF Página 15 ventajas y beneficios que comentaremos a lo largo de estos capítulos. Y de forma paralela se utilizo gammu como demonio de mensajes para complementar el sistema. Cabe aclarar que es necesario dar a conocer detalles técnicos y generales en donde se requiere el sistema, es decir, a pesar de que sea un sistema basado en una aplicación web, es importante dar a conocer detalles del contexto en donde se va usar y como es que este entorno se va ir modificando y creciendo conforme a las necesidades de las diferentes dependencias y es por eso que daremos detalle de esto en los próximos capítulos. En el contexto donde se va usar la aplicación, se piensa integrar nuevas dependencias de gobierno para ofrecer diferentes servicios a éstas de tal manera que se evite la dependencia de proveedores de red e internet (Telmex, Axtel, etc.) y uno de estos servicios importantes son las salas de videoconferencia para los usuarios de las diferentes áreas de gobierno. De forma paralela se está integrando tecnologías nuevas como la de WiMAX para ofrecer mejor calidad en los achos de banda y movilidad. SICOM se encuentra invirtiendo en equipos para tecnología WiMAX con apoyo de recursos del gobierno del estado de Puebla con el objetivo de que el estado se encuentre listo para que en un tiempo a mediano plazo, Puebla pueda estar listo para interconectarse con los demás estados e integrar más dependencias como casetas, SCT, penitenciarias, entre otras a nivel nacional de forma que se puedan intercambiar servicios como los de gestión de salas y dispositivos de red en un sistema de infraestructura que se está expandiendo continuamente. La evolución del desarrollo de software ha ido marcando tendencias a lo largo de la historia, incluyendo metodologías, arquitectura, frameworks, estándares, tecnologías y Sistema gestor de salas y dispositivos de red basado en JSF Página 16 estilos de uso accesibilidad. Lo que tratamos de hacer notar en este proyecto, ver es cómo es que empezamos basándonos en una arquitectura simple básica (MVC) en una aplicación local, y la giramos a un estándar mas actualizado en la cual se encuentran inmersos sub arquitecturas y estándares tales como soporte de internacionalización y accesibilidad, manejo de eventos, validar en el servidor, conversión de datos, definición de navegación en un modelo de programación bien definido donde las librerías de etiquetas facilitan la construcción y mantenimiento de las aplicaciones web con interfaces de usuario. Todo esto es una especificación desarrollada por la Java Community Process. (Java Community Proces, 2010), que a comparación de tendencias anteriores de programación de software, usando esta tecnología nos otorga una clara separación entre vista y modelo, desarrollo basado en componente y no en peticiones, las acciones del usuario se ligan muy fácilmente al código en el servidor, creación de familias de componentes visuales para acelerar el desarrollo, compatibilidad con otros lenguajes de programación para aplicaciones web (ej. Ajax) entre otras más que desarrollaremos en el capítulo de JSF. Estas características de programación son las que impulsaron el desarrollo de este proyecto para llevarlo a un nivel competitivo en base a las tecnologías y tendencias actuales. Después de ver cómo es que estas tecnologías de han ido desarrollando, de forma paralela necesitamos analizar cómo es que surge la necesidad de utilizarlas a partir de un problema real en una empresa, que es lo que analizaremos en el siguiente capítulo. Sistema gestor de salas y dispositivos de red basado en JSF Página 17 1.2 Histórico Inicialmente se empezó desarrollando un software en java, usando modelos básicos de programación (MVC), basado en el esquema artesanal que se ensena en la Universidad. En el cual se planeaba monitorear las radio bases para tener un sistema centralizado, en el cual se pudiera manejar, administrar, alertar y automatizar procesos, sin embargo, se aclaro por parte de SICOM, que ya se tenía un sistema similar, por lo que nos enfocamos a sus necesidades en la gestión de salas de juntas en los diferentes municipios y su necesidad de administración de dispositivos de red, por lo que nos vimos frente a un problema típico al que le teníamos que dar una solución a nivel empresarial. Empezamos haciendo una aplicación de la manera que se indico al principio (artesanalmente con modelos básicos de programación) sin embargo, esto en lo personal no nos convenció para darle una solución completa al usuario, así que vimos las tendencias tecnológicas para dar una solución a la altura, lo cual nos llevo al sector de las aplicaciones web. Esto nos llevo a conocer, investigar y a prender frameworks(Java server faces, ajax, hibérnate, struts, OpenDS) que son usados y se siguen desarrollando para la evolución de la web2.0, lo cual nos abrió el panorama y la cantidad de posibilidades que podemos hacer con estas herramientas. Y de forma paralela, integrando otros frameworks de uso comercial, pero enfocándonos al software libre, para no generar ningún gasto de licencias, en este caso fue el uso de Gammu. Todo esto es consecuencia a las necesidades y tendencias de software que se desarrollan hoy en día, donde ya no es suficiente tener todo el software instalado en computadoras, sino que podemos usarlo desde una aplicación web, ahorrando costos de instalación, actualización, hardware, etc. Ejemplo de esto es Google Docs, facebook, flick, correo de yahoo, entre otros más. Todo este proyecto va ser implementado para la infraestructura de SICOM, la cual tiene ciertas características peculiares, estas serán analizadas en el siguiente capítulo. Sistema gestor de salas y dispositivos de red basado en JSF Página 18 1.3 Contexto de la Aplicación Para el desarrollo de esta aplicación fue un punto importante tener en cuenta la infraestructura y la magnitud de ésta, para ver si la tecnología utilizada (JSF) cumple las necesidades de disponibilidad en cualquier parte o en cualquier nodo de ésta y si existe algún fallo de ésta también existe la posibilidad de interactuar de manera parcial a través de mensajes vía celular. SICOM cuenta con una infraestructura que interconecta a la mayoría de los municipios del estado de Puebla, y dentro de ésta se encuentra un conjunto de salas de conferencia ubicadas en los diferentes municipios como se ilustra en la figura uno. Figura 1.1: Descripción general de los principales enlaces que cuenta la infraestructura de red de telecomunicaciones SICOM 2009 (Intelimax, 2009) Sistema gestor de salas y dispositivos de red basado en JSF Página 19 Dentro del plan de crecimiento en los últimos meses se ha incluido un crecimiento en la red incluyendo los municipios como “XOCOYOLO”, “CUETZALAN”, “TEPEXI” y “ACATLÁN DE OSORIO”. Los cuales se ilustran en la figura 1.1, integrando otras salas de conferencias y lógicamente mayor cantidad de dispositivos de red. (Intelimax, 2009) Figura 1.2: Expansiones Recientes de la red de telecomunicaciones SICOM 2009 (Intelimax, 2009) Sistema gestor de salas y dispositivos de red basado en JSF Página 20 1.3.1 Integración de tecnología WiMAX Dentro del plan de reingeniería de la red de telecomunicaciones, se encuentra la integración de la tecnología WiMAX. Actualmente no se encuentra implementada en su totalidad, como podemos ver en la figura 1.3 Figura 1.3: Se muestra la implementación de las radio bases de tecnología WiMAX en funcionamiento (Intelimax, 2009) Gracias a las ventajas que ofrece la tecnología WiMAX, se planea integrar este servicio en la mayor parte de la infraestructura actual que se cuenta, como se muestra en la figura 1.4 Sistema gestor de salas y dispositivos de red basado en JSF Página 21 Figura 1.4: Planeación a futuro de la integración de equipos WiMAX (Intelimax, 2009) 1.4 Planteamiento del problema La primera problemática y la más importante que nos plantea el equipo de tecnologías de la información de SICOM, es una aplicación que sea capaz de llevar todos los detalles del proceso que se necesita para reservar una sala de juntas, con el objetivo de evitar la pérdida de tiempo y capital humano en estas tareas que pueden ser automatizada usando una aplicación de manera automatizada y autónoma, que siempre esté disponible tanto para usuarios de salas como para administrador. Esto implica que la aplicación sea capaz de tener un horario por cada sala, y que para casa usuario le sea capaz de reservar ésta por medio de un horario lógico y que avise en caso de empalme al tratar de reservar, de lo contrario, agregue el evento a la agenda a la Sistema gestor de salas y dispositivos de red basado en JSF Página 22 respectiva sala. Para cada evento existen invitados, los cuales deben ser notificados por los diferentes medios disponibles (en este caso implementamos vía correo electrónico y vía mensaje de texto por teléfono móvil). De manera paralela, el usuario podrá dar de alta eventos, y el administrador además de esto podrá dar de alta salas (ya que como lo hemos discutido en capítulos anteriores, la infraestructura se encuentra en constante crecimiento), las cuales se encuentran asociadas a un lugar. Estas salas por lo general cuentan con un nombre para identificarlas y el administrador y no perderá tiempo en la interacción con los usuarios y en llevar una agenda para cada sala, esto lo hará el sistema de manera automática notificando a los usuarios en caso de empalme o de alguna situación dada con alguna sala, y solo el administrador se preocupará por que este lista la sala para los horarios indicados en el sistema. Para el administrador de tecnologías de la información también le resulta muy útil remplazar su archivo de base de datos que tiene en Excel, para llevar el control de todos los dispositivos de red que se encuentran en esta infraestructura. Ya que existen muchas copias de este archivo y no todas están actualizadas ni disponibles cuando se requiere, por lo que sería bastante útil integrar en la parte del administrador de este sistema una sección donde pueda dar hacer las consultas básicas para la base de datos de dispositivos de red activos, de tal manera que tan solo tenga acceso a un navegador dentro de la infraestructura, pueda dar de alta, bajas o modificaciones usando una base de datos única, actualizada y siempre disponible, validando datos de entrada para llevar un control de coherencia dentro de esta información. Sistema gestor de salas y dispositivos de red basado en JSF Página 23 1.5 Objetivo de la tesis El objetivo de la tesis es analizar, aplicar, comparar y promover el uso de tecnologías de desarrollo de aplicaciones web nuevas basándose en tendencias actuales a través de Java Server Faces como base del sistema aplicado a un conjunto de necesidades reales para una dependencia del Gobierno del estado de Puebla, incorporando de forma paralela otras herramientas como Gammu, Ajax y jFreeChart.Todo esto para dar una solución y demostrar la eficacia de Java Server Faces ante otras tecnologías similares como Struts, obteniendo respuesta a dicha necesidad con un nivel empresarial y competitivo en relación a las tendencias de programación más comerciales y más usadas en los sitios exitosos de aplicaciones web (google docs, facebook, twitter, etc) pero enfocado a las necesidades especificas de una empresa de tecnología (SICOM), demostrando los beneficios en cuestión de eficiencia, costos, calidad de uso y desarrollo, basándose en estándares establecidos. Otro punto muy importante que se encuentra de manera implícita, es dar a conocer la experiencia que se obtuvo al aprender éstas tecnologías, considerando que este tipo de desarrollos fueron totalmente ajenos a la programación clásica que se lleva en la universidad, demostrando que la curva de aprendizaje (figura 1.5) que obtuvimos en esta experiencia fue repetitiva con periodos de tiempo relativamente cortos, sobretodo porque no solo se aprendió Java Server Faces, sino también Gammu, Ajax, y jFreeChart. Sistema gestor de salas y dispositivos de red basado en JSF Página 24 Figura 1.5: Curva de aprendizaje 1.6 Objetivos específicos (Administración de la sala de conferencias) Como se mencionó en el punto anterior, el desarrollo que se llevará a cabo tendrá como último objetivo hacer más eficiente la gestión de video-conferencias en las salas reservadas para ese fin. Pero para poder concretar este objetivo es necesario hablar de otros a menor escala, pero que en su conjunto y sumados harán posible incrementar la eficiencia en la administración de dichas salas. La aplicación que se planea desarrollar tiene contemplada la implementación de varias funcionalidades que permitan al usuario introducir, modificar y eliminar datos, así como también acceder a éstos, razón por la cual se puede decir que el grado de interacción con el sistema es considerable. Ahora bien, cuando un sistema informático se desarrolla, como en este caso una interfaz grafica, es prioritario tomar en cuenta en primer lugar que el sistema va a ser utilizado por personas y en segundo que en muchas ocasiones cuando interviene el factor humano en el manejo de sistemas, aplicaciones o software, la forma en que se desarrolla esta interacción puede llegar ser tan determinante como la aplicación misma, ya que si bien es cierto que son vitales las soluciones que una aplicación pueda brindar, también es cierto Sistema gestor de salas y dispositivos de red basado en JSF Página 25 que si el usuario final no puede acceder fácilmente a ellas, éstas no sirven de mucho, por eso es que la usabilidad de la aplicación es un factor que se está tomando en cuenta para la construcción de esta interfaz. Para poder hacer posible todo lo anterior, se ha contemplado la implementación de pruebas de usabilidad en usuarios para poder comparar los resultados obtenidos con los esperados y en base a esta retroalimentación desarrollar una mejor interacción entre la aplicación y las personas que van hacer uso de ésta. Ahora bien la usabilidad de la interfaz es un tema importante y que sin duda será un elemento considerado en el desarrollo que se está planteando, pero no es el único; hasta este punto se ha hecho mención de que la interfaz permitirá la introducción, modificación, eliminación y presentación de datos, pero no se ha descrito los módulos que permitan esta interacción. El primero de estos módulos y el principal, es aquel que ofrecerá la posibilidad dar de alta un evento o video-conferencia, lo que en otras palabras quiere decir que será la parte donde el usuario puede especificar el nombre, fecha, hora de inicio, hora de fin y lugar, entre otras características. El modulo contará con distintas validaciones, entre la que cabe destacar a aquella que impedirá el empalme de eventos, la cual contribuirá considerablemente a la solución de los problemas de logística que ha venido experimentado SICOM; no obstante solo es uno de los elementos que compone el objetivo general. Aunado a este modulo serán necesarios agregar otros. En primer lugar será se piensa que es importante implementar una opción de búsqueda de evento, que permita a los usuarios localizar cierto evento o grupo de eventos, ya sea por lugar, fecha, hora, o nombre Sistema gestor de salas y dispositivos de red basado en JSF Página 26 para poder acceder a la información de éstos; de esta manera será mucho más sencillo poder llevar un registro del uso de las salas por semana o por temporada, pudiendo revisar la ocupación de las salas. En segundo lugar también se piensa desarrollar el modulo que le dé al usuario la oportunidad de dar de alta invitados para un evento específico, este modulo cumplirá varias funciones, la más básica de todas ellas es la de tener un control de las personas (autoridades y personal) que asistirá a la conferencia. La otra función que desempeñará el modulo refiere a la invitación que se hará a las videoconferencias, la cual será llevada a cabo desde dos perspectivas, una de ellas es el envío de correos electrónicos con un saludo personalizado a todas aquellas personas de las que se tengan sus datos y están dadas de alta con todo y su correo electrónico, así como también que cumplan con la condición de estar invitadas al evento. La segunda perspectiva desde la cual se llevará a cabo las invitaciones hace referencia al hecho de que se enviarán mensajes de texto a los respectivos celulares de quienes estén invitados al evento, contando con la opción de una confirmación de asistencia vía mensaje sms. Esta última característica fue pensada debido a que el celular por su propia naturaleza es un dispositivo que está siempre cerca de las personas favoreciendo su localización casi en cualquier lugar y momento, es un poderoso recurso para hacer llegar información de distinta índole, entre la que figura aquella que le dé a conocer, en este caso, su participación en una video-conferencia donde se requiere de su asistencia. La capacidad que el sistema brinde a los usuarios de dar de alta eventos tiene que estar acompañada de las opciones de modificación y eliminación de los mismos. Sistema gestor de salas y dispositivos de red basado en JSF Página 27 Ambas opciones de interacción con la información son parecidas, si se toma en cuenta que en ambas las información se modifica, ya sea cambiando algún dato o aspecto de la video-conferencia o bien borrándola por completo, otro rasgo en común es que para que ambas (tanto modificación como eliminación) se puedan llevar a cabo es necesario que el usuario tenga en claro el objeto a modificar o eliminar. Por todo esto es que los módulos representativos de las funciones de modificación y eliminación de eventos serán combinados con el respectivo módulo de búsqueda, con el objeto de que el usuario pueda identificar el evento de su interés, y una vez localizado pueda visualizar la información respecto a éste, así como también pueda modificar dicha información o en caso de que así lo desee tenga la opción de eliminarlo. Sin embargo el modificar o eliminar un evento no solo está relacionado con la información que se refiere a la video-conferencia, sino también con las personas que asistirán por lo que se ha considerado que los cambios en lugar, fecha y hora, así como también la cancelación del evento sea informado por correo electrónico y vía sms a los celulares de los invitados, de manera automática. Hasta este punto los módulos descritos a grandes rasgos solo describen un parte del sistema, la referente a la gestión de las salas de video-conferencias, pero por otra parte hace falta describir aquellos que tienen relación con la administración de personas, ya sean autoridades o empleados, que asistirán a dichos eventos; ciertamente se ha descrito que aunado a la alta de algún evento está la posibilidad de incluir las personas que asistirán, sin embargo para facilitar esta tarea se ha pensado en añadir un módulo que permita dar de alta previamente a personas, con el objetivo de que se cuente con una base de datos de Sistema gestor de salas y dispositivos de red basado en JSF Página 28 autoridades y empleados con sus respectivos datos y se puedan seleccionar e incluir al evento cuando se desee, sin tener que estar dando de alta cada vez que se tenga la intención incluirlas en algún evento determinado. Ahora bien, al igual que con los eventos es necesario dar la opción a los usuarios de modificar y eliminar registros de la base de datos de personas, para lo que es necesario reconocer la necesidad de buscar y localizar la persona sobre cual se desea hacer la modificación o en su defecto la eliminación. Por esta razón se piensa en incluir una opción de búsqueda de personas ya sea por nombre, apellidos o cargo entre otras categorías, con el objetivo de que una vez identificada la persona se pueda hacer la modificación o eliminación que el usuario considere pertinente. Por otro lado cabe mencionar que la información tiene la característica de ser siempre útil, esta utilidad puede verse manifiesta a veces de forma inmediata y en otras a posteriori, por eso es que se piensa aprovechar la información que el sistema pueda llegar a contener como resultado de la interacción que se tenga con él , como por ejemplo el numero de video-conferencias que se puedan llevar a cabo a lo largo de un periodo que al usuario le interese saber, ya sea las que se realizaron en un mes específico o en un periodo que se determine, así como también tomando en cuenta que los invitados pueden llegar a responder vía celular si van o no a asistir se puede almacenar este información no solo para saber si un evento tendrá buena o mala asistencia, sino para determinar qué tipo de eventos tienen un promedio de asistencia aceptable, regular o mala. Tomando en cuenta que muchas veces no solo es suficiente la información que se presente sino muchas veces importa la manera en que se haga, se ha reflexionado acerca del Sistema gestor de salas y dispositivos de red basado en JSF Página 29 tema y con el objeto de que esta información se muestre de una forma rápida y fácil de entender para quien la solicite, se ha pensado que en lugar de ser solamente datos numéricos se puede utilizar ciertas librerías que brinden la posibilidad de elaborar gráficas, de tal manera que se pueda apreciar con un solo vistazo cual es la sala que mas eventos ha tenido en un determinado periodo, o también que salas son las más concurridas y que presentan mayor numero de audiencia La intención de cada uno de estos módulos es mejorar la logística que actualmente se tiene respecto a la administración de la salas de video-conferencia, así como también de implementar herramientas que vayan un poco mas de eso y que en su conjunto resulten en una solución no solo factible sino también más completa, donde los usuarios puedan resolver en la medida de los posible algunos de los conflictos de organización para los eventos y además lo hagan de una forma rápida y confiable, que resulta útil y cómoda a todo aquel que haga uso de la herramienta que se planee desarrollar. Sistema gestor de salas y dispositivos de red basado en JSF Página 30 1.7 Objetivos específicos (Sistemas de gestión de ips) Facilitar el acceso a la información de los dispositivos Activos Dar de alta dispositivos desde cualquier lado parte de la infraestructura Facilitar el uso de alta de un dispositivo para que sea de manera intuitiva Tener una base de datos siempre organizada, actualizada, coherente y detallada para evitar conflictos en la red. Ayudar a los administradores a otorgar direcciones IP por medio de familias ya establecidas. Incrementar la eficiencia, control y evitar pérdidas de tiempo en este proceso. 1.8 Alcances El sistema facilitará la administración de las direcciones IP El software facilitará la gestión de las salas de video-conferencias Facilitará el aviso a los invitados, respecto al evento Escalabilidad El software será independiente de la plataforma utilizada. Interactividad de software, usuario vía mensajes celular y por sitio web Productividad en el uso de salas y en el crecimiento de la infraestructura, evitando pérdidas de tiempo en la parte administrativa de éstos. Control total sobre las salas y sobre los dispositivos colocados en cualquier punto de la infraestructura. Sistema gestor de salas y dispositivos de red basado en JSF Página 31 1.9 Resumen de Capitulo Es importante conocer el objetivo de este trabajo de investigación, resaltando el contexto, el desarrollo y la aplicación, demostrando las ventajas del uso de Java Server Faces, complementándose con otras herramientas dentro del marco experimental (Gammu) y otras más que tienen mayor cantidad de tiempo como frameworks (jfreeChart, Ajax) pero nosotros nos enfocamos a integrarlas a la tecnología principal para hacer notar el potencial que ésta puede tener gracias a su arquitectura basada en estándar lo cual de da la cualidad de interoperabilidad, considerando las ventajas de facilidad de desarrollo y mantenimiento en comparación a otras tecnologías similares como lo es Struts. Finalmente se menciona en un marco histórico como es que surge la necesidad de investigación y como es que se encuentran estas tecnologías muy ah-doc para la solución de necesidades de SICOM. Para la aplicación de esta tecnología es muy importante conocer el contexto en la cual se va a desarrollar, para poder considerar factores técnicos y poder prever a largo plazo y ver si realmente es útil. Considerando que SICOM se encuentra en expansión integrando tecnologías más actuales como lo es WiMAX, para su fortalecimiento y escalabilidad, podemos ver que la tecnología de Java Server Faces se ajusta a la perfección en base a estos detalles de infraestructura, ya que los anchos de banda manejados dentro de todas las dependencias son capaces de responder para que la aplicación web funcione perfectamente y sobretodo de forma paralela tenga la capacidad de escalabilidad y un mantenimiento eficaz, ya que es posible seguir integrando nuevos módulos sin necesidad de perder tiempo en reestructurar el sistema actual. Sistema gestor de salas y dispositivos de red basado en JSF Página 32 En el desarrollo de la aplicación web existen dos àres que se pueden integrar fácilmente, una de estas es la gestión de salas de video-conferencia a través de un sistema autónomo que sea capaz de llevar la agenda de todas las salas y facilitando a los usuarios hacer uso de estas sin tener que hacer un proceso personal con el administrador de salas en SICOM, ya que lo vuelve tedioso y con grandes pérdidas de tiempo por la gran cantidad de salas y su crecimiento en el número de estas. Otro punto a tratar dentro de esta aplicación es la gestión sistemática de dispositivos IP para dar de alta en cualquier punto de la infraestructura de manera fácil, rápida y eficiente. 2. Opciones de Tecnología en el mercado para esta infraestructura. Actualmente existen productos como WhatsUpGold (whatsupgold, 2009) que se dedican al monitoreo de la red, pero no gestiona la administración del ingreso de nuevos dispositivos a la red, en base a las configuraciones que se encuentran dadas en una base de datos, es decir, no es capaz de dar indicaciones y advertir las implicaciones que tiene la integración de un nuevo dispositivo. En el área de logística existe mucho software comercial genérico para la administración de salas de conferencia, como Outlook de Microsoft, sin embargo necesitamos algo más preciso a nuestras necesidades, y se enfoque a los detalles específicos que requerimos. Como podemos ver, prácticamente existen implementaciones similares enfocadas al uso personal y no precisamente para el uso de objetos como en este caso una sala, incluso muchas empresas desarrollan su propio software especifico a este tipo de necesidades, un Sistema gestor de salas y dispositivos de red basado en JSF Página 33 claro ejemplo es el sistema de reserva del Aula Magna del sitio del CIRIA, de la Universidad de las Américas Puebla, como se muestra en la figura 2.1. Figura 2.1: Sistema de reserva del aula magna del CIRIA. De forma concreta, como podemos ver, no existe un software comercial o gratuito especifico a las necesidades de cada empresa, sin embargo se puede implementar, pero como el desarrollo de aplicaciones web aun se encuentra en pleno apogeo, no es fácil encontrar software basado en web completamente implementado a este tipo de problemas, sin embargo solo será cuestión de tiempo para empezar a ver la comercialización de aplicaciones web más complejas y de gran magnitud. 3. En el almacenamiento (MySQL) Un sistema de gestión de base de datos es un tipo de software muy específico, que sirve de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan; y debido a las necesidades que plantea la interfaz se ha elegido como gestor de base de datos a MYSQL. Sistema gestor de salas y dispositivos de red basado en JSF Página 34 3.1 • Un SGBD como MYSQL permite: Abstracción de la información. Los SGBD ahorran a los usuarios detalles acerca del almacenamiento físico de los datos. Da lo mismo si una base de datos ocupa uno o cientos de archivos, este hecho se hace transparente al usuario. Así, se definen varios niveles de abstracción. • Independencia. La independencia de los datos consiste en la capacidad de modificar el esquema (físico o lógico) de una base de datos sin tener que realizar cambios en las aplicaciones que se sirven de ella. • Consistencia. En aquellos casos en los que no se ha logrado eliminar la redundancia, será necesario vigilar que aquella información que aparece repetida se actualice de forma coherente, es decir, que todos los datos repetidos se actualicen de forma simultánea. Por otra parte, la base de datos representa una realidad determinada que tiene determinadas condiciones, por ejemplo que los menores de edad no pueden tener licencia de conducir. El sistema no debería aceptar datos de un conductor menor de edad. En los SGBD existen herramientas que facilitan la programación de este tipo de condiciones. • Seguridad. La información almacenada en una base de datos puede llegar a tener un gran valor. Los SGBD deben garantizar que esta información se encuentra segura de permisos a usuarios y grupos de usuarios, que permiten otorgar diversas categorías de permisos. • Manejo de transacciones. Una Transacción es un programa que se ejecuta como una sola operación. Esto quiere decir que luego de una ejecución en la que se produce una falla es el mismo que se obtendría si el programa no se hubiera ejecutado. Los Sistema gestor de salas y dispositivos de red basado en JSF Página 35 SGBD como MYSQL proveen de mecanismos para programar las modificaciones de los datos de una forma mucho más simple que si no se dispusiera de ellos. • Tiempo de respuesta. Lógicamente, es deseable minimizar el tiempo que el SGBD tarda en darnos la información solicitada y en almacenar los cambios realizados. Después de hacer mención de la parte más baja del sistema (manejo de datos), ahora en el siguiente capítulo nos enfocaremos a la arquitectura de éste dando detalle de la estructuración, sin embargo, en la parte del diseño se dará el diagrama de clases que representa nuestras relaciones, entidades, tributos y triggers utilizados en el sistema, para dar mayor transparencia en los procesos y transacciones que se realizan mientras el usuario interactúa con el sistema. 4. Arquitectura del sistema La aplicación se desarrolló en un lenguaje de programación conocido como java el cual es un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems. Se eligió este lenguaje debido a varias razones, en primer lugar permite el desarrollo de aplicaciones con un paradigma orientado a objetos, esto posibilita diseñar un software de forma que los distintos tipos de datos que se usen estén unidos a sus operaciones, mediante la construcción de clases y objetos, entendiéndose como objeto un paquete que contiene el “comportamiento” es decir el código y el “estado” o los datos. El objetivo básico que se pretende alcanzar al aplicar el paradigma conocido como orientado a objetos, es el de separar aquello que cambia de las cosas que permanecen inalterables. Esta separación en objetos coherentes e independientes en teoría ofrece una base más estable para el diseño de un sistema software razón por la cual se optó por este paradigma. Sistema gestor de salas y dispositivos de red basado en JSF Página 36 Otras de las razones por la que java es el lenguaje que se ha escogido para el desarrollo de la interfaz, es que permite algo que se conoce como independencia de plataforma, lo que significa que los programas escritos en este lenguaje pueden ejecutarse igualmente en cualquier tipo de hardware, ya que provee una máquina virtual que ejecuta cualquier código que haya sido escrito en dicho lenguaje, permitiendo que el mismo binario ejecutable se pueda usar en todos los sistemas compatibles con el software Java por lo menos en Windows, GNU/Linux, y Solaris. Por último cabe mencionar que java es que es un lenguaje que cuanta con una licencia de tipo pública general o GNU por su nombre en inglés General Public License, esta licencia está orientada principalmente a proteger la libre distribución, modificación y uso de software. Su propósito es declarar que el software cubierto por esta licencia es software libre, lo que significa que esta cualquier software que tenga esta denominación respeta la libertad de los usuarios sobre su producto adquirido y por tanto, una vez obtenido puede ser usado, copiado, estudiado, cambiado y redistribuido libremente, lo que es importante porque todo lo anterior se refleja en un ahorro de costos ya que no se tienen que pagar licencias, como es el caso de otras tecnologías. (GNU Operating System, 2009). Ahora vamos analizar modelos específicos que usaremos en el sistema donde daremos más detalle en el siguiente capítulo. 4.1 MVC El patrón de arquitectura MVC o Model-View-Controller es un patrón que define la organización independiente del Model referente a los objetos de negocio, la View que es la interfaz con el usuario u otro sistema y finalmente el Controller que funge como Sistema gestor de salas y dispositivos de red basado en JSF Página 37 controlador del flujo de trabajo en la aplicación. Cabe señalar que al existir la separación de vistas, controladores y modelos es más sencillo realizar labores de mejora como: • El agregar nuevas vistas según las necesidades que se presenten. • Agregar nuevas formas de recolectar las ordenes del usuario en caso de que así sea necesario. • Modificar los objetos bien sea para mejorar el desempeño o para migrar a otra tecnología. Las labores de mantenimiento también se simplifican y se reduce el tiempo necesario para ellas. Las correcciones solo se deben hacer en un solo lugar y no en varios como sucedería si tuviésemos una mezcla de presentación e implementación de la lógica del negocio. Las vistas también son susceptibles de modificación sin necesidad de provocar que todo el sistema se paralice. Adicionalmente el patrón MVC propende a la especialización de cada rol del equipo, por tanto en cada liberación de una nueva versión se verán los resultados. Figura 4.1: Flujo a través del modelo MVC Sistema gestor de salas y dispositivos de red basado en JSF Página 38 En la Figura 6.1 se muestra la estructura básica que se encuentra dentro de Java Server Faces, cumpliendo con un estándar más en la programación básica de cualquier aplicación, pero en este caso enfocada a una aplicación web. En el siguiente capítulo pasaremos de la arquitectura a los complementos que se pueden integrar fácilmente gracias a este modelo de programación. 5. JFreeChart JFreeChart es una librería para gráficos escrita en Java por lo que su compatibilidad con el sistema está asegurada, como se mencionó en el párrafo anterior esta librería facilita mostrar gráficas, entre las características principales de esta biblioteca se pueden mencionar las siguientes: • Es un API consistente y bien documentado con soporte para un amplio rango de tipos de gráficas. • Cuenta con un diseño flexible fácilmente extendible, y la posibilidad de ser usado en tecnologías de servidor como la que planea desarrollar. • Ofrece soporte para varios tipos de salida, incluyendo componentes Swing, archivos de imagen como PNG y JPEG, y formatos gráficos de vectores incluyendo PDF, EPS y SVG. • JFreeChart es open source y más especificamente, Software Libre, éste está distribuido bajo la licencia LGPL, que permite el uso en aplicaciones propietarias. Algunos ejemplos de las graficas que se pueden generar son los siguientes Sistema gestor de salas y dispositivos de red basado en JSF Página 39 Figura 5.1: Ejemplo de graficas que se pueden generar en JFreeChart Figura 5.2: Ejemplos de graficas que se pueden generar en JFreeChart Como se mencionó anteriormente, en la parte que describe el software a utilizar, la librería jFreeChart es una las principales herramientas que se utilizarán en el desarrollo que se planea hacer para SICOM, ya que proporcionará las facilidades de generar gráficos. Con el objetivo de familiarizarse con esta tecnología, se planeó el desarrollo de un prototipo que brindara la posibilidad de aplicar esta librería. Cabe mencionar que las graficas que se generaron no fueron escogidas al azar, sino por el contrario se eligiendo en función de las estadísticas que se piensan mostrar, como por ejemplo la ocupación de una sala a lo largo de un año, la asignación de direcciones IP en un periodo determinado o el uso de las direcciones ip (cámaras, voz, transmisión de datos) Sistema gestor de salas y dispositivos de red basado en JSF Página 40 El prototipo implementa tres tipos de gráficas: barras, lineal y pastel; es una aplicación del tipo Stand Alone, ya que como prototipo el objetivo era familiarizarse con tecnología aplicada a las posibles necesidades de la aplicación. Es necesario que los datos que se utilizaron para la prueba fueran generados de una manera aleatoria haciendo uso de la clase Math que forma parte de las librerías de java. Haciendo una reflexión acerca de que las gráficas que se van a generar tendrán como datos para construirse, aquellos que estén almacenados en una base de datos, se consideró que los datos utilizados se recuperan para la generación de dichas gráficas se obtuvieran de una tabla ubicada dentro de una base de datos en mySQL. Es necesario aclarar que dado el hecho de que este prototipo solo tenía como fin la familiarización con la librería jFreeChart, no se tomó en cuenta la usabilidad de la ventana. La arquitectura del prototipo es simple, ya que solo cuenta con 3 clases, una donde se generan los datos aleatorios y se almacenan en la base datos, otra donde se encuentran los métodos que generan las 3 graficas y finalmente la vista, que contiene la interfaz gráfica que facilitará la visualización de las graficas a generar. Sistema gestor de salas y dispositivos de red basado en JSF Página 41 5.1 Interfaz gráfica Figura 5.3: En esta primera gráfica, se puede ver que están representados los 12 meses del año, así mismo se muestra la relación existente entre el mes especificado y su ocupación expresando en otras palabras el número de veces que se hizo uso de la sala a lo largo del año. Sistema gestor de salas y dispositivos de red basado en JSF Página 42 Figura 5.4: En segundo puesto está una gráfica del tipo lineal, este estilo de gráfica puede ser utilizada para mostrar las estimaciones de crecimiento en cuanto a asignaciones de ip o bien al igual que las salas y su uso, para mostrar el numero de asignaciones que se han hecho en un periodo determinado. Figura 5.5: Finalmente como se puede apreciar, esta es una gráfica de pastel, que se piensa podría ser de mucha utilidad para mostrar la proporción de uso en la direcciones ip por ejemplo aquellas que se utilizan para video, voz o transmisión de datos. Sistema gestor de salas y dispositivos de red basado en JSF Página 43 Algunas pruebas que hicimos con valores de manera aleatoria generándolos y cambiándolos en tiempo real para probar la capacidad de repuesta en tiempo real: Figura 5.6: Conjunto de pruebas para la realización de graficas en tiempo real basadas en valores aleatorios, y como podemos ver cumplieron satisfactoriamente los requisitos de respuesta que necesitamos para graficar los distintos tipos de eventos que vamos usar en tiempo real para el monitoreo. Sistema gestor de salas y dispositivos de red basado en JSF Página 44 Se puede concluir que jFreeChart es una librería que resulta mucha utilidad para la aplicación de se está desarrolla, los distintos formatos en sus tipologías de gráficas y en la generación de las mismas permiten que se puedan usar extensiones como (.jpg o png, entre otras), permitiendo en la posibilidad de generar archivos independientes del sistema que puedan ser impresos o utilizados fuera del mismo. Por último otro punto muy importante en la eficiencia de esta librería, es la capacidad de la generación de gráficas en tiempo real para poder ilustrar ciertos aspectos de la red en el módulo de IP en tiempo real, como por ejemplo: el tiempo de respuesta de ciertos dispositivos, para poder medir ciertos parámetros de eficiencia, así como poder medir en tiempo real los anchos de banda que se encuentran en uso por ciertos dispositivos y poder graficar de manera ilustrativa en que rangos estamos haciendo el uso de nuestros enlaces sobre nuestra capacidad total. Sistema gestor de salas y dispositivos de red basado en JSF Página 45 6. Gammu Otra herramienta que usamos para el desarrollo del sistema, es un demonio de mensajes de texto vía celular, bajo la licencia de código libre y de código abierto. Este framework se encuentra compuesto por una serie de aplicaciones, scripts, y drivers para diferentes dispositivos móviles, y dispositivos similares. El cual nos otorga una serie de funciones En el área con el que nos apoyaremos para la interacción de mensaje será a través del servicio que ofrece Gammu, la cual es una herramienta de consola y una biblioteca para trabajar con teléfonos móviles de varias marcas. Permite usar las características específicas de los diferentes modelos, pero las funciones básicas deberían funcionar en la mayoría de ellos. El programa puede funcionar con contactos, mensajes (SMS, EMS y MMS), calendario, listas de tareas, sistema de archivos, radio integrada, cámara, etc. También permite su uso en modo demonio para el envío y recepción de SMS. (Wik de Gammu, 2009) Actualmente los teléfonos compatibles incluyen: • Muchos modelos de Nokia. • Alcatel BE5 (501/701), BF5 (715), BH4 (535/735). • Teléfonos compatibles con AT (Siemens, Nokia, Alcatel, IPAQ). • Teléfonos compatibles con OBEX y IrMC (Sony-Ericsson, Motorola). • Teléfonos Symbian mediante gnapplet. Y continuamente se encuentran actualizando nuevos modelos. En nuestro caso, estamos usando un teléfono SAMSUNG con una conexión vía bluetooth y por cable USB Sistema gestor de salas y dispositivos de red basado en JSF Página 46 Este framework cuenta con una serie de configuraciones que se especifican en un archivo de lectura, en el cual se indica el puerto por el cual se va comunicar con el teléfono celular y los datos necesarios para conectarse con la base de datos y poder interactuar. Estos detalles se explicaran en el siguiente subcapítulo La velocidad de respuesta de Gammu depende de la respuesta de la red telefónica, ya que muchas veces ésta se encuentra saturada y existe un retraso en el envío y recepción de mensajes. Es importante mencionar que gammu originalmente se encontraba integrado y disponible solo para Linux, por lo cual prácticamente no existe documentación que ayude en el uso de este demonio para Windows, y muchas de las cosas las tuvimos que adaptar para hacerlo funcionar en Windows ya que solo se tomaron los códigos fuente de Linux y se compilaron y generaron ejecutables para Windows, sin considerar los paths que se manejan en Windows. Es por eso que tenemos que usar ciertos archivos de configuración para hacerlo funcionar ya que en Linux su uso es más cómodo y documentado. Sistema gestor de salas y dispositivos de red basado en JSF Página 47 6.1 PhpMyAdmin & Gammu Otra herramienta muy útil que utilizaremos será phpMyAdmin, la cual es una herramienta escrita en PHP con la intención de manejar la administración de MySQL a través de páginas web, utilizando Internet. Actualmente puede crear y eliminar Bases de Datos, así como crear, eliminar y alterar tablas, borrar, editar y añadir campos, ejecutar cualquier sentencia SQL, administrar claves en campos, administrar privilegios, exportar datos en varios formatos y está disponible en 50 idiomas. Se encuentra disponible bajo la licencia GPL. Figura 7.1: Ventana principal de nuestra base de datos que usara nuestro demonio de mensajes (gammu) en la cual se establecerá parámetros de respuesta, lista de números telefónicos y casos de reacción en base a los módulos que se programarán Como podemos ver, en la imagen 3, ya tenemos nuestro esquema hecho en base a los estándares requeridos por el demonio de mensajes, y de esta manera nuestros módulos podrán interactuar con esta base de datos y el demonio responderá según las peticiones recibidas o los cambios o indicaciones hechas por los módulos de administración de salas y de administración de dispositivos ip. Sistema gestor de salas y dispositivos de red basado en JSF Página 48 Figura 7.2: Pruebas de reconocimiento del dispositivo telefónico y de envío de mensajes a través de servidor gammu y de fondo tenemos el archivo de configuración que tiene la información del puerto, conexión a través de bluetooth con el equipo celular. NOTA: No existe una configuración de conexión en la página de soporte, sin embargo a base de pruebas, experimentos y conocimiento se pudo deducir la conexión hasta encontrarla de manera exitosa. Como podemos ver en la figura 3.1 Primero vamos a hacer el equivalente a un “ping” por medio del comando “gammu – identify” para confirmar la conexión entre el dispositivo y el servidor y después mandamos un mensaje con el comando “gammu –sendsms TEXT numero destino –text mensaje”. Esto lo hicimos para probar la parte más básica de este servidor. En la figura 3.2 que se muestra a continuación levantamos el servicio de del demonio de gammu que vincula con la base de datos y se mantiene activo para enviar, recibir mensajes y responder peticiones según sea el caso. Sistema gestor de salas y dispositivos de red basado en JSF Página 49 Figura 7.3: Demonio de gammu activad, como parámetro de entrada se le da la configuración de conexión y la información necesaria para conectar con MySQL, en el archivo smsdrc. 6.2 Uso de gammu en un prototipo previo Figura 7.4: Interfaz de prueba para el envió de mensajes a través de la interacción con la base de datos y el demonio de gammu activo, en el momento que se pone un mensaje en el autbox de la base datos, automáticamente lo envía y lo manda en senditems indicando que ya se envió el mensaje de manera exitosa. 6.3 Detalles técnicos Otro dispositivo que vamos a necesitar es un teléfono celular que sea compatible don el demonio de servidor de mensajes. Los modelos compatibles con nuestro demonio de servidor se encuentran disponibles en la siguiente página: http://wammu.eu/phones/ Cabe mencionar que conforme a la experiencia que hemos tenido con este framework, podemos añadir más dispositivos de los cuales no se encuentran en la lista, configurando el archivo “gammurc” y “smsdrc” dándole los parámetros de interfaz del dispositivo que se desea conectar. Gammu en su página invita a la gente a colaborar Sistema gestor de salas y dispositivos de red basado en JSF Página 50 agregando nuevas configuraciones de este estilo para que a la gente le sea más fácil el uso de este framework. Gammu también tiene la capacidad de manejar de manera autónoma mas de un dispositivo celular, ya que en dado caso de que si existe algún problema con alguno de los dispositivos conectados busca el siguiente disponible para el envió y recepción de mensajes, es decir, en caso de que por ejemplo, se acabe el saldo de un celular, no importa que es capaz de usar otro celular disponible que se encuentre conectado. Todo esto se especifica en el archivo que trae como nombre por default “smsdr”, el cual le definimos la configuración del dispositivo(s) a usar y especificamos los parámetros para conectar con la base de datos. Nuestra aplicación de SICOM interactúa con la base de datos y en cualquier cambio de esta, el demonio va actuar de manera autónoma enviando mensajes, y en caso de recepción de mensajes el demonio los va almacenar de manera automática en las bases de datos especificadas según el sistema. Sistema gestor de salas y dispositivos de red basado en JSF Página 51 Figura 7.5: Especificaciones de configuración para que funcione de manera correcta el demonio (se señala la parte de definición del equipo celular y de la base de datos). Sistema gestor de salas y dispositivos de red basado en JSF Página 52 7. Java Server Faces 7.1 El porqué del uso de este JSF Para las necesidades de SICOM, se planeo inicialmente un software local, el cual cumpliera las necesidades que se presentaron, y se fue desarrollando de esta manera, hasta que se encontró la necesidad de interactuar con el sistema de manera remota, a través de una interfaz sencilla, tal vez no completamente implementada, pero usando las funciones básicas y las más importantes. Y entramos en el proceso de investigación, de cual sería la mejor tecnología para desarrollar esto de la manera más práctica y eficiente, incluyendo el uso del lenguaje y que siguiera la arquitectura de MVC, además de que cumpliera los estándares básicos y sea sencillo de modelar en la parte de la vista ya que existen una gran cantidad de formas para modelar una página web (html, flash, applets, jsp, etc) y nos dimos cuenta que podríamos hacerlo de manera muy baja, construyendo y modelando código jsp, html, etc. Pero dentro de la investigación encontramos varios lenguajes muy usados hoy en día que ayudan a la construcción de sistemas enfocados a aplicaciones web, sin meterse tanto con aspectos no importantes y solo concentrarse en la parte de la programación lógica, entre estos fue Java Server Faces, Ruby on Rails, PHP bajo diferentes frameworks, etc. Y el que más de adecuaba a la solución de nuestras necesidades y conforme a nuestra experiencia que llevábamos con java fue el de Java Server faces. No solo nos quedamos con Java Server Faces, investigamos sobre distintos frameworks como los mencionados anteriormente y no usamos otro no porque sea malo, sino porque no lleno nuestras expectativas de uso en el momento requerido, aunque cabe mencionar que también tienen sus ventajas y desventajas como cualquier framework, eso ya está en base a la estabilidad de éste y como vimos en experiencias escritas en foros y Sistema gestor de salas y dispositivos de red basado en JSF Página 53 páginas de internet Java Server Faces y PHP eran los más utilizados para este tipo de necesidades y los más estables, incluso encontramos en la página para desarrolladores de IBM, el uso de JSF como recurso principal para su empresa, incluyendo gran contenido de este framework, claro enfocado en el uso con ECLIPSE, el cual es propiedad de IBM. De forma paralela vimos que ORACLE, también hace uso de esta tecnología como framework principal para desarrollo de aplicaciones web, el cual se enfoca en el uso de JSF para su propio IDE de ORACLE (Oracle JDeveloper 11g). Finalmente lo terminamos usando con la ayuda de NetBeans, ya que el ambiente que éste IDE nos proporciona es el más familiar, sin embargo puede que no sea el mejor para esta tecnología, pero por cuestiones prácticas lo usamos. Muchos recomiendan el uso de Eclipse para desarrollar aplicaciones basadas en tecnología JSF, pero eso ya depende de gustos de los usuarios. Al empezar a desarrollar la aplicación bajo esta tecnología nos dimos cuenta que nos daba herramientas poderosas para continuar todo el proyecto, lo cual nos llevo a las tendencias más actuales sobre el desarrollo de aplicaciones web, donde las aplicaciones que comúnmente se desarrollan para quipos de manera local, se han convertido en aplicaciones web como Google Docs, que transforma sus versiones de office a una versión de office pero basada en web. Nos dimos cuenta de que nos da una serie de ventajas las cuales las discutiremos de manera más detallada enfocadas a JSF. Por lo que decidimos pasar nuestro programa local de java a JSF de manera completa, ya que es parte importante del estándar java J2EE. De hecho se está preparando una nueva versión que traerá numerosas novedades, sobre todo en lo que se refiere a su Sistema gestor de salas y dispositivos de red basado en JSF Página 54 integración con AJAX. También se está comenzando a utilizar en numerosas aplicaciones empresariales, ya que permite crear pantallas de usuario bastante complejas con una cierta facilidad, aunque desde luego no es sencillo la primera vez que te enfrentas a este framework. En la nueva versión se espera una mejora sobre el control de las fases del ciclo de vida de la petición que faciliten la creación de componentes JSF complejos que se usan de manera simple. 7.2 JSF Introducción Java Server Faces es una tecnología y framework, producto de las tendencias de desarrollo de software aplicativa basada en web, enfocada para aplicaciones en Java, la cual simplifica el desarrollo de interfaces de usuario en aplicaciones Java EE, usando JSP (Java server pages). Ésta incluye un conjunto de API´s para presentar componentes de una interfaz de usuario y administrar su estado, manejando eventos, validar entrada, definir esquema de navegación y dar soporte para internacionalización y accesibilidad, también contiene dos bibliotecas de etiquetas personalizadas para JSP´s, que nos ayudan con una interfaz de nuestra aplicación, todo esto bajo un modelo de eventos en el lado del servidor donde podemos administrar estados y el uso de Beans. Cabe aclarar que el uso de ésta tecnología solo se encuentra disponible hasta las versión 6.5 de NetBeans. Sistema gestor de salas y dispositivos de red basado en JSF Página 55 7.3 Objetivos de JSF 1. Proporcionar un conjunto de componentes para la interfaz de usuario, incluyendo los elementos estándares de HTML para representar un formulario. Estos componentes se obtendrán de un conjunto básico de clases base que se pueden utilizar para definir componentes nuevos. 2. Definir un conjunto simple de clases base de Java para componentes de la interfaz de usuario, estado de los componentes y eventos de entrada. Estas clases tratarán los aspectos del ciclo de vida de la interfaz de usuario, controlando el estado de un componente durante el ciclo de vida de su página. 2. 3. Proporcionar un modelo de JavaBeans para enviar eventos desde los controles de la interfaz de usuario del lado del cliente a la aplicación del servidor. 4. Definir APIs para la validación de entrada, incluyendo soporte para la validación en el lado del cliente. 5. Especificar un modelo para la internacionalización y localización de la interfaz de usuario. 6. Automatizar la generación de salidas apropiadas para el objetivo del cliente, teniendo en cuenta todos los datos de configuración disponibles del cliente, como versión del navegador... (JavaServer Faces Technology, 2010) Sistema gestor de salas y dispositivos de red basado en JSF Página 56 7.4 Versiones de JSF • JSF 1.0 (11-03-2004) - lanzamiento inicial de las especificaciones de JSF. • JSF 1.1 (27-05-2004) - lanzamiento que solucionaba errores. Sin cambios en las especificaciones ni en el renderkit de HTML. • JSF 1.2 (11-05-2006) - lanzamiento con mejoras y corrección de errores. • JSF 2.0 (12-08-2009) - último lanzamiento. 7.5 • Ventajas de JSF El código JSF con el que creamos las vistas (etiquetas jsp) es muy parecido al HTML estándar. Lo pueden utilizar fácilmente desarrolladores y diseñadores web. • JSF resuelve validaciones, conversiones, mensajes de error e internacionalización • JSF permite introducir javascript en la página, para acelerar la respuesta de la interfaz en el cliente (navegador del usuario). • JSF es extensible, por lo que se pueden desarrollar nuevos componentes a medida, También se puede modificar el comportamiento del framework mediante APIs que controlan su funcionamiento. • JSF forma parte del estándar J2EE, mientras que otras tecnologías para creación de vistas de las aplicaciones no lo forman, como por ejemplo Struts. • JSF dispone de varias implementaciones diferentes, incluyendo un conjunto de etiquetas y APIs estándar que forman el núcleo del framework. Entre estas implementaciones cabe destacar la implementación de referencia de Sun Microsystems, actualmente desarrollada como un proyecto open source, y la implementación del proyecto Apache, MyFaces, dotada de un conjunto de Sistema gestor de salas y dispositivos de red basado en JSF Página 57 extensiones que la hacen muy interesante para el desarrollo de aplicaciones corporativas. • La arquitectura del controlador es más avanzada y flexible. Podremos hacer algunas tareas avanzadas de manera sencilla (por ejemplo, utilizando “phase listeners”). • JSF permite definir la navegación no solo a través de los métodos de navegación de los beans, sino incluso en la propia página (navegación definida en los componentes de la página). • JSF permite recoger los parámetros del formulario de manera más sencilla que Struts, e incorpora un lenguaje de expresiones que lo hace más simple. • JSF soporta la creación de manejadores de eventos asociados a los componentes de la página, lo que dota a dichos componentes de gran potencia. Un ejemplo: creación de combos enlazados, en los que la elección de un elemento en el primer combo obliga a recalcular los elementos disponibles en el segundo combo, por ejemplo, en combos de paises y estados o ciudades. • JSF está pensado para la creación de interfaces de usuario avanzadas. Basta ver los nuevos frameworks extendidos JSF, como Apache MyFaces Trinidad y el resto de frameworks JSF con soporte AJAX. • El desarrollo de JSF está en sus inicios por lo que las nuevas versiones del framework recogen la funcionalidad de versiones anteriores siendo su compatibilidad muy alta, de manera que el mantenimiento de aplicaciones no se ve penalizado por el cambio de versiones. (Cristóbal González Almirón, 2010) Sistema gestor de salas y dispositivos de red basado en JSF Página 58 7.6 Integrando Ajax a JSF JSF es un framework que lanza muchas peticiones al servidor. Para optimizar dicho dialogo están empezando a aparecer implementaciones de JSF que incorporan AJAX en sus etiquetas. Esto permite actualizar los componentes en el navegador del usuario de manera selectiva, sin necesidad de recargar la página completa. La combinación JSF ajax dota a las páginas de gran dinamismo sin complicar el desarrollo, evitando el uso de javascript codificado a mano asegurando un mayor soporte a los navegadores web. En el uso de la aplicación de SICOM lo utilizamos para las consultas en tiempo real, en el momento de teclear las letras se va actualizando en el instante, esta parte será explicada a detalle más adelante. 7.7 Comparativa con prototipos previos al uso de JSF 7.7.1 En Vista En el prototipo inicial hecho para este proyecto, fue enfocado a una aplicación local, usando los elementos básicos de java, y enfocándonos a la parte de la lógica, en esta etapa aun no desarrollábamos la parte de la estética, ya que en esta modalidad de desarrollo existe mayor cantidad de trabajo para el desarrollo de ésta a comparación de JSF, a continuación mostraremos algunas de las ventanas, las cuales ya habíamos implementado la lógica básica para reserva e invitar en conjunto con el uso de Gammu. Sistema gestor de salas y dispositivos de red basado en JSF Página 59 Figura 8.1: Muestra en cómo se creaban los eventos y se agregaban los usuarios al evento y al momento de hacer esto el sistema mandaba mensaje vía celular y correo hechos con mensajes predefinidos. Ahora bien, vista previa de algunas interfaces que usamos con JSF, y como podemos ver a simple vista, hicimos lo mismo pero existe una mayor cantidad de estética, lo cual nos ayudo bastante, sin considerar las demás ventajas que hemos venido comentando. Figura 8.2 Validando usuario incorrecto Sistema gestor de salas y dispositivos de red basado en JSF Página 60 Figura 8.3: Validaciones específicas (se planea validar en tiempo real usando ajax). Estas validaciones cuentan con detalles específicos, por ejemplo si aun correo le hace falta un punto o la arroba o si e su número de celular no son números y no es de 10 dígitos. De tal manera que muchas de las cosas de estética y algunos métodos de programación, se encarga JSF como un estándar dedicado a la solución de aplicaciones web, de tal manera que el desarrollador solo se preocupe por la parte lógica del sistema. Cabe mencionar que estos detalles también son configurables a los parámetros de la computadora, es decir, es capaz de tomar el idioma del sistema operativo para poder desplegar las validaciones en dicho idioma. Como estos detalles, nosotros, si lo hubiéramos hecho, tendríamos que programarlo de tal manera que hiciera algo similar, sin embargo en este caso ya no tenemos que preocuparnos por este tipo de aspectos. Sistema gestor de salas y dispositivos de red basado en JSF Página 61 7.7.2 En el entorno de Desarrollo En la parte de programación usando como IDE Netbeans, es muy similar, pero a diferencia que aquí ya tenemos nuestros beans hechos para cada vista, y un conjunto de herramientas enfocadas a aplicaciones web donde ya solo usamos los métodos necesarios, así también en la parte de manejo de bases de datos, JSF nos provee un conjunto de herramientas como son los “DataProviders” y los “RowSet” los cuales los podemos personalizar. Figura 8.4: Mostramos el entorno de desarrollo en NetBeans, de lado inferior izquierdo tenemos nuestro conjunto de beas, y dentro los “RowSet” con consultas predefinidas de tal manera que se sincronizan con los “DataProvider” para poder hacer uso de estas consultas y vincularlos con los objetos necesarios. Como podemos verificar, muchas de estas herramientas que nos otorga JSF, las tendríamos que programar si lo hiciéramos como una aplicación java clásica, lo podemos verificar con el entorno de desarrollo de nuestros primeros prototipos como se muestra en la siguiente figura. Sistema gestor de salas y dispositivos de red basado en JSF Página 62 Figura 8.5: Entorno de trabajo SIN JSF, enfocado a una aplicación local basado en prototipos previos, haciendo notar la diferencia de herramientas sin JSF. En esta parte tenemos dividida las vistas y la parte lógica en dos paquetes, pero no contamos con Beans de sesión ni ‘Data Privaders’, ‘RowsSets’, herramientas, etc que nos ayudan a mejorar la estética y arquitectura del sistema, de tal manera que las consultas se hacen a muy bajo nivel usando conectores básicos, dando lugar a un mayor porcentaje de errores en las transacciones. Sistema gestor de salas y dispositivos de red basado en JSF Página 63 8. JSF Vs Struts En la propuesta inicial de este proyecto, se plantaba el uso de Struts, pero sin embargo, conforme se fue desarrollando y se uso JSF, se encontraron mejoras en el uso de JSF a comparación de Struts JSF tiene capacidad para ser visto en dispositivos móviles mientras que Struts está limitado a HTML Y http Es mantener que una aplicación escrita en Struts Elementos Gráficos con mayor estética, y más fáciles de usar ya que son muy intuitivos los manejos de eventos, facilita conocer el código de la aplicación cuando se está haciendo un submit. Como si programáramos una aplicación local en un entorno de trabajo como NetBeans, los métodos codificados dan respuesta a botones en específico. También podemos conocer su estado de cada elemento de tal manera que se simplifica el trabajo con los Beans. Expresión Lenguaje (EL), ya que JSF da un lenguaje para acceder las propiedades de los beans y los elementos en las colecciones. JSF es mas reutilizable y orientado a componentes mientras que en Struts no. Struts te obliga a que las clases controller y beans extiendan de una clase en particular ej. Action y que utilicen un método específico x como ececute(…) mientras que en JSF no. Es más fácil usar el archivo de configuración faces-config.xml que struts-config.xml ya que en JSF lo podemos interpretar de manera gráfica con algún IDE, y hacerlo más intuitivo y claro. Sistema gestor de salas y dispositivos de red basado en JSF Página 64 8.1 Demostrando el uso de JSF en comparación de Struts En base estudios realizados para medir la eficiencia del uso de estos frameworks se hizo una prueba a través de la construcción de una pantalla que despliegue un listado y una forma como se muestra en la siguiente figura (Aleman, 2010) Figura 9.1: Pantalla de despliegue de listado usado como prueba para demostrar la eficiencia de Struts en comparación de JSF (Aleman, 2010) Sistema gestor de salas y dispositivos de red basado en JSF Página 65 En la siguiente tabla verificamos la cantidad de Horas Hombre (HH*) de un programador sin experiencia en el respectivo framework mostrado, para hacer la pantalla mostrada en la figura 9.2 STRUTS struts-config.xml • • HH* 3 faces-config.xml • un <form-bean> por cada forma un <action en action-mappings por cada evento + un <forward name por cada success o failure Clases JSF • 5 HH* 1 un <managed-bean x cada value object una <navigation-rule por cada evento (tarea a realizar con click determinado) Clases 3 Action Objeto ActionForm Controlador ValueObject listado.jsp • • • • • 20 listado.xhtml • • Código controlando el tipo de componente a desplegar según la columna. Código para paginar la tabla Una clase action para cada botón, cada una con sus respectivos action mappings Implantar el validator o validar en el método validate de la ActionForm Configurar al menos dos forwards por cada action y los global forwards necesarios para todos • • • 10 dataTable Código JavaScript del componente (sin escribirlo) Dar de alta managed bean en facesconfig.xml Configurar navegación Código de manejo de eventos por componente. menuLateral.jsp 3 menuLateral.xhtml 3 menuInferior.jsp 3 menuInferior.xhtml 1 Pestañas con struts-menu 2 Pestañas con tabbedPane 1 Curva de aprendizaje 40 Curva de aprendizaje 50 Aprender el flujo del request y el response Aprender todo lo que se puede controlar, muchos eventos, vistas, ajax Sistema gestor de salas y dispositivos de red basado en JSF Página 66 Integración con Spring Integración con Spring Acceso a Datos Acceso a Datos TOTAL Horas Hombre con STRUTS TOTAL Horas Hombre JSF 76 69 Figura 9.2: Tabla comparativa entre JSF y Struts en base a las horas Hombre de trabajo hechas a partir de un experimento (Aleman, 2010) Ahora considerando el mantenimiento Mantenimiento STRUTS JSF Cambios de navegación 2 0.25 Cambios de layout, orden de 6 0.5 10 1 componentes Cambios de look and feel Figura 9.3: Tabla comparativa entre JSF y Struts en base a las horas hombre de trabajo para el mantenimiento de una página en base a un experimento (Aleman, 2010) Sistema gestor de salas y dispositivos de red basado en JSF Página 67 8.2 Prime Faces PrimeFaces es una librería open source (licencia apache v2) para Java Server Faces, el objetivo principal de esta es ofrecer un conjunto de componentes ricos para facilitar la creación de aplicaciones web. PrimeFaces se divide principalmente en tres módulos: El primero es el set de componentes para la interfaces de usuario, el segundo modulo llamado Optimus utiliza Guice para poder crear managed beans utilizando anotaciones, simplificar la navegación entre páginas e integrar PrimeFaces con JPA, transacciones y más. Y un tercer modulo llamado FacesTrace permite monitorear aplicaciones JSF. Lo bueno es que los tres módulos son totalmente independientes lo que permite crear cualquier tipo de combinación de frameworks, por ejemplo: PrimeFaces UI + Spring + Hibernate. (java Hispano, 2009) Figura 9.4: PrimeFaces: Barras de progreso en tiempo real (Casos de uso de PrimeFaces, 2010) Sistema gestor de salas y dispositivos de red basado en JSF Página 68 Figura 9.5: Prime Faces: Dashboard con funciones similares a las ventanas de Windows, incluyen efectos gráficos. (Casos de uso de PrimeFaces, 2010) Figura 9.6: PrimeFaces: Posibilidad de uso de menús contextuales sobre imágenes En las figuras 9.4, 9.5, 9.6 solo es una pequeña muestra de las diversas herramientas con las que cuenta PrimeFaces, y cabe mencionar, que se encuentran actualizando este framework de manera constante lanzando más herramientas. La estabilidad que se experimenta al utilizar corriendo este framework, es bastante buena, ya que no se percibe ningún tipo de uso excesivo de recursos sobre el explorador y Sistema gestor de salas y dispositivos de red basado en JSF Página 69 ningún error al utilizarlo. Incluso es más rápido en comparación de otras aplicaciones existentes como FaceBook o Twitter. El uso justificado de ésta herramienta fue cuando nos encontramos con la problemática de proyectar las gráficas de jFreeChar sobre la aplicación, con la necesidad de tener las graficas siempre en tiempo real, sin embargo, los componentes gráficos de Java Server Faces no cuentan con la capacidad de desplegar gráficos de este tipo, por lo que las investigaciones sobre como implementarlo de la mejor manera y nos encontramos con esta herramienta que cuenta con una gran cantidad de utilidades para darle vista, presentación y agilidad a los gráficos de la aplicación web, usando como base Java Server Faces y otros frameworks dependiendo lo que se desee utilizar. Algo que nos impresiono de esta poderosa herramienta, fue la capacidad de ser ejecutada en dispositivos móviles sin tener que programar de manera específica para cada modelo de teléfono o dispositivo. Además de que nos ofrece una librería llamada Touch Faces para agregar propiedades táctiles para todos los dispositivos que cuenten con dicha propiedad (PrimeFaces, 2009). Por el momento esta tecnología es compatible con IPhone, Palm, Android Phones, Nokia S60 y otros mas, gracias a su forma de trabajo estandarizada con el soporte de Java Server Faces. Algunas de las aplicaciones que se encuentran de ejemplo en el sitio se muestran en la figura 9.7 Sistema gestor de salas y dispositivos de red basado en JSF Página 70 Figura 9.7: PrimeFaces: Ejemplos de aplicaciones usando la librería TouchFaces para dispositivos móviles con capacidades de interfaz táctil Figura 9.8: Diagrama de secuencia de PrimeFaces Sistema gestor de salas y dispositivos de red basado en JSF Página 71 Como podemos ver en la figura 9.8, Prime Faces usa como herramienta principal Ajax para responder a eventos que se encuentren del lado de la interfaz, sin embargo las últimas versiones, también responden a eventos disparados por el servidor, como lo es en el caso de la grafica que se desarrollo en el sistema, la cual la veremos a continuación. Para el sistema de SICOM, implementamos esta tecnología en la parte de confirmaciones, desplegando una grafica que muestra el número de usuarios que confirmo para un evento específico, y el número de personas que aún se encuentran por confirmar, la cual se despliega en tiempo real, es decir si alguien envía una confirmación, ya sea por correo electrónico o por mensaje vía teléfono celular, podremos apreciar el cambio en la gráfica sin tener que actualizarla. Como podemos ver en la figura 9.4 y 9.5, estamos simulando un primer caso en donde se ha confirmado un invitado de dos, y en el segundo caso los dos, para verificarlo y comprobarlo se pone aún lado una vista de la base de datos, para ver como es la interacción en tiempo real, considerando que estas confirmaciones se vía mensaje y correo electrónico Sistema gestor de salas y dispositivos de red basado en JSF Página 72 Figura 9.9: Caso 1 demostrando las gráficas en tiempo real, de lado izquierdo es la base de datos actual de las confirmaciones Sistema gestor de salas y dispositivos de red basado en JSF Página 73 Figura 9.10: Caso 2, considerando que los dos invitados confirmaron (detalle de lado izquierdo en la base de datos), se actualiza la grafica de manera automática sin tener que actualizar la pagina del lado derecho Como podemos ver, las herramientas de PrimeFaces, son bastante útiles y poderosas al poder realizar este tipo de transacciones sin necesidad de actualizar la página completa, dejando atrás las viejas maneras de obtener información actualizada de paginas obligando al usuario a estar actualizando de manera manual su página (Como en los inicios de Twitter), haciendo un ambiente de aplicación local y no como una aplicación web. Un detalle que cable aclarar sobre la integración de este framework, es que PrimeFaces trabaja sobre Maven, la cual es una herramienta de software para la gestión y construcción de proyectos Java creada por Jason van Zyl, de Sonatype, en 2002. Es similar en funcionalidad a Apache Ant (y en menor medida a PEAR de PHP y CPAN de Perl), pero tiene un modelo de configuración de construcción más simple, basado en un formato XML. Estuvo integrado inicialmente dentro del proyecto Jakarta pero ahora ya es un proyecto de Sistema gestor de salas y dispositivos de red basado en JSF Página 74 nivel superior de la Apache Software Foundation (Maven, 2010). Pero inicialmente usamos la arquitectura que trae por default Java Server Faces Sistema gestor de salas y dispositivos de red basado en JSF Página 75 9. Diseño de la Implementación 9.1 Esquema de base de datos en la gestión de sala Figura 10.1: Esquema de base de datos para la parte de la gestión de salas de video Conferencias. Este esquema fue planteándose la naturaleza del proyecto, considerando que las salas se encuentran en diferentes lugares, y que dentro de éstos puede haber disntintas salas, asi como departamentos, en los cuales existen empleados, y estos pueden ser invitados de un evento. Como se muestra en la figura 10.1 Sistema gestor de salas y dispositivos de red basado en JSF Página 76 9.2 Descripción de los Triggers Para la base de datos de la gestión de salas Teniendo en cuanta el optimo uso del espacio en memoria y de la usabilidad del sistema, se tuvo que tener en cuenta, el hecho de que una vez que un evento ha pasado éste ha dejado de tener importancia para el usuario, por lo que el tenerlo almacenado se vuelve innecesario. Una solución para esta situación es la de eliminarlo una vez que la fecha dada para el evento ha pasado, para esto se implementaron triggers que hicieran posible esta acción. La estructura de estos triggers, es bastante simple: BEGIN delete from eventos where eventos.fecha<=CURDATE(); END Figura 10.2: Estructura básica de trigger. Esta estructura indica que se eliminaran de la tabla eventos , todos aquellos eventos ahí almacenados que cumplan con la condición fecha<=CURDATE(); Para que esta condición sea verdadera, la fecha del evento tiene que ser menor a la fecha del actual sistema, indicando en otras palabras que el evento ha pasado. Trigger No 1: CREATE TRIGGER `eventosDelete_DesInvitar` BEFORE DELETE ON `eventos` FOR EACH ROW BEGIN delete from invitados where invitados.idEvento=OLD.idEvento; END; Figura 10.3: Trigger que elimina invitaciones del evento que se eliminó Lo que hace es eliminar de la tabla invitados todas aquellas invitaciones al evento que se eliminó, ya que como es obvio no pueden existir invitaciones a un evento que ha dejado de existir, por eso, este trigger se dispara cuando se elimina un evento. Sistema gestor de salas y dispositivos de red basado en JSF Página 77 9.3 Esquema de base de datos en la gestión de dispositivos de red Figura 10.4: Esquema de base de datos para el gestor de direcciones IP Este esquema fue basado a una versión que se tenía en Excel, y fue modificado para su optimización en el sistema, además de que se pasaron todos los registros que se contenía en dicho archivo a mysql. Sistema gestor de salas y dispositivos de red basado en JSF Página 78 9.4 Esquema de base de datos del Demonio de mensajes (Gammu) Figura 10.5: Primera parte del esquema de base de datos del demonio de mensajes de texto para celular (Gammu) (gammu, 2009) En esta parte encontramos la relación “inbox” donde se reciben todos los mensajes entrantes, de la cual usamos para ver quienes han confirmando, y es la manera principal en que interactiamos con el demonio en tiempo real, ya que este almacena los almacena de manera inmediata a esta relación, en base al tiempo de retardo configurado en el archivo de configuración descrito en el capítulo de Gammu. También se encuentra el “outbox” que son todos los mensajes que se encuentran en espera para ser enviados, este incluye atributos que especifican al mensaje si es mensaje corto (1 solo) o si es mensaje largo(al mismo destinatario pero no alcanzaron los caracteres lo por lo que se tiene que dividir en varios Sistema gestor de salas y dispositivos de red basado en JSF Página 79 mensajes), así como numero destino y entre otros atributos más especializados que ya no fue necesario utilizar para esta aplicación. Figura 10.6: Primera parte del esquema de base de datos del demonio de mensajes de texto para celular (Gammu) (gammu, 2009) En la Figura 10.6 se muestran el resto de las relaciones que utiliza nuestro demonio en la cual podemos observar la parte de “sentItems”, en la cual se almacena todos los mensajes enviados incluyendo datos importantes como el mensaje de texto, el teléfono usado (si es que existen varios teléfonos conectados al demonio), el nivel de batería del teléfono usado, numero destino, si hubo error por parte de la red, entre otros detalles técnicos interesantes. Sistema gestor de salas y dispositivos de red basado en JSF Página 80 También está la relación “phones” en la cual se almacena la lista de teléfonos disponibles que pude utilizar el demonio para mandar mensajes y recibir mensajes, en esta se detallan aspectos técnicos en sus atributos, como numero de serie del teléfono usado, IMEI, nivel de señal, nivel de batería, etc, que se va actualizando cada vez que se envía y se recibe un mensaje de texto y cuando se conecta y levanta el demonio. Estas relaciones vienen ya predefinidos junto con el demonio, pero cabe mencionar que se pueden modificar y adecuar según las necesidades, de tal manera que se requiere modificar el código fuente del demonio. Existen otras relaciones menores que usa para cuestiones técnicas, como la versión del demonio, y otras dos que no son relevantes para nuestro uso. 9.5 Diagrama de clases de la Aplicación Dentro del sistema, creamos un conjunto de clases genéricas, donde agrupamos las funciones más frecuentes utilizadas en toda la aplicación, para facilitar su mantenimiento, y crecimiento, dado que el sistema está diseñado en base a la escalabilidad pensando en la expansión e implementación de nuevos módulos dentro de esta aplicación por lo que el conjunto de herramientas lo dividimos en las siguientes clases, tratando de ser los mas explicito e intuitivo. Sistema gestor de salas y dispositivos de red basado en JSF Página 81 Figura 10.7: La clase manejador, la cual gestiona procesos como la proyección, persistencia y manejo de atributos básicos. En la clase de la figura 10.7 incluimos un conjunto de herramientas como la proyección en etiquetas en base a atributos previos asignados, la forma en que lo proyectamos en base a formatos de hora, fecha, minutos, y verificación de la coherencia de los datos para ser mostrados. Sistema gestor de salas y dispositivos de red basado en JSF Página 82 Figura 10.8: Clase Manejador, la cual gestiona la salida de todos los datos a través de componentes visuales. En la clase de la figura 10.8, fue creada con el propósito de administrar todas las proyecciones, así como la obtención de datos y operaciones básicas como limpiar el formulario de páginas. Es decir la lógica de interacción con los componentes visuales fue desarrollada en esta clase de manera intuitiva para que la pueda usar cualquier programador y sea fácil su manteamiento Sistema gestor de salas y dispositivos de red basado en JSF y rehusó. Página 83 Figura 10.9: Clase Validaciones, en la cual se encuentran las validaciones básicas para la entrada de información de las diferentes secciones del sistema. En esta clase(Figura 10.9), básicamente gestionamos la parte de la gestión de validación de entrada de datos, para evitar que existan datos inconsistentes dentro de la base de datos, así como datos nulos que son requeridos para que se complete la transacción. En esta parte consideramos detalles de longitud de datos, caracteres necesarios, y tipo de datos. Cabe mencionar, que existe otra clase de validaciones que mostraremos en la siguiente figura, la cual es más especializada y enfocada a la validación de horarios de las salas, en cuestión de empalmes. Sistema gestor de salas y dispositivos de red basado en JSF Página 84 Figura 10.10: Clase que valida empalmes en la gestión de salas. Una de las clases más importantes, es la de la figura 10.10, ya que consta de un conjunto de reglas para poder aceptar una reservación de sala, considerando que no existan reservaciones en el horario deseado, así como empalmes dentro de una misma hora considerando los minutos y el lugar. Esto lo hace haciendo consultas a la base de datos, para poder verificar en tiempo real si existe algún problema con su reservación y poderlo notificar al usuario. Sistema gestor de salas y dispositivos de red basado en JSF Página 85 Figura 10.11: Clase Utilerías, reúne un conjunto operaciones básicas como búsquedas personalizadas y gestión y conversión de datos. En la figura 10.11 consta de un conjunto de herramientas que facilitan al desarrollador para hacer un conjunto de consultas y despliegues a la interfaz de manera automática, conforme los parámetros que se lo otorgue, esta clase nos ayuda a reducir en gran cantidad el código repetitivo en cuestión de consultas, ahorrando tiempo de forma paralela en la implementación de todo el proceso de una consulta. 9.6 Diagrama de clases para la gestión de dispositivos de red En la gestión de dispositivos de red, dividimos las direcciones IP en sus respectivos octetos para poder almacenarnos en las bases de datos de tal manera que no existieran registros repetidos. Para esto en el primer Octeto lo almacenamos en una relación como la familia cero, en el segundo octeto, tiene un apuntado al primer octeto, y de la misma manera para el tercer octeto, el cual tiene un apuntador a la relación de la familia anterior. Las relaciones se muestran en la figura 10.12 Sistema gestor de salas y dispositivos de red basado en JSF Página 86 Figura 10.12: Diagrama de clases de las familias de octetos para la gestión de direcciones IP Finalmente el ultimo octeto viene definido por esta ultima relación, en la apuntamos al tercer octeto y así se van sucesivamente hasta llegar al primer octeto. Como se muestra en la figura 10.13 Figura 10.13 Diagrama de clases para el último octeto de la gestión de dispositivos de red. De esta manera estamos garantizando que no va existir redundancia en el almacenamiento, lo cual nos permite ahorrar espacio y mantener una lógica transparente. Por seguridad del sistema no mostramos el usuario y contraseña de la base de datos. Sistema gestor de salas y dispositivos de red basado en JSF Página 87 9.7 Funcionamiento del gestor de dispositivos de red En el menú del administrador del sistema, tiene una sección de administración de direcciones IP como TAB, en el cual cuenta con la funcionalidad principal de dar de alta dispositivos de red, con la función de sugerir una dirección IP disponible para la familia de octetos seleccionada, o de lo contrario, el usuario puede escoger una con la seguridad de que el sistema valida si se encuentra libre, de lo contrario el sistema notifica en dado caso de que se encuentre ya ocupada. También existe la validación en la parte de la dirección MAC. Una vista previa de este sistema se muestra en la figura 10.7.1 Figura 10.7.1: Sistema gestor de dispositivos de red También se pueden dar altas y bajas de las familias de octetos, con sus respectivas validaciones en los rangos que éstos pueden ocupar conforme a los estándares de redes. Como lo podemos ver en las opciones del menú derecho de la figura 10.7.1 Sistema gestor de salas y dispositivos de red basado en JSF Página 88 10. Implementación del sistema gestor de salas y dispositivos de red 10.1 Introducción El sistema tiene un modelo básico, administrador y usuarios. Presentando una pantalla de identificación, donde el usuario escribe su seudónimo y contraseña, el sistema automáticamente reconoce el tipo de usuario y el sistema muestra la respectiva interfaz que le corresponde dependiendo si es administrador o si es usuario, ya que varían en los privilegios de éstas. Dentro un usuario puede reservar salas, en un horario específico y en un lugar, para esto se implementaron una serie de validaciones donde no exista ningún empalme con otro evento considerando la fecha, horarios y lugar. En el momento en que el usuario reserva puede ahora invitar al personal al evento en otra sección del programa, donde se selecciona el evento y los participantes del evento, en esta fase se valida de que usuarios ya se encuentren en otros eventos en ese mismo horario. En este paso se notifica a los invitados del evento vía correo electrónico y mensaje de texto por celular. En la parte del administrador, existe la posibilidad de creación de usuarios así como su eliminación y los eventos creados se van eliminando después de que pasaron de manera automática. Sistema gestor de salas y dispositivos de red basado en JSF Página 89 10.2 Identificación del usuario Figura 11.1: Pantalla de identificación para el usuario 10.3 Interfaz de Administrador En esta parte a diferencia del usuario que no es administrador nos aparece un menú extra del lado derecho con opciones y privilegios de administrador. Figura 11.2: interfaz de administrador. Sistema gestor de salas y dispositivos de red basado en JSF Página 90 10.4 Alta de un evento En esta parte llenamos los datos necesarios para un evento como, nombre del evento, fecha hora de inicio y hora fin, así como lugar. Figura 11.3: Alta de eventos En esta parte cabe la posibilidad de ver los eventos que se encuentran ya para la fecha indicada, así no sería fácil prever algún inconveniente para el evento que deseamos planear como se muestra en la siguiente imagen Figura 11.4 Verificación de eventos ya establecidos para una fecha dada antes de dar de alta un evento Existen validaciones en caso de empalme y de lógica de horario como (ej. La hora fin debe ser mayor a la hora de inicio). Sistema gestor de salas y dispositivos de red basado en JSF Página 91 Figura 11.5: Probando validaciones para dar de alta un evento Sistema gestor de salas y dispositivos de red basado en JSF Página 92 10.5 Alta de usuario En alta de usuario existen también una serie de validaciones básicas, y cuenta con un estándar de seguridad el cual consiste en que el administrador asigna contraseña por default pero el usuario final y el usuario final posteriormente debe cambiar esta contraseña. Figura 11.6: Alta de usuario, probando las validaciones básicas Sistema gestor de salas y dispositivos de red basado en JSF Página 93 10.6 Invitaciones En esta parte consta de dos etapas, la primera es buscar primero el evento a cual vamos a invitar, y posteriormente buscamos los invitados. En esta parte para evitar que el usuario navegue sobre la lista de eventos disponibles, usamos una búsqueda directa, es decir no aparece ningún registro hasta que el usuario empieza a teclar el evento, (esto se hizo con ajax) y en tiempo real se empiezan a filtrar los registros que tengan que ver con el atributo con el cual se esté buscando. El evento se puede buscar por nombre, fecha, ubicación, horario y fecha y horario. Figura 11.7: Buscando eventos por nombre para invitar al personal Sistema gestor de salas y dispositivos de red basado en JSF Página 94 En el paso siguiente, consiste ahora en verificar la lista de invitados, en esta parte se valida de que un invitado ya este programado en algún otro horario y se empalme. Al hacerle clic en guardar evento se habilita el Tab de buscar invitados y nos re direcciona a ese Tab de manera automática deshabilitando el tab de Buscar evento. En esta parte de la misma manera podemos hacer consultas con solo teclear el nombre o el apellido patero, materno, buscar por teléfono celular, y por correo electrónico principal y alterno. Para esto podemos navegar fácilmente entre los tabs que se presentan y el usuario pueda escoger su búsqueda preferente. Y en el momento en que el usuario da clic en invitar se valida y se almacena. Posteriormente se le va notificando. Figura 11.8: Buscando invitados al evento previamente seleccionado Sistema gestor de salas y dispositivos de red basado en JSF Página 95 10.7 Alta de lugar El administrador puede dar de alta tanto lugares como salas, a cada sala le corresponde un lugar y esta parte se encuentra también validada. Figura 11.9: Probando las validaciones básicas al dar de alta un evento. 10.8 Alta de sala Para el alta de una sala se necesita un lugar de manera obligatoria el cual se debe especificar en la sección del punto 10.6. También cuenta con las validaciones básicas. Figura 11.10: Dando de alta una sala de conferencias. Sistema gestor de salas y dispositivos de red basado en JSF Página 96 11. Evaluación y Conclusiones 11.1 Con respecto a las experiencias aprendidas La experiencia de el poder haber aprendido algo más, de aquello que se imparte en la universidad fue la parte más importante de este proyecto, al poder usar un framework comercial basado en las tendencias de desarrollo de aplicaciones web más actuales y que muchas veces nos sentimos solos al presentarnos problemas de desarrollo que era difícil de encontrar la solución ya que muchos aun no pisaban esos campos en el uso del framework (como el uso de gammu en Windows). También fue importante ver las ventajas y desventajas que JSF y aventurarse a usar este tipo de frameworks que nos da la experiencia necesaria y la habilidad de manejo de este tipo de tecnologías para poder fácilmente migrar y evolucionar a las tendencias, ya que existen elementos en común entre los diferentes lenguajes. Algo muy importante que nos dimos cuenta, es no cerrarse con un solo lenguaje, si no explorar las diferentes herramientas en el uso de frameworks que se encuentran en desarrollo ya que nos abre un mundo de posibilidades y nos da la capacidad de responde a las necesidades con un nivel competitivo impresionante. 11.2 Con respecto al uso de los frameworks En el momento en que desarrollábamos el software de SICOM para la solución de sus necesidades nos podemos dar cuenta que podemos hacer una gran cantidad de cosas, por ejemplo tan solo del uso del demonio de gammu, podemos hacer sistemas inteligentes con interacción de mensajes a celular como sistemas de automatización para casas, incluyendo alertas, o un sistema de negocios similares a los que pasan en televisión (manda mensaje a Sistema gestor de salas y dispositivos de red basado en JSF Página 97 tal número y te regreso el tono de tal artista), y entre otras miles de aplicaciones que se pueden desarrollar no precisamente con java sino con cualquier sistema que pueda interactuar con MySQL. Con respecto a al uso de Java Server Faces, nos pareció una herramienta bastante útil con grandes capacidades de desarrollo, y como toda tecnología nueva, aun existe un mundo por recorrer y mejora, ya que aun cuenta con una serie de “bus” que han ido corrigiendo en sus versiones más recientes, dando la confianza a muchas empresas a nivel carrier para delegar sus necesidades en este tipo de aplicaciones que ayudan a enfocarse solo a la parte lógica de nuestro sistema, dejando todo lo demás como un hecho en el que podemos confiar gracias a que es un estándar, sin embargo podemos decir que no es la tecnología más poderosa hoy en día, pero si una de las más completas a las que le apostaríamos un gran futuro. También cabe mencionar, que la utilización de un framework nuevo y recién salido, es una experiencia de aprendizaje donde aplicas prácticamente todos los conocimientos de arquitectura y diseño de la aplicación para poder dar solución cientos de problematicas que se presentan en este tipo de herramientas, como lo es en el caso de PrimeFaces, ya que trabajamos prácticamente con frameworks en los cuales utilizamos componentes que solo tenían unos meses de haber salido, y que el caso especifico de PrimeFaces se tuvo que hacer una adaptación a nuestra arquitectura para no convertir todo nuestro proyecto a Maven como lo implementa en todos los ejemplos de Prime Faces en su portal, lo cual fue un reto bastante interesante ya que gracias a la experiencia que nos dio Java Server Faces, fue posible hacer esto, y que durante el camino nos encontramos a mucha gente en foros, pidiendo ayuda sobre la misma problemática, lo cual nos enorgullece haber podido resuelto Sistema gestor de salas y dispositivos de red basado en JSF Página 98 esta cuestión de arquitecturas, ya que iba a representar un gran esfuerzo pasar todo nuestro proyecto actual a un proyecto nuevo basado en Maven. Cabe mencionar que existen plugins para IDE’s como eclipse que ayudan a convertir proyectos java a proyectos en Maven, sin embargo, como hicimos uso de NetBeans, se tuvo que implementar PrimeFaces de manera más primitiva, integrando los jar’s y modificando archivos XML para que ayudaran a usar este framework sin rehacer todo en Maven. Sistema gestor de salas y dispositivos de red basado en JSF Página 99 12. Trabajos a Futuro El desarrollo de este proyecto, aún cuenta con una gran cantidad de desarrollo, implementado mas frameworks, y especializándose de forma paralela en la parte de desarrollo para dispositivos móviles. Ya que como vimos en el desarrollo de esta plicacion, podemos integrar nuevas funcionalidades y capcidades de manera personalizada, además de que es un framework que se encuentra aún en pleno desarrollo, existe la posibilidad de escalabilidad sin preocuparse por tener que alterar o modificar el sistema en caso dado de alguna actualización de Java Server Faces. Por lo que nos da la plena confianza de seguir trabajando e implementado tecnologías complementarias como JavaFX, jfreeChart, Ajax, POJOs, etc. Que son usadas hoy en día para el desarrollo de sitios basados en aplicaciones web, ampliando grandes capacidades de desarrollo gracias a la interoperabilidad, dando poderosas herramientas para la gestión de nuestra aplicación, haciendo más fácil el desarrollo e incrementando la productividad, calidad y eficiencia en todos los aspectos que involucra el desarrollo de una aplicación en Java Server Faces por lo que es considerable un futuro de grandes desarrollos en este framework, y en especial, en este proyecto, existe la posibilidad de integrar mas tecnologías como las mencionadas anteriormente, haciendo un sistema poderoso, práctico y sobretodo novedoso para el usuario final dando evolución a la nueva era de las aplicaciones sobre la web 2.0. Sistema gestor de salas y dispositivos de red basado en JSF Página 100 Bibliografía (2010). Recuperado el Marzo de 2010, de Cristóbal González Almirón: http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=IntroduccionJSFJava Aleman, I. N. (26 de Enero de 2010). STRUTS o JSF No Existe Un único. Recuperado el 22 de Marzo de 2010, de http://www.scribd.com/doc/27325581/STRUTS-o-JSF-No-ExisteUn-unico Casos de uso de PrimeFaces. (2010). Recuperado el Mayo de 2010, de http://www.primefaces.org:8080/prime-showcase/ui/dashboard.jsf cisco. (11 de Octubre de 2009). Recuperado el 11 de Octubre de 2009, de http://www.cisco.com/en/US/netsol/ns811/networking_solutions_solution_category.html Daniweb. (2010). Recuperado el Enero de 2010, de http://www.daniweb.com/forums/thread111719.html DB2 Express-C. (11 de Octubre de 2009). Recuperado el 20 de Septiembre de 2009, de http://www-01.ibm.com/software/data/db2/express/ Fags. (13 de febrero de 2009). Recuperado el enero de 2010, de Javabeat: http://74.125.113.132/search?q=cache:2mJHuPWpy40J:www.javabeat.net/articles/print.p hp%3Farticle_id%3D105+netbeans+login+jsf+Handle+HttpSession.invalidate%28%29+ redirect&cd=3&hl=en&ct=clnk gammu. (2009). Obtenido de http://cihar.com/gammu/gammu-smsd-tables.7.html Gammu. (2010). Recuperado el Diciembre de 2009, de http://wammu.eu/gammu/ GNU Operating System. (Octubre de 2009). Recuperado el 11 de Octubre de 2009, de http://www.gnu.org/licenses/licenses.es.html IceFaces. (2010). Recuperado el febrero de 2010, de http://www.icefaces.org/JForum/posts/list/3111.page Intelimax. (2009). RED DE TELECOMUNICACIONES SICOM 2009. Puebla, Pue, México. Sistema gestor de salas y dispositivos de red basado en JSF Página 101 Java Community Proces. (2010). Recuperado el Enero de 2010, de http://jcp.org/en/jsr/detail?id=252 java Hispano. (19 de 5 de 2009). Recuperado el mayo de 2010, de http://www.javahispano.org/contenidos/es/conozcamos_primefaces/ JavaServer Faces Technology. (2010). Recuperado el Enero de 2010, de Java Platform, Enterprise Edition (Java EE) : http://java.sun.com/javaee/javaserverfaces/ Livevalidation. (2009). Recuperado el 2010, de http://livevalidation.com/examples#exampleHomepage Martínez, H. H. (14 de agosto de 2009). NeosSfotware. Obtenido de http://neossoftware.260mb.com/2009/08/primeros-pasos-en-jsf-20/ Maven. (2010). Recuperado el Mayo de 2010, de http://maven.apache.org/maven-1.x/ Netbeans. (2010). Recuperado el febrero de 2010, de http://netbeans.org/kb/docs/web/jsfjpa-crud-code2.html Netbeans. (2010). Recuperado el febrero de 2010, de http://netbeans.org/kb/65/web/fileupload.html OCPSOFT. (23 de JULY de 2009). Obtenido de SPRING SECURITY: http://ocpsoft.com/java/jsf-java/spring-security-what-happens-after-you-log-in/ ORACLE. (s.f.). Recuperado el febrero de 2010, de http://downloaduk.oracle.com/docs/cd/B32110_01/webcenter.1013/b31072/tt_security.htm PrimeFaces. (2009). Recuperado el Mayo de 2010, de http://www.primefaces.org:8080/prime-showcase/touch/index.jsf Sánchez, B. B. (s.f.). Adictos Al trabajo. Obtenido de http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=entornosJSF Sistema gestor de salas y dispositivos de red basado en JSF Página 102 Sitio de descargas de software. (11 de Octubre de 2009). Recuperado el 11 de Octubre de 2009, de http://www.freedownloadmanager.org/es/downloads/Directorio_Activo_Mejorado_58747_ p/ whatsupgold. (20 de noviembre de 2009). Recuperado el 20 de noviembre de 2009, de http://www.whatsupgold.com/ Wik de Gammu. (11 de noviembre de 2009). Recuperado el 11 de noviembre de 2009, de http://www.gammu.org/wiki/index.php?title=Main_Page WiMAX Industry. (11 de Octubre de 2009). Recuperado el 11 de Octubre de 2000, de http://www.wimax-industry.com/cl/wimaxequipmentmanufacturers.htm (2010). Recuperado el Marzo de 2010, de Cristóbal González Almirón: http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=IntroduccionJSFJava Aleman, I. N. (26 de Enero de 2010). STRUTS o JSF No Existe Un único. Recuperado el 22 de Marzo de 2010, de http://www.scribd.com/doc/27325581/STRUTS-o-JSF-No-Existe-Ununico Casos de uso de PrimeFaces. (2010). Recuperado el Mayo de 2010, de http://www.primefaces.org:8080/prime-showcase/ui/dashboard.jsf cisco. (11 de Octubre de 2009). Recuperado el 11 de Octubre de 2009, de http://www.cisco.com/en/US/netsol/ns811/networking_solutions_solution_category.html Daniweb. (2010). Recuperado el Enero de 2010, de http://www.daniweb.com/forums/thread111719.html DB2 Express-C. (11 de Octubre de 2009). Recuperado el 20 de Septiembre de 2009, de http://www-01.ibm.com/software/data/db2/express/ Fags. (13 de febrero de 2009). Recuperado el enero de 2010, de Javabeat: http://74.125.113.132/search?q=cache:2mJHuPWpy40J:www.javabeat.net/articles/print.p hp%3Farticle_id%3D105+netbeans+login+jsf+Handle+HttpSession.invalidate%28%29+ Sistema gestor de salas y dispositivos de red basado en JSF Página 103 redirect&cd=3&hl=en&ct=clnk GNU Operating System. (Octubre de 2009). Recuperado el 11 de Octubre de 2009, de http://www.gnu.org/licenses/licenses.es.html IceFaces. (2010). Recuperado el febrero de 2010, de http://www.icefaces.org/JForum/posts/list/3111.page Intelimax. (2009). RED DE TELECOMUNICACIONES SICOM 2009. Puebla, Pue, México. Java Community Proces. (2010). Recuperado el Enero de 2010, de http://jcp.org/en/jsr/detail?id=252 java Hispano. (19 de 5 de 2009). Recuperado el mayo de 2010, de http://www.javahispano.org/contenidos/es/conozcamos_primefaces/ JavaServer Faces Technology. (2010). Recuperado el Enero de 2010, de Java Platform, Enterprise Edition (Java EE) : http://java.sun.com/javaee/javaserverfaces/ Livevalidation. (2009). Recuperado el 2010, de http://livevalidation.com/examples#exampleHomepage Martínez, H. H. (14 de agosto de 2009). NeosSfotware. Obtenido de http://neossoftware.260mb.com/2009/08/primeros-pasos-en-jsf-20/ Maven. (2010). Recuperado el Mayo de 2010, de http://maven.apache.org/maven-1.x/ Netbeans. (2010). Recuperado el febrero de 2010, de http://netbeans.org/kb/docs/web/jsfjpa-crud-code2.html Netbeans. (2010). Recuperado el febrero de 2010, de http://netbeans.org/kb/65/web/fileupload.html OCPSOFT. (23 de JULY de 2009). Obtenido de SPRING SECURITY: http://ocpsoft.com/java/jsf-java/spring-security-what-happens-after-you-log-in/ Sistema gestor de salas y dispositivos de red basado en JSF Página 104 ORACLE. (s.f.). Recuperado el febrero de 2010, de http://downloaduk.oracle.com/docs/cd/B32110_01/webcenter.1013/b31072/tt_security.htm PrimeFaces. (2009). Recuperado el Mayo de 2010, de http://www.primefaces.org:8080/prime-showcase/touch/index.jsf Sánchez, B. B. (s.f.). Adictos Al trabajo. Obtenido de http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=entornosJSF Sitio de descargas de software. (11 de Octubre de 2009). Recuperado el 11 de Octubre de 2009, de http://www.freedownloadmanager.org/es/downloads/Directorio_Activo_Mejorado_58747_ p/ whatsupgold. (20 de noviembre de 2009). Recuperado el 20 de noviembre de 2009, de http://www.whatsupgold.com/ Wik de Gammu. (11 de noviembre de 2009). Recuperado el 11 de noviembre de 2009, de http://www.gammu.org/wiki/index.php?title=Main_Page WiMAX Industry. (11 de Octubre de 2009). Recuperado el 11 de Octubre de 2000, de http://www.wimax-industry.com/cl/wimaxequipmentmanufacturers.htm IceFaces. (2010). Recuperado el febrero de 2010, de http://www.icefaces.org/JForum/posts/list/3111.page Sistema gestor de salas y dispositivos de red basado en JSF Página 105 Apéndice A: Otras corridas del software http://web.uvic.ca/~rafaelr/Thesis/Video.swf (Parte 1) http://web.uvic.ca/~rafaelr/Thesis/Video_1.swf (Parte 2) En el video se muestra el alta de usuarios, haciendo énfasis en las validaciones lógicas, como campos requeridos, así como en el atributo de número telefónico debe ser de 10 dígitos, el correo electrónico debe tener una arroba y un punto, etc. En el momento de hacer modificaciones también se valida estos mismos capos para evitar inconsistencias en la base de datos cuidando que en cualquier parte del sistema donde se tenga algún tipo de edición se evite la posibilidad de que exista alguna forma de introducir datos no validos. En la parte de de altas de salas, en primera instancia, se muestra cómo es que en la fecha y lugar seleccionado se despliegan un conjunto de horarios ya establecidos para dar una hora valida y no estar “atinando” a una posible hora libre o estar navegando a otra página que te muestre el horario (como es en el caso del sistema de reserva para el Aula magna del CIRIA), haciéndolo más práctico y cómodo para el usuario, y a continuación de esta acción, se demuestra cómo es que el sistema es capaz de validar los horarios en caso de empalme avisando al usuario con que evento se está empalmando para que lo pueda identificar de manera fácil en la tabla. Estas validaciones se hacen de la misma forma en la parte de modificaciones de usuarios y en caso de eliminar un evento se eliminan las invitaciones a los usuarios que estaban asociadas a ese evento para conservar la consistencia en la tabla, esto fue hecho a través de los triggers mencionados en el capítulo del diseño. Sistema gestor de salas y dispositivos de red basado en JSF Página 106 En todos los casos se hacen consultas por todos los campos posibles y utilizados, haciendo las respectivas validaciones. Apéndice B: Video de grafica con PrimeFaces en el sistema de SICOM, funcionando en tiempo real http://web.uvic.ca/~rafaelr/Chart.swf En el link anterior se muestra una simulación de confirmación de invitados al evento, agregando a la base de datos las confirmaciones de manera manual con el fin de ver esa interacción, cabe mencionar que esta acción el sistema la hace de manera automática por medio de correo electrónico y de mensajes a través de mensajes de teléfono celular. Sistema gestor de salas y dispositivos de red basado en JSF Página 107