Está en la página 1de 42

UNIVERSIDAD NACIONAL DEL SANTA

FACULTAD DE INGENIERÍA
Escuela Académico Profesional de Ingeniería de Sistemas e
Informática

“Desarrollo de un Sistema Web para Promover la Integración de


Alumnos, Docentes y Autoridades de la Escuela Académico Profesional de
Ingeniería de Sistemas e Informática de la Universidad Nacional del
Santa”

PROYECTO DE TRABAJO DE INVESTIGACIÓN

INVESTIGADORES:
Muñoz Aleman Jonathan S.
Paniagua Vilcarino Sarath
Rosales Chinchihuara Beder
Terrones España Carlos

ASESOR:
Mg. Ing. Guillermo Gil Albarrán

NUEVO CHIMBOTE – PERÚ


Lunes, 13 de Julio de 2009
Índice de Contenido
1. Datos Generales........................................................................................................................... 5
1.1. Título ................................................................................................................................... 5
1.2. Autores ................................................................................................................................ 5
1.3. Asesor.................................................................................................................................. 5
1.4. Tipo de Investigación .......................................................................................................... 5
1.5. Régimen de la Investigación ............................................................................................... 5
1.6. Duración del Proyecto ......................................................................................................... 5
1.6.1. Fecha de Inicio ............................................................................................................ 5
1.6.2. Fecha de Término ........................................................................................................ 5
1.7. Área de Desarrollo del Proyecto ......................................................................................... 5
1.7.1. Localidad ..................................................................................................................... 5
1.7.2. Institución .................................................................................................................... 5
1.8. Unidad Académica .............................................................................................................. 5
1.9. Cronograma de Actividades ................................................................................................ 6
1.10. Recursos .......................................................................................................................... 6
1.10.1. Personal ....................................................................................................................... 6
1.10.2. Bienes y materiales...................................................................................................... 6
1.10.3. Servicios ...................................................................................................................... 6
1.11. Presupuesto...................................................................................................................... 7
1.11.1. Personal ....................................................................................................................... 7
1.11.2. Bienes y Materiales ..................................................................................................... 7
1.11.3. Servicios ...................................................................................................................... 7
1.11.4. Resumen ...................................................................................................................... 8
1.12. Financiamiento ................................................................................................................ 8
2. Plan de Investigación ................................................................................................................ 10
2.1. Problema ........................................................................................................................... 10
2.1.1. Realidad Problemática............................................................................................... 10
2.1.2. Análisis del Problema................................................................................................ 11
2.1.3. Formulación del Problema ........................................................................................ 11
2.1.4. Antecedentes ............................................................................................................. 12
2.1.5. Justificación............................................................................................................... 12
2.1.6. Limitaciones .............................................................................................................. 13
2.2. Objetivos ........................................................................................................................... 14
2.2.1. Objetivo General ....................................................................................................... 14
2.2.2. Objetivos Específicos ................................................................................................ 14
2.3. Hipótesis ............................................................................................................................ 14
2.4. Marco Teórico ................................................................................................................... 14
2.4.1. Aplicación Web ......................................................................................................... 14
2.4.2. Base de Datos ............................................................................................................ 17
2.4.3. Sistemas Gestores de Bases de datos ........................................................................ 21
2.4.4. Servidor MySQL ....................................................................................................... 23
2.4.5. Servidor Web............................................................................................................. 25
2.4.6. Servidor HTTP Apache ............................................................................................. 26
2.4.7. Lenguaje de Programación ........................................................................................ 28
2.4.8. Lenguaje de Programación PHP................................................................................ 32
2.4.9. Sistema de Gestión de Contenidos ............................................................................ 35
2.4.10. Framework Joomla!................................................................................................... 38
2.5. Metodología a Seguir ........................................................................................................ 39
2.6. Diseño de Investigación .................................................................................................... 40
2.7. Cobertura del Estudio ........................................................................................................ 40
2.7.1. Población ................................................................................................................... 40
2.7.2. Muestra ...................................................................................................................... 40
2.8. Fuentes, Técnicas e Instrumentos de Recolección de Datos ............................................. 40
Bibliografía y Linkografía................................................................................................................. 41

Índice de Tablas
Tabla 1. Cronograma de actividades del proyecto. ............................................................................. 6
Tabla 2. Presupuesto del personal. ...................................................................................................... 7
Tabla 3. Presupuesto de los bienes y materiales. ................................................................................ 7
Tabla 4. Presupuesto de los servicios. ................................................................................................. 7
Tabla 5. Presupuesto total resumido por categorías. ........................................................................... 8
Tabla 6. Técnicas e instrumentos utilizados en la investigación. ...................................................... 40
Capítulo I
1. Datos Generales
1.1. Título
―Desarrollo de un Sistema Web para Promover la Integración de Alumnos, Docentes y
Autoridades de la Escuela Académico Profesional de Ingeniería de Sistemas e
Informática de la Universidad Nacional del Santa‖

1.2. Autores
Muñoz Aleman Jonathan S.
Paniagua Vilcarino Sarath J.
Rosales Chinchihuara Beder M.
Terrones España Carlos

1.3. Asesor
Mg. Ing. Guillermo Gil Albarrán

1.4. Tipo de Investigación


Aplicada/Tecnológica

1.5. Régimen de la Investigación


Libre, el presente Proyecto de Trabajo de Investigación es realizado por iniciativa de
los autores.

1.6. Duración del Proyecto


1.6.1. Fecha de Inicio
06/06/2009

1.6.2. Fecha de Término


06/11/2009

1.7. Área de Desarrollo del Proyecto


1.7.1. Localidad
Nuevo Chimbote

1.7.2. Institución
Universidad Nacional del Santa

1.8. Unidad Académica


Facultad de Ingeniería – Escuela Académico Profesional de Ingeniería de Sistemas e
Informática
1.9. Cronograma de Actividades
Para llevar a cabo el proyecto se hace necesario realizar diferentes actividades, las que
serán mostradas en el siguiente Diagrama de Gantt, donde se establecen tiempos
aproximados para el cumplimiento de dichas actividades.

Para llevar a cabo el proyecto se hace necesario realizar diferentes actividades, las que
serán mostradas en la Tabla 1, donde se establecen tiempos aproximados para el
cumplimiento de dichas actividades.

Las actividades realizadas para la culminación del proyecto son las siguientes:

Actividad Duración Inicio Fin


Elaboración del PTI 5 días? 08/06/2009 13/06/2009
Revisión Bibliográfica 5 días 15/06/2009 20/06/2009
Recopilación de datos 10 días? 22/06/2009 04/07/2009
Fase de Inicio 10 días? 06/07/2009 18/07/2009
Fase de Elaboración 15 días? 20/07/2009 08/08/2009
Fase de Construcción 55 días? 10/08/2009 24/10/2009
Fase de Transición 10 días? 26/10/2009 06/11/2009

Tabla 1. Cronograma de actividades del proyecto.

El diagrama de Gantt de las actividades programadas se muestra como un anexo al


final de este documento.

1.10. Recursos
1.10.1. Personal
Investigadores
o Muñoz Aleman Jonathan S.
o Paniagua Vilcarino Sarath J.
o Rosales Chinchihuara Beder M.
o Terrones España Carlos

Asesor: Mg. Ing. Guillermo Gil Albarrán

1.10.2. Bienes y materiales


Papel Bond A4 de 80 gr
Lapiceros
CR – RW
Cartucho para Impresora HP 2460
Memoria USB 4GB
Folders Manila tamaño A 4
Engrapador
Clips

1.10.3. Servicios
Internet
Fotocopiados
Impresión
Pasajes

1.11. Presupuesto
1.11.1. Personal
Especificación Precio Unitario Meses Subtotal
Muñoz Aleman Jonathan S. S/. 500.00 4 S/. 2,000.00
Paniagua Vilcarino Sarath J. S/. 0.00
Rosales Chinchihuara Beder S/. 0.00
Terrones España Carlos S/. 0.00
Total S/. 2,000.00

Tabla 2. Presupuesto del personal.

1.11.2. Bienes y Materiales


Especificación Cantidad Unidad Precio Unitario Subtotal
Bienes y Materiales
Papel Bond A4 80 gr. 1 Millar S/. 22.00 S/. 22.00
Lapiceros 4 Unidad S/. 0.50 S/. 2.00
CD - RW 1 Docena S/. 9.00 S/. 9.00
Cartucho de tinta 2 Unidad S/. 120.00 S/. 240.00
Memoria USB 4 GB 1 Unidad S/. 45.00 S/. 45.00
Fólder Manila A4 1 Docena S/. 6.00 S/. 6.00
Engrapador 1 Unidad S/. 5.00 S/. 5.00
Clips 1 Caja S/. 3.00 S/. 3.00
Software
Windows XP SP 3 1 Licencia S/. 300.00 S/. 300.00
Microsoft Office 2007 1 Licencia S/. 255.00 S/. 255.00
Total S/. 887.00

Tabla 3. Presupuesto de los bienes y materiales.

1.11.3. Servicios
Especificación Cantidad Unidad Precio Unitario Subtotal
Internet S/. 440.00 Hora 1 S/. 440.00
Fotocopiado S/. 500.00 Copia 0.1 S/. 50.00
Impresión S/. 200.00 Hoja 0.1 S/. 20.00
Movilidad S/. 21.00 Pasaje 12 S/. 252.00
Total S/. 762.00

Tabla 4. Presupuesto de los servicios.


1.11.4. Resumen
ESPECIFICACIÓN SUBTOTAL
Personal S/. 2,000.00
Bienes y Materiales S/. 887.00
Servicios S/. 762.00
Imprevistos S/. 364.90
Total S/. 4,013.90

Tabla 5. Presupuesto total resumido por categorías.

1.12. Financiamiento
El presupuesto del proyecto será financiado por los autores en su totalidad.

Muñoz Aleman Jonathan S. 25%


Paniagua Vilcarino Sarath J. 25%
Rosales Chinchihuara Beder M. 25%
Terrones España Carlos 25%
Capítulo II
2. Plan de Investigación
2.1. Problema
2.1.1. Realidad Problemática
Hoy en día, la gran mayoría de instituciones y organizaciones cuentan con un
sistema Web que les permita brindar al público información variada acerca de
los productos y los servicios que ofrecen. También, se conciben estos sistemas
de manera que ayuda al acercamiento a los clientes, actuales y potenciales, ya
que es muy fácil distribuir la información por Internet.

Debido al auge que se encuentra viviendo el mundo entorno a las


comunicaciones mediante el Internet, el surgimiento de la necesidad de
compartir información mediante los sitios de plataforma Web, hace que se
torne indispensable la implementación de un sitio Web, Página o cualquier
término afín, el cual nos proporcionará un medio de comunicación de masas,
que puede influir, educar o informar de manera casi gratuita.

