[UCR]  
[/\]
Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
[<=] [home] [<>] [\/] [=>]

HTML.tab: Herramienta para la consulta y actualización de tablas tridimensionales en WWW

Manuel Cerdas



Indice [<>] [\/] [/\]

Indice
[-] Comité Asesor
[-] Introducción
[-] Objetivos
[-] Objetivo General
[-] Objetivos Específicos
[-] Justificación y Antecedentes
[-] Marco Teórico
[-] Diseño e Implementación de Bases de Datos Tabulares
[-] Formato de los datos tabulares
[-] Diseño del Diccionario de Datos
[-] Consideraciones de Implementación
[-] Tecnologías para la Transferencia de Datos a través de WWW
[-] HTML
[-] Despliegues Tabulares en HTML
[-] Visualizadores de HTML
[-] Consideraciones de Seguridad
[-] Localizadores Universales de Recursos (URL)
[-] Ejecución de Programas en WWW: CGI y Java
[-] Areas de Estudio de la Carrera
[-] Definición de la Modalidad del Trabajo de Graduación
[-] Productos y Resultados
[-] HTML.tab: Herramienta de acceso a Datos Tabulares en WWW
[-] Aplicación de prueba
[-] Guía Hipertextual de la Aplicación
[-] Delimitación de la Investigación
[-] Indice Tentativo del Reporte Final de Investigación
[-] Metodología y Cronograma
[-] Actividades de la Investigación
[-] Plan de Trabajo
[-] Recursos Requeridos
[-] Mecanismos de Evaluación
Bibliografía Tentativa
Indice de Figuras
[-] Figura 1. Código HTML para desplegar "Hola mundo" con su salida
[-] Figura 2. Código HTML necesario para desplegar la Tabla 5
[-] Figura 3. Las partes de un URL
[-] Figura 4. Diagrama del funcionamiento de CGI
Indice de tablas
[-] Tabla 1. Tabla sencilla (tomada de [GRILL84])
[-] Tabla 2. Tabla con dos tablas independientes (tomada de [SANAB96])
[-] Tabla 3. Tabla con 3 tablas subordinadas (tomada de [SANAB96])
[-] Tabla 4. Tabla con tablas anidadas (tomada de [OZSOY85])
[-] Tabla 5. Tabla HTML visualizada (tomada de [CHEON96])

Portada
Acerca del autor
Acerca de este documento
[/\] Principio [<>] Indice [\/] Final

Comité Asesor [<>] [\/] [/\]

      Propongo que el comité asesor de mi trabajo final de graduación, titulado "HTML.tab: Herramienta para la consulta y actualización de tablas tridimensionales en WWW",esté formado por los siguientes distinguidos profesores:
  1. Profesor Adolfo Di Mare, Director
  2. Profesora Gabriela Marín, Asesora
  3. Profesora Gabriela Barrantes, Asesora

      Como muestra de su aval a esta propuesta de investigación, a continuación están las firmas del comité asesor propuesto.


Adolfo Di Mare

Gabriela Marín

Gabriela Barrantes

Octubre, 1996


Introducción [<>] [\/] [/\]

      Las tablas bidimensionales son uno de los métodos más populares para desplegar información. Una tabla permite desplegar y facilitar la comprensión de una gran cantidad de datos, en un espacio relativamente pequeño.

      Las computadoras han sido una herramienta muy importante para manipular información tabular, dado que es muy sencillo representar una tabla en la computadora. Han surgido muchas herramientas que permiten manejar este tipo de información, entre las que podemos mencionar las hojas electrónicas, los procesadores de palabras, que incorporan módulos para crear e imprimir tablas, y las bases de datos relacionales, que utilizan la metáfora tabular para almacenar enormes cantidades de datos.

      Mas no es suficiente almacenar la información, sino que también es necesario hacérsela llegar a quien la necesita. Las redes de computadoras pueden ser utilizadas para este fin. Para este proyecto trabajaremos con la red Internet, más específicamente con su rama gráfica la Gran Telaraña Electrónica (WWW: World Wide Web), ya que esta es la red que tiene mayor cobertura a nivel mundial [CHEON96].

      Existen varias métodos para desplegar tablas en WWW. Sin embargo todas adolecen de algunos inconvenientes. Para desplegar información en WWW se usa el HTML (HTML: HyperText Markup Language, el lenguaje utilizado para desplegar hipertexto) [LEMAY95], lo que permite establecer enlaces entre los servidores WWW de manera simple y transparente. Las extensiones de HTML para desplegar tablas en los documentos, tienen la restricción de que no permiten realizar actualizaciones. Dicho de otra manera, podemos desplegar una tabla, pero no podemos crearla o actualizarla en línea.

      Por otro lado, existen programas manejadores de bases de datos (DBMS: Data Base Management Systems), que permiten efectuar consultas en línea en la plataforma WWW, y despliegan los resultados de las mismas en HTML. Sin embargo, éstos son productos muy caros. Además presuponen un conocimiento técnico por parte de sus usuarios. La salida de estos productos no es de naturaleza tabular, y debe ser traducida a este formato manualmente. Aún más, estas herramientas están orientadas a manejar volúmenes muy altos de información, lo cual dificulta justificar la inversión para quienes solo quieren poner en línea unas cuantas tablas pequeñas.

      El propósito de este proyecto es el de proveer una nueva herramienta para el despliegue y actualización de información tabular en WWW. Esta herramienta deberá permitir crear y actualizar tablas en línea de manera económica y sencilla. Deberá además ser independiente de la plataforma en que se corra, en la medida que las herramientas de desarrollo lo permitan; y debe poder ser usada por personas sin conocimientos técnicos en computación. Junto con la aplicación deberán proveerse guías hipertextuales sobre el uso de la aplicación y sobre las tecnologías subyacentes.

Objetivos [<>] [\/] [/\]

Objetivo General:
      Construir una herramienta capaz de crear y actualizar tablas en línea, en la plataforma WWW - TCP/IP. Esta herramienta se llamará HTML.tab.
 
