ii. marco teÓrico

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

Upload: others

Post on 17-Jul-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: II. MARCO TEÓRICO

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.

Page 2: II. MARCO TEÓRICO

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.

Page 3: II. MARCO TEÓRICO

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

Page 4: II. MARCO TEÓRICO

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

Page 5: II. MARCO TEÓRICO

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.

Page 6: II. MARCO TEÓRICO

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

Page 7: II. MARCO TEÓRICO

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,

Page 8: II. MARCO TEÓRICO

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.

Page 9: II. MARCO TEÓRICO

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:

Page 10: II. MARCO TEÓRICO

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.

Page 11: II. MARCO TEÓRICO

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.

Page 12: II. MARCO TEÓRICO

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.

Page 13: II. MARCO TEÓRICO

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

Page 14: II. MARCO TEÓRICO

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,

Page 15: II. MARCO TEÓRICO

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.

Page 16: II. MARCO TEÓRICO

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

Page 17: II. MARCO TEÓRICO

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

Page 18: II. MARCO TEÓRICO

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.

Page 19: II. MARCO TEÓRICO

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

Page 20: II. MARCO TEÓRICO

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

Page 21: II. MARCO TEÓRICO

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

Page 22: II. MARCO TEÓRICO

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.

Page 23: II. MARCO TEÓRICO

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.

Page 24: II. MARCO TEÓRICO

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

Page 25: II. MARCO TEÓRICO

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

Page 26: II. MARCO TEÓRICO

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.

Page 27: II. MARCO TEÓRICO

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.

Page 28: II. MARCO TEÓRICO

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.

Page 29: II. MARCO TEÓRICO

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.

Page 30: II. MARCO TEÓRICO

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

Page 31: II. MARCO TEÓRICO

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

Page 32: II. MARCO TEÓRICO

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.

Page 33: II. MARCO TEÓRICO

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.

Page 34: II. MARCO TEÓRICO

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,

Page 35: II. MARCO TEÓRICO

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.

Page 36: II. MARCO TEÓRICO

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

Page 37: II. MARCO TEÓRICO

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.

Page 38: II. MARCO TEÓRICO

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.