La Universidad Nacional del Santa es una institución de servicios, que tiene


como misión formar profesionales con adecuados conocimientos científicos,
tecnológicos, humanísticos, con altos valores éticos-morales tendientes a
desarrollar sus capacidades y destrezas para contribuir a satisfacer las
necesidades de la sociedad, así como desarrollar investigación científica y
extensión social. La Escuela Académico Profesional de Ingeniería de Sistemas
e Informática, es el órgano encargado de formar profesionales en Ingeniería de
Sistemas e Informática de alto nivel; críticos, comprometidos con la búsqueda
de la vedad y la práctica de valores en su interrelación permanente con la
sociedad. Buscando la excelencia académica a través de la investigación y la
docencia, brindando el soporte educacional a la política de generación de
empleo.

Siguiendo los avances tecnológicos, y sobre todo los avances a pasos


agigantados de las tecnologías de información, la Escuela Académica
Profesional de Ingeniería de Sistemas e Informática no puede estar ajena a
dichos avances, además teniendo como antecedentes las características de
nuestra carrera que nos impulsa a la práctica constante de la investigación,
adquisición de nuevos y mejores conocimientos para luego aplicarlos en el
desarrollo de soluciones para problemas en el entorno laboral.

Ante ésta situación tenemos el compromiso de proyectarnos y visionar un


mejor futuro, en el cual la EAPISI, sea reconocida como una escuela
comprometida con el desarrollo profesional de sus estudiantes, como punto de
partida conviene el Desarrollo de un Portal Web, que permitirá la
comunicación constante entre estudiantes, docentes y autoridades, además que
de ésta manera se promueve el compromiso de los estudiantes.
2.1.2. Análisis del Problema
La Escuela Académico Profesional de Ingeniería de Sistemas e Informática
forma profesionales en Ingeniería de Sistemas e Informática de alto nivel;
críticos, comprometidos con la búsqueda de la vedad y la práctica de valores
en su interrelación permanente con la sociedad para un desarrollo profesional
eficiente.

Actualmente presenta problemas en la administración de la información y la


falta de integración entre todos los miembros de la escuela, ya que no cuenta
con un Sistema vía Web que permita promover la Integración de Alumnos,
Docentes y Autoridades de la Escuela Académico Profesional de Ingeniería de
Sistemas e Informática, por lo que se genera un descontrol en sus actividades,
provocando malestar entre la población estudiantil y la plana docente debido a
que el acceso a la información y su difusión se logra únicamente en la EAPISI,
lo que ocasiona pérdida de tiempo, un servicio deficiente en cuanto a la fluidez
de la información, así como perjuicio a la imagen institucional ya que resulta
paradójico que estando la carrera orientada a temas tecnológicos no cuente aun
con un Portal Web, lo cual origina que no haya un debido reconocimiento tanto
en el ámbito local como nacional.

El presente proyecto de investigación titulado ―Desarrollo de un Sistema vía


Web que permita promover la Integración de Alumnos, Docentes y
Autoridades de la Escuela Académico Profesional de Ingeniería de Sistemas e
Informática de la Universidad Nacional del Santa‖, ha sido propuesto con el
objetivo de demostrar que es posible lograr la integración de Alumnos,
Docentes y Autoridades de la Escuela Académico Profesional de Ingeniería de
Sistemas e Informática, además servirá como instrumento de apoyo en el
funcionamiento y mejora institucional lo que permitirá formalizar y dar a
conocer las actividades que se llevan a cabo en la EAPISI, es importante
también destacar que para la realización de este proyecto de investigación se
decidió la utilización de herramientas de la categoría Open Source de tal modo
que se eliminen costos de licencias, permitiendo un ahorro económico
significativo para la institución haciendo factible su implementación.

Por lo tanto, podemos concluir que la necesidad de la implementación de un


Sistema de Información vía Web radica en el hecho de adoptar un medio el
cual va a permitir una mejor gestión de la información (rapidez funcional y
operativa), promoviendo la integración de todos sus miembros.

2.1.3. Formulación del Problema


¿En qué medida el Desarrollo de un Sistema vía Web promoverá la Integración
de Alumnos, Docentes y Autoridades de la Escuela Académico Profesional de
Ingeniería de Sistemas e Informática de la Universidad Nacional del Santa?
2.1.4. Antecedentes
UNIVERSIA

Universia es la mayor red iberoamericana de colaboración universitaria.


Integra 1.100 universidades e instituciones de educación superior en 15 países.
Las universidades socias de Universia forman el 75,6 % del colectivo
universitario de los países donde está presente. Universia representa 10,2
millones de alumnos, 8 millones de usuarios mensualmente y 850.000
profesores.

El Proyecto Universia fue presentado en Madrid el 9 de julio de 2000 con el


mecenazgo del Grupo Santander, el apoyo de la Conferencia de Rectores de las
Universidades Españolas (CRUE), el Consejo Superior de Investigaciones
Científicas (CSIC) y la mayor parte de las universidades españolas. La
Presidencia de la Sociedad creada a tal efecto (Portal Universia S. A.) la
asumió Emilio Botín Sanz.

A partir de principios de 2001, se inicia la extensión del "Modelo Universia"


hacia Portugal y los países iberoamericanos. Como resultado de esa extensión,
se formalizaron los diferentes portales que constituyen la red y la constitución
paralela de casi todas las sociedades Universia (Argentina, Brasil, Chile,
Colombia, España, México, Perú, Puerto Rico y Venezuela). Portugal lo hace
un año más tarde y Uruguay se formalizó años más tarde en noviembre de
2005.

Con el fin de expandir la red Universia hacia el mundo, la información básica


de Universia fue publicada en 5 idiomas dentro del portal de Wikipedia
durante el mes de marzo de 2009 bajo la edición y traducción de Pabsi
González de Universia Puerto Rico.

En la actualidad, Universia constituye la red universitaria más importante del


mundo.

(Wikimedia Foundation, Inc., 2009)

2.1.5. Justificación
El proyecto parte de la necesidad de promover la integración de los alumnos,
docentes y autoridades de la Escuela Académico Profesional de Ingeniería de
Sistemas e Informática de la Universidad Nacional del Santa, y así poder
mejorar la relaciones entre ellos.

Este proyecto se realizará con la finalidad de lograr la integración de los


miembros de la escuela así como también proporcionar un medio de
comunicación formal para difundir las actividades académicas de la EAPISI.

Este Sistema vía Web permitirá una mejor administración de la información en


lo que respecta al desarrollo de las actividades así como también se logrará
tener un merecido reconocimiento tanto en el ámbito local como nacional
dando mayor realce y aceptación a la carrera, elevando la imagen
institucional.

La realización de este Sistema vía Web será de forma descriptiva dado que
presenta valiosa información, será analizada dentro de las 4 fases que
corresponden al proyecto Web, lo cual facilitará un mejor entendimiento de sus
procesos, definiendo variables importantes como son los tiempos ponderados
para la realización de cada actividad, los responsables de la realización y la
dependencia en la que se desempeña el responsable, las observaciones y
requisitos y los controles normativos en cada uno.

El Desarrollo e Implementación de un Sistema de Información vía Web para la


Escuela Académico Profesional de la Universidad Nacional del Santa permitirá
adoptar un medio de comunicación el cual va a hará posible una mejor gestión
de la información (rapidez funcional y operativa), promoviendo la integración
de todos sus miembros.

2.1.6. Limitaciones
El sistema se ocupara de los siguientes aspectos:

Información General de la Escuela


o Organización de la Escuela (Autoridades, etc)
o Plana Docente
o Perfil del Egresado
o Plan Curricular
o Grados y Títulos
o Procesos de trámites documentarios.
o Eventos relacionados a la carrera.

Comunidad de Sistemas. Esta comunidad va a permitir la


comunicación e integración entre los alumnos, egresados y docentes
beneficiándolos en el aspecto profesional y laboral. Los alumnos de
pregrado tendrán al alcance la información adecuada para desarrollar
prácticas preprofesionales.

Servicios
o Centro de descargas de manuales y tutoriales relacionados a
las asignaturas del Plan Curricular.
o Descarga de formatos de trámites documentarios.
o Grupos de Estudio.
o Blog y foros
2.2. Objetivos
2.2.1. Objetivo General
Desarrollar de un Sistema vía Web para promover la Integración de Alumnos,
Docentes y Autoridades de la Escuela Académico Profesional de Ingeniería de
Sistemas e Informática de la Universidad Nacional del Santa.

2.2.2. Objetivos Específicos


Desarrollar una comunidad Web a través de la cual, alumnos,
docentes, egresados y autoridad, accedan a la información e
interactúen dinámicamente.
Ayudar a elevar el nivel académico de los alumnos de la EAPISI,
complementando los conocimientos impartidos en las aulas con
contenido actualizado.
Dar a conocer a nivel local, regional y nacional el potencial existente
en los alumnos de la Escuela Académico Profesional de Ingeniería de
Sistemas e Informática.
Permitir que la EAPISI sea reconocida a nivel regional por ayudar al
desarrollo profesional de sus alumnos.
Agilizar la toma de decisiones en base a los resultados ofrecidos por el
sistema.
Recolectar los datos necesarios para el procesamiento de la
información que se brindará en el sistema Web.
Utilizar la metodología RUP y el lenguaje UML con extensiones para
Web para llevar a cabo el análisis, el diseño y la documentación del
sistema.
Utilizar herramientas de software libre para realizar la implementación
del sistema Web.
Demostrar que los alumnos de la Escuela Académico Profesional de
Ingeniería de Sistemas e Informática son capaces de participar en
proyectos serios de desarrollo de software.

2.3. Hipótesis
El Desarrollo de un Sistema vía Web permitirá la Integración de Alumnos, Docentes y
Autoridades de la Escuela Académico Profesional de Ingeniería de Sistemas e
Informática de la Universidad Nacional del Santa.

2.4. Marco Teórico


2.4.1. Aplicación Web
Se denomina aplicación web a aquellas aplicaciones que los usuarios pueden
utilizar accediendo a un servidor web a través de Internet o de una intranet
mediante un navegador. En otras palabras, es una aplicación software que se
codifica en un lenguaje soportado por los navegadores web (HTML,
JavaScript, Java, ASP.NET, etc.) en la que se confía la ejecución al navegador.
Las aplicaciones web son populares debido a lo práctico del navegador web
como cliente ligero, así como a la facilidad para actualizar y mantener
aplicaciones web sin distribuir e instalar software a miles de usuarios
potenciales. Existen aplicaciones como los webmails, wikis, weblogs y las
tiendas en línea que son ejemplos bien conocidos de aplicaciones web.

Es importante mencionar que una página Web puede contener elementos que
permiten una comunicación activa entre el usuario y la información. Esto
permite que el usuario acceda a los datos de modo interactivo, gracias a que la
página responderá a cada una de sus acciones, como por ejemplo rellenar y
enviar formularios, participar en juegos diversos y acceder a gestores de base
de datos de todo tipo.