Objetivos Específicos:
1. Diseñar e implementar la herramienta HTML.tab. Esta herramienta deberá ofrecer la siguiente funcionalidad:
1.1 Permitir la creación de tablas en línea. Es decir, debe permitir hacerlo desde el programa visualizador de WWW.
1.2 Permitir la modificación y actualización en línea de las tablas creadas con esta herramienta, ya sea del contenido de sus celdas, así como de su estructura (i.e cantidad de filas, cantidad de columnas, etc.).
1.3 La herramienta debe ser capaz de manejar tablas anidadas. Se manejarán al menos dos niveles de anidación.
1.4 La herramienta debe ofrecer la opción de transponer la tabla, sin importar si esta está anidada ó no.
1.5 Debe ofrecerse la opción de formatos numéricos. Por ejemplo, si se desea visualizar el número cien mil doscientos setenta y cinco punto cinco, este número se deberá poder visualizar como 100275.5, o como 100,275.50.
1.6 La herramienta permitirá ocultar columnas de la tabla cuando esta se despliegue.
 
2. Definir los requerimientos de la aplicación de prueba de la herramienta HTML.tab.
 
3. Implementar una aplicación de prueba que cumpla con los requerimientos definidos en el punto anterior.
 
4. Confeccionar una guía interactiva sobre el uso y aplicación de esta tecnología.

Justificación y Antecedentes [<>] [\/] [/\]

      Las tablas son una de las maneras más cómodas para desplegar información de manera clara y concisa. Esta manera de representar información es usada en ramas del conocimiento como la Medicina, las Matemáticas, y la Economía. Leer una tabla no requiere conocimientos especiales. Las tablas tampoco requieren mucho espacio para ser desplegadas y son fáciles de construir.

      Lo anterior es particularmente cierto desde el advenimiento de las computadoras. No solo se han creado herramientas especiales para crear y manipular tablas, como las hojas electrónicas; sino que también la estructura de datos tabla es muy usada en distintas aplicaciones, como por ejemplo en las Bases de Datos Relacionales [KORTH88].

      La utilización de la metáfora tabular está muy extendida en la computación. Los programas dedicados al manejo de este tipo de información, las hojas electrónicas, han gozado de una gran popularidad desde su aparición en el mercado. Los procesadores de palabras actuales incluyen módulos para crear tablas. También podemos considerar el caso de los manejadores de Bases de Datos Relacionales que almacenan grandes volúmenes de información en tablas [KORTH88].

      Existen varias maneras de distribuir información tabular a través de medios electrónicos, como por ejemplo mediante sistemas de pizarras electrónicas (BBS: Bulletin Board Systems) [SANAB96]. Sin embargo, existen pocas herramientas para uno de los medios más populares del momento: la red Internet y su acceso a través de la Gran telaraña de Información, conocida en inglés como World Wide Web (WWW).

      WWW es la rama gráfica de la red Internet [LEMAY95]. Esta red se extiende por todo el mundo y ha experimentado un fuerte crecimiento en los últimos años.

      La historia de Internet comienza en 1969, cuando en el Laboratorio Nacional de Física en Inglaterra, se implementa la primera red de conmutación de paquetes en el mundo. Esta red fue seguida por la red ARPAnet de Estados Unidos, en ese mismo año [CHEON96].

      ARPAnet surge de una iniciativa de la Agencia de Proyectos de Investigación Avanzada (ARPA: Advanced Research Project Agency) del Departamento de Defensa de los Estados Unidos. Empezó como una red de conmutación de paquetes, cuyo primer nodo fue instalado en UCLA (UCLA: University of California, Los Angeles) a finales de 1969. En 1970, ARPAnet contaba con 4 nodos. En 1971 había 15 nodos, y para 1973, la cantidad había subido a 37 [CHEON96].

      EN 1973 la Agencia de Proyectos de Defensa de Investigación Avanzada (DARPA: Defense Advanced Research Project Agency), empezó un programa de investigación orientado a encontrar técnicas para conectar distintas redes de conmutación de paquetes. La principal red de redes que surgió de este proyecto fue llamada Internet [CHEON96].

      En 1974, Vinton Cerf y Robert Kahn mostraron el Protocolo Internet (IP: Internet Protocol), y el Protocolo de Control de Transmisión (TCP: Transmission Control Protocol) [CHEON96]. Estos protocolos definen la manera en que se intercambian datos entre redes de conmutación de paquetes. La primera implementación física de Internet involucró una red de paquetes de satélite, una red de paquetes de radio, ARPAnet, y una red Ethernet en el Centro de Investigación de Xerox en Palo Alto, California.

      En 1983 DARPA empezó a convertir las máquinas conectadas a sus redes de investigación al protocolo TCP/IP. La transición a esta tecnología se completó en 1983 cuando DARPA decretó que todas las computadoras conectadas a ARPAnet usarían el protocolo TCP/IP. Fue así como TCP/IP pasó de ser un simple protocolo a ser una plataforma de intercomunicación global [CHEON96].

      De esta manera nació el servidor de nombres de dominios (DNS: Domain Name Server) que es una base de datos distribuida para almacenar los nombres y direcciones de las estaciones en cada sub red conectada a la Internet. Esta base de datos provee la traducción de nombres a números y a la inversa y permite a su vez fragmentar este directorio de computadores de manera que la Internet pueda crecer de manera elegante, sin aumentar indefinidamente el tamaño del directorio de estaciones [PARKE95].

      En 1984 la Fundación Nacional de Ciencia (NSF: National Science Foundation) empezó a conectar sus centros de super computadores con una red de banda ancha llamada NSFnet. Esta red empezó a funcionar en 1986, dándole servicios principalmente a los seis centros de super computadores de la NSF [CHEON96].

      Merit, una organización sin fines de lucro, empezó a manejar la columna vertebral de la red (backbone) de NSFnet en Julio de 1988, después de una alianza con IBM y la compañía de comunicaciones MCI. Esta alianza tenía como objetivo el terminar la primera mejora del backbone de NSFnet: se pasó de un backbone de 56 Kilobits por segundo (Kbps) a uno de 1.544 Megabits por segundo (Mbps). NSFnet se convirtió en el backbone para la colección de redes conocida como Internet [CHEON96].

      A partir de 1986, la NSF financió redes de mediano nivel. Estas redes proveyeron una extensa conectividad a instituciones educativas, a agencias del gobierno, y a empresas comerciales. De esta manera NSF aceleró el ya rápido crecimiento de la Internet [CHEON96].

      En 1990, ARPAnet fue retirada de uso oficialmente, y su papel para todo propósito práctico fue asumido por NSFnet. En este mismo año, NSF crea Servicios Avanzados de Red Incorporados (ANS Inc: Advanced Network Services Incorporated). Esta es una corporación sin fines de lucro, cuyos dueños son IBM, Merit y MCI. Para 1990 ANS toma el control del backbone de NSFnet.

      Aunque la NSF encontró inaceptables ciertos usos del backbone como el uso de NSFnet con fines de lucro, o para fines estrictamente personales, en 1990 el Consejo Federal de Redes, como parte del cuerpo administrativo de Internet, hizo un cambio radical de política. Se eliminó la necesidad del patrocinio de una agencia gubernamental para unirse a la Internet, lo que impulsó enormemente su crecimiento [CHEON96].

      En 1992, al extender el contrato de ANS para administrar NSFnet, NFS se consideró a sí misma como un cliente ANS. Como resultado, las políticas de aceptabilidad de uso de NSF se aplicarían únicamente al tráfico que surgiera de NSF. Para todo propósito práctico se habían abierto las puertas de Internet para su uso comercial [CHEON96].

      En 1989 ocurrió otro importante desarrollo tecnológico: Tim Bernes-Lee, empleado del Centro Europeo para la Investigación Nuclear (CERN: Centre Europien pour la Recherche Nucleaire) propuso un sistema de hipertexto para facilitar el conmutación de información entre los distintos centros de física de alta energía [PESCE96]. En Octubre de 1990 se inició el desarrollo de la World Wide Web, o WWW. Para Navidad de 1990, se mostró el acceso a archivos de hipertexto y a la Internet. Para finales de 1991, una publicación del CERN anunció WWW al mundo [CHEON96].

      WWW permitió el acceso a Internet a todas la personas, ya que no se necesita ser técnico de computación para usar la red, pues WWW la presenta como una combinación de texto, video, audio y gráficos. WWW es a Internet lo que Windows es a las computadoras personales: es un ambiente gráfico intuitivo y fácil de usar que garantiza el acceso a todos los recursos de la red.

      Desde su aparición, a finales de 1991, WWW ha experimentado un crecimiento extraordinario. Para 1994 el tráfico de WWW creció un 1500% [CHEON96]. Para Julio de 1994, WWW había sobrepasado la capacidad administrativa del CERN, que decidió entonces transferir en control de la red a un nuevo grupo llamado la Organización W3. Este grupo es un proyecto conjunto entre el CERN y el Instituto Técnico de Massachusetts (MIT, por sus siglas en inglés). Entre 1994 y 1995 este proyecto fructificó en un conjunto de organizaciones conocido como el Consorcio de la World Wide Web. [CHEON96].

      Es en el contexto de WWW que se debe analizar la investigación hecha en el área de despliegue de información tabular. Se han realizado trabajos sobre el manejo de información tabular, en los cuales se apoya esta investigación. Adolfo Di Mare enfrentó el problema de las bases de datos heterogéneas (como lo sería una base de datos que guardara distintos tipos de tablas) en [DIMAR93]. Posteriormente Alonso Sanabria adaptó el trabajo de Di Mare al caso específico de la información tabular. Para su tesis de licenciatura creó una herramienta que permite la consulta y actualización en línea de información tabular en un ambiente de Pizarras Electrónicas (BBS). Sin embargo, esta solución no es aplicable al ambiente de WWW, ya que hace uso de características propias de un BBS en particular (el Searchlight BBS) y de una herramienta específica de una plataforma particular (FoxPro para MS-DOS) [SANAB96].

      [OZSOY85] analizó el problema del almacenamiento y manejo de tablas estadísticas. En este trabajo se propone un esquema de base de datos para almacenar estas tablas, así como reglas para su manipulación. Este modelo puede se generalizado para otros tipos de tablas.

      En WWW disponemos de herramientas sencillas y baratas que no permiten la creación y actualización en línea. Estas herramientas son de un nivel relativamente bajo, ya que no son expresamente diseñadas para manejar información tabular, sino que pueden simular esa funcionalidad.

      También existen herramientas que sí permiten modificar la información tabular en línea, pero son caras y complicadas. Éstas herramientas son DBMS, con extensiones que les permiten recibir consultas y desplegar resultados vía WWW. Para usar estas herramientas es necesario un conocimiento técnico en el área de bases de datos (alguien tiene que programar las consultas), así como una fuerte inversión en software y equipo (un DBMS puede valer unos $40,000 actualmente).

      Dada la popularidad de las tablas, es razonable suponer que una herramienta que permita la creación y modificación de tablas en línea, de manera económica y sencilla, sería muy importante. Le permitiría a cualquier usuario poner su información tabular en línea, sin importar que éste no tenga conocimientos de computación. Sería una alternativa económica para instituciones que desean poner en línea sus datos institucionales, ya que no sólo se ahorrarían el monto del DBMS con extensiones WWW, sino que las demandas sobre el equipo disminuirían.

