Capítulo 5. Implementación del Sistema de Inscripciones



Documentos relacionados
Implementación CAPÍTULO 4

Capitulo 5. Implementación del sistema MDM

SIGAN 1.0 SISTEMA DE INFORMACIÓN DE GESTIÓN ADMINISTRATIVA DE NÓMINA

Nuevas funciones y características de espacio Aspel 4.0

Ambiente Virtual de Comercio Electrónico B2B para la Comunidad Virtual de Negocios del departamento del Cauca

Rafael Doña Gil. Enginyeria Tècnica en Informàtica de Sistemes. Consultor: Jose Juan Rodríguez

Arquitectura Cliente/Servidor

Complejo Deportivo UCA. República Saharaui s/n Puerto Real (Cádiz) Tel Fax

GUÍA TÉCNICA. Desarrollo de Proyectos en Plataforma Liferay en el Gobierno de Extremadura

Manual de Usuario del Sistema de control de Turnos

SISTH-ULA Versión 2.0 DIRECCIÓN DE SERVICIOS DE INFORMACIÓN ADMINISTRATIVA UNIVERSIDAD DE LOS ANDES

SurfCop. Libro blanco técnico

Capítulo III. Análisis y diseño.

Descripción de Arquitectura Repositorio de metadatos de componentes de software

Documento de Arquitectura de Software. KunaySoft. Autores: Juan Camilo González Vargas. Javier Leonardo Parra Laguna

Modulo I. Introducción a la Programación Web. 1.1 Servidor Web.

Desarrollo de un Sistema de Gestión de Proyectos mediante el framework GWT

Manual de Usuario Comprador Módulo de Compras

CAPÍTULO 5 IMPLEMENTACIÓN DEL SISTEMA

Capítulo VI. Conclusiones. En este capítulo abordaremos la comparación de las características principales y

Capitulo VI. Conclusiones.

CIMA. MANUAL DE USUARIO

Instalación y configuración inicial del sistema SIU-Kolla Versión 3.0.0

Programación de Aplicaciones Tarea 2 Curso 2015

BANCA ELECTRÓNICA PARA EMPRESAS GUÍA DE APLICACIONES / SISTEMAS PARA CLIENTES USUARIO FINAL. PAGO DE IMPUESTOS y SERVICIOS

Sistema de Mensajería Empresarial para generación Masiva de DTE

Estándares para el Uso de Herramientas de Desarrollo y Plataformas de Aplicaciones Web

Proyectos de Innovación Docente

Capítulo 2 Análisis del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

BackflipSD Modelo de Diseño

USO DEL CLIENTE

P/. Factura Electrónica D/. Manual de Usuario Proveedores

Proyecto final de curso Android: Programación de aplicaciones (3ª edición online, octubre-enero 2013)

GUÍA BÁSICA DE USO DEL SISTEMA RED

Capítulo II. Marco teórico.

INTEGRACIÓN HERMES POSITRÓN

Generador GeneXus JAVA

MANUAL PARA EL PROFESOR

Software para Seguimiento de Clientes. Descripción del Producto

TEMA: DESARROLLO DE APLICACIONES WEB INTERACTIVAS UTILIZANDO LA TÉCNICA AJAX AUTOR: MERY SUSANA ZAMBONINO BAUTISTA

Bases de Datos. Marta Elena Zorrilla Pantaleón Rafael Duque Medina DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA

11/06/2011. Alumno: José Antonio García Andreu Tutor: Jairo Sarrias Guzman

APLICACIONES WEB GOOGLE ANAYLITICS

Wiip Surveillance. Sistema de gestión de rondas de vigilancia. Wiip Systems C.B. S.L

El mediador es un programa escrito en Java diseñado para interactuar con un servidor

Capítulo 5. Cliente-Servidor.

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

MANUAL DE USUARIO SECTOR PRIVADO (RESUMEN)