En los primeros tiempos de la computación cliente-servidor, cada aplicación


tenía su propio programa cliente que servía como interfaz de usuario que tenía
que ser instalado por separado en cada ordenador personal de cada usuario. El
cliente realizaba peticiones a otro programa -el servidor- que le daba respuesta.
Una mejora en el servidor, como parte de la aplicación, requería normalmente
una mejora de los clientes instalados en cada ordenador personal, añadiendo un
coste de soporte técnico y disminuyendo la productividad.

A diferencia de lo anterior, las aplicaciones web generan dinámicamente una


serie de páginas en un formato estándar, como HTML o XHTML, que
soportan por los navegadores web comunes. Se utilizan lenguajes interpretados
en el lado del cliente, tales como JavaScript, para añadir elementos dinámicos
a la interfaz de usuario. Generalmente cada página web en particular se envía
al cliente como un documento estático, pero la secuencia de páginas ofrece al
usuario una experiencia interactiva. Durante la sesión, el navegador web
interpreta y muestra en pantalla las páginas, actuando como cliente para
cualquier aplicación web.

Las interfaces web tienen ciertas limitaciones en las funcionalidades que se


ofrecen al usuario. Hay funcionalidades comunes en las aplicaciones de
escritorio como dibujar en la pantalla o arrastrar-y-soltar que no están
soportadas por las tecnologías web estándar. Los desarrolladores web
generalmente utilizan lenguajes interpretados o script en el lado del cliente
para añadir más funcionalidades, especialmente para ofrecer una experiencia
interactiva que no requiera recargar la página cada vez (lo que suele resultar
molesto a los usuarios). Recientemente se han desarrollado tecnologías para
coordinar estos lenguajes con tecnologías en el lado del servidor, como por
ejemplo PHP.

Como ejemplo, AJAX, es una técnica de desarrollo web que usa una
combinación de varias tecnologías.
Una ventaja significativa es que las aplicaciones web deberían funcionar igual
independientemente de la versión del sistema operativo instalado en el cliente.
En vez de crear clientes para Windows, Mac OS X, GNU/Linux, y otros
sistemas operativos, la aplicación web se escribe una vez y se ejecuta igual en
todas partes. Sin embargo, hay aplicaciones inconsistentes escritas con HTML,
CSS, DOM y otras especificaciones para navegadores web que pueden causar
problemas en el desarrollo y soporte de las aplicaciones web. Adicionalmente,
la posibilidad de los usuarios de personalizar muchas de las características de
la interfaz (tamaño y color de fuentes, tipos de fuentes, inhabilitar Javascript)
puede interferir con la consistencia de la aplicación web.

Otra aproximación es utilizar Adobe Flash Player o Java applets para


desarrollar parte o toda la interfaz de usuario. Como casi todos los navegadores
incluyen soporte para estas tecnologías (usualmente por medio de plug-ins), las
aplicaciones basadas en Flash o Java pueden ser implementadas con
aproximadamente la misma facilidad. Dado que ignoran las configuraciones de
los navegadores, estas tecnologías permiten más control sobre la interfaz,
aunque las incompatibilidades entre implementaciones Flash o Java puedan
crear nuevas complicaciones. Por las similitudes con una arquitectura cliente-
servidor, con un cliente "no ligero", existen discrepancias sobre el hecho de
llamar a estos sistemas ―aplicaciones web‖; un término alternativo es
―Aplicación Enriquecida de Internet‖.

Aunque existen muchas variaciones posibles, una aplicación web está


normalmente estructurada como una aplicación de tres-capas. En su forma más
común, el navegador web ofrece la primera capa y un motor capaz de usar
alguna tecnología web dinámica (ejemplo: PHP, Java Servlets o ASP,
ASP.NET, CGI, ColdFusion, embPerl, Python (programming language) o
Ruby on Rails) constituye la capa de enmedio. Por último, una base de datos
constituye la tercera y última capa.

El navegador web manda peticiones a la capa de enmedio que ofrece servicios


valiéndose de consultas y actualizaciones a la base de datos y a su vez
proporciona una interfaz de usuario.

Una estrategia que está emergiendo para las empresas proveedoras de software
consiste en proveer acceso vía web al software. Para aplicaciones previamente
distribuidas, como las aplicaciones de escritorio, se puede optar por desarrollar
una aplicación totalmente nueva o simplemente por adaptar la aplicación para
ser usada con una interfaz web. Estos últimos programas permiten al usuario
pagar una cuota mensual o anual para usar la aplicación, sin necesidad de
instalarla en el ordenador del usuario. Las compañías que siguen esta estrategia
se denominan Proveedores de Aplicaciones de Servicio (ASP por sus siglas en
inglés), un modelo de negocio que está atrayendo la atención de la industria del
software. (Wikimedia Foundation, Inc., 2009)
2.4.2. Base de Datos
Una base de datos o banco de datos (en inglés: database) es un conjunto de
datos pertenecientes a un mismo contexto y almacenados sistemáticamente
para su posterior uso. En este sentido, una biblioteca puede considerarse una
base de datos compuesta en su mayoría por documentos y textos impresos en
papel e indexados para su consulta. En la actualidad, y debido al desarrollo
tecnológico de campos como la informática y la electrónica, la mayoría de las
bases de datos están en formato digital (electrónico), que ofrece un amplio
rango de soluciones al problema de almacenar datos.

Existen unos programas denominados sistemas gestores de bases de datos,


abreviado SGBD, que permiten almacenar y posteriormente acceder a los datos
de forma rápida y estructurada. Las propiedades de estos SGBD, así como su
utilización y administración, se estudian dentro del ámbito de la informática.

Las aplicaciones más usuales son para la gestión de empresas e instituciones


públicas. También son ampliamente utilizadas en entornos científicos con el
objeto de almacenar la información experimental.

Aunque las bases de datos pueden contener muchos tipos de datos, algunos de
ellos se encuentran protegidos por las leyes de varios países. Por ejemplo en
España, los datos personales se encuentran protegidos por la Ley Orgánica de
Protección de Datos de Carácter Personal (LOPD).

Tipos de Bases de Datos

Las bases de datos pueden clasificarse de varias maneras, de acuerdo al criterio


elegido para su clasificación:

Según la Variabilidad de los Datos Almacenados

BASES DE DATOS ESTÁTICAS. Éstas son bases de datos de sólo lectura,


utilizadas primordialmente para almacenar datos históricos que
posteriormente se pueden utilizar para estudiar el comportamiento de un
conjunto de datos a través del tiempo, realizar proyecciones y tomar
decisiones.

BASES DE DATOS DINÁMICAS. Éstas son bases de datos donde la


información almacenada se modifica con el tiempo, permitiendo
operaciones como actualización, borrado y adición de datos, además de las
operaciones fundamentales de consulta. Un ejemplo de esto puede ser la
base de datos utilizada en un sistema de información de una tienda de
abarrotes, una farmacia, un videoclub, etc.
Según el Contenido

BASES DE DATOS BIBLIOGRÁFICAS. Solo contienen un subrogante


(representante) de la fuente primaria, que permite localizarla. Un registro
típico de una base de datos bibliográfica contiene información sobre el
autor, fecha de publicación, editorial, título, edición, de una determinada
publicación, etc. Puede contener un resumen o extracto de la publicación
original, pero nunca el texto completo, porque sino estaríamos en presencia
de una base de datos a texto completo (o de fuentes primarias—ver más
abajo). Como su nombre lo indica, el contenido son cifras o números. Por
ejemplo, una colección de resultados de análisis de laboratorio, entre otras.

BASES DE DATOS DE TEXTO COMPLETO. Almacenan las fuentes


primarias, como por ejemplo, todo el contenido de todas las ediciones de
una colección de revistas científicas.

DIRECTORIOS. Un ejemplo son las guías telefónicas en formato


electrónico.

BASES DE DATOS O "BIBLIOTECAS" DE INFORMACIÓN


BIOLÓGICA. Son bases de datos que almacenan diferentes tipos de
información proveniente de las ciencias de la vida o médicas. Se pueden
considerar en varios subtipos:
o Aquellas que almacenan secuencias de nucleótidos o proteínas.
o Las bases de datos de rutas metabólicas
o Bases de datos de estructura, comprende los registros de datos
experimentales sobre estructuras 3D de biomoléculas.
o Bases de datos clínicas
o Bases de datos bibliográficas (biológicas)

Modelos de Bases de Datos

Además de la clasificación por la función de las bases de datos, éstas también


se pueden clasificar de acuerdo a su modelo de administración de datos.

Un modelo de datos es básicamente una "descripción" de algo conocido como


contenedor de datos (algo en donde se guarda la información), así como de los
métodos para almacenar y recuperar información de esos contenedores. Los
modelos de datos no son cosas físicas: son abstracciones que permiten la
implementación de un sistema eficiente de base de datos; por lo general se
refieren a algoritmos, y conceptos matemáticos.

Algunos modelos con frecuencia utilizados en las bases de datos:


Bases de Datos Jerárquicas

Éstas son bases de datos que, como su nombre indica, almacenan su


información en una estructura jerárquica. En este modelo los datos se
organizan en una forma similar a un árbol (visto al revés), en donde un nodo
padre de información puede tener varios hijos. El nodo que no tiene padres es
llamado raíz, y a los nodos que no tienen hijos se los conoce como hojas.

Las bases de datos jerárquicas son especialmente útiles en el caso de


aplicaciones que manejan un gran volumen de información y datos muy
compartidos permitiendo crear estructuras estables y de gran rendimiento.

Una de las principales limitaciones de este modelo es su incapacidad de


representar eficientemente la redundancia de datos.

Base de Datos de Red

Éste es un modelo ligeramente distinto del jerárquico; su diferencia


fundamental es la modificación del concepto de nodo: se permite que un
mismo nodo tenga varios padres (posibilidad no permitida en el modelo
jerárquico).

Fue una gran mejora con respecto al modelo jerárquico, ya que ofrecía una
solución eficiente al problema de redundancia de datos; pero, aun así, la
dificultad que significa administrar la información en una base de datos de red
ha significado que sea un modelo utilizado en su mayoría por programadores
más que por usuarios finales.

Base de Datos Relacional

Éste es el modelo no utilizado en la actualidad para modelar problemas reales y


administrar datos dinámicamente. Tras ser postulados sus fundamentos en
1970 por Edgar Frank Codd, de los laboratorios IBM en San José (California),
no tardó en consolidarse como un nuevo paradigma en los modelos de base de
datos. Su idea fundamental es el uso de "relaciones". Estas relaciones podrían
considerarse en forma lógica como conjuntos de datos llamados "tuplas". Pese
a que ésta es la teoría de las bases de datos relacionales creadas por Edgar
Frank Codd, la mayoría de las veces se conceptualiza de una manera más fácil
de imaginar. Esto es pensando en cada relación como si fuese una tabla que
está compuesta por registros (las filas de una tabla), que representarían las
tuplas, y campos (las columnas de una tabla).

