CENTRO NACIONAL DE INVESTIGACION Y ......Arquitectura Cliente/lnterinediario/Servidor. Proceso de...

149
S.E.P. S.E.I.T. D.G.I.T. CENTRO NACIONAL DE INVESTIGACION Y DESARROLLO TECNOLOGICO cenídet GENERADOR DE CODIGO DE INTERFACES WEB PARA UN SERVIDOR DE BASES DE DATOS DISTRIBUIDAS TESIS Que para obtener el grado de Maestro en Ciencias en Ciencias Computacionales presenta ismael Armando Zúñiga Félix Directores de Tesis Dr. Rodolfo A. Pazos Rangel Dr. Joaquín Pérez Ortega Cuernavaca, Morelos.

Transcript of CENTRO NACIONAL DE INVESTIGACION Y ......Arquitectura Cliente/lnterinediario/Servidor. Proceso de...

  • S.E.P. S.E.I.T. D.G.I.T.

    CENTRO NACIONAL DE INVESTIGACION Y DESARROLLO TECNOLOGICO

    cenídet

    GENERADOR DE CODIGO DE INTERFACES WEB PARA UN SERVIDOR DE BASES DE DATOS

    DISTRIBUIDAS

    T E S I S Que para obtener el grado de Maestro en Ciencias en

    Ciencias Computacionales

    p r e s e n t a ismael Armando Zúñiga Félix

    Directores de Tesis Dr. Rodolfo A. Pazos Rangel

    Dr. Joaquín Pérez Ortega

    Cuernavaca, Morelos.

  • Centro Nacional de Investigación y Desarrollo Tecnológico I

    FORMA C3 REVISION DE TESIS

    Cuernavaca, Morelos Em Dr. Raúl Pinto Elías Presidente de la Academia de Ciencias Computacionales Presente

    Nos es grato comunicarle, que conforme a los lineamientos para la obtención del grado de Maestro en Ciencias de este Centro, y después de haber sometido a revisión académica la tesis denominada: "GENERADOR DE CODIGO DE INTERFACES WEB PARA UN SERVIDOR DE BASES DE DATOS DISTRIBUIDAS", realizada por el C. ISMAEL ARMANDO ZUÑIGA FELIX, y habiendo cumplido con todas las correcciones que le fueron indicadas, acordamos no tener objeción para que se le conceda la autorización de impresión de la tesis.

    Sin otro particular, quedamos de usted.

    Atentamente

    La comisión de revisión de tesis

    q. &,\L-L . M.C. Mario Guillén Rodríguez

    n& M .C. José Ant&io@árate Marceleño

    Dr. Joaquín Pérez Ortega Co-director de tesis Director de tesis

    . . . . C.C.P. Dr. Javier Ortiz Hernández/Jefe del Departamento de Ciencias Computacionales

    INrFRmOR IhTERhADO PALMIRA 5 N. CbERhAVACA, MOR. MEXICO APARTADO POSTAL 5-1G4 CP 62050. CUERNAVACA. TELS.(73)12 2314.12 7 6 1 3 . 1 8 7741 ,FAXí73 ) 12 2434 EMAIL [email protected] cenidef

    1

    I 1 i 1 I i ! I ! I 1 I i 1 1 1 I 1

    ! 1 1 1 1 I 1

  • 1 Centro Nacional de Investigación y Desarrollo Tecnológico

    FORMA C4 AUTORIZACION DE IMPRESION DE TESIS

    Cuernavaca, Morelos

    C. ISMAEL ARMANDO ZUÑIGA FELIX Candidato al grado de Maestro en Ciencias en Ciencias Computacionales Presente

    1 Después de haber atendido las indicaciones sugeridas por la Comisión Revisora de la Academia de Ciencias Computacionales en relación a su trabajo de tesis: “GENERADOR DE CODIGO DE INTERFACES WEB PARA UN SERVIDOR DE BASES DE DATOS DISTRIBUIDAS”, me es grato comunicarle, que conforme a los lineamientos establecidos para la obtención del grado de Maestro en Ciencias en este Centro, se le concede la autorización para que proceda con la impresión de su tesis.

    Jefe del Dept . -de Ciencias Computacionales 9 INTERIOR INTERNADO PALMIRA SIN. CUERNAVACA. MOR. MÉXICO

    EMAIL [email protected]

    APARTADO POSTAL 5-164 CP 62050, CUERNAVACA, TELS.(73)12 2314.12 7613 ,18 7741,FAX(73) 12 2434 cenidet

  • A mi bebé

    A mi esposa Lupita por su ainot*j~ apoyo

    A mis padres y Izeriizanos por su car i fo y animo

  • Agradecimientos

    Al CENIDET, por la oportunidad de realizar la maestría

    Al Coiiacyi por su apoj~o

    A mi asesor de tesis, el Dr. Rodoífo A. Pazos Range1 por el tiempo, coilfianza. y ánimos que me dió para culminar esta tesis

    A los profesores del CENIDET, por compartir conmigo sus conocimientos y experiencias profesionales

    A mis revisores de tesis, M.C. Mario Guillén R., M.C. Huriiberto Hernáiidez G. y M.C. Antonio Zárate M.. por su tiempo y

    apoyo en la revisión de este trabajo

    Al Ing. Jorge Luis Garcia Cantón por su apoyo

    A mis amigos, la familia Panama Tirado, por su amistad, apoyo y monientos inolvidables

    A la familia Martinez Panamá por su amistad

    Y a iodos mis cornparieros y amigos del CENIDET en especial a Mima Cruz y Fabiola Rasgado

  • Tabla de Contenido

    CAPITULO I Iritroducción 1.1 Resumen 1.2 Objetivo 1.3 Alcance 1.4 Beneficios 1.5 Antecedentes

    1.5.1 Desarrollo de SiMBaDD 1.5.2 Versiones Actuales de SiMBaDD

    1.6 Organización del Documento

    CAPITULO I1 Estado del Arte 2.1 Estado del Arte 2.2 Los Server Side Includes 2.3 Las Aplicaciones CGI 2.4 Las Aplicaciones API 2.5 HTML Dinámico 2.6 El Lenguaje Java

    2.6.1 JavaScript 2.6.2 Apliquetes 2.6.3 JDB C

    2.1 ActiveX 2.8 Revisión de Ant~cedentes en Generación de Código

    CAPITULO I11 Planteamiento y Análisis del Problema 3.1 Planteamiento del Problenia

    3. I . 1 Una Aplicación de Base de Datos

    3.2.1 Panorama del SEABD/Web

    3.3.1 El Lenguaje para el SEABDiWeb 3.3.2 Lenguajes para el Código Generado

    3 2 Análisis de la Solución y la Probleniática

    3.3 Soflware Utilizado

    314 Edición de Interfaces Gráficas 3 5 Generación de Código

    9 I O 13 14 15 17 17 18 19 19 21 22

    25 26 27 28 29 30 30 32 33 35

    I

  • CAPITULO IV Diseño e Implementación 4.1 Modelo Conceptual del SEABD/Web 4.2 Arquitectura del SEABD/Web

    4.2.1 Edicióii de Aplicaciones 4.2.2 Generación de Código

    4.3 Estructura de Directorios 4.4 Soflware Involucrado

    4.4.1 Aplicación SEABD/Web 4.4.1.1 Editor de Aplicaciones

    4.4.1.1.1 Iiilerfaz Gráfica 4.4.1.1.2 Editor de Proyecios

    4.4.1.2 Generador de Código

    4.4.2.1 Proyecios 4.4.2.2 Patrones 4.4.2.3 Código Generado

    4.4.2 Código Getierado

    4.4.2.3.1 Aplicación de BD 4.4.2.3.2 Servidor Intermediario

    4.4.3 Estructui-a de Datos 4.5 Modificaciones a SiMBaDD 4.6 Descripción Funcional

    4.6.1 Edición de Aplicaciones 4.6.1.1 Proceso de Creación de Aplicaciones

    4.6.1 . I .1 Generador de Código 4.6.2 Ejecucióii de Aplicaciones

    4.6.2.1 Ubicación del Código 4.6.2.2 Ejecución de Aplicaciones

    4.6.2.2.1 Concurrencia

    CAPITULO V Pruebas Experimentales 5.1 Objetivo de las Pruebas 5.2 Condiciones de las Pruebas 5.3 Plan de Evaluación 5.4 Casos de Prueba

    5.4.1 Pruebas del SEABDíWeb 5.4.2 Pruebas de las Aplicacioiies

    36 37 38 38 38 39 40 40 41 41 43 47 50 50 so 51 51 53 54 55 57 57 57 62 63 63 64 66

    68 69 69 1 2 73 73 74

  • CAPITULO VI Comentarios Finaies 6.1 Conclusiones Generales 6.2 Contribución del Proyecto 6.3 Limitaciones del Trabajo 6.4 Mejoras y Aiiipliaciones al Trabajo

    Referencias

    Anexo A A. 1 Archivo Patrón zapplet.txt A.2 Arcliivo Patrón zpaginaweb.txt A.3 Archivo Patrón zservidoriiii.txt

    Anexo B B.l Ejemplo de Arcliivo de Apliquete zsp-app.java B.2 Ejemplo de Archivo de Página Web zsp - pagweb.htni1 B.3 Ejemplo de Archivo de Pagina Web (Transforinado)

    8 .4 Ejemplo de Arcliivo de Servidor Inierniediario zsp-serviiit.java zsp-pagweb.htiiil

    78

    79 80 80 80

    82

    87 87 93 94

    1 O0 1 O0 130 131

    133

  • Lista de Figuras

    1.1 2.1 2.2 3.1 3.2 3.3 3.4 3.5 3.6 3.1 4.1 4.2 4.3 4.4 4.5 4.6 4.1 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 4.19 4.20 4.21 4.22 4.23 4.24 4.25 4.26

    Acceso e Interaccióii en la Web. Coiiiunicación con BDs. Flujo de Datos Usando Interfaces CGI y API. Aplicaciones ClienteiServidor. Heterogeneidad en Inteinet. Panorama de Uso y Funcioiianiiento. Generación de Código. Ubicación y Uso del Código Generado. Seudocódigo para Recuperar y Salvar Estructuras de Datos en Java, Ejemplos de Interfaces de una Aplicación de Base de Datos. Modelo Conceptual del SEABDIWeb. Arquitectura del SEABD/Web. Estruchira de Directorios y Archivos del SEABD/Web. Interfaz Gráfica del SEABD/Web, Clase VentInicio. Jerarquía de Clases de la Interiaz Gráfica del SEABD/Web, Clase VentInicio. Métodos de la Clase VentInicio. Ejemplo de Ventana "Lista de Ventanas", Clase FrameRelacArbolVP. Jerarquía de Clases de la Lista de Ventanas, Clase FrameRelacArbolVP. Métodos de la Clase FrameRelacArbolVP. Ejemplo de Ventana "Esti-uctura de Ventanas", Clase FranieArbolVentProy. Jerarquía de Clases de la Estructura de Ventanas, Clase FrameArbolVentProy. Métodos de la Clase FranieArbolVentProy. Ejemplo de la Ventana Generación de Código, Clase GenerarCodigo. Jerarquía de Clases de la Ventana Generación de Código, Clase GenerarCodigo. Métodos de la Clase GenerarCodigo. Ejemplo de Página Web. Ejemplo de la Etiqueta "appiet" en el Código I-ITML de la Página Web. Ejemplo de Sistema de Ventanas Implementado en un Apliquete. Estructura de Listas de una Aplicación de BD. Sistema Manejador de Bases de Datos Distribuidas SiMBaDD. Proceso de Creación de Aplicaciones. Ejemplo de Creación de Ventanas. Estructura de Ventanas. Relación entre Ventanas, por Medio de Submenús o Botones. Relación entre Ventanas Mediante la Creación de un Botón. "Lista de Ventanas" y "Estructura de Ventanas".

    3 I O 15 26 21 29 29 30 31 34 31 38 39 42 42 43 43 44 44 45 46 46 47 48 49 51 52 52 54 55 58 58 59 59 60 60

    4.27 Adición de Características y Coniponentes a Ventanas. G I

    1v

  • 4.28 4.29 4.30 4.31 4.32 4.33 4.34 4.35 5.1 5.2 5.3 5.4 5.5 5.6 5.1 5.8 5.9

    Generación de Código. El Generadoi- de Código. Ubicación del Código. Arquitectura Cliente/lnterinediario/Servidor. Proceso de Ejecución de Solicitudes. Modelo Funcional. Flujo de Datos. Concurrencia en el Servidor Intermediario. Ambiente de Ejecución de Aplicaciones. Tablas S, P y SP con la Información Contenida. Ejemplo de Ventana de Tipo Altas, Bajas y Modificaciones Ejemplo de Ventana Diseñada. Ejemplo de Ventana Desplegada Durante Ejecucióii. Ejemplo de Ejecución de Consulta Siiiiple. Resultado de una Consulta con Múltiples Renglones. Resultado con Múltiples Reiigloiies. Consulta con Múltiples Renglones.

    61 62 63 64 64 65 66 66 70 71 72 13 74 75 16 76 77

    V

  • Lista de Tablas

    4.1 Clases que Coiistituyeii al SEARD/Web (Parte 1). 40 . 4.2 Clases que Constituyeii al SEABD/Web (Parte 2). 41

    VI

  • Capítulo 1 Introducción

    En este capítulo se abordan los puntos principales para contextualizar el proyecto de tesis. Específicamente contiene el objetivo de la tesis, el planteamiento del problema, el estado del arte, la iiietodología de solución, su alcance, sus limitacioiies, y el plan de exposicibii.

    I

  • La teiidencia eii la evolucióii de los Sistemas Maiie.jadores de Bases de Datos (SMBD) es el acceder a sus Bases de Datos (UDS) inediante la Web. Con el el presente trabajo se busca que el Sistema Maiiejador de Bases de Datos Distribuidas SiMBaDD', cueiite con esta facilidad de acceso.

    Existe una coiivergencia entre las comuiiicacioiies (medios de coniuiiicación) y los niaiiejadores de bases de datos, la cual genera retos y oportunidades. La explosióii de Iiiteriiet es uno de los priiicipales desarrollos eii redes que tienen profundos efectos eii los manejadores de bases de datos. Así, la actividad en Internet es importante para el futuro de los maiiejadores de bases de datos, simplemente por la diversidad de los depósitos de inforiiiacióii accesibles mediante los manejadores. Aunado a esto, continuamente se iiicrenientan las herramientas de acceso a Internet basadas eii visualizadores [Oz96].

    Esta tesis se ubica dentro del área de sistemas distribuidos del CENIDET*, en la cual se han realizado varias tesis de iiiaestria, pero hasta el inicio de ésta ninguna había iiivolucrado a la Web como objeto de estudio o desarrollo. La misma situación se presentó en el Cinvestav3, dotide eii 1997 se inicia una tesis que involucra a la Web. Esta área de iiivesiigación se está estudiando además eii otros centros, pero para dar solucióii a problemas en el área financiera [Ji97].

    1.1 Resumen

    La presente tesis se encuentra ubicada eii el área de sistemas distribuidos. específicametite en bases de datos, coiitextualizada eii las áreas de Internet y la Web. Eii esta tesis se realizo u11 análisis de estas nuevas teciiologias, lo que Iia permitido eiitender su funcioiiamieiito y aplicación; lo cual dará la base y pauta para futuras iiivestigacioiies y desarrollos.

    Específicametite, en estos ámbitos se busca coiiibinar el potencial de las BDs con la versatilidad de la Web (tendencia actual de las BDDs4). Esto es algo que en la actualidad

    ' &reinn Mnnejadorde &res de &ro.rQisrribiridm ~per i i i i e i i i a i . proyecio del area de Sisiciiiar Distribuidos del CENIDEl (en Cueriiavnca, MOICIOS, MCxico). I'royeclo e~p~r i i i i en ia l dc desarrollo en baser de dalos dislribuidas.

    ' Ceiiiro Nacional de Inverligsción y Iksanollo Tcciioibgico, en Cucrnavaca, Marelor, México. ' Ceiiiro dc Itivesligaci6n y de Bstudios Avanzados del I1,siiIu10 Poliltcnieo Naciotinl, en Mexico D.F. ' Basts de Dalas Diriribuidas. cenidel

    2

  • Capiriila I Iiirrodriccidii

    se está buscando, puesto que la Web (Figura I I ) iios brinda una capacidad dc acccso c iiiteraccióii con el usuario que ningún otro medio de comunicación ha logrado.

    1 Usuario Web Red Mundial Figura 1.1 Acceso e Iiiieraccioii en la Web.

    Se sugiere que debería verse la posibilidad de utilizar la Web para reemplazar fornias tradicionales de aplicaciones disiribuidas clieiite/servidor. Pero para su explotación es iiecesario un nuevo tipo de aplicación de bases de datos que permita a cualquiera, con una coiiexióii Internet y un visualizador de Web, ver, introducir, enviar, consultar datos, y generar informes. En respuesta a tal necesidad se encuentraii, servidores de Internet, por ejemplo Microsoft Internet Informatioii Server (11s) 1.0, Oracle Web Server 2.0, y WebSite Professional 1 .O de O'Reilly & Associates, los cuales ofrecen facilidades para consultar BUS e incorporar los resuliados a páginas Web, así como facilidades para actualizar bases de datos basadas eii iiiforiiiación del usuario. Sin embargo éstas son soluciones en el lado de los servidores, donde el servidor como aplicación contiene las herramientas. A diferencia de io anterior el presente trabajo ataca el problema directamente en el SMBD.

    El propósito de esta tesis es el de iinpleinentar un generador de código de interfaces para aplicaciones de BDs para un SMBD (servidor de consultas distribuidas con arquitectura clieiite/servidor como la versión inás actual del SiMBaDD). Estas interfaces son páginas Web diiiámicas (interactivas) sobre Internet. De esta manera una aplicación de base de datos, en un determinado servidor de Web, puede ser utilizada por un usuario mediante ui! visualizador de Web a través de internet o intranet.

    De acuerdo a lo anterior se iniegró en un solo "paquete" (sistema generador), la generación de páginas Web, la manipulación del sistema inanejador de bases de datos (SMBD), y la intercomunicacióii entre las páginas y el SMBD. Como un producto de investigación para dar solución, en el área de Bases de Datos, a la intercoinuriicación entre los SMBD y la Web.

  • Cap>ím/o / Iii~rodircciúii

    1.2 Objetivo

    El objetivo general de la tesis es el disefio y desarrollo de una herramienta gráfica para generar código de interfaces de aplicaciones de Bases de Datos Distribuidas', utilizando el sisteina manejador de bases de datos distribuidas relaciona1 SiMBaDD.

    Tales interfaces son páginas Web dinámicas6 sobre Internet. Así una aplicación de base de datos, en un determinado servidor de Web', puede ser utilizada por un usuario mediante un visualizador de Web a través de Internet o intraiiet, para acceder a bases de datos iiiaiiipuladas por SiMBaDD

    Específicaniente se busca integrar en u11 sisteina de software el diselio y la generación de páginas Web (a manera de interfaces), la generación de código para permitir acceder al SiMBaDD (concretamente sus bases de datos), y la intercoinunicación entre las páginas y este nianejador.

    Estamos de acuerdo con Stephen W. Plaiii cuando dice: " ... de alguna forma, el Internet es sólo otra plataforma para coinputación clieiiteíservidor. Pero por otro lado, éste es un campo radicalmente diferente que demanda soluciones enteramente nuevas" [PI961 y creemos que este trabajo constituye un avance en esa dirección.

    Cabe resaltar que la preseiiie tesis fornia parte del proyecto global SiMBaDD, que tiene como objctivo realizar investigación y experinientación sobre los Sistemas Mancjadores de Bases de Datos Distribuidas (SMBDDs), contribuyendo a su crecimiento y evolución.

    'Colección de dalos que se ~nc~ientrai i disiribuidos cn uiferenics coiiil>iiladoras. con capacidad de proccsoiiiieiilo aiil6iiorno. en w i a red ' Con capacidad de interaccióci con el ustmrio. Contierie campos para especificar datos. El lieclio de que una pbgiirn sea diiisiriica cs porqiie pilede caiiihiar cada vez que se acceda, en ioriiia dinriivica. sin que iiilenenga el administrador. ' ILlamado lanibikii Sisrento Semidorde Web

  • 1.3 Alcance

    .

    . o

    o

    o

    o

    Se iiiipleiiieiitó uii editor gráfico (sistema generador de código) para generar formularios de altas, bajas, caiiibios y coiisultas, en forma de paginas Web para BDs adiiiinistradas por el servidor SiMBaDD bajo estaciones de trabajo Uiiix.

    Auiique se genera código para altas, bajas; cambios, y coiisultas, solo se puede probai- la realización de coiisultas ya que el servidor SiMBaDD eii su versión para Uiiix no periiiite liacer altas, bajas y caiiibios [Or96a].

    El sisteiiia geiierador sólo se encarga de la geiieracióii de las interfaces para una RD, no de crear la BD.

    Concretainente se realizó una Iierraiiiieiita para generar aplicaciones de interfaz para BDs. Estas interfaces pueden coiisultarse a traves de liiteriiet mediante un visualizador de Web. De esta forma las interfaces tienen la capacidad de interactuar con la BD mediante los protocolos de la Web, y cuenta con un módulo que perinite su intercoinuiiicación. Las interfaces se geiieran específicamente para cada BD eii particular.

    Las coiisultas que se envían al servidor de coiisiiltas se haceii expresaiidose eii el leiiguaje de coiisultas SQL'.

    Las operaciones de coiisulta estáii liiiiitadas a las soportadas por el servidor de bases de datos SiMBaDD, utilizado en el desarrollo de la tesis (ver [Or96aJ).

    ' Siructured Query I.angua.ie, por sus siglas CII iiigiks.

    5

  • 1.4 Beneficios

    El principal beneficio obtenido por este trabajo es el desarrollo de un generador de código de páginas Web dinániicas para el SiMBaDD, que permite economizar tiempo en el desarrollo de la iiiterfaz e iiiiercoiuunicación de aplicaciones de bases de datos con el SiMñaDD. El sistema permite que, a partir de uti editor gráfico, se diseñen las interfaces y se ejecute la generación aulomática de páginas Web para la iiilerfaz. asi como del código necesario para entablar la coiiiunicación entre éstas y la base de datos.

    Uti segundo berieficio, es extender la capacidad del SiMBaDD para poder realizar aplicaciones de bases de datos coti interfaces en el ambiente de Web que perinitan acceder a SiMBaDD a través de Ititeriiet.

    Otro beneficio sería didáctico. Al extender las capacidades del SiMBaDD, se tendrá la posibilidad de realizar aplicacioiies de bases de datos coti interfaz sobre Web, que servirían para que estudiantes e investigadores del CENlDET y de instituciones foráneas, coiiiprendaii y tiiatiipulen, de fornia coiiceptual y práctica los desarrollos de lo que se conoce actualmente como “Web Database” [P196].

    1.5 Antecedentes

    Actualmente el CENlDET cuenta con un cotijuiito de desarrollos en bases de datos distribuidas que se han realizado cooperativamente entre investigadores del CENIDET (en el área de sistemas distribuidos) e investigadores del Instituto de Investigaciones Eléctricas’. Dichos desarrollos conformati la plataforma del proyecto SiMBaDD (Sistema Manejador de Bases de Datos Distribuidas).

    La tesis, como parte del proyecto global SiMBaDD, consiste en la implementacióii de un “módulo” adicional al mismo, para permitir que las bases de datos desarrolladas con SiMBaDD puedan ser inauipuladas via Internet. De esta forma la presente tesis contribuirá al crecimieiito y enriquecimiento de este proyecto global.

    IIE, localizado en Cueriiavaca, Morelos, MCnico

    - -. . . 6

  • Capírulo I Irilrodirccióii

    I

    1.5.1 Desarrollo de SiMUaDD

    7; El nianejador SiMBaDD, como proyecto experimental eii bases de datos ha sido

    desarrollado mediante varias tesis de maestría, y ha tenido por objeto generar tecnología propia en el área de bases de datos distribuidas. A coiitinuacióii se presenta una lista de los proyectos realimdos eii el CENIDET, relacionados coii el presente trabajo:

    . Salvador Rainírez Guzmáii, Desarrollo de un Lenguaje de Manipulación de Datos para un Maiiejador de Bases de Datos Distribuidas [Ra90].

    Víctor M. Arellano M., Precoinpilador del Lenguaje de Manipulación de Datos Basado eii SQL para un Manejador de Bases de Datos Distribuidas Experiiiiental [Ar92].

    e Victor J. Sosa S., Servidor de Bases de Datos Distribuidas [So95].

    Miguel Ortiz M., Servidor de Consultas Distribuidas en Arquitectura Cliente/Servidor LOr96bI.

    En 1994, coii el producto de algunos trabajos desarrollados hasta esa fecha, se integró un núcleo del inanejador de bases de datos distribuidas SiMBaDD.

    1.5.2 Versiones Actuales de SiMRaDD

    A principios de 1996 SiMBaDD fue ampliamente probado y depurado, dando como resultado el SiMBaDD versión 1. I para Windows.

    A fines de 1996, coino producto de una tesis de maestría- se iinpleinentó un servidor de constillas distribuidas en arquilectura clieiiie/serv~dor, ei cual constituye la versión para Uiiix de SiMBaDD. Para dicho servidor se desarrollaron e impleinentaron algoritmos. dentro del SiMBaDD, para el procesainiento de consultas globales en bases de datos distribuidas bajo la arquitectura clieiite/servidor y el procesainiento en paralelo de consultas en diferentes máquinas (bajo Unix) [Or96b].

    c e n i d e I 7

  • Capítulo I Irlri.o

  • Capítulo 2 Estado del Arte

    En este capítulo se presenta el estado del arte, se hace una revisión de las tecnologías relacionadas con el acceso a bases de datos a través de la Web, así como de herramientas desarrolladas para tal fin.

    9

  • Estado del Arte Capitulo 2

    2.1 Estado del Arte

    El presente trabajo involucra el uso de páginas Web interactivas (con capacidades dináiiiicas), las cuales requieren, en esencia, de la irnplementación de programas u otro tipo de software que permitan la interacción entre el visualizador de Web y el servidor de Web. o con el SMBD directamente, para lograr la "comuiiicacióti" con una determinada base de datos. A esto se le conoce como Web database o base de datos en Web (ver Figura 2.1).

    I I Servidor de Web

    Navegador de Web

    SMBD I I

    Figura 2.1 Comunicación con BDs.

    El conocimiento y enteiidimieiito de los niecanistiios de la Web y el HTTP (Hypertext Transfer Protocol), nos pueden ayudar a entender las limitaciones que se tienen al construir aplicaciones de bases de datos sobre la Web.

    El H l T P h e creado para permitir la rápida recuperación de documentos escritos en HTML (Hypertext Markup Language). El vínculo a documentos de hipertexto no requiere de coiiexioiies perdurables desde el cliente (navegador de Web) al servidor de Web; es decir, la conexión que se crea no tiene estado, el navegador de Web crea una nueva conexión para cada objeto de la página Web.

    El HTTP es uti protocolo sin eslado. Una conexión se forma, por el envio de una petición, el resultado es generado y retornado por el servidor, y la conexión se corta. Además la conexióii puede ser cov/ada eft cualquier inornen/o, sin que se pueda saber si la petición fue procesada por el servidor de Web o se perdió; lo cual puede causar problemas al escribir programas para servidor (server-side programs, programas CGI" y servidores con APIs'?) [Pa98a].

    " Coliirnon Galeway Interface, por IUS siglas cn ingl6S. '*Application Programming Iiilerface, pur sus siglas en iiiglCs

    cenidei IO

  • E.ytado del h i e Capíiiilo 2

    A nivel de investigación se han desarrollado soluciones, ya que existe una denianda creciente de acceso a SMBDs desde,la Web. Se Iia detectado la necesidad de salvar la brecha entre 1-ITML y SQI,I3 (Structured Query Langiiaje). Para tal elkcto se ha propuesto iin mecanismo de sustitución de variables general y flexible que proporcione sustitución de variables trans-lenguaje entre entradas de HTML y cadenas de consultas en SQL, así como entre renglones resultantes de SQL y salidas de HTML, permitiendo al desarrollador de aplicaciones usar la capacidad completa de I-I'TML para la creación de formularios de consulta a informes, y de SQL para consultas y actualizaciones [NS96].

    Por otra parte se encuentra el WDB, una interfaz entie la Web y bases de datos relacionales, el cual es un conjunto de Iierraniientas que siniplifica la integración de BDs basadas en SQL dentro del WWW, provee el acceso a BDs sin escribir código, soporta Sybase, Inforniix y niSQL [Ra95].

    Coniercialnieiite se han desarrollado productos de software, los cuales han proliferado y diversificado de acuerdo a dos razones. En primer lugar, tales programas pueden aplicar sus cualidades o ventajas desde tres lugares dentro del entorno de bases de datos en Web: el cliente (navegador de Web), el servidor de Web, o u n servidor de bases de datos. En segundo lugar, los productos han evolucionado desde dos "inundos" diferentes: la administración de datos tradicional y el entorno de Internet.

    De lo anterior, se pueden agrupar las Iierraniientas de administración de bases de datos, orientadas a la Web, en seis distintas categorías [Ki97a]:

    I . Anihienles de descrrrollo de a,~~licaciones clienieLwr.vidor. con exiensi0ne.r para Web. La mayoría de los sistemas actuales de aplicaciones de bases de datos cliente/servidor, coni0 PowerBuilder y Microsoft Visual Basic, han añadido la capacidad de bases de datos en Web. Esto significa la capacidad para trasladar datos hacia y desde páginas de HTML.

    2. Si.t/ernas de administración de bases de datos con exiensiones de Web o .Java. La mayoria de las principales coinpaííias de servidores de bases de datos (Oracle, Inforniix, Sybase, y Microsoft) han añadido capacidades de Web o interfaces de lenguaje Java a sus productos.

    3 . Anibiettles de desarrollo de aplicaciones de Web. Productos que en su mayoría son de compañías orientadas a la Web. Esta caiegoría incluye productos basados en Java y oti-os sistemas que proporcionan ainbientes completos de desarrollo de aplicaciones.

    I' El lenguaje erihiidar de C O I I E U I ~ ~ usada para acceder a SMDDs relacioiislcs. ci 0 ~ - 0 1 1 5

    I 1 cenidef

  • tales coiiio Syinaiitec Visual Cafe, Pciiuiiibra Systems Mojo, y Microsoft Visual IiiterDev.

    Desarrollo de aplicaciones para servidor de Web. Compuesta de productos coino GeniStone Systenis Object/Web, que desarrolla aplicacioiies para .servidores o proporciona servicios para aplicaciones de Web. Esto incluye varios productos que soportaii la división de aplicaciones. También productos como WebBase de ExpeitTelligeiice y WebMater de WebMate lnc., que son servidores de Web.

    Edición e ir~fortnación de bases de daatos en Web. Productos como IiiMagic BD 'Text. Seagate Crystal Reports y Level S/Quest Server, se especializan en recuperar información de bases de datos para (pero no en unirla coil) páginas Web. Estas fuiiciones puedeii ser realizadas por la mayoría del software de bases de datos eii Web, pero los programas de esta categoría son especializados y Iiaceii la mayor parte del trabajo de forinateo y orgaiiizacióii de datos para su preseiitación.

    zI.ite,niediariospara bases de datos en We6 (Web Database Middleware). Se coiicentraii en enlazar páginas Web de niaiiera bidireccional con bases de datos existentes, norinalmente por vía de un servidor de Web. Ciertos productos como Storincloud WebDBC y Allaire Cold Fusion estáii diseñados para persoiias coli experiencia en la adiiiiiiistración de bases de datos, pero otros coino Tango Enterprise de Everyware puedeii mejorar las conexioiies de bases de datos poco inas o menos para cualquier persona.

    Existen paquetes o herramientas de autoria que permiten la creación de paginas Web, proporcionando un rango completo de funcioiialidad de HTML siii necesidad de codificar eii HTML. Muchos proveen CGIs (Comiiioii Gateway Interface), otros proporcioiiaii Iierrainientas para crear interactividad que no requieren scripts (conocidos como scripts, en adelaiite la usarenios) de CGI [SV97a]. De esta foriiia. algunos manejan la característica de permitir consultas a bases de datos, por ejemplo: Microsoft Froiitpage 97 de Microsoft Corp., Hotdog Pro 3.0 de Anawave Software Iiic., Intei-iiet Creator 4.0 de Forman Iiiteractive Corp., Macroinedia Backstage Designer 2 de Macroniedia Corp., y Netobjects Fusion 2.0 de Netobjects Iiic., y Livewire 1.0 de Netscape, entre otros [SV97b y De971.

    Por otra parte, en respuesta a la iiecesidad de conectar las BDs con la Web se eiicueiitran los servidores, por ejemplo, los siguientes tres servidores de Web basados en Wiiidows NT: Microsoft Internet Information Server (11s) 1.0, Oracle Web Server 2.0 y

    cenidet 12

  • Esiadu del Arte Capítulo 2

    WebSite Professional 1 .O de O'Reilly & Associates; los cuales ofrecen facilidades para consultar BDs e incorporar los resultados a páginas Web, y actualizar bases de datos de acuerdo a información especificada por el usuario [SR96a]. Tales facilidades de acceso a BDs se obiienen a través del uso, a bajo nivel, de CGls y APIs (Aplication Prograinnihg Interface) nativos, además Oracle WebServer y WebSite Professional lo hacen a través de Java [SR96b].

    Las soluciones anteriores, como se puede ver, iiiiplícitamente Iiacen uso, para lograr la interaciividad entre las páginas Web y las BDs, de scripts y programas que extienden las capacidades de los servidores de Web, perniitiéndoles producir datos dinámicaniente, así como texto estático y gráficas [Li96a]. De esta forma, las aplicaciones impleinentadas sobre la Web, se comunican con el servidor de Web a través de CGls o a través de APls. por ejemplo NSAPI de Netscape e ISAPI de Microsoft [P196].

    Existen tres formas para perinitir que los servidores de Web (extendiendo sus capacidades) provean datos dinámicamente, así como texto estático y gráficas: el Server Side Includes (SSI), el Connnoii Gateway Interface (CGI) y el Aplication Programming Interface (API). (A estos dos Ultimos se les denomina "server-side programming"). Por otra parte, se encuentra el uso de Java,. el cual también provee esta facilidad pero corre desconectado del servidor de Web. Cada una de estas soluciones es muy diferente de la otra, cada una de ellas tiene sus propias ventajas y desventajas [Li96a].

    2.2 Los Server Side Includes

    El SSI (Server Side Includes) es una forma fhcil que tienen los servidores de Web de insertar pequetlas cantidades de datos dinániicos directamente en documentos de HTML Se usa coinúnrnente para desplegar, por ejemplo, el número de visitante de una página. No se requiere de programación para iinpleinentarlo.

    El SSI puede incluir, dinámicamente un archivo en otro, así como ejecutar u n programa (un guión CGI) y producir cotno respuesta iiiformación tal como la dirección Internet del navegador de usuario o del servidor de Web.

    El SSI no es tan conveniente como lo son los CGIs o los APls para enviar y recibir iiiformación de bases de datos, desde y para un navegador de usuario, ya que no posee las ventajas de programación como esios dos últimos. Además el SSI requiere una cantidad razonable de CPU del sistema y provoca sobrecarga de memoria [Li96a].

    13

  • Estado del Arie Capíiulu 2

    2.3 Las Aplicaciones CGI

    El CGI (Common Gateway interface) es un accesorio que permite a los servidores de Web correr aplicaciones externas que generan documentos de MTML y los regresan al iiavegador del usuario. Los programas CGI pueden interactuar con el navegador de usuario, aceptar datos y a menudo coniuiiicarse con servidores de recursos externos tales como servidores de bases de datos [Li96a].

    Las aplicaciones CGI pueden aceptar datos proveniciites de un servidor (entradas de páginas Web de usuario) procesarlas y retornar datos al iiavegador de usuario (vía el servidor de Web), incluso se puede crear una nueva página Web dinámicanieiite (ver Figura 2.2). De esta forma la creación de páginas puede ser controlada por el usuario [Mc97].

    Los programas CGI son programas diseñados según las especificaciones de la iiiteriaz CGI, que regula el intercambio de inioriiiacióii entre clientes de Web y las aplicaciones situadas (y ejecutadas) en el servidor.

    El cliente de Web, el servidor y el programa CGI pueden estar localizados en cualquier lugar de la red, pueden estar en la misma niáquiiia o en tres diferentes. Por lo regular el servidor de Web y el programa CGI se encuentran en la misma máquina por razones de seguridad, incluso en muchos servidores de Web los programas CGI sólo pueden ser e.jecutados si se encuentran en un directorio particular autorizado (por convención llamado "cgi-bin") [Du96].

    Los scripts CGI pueden ser escritos en cualquier lenguaje capaz de leer datos de la entrada estándar, escribir datos en la salida estándar y acceder al contenido de las variables de entoriio (casi todos los lenguajes de alto nivel cumplen estos requisitos); pero pueden ser escritos en cualquier lenguaje nativo del servidor de Web, incluyendo Perl, C, Ci-+> Basic, IEXX: Pascal, NT sliell (en Unix), o Windows CGI.

    El CGI es altaniente flexible, requiere menos sobrecarga de sistema que el SSI y lo soportan iodos los servidores de Web disponibles. Pero las aplicaciones CGI tienen u n desenipeño notoriamente malo, por lo cual no es sensato usar muchas aplicaciones CGI en un solo servidor de Web [Li96a], ya que la ejecución de los CGts se hace completamente en el servidor, de esta forma, al tener varios progranias CGI ejecutándose en un mismo servidor, se puede ocupar una gran cantidad de tiempo en crear y borrar los procesos

    14

  • CaBíiriilo 2 Esirado del A r k

    necesarios para ejecutar los scripts. Otra desventaja coiisistc en que, a los prograiiias CGI les es dificil mantener el "estado", es decir, no se inantiene la información de un cliente entre una dc sus solicitudes de I-IlTP y la siguiente (un historial de relación) [Go96a]

    Servidor de Web de Web BD

    Navegador SMBD

    L--d 'URI. ds l a Pagiiia IVIM Página de HTMI. k-4

    Consulta (URL)

    Serridor dc Aplicaciones (CUI o APls del Servidor)

    r Conin,ladores dc BD Consulta en SQi. - Consiilta e,, SQL

    Rcsuliado de

    ' Uni1"rln Ilesource Locator Figura 2.2 Flujo de Datos Usatido lnterfaces CGI y API.

    2.4 Las Aplicaciones API

    Las aplicaciones API (Application Programming Interface) son código nativo residente en el servidor de Web, que al igual que los CGIs, extienden las capacidades de los servidores de Web (ver Figura 2.2). A este tipo de programas se le llaina "server-side scripting".

    Las APIs se han iinpleiiientado nativas y propietarias con el objetivo de proveer t in iiiejor funcionamiento al servidor de Web. Por ejemplo, al niaiiipular bases de datos. 1111 APl puede actuar como infeifuz entre el servidor y otra aplicación. Adeinás de estas veiitajas, las aplicaciones API utilizan nienos recursos del sistema que las aplicaciones CGI [Li96a].

    Se mejora el funcionainiento iiicreinentando las habilidades del servidor, agregando el código de las aplicaciones API conio bibliotecas, específicaniente encapsulándolas en una DLL (Dynamic Link Library), la cual es ligada dináinicaniente por el servidor en tiempo de ejecucióii.

    ceiiidet 15

  • E.SIO'l0 del Alle Capírulo 2 -

    Las aplicaciones APl' a diferencia de' las CGIs. pueden inaiiieiier el estado eiitrc solicitudes de clientes.

    A pesar de sus grandes ventajas, las aplicaciones APT son específicas para un servidor en particular según el caso. Además el desarrollo de su código es más complejo, ya que debe manejar múltiples trainas de procesos y limpiar la memoria después de ejecutarse [Co97a].

    Existen comercialmente diferentes APIs, por ejemplo el ISAPl de Microsoft, NSAPl de Netscape, y WSAPl de O'Reilly's [Li96a]. Además de los APIs más comerciales hay otras alternativas; herramientas que agregan funcionalidad a los servidores sin la complejidad de programar coino se hace eii u n A M : D e d i (del ambiente scripting) de ActiveX de Microsoft para el IIS), FastCGl (de Open Market), NSNVBlTF (de Steve Caiiie de Caiiie, Ferber & Gordon), VBCode (de Life.coin), e iHTML (de Inliiie Information Services) [Co97b].

    Recientemente existen eii el mercado versiones actualizadas o nuevos productos. Soluciones como el ASP (Active Server Pages) de Microsoft, el cual equivale a la programación de CGIs y que usa el IIS o el Personal Web Server de Microsofi.

    Netscape ha introducido también habilidades de scripting a sus productos de servidores de Web, y terceros proveedores han desarrollado "plug-ins" de servidores de Web que permiten el uso de scripting en línea con el servidor de Web, como el Cold Fusion Proiessioiial 2.0, de Allaire Gorp.> el inás parecido a ASP porque éste es una adición modular al software del servidor de Web, y es un ambiente orientado a scripts que permite comandos que pueden ser intercalados en docuinentos de HTML, para ser ejecutados en el servidor de Web no en el navegador de Web.

    Los scripts ASP pueden contener scripts tanto para el servidor como para el cliente, los cuales pueden ser escritos en JavaScript o VBScript. Hay etiquetas especiales que pueden ser insertadas en los scripts para que el servidor de Web sepa dónde correr cada guión.

    ASP hace uso del modelo ActiveXKOM de Microsoft, a través de los lenguajes VBScript o Jscript, usando componentes del servidor ActiveX para extender las capacidades base del ambiente. Por ejemplo, usando el componente ADO (ActiveX Data Objects), puede acceder a bases de datos, de esta forma se puede usar ADO para consultar y actualizar BDs vía scripts ASP [Pa98b].

    16

  • Estado del Am capíllllo 2

    Otros productos son Advanced Data Connector de Microsoli Corp., LiveWire Pro 1.1 de Netscape Communications Corp., Tango Enterprise 2.1 de Everyware Development Corp., WebDBC Enterprise 3.0 de Stormcloud llevelopment Corp.. C++Builder Client/Server de Borland International, Informix Data Director for Java de Informix Software Iiic., Informix-Data Director for Web de Informix Software Iiic., Liberty Web Publisher de Liberty Integration Software ínc., y Web Developer Suite de Oracle Corp. [DB98 y Ki97bI.

    2.5 HTML Dinámico

    EL MTML dinámico puede crear aplicaciones de Web sin la necesidad de que el servidor intervenga a la mitad de cada operación que va de un lado a otro.

    EL HTML dinámico de Microsoft permite enlazar elementos de página a los registros de bases de datos. Los registros de bases de datos vivos como las celdas de una iabla pueden desplegarse con facilidad y rapidez como eleineiitos de página. Debido a que el HTML dinámico soporta canibios adecuados para el contenido de la Web, los cuadros pueden reconfigurarse de inmediato en pantalla para reflejar cualquier cambio en la base de datos. Específicamente agrega el nuevo atributo dalusrc a la etiqueta , que nombra un objeto incorporado eii la págiiia. Este objeto creado con la etiqueta contiene paráinetros para definir el tipo de base de datos y el URLI4 del archivo fuente

    En dirección coniraria, forma campos que también pueden ligarse a los registros de la base de datos, perniitieiido por io tanto que la entrada del usuario se canalice directamente hacia la memoria de la base de datos. El HTML dinámico soporta el enlazamiento entre las bases de datosn usando SQL, ODBC o JDBC [We97].

    2.6 El Lenguaje Java

    Java está considerado como un lenguaje sencillo orientado a objetos, distribuido. interpretado, robusto, seguro, de arquitectura natural, portable, de alto rendimiento, concurrente (inultihilo), y dinámico15.

    Uniforiii Resource Locaior. I ' Segim Sun Microsysiem, SLI creadora ti.lva.ruii.coiiildacsl).

    17 cenidel

  • Cnpítirlo 2 Estorlo del Arte

    Java tiene un significado inultidiniensioiinl para los diseñadores de bases de datos. Primero, éste ofrece la promesa de programación independiente de la platafornia para desarrollo de aplicaciones de bases de datos. Segundo, las aplicaciones de bases de datos hoy en día están en aumento dependiendo de las tecnologías de Internet. Podría decirse que muchos de los nuevos sistemas hoy en día son sofisticadas interfaces (gateways) para bases de datos en Web. Java fue construido con Internet en mente, haciendo a Java muy atractivo para el diseño de aplicaciones que usan tecnologías de Internet. Tercero, Java ha sido llaiiiado el sucesor de C/C++, por su facilidad de programación que lo hace atractivo para aplicaciones que no están directamente ligadas con los recursos de sistema de las computadoras. Los programas en Java no acceden directamente a los recursos del sistema y no les es permitido que lo hagan; ellos deben acceder a los recursos del sistema a través del intérprete de Java [Pa98c].

    El lenguaje .Java también permite proveer coiiectividad con bases de datos, pero lo hace de forma diferente a como lo hacen el SSI, los CGIs y los APIs. Los usuarios descargan apfiqirefes (applets) Java'6 incrustados en documentos en HTML para su ejecución local dentro del navegador del usuario, con capacidad para Java; de tal forma que ai correr, el apliquete permite la conexión con u n servidor de bases de datos donde quiera que éste se encuentre [Li96b].

    2.6.1 JavaScript

    Es una versión simple de Java, no es Java en su totalidad. Es un pequeño lenguaje de escritura que complementa las aplicaciones de Java y que corre en el cliente y en el servidor. Las páginas Web escritas en HTML pueden tener código de JavaScript incrustado, como comentario.

    A JavaScript se le denomina guión de cliente (client-side scripting), así como VBScript o Jscript (versiones de JavaScript de Microsoft), ya que se ejecuta en el navegador de Web.

    Los programas JavaScript no son tan poderosos como los escritos en Java, pero son lo suficientemente poderosos para controlar y modificar al manejador.

    Perluchs prograiiias es~rllor en leiigiiiije Java que sc iraiisliereii il iraves de liilcriiel y posieriornicnle re c,ieciilan en In IiiRqiiina local inrepradar en la ventana de visualizaciún del navegiidar, cuma si se iratara de una iinageii iiitegrads.

  • Capítulo 2 i 3ado del Arie

    2.6.2 Apliquetes

    El siguiente avance de JavaScript son los apliquetes (applets) de Java, prograiiias esencialmente completos e independientes. No están insertados en las páginas Web, están ubicados separadamente como objetos a recopilar previamente para ejecutarse en la máquina local del cliente, por un i~isualizador'~ que tiene un intérprete de Java (JVM, lava Virtual Machine).

    Específicaniente Java permite ejecutar programas (apliquetes) en el contexto del iiavegador de Web del usuario. Los progt-amas soli transmitidos al iiavegador como parte del flujo de datos, de esta forma las tareas del servidor se reducen a servir documentos de HTML y los apliquetes al iiavegador. Pero dentro de este mecanismo se necesitan scripts (o el NSAPlln) en el servidor, para cuiiiplir correctamente con las funciones de enviar formularios o nianejar búsquedas y otras nianipulaciones de bases de datos. Independientemente de esto últinio, Java permite a los navegadores de usuario correr programas iiiteractivos independientes del servidor de Web una vez que el apliquete ha sido transmitido [Go96b].

    Los apliquetes están contenidos en archivos clase o fipo (class library) que son versiones compiladas del código fuente de Java, y que se guardan como código de byte que puede ser procesado por la JVM.

    El apliquete es activado por la etiqueta o identificador de HTML, que puede también definir paráiiietros iniciales utilizados por algunos de los arcliivos clase, así como las dimensiones de la ventana que abrirá el navegador para ejecutar el apliquete. Las clases o archivos clase definen los 06jeros o los bloques de construcción de programas, así como su comportamiento y atributos [Ve97].

    2.6.3 JDBC

    Los controladores JDBC (Java Database Connectivity) proveen la especificación y la AP1 para hacer solicitudes de SQL a bases de datos, vinculando objetos de Java con bases de datos relacionales. Estos controladores son descargados de la red como archivos class de Java de manera similar a los apliquetes.

    li Navegadar de Web de usuario. I' API de Neircape.

    19

  • Capiiulo 2 Esiado del Arie

    El JDBC está basado en el estáiidar ANSI SQL-92 que provee características tales como conexión simultánea a una o niás bases de datos. procediiiiieiitos almacenados. iiiaiiejo de transacciones. y cursores [Gr98].

    El JDBC' a diferencia del uso de ,los CGls (sin estado, como se menciona anieriorineiite), es un API de bases de datos estándar, el cual especifica un conjunto de clases que se pueden usar para coiiectarse a una base de datos relaciotial y recuperar datos mientras se mantiene el estado. El API fue diseíiado para implemeiitar la funcioiialidad del estándar ODBC (Open Database Connectivity) de Microsoft. Pero JDBC no es un ODBC para Java, mas bien es un API de características completas que representa un sólido desarrollo orientado a objetos para 'acceder a bases de datos relacionales, de esta forma cosecha todos los beneficios de la programación orientada a objetos. Aunque JDBC iniplemeiita muchas funcioiialidades, lo hace en forma limpia y consistente con el estilo orientado a objetos; en contraste con la colección de funciones y estructuras de datos complejas de ODBC [l'a97].

    En base a Java se han desarrollado herramientas que permiten acceder a informacióii en la Web; por ejemplo. Progress Software Apptivity 2.0, BulletProof Corp. JDesigiierPro 2.3, Netiva 2.0, Sybase/Powersoit Corp. I'owerJ 2.0, Bluestone Software SappliireiWeb 4.0: SilverStream 1 .O, Syiiiantec Visual Cafe 21 .O, y NetDynamics 4.0. Estos productos están enfocados a bases de datos; o sea que fueron diseñados para desarrollar aplicaciones en Java y apliquetes que usan información extraída de bases de datos. El acceso a datos es el corazón del desarrollo de aplicaciones para negocios, dentro y fuera de la Web, por io que estos productos representan un subgrupo importante de las herramientas disponibles para Java.

    Estas herramientas hacen uso de'JDBC para conectarse con las bases de datos. El JDBC se impleinenta como intermediario (middleware), o sea software que opera entre los programas cliente (apliquetes y aplicaciones de Java) y los servidores de bases de dalos, toma las solicitudes de datos por parte del cliente, formula una consulta en la sintaxis adecuada al formato de bases de datos, y luego procesa la información antes de regresarla al cliente Sin embargo la Web presenta oportunidades para desarrollar configuraciones más sofisticadas; muchas de las herramientas antes mencionadas, pueden particioiiar una aplicación en segmentos que corren en clientes (tipicaniente, computadoras con navegadores de Web) y un servidor de Web. A esto se le llama una arquitectura de tres niveles (cliente/servidor de Web/servidor de base de datos), y es una forma eficiente de administrar información en una red.

    cenidel 20

  • .Capirulo 2 Estado del Arie

    SilverStreamo PowerJ, Apptivity: y SapphireiWeb pueden crear aplicaciones que corren en un servidor. Todos estos paquetes usan programación visual para la creación de los apliquetes y las aplicaciones, requiriendo poca programación; se puede desde tomar y soltar componentes (como Apptivity 2.0 y JDesignerPro 2.3): escogiendo entre los mérodos disponibles para cada objeto, haciendo uso de Wizard (como Apptivity 2.0) hasta el uso de lenguajes propios de las herramientas (lenguaje macro como en Netiva 2.0).

    La mayoría de las herramientas hace uso de determinados manejadores de bases de datos propios o de un conjunto de otros proveedoreso así como de determinados servidores de Web para operar (Netiva 2.0), otras requieren modificar las bases de datos para poder usarlas, agregando columnas a sus tablas e incluir procedimientos especiales (como PowerJ) [Ki98].

    2.7 ActiveX

    En un sentido general. ActiveX y Java tratan de lograr el. mismo objetivo: proporcionar interactividad en la Web.

    ActiveX es básicamente un OLEi9 remendado para Internet, con el objeti\;o de migrar el software de escritorio a Internet. Es un paquete (fkmework) de componentes basado en el Common Object Model (COM), a través del cual se puede invocar la API de Windows y OLE.

    ActiveX integra bibliotecas de componentes en la computadora con nuevos controles que son cargados dinámicamente. Esta técnica mejora el funcionamiento en tiempo de ejecución ya que muchos componentes residen ya en la computadora.

    Se puede decir que su mayor ventaja radica en que una vez cargados. los componentes pueden leer y escribir en el ambiente del cliente. La desventaja de ActiveX deriva de la confianza en el ambiente de Microsoft y la necesidad de espacio adicional de disco para las bibliotecas de componentes, ya que a diferencia de Java, al cargar los controles, éstos son almacenados en directorios regulares del cliente para su uso subsecuente; pero la mayor desventaja de ActiveX es la no portabilidad entre las otras plataformas más populares. tales como Unix y Macintosh.

  • Esiadu del 4 v i e Cupi1ulo 2

    Aparte de 10s controles. otros coiiiponentes principales tie AciiveX incluyen .vciYpls (VBScript y Jscript), docunieiitos ActiveX e ISAI’I para soporte eii el servidor. lava también puede iiiteractuar con el anibieiite ActiveX usando .I+-!-’ Iieri-aniieiita de desarrollo de Microsoft [.Mac97 y Wa971.

    2.8 Revisión de Antecedentes en Generación de Código

    Dado que el presente trabajo implica, como parte importante, un generador de código‘ a coiitiiiiiacióii se revisan algunos antecedenies. por e,jeiiiplo:

    Geiieradoi. aiitoriirilico para uii sis lei i in de infi~rii~crci~~n u paríii. del esqueii7a de la ho.w de da/os, el cual es una herramienta CASE (Computer Aided Software Engineering) que a partir del esquema de la base de datos genera, de manera automática, el código de los programas necesarios para realizar las operaciones de altas: bajas, cambios y consultas a una BD, manteniendo la regla de integridad referencia1 del niodelo relaciona1 [Ib96].

    A diferencia de dicho trabajo el presente genera código de páginas Web y archivos de programa, para realizar las operaciones de altas, bajas, cambios y consultas a una base de datos. no a partir del esquema de la base de datos sino a partir de un editor gráfico (de acuerdo a especificaciones que liace un usiiario).

    Geiterndor. nufoiiibfico de j~i.oiocolo.s de comi~nicnciciri. El sistema GASP traduce el lenguaje de especificación LEMEF y genera código en lenguaje C que corresponde al protocolo especificado en el lenguaje LEMEF. Dicho sistema tiene el propósito de facilitar el problema de programación que iniplica la iiiipleineiiiacióii de protocolos de coni~inicacióii. Especificaineiite se encarga de generar código intermedio en lenguaje C. a partir de las ruiinas generales para u n sistema, compilando las especificaciones de autómatas que definen un sistema a desarrollar, en el lenguaje LEMEF [Me98].

    En este trabajo trabajo la generación de código se realiza a partir de las especificaciones de usuario, que se hacen mediante una interfaz gráfica de iiiteracción, no de un lenguaje. Por otra parte, el código que se genera es en los lenguajes Java y MTML. con el objetivo, especificamente, de permitir la interacción de aplicaciones de BDs sobre internet (Web) con el maiiejador SiMBaDD.

    22

  • Gerler.ador de cádigo para Icr7,prIje C ii/iIizurid~~ ii170 rto/nci

  • En esencia dicha tesis busca la geneiacióii del .código equivaleiite a interfaces disefiadas, inediaiiie la adición de objetos gi-áficos, para el iiioiiiioreo de procesos. D e Io cual se puede decir que la difereiicia que guarda coil esta tesis es el objetivo del código a generar, ya que la presente taiiibieii lo hace eii equivaleiicia a iiiteifaces. sólo que estas son aplicacioiies de bases de datos y el código se geiiera eii los lenguajes HTML Java.

    cenidei 24

  • Capítulo 3 Planteamiento y Análisis del Problema

    En este capítulo se hace el plaiiteamieiito y análisis del problema a resolver eii la preseiite tesis, se especifica el software a utilizar, y a grandes rasgos se expone la solucióii que se plantea.

    2 5

  • 3.1 Planteamiento del'Problema

    La presente tesis, pretende que las bases de datos manejadas por SiMBaDD puedan ser accedidas a trabés de Internet, específicaiiiente por la Web.

    Para acceder a uiia base de datos iiiaiie,jada por determinado SMBD. se iiiiplemeiitan aplicaciones de bases de datos, como iiiterfaz de usuario, a traves de las cuales los usuarios pueden manipular las bases de datos. De esta forma, las nplicncior7es soii el medio de coiiiuiiicacioii entre uiia base de datos y 1111 usuario, y la iiiterfuz de muurio es el víiiculo para coiisulta y actualizacióii para la BD.

    7'radicioiialnieiite las aplicaciones y las BDs se iiiiplemeiitaii como sisieiiias clieiiteíservidor, en una red, para permitir que varios usuarios pucdaii usarlas (ver Figiira 3.1).

    L I Figiira 3. I Aplicaciones Clieiiie/Servidor.

    Consideremos la situación que se muestra eii la Figura 3.1. Se pueden identificar tres'elenieiitos que entran en juego al inonieiito de liablar de n,1~/icacior7e.s de bases de doios accedidas a través de una red: los usuarios. la red y las bases de datos. Las BDs eii un SMBD soii una fuente de iiiforniacióii poteiicial, que coino f in y razón de sei- tienen el de proveer información a un determinado conjuiito de clientes o usuarios. Las RDs independientes y aisladas de sus usuarios no tienen razóii de ser; de alii quc. geográficainente hablando, el acceso a una UD depende de una red como iiiedio de coiiiuiiicaciúii.

    La red puede ser tan amplia como el inuiido, lo cual depende del objetivo. del dominio de usuarios, y de las BDs. Si el domiiiio implica "en cualquier lugar", Internet puede ser una buena elección.

    cenidei 26

  • Ahora bien. el acceso a una base de dalos a través de liiieriiel. requiere por u11 lado iiiiplementar las aplicaciones de bases de datos como iiiierlaces sobre la Web, y por otro iiiiplenieiitar la coiiiunicacióii de. tales aplicaciones con el SMBD. I'oiicr las interfaces sobre la Web implica utilizar sus lenguajes y protocolos de coiiiunicacióii, reeiiiplazaiido forinas tradicionales de aplicaciones distribuidas clieiite/servidor; no reemplazando la arquitectura clieiite/servidor, sino siiiipleniente periiiitieiido otra forma de interaccióii clieiite/servidor.

    De esta fornia las aplicacioiies aprovecliaii el alcance mundial de Internet y su periiiisividad de diversas plataforiiias de cómputo, como se ilustra eii la Figura 3.2.

    Figura 3.2 tleiei-ogeiieidad eti I i i ieri iei.

    3.1.1 Una Aplicación de Base de Datos

    Al nioiiieiito de realizar esta tesis, hacer ~ i i a aplicación que iiiteraciuara con SiMBaDD: versión Uiiix, requeriría lo siguiente:

    Hacer la iiiterfaz de la aplicación en algún leiiguaje y el código necesario para inanipular los datos de salida y entrada. Ya que SiMBaDD no cuenta coii iiii iiiedio de interacción entre él y aplicaciones, y su iiiedio de interaccióii coii los usuarios es mediante una iiiterfaz grkfica limitada a ejecución de operaciones, habría que inodificar a SiMBaDD para hacerle llegar las operaciones y para obtener los resultados que produce.

    Además, si agregamos que las inierfaces puedan ser accedidas vía la Web, y que las aplicaciones trabajen eii el ambiente de Internet. los cambios a SiMBaDD se iiicreiiientarían coiisecueiitelnelite.

    Lo que propone esta tesis es preparar a SiMBaDD con las características necesarias para iiiteractuar con aplicaciones de bases de datos y simplificar el proceso de desarrollo de tales aplicaciones.

    21

  • 3.2 Análisis de la Solución y la Probieniática

    El acceso a BDs a través de Internet, iiiiplica que las aplicaciones de BDs y la coiiiiiiiicacióii de tales aplicaciones con las BDs deben inipleiiieiitarse sobre Internet, especificarneiite sobre la Web. Las aplicaciones de bases de datos deben permitir a cualquiei- usuario, con una conexión Internet y un visualizador de Web, consultar y actualizar BDs en determinado sitio de Internet, proporcionando facilidades para iiicoiporar los resultados de consultas en páginas Web, así como para efectuar actualizaciones basadas en información provista por el usuario.

    Básicamente en el anibieiite de la Web: las aplicaciones cliente corren en ~ ina coiiiputadora o en una red coiiiputacional que se comunica a través de la red Internet con un servidor de Web remoto, el cual a su vez interactúa con uii SMBD para manipular una determinada BD.

    Una aplicación de Web básica es simpleiiieiite uii archivo de I-ITML que el cliente descarga del servidor de Web. Este archivo trabaja junto con el navegador de Web eii el cliente, para consultar yio actualizar una base de datos remota. Adeiiiás toda la interacción entre la aplicación y el servidor de Web remoto, se efectúa mediante el protocolo HTTP.

    Con base en lo antes mencionado, la presente tesis proporciona a SiMBaDD la cualidad de publicar en la Web aplicaciones de bases de datos para BDs manejadas por él. Para lo cual se desarrolló un software editor y generador de código de interfaces para la Web, deiioniinado Sistema Editor de Aplicaciones de Bases de Datos en Web (SI3ABDIWeb). Éste es una Iierrainieiita que periiiite’al usuario efectuar la edición visual de interfaces para aplicaciones de bases de datos, y generar el código correspondiente a tal edición: así como el código necesario para que tales interfaces puedan comunicarse con tina BD en paiiicular. Así una aplicación.de base de daios, en u n determinado servidor de Web, podrá ser utilizada.por un usuario mediante un visualizador .de Web a través de Internet o Iiitraiiet, para acceder a BDs iiiane.jadas por SiMBaDD.

    http://aplicaci�n.de

  • 3.2.1 Panorama del SEABI>IWeh

    El proceso de generación de una aplicación de 13D pwa la Web, se inicia con el USO de un editor gráfico (ver Figura 3.3). Dicho editor (que se iiistala en una determinada niáquiiia) periiiite que un diseñador de aplicaciones pueda editar, agregando características gráficas y fuiicioiiales, aplicacioiies de BD para SiMBaDD; destiiiadas a usuarios de Web (Figura 3.4).

    DiseBador de Aplicacioiies { Usuario de Web

    Figura 3.3 Panoraina de Uso y Fuiicioiianiieiiio.

    El disefio va desde la creación, adición y edicióii de coinponentes gráficos y características funcionales de interfaces al usuario que coiiipoiien una aplicacióii de 13D, hasta la geiieracióii del código equivalente a tal aplicacióii (ver Figura 3.4), e instalación correspoiiclieiite para su ejecución y uso por parte de un usuario Web (ver Figura 3.5).

    Editor

    Disefiador

    Figura 3.4 Generacióii de Código

    La últiiiia parte del proceso de generacióii de una aplicación de BD para la Webo consiste en instalar el código generado (página Web, interfaz al usuario y servidor intermediario) en el servidor de Web y en el servidor de BDs (ver Figura 3.5).

    29

  • I I I I /

    Servidor de Web

    Figura 3.5 Ubicación y Uso del Código Generado.

    3.3 Software Utilizado

    En cuanto al software iiivolucrado para la solución presentada en el punto anterior. se pueden ideiitificar dos paiies principales: el lenguaje eii el cual se desarrolló el SEABDíWeb y los lenguajes eii los cuales se genera el código correspondiente a l a edición.

    3.3.1 El Lenguaje para el SEABDlWeb

    Para el desarrollo del SEABD/Web se i-equería de un lenguaje que nos brindara una AI’I no textual, coli cualidades visuales, tanto para la intcrfaz básica del SEABDíWeb coiiio para las opcioiies de diseño y edición que debía incluir.

    Algunas alternativas visuales consideradas Cueroii Visual Basic, Visual C++ y Java. Dado que las plataforinas en las cuales se iinpleiiieiitaii los servidores de Web e liiie1iiei Sori variadas, y que se pretendía que la herrainieiita pudiera ser flexible en su uso, si se quería usar efectivaineiite ahí donde se implenientan las BDs; por lo tanto Visual Basic y Visual C++ se descadaron por estar limitadas a Windows de Microsoft. En consecuencia se eligió al lenguaje Java, el cual promete operación multiplataforina

    30

  • Java proporciona la aiquitcctura apropiada y la tecnología para llevar aplicaciones dinámicas al visualizadoi de Web. Además niediaiiie SLI JVM’” soluciona el probleiiia de multiplaiaíoriiia [Li98J.

    Por otro lado, Java posee un API con buenas características visuales y de iiianejo de datos de iinpleiiieiitacióii relativamente siniple. Adentraiidonos un poco en el diseño del SEABDIWeb? se requería manejar estructuras de datos tales conio lisias ligadas o vinculadas*’ y árboles, los que deben presentarse visualniente y iiianipularse tanto en iiieinoria principal (RAM) como en ineiiioria secundaria (1-ID).

    h i cuanto a la represeniacióii de las lisias ligadas: por e.jeiiiplo. cii C se iiiipleiiieiitan iiiediaiitepunler-os. 1211 Java aunque su paquete ectáiidar no contiene una clase de lista ligada, se puede iinplemeiitar usando indicadores. Estos no existen eii Java ya que no tiene acceso directo a indicadores; es decir, no los puede inanipiilar en forma directa. pero no necesita esta característica, sólo necesita la referencia a un objeto, lo cual es análogo a un indicador [WB98].

    Con respecto a la representación visual de las listas, Java, usando la Clase coiii.sun.,iava.swing.JTree de Swing”; nos permite inipleinentar estructuras de datos de tipo árbol. así como visualizar y seleccionar los eleiiientos en él. Además mediante la clase coiii.suii.java.s~ing.tree.DefaultMutableTreeNode: nos permite ligar y iiianipular los elementos de una lista dobleniente ligada

    RecuperarEstructuraDatos() ( ...

    AbrirArchivo(RutaArchivoEstructuraDatos);. ElernentolnicialEstruciuraDatos = LeerObjetoDeArchivo();

    ...

    I ’ GuardarEstructuraDaios() ( ...

    AbrirArchivo( RutaArchivoEstructuraDatos); EscribirObjetoEnArchivo(ElernentolnicialEstructuraDatos);

    Figura 3.6 Seudocódigo para Recuperar y Salvar Esiructuras de Datos en Java.

    Iiiifrprcie o ’I listruciilra de datos. en la que cada elcnicim C O I I I ~ C ~ C u n vlnc~lo al siguicrile eiem~nlo de la lisia I’ l3iblioicca Al’l de l a v a

    .-. 31

  • Por otro lado, en cuanto a la manipulación de listas y árboles en memoria y disco. Java permite la recuperación y almaceiiaiiiieiito de una estructura de datos, siinplemente recuperando y guardando un objeto a disco. Dicho objeto es el elemento inicial de ia estructura de datos árbol (ver Figura 3 .6 ) . Tal manipulacióii de estructura de datos en otros lenguajes requiere la inipleiiieiitación de tediosas funciones para representar textualmente la estructura de datos en disco, y para su recuperación a memoria necesita la lectiira y aiiálisis sintáctico del mismo.

    3.3.2 Lenguajes para el Cúdigo Generado

    La versión de SiMBaDD usada eii la tesis no cuenta coli un ODBC o JDBC para la coinuiiicacióii entre sus clientes y sus bases de datos, lo cual delimitó la forma en que se desarrollaron las aplicacioiies de bases de datos en Web.

    Lo anterior implicó inipleinentar una solución que permita la comunicación bidireccionai entre las aplicaciones y el SiMBaDD. Considerando que las aplicaciones son sobre la Web y que la arquitectura elegida es del tipo clienteíservidor, se impleinentó un servidor intermediario que fiinge como un coiiector entre el SMBD y las aplicaciones cliente. Este servidor permite la ejecución concurrente de múltiples solicitudes de una o iiiás aplicaciones cliente en ejecución.

    El uso de scripts es la forma inas usada para la implemeiitación de bases de datos en Web, ya sean impleineiitados como CGIs (programados en diferentes lenguajes como Perl, C, C++, etc.) o APIs (propietarios de los servidores de Web).

    Tanto el uso de CGIs como AP1~'puedeii requerir el uso de ODBC o JDBC para la comunicación entre las aplicaciones de BDs sobre la Web (como páginas HTML) y las BDs (a traves de los SMBDs) o la impleinentacióii de prograiiias intermediarios para el caso; controladores que no posee SiMBaDD, por lo cual estas dos opciones se descartaron. De igual manera se descartaron las soluciones con ActiveX, ya que hacen uso de ODBC. y opera sólo eii el ambiente de Microsoft.

    Además, las APls son código nativo residente en el servidor de Web; no son intercambiables (genéricos), limitando la portabilidad entre los servidores de Web más usados. Por otro lado los CGls requieren del uso de formularios en HTML para iiiteractuar coli las aplicaciones CGI, y I-ITML ofi.ece,sóio interfaces muy rudimentarias.

    32

  • I’laidcoiirieiito y A i d i s i s del I’ro6leiri~i . . cup;/u/o 3

    Se planteó proveer^ de interlaces coil cierto grado de sorisiicacióii que brindaran características básicas de las interfaces coiiiuiie~ de sisteiiias de iiiforiiiacióii; de ah¡ que el WIML dinámico se descartó.

    De acuerdo a lo aiites iiieiicioiiado, se optó por usar Java para la iiiipleiiieiitacióii de las aplicacioiies de bases de datos eii ,Web. Los apliquetes de Java ofrecen la posibilidad de coiiiiiiiicar las aplicaciones con SiMBaDD, mediante aplicaciones de Java iiiteriiiediarias, y de proporcionar interfaces con cierto grado de sofisticación que HTML no soporta. Así el código generado está compuesto por código eii IiTMI, (páginas Web), apliquetes de Java y aplicaciones de Java.

    La preseiiie tesis buscó, aprovechar las caractci-ísticas que ofi-ece el leiiguaje lava .para desarrollar aplicacioiies portables, coiicretaiiiente el edi/or de nplicnciories y el código generado por el editor, constituido por la nplicnción de BD y por el servidor iriierriiedinrio (entre las uplicucioiies de BO y SiMBuDD).

    El resultado buscado fue desarrollar un editor capaz de e.jecutarse eii anibieiite iiiuliiplataforiiia, servidores infermedinrios que puedaii usarse en diferentes servidores de Web, y nplicnciories de BDs para los visualizadores de Web más populares

    3.4 Edición de Interfaces Gráficas

    Coiiio se iiieiicioiió en el puiiio anterior. se planteó desarrollar uii paquete para SiMUaDD que permitiera acceder a sus bases de datos vía la Web, y coil el cual se puedaii discliar y editar aplicaciones de bases dc datos.

    Para tal efecto se requiere un editor coli el que se puedan disefiar interfaces al usuario de aplicaciones de bases de datos; es decir, uii ~7rogranm de .Imo que periiiiia generar apliqueles de J u i q como un sistema de ‘interfaces para uiia aplicación de base de datos, y que permita especificar el conjunto de veniunas que contendrá uiia aplicación de base de datos. El paquete debe permitir la edición mediante la seleccióii de opciones para agregar características, coino botoiies, eíiquetas de caracteres, canipos de texto y opciones de seleccióii para vincular o ligar las diferentes ventanas que constituyen una aplicación de BD. En resunien: el sisteina editor debe contar coil las características básicas de edicióii, para obtener interfaces con un cierto grado de sofisticación, silnilares a las que podeinos encontrar eii aplicaciones de bases de datos comuiies.

    cenidef 33

  • CU,,Nir/o 3 . . . I’lotiie

  • 3.5 Generación de Código

    Una aplicación eii particular será representada eii un conjunto de estructuras de datos representativas de la edición y diseño de tal aplicación. Para efectos de iiiaiiipiilacióii, dichas estructuras serán almacenadas como arcliivos. los cuales pueden ser editados, actualizados o eliiniiiados. de acuerdo a la edición realizada con el editor de apl icacioiies.

    Una vez editadas las interfaces de una aplicación. podri obteiierse cI código correspondiente a tales interfaces y el código indispensable para comunicar a tales interfaces con iina BD correspondiente.

    El editor, haciendo uso de las estructuras de datos representativas de una aplicación. podrá generar el código que integra una aplicación de BD, el cual consta de los siguientes iiiódulos: (I) la pigir t& Web que forma parte de la interfaz al usuario de la aplicación, la cual muestra la introducción y la opción de ingreso al sistema; (2) el sisteitin de veirtnrins (interfaces) de in nplicaciórt de BD (apliquete Java); y (3) el servidor interntedinrio (aplicación de Java) entre la aplicación de BD y el SMBI).

    35

  • . .

    Capítulo 4 Diseño e Implementación

    El presente capítulo coiistituye la parte central de la tesis' ya que es aqiii doiide se describe el diseiio y la iiiipleinentacióii del SEABDIWeb. Concretamente se presenta el modelo coiiceptual, la arquitectura y las características fuiicioiiales del sistema; niostraiido el diseiio de proyectos, así como la iinplaiitacióii y funcionainiento de estos últiiiios.

    Además, se compleinentan las descripciones para mayor entendimiento, mostraiido esquemas, dibujos, definiciones de estructuras, etc.

    36

  • 4.1 Modelo Conceptual del SEABDíWeb

    El Sisteina Editor de Aplicaciones de Bases de Datos eii la Web (SEABDIWeb) está coiistituido conceptualmente de tres partes (ver Figura 4.1):

    Ambiente de

    CdiCi(,li

    Geiieradoi- dc

    Cii

  • 4.2 Arquitectura del SEAUDlWeb

    El sisteiiia se eiicuentra estructurado como lo muestra la Figura 4.2. dividiéndose principalniente eii dos partes: la edición de aplicaciones y la generación de código.

    Ijotan

    I SEABqiWeb 1

    Iklrero Campo de l e i l o Mciiil Siihnieni! Fondo

    Edición Adicióii

    r I I I I iiitcrmcdiario , Allas Dalar Modilicaciuiier Colisiiliar M e i i i i

    r

    Figura 4.2 Arquitectura del SEhBDiWeb.

    4.2.1 Edición de Aplicaciones

    Periniie la creacióii y edición de las ventanas que constiiuiráii una aplicación, las cuales pueden ser de tipo altas, bajas, modificaciones, consultas, y menú. A las ventanas se les puede especificar su ubicación, o posición: y sus diiiieiisioiies, así coino adicioiiai componentes y características: botones, letreros, caiiipos de texto, mentís, subiiienús, y color de foiido.

    4.2.2 Generación de Código

    Permite obtener el código correspondiente a las aplicaciones editadas. Dicho código impleinenta la interfaz gráfica de la aplicación de Web y el servidor intermediario. La interfaz gráfica se coinpone de una págiiia Web y un sisieina de veiitaneo (apliquete de Java), constituyendo la interfaz al usuario de la aplicación.

    38

  • 4.3 Estructura de Directorios

    El sisíenia SEABD/Web se encuentra aliiiaceiiado eii una estructura de directorios y archivos (ver Figura 4.3) que permite su funcioiiainieiito, la cual está compuesta por los siguientes subdirectorios:

    o SEABDMeb: subdirectorio principal, dentro del cual se eiicueiitran los archivos tipo clase (class) que iiitegraii a la aplicación editora.

    sisteiiia: acerca de, propósito, uso? etc. pafrotzes, que niaiitiene archivos geiiéricos que sirven de base estructural para la geiieración de código. proyectos, alniaceiia los proyectos que se realizan (uii archivo por cada uno). así como su código (generado) corresp.oiidieiite. Donde un proyecto es el conjunto o sisteiiia de ventanas, con sus características, que representa a una aplicación de BD.

    . ir?fi>rriincion. doiide se eiicueiitran archivos que. i i i i iestraii iiifnriiiaci6ii snhi-e el o

    SEABDlTVeh (Subdirectorio Principal)

    informacion (Iiiioriiiaciúii general sobre cI sistcnia)

    patrones (Plantillas base. para generación

  • 4.4 Software lnvolucrado

    4.4.1 Aplicación SEABürWeb

    El SEABDiWeb es una aplicación de Java para el disefio de aplicacioiies de bases de datos; es decir, aplicaciones de software escritas en el lenguaje Java, las cuales pueden ejecutarse prácticamente en cualquier máquina que soporte Java. Una aplicación de base de datos está constituida de una serie de clases y subclases, como se muestra en las Tablas 4. I y 4.2.

    Ventlnicio

    SalirSalvar

    FraineVeiiProy

    ManipulaArcli

    FraineArbolVentProy FraineRelacArbolVP

    FranieNoinVent

    FraiiieNoiiiV

    FrariieUbicDimeiiVent FrameBarraMeiiu FranieSubMenu

    FraineBotoii

    I>escripcióii 'Clase principal del SEABDIWeb, donde se defineii los objetos principales y c.jr.cuia l a i i i w r í i l ~ grdfica del s i s~c in i i Reprcrcnta la venlana priiicipal. la i i i lerfu gr i l íca al iisuario del SISICIII~ editor. Veiitana de verificacióii de salida del sistema, para el respaldo de la edición del proyecto. Veiitana (fraiiie) base, que representa las ventanas que constituyeii u11 proyecto. Permite l a recuperación y aliiiacenaiiiieiito de los arcliivos que representan la edición de u11 Drovecto.

    urovecto. I . I

    Permite especificar e l iioinbre de las ventanas de proyectos, veiitanas tipo . . altas, bajas, ~nodificacioiies, y coiisultas. Permite especificar e l iionibre;de las veiitanas de proyectos, ventanas tipc menú y ineiisajes. Para especificar l a dirección y las dinieiisiones de las veiitaiia. Para especificar las caracterisiicas de los iiieiiús de las ventanas. Para especificar las características de los submenus de los menús de la barrz de menú de las ventaiias. Para especificar las características de los botones, su manipulación gráfica y almacenamiento. I

    Tabla 4.1 Clases que Constituyen a l SEABDIWeb (Parte I)

    cenidef 40

  • C O / ~ i / U / O 4 Diseño e Irnp/eriier7iacióri

    Nombre de Clase FraineEtiqueta

    FranieCaiiipoTexto

    FrameFondoBG GeiierarCodigo

    ProeresoUar

    Descripción Para especificar las características de los letreros, su inaiiipulación gráfica y aliiiacenainieiito. Para especificar las caractcrlsticas de los canipos de texto. su inaiiipiilacióii gráfica y aliiiaceiiainiento. Para especificar el color de fondo de una veiitana. Permite, mediante cspecificacióii de datos y caiacteristica especiales, la generacióii de código para u11 proyecto, Cuaiitifica rrálícaineiite el uroceso de peiieracióii de código.

    ErrMen Mensajes FranieGralNivelO

    FraineGral clase FraiiieGralNivelO.

    Nodo I Clase quc represeiita las ventanas de uti proyecto, al íorinar parfe de los

    Despliega iiicnsajes de error. Despliega mensajes de t ipo inforiiiación o coinentario. Clase base, priii ier nivel, para el diseiio de veiitaiias, que hereda (exteiids) de la clase Fraiiie de Java. Clase base, nivel dos. paid el disciio de ventanas, que hereda (extends) de la

    deiiicntos de una estructura de datos tipo lista. NodoEtiq I Clase que represeiita los letreros de las ventanas de un proyecto, a l forniar I parte de los elementos de una estructura de datos tipo lista.

    I Clase que representa los caiiipos de texto de las ventanas de un proyecto, al NodoCTexto I foriiiar parte de los eleineiitos de uiia estructura de datos tipo lista. I Clase que represeiita los botones de las ventanas de u11 proyecto, a l formar Nod o B o t o n pnric dc los clciiiciiioc dc ~ i i i ü rstriiciura de dnios iipo lit13 Clasc quc rcpresciiia los iiicniis de las veiitniias dr u11 p rqec io . nl íorin3i pnrtc de los cleiiieiitos de uii:~ estriicturd de Clase qiie rcprcseiiia 10s siibiiieiius dc iiieiiú de las \eiitaiias de un pr~~!ccic>. i l l IJriiidi p i t i e dc 11s slci i iei i im dc uiiii csiriictiirii Jc d:iio$ tino lisia

    NodoMeiiu

    bodiiSiibMcnu

    Tabla 4.2 Clases que Coiistituyeii al SEABD/Web (Parte 2)

    4.4.1.1 Editor de Aplicncioiics

    4.4.1.1.1 Interfaz Gráfica

    Para lograr su propósito, de aplicación editora, el SEABWWeb cuenta con una iiiterfaz al usuario que permite su iiiteraccióii con éste, para lograr el desarrollo de aplicacioiies de BDs. Tal interfaz está implementada principalnietk por la clase Venthicia (ver Figura 4.4), la cual en sí es una interfaz gráfica, como u n objeto que hereda de la clase Franie. Una ventana tipo Frame es la interraz principal de la aplicación, dentro de la cual se encuentran componentes básicos de edición.

    cenideí 41

  • . . r z - 1 . , , , . . I . , , ; : I I , . . : . I 1 - l0l X I Atcni,o Eacon Aaiciun Codyo A y m

    . . ... . ~... . - . - -- - - Figura 4.4 Inicrl'u Grhlica del SEABlYWeb, Clase Vcntliiicio.

    La Figura 4.5 muestra la jerarquía de clases de la interfaz gráfica del editor de aplicacioiies.

    Figura 4.5 Jerarqiiia de Clascs de la Inierfaz Grafica del SEABDIWeb. Clase Vciiilnicio.

    La clase Ventliiicio tiene coiiio función preseiiiar las alternativas de edición y adición, para el diseíio de aplicaciones. Para tal efecto, cuenta con los siguientes métodos básicos para su funcioiianiieiiío (ver Figura 4.6):

    Vertfliiicio(). Método coiisírucior que retoriia el iiiisnio objeio. grrcrrr/wRif/n(). Guarda la rtila doiide se eiicueiiíra instalado el SEABD/Web. actioirPerfornted(). Maiieja los eventos de los submeiiús de la barra de iiienú. wirz~/~ivClr,sir~g(), Sobrescribe el método, el cual se hereda de la clase padre Fraiiie? de cierre de veiitaiia.

    cenidef 42

  • Figura 4.6 Metodos de la Clase Venflnicio

    4.4.1.1.2 Editor de Proyectos

    La clase Ventlnicio trabaja junto con otras clases para la edición de proyectos. A continuación se describen las principales clases que permiten esto:

    Co11suH.3 ile PARTES y PROWEEDONS

    I Figura 4.7 Ejemplo de Ventana "Lista de Ventanas", Clase Fi.aiiieRelacAi-bolVP.

    + FrnnieRelaeArbolVP

    Permite mantener las ventanas que pueden integrarse al proyecto. Específicanieiiie, la clase implementa una ventana que de forma visual (ver Figura 4.7) mantiene un listado de las ventanas de un proyecto que aún no han sido relacionadas e integradas al proyecto en edición. La Figura 4.8 muestra la jerarquía de esta clase.

    Aparte de la presentación visual de las ventanas, esta clase permite la manipulación de las ventanas que pueden ser integradas al proyecto, donde cada elemento visual que aparece, representa una ventana, y permite abrirla, eliminarla, renombrarla, y moverla a la estructura de ventanas. En resuinen, perniite abrir una ventana para hacer la edición y adición de sus características gráficas.

    . . . -. 43

  • I

    FranieRelacArbolVP Clnse LOCO1

    I I I

    AbrirVeiii I5liiiiVeiii Clase Locnl Clase Locol

    C;imbiarNoiiiViiii MovcrAllslriic Close Local . . . . Clore Local

    Figura 4.8 Jerarquía de Clases de la Lista de Ventanas. Clase FrameRelacArbolVP.

    Los métodos iinplementados eii esta clase son los siguientes (ver Figura 4.9):

    FranieRelncArbolVP(). Método constructor que retorna el mismo objeto. valueClinrtged(). Muestra el tipo de ventana. la BD relacionada a una ventana, y el identificador único de la ventana. corrsfrucfMertuBnu0. Coloca la barra de inenú a la ventana. iuindo~uClosirig(). Sobrescribe el método. heredado de la clase padre JFrame, de cieire de ventana

    I'raiiieRelacArbolVP Clase Local

    'fonlaNodoSelec()

    Figura 4.9 Métodos de la Clase FranieRelacArbolVP.

    44

  • ToniaNodoSe/ec(). Obtiene la ruta (path) del nodo seleccionado visualiiiente. CaiirbiarNontV( j . Perinite cambiar el iioiiihre a una ventana. AgregnVeittR( ). I'erinite agregar, a la estructura de esta veiitaiia, uiia veiitana de proyecto transferida desde la Estructura de Veiitaiias.

    + FranieA rbol VeiiíProy

    En resumen, periiiite abrir una ventana para hacer la edición y adición de sus características gráficas, iiicluyendo todas las posibilidades de diseíio que brinda el editor.

    La clase FraiiieAt.boIVentI-'roy tanibiéii perniite iiiaiitener las veiitaiias del proyecto, con la diferencia de que ésta iiiaiitiene de forma visual la estructura de las ventanas integradas a un proyecto (ver Figura 4.10). De forma gráfica despliega eii otra ventana la estructura de árbol que se va formando conforme las ventanas del proyecto se vaii relacioiiando entre si. La Figura 4.1 1 muestra la jerarquía de esta clase

    Figura 4.10 Elemplo de Ventana "Esiruc1ui.a de Ventanas", Clase FiaineArbolVentProy

    En tal jerarquía se puede apreciar que la ventana hereda de la clase JFraine de Swing, la cual nos permite no sólo la presentación visual de elementos. sino hacer cambios entre las posiciones de los elementos. De esta manera, se permite iiianleiier y iiiaiiipiilar el conjunto de relaciones que se forniaii entre las ventanas.

    . ,

  • Cu/,iru/o 4 UI.wño e l i i i i ~ l ~ i i i ~ i i / ~ i ~ ; ~ j i i

    De la iiiisnia manera que la clase ~i.aiiiel~elacArboIVP. cada elemento visual que aparece, representa una ventana que se puede abrir: eliiiiiiiar,' renombrar? y mover a la Lista de Ventanas

    I

    otjecr JOYO. 1oii.F

    -- - AbrirVeni i11slVe111 - Clnse I.OC

  • I;rcirtte~ubnlVerz~~rojProJt(). Método constructor que retorna el misino objeto. vníireC/innged(). Muestra el tipo de ventana. la BD relacionada a una ventana. y el identiíicador único de la ventana. corzstriicl~eriuRnr(). Coloca la barra de meik a la ventana. ivirzdowClosirzg(). Sobrescribe el método, heredado de la clase padre JFraine; de cierre de ventana. TortznNodoSelec(). Obtiene la ruta (path) del nodo seleccionado visiialmente. CnrizbinrNoitzV(). Permite cambiar e l nombre a una ventana. AgregnV’erifE( ). Permite agregar, a la estructura de esta ventana, una ventana de proyecto transferida desde la Lista de Ventanas. CnsoVerrfMerzu(). Abre una ventana de este tipo (clase FrameArbolVentProy) para cspccificar la relación (ligado) cnirc vciitaiias. NirevaVmf(). Permite agregar una ventana a la estructura de datos EstrucArbol.

    4.4.1.2 Generador de Código

    Una vez editado un proyecto. se puede proceder a la gcneración de su código correspondiente, Para lo cual se hace uso de la clase GenerarCodigo para especificar ciertos datos necesarios para la generación de código

    n m c i b n HTTP dondc sc ubicua la páguia Wcb

    I

    Figura 4.13 Ejeniplo de la Ventana Generación de Código, Clase GeiierarCodigo.

    41 cenidel

  • La Figura 4.13 muestra un ejemplo de la ventana Generación de Código, la cual contiene campos para especificar la siguiente iiifoi-inacióii: el título que teiidri la página Web, texto iiitroductorio, texto adicional: las diinensioiies de la ventana donde se desplegará el apliquete, la dirección I-ITTI' donde se ubicará la página Web, la dirección IP donde se Libicará el servidor, y el puerto donde atenderá el servidor.

    La jerarquía de clases de la ventana Generación de Código se puede apreciar en la Figura 4.14.

    GenerarCodigo Clase Local

    KeyEvcniHandler Key EvciiiHaiidler3 Close Local Clase 1,0'01

    KeyEveniiHandlcr2 Close Locol

    Figura 4.14 Jerarquía de Clases de la Veiitaiia Ceiieracióii de Codigo. Clase GeiierarCodigo.

    A continuación se presentan los métodos que se itnplementaii en esta clase (ver Figura 4.15):

    GerrerarCodigo(). Método constructor que retorna el inisino objeto. iviridowC/osiizg(). Sobrescribe el método, heredado de la clase padre JFratiie, de cierre de ventana. actiorrPerfornted(). Maneja los eventos de los subinenús de la barra de menú. MetRec/razarCarac(). Perniile salir de esta opción y elimina la ventana. MetAcepíarCarac(). Inicia el proceso de generación de código.

    cenidet 48

  • cq~i l l l lo 4 . . Diseño e l , i i ~ l e i i i ~ i ~ l ~ i ~ i , j , i

    Verificnr(). Abre la ventana de gencracióii de código. CodigoAppletO. Genera el código del apliquete’ el cual constituye la iiiterfaz de la aplicación de RD. CodigoPngirinNfeb(). Genera el código de la página Web que contendrá al apliquete. CodigoServidorIrif(). Genera el código de la aplicación de Java, la cual constituye el servidor intermediario. ArclzTenzp( ). Crea un arcliivo temporal para el manejo de datos producidos iiiteriiiediariaiiieiite: durante el proceso de generación de código. toninServ( ). Obtiene la dirección IP donde se localizará el proceso cliente de SiMRaDD. fornnVertt(). Genera el código de la declaración de los ejemplares de clase. de las ventanas que coniponen el proyecto. CodigoVerit(). Genera el código de las ventanas, especificaniente el cuerpo de la clase que representa a la ventana. Botones(). Genera el código relacionado a botones de las ventanas. CnriipoTexfo(). Genera el código relacionado a campos de texto de las ventanas. Etiqrretns(). Genera el código relacionado a los letreros de las ventanas. BarrnMenu(). Genera el código relacionado a la barra de menú de las ventanas. 0

    Co

  • 4.4.2 Cúdigo Generado

    4.4.2.1 Proyectos

    Se puede decir que el código generado se obtiene de la edición de aplicacioiies, la cual durante su proceso va almacenando inforiiiacióii eii u n archivo. que refleja el diseíio de una aplicación de BD (ver Figura 4.3; subdirectorio proyec/os). Recibe el nombre geiiérico de proyecto, uii arcliivo que guarda, eii uiia estructura de datos, el diseíio de una aplicación de U D para la Web. Dicho de otra iiiaiiera, representa el coiijuiito de veiitaiias que coiistituye ~ ina aplicacióii de BD.

    Existe uii proyecto por cada aplicacióii de base de datos, cada proyecto es un archivo con extensión ".pro" (Por e.jeiiiplo, Noi77br.eProyeclo.pr.o). En la Figura 4.3 se puede apreciar que, dentro del sisteiiia de archivos del SEABDIWeb, los Proyectos soli almacenados deiitro del subdirectorio pi'oyectos.

    4.4.2.2 Patrones

    El SEABDiWeb hace uso de archivos base, para generar el código correspondiente a una aplicación de BD (proyecto) en particular. Estos archivos patrón (ver Figura 4.3. subdirectorio patrones), sirven de base para la generación de código. Para tal efecto los archivos contienen el formato estructural de los archivos que genera el sistema (para mayor detalle ver Aiiexo A).

    El código generado por el sistema, correspondiente a uii proyecto, consta de tres archivos de código: u11 apliquete de Java, uiia págiiia Web y una aplicación de Java. de tal iiiaiiera que los archivos patrón son tres, uno por cada uno de estos archivos generados: zappiettxt, zpagiiiaweb.txt y zservidorint.txt.

    cenidef 50

  • 4.4.2.3 Código

    En base a lo anterior, para obtener el código correspondiente. el proceso de generación de código se basa en el proyecto, correspondiente a la aplicación disefiada, y en los patrones (para mayor detalle ver Anexo 13, e.jeniplos de archivos generados).

    4.4.2.3.1 Aplicación de BD

    Se puede decir que la aplicación de BD. que constituye la