Capítulo 5: Pruebas y evaluación del sistema. A continuación se muestran una serie de pruebas propuestas para evaluar varias

Manual de Usuario (Instancia Normativa)

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE

Guía de migración a firma HMAC SHA256 Conexión por Redirección

LENGUAJES DE PROGRAMACIÓN WEB (PHP1, HTML52)

QUÉ ES HOMEBASE? Encontrar Libros

Acuerdo de aprobación de la Normativa Básica de Correo Electrónico de la Universidad Miguel Hernández.

Manual de configuración de Adobe Reader para la validación de la firma de un documento Versión 1.0

Visión General de GXportal. Última actualización: 2009

DG.CO.P00.E03-Manual de Usuario Carpeta Ciudadana

Sharpdesk V3.5. Guía de instalación: Edición con clave de producto. Versión 1.0

Desarrollo Web en Entorno Servidor

Manual del usuario. Flash Point Genius. FLASH POINT GENIUS: Programación Serial para turismos

32.- Manejo de Capacitación

Preguntas Frecuentes. Plataforma ScienTI. Aplicativos CvLAC y GrupLAC

Desarrollo de Aplicaciones Web con JAVA: J2EE y Struts

UF0320: Aplicaciones informáticas de tratamiento de textos

Manual de usuario. Curso Móvil 1.0

MODULO VALORIZACIONE DE TRANSFERENCIAS DE ENERGÍA MANUAL DE USUARIO AGENTES. Preparado por : DEPARTAMENTO DE TECNOLOGIA DE

Diseño y desarrollo de el Generador de Tiendas virtuales usando Líneas de Diseño de productos

Manual de Usuario (Ejecutoras)

LIESH. Fco. Javier Bohórquez Ogalla

El módulo consta de una serie de unidades en las que se especifican los objetivos, contenidos y actividades.

Instalación y Configuración del IIS para la facturación WEB en Aspel-SAE 6.0

Herramientas. web 2.0. Dropbox es una aplicación gratuita que permite compartir archivos entre diferentes dispositivos.

PLATAFORMA VIRTUAL PARA LA PUBLICACIÓN N DE EVENTOS. Ing. Alberto Nogueira Keeling MSc. Elizabeth Au Capo Citmatel 2003

4. DESARROLLO DEL SISTEMA DE INFORMACIÓN REGISTRAL AUTOMATIZADO

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

SISTEMA ETAP en línea Estándares Tecnológicos para la Administración Pública

Manual para Empresas Prácticas Curriculares

III. Propuesta de solución

Ayuda para el usuario de Websense Secure Messaging

Manual para la utilización del Sistema de Solicitudes Electrónicas del Poder Judicial del Estado de Baja California Funcionalidad y Características

GUIA PARA EL USO DE E-BANKING. Transacciones a un solo clic!

1 MANUAL DE USUARIO DE LAS FUNCIONALIDADES WEB EN PARA EL VISADO DIGITAL

POLÍTICA DE COOKIES. A continuación explicaremos qué son las cookies y los tipos de cookies que utiliza la Fundación Fuertes en su sitio Web:

Región de Murcia Consejería de Educación, Ciencia e Investigación. Manual Usuario FCT

Capítulo 2. Planteamiento del problema. Capítulo 2 Planteamiento del problema

Infraestructura Tecnológica. Sesión 1: Infraestructura de servidores

SISTEMA InfoSGA Manual de Actualización Mensajeros Radio Worldwide C.A Código Postal 1060

SISTEMA DE APARTADO DE SALAS PARA EVENTOS

MANUAL PARA LA UTILIZACIÓ N ADECUADA DE 2016 DISPÓSITIVÓS MÓ VILES. Sistema de Alerta Temprana para la Roya del Café

Introducción al Desarrollo de Aplicaciones Web D R A. M A R I C E L A B R A V O

Capitulo III. Diseño del Sistema.

Enviar solicitud. Procedimiento