En este modelo, el lugar y la forma en que se almacenen los datos no tienen


relevancia (a diferencia de otros modelos como el jerárquico y el de red). Esto
tiene la considerable ventaja de que es más fácil de entender y de utilizar para
un usuario esporádico de la base de datos. La información puede ser
recuperada o almacenada mediante "consultas" que ofrecen una amplia
flexibilidad y poder para administrar la información.

El lenguaje más habitual para construir las consultas a bases de datos


relacionales es SQL, Structured Query Language o Lenguaje Estructurado de
Consultas, un estándar implementado por los principales motores o sistemas de
gestión de bases de datos relacionales.

Durante su diseño, una base de datos relacional pasa por un proceso al que se
le conoce como normalización de una base de datos.

Durante los años '80 (1980-1989) la aparición de dBASE produjo una


revolución en los lenguajes de programación y sistemas de administración de
datos. Aunque nunca debe olvidarse que dBASE no utilizaba SQL como
lenguaje base para su gestión.

Bases de Datos Multidimensionales

Son bases de datos ideadas para desarrollar aplicaciones muy concretas, como
creación de Cubos OLAP. Básicamente no se diferencian demasiado de las
bases de datos relacionales (una tabla en una base de datos relacional podría
serlo también en una base de datos multidimensional), la diferencia está más
bien a nivel conceptual; en las bases de datos multidimensionales los campos o
atributos de una tabla pueden ser de dos tipos, o bien representan dimensiones
de la tabla, o bien representan métricas que se desean estudiar.

Bases de Datos Orientadas a Objetos

Este modelo, bastante reciente, y propio de los modelos informáticos


orientados a objetos, trata de almacenar en la base de datos los objetos
completos (estado y comportamiento).

Una base de datos orientada a objetos es una base de datos que incorpora todos
los conceptos importantes del paradigma de objetos:

ENCAPSULACIÓN. Propiedad que permite ocultar la información al resto


de los objetos, impidiendo así accesos incorrectos o conflictos.
HERENCIA. Propiedad a través de la cual los objetos heredan
comportamiento dentro de una jerarquía de clases.
POLIMORFISMO. Propiedad de una operación mediante la cual puede ser
aplicada a distintos tipos de objetos.

En bases de datos orientadas a objetos, los usuarios pueden definir operaciones


sobre los datos como parte de la definición de la base de datos. Una operación
(llamada función) se especifica en dos partes. La interfaz (o signatura) de una
operación incluye el nombre de la operación y los tipos de datos de sus
argumentos (o parámetros). La implementación (o método) de la operación se
especifica separadamente y puede modificarse sin afectar la interfaz. Los
programas de aplicación de los usuarios pueden operar sobre los datos
invocando a dichas operaciones a través de sus nombres y argumentos, sea cual
sea la forma en la que se han implementado. Esto podría denominarse
independencia entre programas y operaciones.

Se está trabajando en SQL3, que es el estándar de SQL92 ampliado, que


soportará los nuevos conceptos orientados a objetos y mantendría
compatibilidad con SQL92.

Bases de Datos Documentales

Permiten la indexación a texto completo, y en líneas generales realizar


búsquedas más potentes. Tesaurus es un sistema de índices optimizado para
este tipo de bases de datos.

Base de Datos Deductivas

Un sistema de bases de datos deductivas, es un sistema de base de datos pero


con la diferencia de que permite hacer deducciones a través de inferencias. Se
basa principalmente en reglas y hechos que son almacenados en la base de
datos. También las bases de datos deductivas son llamadas base de datos
lógica, a raíz de que se basa en lógica matemática.

Gestión de Bases de Datos Distribuida

La base de datos está almacenada en varias computadoras conectadas en red.


Surgen debido a la existencia física de organismos descentralizados. Esto les
da la capacidad de unir las bases de datos de cada localidad y acceder así a
distintas universidades, sucursales de tiendas, etcétera.

(Wikimedia Foundation, Inc., 2009)

2.4.3. Sistemas Gestores de Bases de datos


Los sistemas de gestión de base de datos (SGBD); (en inglés: DataBase
Management System, abreviado DBMS) son un tipo de software muy
específico, dedicado a servir de interfaz entre la base de datos, el usuario y las
aplicaciones que la utilizan.

El propósito general de los sistemas de gestión de base de datos es el de


manejar de manera clara, sencilla y ordenada un conjunto de datos que
posteriormente se convertirán en información relevante para una organización.

Existen distintos objetivos que deben cumplir los SGBD:

Abstracción de la información. Los SGBD ahorran a los usuarios detalles


acerca del almacenamiento físico de los datos. Da lo mismo si una base de
datos ocupa uno o cientos de archivos, este hecho se hace transparente al
usuario. Así, se definen varios niveles de abstracción.
Independencia. La independencia de los datos consiste en la capacidad de
modificar el esquema (físico o lógico) de una base de datos sin tener que
realizar cambios en las aplicaciones que se sirven de ella.
Consistencia. En aquellos casos en los que no se ha logrado eliminar la
redundancia, será necesario vigilar que aquella información que aparece
repetida se actualice de forma coherente, es decir, que todos los datos
repetidos se actualicen de forma simultánea. Por otra parte, la base de datos
representa una realidad determinada que tiene determinadas condiciones,
por ejemplo que los menores de edad no pueden tener licencia de conducir.
El sistema no debería aceptar datos de un conductor menor de edad. En los
SGBD existen herramientas que facilitan la programación de este tipo de
condiciones.
Seguridad. La información almacenada en una base de datos puede llegar a
tener un gran valor. Los SGBD deben garantizar que esta información se
encuentra segura de permisos a usuarios y grupos de usuarios, que permiten
otorgar diversas categorías de permisos.
Manejo de Transacciones. Una Transacción es un programa que se ejecuta
como una sola operación. Esto quiere decir que luego de una ejecución en
la que se produce una falla es el mismo que se obtendría si el programa no
se hubiera ejecutado. Los SGBD proveen mecanismos para programar las
modificaciones de los datos de una forma mucho más simple que si no se
dispusiera de ellos.
Tiempo de respuesta. Lógicamente, es deseable minimizar el tiempo que el
SGBD tarda en darnos la información solicitada y en almacenar los
cambios realizados.

Ventajas

Proveen facilidades para la manipulación de grandes volúmenes de datos.


Algunas de estas facilidades son:

Simplifican consistencia de los datos.


Manejan las políticas de respaldo adecuadas garantizan que los cambios de
la base serán siempre consistentes sin importar si hay errores
correctamente, etc.
Permiten realizar una reorganización de los datos con un impacto mínimo
en el código de los programas.
Permiten bajan drásticamente los tiempos de desarrollo y aumentan la
calidad del sistema desarrollado si son bien explotados por los
desarrolladores.

Usualmente, proveen interfaces y lenguajes de consulta que simplifican la


recuperación de los datos.
Inconvenientes

Típicamente, es necesario disponer de una o más personas que administren


de la base de datos, en la misma forma en que suele ser necesario en
instalaciones de cierto porte disponer de una o más personas que
administren de los sistemas operativos. Esto puede llegar a incrementar los
costos de operación en una empresa. Sin embargo hay que balancear este
aspecto con la calidad y confiabilidad del sistema que se obtiene.
Si se tienen muy pocos datos que son usados por un único usuario por vez y
no hay que realizar consultas complejas sobre los datos, entonces es posible
que sea mejor usar una planilla de cálculo.
Complejidad: el software muy complejo y las personas que vayan a usarlo
deben tener conocimiento de las funcionalidades del mismo para poder
aprovecharlo al máximo.
Tamaño: la complejidad y la gran cantidad de funciones que tienen hacen
que sea un software de gran tamaño, que requiere de gran cantidad de
memoria para poder correr.
Coste del hardware adicional: los requisitos de hardware para correr un
SGBD por lo general son relativamente altos, por lo que estos equipos
pueden llegar a costar gran cantidad de dinero. fecha de lanzamiento.

(Wikimedia Foundation, Inc., 2009)

2.4.4. Servidor MySQL


MySQL es un sistema de gestión de base de datos relacional, multihilo y
multiusuario con más de seis millones de instalaciones. MySQL AB —desde
enero de 2008 una subsidiaria de Sun Microsystems y ésta a su vez de Oracle
Corporation desde abril de 2009— desarrolla MySQL como software libre en
un esquema de licenciamiento dual.

Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta
licencia, pero para aquellas empresas que quieran incorporarlo en productos
privativos deben comprar a la empresa una licencia específica que les permita
este uso. Está desarrollado en su mayor parte en ANSI C.

Al contrario de proyectos como Apache, donde el software es desarrollado por


una comunidad pública y el copyright del código está en poder del autor
individual, MySQL es propietario y está patrocinado por una empresa privada,
que posee el copyright de la mayor parte del código.

Esto es lo que posibilita el esquema de licenciamiento anteriormente


mencionado. Además de la venta de licencias privativas, la compañía ofrece
soporte y servicios. Para sus operaciones contratan trabajadores alrededor del
mundo que colaboran vía Internet. MySQL AB fue fundado por David
Axmark, Allan Larsson y Michael Widenius.
SQL (Lenguaje de Consulta Estructurado) fue comercializado por primera vez
en 1981 por IBM, el cual fue presentado a ANSI y desde entonces ha sido
considerado como un estándar para las bases de datos relacionales. Desde
1986, el estándar SQL ha aparecido en diferentes versiones como por ejemplo:
SQL:92, SQL:99, SQL:2003. MySQL es una idea originaria de la empresa
opensource MySQL AB establecida inicialmente en Suecia en 1995 y cuyos
fundadores son David Axmark, Allan Larsson, y Michael "Monty" Widenius.
El objetivo que persigue esta empresa consiste en que MySQL cumpla el
estándar SQL, pero sin sacrificar velocidad, fiabilidad o usabilidad.

Michael Widenius en la década de los 90 trató de usar mSQL para conectar las
tablas usando rutinas de bajo nivel ISAM, sin embargo, mSQL no era rápido y
flexible para sus necesidades. Esto lo llevó a crear una API SQL denominada
MySQL para bases de datos muy similar a la de mSQL pero más portable.

La procedencia del nombre de MySQL no es clara. Desde hace más de 10


años, las herramientas han mantenido el prefijo My. También, se cree que tiene
relación con el nombre de la hija del cofundador Monty Widenius quien se
llama My.