Marco Teórico [<>] [\/] [/\]

      En esta investigación se pueden definir dos grandes áreas de interés: las bases de datos tabulares y el diseño de aplicaciones sobre el protocolo TCP/IP.

      Las bases de datos tabulares son relevantes al problema, ya que sin ellas sería imposible almacenar la información para consultas futuras.

      Dado que toda la interacción de la herramienta con el usuario se da a través de la red Internet, las tecnologías involucradas en esta transferencia de datos son indispensables para el desarrollo de este proyecto.

Diseño e implementación de bases de datos tabulares [<>] [\/] [/\]

Formato de los datos tabulares [<>] [\/] [/\]

      Una tabla sencilla puede ser definida como un arreglo bidimensional de celdas que pueden almacenar diversos tipos de información. La Tabla 1 es un ejemplo de este tipo de tabla:

# Peso Agente Analgésico Cantidad en cc Vía #de vasos ligados Cianosis Rel. Curso Post Operatorio
1 20 P.N. 10 I.P 3 + + Normal
2 14 P.N 7 I.P 3 + + Normal
3 16 P.N 8 I.P 4 ++ + Normal
4 22 P.N 11 I.P 4 ++ 0 Normal
5 20 P.N 10 I.P 5 ++ 0 Normal
6 20 P.N 10 I.P 6 ++++ 0 Normal
7 18 P.N 9 I.P 7 ++++ 0 Normal
8 14 P.N 7 I.P 6 ------ -- Anormal