Xerox 700 Digital Color Press con Integrated Fiery Color Server. Impresión de datos variables

Sistemas de control de acceso basados en lectura de matrículas

ATLAS MANUAL DE USUARIO ARBOL ACCESIBLE

BrowserSQL 4 versión 2 - TUTORIAL

ACUEDUCTOS VEREDALES

Plataforma de expediente

Transcripción:

Capítulo 5. Implementación del Sistema de Inscripciones 5.1 Tecnologías utilizadas en el desarrollo En esta sección se exponen brevemente las tecnologías utilizadas en la implementación de los diferentes componentes del sistema de inscripciones, para ello analizamos los componentes de cada capa de la arquitectura de 3 tercios expuesta en el capítulo anterior. 5.1.1 Cliente El componente AJAX del sistema se encuentra propiamente en el lado del cliente, puesto que en él se integran los distintos tipos de herramientas mencionados en el capítulo 2 de este documento. Debido a lo anterior, la capa del sistema de inscripciones correspondiente al cliente fue implementada utilizando CSS y HTML en la parte de la visualización, DOM como herramienta de actualización, XMLHttpRequest como elemento encargado de las comunicaciones asíncronas, JSON para dar formato a los datos intercambiados y finalmente JavaScript como herramienta integradora y constitutiva del motor AJAX. A continuación se presenta una lista con los archivos de la aplicación que corresponden al lado del cliente. Ajax.js Archivo JavaScript encargado de la creación del objeto de comunicación asíncrona XMLHttpRequest. Cargando.js Archivo JavaScript utilizado para desplegar el mensaje que indica que la página principal del sistema se está cargando una vez que el usuario ha ingresado a la aplicación. 72

Imprimir.js Archivo JavaScript que abre una nueva ventana del navegador con la vista tipo horario de un estudiante cuando éste selecciona la opción imprimir horario. Visual.js Archivo JavaScript que se encarga de las operaciones de envío y recepción de datos del servidor y la actualización de la interfaz de inscripciones. Este puede considerarse como el principal componente del motor AJAX del sistema desarrollado. HojaEstilos.css Archivo CSS que contiene las reglas en las que se definen todos los estilos utilizados en las páginas web del sistema. Imprimir.css Archivo CSS con las reglas de visualización e impresión para el horario del estudiante. Expiro.jsp Archivo de tipo Java Servlet Page utilizado cuando la sesión del usuario caduca por inactividad durante un tiempo mayor a 15 minutos. Se usa para volver a la página de entrada del sistema. Index.jsp Archivo de tipo JSP que constituye la página de entrada al sistema de inscripciones. Inscribir.jsp Archivo de tipo JSP que constituye la página principal del sistema, a través de la cual se tiene acceso a todas las funciones ofrecidas por éste. Logout.jsp Archivo de tipo JSP utilizado para cerrar la sesión del usuario y volver a la página de entrada cuando elige la opción de salir del sistema. 73

