Proyecto de Trabajo de Investigación

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 SantaPROYECTO 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

description

PTI del proyecto de desarrollo de un sistema Web integral para la EAPISI de la Univerisidad Nacional del Santa

Transcript of Proyecto de Trabajo de Investigación

Page 1: Proyecto de Trabajo de Investigación

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

Page 2: Proyecto de Trabajo de Investigación

Í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

Page 3: Proyecto de Trabajo de Investigación

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

Page 4: Proyecto de Trabajo de Investigación

Capítulo I

Page 5: Proyecto de Trabajo de Investigación

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

Page 6: Proyecto de Trabajo de Investigación

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

Page 7: Proyecto de Trabajo de Investigación

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.

Page 8: Proyecto de Trabajo de Investigación

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%

Page 9: Proyecto de Trabajo de Investigación

Capítulo II

Page 10: Proyecto de Trabajo de Investigación

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.

Page 11: Proyecto de Trabajo de Investigación

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?

Page 12: Proyecto de Trabajo de Investigación

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á

Page 13: Proyecto de Trabajo de Investigación

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

Page 14: Proyecto de Trabajo de Investigación

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.

Page 15: Proyecto de Trabajo de Investigación

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.

Page 16: Proyecto de Trabajo de Investigación

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)

Page 17: Proyecto de Trabajo de Investigación

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.

Page 18: Proyecto de Trabajo de Investigación

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:

Page 19: Proyecto de Trabajo de Investigación

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

Page 20: Proyecto de Trabajo de Investigación

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

Page 21: Proyecto de Trabajo de Investigación

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

Page 22: Proyecto de Trabajo de Investigación

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.

Page 23: Proyecto de Trabajo de Investigación

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.

Page 24: Proyecto de Trabajo de Investigación

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

Page 25: Proyecto de Trabajo de Investigación

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

Page 26: Proyecto de Trabajo de Investigación

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.

Page 27: Proyecto de Trabajo de Investigación

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

Page 28: Proyecto de Trabajo de Investigación

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

Page 29: Proyecto de Trabajo de Investigación

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

Page 30: Proyecto de Trabajo de Investigación

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.

Page 31: Proyecto de Trabajo de Investigación

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.

Page 32: Proyecto de Trabajo de Investigación

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

Page 33: Proyecto de Trabajo de Investigación

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.

Page 34: Proyecto de Trabajo de Investigación

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)

Page 35: Proyecto de Trabajo de Investigación

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.

Page 36: Proyecto de Trabajo de Investigación

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

Page 37: Proyecto de Trabajo de Investigación

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.

Page 38: Proyecto de Trabajo de Investigació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.

Page 39: Proyecto de Trabajo de Investigación

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

Page 40: Proyecto de Trabajo de Investigación

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.

Page 41: Proyecto de Trabajo de 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

Page 42: Proyecto de Trabajo de Investigación