Tabla 1. Tabla sencilla (tomada de [GRILL84])

      Existen otros tipos de tablas además de las tablas sencillas. Estas son las tablas con subtablas . Estas subtablas pueden ser independientes entre si, o pueden estar subordinadas entre ellas. En la Tabla 2 se puede observar un ejemplo de una tabla que contiene dos tablas independientes, y la Tabla 3 muestra una tabla con 3 tablas subordinadas, (mostradas en distintos tonos de gris).

Anexo 1

Salarios de un obrero no especializado de la construcción

de enero 1990 a enero 1994


Salario a enero Salario a agosto

Año

Por día

Por mes

Incremento

%

 

Por día

Por mes

Incremento

%

1990

490.00

12,740.00

     

562.00

14,612.00

   

1991

614.00

15,964.00

3,224.00

25.31%

 

675.00

17,550.00

2,938.00

20.11%

1992

716.00

18,616.00

2,652.00

16.61%

 

811.00

21,086.00

3,536.00

20.15%

1993

852.00

22,152.00

3,536.00

18.99%

 

895.00

23,270.00

2,184.00

10.36%

1994

975.00

25,369.50

3,217.50

14.52%

         

Tabla 2. Tabla con dos tablas independientes (tomada de [SANAB96])

Cuadro No. 12

Número y monto de las créditos formalizados ante el BANHVI

por mutuales de ahorro y préstamo

1990-1991

(Miles de Colones)

     


1990 1991 Total

Mutuales de Ahorro y Préstamo

Cantidad

Monto

Cantidad

Monto

Cantidad

Monto

Mutual la Vivienda

804

464,038.7

621

302,201.5

1,425

766,240.2

Mutual Alauela

1819

1,081,645.7

1557

869,923.9

3,376

1,951,569.6

Mutual Cartago

1667

1,077,445.5

1124

626,165.2

2,791

1,703,610.7

Mutual Heredia

935

585,648.9

749

403,134.1

1,684

988,783.0

Mutual Metropolitana

809

392,394.4

598

165,549.3

1,407

557,943.7

Mutual Puntarenas

386

312,389.5

34

7,736.3

420

320,125.8

Depto. Hipotecario BCAC

130

89,507.5

   

130

89,507.5

Tabla 3. Tabla con 3 tablas subordinadas (tomada de [SANAB96])

      También existen casos en que las tablas contienen tablas en sus celdas. Estas son llamadas tablas anidadas. La Tabla 4 es un ejemplo de este tipo de tabla:

 

1980-COUNT

     

*AGE

 
       

{11,…,40}

 

{41,…,70}

     

M

115

 

70

 

USA

SEX

       
     

F

85

 

60

   

GAME

Alpine- skiing

18

 

3

COUNTRY

           
     

M

75

 

15

 

CAN

SEX

       
     

F

80

 

20

   

GAME

Nordic-skiing

20

 

15

Tabla 4. Tabla con con tablas anidadas (tomada de [OZSOY85])

      La anterior no es una lista exhaustiva de los posibles tipos de tablas, pero ilustra la heterogeneidad que existe en los datos tabulares.

Diseño del diccionario de datos [<>] [\/] [/\]

      La heterogeneidad de los datos tabulares dificulta el diseño de una base de datos que almacene los valores de las tablas. Este problema fue enfocado en [DIMAR93]. En este trabajo se propone el diseño de una meta base de datos, en la que se almacenan los valores y las estructuras de cada tabla, pues una tabla puede ser vista como una base de datos. Posteriormente en [SANAB96] se utiliza este esquema para producir una herramienta que permite la creación y actualización en línea de tablas en un ambiente de BBS. Además propone varias posibles implementaciones para una base de datos para datos tabulares.

      En este esquema en la meta base de datos se almacenan características de la tabla como título, cantidad de columnas, etc. En otras tablas de la meta base de datos se almacena información sobre los formatos de la columna y sobre los formatos de las celdas. Es un esquema de implementación sencilla, aunque requiere recorrer muchas tablas de la meta base de datos para hacer un solo despliegue tabular.

      Otro esquema a considerar es el propuesto en [OZSOY85]. En este trabajo también se utiliza una meta base de datos, distinta la propuesta en [DIMAR93]. Esta meta base de datos está orientada al almacenamiento de tablas estadísticas, que en el fondo son tablas anidadas.

      Para almacenar las tablas descritas en [OZSOY85] se propone in esquema de tablas resumen. En estas tablas las filas y columnas son rotuladas por atributos llamados atributos de categoría, que pueden ser estructurados como un conjunto ordenado de árboles. El conjunto de atributos de categoría de fila (o de columna) forman un camino de la raíz a la fila (o columna) hoja en el árbol de atributos de categoría.

      La principal cualidad del esquema propuesto para almacenar estas tablas jerarquizadas es que es fácilmente generalizable, y requiere menos archivos que el esquema de Di Mare. Sin embargo no se almacena información sobre el formato tabular, lo que dificulta la generación de un despliegue tabular a partir de los datos almacenados.

Consideraciones de implementación [<>] [\/] [/\]

      Es necesario enfocar el problema de la implementación. El método más evidente es implementar este diseño en un DBMS convencional. Sin embargo, los DBMS presentan el inconveniente de que no son independientes de la plataforma en que se ejecutan, y son caros.

      Otra solución más simple es utilizar el sistema de archivos del sistema operativo para guardar cada tabla. Se utilizarían distintos archivos, donde cada archivo correspondería a una tabla; ya sea una tabla de la meta base de datos o una tabla resumen. La ventaja que ofrece este esquema, es que es independiente de la plataforma, pues todos los sistemas operativos tienen sistema de archivos.

      Una vez almacenados los valores de cada tabla, es necesario contar con algún mecanismo para recuperarlos. Dado que no estamos utilizando un DBMS, va a ser necesario crear programas para este propósito. Por consiguiente es necesario escoger un lenguaje de programación para implementar esta funcionalidad, así como mecanismos para que este programa pueda ser accesado a través de WWW.

      En WWW existen dos posibles formas de ejecución para un programa: se pueden ejecutar los programas en el servidor de Internet utilizando la Interfaz Común de Compuertas (CGI: Common Gateway Interface), o se pueden ejecutar en el computador cliente utilizando la tecnología Java. Esos mecanismos se discutirán posteriormente.

      Al utilizar la tecnología CGI, lo que se hace es correr un programa en el servidor. Por ende es necesario crear el programa que correrá en el servidor. Este programa se puede crear en cualquier lenguaje de programación que produzca ejecutables que corran en el servidor.

      La tecnología Java en cambio, permite correr un programa en el computador cliente. A diferencia de CGI, este programa no puede ser implementado en cualquier lenguaje, sino que tiene que ser escrito en el lenguaje de programación Java.

