Post on 17-Jul-2022
13
II. MARCO TEÓRICO
2.1. Introducción
El creciente desarrollo tecnológico ha tenido un gran impacto en los últimos
años debido a la evolución de los lenguajes de programación y nuevas
herramientas, que hoy en día han tomado un importante lugar en la implementación
de aplicaciones en distintos ámbitos laborales y entretenimiento a nivel mundial.
La evolución de la tecnología ha permitido que nuevos métodos de
programación puedan ser aplicados durante el proceso de creación de un sistema,
como lo son el uso de frameworks, compiladores compatibles con múltiples
lenguajes de programación, gestores de bases de datos, APIs que permiten al
desarrollador tener las funciones necesarias de forma rápida y de manera
instantánea.
En el presente documento se hablará primero sobre las herramientas y los
lenguajes de programación utilizados para la realización de un proyecto, en el cual
se hizo una combinación de diversas tecnologías para lograr el correcto
funcionamiento de los requerimientos pedidos por un cliente. Dichas tecnologías
van desde el uso de bases de datos, programación orientada a objetos,
herramientas web que tienen como finalidad, el poder ofrecerle a los usuarios una
interfaz en la cual estos puedan interactuar de manera correcta en el lado del
frontend de la aplicación, además del procesamiento de datos en la parte del back-
end.
Una vez explicado el entorno en el que se trabajó se dará una descripción
general sobre el proyecto realizado.
14
2.2. Bases de datos en Oracle
2.2.1 ¿Qué es Oracle?
Oracle, la Primera Base de Datos Diseñada para Grid Computing, es un
sistema de gestión de base de datos relacional fabricado por Oracle Corporation.
Oracle es básicamente un herramienta cliente/servidor para la gestión de base de
datos la gran potencia que tiene y su elevado precio hace que sólo se vea en
empresas muy grandes y multinacionales, por norma general. Oracle Corporation
es una de las mayores compañías de software del mundo. Sus productos van desde
bases de datos (Oracle) hasta sistemas de gestión. Cuenta además, con
herramientas propias de desarrollo para realizar potentes aplicaciones, como
Oracle Designer.
2.2.2 Historia
Oracle surge a finales del año 1970 del nombre de Relational Software a
partir de un estudio sobre SGBD (Sistemas Gestores de Base de Datos) Computer
World definió este estudio como uno de los más completos jamás escritos sobre
bases de datos. Usaba la filosofía de las bases de datos relacionales, algo que por
aquella época era todavía desconocido. La tecnología Oracle se encuentra
prácticamente en todas las industrias alrededor del mundo. Oracle es la primera
compañía de software que desarrolla e implementa software para empresas 100
por ciento activado por Internet a través de toda su línea de productos: base de
datos, aplicaciones comerciales y herramientas de desarrollo de aplicaciones y
soporte de decisiones. Oracle garantiza el funcionamiento de sus bases de datos,
que en caso de caídas del servidor compensa económicamente con cifras cercanas
a las 7 cifras.
Figura 2.2.2.A. Logotipo de Oracle. Figura 2.2.2.B. Logotipo de Sun Microsystems
2.2.3. Características de Oracle
Desarrollado sobre Oracle Database, Oracle Content Database ha sido
diseñada para que las organizaciones puedan controlar y gestionar grandes
volúmenes de contenidos no estructurados en un único repositorio con el objetivo
de reducir los costes y los riesgos asociados a la pérdida de información. Las
principales características de las bases de datos en Oracle son:
● Entorno cliente/servidor.
● Gestión de grandes bases de datos.
● Usuarios concurrentes.
15
● Alto rendimiento en transacciones.
● Sistemas de alta disponibilidad.
● Gestión de la seguridad.
● Autogestión de la integridad de los datos.
● Opción distribuida.
● Portabilidad.
● Compatibilidad.
● Replicación de entornos.
2.2.4. Estructura e instancias de Oracle
Un sistema de base de datos Oracle consta de 2 partes, la base de datos
en sí y una instancia de la base de datos. La base de datos consta de estructuras
físicas y lógicas, mientras que la instancia consta de estructuras de memoria y de
procesos asociados con dicha instancia.
Cada vez que se arranca una instancia, se reserva un espacio de memoria
(SGA) y se arrancan una serie de procesos. Después de arrancar la instancia de la
base de datos, el software de la base de datos se encarga de asociarla con una
base de datos específica, lo que se denomina “montar la base de datos”. A partir
de este momento la base de datos está lista para ser abierta, lo que permite a los
usuarios conectarse a ella.
Cada instancia de la base de datos está relacionada con sólo y sólo una
base de datos. Una instancia de base de datos no puede ser compartida. En un
RAC (Real Application Cluster), normalmente existen varias instancias de base de
datos en diferentes servidores que comparten la misma base de datos. En este
modelo la misma base de datos está relacionada con varias instancias, y cada
instancia únicamente con una base de datos.
Figura 2.2.4.A. Diagrama del funcionamiento entre los clientes y la base de datos Oracle.
2.2.4.1. Estructuras de Memoria
Debido una instancia de base de datos consta de un área de memoria y una
serie de procesos que se hacen llamar “procesos de background”. Cada vez que
16
una instancia se levanta, se reserva un área de memoria denominada SGA (System
Global Area), y se ejecutan los procesos asociados. Existen 2 estructuras básicas
de memoria en una instancia de base de datos:
● Área global del sistema (System Global Area, también llamada SGA): Esta
estructura de memoria es una memoria compartida, ya que tanto el
servidor como los procesos de background tienen acceso a dicha área de
memoria.
● Área global del programa (Program Global Area también llamada PGA):
Esta región de memoria es una memoria privada, que sólo es accesible
por los procesos del servidor o de background. La PGA por tanto no es una
memoria compartida, cada proceso tiene su propia PGA.
2.2.4.2. Estructura lógica
Se divide en unidades de almacenamiento lógicas: Tablespaces. Cada BD
estará formada por uno o más tablespaces (al menos existe el tablespace
SYSTEM, catálogo del sistema). Cada tablespace se corresponde con uno o más
ficheros de datos. Como lo son:
Tablas: Es la unidad lógica básica de almacenamiento. Contiene filas y
columnas (como una matriz) y se identifica por un nombre.
Columnas: Las columnas también tienen un nombre y deben especificar un
tipo de datos. Una tabla se guarda dentro de un tablespace (o varios, en el caso de
las tablas particionadas).
Usuarios: Es la indicación del nombre y el password de la cuenta (esquema)
que se está creando.
Esquemas: Es una colección de objetos lógicos, utilizados para organizar de
manera más comprensible la información y conocidos como objetos del esquema.
Una breve descripción de los objetos que lo componen es la siguiente.
Índices: Un índice es una estructura creada para ayudar a recuperar datos
de una manera más rápida y eficiente. Un índice se crea sobre una o varias
columnas de una misma tabla. De esta manera, cuando se solicita recuperar datos
de ella mediante alguna condición de búsqueda (cláusula where de la sentencia),
ésta se puede acelerar si se dispone de algún índice sobre las columnas-objetivo.
Clusters: Un cluster es un grupo de tablas almacenadas en conjunto
físicamente como una sola tabla que comparte una columna en común. Si a
menudo se necesita recuperar datos de dos o más tablas basado en un valor de la
columna que tienen en común, entonces es más eficiente organizarlas como un
cluster, ya que la información podrá ser recuperada en una menor cantidad de
operaciones de lectura realizadas sobre el disco.
Vistas: Una vista implementa una selección de varias columnas de una o
diferentes tablas. Una vista no almacena datos; sólo los presenta en forma
17
dinámica. Se utilizan para simplificar la visión del usuario sobre un conjunto de
tablas, haciendo transparente para él la forma de obtención de los datos.
Secuencias: El generador de secuencias de Oracle se utiliza para generar
números únicos y utilizarlos, por ejemplo, como claves de tablas. La principal
ventaja es que libera al programador de obtener números secuenciales que no se
repitan con los que pueda generar otro usuario en un instante determinado.
Disparadores, Triggers: Un trigger es un procedimiento que se ejecuta en
forma inmediata cuando ocurre un evento especial. Estos eventos sólo pueden ser
la inserción, actualización o eliminación de datos de una tabla.
Sinónimos: Los sinónimos son objetos del sistema que apuntan a otros
objetos. Implementan alias de tablas, vistas, secuencias o unidades de programas.
Por lo general se utilizan para esconder ciertos detalles del objeto que representan
al usuario final.
Segmento de Rollback: son áreas lógicas de la base de datos que contienen
información de las transacciones que se encuentran en curso y que aún no han
sido confirmadas o deshechas.
2.2.4.3. Estructura física
Una B.D. tiene uno o más ficheros de datos. Estos ficheros son de tamaño
fijo y se establecen en el momento en que se crea la base de datos o en el momento
en el que se crean tablespaces. Los datos del fichero de datos son leídos cuando
se necesitan y situados en una caché de memoria compartida para que el próximo
acceso a los mismos sea más rápido.
2.2.5. ¿Qué diferencias hay entre MySQL y Oracle?
● MySQL se instala a partir de sus rpm resultando realmente sencillo. El
proceso de instalación crea las bases de datos necesarias para funcionar.
MySQL le acompaña suficiente documentación de calidad.
● Oracle resulta muy difícil de instalar. No dispone de un fichero rpm de
instalación. Incorpora documentación para poder ejecutar el instalador. Se
trata de un rudimentario asistente que realiza preguntas al usuario o
administrador y presenta una lista de componentes a elegir.
18
Figura 2.2.1.7.A. Funcionamiento de una base de datos
2.2.6. Versiones de Oracle
Oracle 5 y Oracle 6: fueron las dos primeras versiones de Oracle, quedando
aún rezagadas por las versiones sucesoras.
Oracle 7: La base de datos relacional componentes de Oracle Universal
Server. Posee además las versiones 7.1, 7.1.2, y 7.1.3.
Oracle 7 Parallel: Ofrece a los usuarios un método seguro y administrable
para incrementar el rendimiento de sus bases de datos existentes introduciendo
operaciones en paralelo y sincrónicas dentro de sus ambientes informáticos.
Oracle 8: Incluye mejoras de rendimiento y de utilización de recursos.
Independiente de que se necesite dar soporte a decenas de miles de usuarios y
cientos de terabytes de datos, o se disponga de un sistema mucho más pequeño,
pero igualmente crítico, todos se benefician del rendimiento de Oracle 8. Este
soporta aplicaciones de procesamiento de transacciones online (OLTP) y de
centros de datos mayores y más exigentes.
Oracle 9: Se incorporaron funcionalidades de administración muy útiles, como es la gestión de undo (como alternativa a los rollback segments de la 8i), la gestión automática de la SGA (área de memoria de la BD), el flashback query, las tablas externas, etc.
Oracle 10: proporciona mejores resultados al automatizar las tareas
administrativas, ofreciendo seguridad líder en el sector y características para el
cumplimiento regulatorio, y posibilitando la mayor disponibilidad.
Oracle 11: es una base de datos de características completas para
pequeñas y medianas empresas que requieren el desempeño, la disponibilidad y
la seguridad de la base de datos #1 del mundo a un bajo costo. Disponible en un
solo servidor o en servidores en cluster con hasta cuatro procesadores, es la opción
segura para desarrollar e implementar de manera económica las aplicaciones de la
base de datos.
2.2.7. SQL
SQL se basa en el modelo relacional, aunque no se trate de una aplicación
exacta. Mientras el modelo relacional proporciona las bases teóricas de la base
de datos relacional, es el lenguaje SQL el que apoya la aplicación física de esa
base de datos [2].
19
Aunque SQL se considera un sublenguaje debido a su naturaleza de no
procesamiento, aun así es un lenguaje completo que le permite crear y mantener
objetos en una base de datos, asegurar esos objetos y manipular la información
dentro de los objetos. Un método común usado para categorizar las instrucciones
SQL es dividirlas de acuerdo con las funciones que realizan. Basado en este
método, SQL se separa en tres tipos de instrucciones:
● Lenguaje de definición de datos (DDL, Data Definition Language): Las
instrucciones DDL se usan para crear, modificar o borrar objetos en una
base de datos como tablas, vistas, esquemas, dominios, activadores, y
almacenar procedimientos. Las palabras clave en SQL más frecuentemente
asociadas con las instrucciones DDL son CREATE, ALTER y DROP.
● Lenguaje de control de datos (DCL, Data Control Language) Las
instrucciones DCL permiten controlar quién o qué (un usuario en una base
de datos puede ser una persona o un programa de aplicación) tiene acceso
a objetos específicos en la base de datos. Con DCL, puede otorgar o
restringir el acceso usando las instrucciones GRANT o REVOKE, los dos
comandos principales en DCL. Las instrucciones DCL también permiten
controlar el tipo de acceso que cada usuario tiene a los objetos de una base
de datos.
● Lenguaje de manipulación de datos (DML, Data Manipulation Language) Las
instrucciones DML se usan para recuperar, agregar, modificar o borrar datos
almacenados en los objetos de una base de datos. Las palabras clave
asociadas con las instrucciones DML son SELECT, INSERT, UPDATE y
DELETE, las cuales representan los tipos de instrucciones que
probablemente son más usadas.
2.2.8. PL/SQL
El significado de PL/SQL es “Lenguaje de procedimiento/lenguaje de sentencia
estructurado” (Procedural language / structured query language). Las sentencias
SQL de consulta y manipulación de datos pueden ser incluidas en unidades de
procedimiento en el código, pero no pueden usarse instrucciones DDL ni DCL.
Incluye los tipos de datos y operadores de SQL, se ejecuta en el lado del
servidor y los procedimientos y funciones se almacenan en la base de datos,
además de que los programas se pueden compilar desde SQL*Plus (linea de
comando) o usar SQL Developer u otros IDEs. También provee librerías con
funciones predefinidas, las cuales son llamadas paquetes [2].
2.2.9 Oracle SQL Developer
Oracle SQL Developer es una herramienta gráfica gratuita que mejora la productividad y simplifica las tareas de desarrollo de base de datos. Con SQL Developer, puede navegar por los objetos de base de datos, sentencias SQL y ejecutar scripts SQL, editar y depurar declaraciones PL / SQL, manipular y exportar datos, además de ver y crear informes. Puede conectarse a bases de datos Oracle,
20
y se puede conectar con bases de datos de terceros (no-Oracle) ver metadatos, datos, y migrar estas bases de datos a Oracle.
z Figura 2.2.9.A. Interfaz de usuario de Oracle SQL Developer.
Figura 2.2.9.B. Diagrama del proceso una aplicación con Oracle.
2.3. Java
2.3.1. Historia de Java
Es un lenguaje de programación de alto nivel, orientado a objetos, el cual
tiene la capacidad de ser ejecutado en una gran cantidad de dispositivos y
electrodomésticos ya que este fue el fin para el cual fue creado, en su mayor parte
la sintaxis de Java está influenciada por el popular lenguaje C y por VisualBasic,
aunque deja de lado algunas características de bajo nivel que tiene C como son el
manejo de memoria y los apuntadores (punteros). Para las gestiones de manejo de
memoria Java utiliza algo llamado Recolector de Basura (garbaje collector) el cual
se encarga de limpiar la memoria.
Java posee todas las características del paradigma de la programación
orientada a objetos, herencia, encapsulamiento, abstracción, polimorfismo,
modularidad entre otras. Tiene también todas las estructuras de control y
bifurcaciones que poseen la mayoría de lenguajes, while, do while, if , else-if-else.
21
Fue desarrollado por Sun Microsystems a principio de los años 90´s. En
Diciembre de 1950 Patrick Naughton, ingeniero de Sun Microsystems, reclutó a
varios colegas entre ellos James Gosling y Mike Sheridan para trabajar sobre un
nuevo proyecto conocido como "El proyecto verde".
Con la ayuda de otros ingenieros, empezaron a trabajar en una pequeña
oficina en Sand Hill Road en Menlo Park, California. Y así interrumpió todas las
comunicaciones regulares con Sun y trabajó sin descanso durante 18 meses.
Intentaban desarrollar una nueva tecnología para programar la siguiente
generación de dispositivos inteligentes, en los que Sun veía un campo nuevo a
explorar. Crear un lenguaje de programación fácil de aprender y de usar.
En un principio se consideraba C++ como lenguaje a utilizar, pero tanto Gosling
como Bill Joy lo encontraron inadecuado. Gosling intentó primero extender y
modificar C++ resultando el lenguaje C++ ++ - (++ - porque se añadían y eliminaban
características a C++), pero lo abandonó para crear un nuevo lenguaje desde cero
al que llamó Oak (roble en inglés, según la versión más aceptada, por el roble que
veía a través de la ventana de su despacho).
Java nace en 1991 con el nombre "OAK", posteriormente cambiado por
Green por problemas legales, y finalmente con la denominación actual JAVA.
En 1995 se presentó la versión alpha de java, y un año después en 1996 es
lanzado el primer JDK (JDK 1.0). Esto se hizo bajo el principio, de poder ser usado
bajo cualquier arquitectura "Write Once, Run Anywhere (escríbelo una vez,
ejecútalo en cualquier sitio)".
Figura 2.3.1.A. Logotipo oficial de Java
2.3.2. ¿Por qué los desarrolladores de software eligen Java?
Java ha sido probado, ajustado, ampliado y probado por toda una comunidad
de desarrolladores, arquitectos de aplicaciones y entusiastas de Java. Java está
diseñado para permitir el desarrollo de aplicaciones portátiles de elevado
rendimiento para el más amplio rango de plataformas informáticas posible. Al poner
a disposición de todo el mundo aplicaciones en entornos heterogéneos, las
empresas pueden proporcionar más servicios y mejorar la productividad, las
comunicaciones y colaboración del usuario final y reducir drásticamente el costo de
propiedad tanto para aplicaciones de usuario como de empresa. Java se ha
convertido en un valor impagable para los desarrolladores, ya que les permite:
22
● Escribir software en una plataforma y ejecutarlo virtualmente en otra.
● Crear programas que se puedan ejecutar en un explorador y acceder a
servicios Web disponibles.
● Desarrollar aplicaciones de servidor para foros en línea, almacenes,
encuestas, procesamiento de formularios HTML y mucho más.
● Combinar aplicaciones o servicios que utilizan el lenguaje Java para
crear aplicaciones o servicios con un gran nivel de personalización.
● Escribir aplicaciones potentes y eficaces para teléfonos móviles,
procesadores remotos, microcontroladores, módulos inalámbricos,
sensores, gateways, productos de consumo y prácticamente cualquier
otro dispositivo electrónico.
2.3.3. El entorno de compilación y ejecución Java
La compilación y ejecución de un programa Java consiste en interpretar los
bytecodes, es decir, en transformarlos en código del sistema y ejecutar ese
código conforme se va interpretando. La JVM (Java virtual machine) es la
encargada de realizar esta tarea. Por suerte, el código a interpretar no es un
lenguaje de alto nivel, los bytecodes son en realidad código máquina escrito
para el juego de instrucciones de la JVM, por lo que el proceso de interpretación
es más rápido que el de otros lenguajes. Además, la máquina virtual puede
emplear los denominados JIT (Just In Time Compiler), que traducen los
bytecodes a código nativo optimizado una sola vez, de modo que cada vez que
la JVM vuelve a invocarlo se ejecuta directamente la versión ya interpretada.
Antes de que la JVM comience este proceso de interpretación debe
realizar una serie de tareas para preparar el entorno en el que el programa se
ejecutará. Este es el punto en el que se implementa la seguridad interna de
Java.
Hay tres componentes en el proceso:
1. Cargador de clases: Este elemento se encarga de separar las clases que
carga para evitar ataques. En Java 2 se definen tres grupos de clases
asociados a distintas rutas de búsqueda: clases del sistema (asociadas a la
ruta de arranque o boot class path), clases de extensión del sistema
(asociadas a la ruta de extensión o extenton class path) y clases del usuario
o la aplicación (asociadas a la ruta de clases del usuario o la aplicación user
class path). El orden de búsqueda de las clases es: sistema, extensión y
usuario. Cuando una clase se encuentra se detiene la búsqueda (una
aplicación sólo podría reemplazar una clase del sistema modificando la ruta
de arranque, y eso no es posible sin tener acceso total al sistema). El
cargador de clases es una clase Java y puede ser extendida para definir
cargadores de clases especiales, pero sólo por las aplicaciones; si un applet
pudiera definir su propio cargador podría modificar el cargador del sistema y
potencialmente tomar la máquina en la que se ejecuta el navegador.
23
2. Verificador de archivos de clases: La función de este componente es validar
los bytecodes. Aunque esta tarea podría parecer absurda, no lo es, ya que
no todos los bytecodes tienen por qué ser correctos, pues se pueden
generar a mano o empleando compiladores modificados. El sistema
distingue entre código en el que se confía (generalmente las clases del
sistema y las validadas por el usuario) y código en el que no se confía. Las
clases consideradas seguras no se validan, pero el resto sí. El verificador de
archivos de clases forma parte de la JVM y, por lo tanto, sólo puede ser
reemplazado cambiando la máquina virtual.
3. Gestor de seguridad: Se encarga de comprobar el acceso en tiempo de
ejecución. Es una clase del sistema y puede ser extendida por las
aplicaciones. La implementación por defecto de Java 2 define un sistema
basado en políticas de acceso.
Figura 2.3.3.A. Diagrama del proceso de ejecución de clases.
Figura 2.3.3.B. Diagrama del proceso de ejecución de una aplicación.
24
2.3.4. La codificación de programas en Java
El estilo de programación o codificación de los programas Java es muy
importante. La legibilidad de un programa determina en buena medida que se haya
desarrollado correctamente y que el producto final sea eficiente [4].
Legibilidad > Corrección > Eficiencia
Legibilidad: Un programa Java debe ser fácil de leer y entender, incluso para
una persona que no ha participado en el desarrollo del programa. La legibilidad es
un aspecto muy importante porque facilita el mantenimiento del software, la
corrección de errores o la modificación de la funcionalidad de la aplicación con
menor coste.
Corrección: Un programa debe hacer lo que debe hacer, ni más, ni menos.
Esto es lo que se entiende por corrección. Un programa debe cumplir
rigurosamente los requisitos funcionales y técnicos de la fase de especificación.
Durante la fase de prueba se verifica que el programa funciona correctamente y
que cumple los requisitos técnicos y funcionales.
Eficiencia: La eficiencia se refiere al tiempo que un programa tarda en
ejecutarse y a los recursos que consume. Cuanto más rápido sea un programa y
utilice menos memoria o disco duro, el diseño es mejor. La eficiencia no es un
problema que deba atender cuando se aprende a programar. Ahora lo mejor es
utilizar los mecanismos de optimización propios de los compiladores. La eficiencia
se debe analizar solo cuando un programa funciona correctamente y cumple con
los requisitos técnicos definidos.
2.3.5. El proceso de desarrollo de software
El proceso de desarrollo de los programas Java no difiere de la mayoría de
los lenguajes de programación. Es necesario seguir un conjunto de pasos para
desarrollar correctamente un producto software.
La Ingeniería del Software estudia los distintos procesos de desarrollo de
software. El IEEE define Ingeniería del Software como la aplicación sistemática,
disciplinada y cuantificable de un proceso de desarrollo, operación y mantenimiento
de un producto software.
El proceso clásico de desarrollo de software es ampliamente utilizado por su
sencillez. Este proceso se compone de las siguientes fases: especificación, diseño,
codificación, prueba y mantenimiento.
25
Especificación: En esta fase se decide la funcionalidad, las características
técnicas de una aplicación y sus condiciones de uso. En esta fase es necesario
responder a las siguientes preguntas:
● ¿Para qué se va a utilizar la aplicación?
● ¿Cuáles son las necesidades funcionales de los usuarios?
● ¿Cuál es el perfil de los usuarios de la aplicación?
● ¿En qué plataforma se ejecutará la aplicación?
● ¿Cuáles son sus condiciones de operación?
● ¿Cómo se va a utilizar?
Diseño: En esta fase se utiliza toda la información recogida en la fase de
especificación y se propone una solución que responda a las necesidades del
usuario y se pueda desarrollar. En esta fase se define la arquitectura de la
aplicación. Es necesario detallar la estructura y la organización del programa y
cómo se relacionan las distintas partes de la aplicación.
Codificación: Esta fase consiste en la programación en Java de las
especificaciones de diseño de la fase anterior. Durante esta fase de codificación o
implementación se aplican normas de programación para facilitar la legibilidad de
los programas Java.
Prueba: En esta fase se compila y se ejecuta la aplicación para verificar que
cumple con los requisitos funcionales y técnicos definidos en la fase de
especificación. Si el programa no cumple con todos los requisitos, se puede deber
a errores de diseño o de programación. En tal caso, es necesario corregir los
errores que se hayan detectado y repetir de nuevo el proceso de diseño y
codificación. Durante la fase de prueba se verifica que la aplicación cumple con los
criterios de calidad establecidos en el proyecto: facilidad de uso, corrección,
eficiencia, integridad, fiabilidad, flexibilidad, facilidad de mantenimiento, facilidad de
prueba, portabilidad, capacidad de reutilización e interoperabilidad.
Una vez que la aplicación se ha probado y cumple con los requisitos
establecidos, entonces se pone en funcionamiento y comienza la fase de operación
para que sea utilizada para el fin con el que ha sido desarrollada.
Mantenimiento: Una vez que la aplicación se ha puesto en operación da
comienzo la fase de mantenimiento. En esta fase se corrigen errores de
funcionamiento de la aplicación, se modifica la funcionalidad o se añaden las
nuevas funcionalidades que demandan los usuarios. La fase de mantenimiento es
la de mayor duración, pues pueden pasar muchos años desde el inicio de la
operación hasta que el producto es retirado.
2.3.6. IDE
Un IDE es un entorno de programación que ha sido empaquetado como un
programa de aplicación, o sea, consiste en un editor de código, un compilador, un
depurador y un constructor de interfaz gráfica. Los IDEs pueden ser aplicaciones
26
por sí solas o pueden ser parte de aplicaciones existentes. El lenguaje Visual Basic,
por ejemplo, puede ser usado dentro de las aplicaciones de Microsoft Office, lo que
hace posible escribir sentencias Visual Basic en forma de macros para Microsoft
Word.
2.3.6.1. Características
Los IDE (Integrated Development Environment) ofrecen un marco de trabajo
amigable para la mayoría de los lenguajes de programación tales como C++,
Python, Java, C#, Delphi, Visual Basic, etc. En algunos lenguajes, un IDE puede
funcionar como un sistema en tiempo de ejecución, en donde se permite utilizar el
lenguaje de programación en forma interactiva, sin necesidad de trabajo orientado
a archivos de texto, como es el caso de Smalltalk u Objective-C.
Es posible que un mismo IDE pueda funcionar con varios lenguajes de
programación. Este es el caso de Eclipse, al que mediante plugins se le puede
añadir soporte de lenguajes adicionales. Un IDE debe tener las siguientes
características:
● Multiplataforma
● Soporte para diversos lenguajes de programación
● Integración con Sistemas de Control de Versiones
● Reconocimiento de Sintaxis
● Extensiones y Componentes para el IDE
● Integración con Framework populares
● Depurador
● Importar y Exportar proyectos
● Múltiples idiomas
● Manual de Usuarios y Ayuda
2.3.7. Eclipse
Eclipse es un entorno de desarrollo integrado, de Código abierto y
Multiplataforma. Mayoritariamente se utiliza para desarrollar lo que se conoce como
"Aplicaciones de Cliente Enriquecido", opuesto a las aplicaciones "Cliente-liviano"
basadas en navegadores. Es una potente y completa plataforma de Programación,
27
desarrollo y compilación de elementos tan variados como sitios web, programas en
C++ o aplicaciones Java. No es más que un entorno de desarrollo integrado (IDE)
en el que encontrarás todas las herramientas y funciones necesarias para tu
trabajo, recogidas además en una atractiva interfaz que lo hace fácil y agradable
de usar.
Figura 2.3.7.A. Logotipo oficial del IDE Eclipse.
2.3.7.1 Historia
Eclipse fue desarrollado originalmente por IBM Canadá como el sucesor de su
familia de herramientas para VisualAge. Actualmente es desarrollado por la
Fundación Eclipse, una organización independiente sin ánimo de lucro que fomenta
una comunidad de Código abierto y un conjunto de productos complementarios,
capacidades y servicios. En noviembre del 2001, se formó un consorcio para el
desarrollo futuro de Eclipse como Código abierto. En 2003, la fundación
independiente de IBM fue creada.
Esta plataforma, típicamente ha sido usada para desarrollar entornos de desarrollo
integrados. Sin embargo, también se puede usar para otros tipos de aplicaciones
cliente, como BitTorrent Azureus.
Eclipse fue liberado originalmente bajo la Common Public License, pero después
fue re-licenciado bajo la Eclipse Public License. La Free Software Foundation ha
dicho que ambas licencias son licencias de Software libre, pero son incompatibles
con Licencia Pública General de GNU (GNU GPL).
2.3.7.2. Plataforma de cliente enriquecido
La base para Eclipse es la plataforma de cliente enriquecido (del Inglés
Rich Client Platform RCP). La Plataforma de Cliente enriquecido está constituida
por los siguientes componentes:
● Plataforma principal: inicio de Eclipse, ejecución de plugins
• OSGi: una plataforma para bundling estándar.
• El Standard Widget Toolkit (SWT): Un widget toolkit portable.
28
• Face: manejo de archivos, manejo de texto, editores de texto
• El Workbench de Eclipse: vistas, editores, perspectivas, asistentes
● Características de Eclipse:
• Dispone de un editor de texto con resaltado de sintaxis donde puedes Ver
el contenido del fichero en el que estás trabajando
• Contiene una lista de tareas y otros módulos similares
• La compilación es en tiempo real.
• Tiene pruebas unitarias con JUnit
• Integración con Ant, asistentes (wizards) para creación de proyectos,
clases, tests, etc., y refactorización.
Si bien las funciones de Eclipse son más bien de carácter general, las
características del programa se pueden ampliar y mejorar mediante el uso de
plugins. Asimismo, a través de estos "plugins" libremente disponibles es posible
añadir un sistema de control de versiones a través de Subversion y a la vez lograr
una integración mediante Hibernate.
Los widgets de Eclipse están implementados por una herramienta de widget para
Java llamada SWT, a diferencia de la mayoría de las aplicaciones Java, que usan
las opciones estándar Abstract Window Toolkit (AWT) o Swing. La interfaz de
usuario de Eclipse también tiene una capa GUI intermedia llamada JFace, la cual
simplifica la construcción de aplicaciones basadas en SWT.
2.3.7.3. Ventajas en la utilización de Eclipse
El entorno de desarrollo integrado (IDE) de Eclipse emplea módulos (en inglés
plug-in) para proporcionar toda su funcionalidad al frente de la Plataforma de Rich
Client, a diferencia de otros entornos monolíticos donde las funcionalidades están
todas incluidas, las necesite el usuario o no. Dicho mecanismo de módulos es una
plataforma ligera para componentes de software. Esto le permitirle a Eclipse
extenderse usando otros lenguajes de programación como son C/C++ y Python,
también permite a Eclipse trabajar con lenguajes para procesado de texto como
LaTeX, aplicaciones en red como Telnet y Sistema de gestión de base de datos.
La mencionada anteriormente, es una de las ventajas principales, la
arquitectura de plug-ins con la que cuenta, ya que le permite escribir cualquier
extensión deseada en el ambiente, como sería Gestión de la configuración. Se
29
provee soporte para Java y CVS en el SDK de Eclipse. Y no tiene por qué ser usado
únicamente para soportar otros Lenguajes de programación.
2.3.7.4. Utilización de eclipse
El SDK de Eclipse incluye las herramientas de desarrollo de Java, ofreciendo
un IDE con un compilador de Java interno y un modelo completo de los archivos
fuente de Java. Esto permite técnicas avanzadas de refactorización y análisis de
código.
Este mismo IDE también hace uso de un espacio de trabajo, en este caso
un grupo de metadata en un espacio para archivos plano, permitiendo
modificaciones externas a los archivos en tanto se refresque el espacio de trabajo
correspondiente.
Figura 2.3.7.4.A. Entorno gráfico de Eclipse
2.3.8. Frameworks
En general los framework son soluciones completas que contemplan
herramientas de apoyo a la construcción (ambiente de trabajo o desarrollo) y
motores de ejecución (ambiente de ejecución). En otras palabras un esquema (un
esqueleto o patrón) para el desarrollo y/o la implementación de una aplicación.
2.3.8.1 Ventajas de utilizar frameworks
● El programador no necesita plantearse una estructura global de la
aplicación, sino que el framework le proporciona un esqueleto que hay que
“rellenar”, es decir, las funciones principales están ya precompiladas, sólo
se tienen que adaptar a lo que el programador necesite.
● Facilita la colaboración. Cualquiera que haya tenido complicaciones con el
código fuente de otro programador, sabrá lo difícil que es entenderlo y
30
modificarlo; por lo tanto, todo lo que sea definir y estandarizar va a ahorrar
tiempo y trabajo a los desarrollos colaborativos.
● Es más fácil encontrar herramientas (utilidades, librerías) adaptadas al
framework concreto para facilitar el desarrollo.
2.3.9. Hibernate
Hibernate es un potente servicio de persistencia Objeto – Relacional de alto
rendimiento que facilita el mapeo de atributos entre una base de datos relacional
tradicional y el modelo de objetos de una aplicación. Ofrece persistencia
automatizada y transparente de objetos a tablas en una base de datos relacional,
utilizando metadata que describe el mapeo entre objetos y la base de datos en sí.
Las características más importantes que destacan a Hibernate son:
• Ofrece su propio lenguaje de consulta HQL
• Implementado con XML o Anotaciones (JPA)
• Excelente Documentación
• Fácil de aprender
• Comunidad Activa
• Soporte para Windows (NHibernate)
2.3.9.1. ¿Cómo funciona Hibernate?
Básicamente el desarrollador deberá configurar en un archivo XML o
mediante anotaciones donde corresponde un atributo de una clase, con una
columna de una tabla, a este proceso se le denomina “mapeo” pues se le indica al
framework la información relacionada de la base de datos con las clases. De esta
manera, las consultas a la base de datos, se hacen de forma automática, debido a
que ya se le indicó anteriormente en donde se encuentran las respectivas tablas
para cada elemento de la aplicación.
31
Figura 2.3.9.1.A. Interacción de Hibernate con la aplicación
Figura 2.3.9.1.B. Estructura de Hibernate
2.3.10. Servlets
Es una tecnología que nos permite crear aplicaciones web interactivas
(dinámicas), es decir, le permite al usuario interactuar con la aplicación (hacer
consultas, insertar y eliminar datos).
Un Servlet es un objeto java que pertenece a una clase que extiende de la
librería javax.servlet.http.HttpServlet
Son pequeños programas escritos en Java que admiten peticiones a través
del protocolo HTTP. Los servlets reciben peticiones desde un navegador web, las
32
procesan y devuelven una respuesta al navegador, normalmente en HTML. Para
realizar estas tareas podrán utilizar las clases incluidas en el lenguaje Java. Estos
programas son los intermediarios entre el cliente (casi siempre navegador web) y
los datos (BBDD).
Los servelts pueden ser incluidos en servidores que soporten la API de
Servlet. La API no realiza suposiciones sobre el entorno que se utiliza, como tipo
de servidor o plataforma, ni del protocolo a utilizar, aunque existe una API especial
para HTTP.
2.3.10.1. ¿Cómo funciona un contenedor de Servlets?
1. El navegador (cliente) pide una página al servidor HTTP que es un
contenedor de Servlets.
2. El servlet procesa los argumentos de la petición, es decir, el contenedor de
Servlets delega la petición a un Servlet en particular elegido de entre los
Servlets que contiene.
3. El Servlet, que es un objeto java, se encarga de generar el texto de la página
web que se entrega al contenedor.
4. El contenedor devuelve la página web al navegador (cliente) que la solicitó,
normalmente en HTML.
5. Por lo tanto nos encontramos en una arquitectura Cliente-Servidor. Lo
normal para esto es utilizar Apache Tomcat como contenedor de servlets.
Recordar que apache es un servidor HTTP.
Figura 2.3.10.A. Flujo de datos con Servlets en una aplicación web
33
2.4. JSP
JSP es un lenguaje para la creación de sitios web dinámicos, acrónimo de
Java Server Pages. Está orientado a desarrollar páginas web en Java. JSP es un
lenguaje multiplataforma. Creado para ejecutarse del lado del servidor, fue
desarrollado por Sun Microsystems. Comparte ventajas similares a las de ASP.NET
desarrollado para la creación de aplicaciones web potentes.
La tecnología de JSP permite a los desarrolladores y a los diseñadores del
entorno web desarrollar rápidamente y mantener fácilmente páginas dinámicas,
ricas en información como son las que soportan a sistemas de negociación. La
tecnología de los JSP separa la interfaz del usuario de la parte lógica del contenido
permitiendo a los diseñadores cambiar a su disposición las plantillas de la interfaz
sin alterar el contenido dinámico subyacente.
JSP también permite introducir código para la generación dinámica de
HTML dentro de una página web. Esta surge por la necesidad de crear aplicaciones
dinámicas para web de forma fácil, ya que la mejor parte del resultado de un
programa CGI es estático. Se podría pensar entonces en JavaScript, pero este
genera HTML dinámicamente en el cliente y no puede acceder a los cursos del
servidor. Se hablará sobre dichos lenguajes web más adelante en este documento.
2.4.1. Características
● Combina el lenguaje de Java en el servidor y la flexibilidad de HTML en el
navegador.
● No sólo se puede utilizar HTML, sino también XML o WML.
● Hace más fácil reusar componentes con JavaBeans los cuales realizan
tareas más específicas.
● Su función es saber cómo procesar una solicitud para crear una respuesta.
● Soporta contenido dinámico que refleja las condiciones del mundo real.
● Es más rápido y fácil crear aplicaciones orientadas al ámbito web
● Capaz de instanciar cualquier clase de Java
34
2.4.2 Motor JSP
El motor de las páginas JSP está basado en los Servlets de Java. Se crean
páginas de manera parecida a como se crean en ASP o PHP (tecnologías de
servidor). Se generan archivos con extensión .jsp que incluyen, dentro de la
estructura de etiquetas HTML, las sentencias Java a ejecutar en el servidor. Antes
de que sean funcionales los archivos, el motor JSP lleva a cabo una fase de
traducción de esa página en un Servlet, implementado en un archivo class (Byte
codes de Java). Esta fase de traducción se lleva a cabo habitualmente cuando se
recibe la primera solicitud de la página .jsp, aunque existe la opción de precompilar
en código para evitar ese tiempo de espera la primera vez que un cliente solicita la
página.
Figura 2.4.2.A. Funcionamiento de archivos JSP
2.4.3. Ventajas
La principal ventaja de JSP frente a otros lenguajes es que el lenguaje Java
es un lenguaje de propósito general que excede el mundo web y que es apto para
crear clases que manejen lógica de negocio y acceso a datos de una manera prolija.
Esto permite separar en niveles las aplicaciones web, dejando la parte encargada
de generar el documento HTML en el archivo JSP.
Otra ventaja es que JSP hereda la portabilidad de Java, y es posible ejecutar
las aplicaciones en múltiples plataformas sin cambios. Es común incluso que los
desarrolladores trabajen en una plataforma y que la aplicación termine siendo
ejecutada en otra.
35
2.5. Herramientas web
Un servicio web se define como un conjunto de protocolos y estándares que
se utilizan para el intercambio de datos entre distintas aplicaciones. Estas pueden
haber sido desarrolladas utilizando diferentes lenguajes de programación.
Mediante servicios web, podemos programar lógica de negocios que realice
validaciones, comparaciones, cálculos, procesos, entre otras actividades; también
desarrollar en ellos lógica de acceso a datos, por ejemplo funciones de selección o
mantenimiento de datos.
2.5.1 HTML
HTML es el lenguaje que se emplea para el desarrollo de páginas de internet.
Está compuesto por una serie de etiquetas que el navegador interpreta y da forma
en la pantalla. HTML dispone de etiquetas para imágenes, hipervínculos que nos
permiten dirigirnos a otras páginas, saltos de línea, listas, tablas, etc.
Es un lenguaje muy simple y general que sirve para definir otros lenguajes
que tienen que ver con el formato de los documentos. El texto en él se crea a partir
de etiquetas, también llamadas tags, que permiten interconectar diversos
conceptos y formatos.
Para la escritura de este lenguaje, se crean etiquetas que aparecen
especificadas a través de corchetes o paréntesis angulares: < y >. Entre sus
componentes, los elementos dan forma a la estructura esencial del lenguaje, ya
que tienen dos propiedades (el contenido en sí mismo y sus atributos).
Por otra parte, cabe destacar que el HTML permite ciertos códigos que se
conocen como scripts, los cuales brindan instrucciones específicas a los
navegadores que se encargan de procesar el lenguaje. Entre los scripts que
pueden agregarse, los más conocidos y utilizados son JavaScript y PHP.
36
2.5.1.1. Historia
HTML ha cambiado de una manera muy importante desde sus inicios, pero
una buena parte del contenido del HTML actual ya se encontraba en esta primera
documentación y más de la mitad de las "etiquetas" descritas en el documento
"Etiquetas HTML" original todavía existen.
A medida que fue habiendo cada vez más gente que escribía páginas web
y alternativas al navegador original, también se fueron añadiendo más funciones a
HTML. Muchas se adoptaron universalmente (como el elemento img utilizado para
insertar una imagen en un documento, que se utilizó por primera vez en NCSA
Mosaic). Otras etiquetas eran propias y sólo se utilizaban en uno o dos
navegadores. Cada vez había una necesidad mayor de estandarización a fin de
que los autores de otros navegadores pudieran tener un documento (conocido
como "especificación") que describiera de manera definitiva el aspecto de HTML
para así poder juzgar si se saltaban algunas partes de la implantación de HTML.
En el año 1995 se redactó "HTML 2.0", que aprovechaba ideas del borrador
de HTML original. Dave Raggett escribió una propuesta alternativa conocida como
HTML; esta propuesta se utilizó como base para muchos de los elementos nuevos
implantados por los navegadores. Más tarde, en ese mismo año apareció un
borrador de HTML 3.0, pero se dejó de trabajar en esta versión a causa de la falta
de apoyo por parte de los creadores de navegadores en cuanto a la dirección que
se debía seguir. HTML 3.2 suprimió muchas de las funciones nuevas de la versión
3.0 y, en lugar de éstas, adoptó muchas de las creaciones de los navegadores más
populares de entonces: Mosaic y Netscape Navigator.
En el año 1997, el W3C publicó HTML 4.0 como recomendación que
adoptaba más extensiones específicas de navegadores, pero que también
intentaba racionalizar y perfeccionar HTML. Esto se hizo marcando varios
elementos como desaprobados, que significa que los elementos están obsoletos y
que, aunque todavía aparecen en esta versión, se eliminarán en una revisión
posterior. Esto se hizo para impulsar un uso mejor y más semántico de HTML en
documentos.
En el año 2004 el Web Hypertext Application Technology Working Group
(WHATWG) inició el trabajo para desarrollar la especificación de HTML5. En enero
de 2008 se publicó el primer "borrador de trabajo" de HTML5, que posteriormente
alcanzaría el estatus de "candidate recommendation" en diciembre de 2012. El
documento lo mantiene el HTML Working Group del W3C.
Al día de hoy existen los Editores Web que permiten que los diseñadores, a
través de herramientas gráficas que reciben el nombre de WYSIWYG puedan crear
páginas web sin conocer el código html, este se crea de forma automatizada,
dándole estructura a la web y permitiendo que sea más allá del ordenador donde
37
es creada. Entre los recursos que pueden enlazarse al código HTML se encuentran
fotografías, vídeos, archivos de otras webs o incluso de la misma y todo tipo de
contenido que se encuentre subido a la red [5].
Figura 2.5.1.1.A. Estructura de los archivos HTML Figura 2.5.1.1.B. Logotipo oficial de HTML5
2.5.1.2. Características básicas
Para almacenar un contenido de texto en un archivo electrónico, se utiliza
una tabla de conversión que transforma cada carácter en un número. Una vez
almacenada la secuencia de números, el contenido del archivo se puede recuperar
realizando el proceso inverso.
Figura 2.5.1.2.A Diagrama de conversión HTML
El proceso de transformación de caracteres en secuencias de números se
denomina codificación de caracteres y cada una de las tablas que se han definido
para realizar la transformación que se conoce con el nombre de páginas de código.
Una de las codificaciones más conocidas (y una de las primeras que se publicaron)
es la codificación ASCII.
Una vez resuelto el problema de almacenar el texto simple, se presenta el
reto de almacenar los contenidos de texto con formato. En otras palabras, ¿cómo
38
se almacena un texto en negrita? ¿Y un texto de color rojo? ¿Y otro texto azul, en
negrita y subrayado?
Utilizar una tabla de conversión similar a las que se utilizan para textos sin
formato no es posible, ya que existen infinitos posibles estilos para aplicar al texto.
Una solución técnicamente viable consiste en almacenar la información sobre el
formato del texto en una zona especial reservada dentro del propio archivo. En esta
zona se podría indicar dónde comienza y dónde termina cada formato.
El proceso de indicar las diferentes partes que componen la información se
denomina marcar (markup en inglés). Cada una de las palabras que se emplean
para marcar el inicio y el final de una sección se denominan etiquetas.
Aunque existen algunas excepciones, en general las etiquetas se indican por
pares y se forman de la siguiente manera:
● Etiqueta de apertura: carácter < seguido del nombre de la etiqueta (sin
espacios en blanco) y terminado con el carácter >
● Etiqueta de cierre: carácter < seguido del carácter /, seguido del nombre
de la etiqueta (sin espacios en blanco) y terminado con el carácter > De
esta manera, la estructura típica de las etiquetas HTML es:
<nombre_etiqueta> ... </nombre_etiqueta>
Debido a qué HTML es un lenguaje de etiquetas, es también llamado
lenguaje de marcado y las páginas web habituales están formadas por cientos o
miles de pares de etiquetas. Además de HTML, existen muchos otros lenguajes de
etiquetas como XML, SGML, DocBook y MathML.
La principal ventaja de los lenguajes de etiquetas es que son muy sencillos
de leer y escribir por parte de las personas y de los sistemas electrónicos. La
principal desventaja es que pueden aumentar mucho el tamaño del documento, por
lo que en general se utilizan etiquetas con nombres muy cortos.
39
2.5.2. CSS
CSS (Cascading Style Sheets, u Hojas de Estilo en Cascada) es la
tecnología desarrollada por el World Wide Web Consortium (W3C) con el fin de
separar la estructura de la presentación. Tiene como finalidad separar la estructura
de la presentación. A pesar de que la recomendación oficial del grupo de trabajo
de la W3C ya había alcanzado la estabilidad requerida para que fuera soportada
por los principales navegadores comerciales, como Netscape e Internet Explorer.
En otras palabras, CSS es un lenguaje que ayuda a controlar el aspecto o
presentación de los documentos electrónicos definidos con HTML y XHTML. CSS
es la mejor forma de separar los contenidos y su presentación y es imprescindible
para crear páginas web complejas.
Separar la definición de los contenidos y la definición de su aspecto presenta
numerosas ventajas, ya que obliga a crear documentos HTML/XHTML bien
definidos y con significado completo (también llamados "documentos semánticos").
Además, mejora la accesibilidad del documento, reduce la complejidad de su
mantenimiento y permite visualizar el mismo documento en infinidad de dispositivos
diferentes.
Al crear una página web, se utiliza en primer lugar el lenguaje HTML/XHTML
para marcar los contenidos, es decir, para designar la función de cada elemento
dentro de la página: párrafo, titular, texto destacado, tabla, lista de elementos, etc.
Una vez creados los contenidos, se utiliza el lenguaje CSS para definir el
aspecto de cada elemento: color, tamaño y tipo de letra del texto, separación
horizontal y vertical entre elementos, posición de cada elemento dentro de la
página, etc [6].
2.5.2.1. Historia
Las hojas de estilos aparecieron poco después que el lenguaje de etiquetas
SGML, alrededor del año 1970. Desde la creación de SGML, se observó la
necesidad de definir un mecanismo que permitiera aplicar de forma consistente
diferentes estilos a los documentos electrónicos.
40
El gran impulso de los lenguajes de hojas de estilos se produjo con el auge
del Internet y el crecimiento exponencial del lenguaje HTML para la creación de
documentos electrónicos. La guerra de navegadores y la falta de un estándar para
la definición de los estilos dificultaban la creación de documentos con la misma
apariencia en diferentes navegadores.
El organismo W3C, encargado de crear todos los estándares relacionados
con la web, propuso la creación de un lenguaje de hojas de estilos específico para
el lenguaje HTML y se presentaron nueve propuestas. Las dos propuestas que se
tuvieron en cuenta fueron la CHSS (Cascading HTML Style Sheets) y la SSP
(Stream-based Style Sheet Proposal).
La propuesta CHSS fue realizada por Håkon Wium Lie y SSP fue propuesto
por Bert Bos. Entre finales de 1994 y 1995 Lie y Bos se unieron para definir un
nuevo lenguaje que tomaba lo mejor de cada propuesta y lo llamaron CSS
(Cascading Style Sheets).
En 1995, el W3C decidió apostar por el desarrollo y estandarización de CSS
y lo añadió a su grupo de trabajo de HTML. A finales de 1996, el W3C publicó la
primera recomendación oficial, conocida como "CSS nivel 1".
El 12 de Mayo de 1998, el grupo de trabajo de CSS publica su segunda
recomendación oficial, conocida como "CSS nivel 2". La versión de CSS que utilizan
todos los navegadores de hoy en día es CSS 2.1, una revisión de CSS 2 que aún
se está elaborando (la última actualización es del 8 de septiembre de 2009). Al
mismo tiempo, la siguiente recomendación de CSS, conocida como "CSS nivel 3",
continúa en desarrollo desde 1998 y hasta el momento sólo se han publicado
borradores.
La adopción de CSS por parte de los navegadores ha requerido un largo
periodo de tiempo. El mismo año que se publicó CSS 1, Microsoft lanzaba su
navegador Internet Explorer 3.0, que disponía de un soporte bastante reducido de
CSS. El primer navegador con soporte completo de CSS 1 fue la versión para Mac
de Internet Explorer 5, que se publicó en el año 2000.
Antes de que estuviera disponible CSS, la única forma de componer
espacialmente una página era el uso de tablas. Aunque es una técnica cómoda y
versátil, se está usando un elemento con una semántica particular, que es la de
expresar información tabular, solamente por su efecto en la presentación. La
introducción de CSS ha permitido en muchos casos reemplazar el uso de tablas.
41
Hoy en día está siendo desarrollada la versión 4 de CSS, hasta la fecha ha tenido
un borrador que promete muchas facilidades en el área de diseño.
2.5.2.2 Tipos de estilos
CSS proporciona tres caminos diferentes para aplicar las reglas de estilo a
una página Web:
1. Una hoja de estilo externa, que es una hoja de estilo que está almacenada
en un archivo diferente al archivo donde se almacena el código HTML de la
página Web. Esta es la manera de programar más potente, porque separa
completamente las reglas de formateo para la página HTML de la estructura
básica de la página.
2. Una hoja de estilo interna, que es una hoja de estilo que está incrustada
dentro de un documento HTML. (Va a la derecha dentro del elemento). De
esta manera se obtiene el beneficio de separar la información del estilo, del
código HTML propiamente dicho. Se puede optar por copiar la hoja de estilo
incrustada de una página a otra, (esta posibilidad es difícil de ejecutar si se
desea para guardar las copias sincronizadas). En general, la única vez que
se usa una hoja de estilo interna, es cuando se quiere proporcionar alguna
característica a una página Web en un simple fichero, por ejemplo, si se está
enviando algo a la página web.
3. Un estilo en línea (inline), que es un método para insertar el lenguaje de
estilo de página, directamente, dentro de una etiqueta HTML. Esta manera
de proceder no es totalmente adecuada. El incrustar la descripción del
formateo dentro del documento de la página Web, a nivel de código se
convierte en una tarea larga, tediosa y poco elegante de resolver el problema
de la programación de la página. Este modo de trabajo se podría usar de
manera ocasional si se pretende aplicar un formateo con prisa. No es del
todo claro, o estructurado de lo que debería ser, pero funciona. Este es el
método recomendado para maquetar correos electrónicos en HTML.
42
2.5.2.3. Ventajas de usar las hojas de estilo
Las ventajas de utilizar CSS (u otro lenguaje de estilo) son:
• Control centralizado de la presentación de un sitio web completo con lo que
se agiliza de forma considerable la actualización del mismo.
• Los navegadores permiten a los usuarios especificar su propia hoja de estilo
local que será aplicada a un sitio web, con lo que aumenta
considerablemente la accesibilidad. Por ejemplo, personas con deficiencias
visuales pueden configurar su propia hoja de estilo para aumentar el tamaño
del texto o remarcar más los enlaces.
• Una página puede disponer de diferentes hojas de estilo según el dispositivo
que la muestre o incluso a elección del usuario. Por ejemplo, para ser
impresa, mostrada en un dispositivo móvil, o ser "leída" por un sintetizador
de voz.
• El documento HTML en sí mismo es más claro de entender y se consigue
reducir considerablemente su tamaño (siempre y cuando no se utilice estilo
en línea).
Figura 2.5.2.3.A. Estructura de un archivo CSS
43
2.5.3. Javascript
Javascript es un lenguaje que puede ser utilizado por profesionales y para
quienes se inician en el desarrollo y diseño de sitios web. No requiere de
compilación ya que el lenguaje funciona del lado del cliente, los navegadores son
los encargados de interpretar estos códigos.
Muchos confunden el Javascript con Java pero ambos lenguajes son
diferentes y tienen sus características singulares.
Javascript es un lenguaje con muchas posibilidades, utilizado para crear
pequeños programas que luego son insertados en una página web y en programas
más grandes, orientados a objetos mucho más complejos. Con este se pueden
crear diferentes efectos e interactuar con nuestros usuarios.
Este lenguaje posee varias características, entre ellas se puede mencionar
que es un lenguaje basado en acciones que posee menos restricciones. Además,
es un lenguaje que utiliza Windows y sistemas X-Windows, gran parte de la
programación en este lenguaje está centrada en describir objetos, escribir
funciones que respondan a movimientos del mouse, aperturas, utilización de teclas,
cargas de páginas entre otros.
Es necesario resaltar que hay dos tipos de JavaScript: por un lado está el
que se ejecuta en el cliente, este es el Javascript propiamente dicho, aunque
técnicamente se denomina Navigator JavaScript. Pero también existe un Javascript
que se ejecuta en el servidor, es más reciente y se denomina LiveWire Javascript
[7].
2.5.3.1. Historia
Javascript nació con la necesidad de permitir a los autores de sitio web crear
páginas que permitan intercambiar con los usuarios, ya que se necesitaba crear
páginas de mayor complejidad. El HTML solo permitía crear páginas estáticas
44
donde se podía mostrar textos con estilos, pero se necesitaba interactuar con los
usuarios.
En los años de 1990, Netscape creo Livescript; las primeras versiones de
este lenguaje fueron principalmente dedicadas a pequeños grupos de diseñadores
Web que no necesitaban utilizar un compilador, o sin ninguna experiencia en la
programación orientada a objetos.
A medida que estuvieron disponibles nuevas versiones de este lenguaje
incluían nuevos componentes que dan gran potencial al lenguaje, pero
lamentablemente esta versión solo funcionaba en la última versión del Navigator
en aquel momento.
En diciembre de 1995, Netscape y Sun Microsystems (el creador del
lenguaje Java, anteriormente nombrado) luego de unirse, tenían como objetivo
desarrollar el proyecto en conjunto, reintroducen este lenguaje con el nombre de
Javascript. En respuesta a la popularidad de Javascript, Microsoft lanzo su propio
lenguaje de programación a base de script, VBScript (una pequeña versión de
Visual Basic).
En el año de 1996 Microsoft se interesa por competir con Javascript por lo
que lanza su lenguaje llamado Jscript, introducido en los navegadores de Internet
Explorer. A pesar de las diferentes críticas que se le hacen al lenguaje Javascript,
este es uno de los lenguajes de programación más populares para la web. Desde
que los navegadores incluyen el Javascript, no necesitamos el Java Runtime
Environment (JRE), para que se ejecute.
Javascript es una tecnología que ha sobrevivido por más de 10 años, es
fundamental en la web, junto con la estandarización de la “European Computer
Manufacturers Association” (ECMA) (adoptada luego por la ISO) y W3C DOM,
Javascript es considerado por muchos desarrolladores web como la fundación para
la próxima generación de aplicaciones web dinámicas del lado del cliente.
45
La estandarización de Javascript comenzó en conjunto con ECMA en
Noviembre de 1996. Es adoptado este estándar en Junio de 1997 y luego también
por la “Internacional Organization for Standardization” (ISO). El DOM por sus siglas
en inglés “Modelo de Objetos del Documento” fue diseñado para evitar
incompatibilidades.
2.5.3.2. Diferencias entre Java y Javascript
Javascript tiene la ventaja de ser incorporado en cualquier página web y
puede ser ejecutado sin la necesidad de instalar otro programa para ser
visualizado.
Java por su parte tiene como principal característica ser un lenguaje
independiente de la plataforma. Se puede crear todo tipo de programa que puede
ser ejecutado en cualquier ordenador del mercado: Linux, Windows, Apple, etc.
Debido a sus características también es muy utilizado para internet.
Como principal diferencia, se pude decir que Javascript es un lenguaje interpretado,
basado en prototipos, mientras que Java es un lenguaje más orientado a objetos.
2.5.3.2. ¿Cómo identificar código Javascript?
El código javascript se puede encontrar dentro de las etiquetas <body></body> de
las páginas web. Por lo general se insertan entre las etiquetas: <script></script>.
También pueden estar ubicados en ficheros externos usando:
<script type="text/javascript" src="micodigo.js"></script>
2.5.3.3. Compatibilidad
Javascript es soportado por la mayoría de los navegadores como Internet
Explorer, Netscape, Opera, Mozilla Firefox, Google Chrome, entre otros.
46
Con el surgimiento de lenguajes como PHP del lado del servidor y Javascript
del lado del cliente, surgió Ajax en acrónimo de (Asynchronous Javascript And
XML). El mismo es una técnica para crear aplicaciones web interactivas. Este
lenguaje combina varias tecnologías:
• HTML y Hojas de Estilos CSS para generar estilos.
• Implementaciones ECMAScript, uno de ellos es el lenguaje Javascript.
• XMLHttpRequest es una de las funciones más importantes que incluye, que
permite intercambiar datos asincrónicamente con el servidor web, puede ser
mediante PHP, ASP, entre otros.
En este documento no se hablará mucho sobre Ajax debido a que no se
utilizó en el desarrollo de la aplicación que se mostrará más adelante.
Se debe tener en cuenta que aunque Javascript sea soportado en gran
cantidad de navegadores nuestros usuarios pueden elegir la opción de
Activar/Desactivar el Javascript en los mismos.
2.5.4. Servidor Apache
Apache es una popular y eficiente alternativa, que ofrece servicios web. Este
servidor web es uno de los logros más grandes del software libre y la punta del
mundo de las páginas web.
Apache es un poderoso servidor web, cuyo nombre proviene de la frase
inglesa “a patchy server” y es completamente libre, ya que es un software Open
Source. Una de las ventajas más grandes de Apache, es que es un servidor web
multiplataforma, es decir, puede trabajar con diferentes sistemas operativos y
mantener su excelente rendimiento. Además es gratuito, muy robusto y se destaca
por su seguridad y rendimiento.
Este servidor es utilizado principalmente, para realizar servicio a páginas
web, ya sean estáticas o dinámicas. También se integra a la perfección con otras
aplicaciones, creando el famoso paquete XAMPP con Perl, Python, MySQL y PHP,
47
junto a cualquier sistema operativo, que por lo general es Linux, Windows o Mac
OS.
Figura 2.5.4.A. Diagrama del flujo de datos con Apache
2.5.4.1. Historia
La historia de Apache se remonta a febrero de 1995, donde empieza el
proyecto del grupo Apache, el cual está basado en el servidor Apache httpd de la
aplicación original de NCSA. El desarrollo de esta aplicación original se estancó por
algún tiempo tras la marcha de Rob McCool por lo que varios desarrolladores web
siguieron creando sus parches para sus servidores web hasta que se contactaron
vía email para seguir en conjunto el mantenimiento del servidor web, fue ahí cuando
formaron el grupo Apache.
Fueron Brian Behlendorf y Cliff Skolnick quienes a través de una lista de
correo coordinaron el trabajo y lograron establecer un espacio compartido de libre
acceso para los desarrolladores.
Fue así como fue creciendo el grupo Apache, hasta lo que es hoy. Aquella
primera versión y sus sucesivas evoluciones y mejoras alcanzaron una gran
implantación como software de servidor inicialmente solo para sistemas operativos
UNIX y fruto de esa evolución es la versión para Windows.
48
La licencia Apache es una descendiente de la licencias BSD, no es GPL.
Esta licencia te permite hacer lo que quieras con el código fuente (incluso forks y
productos propietarios) siempre que les reconozcas su trabajo.
2.5.4.2. Ventajas
• Instalación/Configuración: Software de código abierto.
• Coste: El servidor web Apache es completamente gratuito.
• Funcional y Soporte: Alta aceptación en la red y muy popular, esto hace que
muchos programadores de todo el mundo contribuyen constantemente con
mejoras, que están disponibles para cualquier persona que use el servidor
web y que Apache se actualice constantemente.
• Multi-plataforma: Se puede instalar en muchos sistemas operativos, es
compatible con Windows, Linux y MacOS.
• Rendimiento: Capacidad de manejar más de un millón de visitas/día.
• Soporte de seguridad SSL y TLS.
2.5.5. Apache Tomcat
Tomcat es un contenedor de servlets que se utiliza en la Referencia oficial
de la implementación para Java Servlet y JavaServer Pages (JSP, anteriormente
vistos). Las especificaciones Java Servlet y JavaServer Pages son desarrolladas
por Sun Microsystems cuyas especificaciones vienen dadas por la JCP (Java
Community Process). Apache Tomcat es desarrollado en un entorno abierto y bajo
la licencia de Apache Software License.
En pocas palabras, se puede decir que Apache Tomcat (o Jakarta Tomcat)
es un software desarrollado con Java (con lo cual puede funcionar en cualquier
sistema operativo, con su máquina virtual java correspondiente) que sirve como
servidor web con soporte de servlets y JSPs.
Tomcat es mantenido y desarrollado por miembros de la Apache Software
Foundation y voluntarios independientes. Los usuarios disponen de libre acceso a
su código fuente y a su forma binaria en los términos establecidos en la Apache
49
Software License. Las primeras distribuciones de Tomcat fueron las versiones
3.0.x. Las versiones más recientes son las 8.x, que implementan las
especificaciones de Servlet 3.0 y de JSP 2.2. A partir de la versión 4.0, Jakarta
Tomcat utiliza el contenedor de servlets Catalina.
Este un servidor web con soporte de servlets y JSPs. Pero no es un
servidor de aplicaciones, como JBoss o JOnAS. Incluye el compilador Jasper, que
compila JSPs convirtiéndolas en servlets. El motor de servlets de Tomcat a
menudo se presenta en combinación con el servidor web Apache.
Tomcat puede funcionar como servidor web por sí mismo. En sus inicios
existió la percepción de que el uso de Tomcat de forma autónoma era sólo
recomendable para entornos de desarrollo y entornos con requisitos mínimos de
velocidad y gestión de transacciones. Hoy en día ya no existe esa percepción y
Tomcat es usado como servidor web autónomo en entornos con alto nivel de
tráfico y alta disponibilidad.
Figura 2.5.5.A. Diagrama del funcionamiento de Tomcat.
2.5.5.1 Directorios del nucleo de Tomat
• bin - arranque, cierre, y otros scripts y ejecutables.
• common - clases comunes que pueden utilizar Catalina y las aplicaciones
web.
• conf - ficheros XML y los correspondientes DTD para la configuración de
Tomcat.
50
• logs - logs de Catalina y de las aplicaciones.
• server - clases utilizadas solamente por Catalina.
• shared - clases compartidas por todas las aplicaciones web.
• webapps - directorio que contiene las aplicaciones web.
• work - almacenamiento temporal de ficheros y directorios.
III. ESTADO DEL ARTE
3.1. Descripción
La aplicación que se desarrolló con las tecnologías habladas en el capítulo
anterior se trató de un sistema para el manejo de change requests.
Un change request es un documento formal en el cual se especifica una
propuesta para la alteración de un producto o sistema.
En la administración de proyectos, un change request se pide
frecuentemente cuando un cliente quiere una agregación o alteración al proyecto
en el que anteriormente se había acordado. Dicho cambio puede involucrar una
característica adicional, la modificación o extensión de servicios, entre otros.
Debido a que un change request va más allá de las características
acordadas, generalmente se efectúa un pago extra por los recursos requeridos,
para satisfacer las necesidades del cliente.
Los change requests se pueden originar internamente, estos pueden
contener una variedad de acciones, incluyendo instalación de software,
mejoramiento de hardware, etc.