Por otro lado, el nombre del delfín de MySQL es Sakila y fue seleccionado por
los fundadores de MySQL AB en el concurso ―Name the Dolphin‖. Este
nombre fue enviado por Ambrose Twebaze, un desarrollador de Open source
Africano, derivado del idioma SiSwate, el idioma local de Swazilandia y
corresponde al nombre de una ciudad en Arusha, Tanzania, cerca de Uganda la
ciudad origen de Ambrose.

Existen varias APIs que permiten, a aplicaciones escritas en diversos lenguajes


de programación, acceder a las bases de datos MySQL, incluyendo C, C++,
C#, Pascal, Delphi (via dbExpress), Eiffel, Smalltalk, Java (con una
implementación nativa del driver de Java), Lisp, Perl, PHP, Python, Ruby,
Gambas, REALbasic (Mac), (x)Harbour (Eagle1), FreeBASIC, y Tcl; cada uno
de estos utiliza una API específica. También existe un interfaz ODBC, llamado
MyODBC que permite a cualquier lenguaje de programación que soporte
ODBC comunicarse con las bases de datos MySQL. También se puede acceder
desde el sistema SAP, lenguaje ABAP.

MySQL es muy utilizado en aplicaciones web, como Drupal o phpBB, en


plataformas (Linux/Windows-Apache-MySQL-PHP/Perl/Python), y por
herramientas de seguimiento de errores como Bugzilla. Su popularidad como
aplicación web está muy ligada a PHP, que a menudo aparece en combinación
con MySQL. MySQL es una base de datos muy rápida en la lectura cuando
utiliza el motor no transaccional MyISAM, pero puede provocar problemas de
integridad en entornos de alta concurrencia en la modificación. En aplicaciones
web hay baja concurrencia en la modificación de datos y en cambio el entorno
es intensivo en lectura de datos, lo que hace a MySQL ideal para este tipo de
aplicaciones.

(Wikimedia Foundation, Inc., 2009)

2.4.5. Servidor Web


Un servidor web es un programa que implementa el protocolo HTTP
(HyperText Transfer Protocol). Este protocolo pertenece a la capa de
aplicación del modelo OSI y está diseñado para transferir lo que llamamos
hipertextos, páginas web o páginas HTML (HyperText Markup Language):
textos complejos con enlaces, figuras, formularios, botones y objetos
incrustados como animaciones o reproductores de música.

Es un programa que se ejecuta continuamente en un ordenador (también se


emplea el término para referirse al ordenador que lo ejecuta), manteniéndose a
la espera de peticiones por parte de un cliente (un navegador web) y que
responde a estas peticiones adecuadamente, mediante una página web que se
exhibirá en el navegador o mostrando el respectivo mensaje si se detectó algún
error.

Instalar un servidor web en nuestro PC nos permitirá, entre otras cosas, poder
montar nuestra propia página web sin necesidad de contratar hosting, probar
nuestros desarrollos vía local, acceder a los archivos de nuestro equipo desde
un PC remoto (aunque para esto existen otras opciones, como utilizar un
servidor FTP) o utilizar alguno de los programas basados en web tan
interesantes que están viendo la luz últimamente. El problema de usar nuestro
ordenador como servidor web es que conviene tenerlo encendido
permanentemente (para que esté accesible de forma continua como la mayoría
de los sitios webs), con el consiguiente coste debido al consumo de
electricidad (conviene tener en cuenta que hay alojamientos web gratuitos,
incluso sin publicidad y con interesantes funciones).

Sin embargo, el hecho de que HTTP y HTML estén íntimamente ligados no


debe dar lugar a confundir ambos términos. HTML es un lenguaje de marcas y
HTTP es un protocolo.

Un servidor web se mantiene a la espera de peticiones HTTP por parte de un


cliente HTTP que solemos conocer como navegador. El cliente realiza una
petición al servidor y éste le responde con el contenido que el cliente solicita.
A modo de ejemplo, al teclear www.wikipedia.org en nuestro navegador, éste
realiza una petición HTTP al servidor de dicha dirección. El servidor responde
al cliente enviando el código HTML de la página; el cliente, una vez recibido
el código, lo interpreta y lo exhibe en pantalla. Como vemos con este ejemplo,
el cliente es el encargado de interpretar el código HTML, es decir, de mostrar
las fuentes, los colores y la disposición de los textos y objetos de la página; el
servidor tan sólo se limita a transferir el código de la página sin llevar a cabo
ninguna interpretación de la misma.

Sobre el servicio web clásico podemos disponer de aplicaciones web. Éstas son
porciones de código que se ejecutan cuando se realizan ciertas peticiones o
respuestas HTTP. Hay que distinguir entre:

Aplicaciones en el lado del cliente: el cliente web es el encargado de


ejecutarlas en la máquina del usuario. Son las aplicaciones tipo Java o
JavaScript: el servidor proporciona el código de las aplicaciones al cliente y
éste, mediante el navegador, las ejecuta. Es necesario, por tanto, que el
cliente disponga de un navegador con capacidad para ejecutar aplicaciones
(también llamadas scripts). Comúnmente, los navegadores permiten
ejecutar aplicaciones escritas en lenguaje JavaScript y Java, aunque pueden
añadirse más lenguajes mediante el uso de plugins.
Aplicaciones en el lado del servidor: el servidor web ejecuta la aplicación;
ésta, una vez ejecutada, genera cierto código HTML; el servidor toma este
código recién creado y lo envía al cliente por medio del protocolo HTTP.

Las aplicaciones de servidor muchas veces suelen ser la mejor opción para
realizar aplicaciones web. La razón es que, al ejecutarse ésta en el servidor y
no en la máquina del cliente, éste no necesita ninguna capacidad añadida,
como sí ocurre en el caso de querer ejecutar aplicaciones JavaScript o Java.
Así pues, cualquier cliente dotado de un navegador web básico puede utilizar
este tipo de aplicaciones.

(Wikimedia Foudation, Inc., 2009)

2.4.6. Servidor HTTP Apache


El servidor HTTP Apache es un servidor web HTTP de código abierto para
plataformas Unix (BSD, GNU/Linux, etc.), Windows, Macintosh y otras, que
implementa el protocolo HTTP/1.1 y la noción de sitio virtual. Cuando
comenzó su desarrollo en 1995 se basó inicialmente en código del popular
NCSA HTTPd 1.3, pero más tarde fue reescrito por completo. Su nombre se
debe a que Behelendorf eligió ese nombre porque quería que tuviese la
connotación de algo que es firme y enérgico pero no agresivo, y la tribu
Apache fue la última en rendirse al que pronto se convertiría en gobierno de
EEUU, y en esos momentos la preocupación de su grupo era que llegasen las
empresas y "civilizasen" el paisaje que habían creado los primeros ingenieros
de internet. Además Apache consistía solamente en un conjunto de parches a
aplicar al servidor de NCSA. Era, en inglés, a patchy server (un servidor
"parcheado").

El servidor Apache se desarrolla dentro del proyecto HTTP Server (httpd) de la


Apache Software Foundation.
Apache presenta entre otras características mensajes de error altamente
configurables, bases de datos de autenticación y negociado de contenido, pero
fue criticado por la falta de una interfaz gráfica que ayude en su configuración.

Apache tiene amplia aceptación en la red: desde 1996, Apache, es el servidor


HTTP más usado. Alcanzó su máxima cuota de mercado en 2005 siendo el
servidor empleado en el 70% de los sitios web en el mundo, sin embargo ha
sufrido un descenso en su cuota de mercado en los últimos años. (Estadísticas
históricas y de uso diario proporcionadas por Netcraft[]).

La mayoría de las vulnerabilidades de la seguridad descubiertas y resueltas tan


sólo pueden ser aprovechadas por usuarios locales y no remotamente. Sin
embargo, algunas se pueden accionar remotamente en ciertas situaciones, o
explotar por los usuarios locales malévolos en las disposiciones de
recibimiento compartidas que utilizan PHP como módulo de Apache.

Apache es usado primariamente para enviar páginas web estáticas y dinámicas


en la World Wide Web. Muchas aplicaciones web están diseñadas asumiendo
como ambiente de implantación a Apache, o que utilizarán características
propias de este servidor web.

Apache es el componente de servidor web en la popular plataforma de


aplicaciones LAMP, junto a MySQL y los lenguajes de programación
PHP/Perl/Python (y ahora también Ruby).

Este servidor web es redistribuido como parte de varios paquetes propietarios


de software, incluyendo la base de datos Oracle y el IBM WebSphere
Application Server. Mac OS X integra apache como parte de su propio
servidor web y como soporte de su servidor de aplicaciones WebObjects. Es
soportado de alguna manera por Borland en las herramientas de desarrollo
Kylix y Delphi. Apache es incluido con Novell NetWare 6.5, donde es el
servidor web por defecto, y en muchas distribuciones Linux.

Apache es usado para muchas otras tareas donde el contenido necesita ser
puesto a disposición en una forma segura y confiable. Un ejemplo es al
momento de compartir archivos desde una computadora personal hacia
Internet. Un usuario que tiene Apache instalado en su escritorio puede colocar
arbitrariamente archivos en la raíz de documentos de Apache, desde donde
pueden ser compartidos.

Los programadores de aplicaciones web a veces utilizan una versión local de


Apache en orden de previsualizar y probar código mientras éste es
desarrollado.

Microsoft Internet Information Services (IIS) es el principal competidor de


Apache, así como Sun Java System Web Server de Sun Microsystems y un
anfitrión de otras aplicaciones como Zeus Web Server. Algunos de los más
grandes sitios web del mundo están ejecutándose sobre Apache. La capa
frontal (front end) del motor de búsqueda Google está basada en una versión
modificada de Apache, denominada Google Web Server (GWS). Muchos
proyectos de Wikimedia también se ejecutan sobre servidores web Apache.

La licencia de software bajo la cual el software de la fundación Apache es


distribuido es una parte distintiva de la historia de Apache HTTP Server y de la
comunidad de código abierto. La Licencia Apache permite la distribución de
derivados de código abierto y cerrado a partir de su código fuente original.

La Free Software Foundation no considera a la Licencia Apache como


compatible con la versión 2 de la GNU General Public License (GPL), en la
cual el software licenciado bajo la Apache License no puede ser integrado con
software distribuido bajo la GPL

Sin embargo, la versión 3 de la GPL incluye una provisión (Sección 7e) que le
permite ser compatible con licencias que tienen claúsulas de represalia de
patentes, incluyendo a la Licencia Apache.

El nombre Apache es una marca registrada y puede ser sólo utilizada con el
permiso expreso del dueño de la marca.

(Wikimedia Foundation, Inc., 2009)

2.4.7. Lenguaje de Programación


