INSTITUTO POLITÉCNICO NACIONAL



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

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

Web. Web Diapositiva 1

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

JAVA EE 5. Arquitectura, conceptos y ejemplos.

GLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo.

Capitulo 5. Implementación del sistema MDM

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante

Windows Server Windows Server 2003

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

Proyecto ELO-330 Administración Salas del Departamento de Electrónica RC1. Gerardo Lecaros Felipe Díaz

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

Los mayores cambios se dieron en las décadas de los setenta, atribuidos principalmente a dos causas:

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

DESARROLLO WEB EN ENTORNO CLIENTE

DIPLOMADO EN SEGURIDAD INFORMATICA

Elementos requeridos para crearlos (ejemplo: el compilador)

desarrollo. Dentro del desarrollo de la tesis el proceso de modelado del sistema fue hecho con el

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

CORPORACIÓN MEXICANA DE INVESTIGACIÓN EN MATERIALES, S.A. DE CV

Ingeniería de Software. Pruebas

Introducción a la Firma Electrónica en MIDAS

Capítulo 5. Cliente-Servidor.

Curso de HTML5 y CSS3

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

5.1. Qué es Internet? controla todo el sistema, pero está conectado de tal manera que hace

1. INTRODUCCIÓN Y OBJETIVOS

CAPÍTULO 3 VISUAL BASIC

Programación páginas web con ASP.NET 3.5 (C#)

Sistema de SaaS (Software as a Service) para centros educativos

1 GLOSARIO. Actor: Es un consumidor (usa) del servicio (persona, sistema o servicio).

Introducción a las redes de computadores

Workflows? Sí, cuántos quiere?

SCT Software para la calibración de transductores de fuerza. Versión 3.5. Microtest S.A.

PREPARATORIA DIURNA DE CUAUTLA

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

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

Unidad V: Programación del lado del servidor

CAPITULO I El Problema

Capítulo II. Arquitectura del Software

GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII

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

Ayuda para la instalación Componente Firma Digital INDICE. 1 Configuración previa Configuración Internet Explorer para ActiveX...

Módulo 2. Inicio con Java

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

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

Novedades. Introducción. Potencia

.NET y J2EE VALORACIÓN Y COMPARACIÓN DE LOS ELEMENTOS DE LAS DOS PLATAFORMAS. Definiciones...2 C# y Java...3 Similitudes...4 Ventajas...

Curso de PHP con MySQL Gratis

QUÉ ES UN SERVIDOR Y CUÁLES SON LOS PRINCIPALES TIPOS DE SERVIDORES? (PROXY, DNS, WEB, FTP, SMTP, ETC.) (DV00408A)

LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

INTRODUCCION. Tema: Protocolo de la Capa de aplicación. FTP HTTP. Autor: Julio Cesar Morejon Rios

INFORMÁTICA IE. Términos a conocer y conceptos básicos. World Wide Web (WWW):

CAPÍTULO 5 IMPLEMENTACIÓN DEL SISTEMA

Práctica 6 - Página Web

CAPÍTULO I INTRODUCCIÓN

Arquitectura. 1.- Aplicaciones Web. Definición. Arquitectura clásica. Contenidos. 1.- Aplicaciones Web

SAP BusinessObjects Edge BI Standard Package La solución de BI preferida para. Empresas en Crecimiento

Plataforma desarrollo Java Formación elearning tutorizada en castellano. Fabricante: Java Grupo: Desarrollo Subgrupo: Master Java

Crear un servidor Web en IIS

Capítulo 7. Implementación del Sistema

computadoras que tienen este servicio instalado se pueden publicar páginas web tanto local como remotamente.

Internet Information Server

PORTAL DE INTEGRACIÓN DE BANCOS DE INFORMACIÓN DISPERSOS A TRAVÉS DE WEB SERVICES Autor: Ing. Walther Antonioli Ravetto

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

GUÍA BÁSICA USUARIO MOODLE 2.6

WINDOWS : TERMINAL SERVER

PROPUESTA DE DESARROLLO DE SITIO WEB AVANZADO

PROGRAMACIÓN PÁGINAS WEB CON PHP

Programa de soporte y gestión de incidencias efectivo y fácil de usar

arquitectura que maneja. Encontraremos también los diferentes servidores que

RESUMEN INFORMATIVO PROGRAMACIÓN DIDÁCTICA CURSO 2013/2014

SERVICIO NACIONAL DE APRENDIZAJE SENA SISTEMA INTEGRADO DE GESTIÓN Procedimiento Ejecución de la Formación Profesional Integral GUÍA DE APRENDIZAJE

Capítulo I. Marco Teórico

INTRODUCCIÓN A LA PROGRAMACIÓN WEB UNIDAD. Estructura de contenidos: cisvirtual@ucv.edu.pe. 1.

COLEGIO COMPUESTUDIO

Guía de instalación de la carpeta Datos de IslaWin

INTRODUCCIÓN A JAVA. Índice

Capítulo I. Definición del problema y objetivos de la tesis. En la actualidad Internet se ha convertido en una herramienta necesaria para todas

Reflexión. Inicio. Contenido

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

Capitulo III. Diseño del Sistema.

Dispositivos de Red Hub Switch

1 El trabajo expuesto está subvencionado por el proyecto de la URJC PGRAL-2001/14

Instalación del Software Magaya

LiLa Portal Guía para profesores

M.T.I. Arturo López Saldiña

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA Departamento de Información Académica

BackflipSD Modelo de Diseño

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO

Guía Rápida de Inicio

SISTEMAS DE INFORMACIÓN II TEORÍA

Edición de Ofertas Excel Manual de Usuario

"Diseño, construcción e implementación de modelos matemáticos para el control automatizado de inventarios

Mi propuesta consiste en crear un portal Web que contemple las siguientes funcionalidades:

CAPÍTULO 1 Instrumentación Virtual

Acronis License Server. Guía del usuario

GUÍAS FÁCILES DE LAS TIC

Transcripción:

INSTITUTO POLITÉCNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS AGENDA ELECTRÓNICA WEB DE PROGRAMACIÓN DE CITAS DEL HOSPITAL GENERAL DE MÉXICO T E S I N A QUE PARA OBTENER EL TÍTULO DE: LICENCIADO EN CIENCIAS DE LA INFORMÁTICA 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 BIBLIOGRAFÍA...83

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. i

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. ii

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

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. 2

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. 3

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 4

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 5

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). 6

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 Firefox 6. 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 competidores 7. 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 navegador 9. 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 9

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 10

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 para 10 : 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 11

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/ 12

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 son 15 : 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 13

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 14

Por lo general, los programas en java pasan a través de cinco fases para poder ejecutarse 18 : 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 15

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). 16

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. 17

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 18

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. 19

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 particular 19. 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 JDBC 20 : 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 20

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. 21

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. 22

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/ 23