Fig. 5.1: Principales componentes en la capa del cliente 5.1.2 Servidor web La segunda capa del sistema corresponde al servidor web y tiene como actor principal al contenedor web Apache Tomcat, que implementa la especificación de las tecnologías Java Servlet y Java Servlet Pages y provee una plataforma para que código Java del lado del servidor se integre a una aplicación web. Tomcat puede ser descargado como contenedor individual directamente desde el sitio de la Fundación Apache (http://tomcat.apache.org), pero también existe la opción de adquirirlo como módulo del servidor multiplataforma XAMPP (http://www.apachefriends.org). XAMPP es un servidor formado por las tecnologías Apache Server, MySQL, PHP y Perl que tiene la ventaja de instalarse rápida y fácilmente, logrando una configuración ideal de todos sus componentes. Éste resulta una opción atractiva frente a la instalación individual de los elementos que lo conforman, puesto que dicho proceso resulta complicado, sobretodo para obtener una configuración que garantice la correcta colaboración de las distintas tecnologías. Asimismo XAMPP cuenta con varios módulos 74

que pueden agregarse a una instalación existente, para aumentar la funcionalidad del servidor, como es el caso del contenedor Apache Tomcat. Durante el desarrollo del sistema de inscripciones se utilizó el módulo Tomcat del software XAMPP para desempeñar la función de servidor web. En general se mantuvo la configuración de la instalación, aunque en algunos casos se realizaron cambios para garantizar el máximo desempeño en los casos en que el sistema trabaja sometido a grandes cargas. Como ejemplo de esto, en la figura 5.1 se puede observar una parte del archivo de configuración (server.xml) del contenedor Tomcat, en la que se muestra que el número máximo de threads o procesos simultáneos que éste puede atender ha sido aumentado a 300. <Connector port="8080" maxhttpheadersize="8192" maxprocessors="300" maxthreads="300" minsparethreads="50" maxsparethreads="75" enablelookups="false" redirectport="8443" acceptcount="300" connectiontimeout="20000" disableuploadtimeout="false" /> Fig. 5.2: Extracto del archivo de configuración del contenedor Tomcat La siguiente lista puntualiza brevemente la función de cada una de las clases presentes en la segunda capa del sistema. AltaCurso.java Servlet que se encarga del manejo de las operaciones de alta de cursos (con o sin asociación). BajaCurso.java Servlet encargado de las operaciones de baja de cursos (con o sin asociación). 75

Catalogo.java Servlet que se encarga de realizar las operaciones de consulta de secciones disponibles de un curso sencillo determinado. Curso.java Clase java utilizada por el sistema para representar a un curso de cualquier tipo (expansible o sencillo) y que almacena información sobre éste. DBCPoolingListener.java Esta clase se encarga de obtener del contexto del Servlet la dirección del pool de la base de datos. Expansible.java Servlet empleado en las operaciones de consulta de cursos equivalentes a uno expansible. GridHorario.java Clase java que almacena el horario de un estudiante y es utilizada para su visualización gráfica y para detectar traslapes de cursos. Laboratorio.java Clase java que representa a un curso práctico asociado a uno de carácter teórico y sirve para almacenar información de dicha relación. Login.java Servlet utilizado para realizar las operaciones de ingreso al sistema Seccion.java Clase que representa una sección de un curso disponible y que se utiliza para almacenar la información más relevante sobre ésta. VisualHorario.java Servlet que recupera la lista de cursos inscritos por el estudiante en el periodo actual. VisualLista.java Servlet encargado de recuperar los cursos inscritos por los estudiantes en el periodo actual y darles formato de tipo horario. 76

Fig. 5.3: Paquetes de clases java en la capa del servidor web Para realizar la conexión del servidor web con la base de datos se utilizó el conector, de tipo JDBC, MySQL Connector/J 5.0, que es una librería disponible en el sitio de MySQL (http://www.mysql.com/products/connector/j) que provee métodos para que las aplicaciones Java puedan acceder y realizar operaciones con bases de datos MySQL. Cabe destacar que para obtener un mejor rendimiento en el acceso a la base de datos se optó por utilizar un Pool de conexiones del lado del servidor web como el que discute Jaggi en [Jaggi, 06]. Éste se encarga de administrar las conexiones disponibles a la base de datos al tiempo en que reduce el overhead asociado con la constante creación de conexiones y disminuye la carga en la recolección de basura asociada con la eliminación de dichos objetos. Para utilizar la técnica de pooling fue necesaria la incorporación de tres librerías del proyecto Jakarta Commons disponibles en el sitio de la fundación Apache (http://jakarta.apache.org/commons) Jakarta-Commons DBCP 1.2, Jakarta-Commons 77

Collections 2.1 y Jakarta-Commons Pool 1.3. Asimismo como se muestra en las figuras 5.2 y 5.3, los archivos de configuración de Tomcat (server.xml) y de la aplicación web (web.xml) fueron modificados para indicar la utilización del pool y realizar su configuración. Fig. 5.4: Extracto del archivo server.xml que muestra la configuración del Pool de conexiones Fig. 5.5: Extracto del archivo web.xml que muestra la configuración del Pool de conexiones Por otro lado como se menciona en la lista de archivos del servidor web, la clase DBCPoolingListener es la encargada de obtener la dirección del pool de conexiones como se muestra en la figura 5.4 para posteriormente hacerlo accesible a los demás componentes en el sistema. 78

Fig. 5.6: Extracto de la clase DBCPoolingListener donde se obtiene la dirección del pool Asimismo cabe mencionar que se añadieron 3 librerías más al contenedor web Tomcat para su correcto funcionamiento: XMLRPC 1.2 disponible en (http://ws.apache.org/xmlrpc), Log4J 1.2 (http://logging.apache.org/log4j/docs) y JSON (http://www.json.org/java/json.zip); ésta última permite incorporar en las clases del sistema el manejo de estructuras de tipo JSON. Finalmente resulta conveniente comentar que en todos los servlets del sistema se establecieron múltiples mecanismos de seguridad cuyo objetivo consiste en verificar la validez de los datos recibidos por parte del cliente, para evitar en la medida de lo posible la inyección de código SQL. Estos dispositivos se basan en el supuesto de que los datos recibidos desde el cliente no son seguros, y por lo tanto hacen uso de operaciones de parseo, conversión de datos, eliminación de caracteres especiales y comparación de los datos recibidos con los almacenados en memoria, para filtrar cualquier tipo de código que busque afectar la seguridad del sistema y dañar la información que este maneja. 79

Fig. 5.7: Diagrama de clases del paquete main del sistema de inscripciones 80

Fig. 5.8: Diagrama de clases del paquete soporte del sistema de inscripciones 81

5.1.3 Servidor de base de datos La tercera capa del sistema corresponde al servidor de la base de datos escolar, papel que desempeña MySQL. Su instalación se realizó como parte del paquete XAMPP y su configuración predefinida permaneció prácticamente inalterada, el único cambio realizado al archivo de configuración (my.cnf) fue para agregar soporte a las tablas de tipo InnoDB, necesarias para el correcto manejo de las transacciones de las operaciones de alta y baja de cursos. Fig. 5.9: Extracto del archivo my.cnf que muestra la configuración de las tablas InnoDB El código para la creación de las tablas pertenecientes a la base de datos escolar que se muestran en la figura 4.7, fue generado automáticamente por el software DeZign for Databases (www.datanamic.com) empleado para el diseño de dicha base de datos. Para disminuir el riesgo de que un usuario realice operaciones malintencionadas sobre la base de datos, se creó una cuenta MySQL con privilegios limitados, de esta manera las modificaciones que pueden realizarse a través de las conexiones del pool han quedado limitadas de la siguiente forma: consultas sobre cualquier tabla, inserciones y eliminaciones sobre la tabla Curso_Inscrito y actualizaciones sobre Curso_Ofrecido y Usuario. 82

Fig. 5.10: Código SQL que restringe los privilegios del usuario invitado Por otra parte, para garantizar la consistencia del número de lugares disponibles en cada sección, al evitar casos en los que debido a una condición de carrera varios usuarios toman el último lugar disponible de una sección determinada se optó por utilizar triggers en la base de datos escolar. Luego de un análisis de las ventajas y desventajas, se llegó a la conclusión de que los triggers resultan ser la mejor solución al problema, puesto que a pesar de causar un impacto negativo en el tiempo de ejecución de las operaciones afectadas, dicho aumento resulta menor al compararlo con el de otras soluciones como la sincronización del acceso a la base de datos en las clases Java afectadas por la condición de carrera. Fig. 5.11: Código SQL que muestra la creación de un trigger 83