Con la aparición de las computadoras desaparecen las secuencias de posiciones
de llaves mecánicas que debían desconectarse para obtener una acción
determinada, una llave conectada era un 1 y una llave desconectada era un 0.
Una sucesión de llaves en cualquiera de sus dos posiciones definía una
secuencia de ceros y unos (por ejemplo: 0100011010011101...) que venía a
representar una instrucción o un conjunto de instrucciones (programa) para el
ordenador (o computador) en el que se estaba trabajando. A esta primera forma
de especificar programas para una computadora se la denomina lenguaje
máquina o código máquina.

La necesidad de recordar secuencias de programación para las acciones usuales


llevó a denominarlas con nombres fáciles de memorizar y asociar: ADD
(sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina), etc. A
esta secuencia de posiciones se le denominó "instrucciones", y a este conjunto
de instrucciones se le llamó lenguaje ensamblador.

Posteriormente aparecieron diferentes lenguajes de programación, los cuales


reciben su denominación porque tienen una estructura sintáctica similar a los
lenguajes escritos por los humanos.

Un lenguaje de programación es un conjunto de símbolos y reglas sintácticas y


semánticas que definen su estructura y el significado de sus elementos y
expresiones. Es utilizado para controlar el comportamiento físico y lógico de
una máquina.

Aunque muchas veces se usan los términos 'lenguaje de programación' y


'lenguaje informático' como si fuesen sinónimos, no tiene por qué ser así, ya
que los lenguajes informáticos engloban a los lenguajes de programación y a
otros más, como, por ejemplo, el HTML (lenguaje para el marcado de páginas
web que no es propiamente un lenguaje de programación).

Un lenguaje de programación permite a uno o más programadores especificar


de manera precisa sobre qué datos debe operar una computadora, cómo estos
datos deben ser almacenados o transmitidos y qué acciones debe tomar bajo
una variada gama de circunstancias. Todo esto, a través de un lenguaje que
intenta estar relativamente próximo al lenguaje humano o natural, tal como
sucede con el lenguaje Léxico. Una característica relevante de los lenguajes de
programación es precisamente que más de un programador puedan tener un
conjunto común de instrucciones que puedan ser comprendidas entre ellos para
realizar la construcción del programa de forma colaborativa.

Los procesadores usados en las computadoras son capaces de entender y actuar


según lo indican programas escritos en un lenguaje fijo llamado lenguaje de
máquina.

Todo programa escrito en otro lenguaje puede ser ejecutado de dos maneras:

Mediante un programa que va adaptando las instrucciones conforme son


encontradas. A este proceso se lo llama interpretar y a los programas que lo
hacen se los conoce como intérpretes.
Traduciendo este programa, al programa equivalente escrito en lenguaje de
máquina. A ese proceso se lo llama compilar y al programa traductor se le
denomina compilador.

Clasificación de los Lenguajes de Programación

Los lenguajes de programación se pueden clasificar atendiendo a varios


criterios:

Según su Nivel de Abstracción

LENGUAJES DE MÁQUINA. Están escritos en lenguajes directamente


legibles por la máquina (computadora), ya que sus instrucciones son
cadenas binarias (0 y 1). Da la posibilidad de cargar (transferir un programa
a la memoria) sin necesidad de traducción posterior lo que supone una
velocidad de ejecución superior, solo que con poca fiabilidad y dificultad de
verificar y poner a punto los programas.
LENGUAJES DE BAJO NIVEL. Los lenguajes de bajo nivel son lenguajes
de programación que se acercan al funcionamiento de una computadora. El
lenguaje de más bajo nivel por excelencia es el código máquina. A éste le
sigue el lenguaje ensamblador, ya que al programar en ensamblador se
trabajan con los registros de memoria de la computadora de forma directa.
LENGUAJES DE MEDIO NIVEL. Hay lenguajes de programación que
son considerados por algunos expertos como lenguajes de medio nivel
(como es el caso del lenguaje C) al tener ciertas características que los
acercan a los lenguajes de bajo nivel pero teniendo, al mismo tiempo,
ciertas cualidades que lo hacen un lenguaje más cercano al humano y, por
tanto, de alto nivel.
LENGUAJES DE ALTO NIVEL. Los lenguajes de alto nivel son
normalmente fáciles de aprender porque están formados por elementos de
lenguajes naturales, como el inglés. En BASIC, uno de los lenguajes de alto
nivel más conocidos, los comandos como "IF CONTADOR = 10 THEN
STOP" pueden utilizarse para pedir a la computadora que pare si el
CONTADOR es igual a 10. Esta forma de trabajar puede dar la sensación
de que las computadoras parecen comprender un lenguaje natural; en
realidad lo hacen de una forma rígida y sistemática, sin que haya cabida,
por ejemplo, para ambigüedades o dobles sentidos.

Según el Paradigma de Programación

Un paradigma de programación representa un enfoque particular o filosofía


para la construcción del software. No es mejor uno que otro, sino que cada uno
tiene ventajas y desventajas. Dependiendo de la situación un paradigma resulta
más apropiado que otro.

Atendiendo al paradigma de programación, se pueden clasificar los lenguajes


en:

El paradigma imperativo o por procedimientos es considerado el más


común y está representado, por ejemplo, por el C o por BASIC.
El paradigma funcional está representado por la familia de lenguajes LISP
(en particular Scheme), ML o Haskell.
El paradigma lógico, un ejemplo es PROLOG.
El paradigma orientado a objetos. Un lenguaje completamente orientado a
objetos es Smalltalk.

NOTA: La representación orientada a objetos mejora la estructura de los datos


y por lo tanto se ha aplicado a diferentes paradigmas como Redes de Petri,
Imperativo Secuencial, Lógica de Predicados, Funcional, etc. No obstante, la
manipulación no queda fundamentalmente afectada y por lo tanto el paradigma
inicial tampoco a pesar de ser re-orientado a objetos.

Si bien puede seleccionarse la forma pura de estos paradigmas a la hora de


programar, en la práctica es habitual que se mezclen, dando lugar a la
programación multiparadigma.
Actualmente el paradigma de programación más usado debido a múltiples
ventajas respecto a sus anteriores, es la programación orientada a objetos.

1. Lenguajes imperativos. Son los lenguajes que dan instrucciones a la


computadora, es decir, órdenes.

2. Lenguajes Funcionales. Paradigma Funcional: este paradigma concibe a la


computación como la evaluación de funciones matemáticas y evita declarar
y cambiar datos. En otras palabras, hace hincapié en la aplicación de las
funciones y composición entre ellas, más que en los cambios de estados y la
ejecución secuencial de comandos (como lo hace el paradigma
procedimental). Permite resolver ciertos problemas de forma elegante y los
lenguajes puramente funcionales evitan los efectos secundarios comunes en
otro tipo de programaciones.

3. Lenguajes Lógicos. La computación lógica direcciona métodos de


procesamiento basados en el razonamiento formal. Los objetos de tales
razonamientos son "hechos" o reglas "if then". Para computar lógicamente
se utiliza un conjunto de tales estamentos para calcular la verdad o falsedad
de ese conjunto de estamentos. Un estamento es un hecho si sus tuplas
verifican una serie de operaciones.

Un hecho es una expresión en la que algún objeto o conjunto de objetos


satisface una relación específica. Una tupla es una lista inmutable. Una
tupla no puede modificarse de ningún modo después de su creación.

Un regla if then es un estamento que informa acerca de conjuntos de tuplas


o estamentos relacionados que pueden predecir si otras tuplas satisfacerán
otras relaciones.

Un estamento que es probado verdadero como resultado de un proceso se


dice que es una inferencia del conjunto original. Se trata por tanto de una
descripción de cómo obtener la veracidad de un estamento dado que unas
reglas son verdaderas.

La computación lógica está por tanto relacionada con la automatización de


algún conjunto de métodos de inferencia.

4. Lenguajes orientados a objetos. La Programación Orientada a Objetos


(POO u OOP según sus siglas en inglés) es un paradigma de programación
que usa objetos y sus interacciones para diseñar aplicaciones y programas
de computadora. Está basado en varias técnicas, incluyendo herencia,
modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a
principios de la década de 1990. Actualmente son muchos los lenguajes de
programación que soportan la orientación a objetos.
Implementación

La implementación de un lenguaje es la que provee una manera de que se


ejecute un programa para una determinada combinación de software y
hardware. Existen básicamente dos maneras de implementar un lenguaje:
Compilación e interpretación. Compilación es la traducción a un código que
pueda utilizar la máquina. Los programas traductores que pueden realizar esta
operación se llaman compiladores. Éstos, como los programas ensambladores
avanzados, pueden generar muchas líneas de código de máquina por cada
proposición del programa fuente.

Se puede también utilizar una alternativa diferente de los compiladores para


traducir lenguajes de alto nivel. En vez de traducir el programa fuente y grabar
en forma permanente el código objeto que se produce durante la compilación
para utilizarlo en una ejecución futura, el programador sólo carga el programa
fuente en la computadora junto con los datos que se van a procesar. A
continuación, un programa intérprete, almacenado en el sistema operativo del
disco, o incluido de manera permanente dentro de la máquina, convierte cada
proposición del programa fuente en lenguaje de máquina conforme vaya
siendo necesario durante el procesamiento de los datos. El código objeto no se
graba para utilizarlo posteriormente.

La siguiente vez que se utilice una instrucción, se la deberá interpretar otra vez
y traducir a lenguaje máquina. Por ejemplo, durante el procesamiento
repetitivo de los pasos de un ciclo o bucle, cada instrucción del bucle tendrá
que volver a ser interpretada en cada ejecución repetida del ciclo, lo cual hace
que el programa sea más lento en tiempo de ejecución (porque se va revisando
el código en tiempo de ejecución) pero más rápido en tiempo de diseño
(porque no se tiene que estar compilando a cada momento el código completo).
El intérprete elimina la necesidad de realizar una compilación después de cada
modificación del programa cuando se quiere agregar funciones o corregir
errores; pero es obvio que un programa objeto compilado con antelación
deberá ejecutarse con mucha mayor rapidez que uno que se debe interpretar a
cada paso durante una ejecución del código.

(Wikimedia Foundation, Inc., 2009)

2.4.8. Lenguaje de Programación PHP


PHP es un lenguaje de programación interpretado, diseñado originalmente para
la creación de páginas web dinámicas. Es usado principalmente en
interpretación del lado del servidor (server-side scripting) pero actualmente
puede ser utilizado desde una interfaz de línea de comandos o en la creación de
otros tipos de programas incluyendo aplicaciones con interfaz gráfica usando
las bibliotecas Qt o GTK+.
PHP es un acrónimo recursivo que significa PHP Hypertext Pre-processor
(inicialmente PHP Tools, o, Personal Home Page Tools). Fue creado
originalmente por Rasmus Lerdorf en 1994; sin embargo la implementación
principal de PHP es producida ahora por The PHP Group y sirve como el
estándar de facto para PHP al no haber una especificación formal. Publicado
bajo la PHP License, la Free Software Foundation considera esta licencia como
software libre.