Tecnologías para la transferencia de datos a través de WWW [<>] [\/] [/\]

      En esta sección se discutirán las tecnologías Internet necesarias para poder implementar la herramienta HTML.tab.

HTML [<>] [\/] [/\]

      En WWW los datos se visualizan mediante hipertextos. Estos documentos pueden contener, texto, sonidos, imágenes, video y tablas [HTML96].

      Los hipertextos en WWW están escritos en el lenguaje HTML. Este lenguaje está basado en el lenguaje SGML (SGML: Standard Generalized Markup Language, lenguaje marcador estándar generalizado) [LEMAY95].

      Un archivo HTML es un archivo ASCII (ASCII: American Standard Code for Information Interchange, código muy utilizado para codificar textos). Dicho en otras palabras es un archivo de texto común y corriente.

      Dentro de este texto se encuentran comandos, identificados por estar entre los signos <>, que le indican al programa visualizador lo que debe desplegar.

<head>
<title>Hola Mundo </title>
Hola Mundo
</head>  <body>
<h1>Hola Mundo</h1>
</body>
Hola Mundo
Código HTML Salida en el visualizador
Figura 1: Código HTML para desplegar "Hola mundo", con su salida

      Por ejemplo para crear una pantalla con el mensaje "Hola Mundo" es necesario el código HTML que se observa en la Figura 1.

      HTML ofrece funciones más allá del simple despliegue de hipertextos. También ofrece facilidades para campos de despliegue de datos como por ejemplo cajas de texto y botones de escogencia [BOUTE96].

Despliegues Tabulares en HTML [<>] [\/] [/\]

      Originalmente HTML no podía manejar tablas. Estas le fueron agregadas en la versión 3.0.

      Para desplegar una tabla es necesario incluir varios códigos especiales por cada celda. Esto hace que la creación de una tabla en HTML sea un proceso largo y tedioso. Por ejemplo para desplegar la Tabla 5 es necesario el código HTML de la Figura 2.

    Crecimiento de Dominios de Internet    
Fecha Dominios
Jul 88 900
Jul 89 3.900
Oct 90 9.300
Jul 91 16.000
Oct 92 18.100
Oct 93 28.000
Oct 94 56.000
Ene 95 71.000

Tabla 5. Tabla HTML visualizada (tomada de [CHEON96])

<CENTER><TABLE BORDER="1">

<TR> <TD ALIGN="CENTER" COLSPAN="2">
            &nbsp;&nbsp;&nbsp;
        Crecimiento de Dominios de Internet
           &nbsp;&nbsp;&nbsp; </TD> </TR>

<TR ALIGN="CENTER">
     <TD> <STRONG>Fecha</STRONG>    </TD>
     <TD> <STRONG>Dominios</STRONG> </TD> 
</TR>

<TR ALIGN="CENTER"> <TD> Jul 88 </TD> <TD>    900 </TD> </TR>
<TR ALIGN="CENTER"> <TD> Jul 89 </TD> <TD>  3.900 </TD> </TR>
<TR ALIGN="CENTER"> <TD> Oct 90 </TD> <TD>  9.300 </TD> </TR>
<TR ALIGN="CENTER"> <TD> Jul 91 </TD> <TD> 16.000 </TD> </TR>
<TR ALIGN="CENTER"> <TD> Oct 92 </TD> <TD> 18.100 </TD> </TR>
<TR ALIGN="CENTER"> <TD> Oct 93 </TD> <TD> 28.000 </TD> </TR>
<TR ALIGN="CENTER"> <TD> Oct 94 </TD> <TD> 56.000 </TD> </TR>
<TR ALIGN="CENTER"> <TD> Ene 95 </TD> <TD> 71.000 </TD> </TR>

</TABLE></CENTER>
Figura 2. Código HTML necesario para desplegar la Tabla 5

      En la versión 3.02 de HTML se incluyó el manejo de tablas anidadas. Esto se maneja de forma muy sencilla. Simplemente se define el código de una tabla dentro del código de otra tabla.

Visualizadores de HTML [<>] [\/] [/\]

      Para poder visualizar hipertextos HTML es necesario un programa visualizador (conocido como browser en inglés). Estos programas reciben el código HTML y lo despliegan como un hipertexto. Debe manejar además la comunicación con el servidor WWW [LEMAY95].

      Existen muchos visualizadores en el mercado, algunos ofrecen capacidades adicionales a las mencionadas anteriormente, como por ejemplo capacidad de transmitir mensajes encriptados (para transmisiones seguras) y soporte al lenguaje Java.

      Todas estas funciones son ofrecidas por los programas visualizadores que soportan la versión 3.02 de HTML. Esto es de gran relevancia en la seguridad de la aplicación.

Consideraciones de Seguridad [<>] [\/] [/\]

      Dado que será posible modificar las tablas en línea, va a ser necesario incluir un mecanismo de seguridad, para prevenir modificaciones no autorizadas. Esto se puede lograr mediante un sistema de palabras de paso. Se le puede pedir al usuario una palabra de paso antes de que se le permita modificar una tabla. Si la palabra de paso que digita no es la adecuada, se le denegará el permiso de escritura.

      Este sistema tiene una debilidad. La palabra debe viajar del cliente al servidor a través de WWW. Durante este trayecto la palabra puede ser interceptada y copiada. La solución para esto sería encriptar la palabra de paso antes de enviársela al servidor. Para ello el visualizador tiene que tener capacidades de encriptación. Una alternativa a este sistema es ejecutar una rutina de encriptación escrita en Java.

      Para adoptar estas medidas es necesario que el visualizador provea soporte ya sea a la encriptación o a Java, lo cual es cierto para todos los visualizadores que soportan la versión 3.02 de HTML.

