INSTITUTO POLITÉCNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y
ADMINISTRATIVAS
“
AGENDA ELECTRÓNICA WEB DE PROGRAMACIÓN DECITAS DEL HOSPITAL GENERAL DE MÉXICO”
T
E
S
I
N
A
Q U E P A R A O B T E N E R E L T Í T U L O D E : L I C E N C I A D O E N C I E N C I A S D E L A I N F O R M Á T I C A P R E S E N T A : O L A F F S Á N C H E Z R U I Z MÉXICO. DF 2009ÍNDICE
RESUMEN...i
INTRODUCCIÓN...ii
CAPÍTULO I MARCO METODOLÓGICO...1
1.1 PLANTEAMIENTO DEL PROBLEMA...1
1.2 OBJETIVO...2
1.2.1 OBJETIVO GENERAL...2
1.2.2 OBJETIVOS ESPECÍFICOS...2
1.3 UNIVERSO Y/O MUESTRA...2
1.4 JUSTIFICACIÓN...3
CAPÍTULO II MARCO TEÓRICO Y REFERENCIAL...4
2.1 ARQUITECTURA CLIENTE-SERVIDOR...4
2.2 NAVEGADORES WEB E INTERNET...7
2.3 APLICACIONES WEB...11
2.4 JAVA...14
2.4.1 CONCEPTOS IMPORTANTES...18
2.5 SOFTWARE UTILIZADO EN EL PROYECTO...22
CAPÍTULO III ANÁLISIS Y DISEÑO...37
3.1 REQUERIMIENTOS...37 3.2 MODELO...40 3.3 DIAGRAMAS DE ESTRUCTURA...44 3.3.1 DIAGRAMA DE PAQUETE...44 3.3.2 DIAGRAMA DE CLASE...45 3.4 DIAGRAMAS DE COMPORTAMIENTO...47
3.4.1 DIAGRAMA DE CASOS DE USO...47
3.5 DIAGRAMAS DE INTERACCIÓN...52 3.5.1 DIAGRAMA DE SECUENCIA...52 3.5.2 DIAGRAMA DE COLABORACIÓN...53 3.6 DISEÑO DE PANTALLAS...54 CAPÍTULO IV PROGRAMACIÓN...58 4.1 HTML Y JAVASCRIPT...58
4.2 SERVLETS...60
4.3 JSP...63
4.4 SQL Y PL-SQL...64
CAPÍTULO V IMPLEMENTACIÓN Y PRUEBAS...65
5.1 PRUEBAS DE SISTEMA (UNITARIAS)...66
5.2 PRUEBAS DE ACEPTACIÓN (INTEGRALES)...74
CONCLUSIONES...82
RESUMEN
El presente proyecto consta de cinco capítulos en donde se expone ordenadamente los pasos a seguir para la creación de una aplicación Web. Dicha aplicación pretende hacer una mejora al sistema actual que utiliza el Hospital General de México para su proceso de agenda electrónica de citas.
En el capítulo uno encontramos el marco teórico del presente proyecto, es decir, la justificación para realizar dicho proyecto y los objetivos que se pretenden alcanzar, partiendo desde el planteamiento del problema. Se expone la problemática existente en el Hospital General de México y de manera general se plantea una solución.
En el capítulo dos encontraremos el fundamento teórico y referencial; en este apartado se muestran todos aquellos conceptos que se debieran tener en cuenta para adquirir una visión amplia de lo que implica realizar un proyecto de tal envergadura, también encontraremos una descripción del software utilizado en este proyecto para su implementación.
En el capítulo tres se presenta la fase de análisis y desarrollo del sistema, en este apartado es en donde se sientan las bases para la programación del sistema. Se analiza la lógica actual de negocio, su problemática y se propone una solución. Dicha solución se diseña mediante diagramas UML, en donde se presentan la estructura, las interacciones y el comportamiento entre los objetos del sistema.
En el capítulo cuatro se presentan las partes fundamentales o principales de la programación del sistema, el objetivo de este capítulo no es plasmar todo el código sino mostrar en código alguno de los objetos principales descritos en el capítulo anterior.
Finalmente el capítulo cinco abarca la fase de pruebas al sistema, es aquí donde se comprueba la eficacia del sistema y su correcto funcionamiento y si cubre o no las necesidades del Hospital, estas pruebas se diseñan en base a los requerimientos del sistema y a su funcionalidad.
INTRODUCCIÓN
El presente proyecto de estudio muestra el proceso de desarrollo para una aplicación Web. El Hospital General de México, como muchas organizaciones, ha visto la ventaja de tener sus sistemas alojados en un servidor Web, lo cual facilita el acceso a la información utilizando máquinas remotas mediante un navegador Web.
Varias son las tecnologías que permiten la creación de dichas aplicaciones, entre las cuales se encuentra Java, que provee mediante el uso de Servlets y JSPs la creación de páginas dinámicas eficientes, dando formato a texto, realizando consultas a base de datos con los drivers apropiados, manejo de XML y todos aquellos beneficios que son característicos de este lenguaje de programación.
Esto junto con las herramientas comunes para la programación de páginas Web como lo son HTML, JavaScript, JSON y el uso de AJAX para las peticiones al servidor que permite obtener la información necesaria sin necesidad de recargar la página entera, proveen un ambiente de trabajo muy potente para los desarrolladores.
El uso de CSS (Hojas de Estilo en Cascada) permite a los diseñadores de páginas crear una interfaz ordenada de una manera amigable.
En cuanto al diseño del software, UML (Lenguaje Unificado de Modelado) dispone de varios diagramas que sientan las bases para la programación y dan una vista general y detallada del sistema. El uso de UML con Java es una potente herramienta para el logro de los objetivos.
En el presente proyecto se utilizan estas herramientas con el objetivo de diseñar y crear una aplicación Web que se ajuste a las necesidades del Hospital General de México, el cual ha deseado trasladar su sistema de agenda electrónica creada en Oracle Forms a una aplicación Web.
El Hospital General de México realiza consultas de primera y subsecuentes en sus distintas especialidades, el desarrollo de este proyecto ayudará a agilizar el proceso actual y poner vía Web a disposición de los usuarios el sistema de asignación de citas.
CAPÍTULO I MARCO METODOLÓGICO
1.1 PLANTEAMIENTO DEL PROBLEMA
Debido a la mejora tecnológica y a la creciente demanda de sistemas implementados en servidores Web, es decir, aquellas aplicaciones que los usuarios pueden utilizar accediendo a un servidor web a través de Internet o de una Intranet mediante un navegador; el Hospital General de México, Organismo Descentralizado dependiente de la Secretaría de Salud a nivel federal, que presta servicios médicos de especialidad y de apoyo al diagnóstico, tratamiento y rehabilitación; por recomendaciones de la Dirección General de Tecnologías de la Información (DGTI) en cuanto a la Normatividad en Materia de Tecnologías de la Información, cuyo propósito fundamental es el de conducir el desarrollo tecnológico de la Secretaría de manera racional y homogénea, en su apartado Sistema y Software incorpora que los sistemas se desarrollarán en lenguajes del tipo de software libre con el fin de evitar el pago de licencias por concepto de derechos de uso de lenguajes de desarrollo.
Por lo tanto, el Hospital General de México se ha visto en la necesidad de migrar su sistema de Agenda Electrónica cuya última versión puesta en operación a partir de Mayo de 2007 consiste en un inicio en programar horarios fijos de lunes a viernes para consulta de acuerdo a cada especialidad, para después programar a los médicos que darán consulta general de primera vez y subsecuentes en dichos horarios en los días que lo soliciten.
De esta manera se deja preparada la agenda electrónica para que de acuerdo a la disponibilidad de horarios se haga la asignación de citas por pacientes cuando estos lo soliciten, ya sea por ventanilla o por vía telefónica.
Actualmente el sistema se encuentra desarrollado en la herramienta de Oracle Developer 6.0 en una plataforma de base de datos de Oracle 9.2.0.7 y lo que se pretende lograr es desarrollar una aplicación Web en el lenguaje de programación Java para el sistema actual que utiliza el Hospital y a la vez optimizar el proceso de programación de horarios por especialidad y de médicos en dichos horarios.
Actualmente el sistema programa los mismos horarios para toda una especialidad surgiendo también así la necesidad de programar los horarios de acuerdo a los días y a las horas en las que el médico puede dar consulta.
1.2 OBJETIVO
1.2.1 OBJETIVO GENERAL
Desarrollar una aplicación Web que permita la programación de horarios para la consulta de pacientes de acuerdo a los días y a las horas especificadas por los médicos de cada especialidad, así como la asignación de citas en dichos horarios de acuerdo a las solicitudes de los pacientes y a la disponibilidad en la agenda, utilizando como herramienta de desarrollo el lenguaje de programación de java con el fin de visualizar y acceder de forma rápida y segura a todas las funciones de la aplicación desde cualquier navegador Web a través de la intranet del Hospital General de México.
1.2.2 OBJETIVOS ESPECÍFICOS
Optimizar el proceso de programación de horarios permitiendo la asignación de dichos horarios a partir de los días y las horas especificadas por cada médico con el fin de asegurar la realización de la consulta.
Desarrollar el sistema de agenda electrónica utilizando las herramientas disponibles en el lenguaje de programación Java.
Probar el sistema de agenda electrónica en los diferentes navegadores Web para su correcta visualización independientemente del navegador.
Utilizar la intranet del Hospital General de México con el fin de trabajar en un ambiente de desarrollo adecuado.
1.3 UNIVERSO Y/O MUESTRA
El universo consta de dos partes, la primera parte la forma el sistema actual que maneja el Hospital General de México para la asignación de citas, conteniendo el tipo de datos que existe en las tablas de la base de datos y el modo en que se relacionan, las operaciones de manipulación y las restricciones de integridad.
La segunda parte la forma el conjunto de elementos que intervienen en el proceso real y la manera en que el sistema actual cubre cada una de las necesidades que tiene el Hospital General de México en el proceso real de programación y asignación de citas.
1.4 JUSTIFICACIÓN
La presente necesidad del Hospital General de México de desarrollar una aplicación Web para su sistema de Agenda Electrónica nos brinda las razones por las cuales es conveniente llevarlo a cabo; siendo estas la facilitación de acceso al sistema a través de los distintos navegadores Web sin la necesidad de instalar algún software en el equipo remoto, pues todas las computadoras cuentan ya con algún navegador instalado, ya sea de fábrica o al instalar el sistema operativo; también al concentrar los archivos ejecutables en un servidor de aplicaciones se aumenta la portabilidad y la mejora continua, de esta manera cualquier solicitud de cambio que afecte algún archivo del sistema será necesario reemplazarlo por el archivo modificado solamente en el servidor de aplicaciones y no en cada uno de los equipos remotos.
Al hacer uso del lenguaje de programación java, el cual contiene las herramientas necesarias para llevar a cabo estos cambios, se provee para un uso correcto y un buen funcionamiento del sistema. Además se cumple con las recomendaciones hechas por la Dirección General de Tecnologías de la Información (DGTI) utilizando las herramientas actualmente utilizadas en el campo de la informática en el uso de software de desarrollo.
El Hospital General de México se beneficiará de este sistema al mejorar su proceso de programación de horarios, el cual será de acuerdo a la disponibilidad en tiempo que el médico de cada una de las especialidades solicite; también se verá beneficiado al acceder al nuevo sistema a través de cualquier navegador Web sin la necesidad de instalar previamente algún software.
La relevancia para la carrera consiste en hacer uso de las herramientas que el lenguaje de programación java provee para desarrollar una aplicación Web previamente desarrollada con Oracle Developer cumpliendo así con las principales características del lenguaje como son: hacer uso de la metodología de la programación orientada a objetos, permitir la ejecución de un mismo programa en múltiples sistemas operativos, soporte para trabajo en red y ejecutar código en sistemas remotos de forma segura.
CAPÍTULO II MARCO TEÓRICO Y REFERENCIAL
2.1 ARQUITECTURA CLIENTE SERVIDOR
El fundamento teórico sobre el cual se enmarca el presente proyecto de desarrollo abarca la arquitectura cliente/servidor, la cual se divide en dos partes claramente diferenciadas, la primera es la parte del servidor y la segunda la de un conjunto de clientes.
Esta arquitectura consiste básicamente en un programa cliente que realiza peticiones a otro programa -el servidor- que le da respuesta (Fig. 1).
En informática, un servidor es un tipo de software que realiza ciertas tareas en nombre de los usuarios. El término servidor también se utiliza para referirse a la maquina física en el cual funciona ese software, una máquina cuyo propósito es proveer datos de modo que otras máquinas puedan
utilizar esos datos.1 Un servidor sirve información a las computadoras que se conectan a él.
Cuando los clientes se conectan a un servidor pueden acceder a programas, archivos y otra información del servidor.
El cliente es una aplicación informática que se utiliza para acceder a los servicios que ofrece un servidor, normalmente a través de una red de telecomunicaciones o mediante conexión vía línea telefónica o digital.
El servidor, entonces, no hace más que poner sus recursos a disposición de las demás computadoras, para cuando estas lo requieran.
Fig. 1 Arquitectura básica cliente/servidor
1
Mas adelante, http://www.masadelante.com/faqs/servidor
Algunos tipos comunes de servidores son :2
Servidor de archivo: es el que almacena varios tipos de archivos y los distribuye a otros clientes en la red.
Servidor de impresiones: controla una o más impresoras y acepta trabajos de impresión de otros clientes de la red, poniendo en cola los trabajos de impresión (aunque también puede cambiar la prioridad de las diferentes impresiones), y realizando la mayoría o todas las otras funciones que en un sitio de trabajo se realizaría para lograr una tarea de impresión si la impresora fuera conectada directamente con el puerto de impresora del sitio de trabajo.
Servidor de correo: almacena, envía, recibe, enruta y realiza otras operaciones relacionadas con email para los clientes de la red.
Servidor de fax: almacena, envía, recibe, enruta y realiza otras funciones necesarias para la transmisión, la recepción y la distribución apropiadas de los fax.
Servidor de la telefonía: realiza funciones relacionadas con la telefonía, como es la de contestador automático, realizando las funciones de un sistema interactivo para la respuesta de la voz, almacenando los mensajes de voz, encaminando las llamadas y controlando también la red o el Internet, p. ej., la entrada excesiva del IP de la voz (VoIP), etc.
Servidor proxy: realiza un cierto tipo de funciones a nombre de otros clientes en la red para aumentar el funcionamiento de ciertas operaciones (p. ej., prefetching y depositar documentos u otros datos que se soliciten muy frecuentemente), también sirve seguridad, esto es, tiene un Firewall. Permite administrar el acceso a internet en una Red de computadoras permitiendo o negando el acceso a diferentes sitios Web.
Servidor del acceso remoto(RAS): controla las líneas de módem de los monitores u otros canales de comunicación de la red para que las peticiones conecten con la red de una posición remota, responden llamadas telefónicas entrantes o reconocen la petición de la red y realizan los chequeos necesarios de seguridad y otros procedimientos necesarios para registrar a un usuario en la red.
Servidor de uso: realiza la parte lógica de la informática o del negocio de un uso del cliente, aceptando las instrucciones para que se realicen las operaciones de un sitio de trabajo y sirviendo los resultados a su vez al sitio de trabajo, mientras que el sitio de trabajo realiza el interfaz
2
Wikipedia,http://es.wikipedia.org/wiki/Servidor
operador o la porción del GUI del proceso (es decir, la lógica de la presentación) que se requiere para trabajar correctamente.
Servidor web: almacena documentos HTML, imágenes, archivos de texto, escrituras, y demás material Web compuesto por datos (conocidos colectivamente como contenido), y distribuye este contenido a clientes que la piden en la red.
Servidor de Base de Datos: (database server) provee servicios de base de datos a otros programas u otras computadoras, como es definido por el modelo cliente-servidor. También puede hacer referencia a aquellas computadoras (servidores) dedicadas a ejecutar esos programas, prestando el servicio.
Servidor de reserva: tiene el software de reserva de la red instalado y tiene cantidades grandes de almacenamiento de la red en discos duros u otras formas del almacenamiento (cinta, etc.) disponibles para que se utilice con el fin de asegurarse de que la pérdida de un servidor principal no afecte a la red. Esta técnica también es denominada clustering.
Impresoras: muchas impresoras son capaces de actuar como parte de una red de ordenadores sin ningún otro dispositivo, tal como un "print server", a actuar como intermediario entre la impresora y el dispositivo que está solicitando un trabajo de impresión de ser terminado.
Un Servidor Web es una aplicación que corre sobre el servidor (máquina física) y que escucha las peticiones HTTP que le llegan y las satisface. Dependiendo del tipo de la petición, el servidor Web buscará una página Web o bien ejecutará un programa en el servidor. De cualquier modo, siempre devolverá algún tipo de resultado HTML al cliente o navegador que realizó la petición.
El servidor Web va a ser fundamental en el desarrollo de las aplicaciones del lado del servidor (server side applications) que vayamos a construir, ya que estas se ejecutarán en él; algunos servidores web importantes son:
Apache. El proyecto del servidor apache http es un esfuerzo de desarrollo de software en colaboración, cuyo objetivo es la creación de un robusto, comercial, característico y de gratuita disponibilidad del código fuente para la implementación de un servidor http (Web).
El proyecto es administrado conjuntamente por un grupo de voluntarios alrededor del mundo que mediante el uso de Internet y la Web comunican, planean y desarrollan dicho servidor y su
documentación.3
IIS (Internet Information Services). De acuerdo a su página en Internet IIS es un servidor Web para aplicaciones Web sobre todas las versiones de Windows Server 2003. IIS soporta la iniciativa de sistemas dinámicos de Microsoft con monitorización de estado de salud automático, aislamiento de
procesos y capacidades de gestión mejoradas.4
Cherokee. De acuerdo a su página de Internet cherokee soporta las tecnologías mas difundidas hoy en día: FastCGI, SCGI, PHP, CGI, SSI, TLS y SSL, conexiones encriptadas, Virtual hosts, Autenticación, registro de archivos compatibles con Apache , Data Base Balancer, descargas gratis
para actualizaciones y mejoras, HTTP Proxy ,entre otras cosas 5.
Cuando visitamos una página Web, también conocida como página de Internet, la cual es un documento adaptado a la World Wide Web compuesta principalmente por información en forma de texto e hiperenlaces con material multimedia, como imágenes, vídeos, o aplicaciones incrustadas y que además puede contener o asociar datos de estilo para especificar cómo debe visualizarse el contenido; es un servidor el que la alberga y se la envía a nuestra computadora para que la veamos.
Cuando enviamos un e-mail, es un servidor, en este caso por ejemplo, es un servidor de correo el que se encarga de hacer llegar nuestro mensaje a su destino.
2.2 NAVEGADORES WEB E INTERNET
Un navegador, navegador red o navegador web (del inglés, web browser) es un programa que permite visualizar la información que contiene una página web (ya esté esta alojada en un servidor dentro de la World Wide Web o en uno local). Dentro de las funciones del navegador está la petición de las páginas Web, la representación adecuada de sus contenidos y la gestión de los posibles errores que se puedan producir.
3 Apache, http://httpd.apache.org/ABOUT_APACHE.html 4 Microsoft, http://www.microsoft.com/spain/windowsserver2003/technologies/webapp/iis.mspx 5 Cherokee, http://www.cherokee-project.com/
7
Algunos ejemplos de navegadores web son: Mozilla Firefox, Internet Explorer,Google Chrome, Opera, entre otros (Fig. 2).
Mozilla es una comunidad global con miles de voluntarios dedicados en todo el mundo a crear
productos como el navegador Web Firefox6.
Mozilla Firefox es un navegador de código abierto, multiplataforma, basado en el código de base de Mozilla. Entre sus principales características se encuentran:
Velocidad. Seguridad.
Navegación por pestañas. Varios Perfiles
Extensiones y Temas.
Opera comenzó en 1994 como un proyecto de investigación de la compañía Telenor. En menos de un año, derivó en un proyecto de desarrollo independiente llamado Opera Software ASA.
Hoy en día, Opera desarrolla el navegador Web Opera, multiplataforma. La principal estrategia de negocio de Opera es proveer un navegador que opere en múltiples dispositivos, plataformas y sistemas operativos y ser capaz de proveer un Internet más rápido, estable y flexible que sus competidores7.
Internet Explorer (MSIE)8, comúnmente abreviado como IE, es un navegador web producido por
Microsoft para el sistema operativo Windows desde 1995 y más tarde para Sun Solaris y Apple Macintosh, estas dos últimas discontinuadas en el 2002 y 2006 respectivamente. Ha sido el navegador web más utilizado desde 1999, con un pico sostenido de cuota de utilización durante el 2002 y 2003 del 95% en sus versiones 5 y 6. Esa cuota de mercado ha disminuido paulatinamente debido a una renovada competencia por parte de otros navegadores, principalmente Mozilla Firefox.
Su versión más reciente es la 8.0, la cual está disponible gratuitamente como actualización para Windows XP Service Pack 2, Windows Server 2003 con Service Pack 1 o posterior, Windows Vista, y Windows Server 2008. Internet Explorer 8 se incluirá de forma nativa en los próximos sistemas operativos de Microsoft, Windows 7 y Windows Server 2008 R2.
6 Mozilla http://www.mozillaes.org/documentacion/index.php?title=Preguntas_generales_sobre_Mozilla_Firefox 7 Opera, http://www.opera.com/company/ 8 Wikipedia, http://es.wikipedia.org/wiki/Internet_Explorer
8
En líneas generales, Google Chrome tiene una interfaz sencilla y funcional. Al igual que la página de inicio de su buscador, Google Chrome tiene como objetivo que los usuarios obtengan la información que buscan y accedan a los sitios web con la mayor rapidez posible.
Desde el punto de vista de un navegador, Google es capaz de ejecutar con mayor eficacia las complejas aplicaciones web de hoy en día. Las pestañas de Google Chrome son independientes, de forma que si se produce un error en una de ellas, el resto no se ven afectadas. La rapidez y el tiempo de respuesta también se han mejorado por completo. Además, han creado V8, un motor JavaScript más potente que abre la puerta a una generación de aplicaciones web que se
beneficiarán de este nuevo concepto de navegador9.
Fig. 2 Ejemplo de navegadores Web
La World Wide Web (o la "Web") o Red Global Mundial es un sistema de documentos de hipertexto y/o hipermedios enlazados y accesibles a través de Internet; un hipertexto es el nombre que recibe el texto que en la pantalla de una computadora conduce a su usuario a otro texto relacionado, de la misma manera, un hipervínculo (también llamado enlace, vínculo, hiperenlace o link) es un elemento de un documento electrónico que hace referencia a otro recurso, por ejemplo, otro documento o un punto específico del mismo o de otro documento.
9 Google, http://www.google.com/chrome/intl/es/why.html
El protocolo de transferencia de hipertexto (HTTP, HyperText Transfer Protocol) es el protocolo usado en cada transacción de la Web. Es un protocolo orientado a transacciones y sigue el esquema petición-respuesta entre un cliente y un servidor. HTTP es un protocolo sin estado, es decir, que no guarda ninguna información sobre conexiones anteriores.
Al finalizar la transacción todos los datos se pierden, es debido a esto que surgieron los conceptos de cookies y sesiones. Básicamente las cookies son un mecanismo que sirve para almacenar datos en el navegador del usuario remoto, para así poder identificar al usuario cuando vuelva.
Las sesiones por otro lado consisten en mecanismos para preservar ciertos datos a lo largo de un sitio, se puede guardar información y cambiar de página en página sin perder esa información, ya que la misma es guardada en el servidor con un identificador único de sesión (es único por cliente) y en el navegador del usuario (cliente) se guarda una cookie con la información de acceso a la sesión (el número de identificación de sesión).
De esta forma logramos mantener la información del usuario más segura ya que la misma se guarda en el servidor y no en la PC del usuario, y solo se puede acceder a esa información desde nuestra aplicación.
URL significa Uniform Resource Locator, es decir, localizador uniforme de recurso. Fueron usadas por primera vez en 1991, para permitir a los autores de documentos establecer hiperenlaces en la World Wide Web. Es una secuencia de caracteres, de acuerdo a un formato estándar, que se usa para nombrar recursos, como documentos e imágenes en Internet, para su localización.
El URL de un recurso de información es su dirección en Internet, la cual permite que el navegador la encuentre y la muestre de forma adecuada. Por ello el URL combina el nombre de la maquina que proporciona la información, el directorio donde se encuentra, el nombre del archivo y el protocolo a usar para recuperar los datos, el formato general de un URL es:
protocolo://máquina/directorio/archivo, también pueden añadirse otros datos como
protocolo://usuario:contraseña@máquina:puerto/directorio/archivo, algunos ejemplos son: http://www.google.com.mx/, http://www.librosweb.es/ajax/index.html.
El contenido de la página puede ser predeterminado ("página web estática") o generado al momento de visualizarla o solicitarla a un servidor web ("página web dinámica"). Las páginas dinámicas que se generan al momento de la visualización se hacen a través de lenguajes interpretados, y la aplicación encargada de visualizar el contenido es la que debe generarlo. La
páginas dinámicas que se generan al ser solicitadas son creadas por una aplicación en el servidor web que alberga las mismas.
2.3 APLICACIONES WEB
En la ingeniería de software se denomina aplicación web a aquellas aplicaciones que los usuarios pueden utilizar accediendo a un servidor web a través de Internet o de una intranet mediante un navegador, es una aplicación software que se codifica en un lenguaje soportado por los navegadores web (HTML, JavaScript, Java, asp.net, etc.).
HTML (Hiper Text Language Markup) es el lenguaje utilizado en la World Wide Web, fue desarrollado originalmente por Tim Berners-Lee, cada versión de HTML ha sido desarrollada con la premisa de que cualquier tipo de dispositivo debería ser capaz de usar la información de la Web, el
HTML da a los autores herramientas para10:
Publicar documentos en línea con encabezados, textos, tablas, listas, fotos, etc.
Obtener información en línea a través de vínculos de hipertexto, haciendo clic con el botón de un ratón.
Obtener información en línea a través de vínculos de hipertexto, haciendo clic con el botón de un ratón.
Incluir hojas de cálculo, videoclips, sonidos, y otras aplicaciones directamente en sus documentos.
JavaScript es un lenguaje de programación interpretado, por lo que no es necesario compilar los programas antes de ejecutarlos. En otras palabras, los programas escritos con JavaScript se
pueden probar directamente en cualquier navegador sin necesidad de procesos intermedios.11
Inicialmente fue desarrollado por Brendan Eich, posteriormente Sun Microsystems firmó una alianza con Nestcape para su desarrollo y le puso el nombre de JavaScript; finalmente, en 1990, el organismo ECMA (European Computer Manufacturers Asociation) estandarizó el lenguaje de script multiplataforma e independiente de cualquier empresa al que definió ECMAScript.
XML (Extensible Markup Language)12, es un Lenguaje de Etiquetado Extensible muy simple, pero
estricto que juega un papel fundamental en el intercambio de una gran variedad de datos. Es un lenguaje muy similar a HTML pero su función principal es describir datos y no mostrarlos como es el caso de HTML.
10
Pozo Juan, Especificación HTML 4.01, traducción al castellano,. pags. 24,25
11
Eguíluz Pérez Javier, Introducción a JavaScript, pags. 5,6.
12 W3C, http://www.w3c.es/divulgacion/guiasbreves/tecnologiasXML
XML es un formato que permite la lectura de datos a través de diferentes aplicaciones. Las tecnologías XML son un conjunto de módulos que ofrecen servicios útiles a las demandas más frecuentes por parte de los usuarios. XML sirve para estructurar, almacenar e intercambiar información.
Entre las tecnologías XML disponibles se pueden destacar: XSTL. Lenguaje Extensible de Hojas de Estilo.
XPath: Lenguaje de Rutas XML. XLink: Lenguaje de Enlace XML.
XPointer: Lenguaje de Direccionamiento XML. XQL : Lenguaje de Consulta XML
Un ejemplo sencillo del uso de XML se presenta a continuación: <?xml version="1.0" encoding="ISO-8859-1"?> <libro> <titulo></titulo> <capitulo> <titulo></titulo> <seccion> <titulo></titulo> </seccion> </capitulo> </libro>
DOM (Document Object Model), el Modelo de Objetos de Documento es una plataforma - y lenguaje - de interfaz neutral que permite a los programas y scripts el acceso dinámico y actualización del contenido, estructura y estilo de los documentos. El documento puede ser procesado por detrás y el resultado de ese procesamiento puede ser incorporado de vuelta dentro
de la página presentada.13
JSON (JavaScript Object Notation - Notación de Objetos de JavaScript) es un formato ligero de intercambio de datos. Leerlo y escribirlo es simple para humanos, mientras que para las máquinas es simple interpretarlo y generarlo.
13 W3C, http://www.w3.org/DOM/
Está basado en un subconjunto del Lenguaje de Programación JavaScript, Standard ECMA-262 3rd Edition - Diciembre 1999. JSON es un formato de texto que es completamente independiente del lenguaje pero utiliza convenciones que son ampliamente conocidos por los programadores de la familia de lenguajes C, incluyendo C, C++, C#, Java, JavaScript, Perl, Python, y muchos otros. Estas propiedades hacen que JSON sea un lenguaje ideal para el intercambio de datos.
JSON está constituido por dos estructuras:
Una colección de pares de nombre/valor. En varios lenguajes esto se conoce como un objeto, registro, estructura, diccionario, tabla hash, lista de claves o un arreglo asociativo.
Una lista ordenada de valores. En la mayoría de los lenguajes, esto se implementa como arreglos, vectores, listas o secuencias.
Estas son estructuras universales; virtualmente todos los lenguajes de programación las soportan de una forma u otra. Es razonable que un formato de intercambio de datos que es independiente
del lenguaje de programación se base en estas estructuras.14
Un concepto importante a utilizar en el presente trabajo es el uso de la tecnología AJAX (Asynchronous JavaScript + XML), aunque en realidad se trata de varias tecnologías
independientes que son15:
XHTML y CSS, para crear una presentación basada en estándares. DOM, para la interacción y manipulación dinámica de la presentación. XML, XSTL y JSON, para el intercambio y manipulación de la información. XMLHttpRequest, para el intercambio asíncrono de información.
JavaScript, para unir todas las demás tecnologías.
Básicamente, para utilizar AJAX se requiere primeramente obtener una instancia del objeto XMLHttpRequest, preparar la función de respuesta, realizar la petición al servidor y finalmente ejecutar la función de respuesta.
Una ventaja significativa es que las aplicaciones web deberían funcionar igual, independientemente de la versión del sistema operativo instalado en el cliente.
Algunos lenguajes de lado servidor son: PHP, ASP, Servlets y JSP, PERL, entre otros.
14
JSON, http://json.org/json-es.html
15 Eguíluz Pérez Javier, Introducción a AJAX. pag. 5
PHP (Hypertext Pre-Processor) es un lenguaje de programación, comenzó como un conjunto de scripts que permitían a su creador, Rasmus Lerdorf, el control de los accesos a sus páginas personales, lo denominó Personal Home Page Tools. En 1995 Rasmus decidió liberar el código fuente, de esta manera el proyecto pasó a ser el desarrollo de un equipo.
PHP nos permite diseñar páginas dinámicas de servidor, es decir, generar páginas bajo petición capaces de responder de manera inteligente a las demandas del cliente y que nos permitan la automatización de gran cantidad de tareas. Si tuviéramos que definir PHP en una solo línea, podríamos decir que es un lenguaje interpretado de alto nivel embebido en páginas HTML y ejecutado en el servidor.16
ASP (Active Server Pages) es una tecnología popular de Microsoft para el desarrollo de sitos web dinámicos, ASP permite a un autor de páginas incluir lógica tal como código VBScript y JScript para generar partes dinámicas.
Cuando una página ASP es solicitada, el código en la página es ejecutado por el servidor, el resultado es insertado dentro de la página y la combinación del contenido estático y dinámico es enviado al navegador.
ASP.NET, la última versión de ASP, añade nuevas características. Como una alternativa al código de script, el contenido dinámico puede ser generado por HTML/XML. Las páginas son compiladas
usando lenguajes tales como C#, JScript.NET y Visual Basic.NET.17
2.4 JAVA
Java inició como un proyecto interno de investigación denominado Green en 1991, James Gosling, su creador, lo desarrollo bajo un lenguaje basado en C++, dicho proyecto fue patrocinado por Sun Microsystems.
Java (Sun), es una tecnología desarrollada para aplicaciones software independiente de la plataforma, que engloba:
El Lenguaje de programación Java, un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems a principios de los años 90. La implementación original y de referencia del compilador, la máquina virtual y las bibliotecas de clases de Java fueron desarrolladas por Sun Microsystems en 1995.
16
Gutierrez Abraham, Ginés Bravo, PHP5 pag. XV
17 Bergsten Hans, Java Server Pages pag.15
Por lo general, los programas en java pasan a través de cinco fases para poder ejecutarse18: Edición, el programa se crea en un editor y se almacena en disco, en un archivo con la terminación .java.
Compilación, el compilador crea los códigos de bytes y los almacena en disco, en un archivo con la terminación .class.
Carga, el cargador de clases lee los archivos .class (que contienen códigos de bytes en la memoria.
Verificación, el verificador de código de bytes confirma que todos los códigos de bytes sean válidos y no violen las restricciones de seguridad en java.
Ejecución, el interprete lee los códigos de bytes y los traduce en un leguaje que la computadora pueda entender, posiblemente almacenando los valores de datos a medida que se ejecuta el programa.
La API Java, proporciona a los programadores un entorno de desarrollo completo, así como una infraestructura. El API Java es una Interfaz de Programación de Aplicaciones (API: por sus siglas en inglés) provista por los creadores del lenguaje Java, y que da a los programadores los medios para desarrollar aplicaciones Java.
Como el lenguaje Java es un Lenguaje Orientado a Objetos, la API de Java provee de un conjunto de clases utilitarias para efectuar toda clase de tareas necesarias dentro de un programa.
La API Java está organizada en paquetes lógicos, donde cada paquete contiene un conjunto de clases relacionadas semánticamente.
La Máquina Virtual de Java (en inglés Java Virtual Machine, JVM), es un programa nativo, es decir, ejecutable en una plataforma específica, capaz de interpretar y ejecutar instrucciones expresadas en un código binario especial (el Java bytecode), el cual es generado por el compilador del lenguaje Java (Fig. 3).
18 Deitel & Deitel, Java, Cómo Programar, pags. 11,12
Fig. 3 Entorno de ejecución
El código binario de Java no es un lenguaje de alto nivel, sino un verdadero código máquina de bajo nivel, viable incluso como lenguaje de entrada para un microprocesador físico.
La JVM es una de las piezas fundamentales de la plataforma Java. Básicamente se sitúa en un nivel superior al Hardware del sistema sobre el que se pretende ejecutar la aplicación, y este actúa como un puente que entiende tanto el bytecode, como el sistema sobre el que se pretende ejecutar. Así, cuando se escribe una aplicación Java, se hace pensando que será ejecutada en una máquina virtual Java en concreto, siendo ésta la que en última instancia convierte de código bytecode a código nativo del dispositivo final.
La gran ventaja de la máquina virtual java es aportar portabilidad al lenguaje de manera que desde Sun Microsystems se han creado diferentes máquinas virtuales java para diferentes arquitecturas, y así un programa .class escrito en un Windows puede ser interpretado en un entorno Linux. Tan solo es necesario disponer de dicha máquina virtual para dichos entornos. De ahí el famoso axioma que sigue a Java, "escríbelo una vez, ejecútalo en cualquier parte", o "Write once, run anywhere" (Fig. 4).
Fig. 4 Portabilidad
La máquina virtual de Java puede estar implementada en software, hardware, una herramienta de desarrollo o un Web browser; lee y ejecuta código precompilado bytecode que es independiente de la plataforma (multiplataforma). La JVM provee definiciones para un conjunto de instrucciones, un conjunto de registros, un formato para archivos de clases, la pila, un heap con recolector de basura y un área de memoria. Cualquier implementación de la JVM que sea aprobada por SUN debe ser capaz de ejecutar cualquier clase que cumpla con la especificación.
La Java Runtime Environment, JRE es el acrónimo de Java Runtime Environment (entorno en tiempo de ejecución Java) y se corresponde con un conjunto de utilidades que permite la ejecución de programas java sobre todas las plataformas soportadas.
El entorno en tiempo de ejecución de Java está conformado por una máquina virtual de java o JVM, un conjunto de bibliotecas Java y otros componentes necesarios para que una aplicación escrita en lenguaje Java pueda ser ejecutada. El JRE actua como un "intermediario" entre el sistema operativo y Java.
Un usuario sólo necesita el JRE para ejecutar las aplicaciones desarrolladas en lenguaje Java, mientras que para desarrollar nuevas aplicaciones en dicho lenguaje es necesario un entorno de desarrollo, denominado JDK, que además del JRE (mínimo imprescindible) incluye, entre otros, un compilador para Java.
De esta manera, la Plataforma Java es el nombre de un entorno o plataforma de computación originaria de Sun Microsystems, capaz de ejecutar aplicaciones desarrolladas usando el Lenguaje de programación Java u otros lenguajes que compilen el bytecode y un conjunto de herramientas de desarrollo. En este caso, la plataforma no es un hardware específico o un sistema operativo, sino más bien una máquina virtual encargada de la ejecución de aplicaciones, y un conjunto de librerías estándar que ofrecen funcionalidad común.
La plataforma es así llamada la Plataforma Java (antes conocida como Plataforma Java 2), e incluye:
Plataforma Java, Edición Estándar (Java Platform, Standard Edition), o Java SE (antes J2SE). Plataforma Java, Edición Empresa (Java Platform, Enterprise Edition), o Java EE (antes J2EE), es la edición empresarial del paquete Java.
Plataforma Java, Edición Micro (Java Platform, Micro Edition), o Java ME (antes J2ME), orientada a dispositivos de prestaciones reducidas.
2.4.1 CONCEPTOS IMPORTANTES
Algunos conceptos importantes del lenguaje a nombrar son los llamados servlets, los cuales son muy eficientes, debido al esquema de threads en el que se basan y al uso de una arquitectura estándar como la JVM, Java Virtual Machine. Los servlets son objetos que corren dentro del contexto de un contenedor de servlets (ej: Tomcat) y extienden su funcionalidad.
También podrían correr dentro de un servidor de aplicaciones (ej: OC4J Oracle), que, además de contenedor para servlet, tiene contenedor para objetos más avanzados, como son los EJB (Tomcat sólo es un contenedor de servlets). El uso más común de los servlets es generar páginas web de forma dinámica a partir de los parámetros de la petición que envíe el navegador web.
Los servlets tienen un ciclo de vida que comienza con la carga en memoria del servlet por parte del contenedor de sevlets, entonces se llama una sola vez durante el ciclo de ejecución de un servlet al método init para inicializarlo, el método service es el encargado de manejar todas las peticiones que el cliente hace y finalmente el método destroy es ejecutado por el contenedor de servlet para terminar el servlet y liberar sus recursos.
Existen dos clases que implementan a la interfaz Servlet, las cuales son: GenericServlet y HttpServlet, esta última clase define los métodos doPost y doGet entre otros para responder a las
peticiones post y get del cliente respectivamente. Estos métodos reciben parámetros de tipo HttpServletRequest y HttpServletResponse, los cuales contienen la petición del cliente y una variedad de métodos para formular la respuesta al cliente respectivamente.
Otra tecnología que viene a sumarse a las que extienden la funcionalidad de los servidores Web, son las llamadas JavaServer Pages, JSP. Los JSP permiten juntar HTML, aplicaciones Java, y componentes como las JavaBeans creando una página Web especial que el servidor Web compila dinámicamente en un servlet la primera vez que es llamada, es una tecnología Java que permite generar contenido dinámico para web, en forma de documentos HTML, XML o de otro tipo.
Las JSP's permiten la utilización de código Java mediante scripts. Además, es posible utilizar algunas acciones JSP predefinidas mediante etiquetas. Estas etiquetas pueden ser enriquecidas mediante la utilización de Librerías de Etiquetas (TagLibs o Tag Libraries) externas e incluso personalizadas.
Las JSP’s permiten la inclusión de scriptlets, los cuales son bloques de código delimitados por los caracteres <% y %>; comentarios de tipo <!--y --> ó de tipo <%-- y --%> ó los tradicionales de java como // para una sola línea y /* y */ para varias líneas; expresiones, delimitadas por los caracteres <%= y %> que el contenedor convierte en un objeto String que envía como parte de la respuesta al cliente; declaraciones, delimitadas por los caracteres <%! y %> que permiten definir las variables y los métodos a utilizar en una JSP; y las secuencias de escape.
Los objetos en las JSP tienen cuatro alcances: de aplicación, de página, de petición y de sesión. Las acciones estándar de JSP permiten al programador implementar tareas comunes como incluir contenido de otros recursos, reenviar peticiones e interactuar con JavaBeans, estas acciones tienen la forma de <jsp:nombre_accion> y </jsp:nombre_acción>
La librería JSTL (JSP Standard Tag Library) define 4 grupos de librerías:
La librería core, la cual contiene acciones para el flujo de control, manipulación de URL, importar recursos y otras tareas de propósito general; la librería de procesamiento XML, para acceso y transformación de elementos individuales; la librería de acciones para internacionalización y formateo, la cual permite dar formato a la información de acuerdo a la localidad establecida; y la librería de acceso a base de datos, la cual permite realizar acciones de lectura y escritura a una base de datos relacional.
Los JavaBeans son un modelo de componentes creado por Sun Microsystems para la construcción de aplicaciones en Java. Se usan para encapsular varios objetos en un único objeto, para hacer uso de un sólo objeto en lugar de varios más simples.
La especificación de JavaBeans de Sun Microsystems los define como "componentes de software reutilizables que se puedan manipular visualmente en una herramienta de construcción".
A pesar de haber muchas semejanzas, los JavaBeans no deben confundirse con los Enterprise JavaBeans (EJB), una tecnología de componentes del lado servidor que es parte de Java EE.
Los EJB proporcionan un modelo de componentes distribuido estándar del lado del servidor. El objetivo de los EJB es dotar al programador de un modelo que le permita abstraerse de los problemas generales de una aplicación empresarial (concurrencia, transacciones, persistencia, seguridad, etc.) para centrarse en el desarrollo de la lógica de negocio en sí. El hecho de estar basado en componentes permite que éstos sean flexibles y sobre todo reutilizables.
Otro concepto fundamental es el de base de datos, consiste en un conjunto de información, que
generalmente se encuentra organizada en un orden particular19. En las bases de datos
relacionales, es decir, aquellas que cumplen con el modelo relacional cuyas bases fueron postuladas por F. Codd en 1970, y cuyo modelo está basado en la lógica de predicado y teoría de conjuntos, la información se almacena en múltiples tablas que tienen campos clave relacionados entre sí.
Para que un programa escrito en java pueda comunicarse con alguna base de datos, es necesario que haga uso de la API JDBC, un controlador de JDBC implementa la interfaz para una base de datos específica. Existen varios controladores JDBC, algunos proporcionados por las mismas organizaciones para sus sistemas de administración de base de datos y otros desarrollados por terceros.
Existen cuatro categorías de controladores que soporta JDBC20:
El controlador puente JDBC a ODBC que conecta los programas de Java con orígenes de datos de Microsoft ODBC (Conectividad abierta de base de datos). El kit de desarrollo de software para Java2 de Sun Microsystems, Inc. incluye el controlador puente JDBC a ODBC (sun.jdbc.odbc.JdbcOdbcDriver).
19
UPIICSA, http://www.upiicsa.ipn.mx/polilibros/inicio.htm Materia: Base de Datos
20 Deitel & Deitel, Java, Cómo Programar, pag. 1091
Este controlador por lo general requiere que el controlador ODBC esté instalado en el equipo cliente, y normalmente es necesario que se configure el origen de datos ODBC. El controlador puente se introdujo principalmente para fines de desarrollo, por lo cual no debe utilizarse en aplicaciones de producción.
Los controladores nativos de la API desarrollados parcialmente en Java que permiten a los programas de JDBC utilizar APIs para bases de datos específica (generalmente escritas en C o C++), las cuales permiten a los programas clientes utilizar bases de datos mediante la interfaz nativa de java (Java Native Interface). Este tipo de controlador traduce el código JDBC en código de una base de datos específica. Los controladores de tipo 2 se introdujeron por razones similares al controlador puente ODBC tipo 1.
Los controladores JDB-NET desarrollados puramente en Java que toman las peticiones de JDBC y las traducen en un protocolo de red que no es para una base de datos específica. Estas peticiones se envían a un servidor, el cual traduce las peticiones de la base de datos en un protocolo específico para esa base de datos.
Los controladores de protocolo nativo desarrollados puramente en Java que convierten las peticiones de JDBC en protocolos de red para bases de datos específicas, de manera que los programas de Java puedan conectarse directamente con una base de datos.
Para cargar un controlador de base de datos en un programa Java se realiza con la siguiente instrucción: Class.forName(Controlador JBDC), donde controlador JDBC es por ejemplo para el caso de oracle “oracle.jdbc.driver.OracleDriver”.
Después se crea la conexión con la siguiente instrucción (ejemplo en oracle):
conexion = DriverManager.getConnection (Url base de datos, usu, pass), donde url base de datos es “jdbc:oracle:thin:@127.0.0.1:1521:db".
Otro concepto importante en el marco teórico y referencial del presente estudio es el Modelo Vista Controlador (Fig. 5), El patrón fue descrito por primera vez en 1979 por Trygve Reenskaug, entonces trabajando en Smalltalk en laboratorios de investigación de Xerox.
Fig. 5 Modelo Vista Controlador
Dicho Modelo es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos.
Modelo: Esta es la representación específica de la información con la cual el sistema opera. La lógica de datos asegura la integridad de estos y permite derivar nuevos datos. Concentra las funcionalidades relacionadas con el Modelo de datos, esto es, el acceso y manipulación de depósitos informativos como Bases de Datos y Archivos.
El Modelo no tiene conocimiento específico de los Controladores o de las Vistas, ni siquiera contiene referencias a ellos. Es el propio sistema el que tiene encomendada la responsabilidad de mantener enlaces entre el Modelo y sus Vistas, y notificar a las Vistas cuando cambia el Modelo.
Vista: Este presenta el modelo en un formato adecuado para interactuar, usualmente la interfaz de usuario.
Controlador: Este responde a eventos, usualmente acciones del usuario e invoca cambios en el modelo y probablemente en la vista. Cuando se realiza algún cambio, entra en acción, bien sea por cambios en la información del Modelo o por alteraciones de la Vista. Interactúa con el Modelo a través de una referencia al propio Modelo.
2.5 SOFTWARE UTILIZADO EN EL PROYECTO
En cuanto al software utilizado en el desarrollo del presente proyecto se encuentra StarUML (Fig. 6), sobre el cual se realizaron los diagramas de estructura, de comportamiento y de interacción, en la figura siguiente se muestra la pantalla principal de este software. Este software es de licencia libre y se puede obtener en Internet.
StarUML es una plataforma de modelado de software que soporta UML (Unified Modeling Language). Está basada en la versión 1.4 de UML y provee once diferentes tipos de diagramas y
acepta notación de UML 2.0. Actualmente soporta MDA (Model Driven Architecture).21
Fig. 6 Pantalla de Inicio de StarUML
Para el diseño del diagrama físico de la base de datos se utilizó DBDesigner 4, en la siguiente figura se muestra la pantalla de trabajo. Este software es de licencia libre y puede descargarse desde Internet (Fig. 7).
DBDesigner 4 es un sistema visual de desarrollo de base de datos que integra el diseño de la base, modelado, creación y mantenimiento dentro de un mismo entorno. Combina características profesionales y una interfaz de usuario clara y simple que ofrece de manera eficiente el manejo de
la base de datos.22
21
StarUML 5.0 User Guide, http://staruml.sourceforge.net/en/about.php
22 FabForce, http://fabforce.net/dbdesigner4/
Fig. 7 Pantalla de trabajo de DBDesigner
Cabe mencionar que una de las funcionalidades de DBDesigner es la creación del diagrama físico de la base de datos a partir de tablas creadas, lo que se conoce como reverse engineering.
Lo que hay que hacer es ingresar a la opción en el menú database, introducir los parámetros necesarios, conectarse a la base de datos y seleccionar las tablas sobre las cuales se desea hacer el proceso.
En la figura siguiente (Fig. 8) se presenta la pantalla DBDesigner con esta funcionalidad.
Fig. 8 Reverse Engineering en DBDesigner
Como navegador Web, el sistema se probó en Mozilla Firefox, Google Chrome e Internet Explorer, se requirió de un contenedor de servlets, para lo cual se descargó y se configuró la versión binaria de Apache Tomcat 6.0.20. La versión 6.0 de Tomcat implementa la especificación 2.5 de Servlets y
2.1 de las Java Server Pages de acuerdo a la Java Comunity Process.23
Incluye muchas características adicionales para hacer una muy útil plataforma para los desarrolladores de aplicaciones web y servicios web
El programa se descarga en formato zip , una vez descargado se extrae en la carpeta designada por el usuario, normalmente la carpeta principal C.
Para configurar este software fue necesario crear la variable de entorno CATALINA_HOME que contiene la ruta en donde se encuentra la carpeta de Apache Tomcat. También es necesario crear la variable de entorno JAVA_HOME que contiene la ruta en donde se encuentra la carpeta del JDK (en nuestro caso se trabajo con la versión 1.6.0_12). Además se colocó el controlador de base de datos oracle llamado classes12.zip en la carpeta ext del JDK, esto para lograr las conexiones a la base de datos.
23
Apache Tomcat, Documentation Index, http://tomcat.apache.org/tomcat-6.0-doc/index.html
Hay algunos directorios clave en Tomcat:
/bin, que contiene archivos como el de startup, shutdown y otros scripts
/conf, que contiene archivos de configuración y DTDs, el archivo más importante aquí es el archivo server.xml, es el principal archivo de configuración para el contenedor.
/logs, para almacenar los archivos de registro de diario. /webapp, en el cual se encuentran nuestras aplicaciones.
Para inicializar el servidor Tomcat se debe ejecutar el archivo startup que se encuentra en la carpeta bin, de igual forma para finalizarlo se ejecuta el archivo shutdown que se encuentra en la misma carpeta. Por defecto el puerto por el que escucha el servidor es el puerto 8080, aunque se puede modificar al puerto deseado.
En la siguiente figura se muestra la pantalla de inicio de Apache Tomcat (Fig. 9).
Fig. 9 Pantalla de Inicio de Apache Tomcat
Para ingresar a la opción del Administrador de Tomcat en la pantalla de inicio, una vez que este ha sido instalado correctamente, es necesario modificar el archivo tomcat-users de la carpeta conf y quitar el comentario entre las etiquetas <tomcat-users> y </tomcat-users>. Añadir el rol manager
de la siguiente manera <role rolename="manager"/> y crear un usuario al que se le asigne dicho rol como sigue <user username="admin" password="admin" roles="manager"/>
Después, entrar a la opción Tomcat Manager ingresando el usuario y password definidos anteriormente. En la siguiente figura (Fig. 10) se muestra la pantalla de administración de Apache Tomcat.
Fig. 10 Pantalla de Administración de Tomcat
Para el correcto funcionamiento de las JSP´s se requirió la librería estandar jstl.jar y standard.jar, las cuales contienen la clases necesarias para ejecutar las etiquetas de la librería JSTL (JSP Standard tag Library). Para la creación de un nuevo proyecto, las carpetas en Apache Tomcat tienen un orden definido, dentro de la carpeta webapps:
--Carpeta principal ----WEB-INF ---classes ---lib
donde la carpeta principal contiene los programas fuentes en HTML, JavaScript, JSP´s y CSS, entre otros. La carpeta WEB_INF contiene el archivo web.xml que es el archivo descriptor, esta
carpeta también contiene a las subcarpetas classes, la cual almacena todas las clases utilizadas en el sistema (Servlets, JavaBeans, clases de java) y lib, la cual almacena las librerías necesarias como por ejemplo las librerías JSTL.
El archivo descriptor web.xml almacena la información de configuración para manejar las peticiones, especifica varios parámetros de configuración como el nombre usado para invocar el servlet, una descripción de servlet, el nombre de clase completamente calificado del servlet y las rutas que hacen que el contenedor de servlets invoque el serlvlet, entre otros parámetros.
Ejemplo básico:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<display-name>Agenda Electronica </display-name> <description>Programacion de citas</description> <context-param> <param-name>javax.servlet.jsp.jstl.sql.dataSource</param-name> </context-param> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>calendario</servlet-name> <servlet-class>SPCalendario</servlet-class> </servlet> <servlet-mapping> <servlet-name>calendario</servlet-name> <url-pattern>/calendario</url-pattern> </servlet-mapping> </web-app>
Debido a que una aplicación Web completa está formada de diferentes recursos como JSPs, Servlets, Applets, imágenes, librerías, páginas HTML, entre otras cosas, la especificación de
servlets define una manera portable para empaquetar todos aquellos recursos que trabajan conjuntamente, gracias a un descriptor que contiene toda la información de configuración tal como requerimientos de seguridad, recursos, etc.
Un archivo WAR (Web Archive) es la distribución portable para una aplicación Web definida por la especificación. Un archivo War puede ser creado con el comando jar de Java o con un programa que preste la utilidad ZIP. Para crearlo con el comando jar es necesario tener la estructura correcta de directorios para nuestra aplicación en Tomcat , acceder a la carpeta principal mediante consola de MS-DOS con el comando cd <<carpeta_principal>> y desde allí ejecutar el comando <<jar cvf carpeta_principal.war *>>.
Al ejecutar la instrucción anterior se crea un archivo con el nombre de nuestra carpeta y la extensión .jar y lo coloca en la carpeta principal de nuestra aplicación. De esta manera al instalar la aplicación en otro servidor web solo es necesario cargar el archivo .war. Para cargar un archivo .war en Apache Tomcat es necesario primeramente acceder al administrador de Tomcat, y en el apartado archivo war a desplegar seleccionar el archivo deseado y dar clic en desplegar como lo muestra la figura 11.
Fig. 11 Carga de un archivo WAR en Tomcat
Para la programación de las clases y servlets, se utilizó JCreatorLe, que es un software que permite compilar y ejecutar las clases en java. En la siguiente figura se presenta la pantalla de trabajo de JCreatorLE (Fig. 12).
JCreator es un herramienta de desarrollo, un IDE, está escrito enteramente en C++ para hacerlo mas eficiente, provee a los usuarios un amplio rango de funcionalidades tales como administración de proyectos, plantillas de proyectos, completar automáticamente el código, interfaz de depuración,
editor de sintaxis resaltado, entre otra cosas.24
Fig. 12 Pantalla de trabajo de JCreatorLE
Este software toma el JDK predeterminado en la maquina local y trabaja con él, es decir, solo tiene cargada las clases del JSE (Java Standard Edition). Para cargar las clases del JEE (Java Enterprise Edition) es necesario configurar el programa; esto se hace ingresando a la opción options del menú Configure, una vez allí en el apartado JDK Profiles, seleccionamos la versión del
24 Jcreator, http://www.jcreator.com/
JDK y la editamos añadiendo los archivos .jar de la carpeta lib de Apache Tomcat como se muestra en la figura 13
Fig. 13 Configuración de JCreator
Para construir las consultas a la base de datos Oracle se utilizó el programa SQLTools y SQLPlus versión 8.
SQL (Structured Query Language), lenguaje estructurado de consulta, es un grupo de comandos que todos los programas y usuarios deben de usar para acceder a los datos de una base de datos, fue desarrollado por IBM usando el modelo del Dr. E. F: Codd cuyo documento fue publicado en 1970, y es ahora aceptado como el modelo definitivo para los Sistemas Gestores de Bases de Datos Relacional.
SQL provee comandos para una variedad de tareas incluyendo: Consulta de datos.
Inserciones, actualizaciones y eliminación de registros en una tabla.
Creación, reemplazo, alteración y borrado de objetos. Acceso controlado a la base de datos y a sus objetos.
Garantizar la consistencia y la integridad de la base de datos.
PLSQL es un lenguaje estructurado de bloque. Un bloque permite agrupar lógicamente declaraciones de este lenguaje con declaraciones SQL. Las declaraciones PLSQL son locales y dejan de existir cuando el bloque termina. Un bloque PLSQL está formado por tres partes, una parte de declaraciones, una parte ejecutable y una parte para el manejo de excepciones.
SQLPlus es un programa en conjunto con SQL y su extensión de lenguaje de procedimientos, PLSQL. SQLPlus permite manipular comando SQL y bloques PL-SQL y realizar tareas adicionales. A través de SQLPlus se puede:
Acceder, editar, almacenar, devolver y ejecutar comandos SQL y bloques PLSQL.
Dar formato, realizar cálculos, almacenar e imprimir resultados de consulta en forma de reportes. Listar las definiciones de columna de cualquier tabla.
Acceder y copiar datos entre bases de datos SQL.
Enviar mensajes a un usuario final y aceptar sus respuestas.
A continuación se muestra las pantallas de trabajo de SQLTools (Fig. 14) y SQLPlus (Fig. 15).
Fig. 14 Pantalla de trabajo de SQLPlus
Fig. 15 Pantalla de trabajo de SQLTools
Finalmente la base de datos sobre la cual se trabajó es la versión 10i de Oracle Express Edition, esta versión se puede descargar gratuitamente desde la página de Oracle, solamente hay que llenar un formulario con datos personales para adquirir una cuenta.
Oracle Database 10g Express Edition (Oracle Database XE) es una base de datos de entrada de footprint pequeño, creada sobre la base de código Oracle Database 10g Release 2 que puede desarrollarse, implementarse y distribuirse sin cargo; es fácil de descargar y fácil de administrar.
Oracle Database XE es una excelente base de datos inicial para25:
Desarrolladores que trabajan en PHP, Java, .NET, XML, y aplicaciones de Código Abierto. DBAs que necesitan una base de datos inicial y sin cargo para la capacitación e implementación. Proveedores Independientes de Software (ISVs) y proveedores de hardware que quieren una base de datos inicial para distribuir sin cargo.
Instituciones educativas y estudiantes que necesitan una base de datos sin cargo para su plan de estudios.
Durante el proceso de instalación de Oracle Express Edition se nos pide ingresar la clave de acceso para el usuario System. Es con esta clave que después ingresaremos al administrador de Oracle para realizar alguna tarea tal como la creación de usuarios, asignación de privilegios, entre otras.
Es sobre esta versión que se crearon las tablas, usuarios, triggers, etc. En la siguiente figura se presenta la pantalla de administración del oracle (Fig. 16).
25 ORACLE, http://www.oracle.com/lang/es/database/express_edition.html
Fig. 16 Pantalla de Administración de Oracle
En Oracle Express Edition, la creación de las tablas se puede hacer mediante línea de comandos SQL o mediante una interfaz proporcionada por Oracle o ejecutando las sentencias desde un archivo externo.
Para ejecutar los comandos de creación de las tablas desde un archivo externo, en el apartado SQL acceder a la opción Cargar del menú Archivo de Comandos SQL, donde seleccionaremos la ruta del archivo que deseamos cargar, y damos click en el botón cargar. Oracle nos mostrará el archivo cargado al cual accederemos (Fig.17) para finalmente ejecutarlo. Oracle nos pedirá confirmar la acción y nos creará la tabla.
Fig. 17 Creación de tablas desde un archivo externo
CAPÍTULO III ANÁLISIS Y DISEÑO
3.1 REQUERIMIENTOS
El proceso real de asignación de citas se da al momento en que un paciente solicita ya sea por vía telefónica (si es paciente de primera vez en alguna de las especialidades) ó por ventanilla (si es paciente subsecuente o ya cuenta con carnet del hospital), una cita en el Hospital General de México en alguna de sus especialidades.
El usuario busca en el sistema actual a partir de la información (especialidad y/o médico) que le proporciona el paciente, la disponibilidad de horarios en las que el médico de cada especialidad puede dar consulta, para finalmente asignar la cita al paciente solicitante. Las citas de primera vez se dan en los horarios de 8 a 11 hrs., mientras que las citas subsecuentes se dan de las 12 hrs. en adelante.
En las siguientes figuras se presenta la pantalla principal del programa de citas del Hospital General de México, la cual fue desarrollada con Oracle Forms (Fig. 18) y la pantalla de asignación de citas del mismo módulo (Fig. 19).
Fig. 18 Pantalla Principal del Programa de Citas
Fig. 19 Pantalla de Captura de Citas
El sistema actual de asignación de citas consta de lo siguiente:
La tabla tespecialidad donde están almacenados los datos referentes a cada especialidad que existe en el hospital. Esta información la ingresa el área de sistemas a petición mediante oficio del área médica.
La tabla tpaciente donde se almacena información referente a todos los pacientes que el hospital ha atendido, esta información se llena cuando el paciente solicita su carnet del Hospital General de México, hay un módulo creado en forms de Oracle destinado para ello.
La tabla tpaciente_cita para aquellos pacientes de primera vez que nunca han sido atendidos en el hospital y no cuentan con carnet y por lo tanto no están registrados en la tabla de tpaciente.
La tabla tmedico almacena información en cuanto a los médicos, es decir, su cedula profesional, si estos dan consulta o no, si hacen procedimientos, etc.
La tabla tmedicoesp, la cual contiene la relación médico-especialidad.
La tabla tconsultorio almacena información referente a la ubicación de los consultorios donde el médico atiende al paciente.
La tabla tturno almacena los rango de horas correspondientes a los turnos matutino y vespertino. La tabla llamada thorario donde se almacenan por cada especialidad los horarios en los turnos matutino y vespertino; esta tabla se llena previamente de acuerdo a la información proporcionada por las especialidades.
La tabla llamada tagendamedico donde se almacenan las fechas en las que el médico puede dar consulta, esta tabla es llenada previamente de acuerdo a la información proporcionada por las especialidades. Un médico puede dar consulta en una o más especialidades.
Una interfaz creada en forms de Oracle que muestra los horarios disponibles por especialidad y medico con el fin de que el usuario final asigne dicho horario (cita) a un paciente, esta asignación queda registrada en la tabla tcita.
Esta interfaz también contiene pantallas para la cancelación de una cita, la confirmación de una cita e impresión de una cita.
Los movimientos realizados por el usuario en el programa como inserciones y modificaciones quedan almacenados en una tabla por un trigger que corre a nivel de base de datos, estos movimientos quedan registrados en la tabla tcitaeve.
El proceso real más reciente en la asignación de citas requiere que los horarios se programen a partir de la disponibilidad en días y horas en las que el médico puede dar consulta y no que un médico herede todos los horarios de la especialidad en la que se encuentra para un día determinado.
Esto en el modelo actual presenta un problema ya que los horarios en la tabla thorario están definidos para cada especialidad, así que cuando un médico tiene su registro en algún día dado en la tabla tagendamédico, este toma todos los horarios de esa especialidad para ese día, lo cual en
la realidad no siempre sucede ya que un médico durante su jornada diaria puede no sólo dar consulta sino también pasar visita a pabellón o realizar algún procedimiento.
El modelo actual por lo tanto requiere cambios en el diseño físico, aparte de los cambios necesarios para trasladar el sistema actual creado en forms de Oracle a un sistema Web.
3.2 MODELO
El diagrama físico actual que utiliza el sistema de asignación de citas se presenta en la siguiente figura (Fig. 20).
Fig. 20 Diagrama Físico actual
Debido a las necesidades del hospital dicho modelo debe ajustarse a los nuevos requerimientos, para lo cual se han modificado algunas tablas y se han creado otras.
Se creó la tabla de ttipohorario, la cual almacena el tipo de horario y una descripción de cada tipo, por ejemplo cada 15 minutos, cada 20 minutos, etc.