PHP es un lenguaje interpretado de propósito general ampliamente usado y que


está diseñado especialmente para desarrollo web y puede ser incrustado dentro
de código HTML. Generalmente se ejecuta en un servidor web, tomando el
código en PHP como su entrada y creando páginas web como salida. Puede ser
desplegado en la mayoría de los servidores web y en casi todos los sistemas
operativos y plataformas sin costo alguno. PHP se encuentra instalado en más
de 20 millones de sitios web y en un millón de servidores, aunque el número
de sitios en PHP ha compartido algo de su preponderante sitio con otros
nuevos lenguajes no tan poderosos desde agosto de 2005. Este mismo sitio
web de Wikipedia está desarrollado en PHP. Es también el módulo Apache
más popular entre las computadoras que utilizan Apache como servidor web.
La versión más reciente de PHP es la 5.2.9-1 (for Windows) del 10 de Marzo
de 2009.

El gran parecido que posee PHP con los lenguajes más comunes de
programación estructurada, como C y Perl, permiten a la mayoría de los
programadores crear aplicaciones complejas con una curva de aprendizaje muy
corta. También les permite involucrarse con aplicaciones de contenido
dinámico sin tener que aprender todo un nuevo grupo de funciones.

Aunque todo en su diseño está orientado a facilitar la creación de página web,


es posible crear aplicaciones con una interfaz gráfica para el usuario, utilizando
la extensión PHP-Qt o PHP-GTK. También puede ser usado desde la línea de
órdenes, de la misma manera como Perl o Python pueden hacerlo, a esta
versión de PHP se la llama PHP CLI (Command Line Interface).

Cuando el cliente hace una petición al servidor para que le envíe una página
web, el servidor ejecuta el intérprete de PHP. Éste procesa el script solicitado
que generará el contenido de manera dinámica (por ejemplo obteniendo
información de una base de datos). El resultado es enviado por el intérprete al
servidor, quien a su vez se lo envía al cliente. Mediante extensiones es también
posible la generación de archivos PDF, Flash, así como imágenes en diferentes
formatos.

Permite la conexión a diferentes tipos de servidores de bases de datos tales


como MySQL, Postgres, Oracle, ODBC, DB2, Microsoft SQL Server, Firebird
y SQLite.
PHP también tiene la capacidad de ser ejecutado en la mayoría de los sistemas
operativos, tales como UNIX (y de ese tipo, como Linux o Mac OS X) y
Windows, y puede interactuar con los servidores de web más populares ya que
existe en versión CGI, módulo para Apache, e ISAPI.