Localizadores universales de recursos (URL) [<>] [\/] [/\]

      HTML maneja los enlaces hacia otros recurso en Internet (por ejemplo otros documentos) mediante localizadores universales de recursos (URL: Universal Resource Locator). Un URL es un mecanismo que permite identificar un recurso en Internet, por ejemplo un documento HTML, un sitio de transferencia de archivos (FTP: File Transfer Protocol), un archivo local, un resultado de una búsqueda de gopher o de archie, etc.

      Un URL consta de cuatro partes, las que se muestran en el siguiente diagrama [CGI96]:

(1) Protocolo   (3) Directorios  
http:// www.yoyodine.com /pub/files/ foobar.html
  (2) nombre del anfitrión   (4) nombre del recurso
Figura 3: Las partes de un URL

      El protocolo representa la manera en que el documento será accesado; esto es el tipo de protocolo o programa que utilizará el visualizador para obtener el archivo. En la Figura 3 se utiliza el protocolo de transferencia de hipertexto (HTTP: HyperText Transfer Protocol), que le indica al visualizador que el recurso debe desplegarse como un hipertexto escrito en HTML.

      El nombre del anfitrión, es el nombre del computador Internet, o servidor, donde se encuentra la información deseada.

      Los directorios indican dónde se encuentra el archivo deseado en el servidor Internet.

     Finalmente, el nombre del recurso que indica cuál es el recurso que se desea accesar [LEMAY95]. Lo usual es que los recursos sean archivos, pero también pueden designar otros tipos de recursos como, por ejemplo, llamadas a programas CGI.

      En la Figura 3 se puede ver que el archivo foobar.html se encuentra en una máquina llamada www.yoyodine.com, en el directorios /pub/files.

Ejecución de programas en WWW: CGI y Java [<>] [\/] [/\]

      Como se mencionó anteriormente existen dos maneras de ejecutar programas a través de la red: CGI y Java.

      CGI es un estándar para interfazar aplicaciones externas con servidores de datos, como por ejemplo servidores WWW [CGI96].

      Un programa CGI es invocado por el servidor con base a la información proporcionada por el visualizador. En la Figura 4 se muestra la secuencia de eventos que resulta en el despliegue de información producida por un programa CGI.

Figura 4. Diagrama del funcionamiento de CGI

      Esta es una breve descripción de lo que ocurre entre el visualizador, el servidor y CGI.

  1. Un localizador universal de URL establece una ruta hacia una llamada a un programa CGI, de la misma manera que lo hace con cualquier documento localizado en un servidor. A través del visualizador solicita el recurso designado por ese URL al servidor.
  2. El servidor recibe la petición, y advierte que el URL establece una ruta a una llamada a un programa CGI, y ejecuta la llamada referida.
  3. El programa CGI se ejecuta, basándose en los datos de entrada que le proporciona el servidor, si es que el visualizador envió algunos. Esta ejecución puede incluir ejecuciones de varios programas residentes en el servidor.
  4. Los resultados de las acciones del programa CGI, le son entregados al servidor, en un formato que el visualizador pueda desplegar.
  5. El servidor le envía los resultados al visualizador, y éste los despliega al usuario final.

      Entre los lenguajes más populares para implementar programas CGI se encuentran C y Perl [CGI96].

      La tecnología Java fue desarrollada por Sun Microsystems [GONZA95]. Java es un lenguaje orientado a objetos derivado de C++ diseñado para ejecutar código en cualquier plataforma de cómputo, con un grado de seguridad [JAVA96].

      A diferencia de CGI, Java corre las aplicaciones en el cliente y no en el servidor. Esto reduce la carga de tráfico en la red y mejora el tiempo de respuesta, ya que cada cliente utiliza sus ciclos de CPU y libera al servidor de hacer ese trabajo [JAVA96]. El programa Java se ejecuta en una máquina virtual en el cliente. Por ende es necesario que el programa visualizador de la capacidad de crear esta máquina virtual [NAUGH96].

Areas de estudio de la carrera [<>] [\/] [/\]

      Para desarrollar este trabajo se necesitará aplicar destrezas que corresponden a las siguientes áreas de la carrera:
  1. Sistemas de información: se requiere para diseñar el sistema, así como la interfaz con el usuario.
  2. Bases de Datos: se requiere para evaluar e implementar el esquema de la base de datos, así como sus consultas.
  3. Programación: se requiere para implementar las consultas, así como los módulos encargados de construir HTML con los resultados de las distintas operaciones.
  4. Procesos Distribuidos: se requiere para trabajar con los distintos protocolos de la Internet y de WWW más específicamente.
  5. Programación Concurrente: se requiere para proteger los recursos que no pueden ser compartidos, y administrar aquellos que si pueden serlo.
  6. Estructuras de Datos: se requiere para buscar la implementación más eficiente de los métodos de manejo de las tablas.
  7. Sistemas Operativos: se requiere para familiarizarse lo más posible con las facilidades que ofrece cada sistema operativo, e intentar hacer el código lo más independiente que sea posible del Sistema Operativo que se esté usando.
  8. Redes: se requiere para hacer el uso más eficiente posible de los protocolos de comunicación.

Definición de la modalidad del trabajo de graduación [<>] [\/] [/\]

      Este trabajo se realizará bajo la modalidad de Proyecto de Graduación en el área de Ingeniería de Sistemas.

Productos y resultados [<>] [\/] [/\]

      En esta sección se discute cuales serán los principales logros que se obtendrán al finalizar el trabajo.

HTML.tab: Herramienta de acceso a datos tabulares a través de WWW [<>] [\/] [/\]

Descripción de la herramienta:

      La herramienta HTML.tab será un programa que se ejecutará a través de la plataforma WWW. Le permitirá a sus usuarios crear y manipular datos tabulares en línea.

      El usuario podrá añadir filas y columnas a cada tabla, así como tablas anidadas. Esto es podrá definir que una celda de una tabla contendrá otra tabla. Se permitirán al menos dos niveles de anidamiento.

      Se deberá ofrecer la capacidad de transponer la tabla, sin importar si esta está anidada dentro de otra tabla o no.

      Además se podrán ocultar columnas y utilizar formatos numéricos, al desplegar los datos.