PHP es una alternativa a las tecnologías de Microsoft ASP y ASP.NET (que


utiliza C# VB.NET como lenguajes), a ColdFusion de la compañía Adobe
(antes Macromedia), a JSP/Java de Sun Microsystems, y a CGI/Perl. Aunque
su creación y desarrollo se da en el ámbito de los sistemas libres, bajo la
licencia GNU, existe además un IDE (entorno de desarrollo integrado)
comercial llamado Zend Studio. Recientemente, CodeGear (la división de
lenguajes de programación de Borland) ha sacado al mercado un entorno
integrado de desarrollo para PHP, denominado Delphi for PHP. Existe un
módulo para Eclipse, uno de los IDE más populares.

Ventajas

Es un lenguaje multiplataforma.
Capacidad de conexión con la mayoría de los manejadores de base de datos
que se utilizan en la actualidad, destaca su conectividad con MySQL.
Capacidad de expandir su potencial utilizando la enorme cantidad de
módulos (llamados ext's o extensiones).
Posee una amplia documentación en su página oficial, entre la cual se
destaca que todas las funciones del sistema están explicadas y
ejemplificadas en un único archivo de ayuda.
Es libre, por lo que se presenta como una alternativa de fácil acceso para
todos.
Permite las técnicas de Programación Orientada a Objetos.
Biblioteca nativa de funciones sumamente amplia e incluida.
No requiere definición de tipos de variables (Esta característica también
podría considerarse una desventaja del lenguaje).
Tiene manejo de excepciones (desde PHP5).

Desventajas

Si bien PHP no obliga a quien lo usa a seguir una determinada metodología a


la hora de programar (muchos otros lenguajes tampoco lo hacen), aun estando
dirigido a alguna en particular, el programador puede aplicar en su trabajo
cualquier técnica de programación y/o desarrollo que le permita escribir código
ordenado, estructurado y manejable. Un ejemplo de esto son los desarrollos
que en PHP se han hecho del patrón de diseño Modelo Vista Controlador (o
MVC), que permiten separar el tratamiento y acceso a los datos, la lógica de
control y la interfaz de usuario en tres componentes independientes.

(Wikimedia Foundation, Inc., 2009)


2.4.9. Sistema de Gestión de Contenidos
Un Sistema de gestión de contenidos (Content Management System en inglés,
abreviado CMS) es un programa que permite crear una estructura de soporte
(framework) para la creación y administración de contenidos, principalmente
en páginas web, por parte de los participantes.

Consiste en una interfaz que controla una o varias bases de datos donde se
aloja el contenido del sitio. El sistema permite manejar de manera
independiente el contenido y el diseño. Así, es posible manejar el contenido y
darle en cualquier momento un diseño distinto al sitio sin tener que darle
formato al contenido de nuevo, además de permitir la fácil y controlada
publicación en el sitio a varios editores. Un ejemplo clásico es el de editores
que cargan el contenido al sistema y otro de nivel superior (directorio) que
permite que estos contenidos sean visibles a todo el público (los aprueba).

CMS es el acrónimo en inglés, Content Management System, para sistema de


gestión de contenidos. Los primeros sistemas de administración de contenidos
fueron desarrollados por organizaciones que publicaban una gran cantidad de
contenido en internet, y necesitaban de continuas actualizaciones; como
revistas en línea, periódicos y publicaciones corporativas.

En 1995, el sitio de noticias tecnológicas CNET sacó su sistema de


administración de documentos y publicación y creó una compañía llamada
Vignette, pionero de los sistemas de administración de contenido comerciales.

La evolución de Internet hacia portales con más contenido y la alta


participación de los usuarios directamente, a través de blogs y redes sociales,
han convertido a los gestores de contenidos en una herramienta esencial en
internet, tanto para empresas e instituciones como para las personas.

Los wikis y los sistemas groupware también son considerados CMS.

Hoy en día existen versiones desarrolladas en código abierto y versiones


propietario. En ambos casos es necesaria una implantación para adaptar el
gestor de contenidos al esquema gráfico y funcionalidades deseadas. Para
ciertos gestores existen muchas plantillas disponibles que permite una sencilla
implantación por parte de un usuario sin conocimientos de programación. El
paradigma de este caso es Wordpress, gestor sobre el que hay una gran
comunidad de desarrolladores de extensiones y plantillas.

El gestor de contenidos es una aplicación informática usada para crear, editar,


gestionar y publicar contenido digital en diversos formatos. El gestor de
contenidos genera páginas dinámicas, mediante DHTML, (HTML dinámico);
la aplicación interactúa con el servidor para generar la página web, bajo
petición del usuario, con el formato predefinido y el contenido extraído de la
base de datos del servidor.
Esto permite gestionar, bajo un formato padronizado, la información del
servidor, reduciendo el tamaño de las páginas para descarga y reduciendo el
coste de gestión del portal con respecto a una página estática, en la que cada
cambio de diseño debe ser realizado en todas las páginas, de la misma forma
que cada vez que se agrega contenido tiene que maquetarse una nueva página
HTML y subirla al servidor.

Entendido como un sistema de soporte a la gestión de contenidos; ya que, en


realidad, son las estrategias de comunicación las que realmente llevan a
gestionar contenidos de forma efectiva; los sistemas informáticos pueden a lo
sumo proporcionar las herramientas necesarias para la publicación en línea, o
bien incluir servicios de soporte a la toma de decisiones por lo que a la gestión
de contenidos se refiere.

El gestor de contenidos se aplica generalmente para referirse a sistemas de


publicación, pudiendo subestimarse las funcionalidades de soporte, en
detrimento de las funcionalidades relacionadas con la optimización de los
tiempos de publicación. La correcta implantación del sistema, con arreglo a las
necesidades del cliente es necesaria, y es necesario entender el proyecto de un
portal web en el seno de un proyecto de comunicación estructurado y bien
planteado por parte del cliente.

La elección de la plataforma correcta será vital para alcanzar los objetivos del
cliente, ya que exentan particularidades diferenciales tanto en su adaptabilidad
a esquemas gráficos como la posible integrabilidad de funcionalidades y
extensiones adicionales.

El posicionamiento en buscadores está altamente relacionado con el volumen


de contenidos de un portal y con la forma en la que éste se presenta. Es
importante tener eso en cuenta para la estructura del portal para garantizar un
correcto posicionamiento orgánico.

Un sistema de administración de contenido siempre funciona en el servidor


web en el que esté alojado el portal. El acceso al gestor se realiza generalmente
a través del navegador web, y se puede requerir el uso de FTP para subir
contenido.

Cuando un usuario accede a una URL, se ejecuta en el servidor esa llamada, se


selecciona el esquema gráfico y se introducen los datos que correspondan de la
base de datos. La página se genera dinámicamente para ese usuario, el código
HTML final se genera en esa llamada. Normalmente se predefine en el gestor
varios formatos de presentación de contenido para darle la flexibilidad a la
hora de crear nuevos apartados e informaciones.

Dependiendo de la plataforma escogida se podrá escoger diferentes niveles de


acceso para los usuarios; yendo desde el administrador del portal hasta el
usuario sin permiso de edición, o creador de contenido. Dependiendo de la
aplicación podrá haber varios permisos intermedios que permitan la edición del
contenido, la supervisión y reedición del contenido de otros usuarios, y etc.

El CMS controla y ayuda a manejar cada paso de este proceso, incluyendo las
labores técnicas de publicar los documentos a uno o más sitios. En muchos
sitios con CMS una sola persona hace el papel de creador y editor, como por
ejemplo los blogs.

Los gestores de contenido se pueden segmentar según diferentes criterios:

Según el lenguaje de programación empleado: Active Server Pages, Java,


PHP, ASP.NET, Ruby On Rails

Según la propiedad del código


o Open Source (código abierto); permite que se desarrolle sobre el código,
o Código propietario; sólo su desarrollador puede desarrollar la aplicación.

Según el tipo de uso o funcionalidades:


o Plataformas generales
o Sistemas específicos
o Blogs; pensados para páginas personales
o Wikis; pensados para el desarrollo colaborativo
o e-learning; plataforma para contenidos de enseñanza on-line
o e-commerce; plataforma de gestión de usuarios, catálogo, compras y
pagos
o Publicaciones digitales
o Difusión de contenido multimedia

Dentro de los portales se han realizado procesos de estandarización


encaminados a la homogeneización en las interfaces de programación de los
mismos de tal manera que un servicio desarrollado para un portal pueda
ejecutarse en cualquier otro portal compatible con el estándar. El objetivo es
obtener portales interoperables evitando desarrollos propietarios.

Las dos iniciativas más importantes son la Portlet Specification API JSR-168 y
la Content Repository API JSR-170.

El gestor de contenidos facilita el acceso a la publicación de contenidos a un


rango mayor de usuarios. Permite que sin conocimientos de programación ni
maquetación cualquier usuario pueda indexar contenido en el portal.

Además permite la gestión dinámica de usuarios y permisos, la colaboración


de varios usuarios en el mismo trabajo, la interacción mediante herramientas
de comunicación.
Los costes de gestión de la información son mucho menores ya que se elimina
un eslabón de la cadena de publicación, el maquetador. La maquetación es
hecha al inicio del proceso de implantación del gestor de contenidos.

La actualización, backup y reestructuración del portal son mucho más sencillas


al tener todos los datos vitales del portal, los contenidos, en una base de datos
estructurada en el servidor.

(Wikimedia Foundation, Inc., 2009)

2.4.10. Framework Joomla!


Joomla! es principalmente una herramienta de desarrollo web, calificada como
C.M.S o Content Management System, sistema de administración de
contenidos. Es una aplicación de código abierto construida mayoritariamente
en PHP bajo una licencia GPL. Este administrador de contenidos puede
trabajar en Internet o intranets y requiere de una base de datos MySQL, así
como preferiblemente, de un servidor HTTP Apache.

En Joomla! se incluyen características como: hacer caché de páginas para


mejorar el rendimiento, indexamiento web, feed RSS, versiones imprimibles
de páginas, flash con noticias, blogs, foros, polls (encuestas), calendarios,
búsqueda en el sitio web, e internacionalización del lenguaje. Su nombre es
una pronunciación fonética para anglófonos de la palabra swahili jumla que
significa "todos juntos" o "como un todo". Se escogió como una reflexión del
compromiso del grupo de desarrolladores y la comunidad del proyecto.

La primera versión de Joomla! (Joomla! 1.0.0) fue publicada el 16 de


septiembre de 2005 y se trataba de una evolución (fork) mejorada de Mambo
4.5.2.3 combinada con modificaciones de seguridad y anti-bugs. Actualmente
los programadores han publicado Joomla! 1.5 estable, con un código
completamente reescrito y construido bajo PHP 5. Se está desarrollando.

Joomla corresponde al grupo de soluciones de código abierto, es un producto


de software libre. Para el desarrollo de sus múltiples frentes, usa diferentes
formas de comunicación como son: los encuentros por medio de IRC, foros,
listas de correo, "wikis" y blogs. Este gestor de contenidos sigue las pautas
marcadas por el bazar, con su objetivo principal de dar solución a las
necesidades de todos aquellos que participan de una u otra forma en el
proyecto.

De forma similar a otros proyectos, Joomla mantiene dos versiones de la


aplicación: una estable y otra Beta o en desarrollo. La versión estable es la que
se considera para usuarios y a medida que aparecen errores se corrigen, esta
versión se publica sin nuevas funcionalidades. La versión Beta, incluye nuevas
funcionalidades y mejoras a las fallas reportadas en versiones anteriores, de
igual forma se tiene que en este tipo de versión se reflejan las directivas del
proyecto para usuarios avanzados y desarrolladores.
El 22 de enero de 2008 se ha lanzado la versión 1.5 estable de Joomla, que
incorpora notables mejoras en el área de seguridad, administración y
cumplimiento con estándares W3C. Si bien es cierto que para esta sección
todavía no existen gran cantidad de componentes, módulos y plugins
(mambots para Joomla! 1.0.X). Por ello, existe la posibilidad de activar un
plugin incluido por defecto que mejora considerablemente (no por completo) la
compatibilidad con la mayoría de ampliaciones.

Hoy en día es el CMS más utilizado del mundo, el más seguro y con mayor
crecimiento que cualquier otro.

Una de sus mayores potencialidades que tiene este CMS es la gran cantidad de
extensiones existentes programadas por su comunidad de usuarios que
aumentan las posibilidades de Joomla con nuevas características y que se
integran fácilmente en él.

(Wikimedia Foundation, Inc., 2009)

2.5. Metodología a Seguir


En el desarrollo del proyecto se hará uso de la metodología RUP para documentar los
artefactos del sistema. RUP (Rational Unified Process en inglés, Proceso Unificado
Racional en español) es un proceso de desarrollo de software y junto con el Lenguaje
Unificado de Modelado UML, constituye la metodología estándar más utilizada para el
análisis, implementación y documentación de sistemas orientados a objetos.
(Wikimedia Foundation, Inc., 2009)

El RUP no es un sistema con pasos firmemente establecidos, sino un conjunto de


metodologías adaptables al contexto y necesidades de cada organización. La
metodología consta de 4 fases:

FASE DE INICIO. En esta fase se desarrollan los requisitos del producto desde
la perspectiva de los usuarios, los cuales son establecidos en el artefacto Visión.
Los principales casos de uso serán identificados y se hará un refinamiento del
Plan de Desarrollo del Proyecto. La aceptación cliente/usuario del artefacto
Visión y el Plan de Desarrollo marcan el final de esta fase.

FASE DE ELABORACIÓN. En esta fase se analizan los requisitos y se


desarrolla un prototipo de arquitectura (incluyendo las partes más relevantes y/o
críticas del sistema). Al final de esta fase, todos los casos de uso
correspondientes a requisitos que serán implementados en la primera release de
la fase de Construcción deben estar analizados y diseñados (en el Modelo de
Análisis/Diseño). La revisión y aceptación del prototipo de la arquitectura del
sistema marca el final de esta fase.

FASE DE CONSTRUCCIÓN. Durante la fase de construcción se terminan de


analizar y diseñar todos los casos de uso, refinando el Modelo de Análisis /
Diseño. El producto se construye en base a iteraciones, cada una produciendo
una release a la cual se le aplican las pruebas y se valida con el cliente / usuario.
Se comienza la elaboración de material de apoyo al usuario.

FASE DE TRANSICIÓN. En esta fase se prepararán los releases para


distribución, asegurando una implantación y cambio del sistema previo de
manera adecuada, incluyendo el entrenamiento de los usuarios. El hito que
marca el fin de esta fase incluye, la entrega de toda la documentación del
proyecto con los manuales de instalación y todo el material de apoyo al usuario,
la finalización del entrenamiento de los usuarios y el empaquetamiento del
producto.

2.6. Diseño de Investigación

GC: MI --------------------------- X --------------------------- M3

GE: M2 --------------------------- X --------------------------- M4

Donde:

X: Variable independiente
GC: Grupo Control
GE: Grupo Experimental
M1: Medición previa de la variable dependiente para el Grupo Control.
M2: Medición previa de la variable dependiente para el Grupo Experimental.
M3: Medición posterior de la variable dependiente para el Grupo Control.
M4: Medición posterior de la variable dependiente para el Grupo Experimental.
M4 – M3: Contrastación de la hipótesis.

2.7. Cobertura del Estudio


2.7.1. Población
Los alumnos de todos los ciclos de la Escuela Académico Profesional de
Ingeniería de Sistemas e Informática de la Universidad Nacional del Santa.

2.7.2. Muestra

2.8. Fuentes, Técnicas e Instrumentos de Recolección de Datos


Las técnicas e instrumentos utilizados son:

TÉCNICAS INSTRUMENTOS
Observación Hoja de anotaciones
Entrevistas Grabadora
Encuestas Hoja de cuestionario
Investigación Bibliográfica Libros, revistas, manuales
Tabla 6. Técnicas e instrumentos utilizados en la investigación.
Bibliografía y Linkografía
Wikimedia Foudation, Inc. (25 de Mayo de 2009). Wikipedia, la enciclopedía libre.
Recuperado el 13 de Junio de 2009, de Wikipedia, la enciclopedía libre:
http://es.wikipedia.org/wiki/Servidor_Web

Wikimedia Foundation, Inc. (24 de Junio de 2009). Universia. Recuperado el 9 de Julio de


2009, de http://es.wikipedia.org/wiki/Universia

Wikimedia Foundation, Inc. (6 de Junio de 2009). Wikipedia, la enciclopedía libre.


Recuperado el 13 de Junio de 2009, de Wikipedia, la enciclopedía libre:
http://es.wikipedia.org/wiki/Aplicacion_web

Wikimedia Foundation, Inc. (10 de Junio de 2009). Wikipedia, la enciclopedía libre.


Recuperado el 13 de Junio de 2009, de Wikipedia, la enciclopedía libre:
http://es.wikipedia.org/wiki/Base_de_datos

Wikimedia Foundation, Inc. (12 de Junio de 2009). Wikipedia, la enciclopedía libre.


Recuperado el 13 de Junio de 2009, de Wikipedia, la enciclopedía libre:
http://es.wikipedia.org/wiki/Sistema_Gestor_de_Bases_de_Datos

Wikimedia Foundation, Inc. (5 de Junio de 2009). Wikipedia, la enciclopedía libre.


Recuperado el 13 de Junio de 2009, de Wikipedia, la enciclopedía libre:
http://es.wikipedia.org/wiki/MySQL

Wikimedia Foundation, Inc. (29 de Abril de 2009). Wikipedia, la enciclopedía libre.


Recuperado el 13 de Junio de 2009, de Wikipedia, la enciclopedía libre:
http://es.wikipedia.org/wiki/Servidor_HTTP_Apache

Wikimedia Foundation, Inc. (11 de Junio de 2009). Wikipedia, la enciclopedía libre.


Recuperado el 13 de Junio de 2009, de Wikipedia, la enciclopedía libre:
http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n

Wikimedia Foundation, Inc. (11 de Junio de 2009). Wikipedia, la enciclopedía libre.


Recuperado el 13 de Junio de 2009, de Wikipedia, la enciclopedía libre:
http://es.wikipedia.org/wiki/PHP

Wikimedia Foundation, Inc. (6 de Junio de 2009). Wikipedia, la enciclopedía libre.


Recuperado el 13 de Junio de 2009, de Wikipedia, la enciclopedía libre:
http://es.wikipedia.org/wiki/Sistema_de_gesti%C3%B3n_de_contenido

Wikimedia Foundation, Inc. (11 de Junio de 2009). Wikipedia, la enciclopedía libre.


Recuperado el 13 de Junio de 2009, de Wikipedia, la enciclopedía libre:
http://es.wikipedia.org/wiki/Joomla

Wikimedia Foundation, Inc. (12 de Junio de 2009). Wikipedia, la enciclopedía libre.


Recuperado el 13 de Junio de 2009, de Wikipedia, la enciclopedía libre:
http://es.wikipedia.org/wiki/RUP