Requerimientos de la aplicación:

      La aplicación debe permitir crear y actualizar tablas en línea, sin necesidad de que el usuario tenga conocimientos de bases de datos, y un mínimo conocimiento de HTML. Esto último se debe a que será necesario que el usuario incluya al menos una referencia a la aplicación dentro de su documento HTML.

      La aplicación deberá generar el código HTML, necesario para desplegar las tablas, así como los diálogos que permitirán la creación y actualización de las mismas. Se deberá proveer campos de tipo fórmula, esto es, campos cuyo valor sea determinado por los datos de los otros campos, mediante una fórmula dada por el usuario. Además, se ofrecerá la posibilidad de salvar las tablas en disco en ASCII, y de ser posible, en el formato de al menos una hoja electrónica.

Requerimientos Técnicos:

      Esta aplicación debe correr en un servidor WWW. Dado que el lenguaje que se escogerá, debe ser independiente de la plataforma, el servidor puede ser Unix, OS/2, Linux, o Windows NT.

      Para el cliente, bastará con cualquier máquina capaz de correr un visualizador de WWW que soporte la versión 3.02 de HTML.

Restricciones de la aplicación:

Aplicación de Prueba [<>] [\/] [/\]

      Para probar el producto HTML.tab, se pueden implementar varias aplicaciones, entre las cuales están las siguientes:
  1. Lista de Clases de la Escuela de Ciencias de la Computación e Informática.
  2. Procedimiento para la Confección de Presupuestos de los Gobiernos Locales.
  3. Base de Datos de Indicadores de Vivienda del Sistema de Información de Vivienda y Asentamientos Humanos.
  4. Lista de Clases de la Escuela de Ingeniería Civil.

      La aplicación se escogerá durante el desarrollo del Trabajo Final de Graduación, de acuerdo a las técnicas que sea necesario probar en la herramienta HTML.tab.

Guía hipertextual de HTML.tab [<>] [\/] [/\]

      Este documento no sólo explicará cómo instalar y utilizar la aplicación, sino que además, proveerá una descripción de la tecnología que utiliza ésta para funcionar. Deberá incluir secciones dedicadas a HTML, CGI, y otras tecnologías de WWW. Esta guía deberá estar disponible para visualizarse como un hipertexto HTML.

Delimitación de la Investigación [<>] [\/] [/\]

Restricciones de cada aplicación:

Reporte final de la investigación:
      En el reporte final de investigación se discutirán los siguientes puntos:

      A continuación se muestra un índice tentativo para el reporte final de la investigación, el cual puede servir como referencia del contenido que tendrá el trabajo al final.

Indice Tentativo del Reporte Final de Investigación [<>] [\/] [/\]

[1] Introducción
[2] Objetivos
[3] Marco teórico
[4] Diseño de la herramienta HTML.tab
[4.1] Diseño del Diccionario de Datos
[4.2] Consideraciones de implementación
[4.2.1] CGI
[4.2.1.1]   Lenguaje de programación C
[4.2.1.2]   Lenguaje de programación Perl
[4.2.2] Java
[5] Implementación de HTML.tab
[5.1] Modelo utilizado
[5.2] Interacción con el servidor HTTP
[5.3] Transparencia y concurrencia
[6] Aplicación de HTML.tab
[6.1] Requerimientos de la aplicación
[6.2] Restricciones de la aplicación
[6.3] Dificultades encontradas
[7] Evaluación de resultados
[8] Conclusiones
[8.1] Posibilidades de ampliación
[8.2] Direcciones de investigación futura
[9] Bibliografía
[10] Anexos

Metodología y Cronograma [<>] [\/] [/\]

      Para organizar el trabajo de investigación se han definido algunas actividades y un plan o cronograma general de trabajo, que se detallan a continuación.

Actividades de la Investigación [<>] [\/] [/\]

      Las principales actividades identificadas son:

Plan De Trabajo [<>] [\/] [/\]

Actividad Mes NOV DIC ENE FEB MAR ABR
Diseño de la aplicación  XXX           
Selección de herramientas  XXX           
Implementación y prueba    XXX   XXX   XXX     
Creación de la guía hipertextual      XXX   XXX     
Escritura del reporte        XXX   XXX   XXX 

Recursos requeridos [<>] [\/] [/\]

      Para implementar la herramienta HTML.tab, serán necesarios los siguientes recursos:

Mecanismos de Evaluación [<>] [\/] [/\]

  1. Durante su elaboración el proyecto puede ser evaluado periódicamente en reuniones con el Comité Asesor.
  2. Todo el Comité Asesor ha leído y avalado la propuesta inicial.
  3. Para evaluar el reporte final del proyecto, se compararán los resultados obtenidos y conclusiones de la investigación, con los objetivos establecidos en esta propuesta.
  4. Para evaluar la aplicación, se considerará el aporte que la aplicación pueda dar, pues será una de las primeras aplicaciones de este tipo en nuestro país, además de considerar la funcionalidad y aplicabilidad que el producto final pueda tener.
  5. Específicamente podemos mencionar los siguientes mecanismos de evaluación del trabajo:
    1. Aplicación HTML.tab depurada y funcionando de manera que satisfaga todos los objetivos planteados.
    2. Aplicación de Prueba.
    3. Guía hipertextual de la aplicación.
    4. Reporte de Investigación.
    5. Reuniones periódicas con el Comité Asesor.


Bibliografía tentativa [<>] [\/] [/\]

[AHO88] Aho, Alfred V. et al.: Estructuras de Datos y Algoritmos, Addison-Wesley Iberoamericana, México, 1988.
[BARAN95] Baran, Nicholas: The Greatest Show on Earth, BYTE, Volumen 20, N° 7, Julio de 1995.
[BERGH95] Berghel, H.: Using the WWW test pattern to check HTML client compliance, Computer, Volumen 28, N° 9, Setiembre de 1995.
[BOUTE96] Boutell, Thomas: CGI Programming in C & Perl, Addison-Weley Developers Press, 1996.
[CARLS95] Carlson, B.: A jolt of Java could shake up the computing community, Computer, Volumen 28, N° 11, Noviembre de 1995.
[CGI96] The Common Gateway Interface, http:// www.lib.cuhk.edu.hk /~terence/documents/cgi/, 1996.
[CHEON96] Cheong Fah-Chun: Internet Agents: Spiders, Wanderers, Brokers, and 'Bots, New Riders Publishing, Indianapolis Indiana, Estados Unidos, 1996.
[DAVIS95] Davison, A.: Coding with HTML forms, Dr. Dobb's Journal, N° 231, Junio 1995.
[DIMAR93] Di Mare, Adolfo: El Vínculo InfoCAD-Oracle, Ministerio de Vivienda y Asentamientos humanos, Sistema de Información del Sector Vivienda y Asentamientos Humanos, 1993.
[DUNCA95] Duncan, R.: Tables for your home page, PC Magazine, Volumen 14, N° 18, Octubre de 1995.
[GONZA95] González, S.: Java & HotJava: Waking up the Web, PC Magazine, Volumen 14, N° 18, Octubre de 1995.
[GRILL84] Grillo, Bustamante, Eduardo: Anatomía Topograífica, Radiológica y Quirúrgica, Integradas, Página 108, Editorial de la Universidad Costa Rica, Segunda Edición, 1984.
[HTML96] HTML: Hypertext Markup Language, http:// lcweb.loc.gov /global/ html.html, 1996.
[HTMLP96] A Beginner's Guide To HTML, http:// www.ncsa.uiuc.edu /General/InternetWWW/ HTMLPrimer.html, 1996.
[KERNI91] Kernighan, Brian W. & Ritchie, Dennis M: El Lenguaje de Programación C, Segunda Edición, Editorial Prentice Hall, México, 1991.
[JAVA96] Java FAQ list and Tutoral: a work in progress, http:// sunsite.unc.edu /javafaq/ javafaq.html, 1996.
[KORTH88] Korth, Henry F. & Siberschatz Abraham: Fundamentos de Bases de Datos, McGraw-Hill, México, 1988.
[LAQUE93] Laquey, Tracy & Ryer, Jeanne C.: The Internet Companion Plus: A Beginner´s Start-up Kit for Global Networking, Addison-Wesley Publishing Co., Primera Impresión, Agosto de 1993.
[LEMAY95] Lemay, Laura: Aprendiendo HTML para Web en una semana, Editorial Prentice Hall, México, 1995.
[MOSAI96] Mosaic for X version 2.0 Fill-Out Form Support, http:// www.ncsa.uiuc.edu /SDG/Software /Mosaic/Docs /fill-out-forms/ overview.html, 1996.
[NAUGH96] Naughton, Patrick: The Java HandBook, Osborne McGraw-Hill, California, Estados Unidos, 1996.
[OZSOY85] Ozsoyoglu, Gulletkin & Mata, Francisco: A Language and physical Orgnization Technique for Summary Tables, ACM Press, 1985.
[PARKE95] Parker, Timothy: Aprendiendo TCP/IP en 14 Días, Editorial Prentice Hall, México, 1995.
[PERL96] The Perl Programming Language, http:// www.mit.edu:8001 /perl/ perl.html, 1996.
[PESCE96] Pesce, Mark: VRML para Internet, Editorial Prentice Hall, México, 1996.
[SANAB96] Sanabria, Gustavo: MIVAH BBS: Sistema de Información en línea sobre vivienda y asentamientos humanos, San José, Costa Rica 1996.
[SWAIN95] Swaine, M.: Getting wired on HotJava, Dr. Dobb's Journal, N° 235, Octubre de 1995.
[TANEB88] Tanenbaum, Andrew: Sistemas Operativos: Diseño e Implementación, Editorial Prentce Hall, México, 1988.
[VACCA95] Vacca, J.: Mosaic spins the Web, LAN, Volumen 10, N° 9, Setiembre de 1995.
[VALDES] Valdés, R.: Net gets a Java buzz, Dr. Dobb's Developer's Update, Volumen 2, N° 8, Agosto de 1995.
[VANHO95] Van Hoff, A.: Java and Internet programming, Dr. Dobb's Journal, N° 233, Agosto de 1995.


Portada [<>] [\/] [/\]

UNIVERSIDAD DE COSTA RICA

Facultad de Ingeniería

Escuela de Ciencias de la Computación e Informática



HTML.tab:
Herramienta para la consulta y actualización
de tablas tridimensionales en WWW


Proyecto de Graduación para optar por el grado de

Licenciado en Computación e Informática



Elaborada por

Manuel Alberto Cerdas Salazar

Carné 900903

1996


Acerca del autor [<>] [\/] [/\]

Manuel Cerdas: Estudiantes costarricense en la Escuela de Ciencias de la Computación e Informática [ECCI] de la Universidad de Costa Rica [UCR], en donde cursa sus estudios de Licenciatura. Trabaja en el Consejo de la Tierra de la Universidad Earth.

[mailto] Manuel Cerdas <mcerdas@terra.ecouncil.ac.cr>


Acerca de este documento [<>] [\/] [/\]

Referencia: Cerdas, Manuel: HTML.tab: Herramienta para la consulta y actualización de tablas tridimensionales en WWW, Propuesta de Tesis de Licenciatura, Escuela de Ciencias de la Computación e Informática; Universidad de Costa Rica;Octubre 1996.
Internet: http://www.di-mare.com/adolfo/cursos/mcerdas.htm
Autor: Manuel Cerdas <mcerdas@terra.ecouncil.ac.cr>
Contacto: Apdo 4249-1000, San José Costa Rica
Tel: (506) 235-4504       Fax: (506) 223-5363
Tipografía: Este documento ha sido tipografiado por Adolfo Di Mare, como un ejemplo para su artículo "Recomendaciones para la preparación de propuestas de tesis", que está disponible en:
      http://www.di-mare.com/adolfo/p/pretesis.htm.
Revisión: ECCI-UCR, Diciembre 1997
Visitantes:


Copyright © 1997 Manuel Cerdas
Derechos de autor reservados © 1997 Manuel Cerdas <mcerdas@terra.ecouncil.ac.cr>
[home] [<>] [/\]