Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Aplicación Web para Gestión de Encuestas 1 UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE ESTUDIOS SUPERIORES ARAGÓN MÉXICO, 2008. T R A B A J O E S C R I T O EN LA MODALIDAD DE SEMINARIOS Y CURSOS DE ACTUALIZACIÓN Y C A P A C I T A C I Ó N P R O F E S I O N A L QUE PARA OBTENER EL TÍTULO DE: I N GE N I E R O E N C OM P U TA C I ÓN P R E S E N T A : E D G A R W O S V A L D O A L V A R E Z C A N S E C O ASESOR: M. en C. Marcelo Pérez Medel “SISTEMA WEB PARA LA GESTIÓN DE ENCUESTAS Y EVALUACIONES” UNAM – Dirección General de Bibliotecas Tesis Digitales Restricciones de uso DERECHOS RESERVADOS © PROHIBIDA SU REPRODUCCIÓN TOTAL O PARCIAL Todo el material contenido en esta tesis esta protegido por la Ley Federal del Derecho de Autor (LFDA) de los Estados Unidos Mexicanos (México). El uso de imágenes, fragmentos de videos, y demás material que sea objeto de protección de los derechos de autor, será exclusivamente para fines educativos e informativos y deberá citar la fuente donde la obtuvo mencionando el autor o autores. Cualquier uso distinto como el lucro, reproducción, edición o modificación, será perseguido y sancionado por el respectivo titular de los Derechos de Autor. Aplicación Web para Gestión de Encuestas 2 Agradecimientos Agradezco a la Facultad de Estudios Superiores Aragón y a todo su personal por haber sido participe en el desarrollo de esta tesis y de mi formación profesional. También quiero dejar constancia de mi agradecimiento al M. en C. Marcelo Pérez Medel y a mis revisores por su valiosa ayuda y consejos en el la consecución de este trabajo. Agradezco a mi esposa Brenda y mi hijo Joffre su apoyo cariño y comprensión para este logro, y una disculpa por haberles robado momentos de compañía y juegos que por supuesto serán recompensados. Por ultimo, y no menos importante, a mis padres y hermano (Fernando, Rosalba y Erick) por insistirme día tras día durante 8 largos años para la realización de este trabajo y animarme incondicionalmente. Aplicación Web para Gestión de Encuestas 3 Índice de contenido Prólogo...............................................................................................................4 Introducción.......................................................................................................5 I. Encuestas estadísticas.......................................................................5 II. Métodos de encuesta tradicionales..................................................8 III. Internet como herramienta para la realización de encuestas........9 1. Objetivos y motivación................................................................................10 1.1. Motivación.......................................................................................10 1.2. Metodología....................................................................................10 1.2.1. Modelo de ingeniería del software......................................11 1.2.2. UML....................................................................................13 1.2.3. Herramientas de documentación........................................16 1.3. Requisitos del sistema..................................................................16 2. Antecedentes e investigación....................................................................19 2.1. Investigación…...............................................................................19 2.1.1. Estándares de encuestas...................................................19 2.1.2. Generadores de encuestas disponibles.............................20 2.2. Estudio tecnológico preliminar.....................................................21 2.2.1. Aplicaciones Web...............................................................21 2.2.2. Tecnologías Web utilizadas................................................23 2.2.3. Arquitectura MVC...............................................................25 2.2.4. AJAX……............................................................................26 2.2.5. XML....................................................................................29 2.2.6 Frameworks de aplicaciones y motores de plantillas..........36 2.2.7. Persistencia........................................................................37 2.2.8. Servidor Web......................................................................39 2.2.9. Sistema gestor de bases de datos.....................................40 3. Diseño de la arquitectura de la solución...................................................43 3.1 Descripción de la aplicación………………………………………....43 3.1.1 Ciclo de vida de una encuesta………………………………44 3.1.2 Usuarios………………………………………………………..46 3.1.3 Entornos de administración………………………………….48 3.1.4 Casos de uso UML……………………………………………53 3.1.5 XML: formatos de encuesta y respuesta…………………...55 3.1.6 Condiciones de flujo…………………………………………..57 3.2 Componentes……………………………………………………………59 3.3 Arquitectura de la aplicación…………………………………………60 3.3.1 Esquema general de la aplicación…………………………..60 3.3.2 Diagrama de paquetes………………………………………..61 3.3.3 Esquema detallado de clases………………………………..62 3.3.4 AJAX……………………………………………………………67 3.4 Estructura de la base de datos………………………………………69 3.5 Entorno de desarrollo………………………………………………....70 3.6 Justificación y evaluación del diseño de la aplicación…………71 3.6.1 Software libre / código abierto………………………………71 3.6.2 uso de frameworks de aplicación…………………………...72 3.6.3 por que MVC…………………..……………………………...72 Conclusiones y ampliaciones propuestas………………………………..74 I. Conclusiones……………………………………………………74 II. Ampliaciones propuestas…………………………….………75 Bibliografía………………………………………………………………………77 Aplicación Web para Gestión de Encuestas 4 Prólogo Las encuestas son un instrumento de primerísima importancia en el mundo de hoy, y son empleadas habitualmente en innumerables campos de aplicación como pueden ser la política, sociología, investigación, etc. Son mecanismos que ayudan a un mejor conocimiento de la sociedad. Las encuestas entregan, como se acostumbra a decir, una radiografía o una foto de un determinado momento. A partir de ellas se comienzan a hacer extrapolaciones, a tomar ciertas decisiones, a fijar determinados cursos de acción, pero el principal elemento que entrega una encuesta es la sensación de un determinado estado de cosas. Con el avance de la tecnología, los métodos utilizados para realizar encuestas han experimentado grandes cambios, y sin duda el medio más atractivo actualmente para llegar a los encuestados es Internet. La motivación de este proyecto no es tanto el análisis y estudio de los datos proporcionados por las encuestas, sino cubrir el vacío existente en cuanto a herramientas tanto de diseño de los cuestionarios como de publicación y recolección de datos para los mismos. Se pretende aprovechar el auge de Internet junto con los últimos avances en tecnologías Web para crear un entorno uniforme que facilite por una parte el diseño y publicación de los cuestionarios, y por otra el acceso al público a los mismos. Para tal fin se propone una plataforma Web, basada íntegramente en software libre y multiplataforma haciendo uso de estándares abiertos como XML. Esta herramienta integra un entorno de diseño y publicación de encuestas, que permite la creación y manipulación de cuestionarios de forma intuitiva, y posibilita la reutilización de los diseños de encuestas pasadas para trabajos futuros. Todo ello bajo una política de control de accesos yprivilegios flexible y consistente, que permitirá a los diseñadores proteger su trabajo de otros usuarios, a la vez que favorece la colaboración entre ellos. La herramienta permite la creación de cuestionarios formados por preguntas de distintos tipos, con la posibilidad de organizarlas en bloques y añadir reglas de validación. Además permite flujo de presentación de preguntas de forma variable, gracias a un flexible sistema de reglas de flujo condicionales. Finalmente se pretende hacer uso de la capacidad de integración con otros sistemas que nos proporciona la tecnología XML, para dotar a la plataforma propuesta de diversos modos de exportación de los datos recogidos por las encuestas, y la posibilidad de integración con otros proyectos. Espero que esta herramienta permita mostrar las amplias posibilidades que Internet, el desarrollo Web, y el uso de estándares abiertos ofrecen al campo de las encuestas. Aplicación Web para Gestión de Encuestas 5 Introducción I. Encuestas estadísticas Ya hemos apuntado en el prólogo la enorme y creciente importancia de las encuestas y la gran cantidad de ámbitos de aplicación. Las propias empresas e instituciones dedicadas a este campo han evolucionado y perfeccionado notoriamente sus métodos de investigación, de selección de muestras, de análisis y evaluación. Con la creciente importancia de la información y su análisis en la sociedad actual, sus predicciones son de enorme utilidad para las empresas privadas, los investigadores, medios de comunicación, etc. Hay que tener en cuenta que la encuesta es una técnica para recabar información sobre una población, a partir de una muestra representativa, utilizando un cuestionario y un margen de error controlado. En consecuencia, las encuestas son instrumentos extraordinariamente sensibles, que al no ser manejados adecuadamente o cuando se les utiliza con fines distintos para los cuales fueron creadas, suelen ser más una fuente de generación de conflictos y de confusiones que una ayuda real. Estadística descriptiva La estadística descriptiva es la parte de la estadística que se dedica a analizar y representar los datos. Es decir, aquellos métodos que incluyen la recolección, presentación y caracterización de un conjunto de datos con el fin de describir apropiadamente las diversas características de ese conjunto, pero sin intentar deducir nada que se escape al alcance de los datos. Esto último es importante, ya que aunque a veces se tiende a generalizar a toda la población las conclusiones obtenidas tras un análisis descriptivo, su poder inferencial es mínimo y debería evitarse tal proceder. Otras ramas de la estadística se centran en el contraste de hipótesis y su generalización a la población. Estadística Inferencial La inferencia estadística que comprende los métodos y procedimientos para deducir propiedades (hacer inferencias) de una población a partir de una pequeña parte de la misma (muestra). Tiene por objetivo describir las características de un conjunto, pero sin la necesidad de realizar el registro de datos a todos los elementos o unidades del conjunto o población, sino a una parte de ésta. Es importante resaltar que la estadística inferencial no nos da una certeza completa en sus resultados, sino que están sujetas a una probabilidad de error. Una incorrecta selección de las unidades muéstrales pueden acarrear la imposibilidad de inferir correctamente las características de una población. Aplicación Web para Gestión de Encuestas 6 Términos y conceptos básicos • Población: es la totalidad de elementos bajo consideración de un estudio estadístico. La población se refiere e un grupo finito de elementos. • Elementos de una población: son las unidades individuales que constituyen o conforman una población. • Universo: conjunto de elementos que, a diferencia de la población no tiene límite numérico. • Muestra: porción de la población que se selecciona para fines de análisis. Siempre debe de ser representativa de la población total. • Parámetro: medida que se calcula con el propósito de describir alguna característica de la población. • Estadística: son medidas que se calculan con el propósito de describir algunas características de una sola muestra de la población. Censo Es una investigación que cubre todos los miembros o elementos de una población dada. Un censo completo a menudo es innecesario, antieconómico y una molestia para el público, además de ser menos efectivo que una encuesta para recoger ciertos tipos de información. Encuesta Es una investigación en la cual la información se obtiene de una fracción de la población llamada muestra. La encuesta por muestreo disfruta de ciertas ventajas que la hacen atractiva frente al censo, aún en los casos donde a éste se le considera prácticamente exclusivo, como son los estudios sobre población. Algunas de estas ventajas son: • Su realización resulta mucho menos costosa que el censo. • Permite mayor rapidez en la recopilación y análisis de los datos, y por tanto en la obtención de resultados. • El número de entrevistadores utilizado en la encuesta es mucho menor y por consiguiente es posible ofrecerles una capacitación más eficaz y una supervisión más cuidadosa. • La encuesta por muestreo es menos notoria que el censo y no constituye una pesadumbre para el público. • Es posible introducir métodos científicos objetivos de medición para corregir posibles errores. Sin embargo, también presentan algunas desventajas respecto al censo puro, como por ejemplo: • Estimaciones para áreas pequeñas. • El planeamiento y ejecución de la investigación suele ser más complejo que si se realiza por censo. • Requiere para su diseño de profesionales con buenos conocimientos de teoría y habilidad en su aplicación. • El público generalmente la rechaza. Aplicación Web para Gestión de Encuestas 7 Etapas de una encuesta por muestreo 1. La planeación: constituye el establecimiento del objeto de la investigación y la creación de la estrategia general para obtener y analizar los datos. Incluye además, la elaboración de presupuestos, revisión de literatura, definición de objetivos específicos, etc. 2. La elaboración de un diseño de investigación: El diseño de la muestra está relacionado estrechamente con la planeación y por lo regular ocurre en forma simultanea, consiste en una programación preparada de antemano con el objetivo de recolectar y analizar la información necesaria para satisfacer los objetivos del estudio, al costo más bajo posible. 3. Diseño de la muestra (muestreo): Es el proceso de seleccionar ciertos elementos de la población; En esta etapa, el investigador debe definir con claridad y cuidado la población que se va a estudiar y la generalización de los datos de la muestra que dicha población permitirá. La muestra debe ser representativa de la población de la cual se extrae, para lo cual los procedimientos aleatorios para elegir las unidades son la forma más confiable de selección. 4. Diseño del cuestionario: Es el proceso de adaptar los diferentes objetivos del estudio a preguntas que permitan obtener la información necesaria. Esta etapa incluye la formulación del tipo de pregunta, número de éstas, secuencia y los medios para mantener motivada a la persona encuestada. 5. El trabajo de campo: En esta etapa de la investigación se produce la recolección de los datos de los elementos de la muestra. Se incluye también el reclutamiento y formación de entrevistadores, supervisores y otro personal de campo. 6. La verificación y la codificación: Son procesos afines diseñados con el propósito de transcribir la información registrada en los cuestionarios a una forma adecuada para el análisis estadístico. El objetivo básico de la verificación es el eliminar respuestas incompletas o inconsistentes, como también los errores en el uso del cuestionario.La codificación es un proceso técnico que consiste en convertir datos cualitativos en datos numéricos que puedan ser almacenados, tabulados con rapidez y facilidad. 7. La preparación para el análisis: Esta etapa incluye un conjunto de actividades, como: captura de datos, chequeos rutinarios para determinar la compatibilidad de las respuestas, plan de tabulación de datos, etc. 8. Análisis y preparación del informe: Consiste en la presentación e interpretación de tablas simples y de múltiples entradas de los datos recopilados en la investigación. El objetivo de esta etapa es proporcionar un resumen de los datos, capaz de satisfacer los propósitos de la investigación, lo mas breve y comprensible posible. Aplicación Web para Gestión de Encuestas 8 II. Métodos de encuestas tradicionales Es en la etapa de trabajo de campo, una vez diseñado el cuestionario y seleccionados los elementos de la muestra, en la que se produce la recolección de los datos. Para ello es necesario algún método de acercamiento a las personas que conforman la muestra seleccionada. Tradicionalmente los métodos más habituales para efectuar este acercamiento a los encuestados han sido: • Correo: Generalmente se envía por correo postal (o electrónico) una carta de presentación. Las encuestas por correo se justifican cuando se posee una lista confiable de direcciones y no se requiere una respuesta inmediata. También son habituales cuando no se dispone de recursos para adoptar otro método o es necesario favorecer el anonimato. • Telefónica: En este caso se llama por teléfono al encuestado, procurando darle facilidades de horario. Tiene la ventaja de que las respuestas pueden ser registradas directamente en algún soporte informático, por lo que suelen producir resultados rápidamente. • Cara a cara: La encuesta se completa en una entrevista personal con el encuestado, tomando registro de sus respuestas. Este tipo de encuestas es habitual cuando no se dispone de listas de donde sacar la muestra, o bien se estima que los encuestados podrían no tener intenciones de responder la encuesta, o podrían hacerlo de forma inexacta por correo o teléfono. • Reparto de cuestionarios: La forma habitual de hacer encuestas en empresas o instituciones individuales es repartir cuestionarios, delegando en los encuestados la responsabilidad de rellenarlos y entregarlos de manera establecida. Sin embargo, todos estos métodos, en mayor o menor medida, adolecen de varios problemas como son: • Alto costo económico, lo que puede suponer además una restricción a la hora de decidir el tamaño de la muestra. • Proceso lento de recolección de datos. • Necesidad de entrevistadores cualificados • Necesidad de verificación y codificación de los datos recogidos. Aplicación Web para Gestión de Encuestas 9 III. Internet como herramienta para la realización de encuestas La realización de encuestas a través de Internet resulta muy apropiada en un mundo en el que el número de personas que se conectan a la red es muy elevado y crece rápidamente. Utilizando este espacio podemos llegar a un número mucho mayor de objetivos que el que podríamos alcanzar si utilizáramos el teléfono o el correo electrónico, y de este modo podemos conseguir resultados más fiables y pertinentes. Sin embargo, no todo son ventajas. Uno de los desafíos mayores a los que nos enfrentamos al realizar encuestas a través de Internet es asegurarnos de que los encuestados sean representativos. Por este motivo, se hace necesario que lo encuestados proporcionen cierta información clasificatoria, bien como parte del cuestionario o mediante un registro de usuario. Esta información permite asegurarse de que todos los grupos demográficos están representados y poner las respuestas en contexto para poder hacer extensivos de manera fiable los resultados al resto de la población. Además de las ya mencionadas, el uso de Internet como medio para encuestas tiene otras ventajas: • Las encuestas por Internet resultan menos costosas y más rápidas. • La inmediatez en la publicación de cuestionarios y la recolección de datos. • Permite la verificación y codificación de los datos en el mismo momento de su recolección. • La investigación puede abarcar diversas ubicaciones e idiomas y en ella se pueden utilizar videos e imágenes, recursos inaplicables a las encuestas efectuadas por métodos tradicionales. • Su interactividad las hace más atractivas y menos intrusivas para el encuestado que otros métodos. En cuanto a las desventajas, algunas de ellas son: • Se corre el riesgo de no abarcar homogéneamente la muestra escogida. • No hay supervisión sobre las contestaciones, haciendo que muchos cuestionarios puedan ser nulos. • Puede provocar rechazos en sectores de la población que consideren el medio menos fiable, o que no le den tanta importancia como a encuestas recibidas por medios tradicionales. • No se llega a aquellos sectores de la población que no disponen de Internet o no están suficientemente familiarizados con la navegación en la Web. De éstas, las dos primeras son subsanables técnicamente, mientras que las segundas son consecuencia de una situación que va desapareciendo a medida que avanza la penetración de Internet en la sociedad. Por todo ello, la rapidez, precisión y eficacia de Internet como medio para la realización de encuestas han logrado convertir a las antiguas tecnologías de investigación en obsoletas. Aplicación Web para Gestión de Encuestas 10 1. Objetivos y motivación 1.1 Motivación Tal y como vimos en la introducción, dos de las mayores problemáticas asociadas a los métodos tradicionales de encuestas son su alto costo económico y el tiempo transcurrido desde que finaliza el diseño del cuestionario hasta que todos los datos han sido recabados, codificados y finalmente almacenados. El objetivo del presente proyecto es desarrollar un entorno intuitivo de diseño y publicación de encuestas a través de Internet que ataque precisamente los dos problemas señalados. Por una parte, se necesita una herramienta de diseño de encuestas potente y flexible, que permita crear cuestionarios de uso general de forma simple. Esta herramienta estaría dentro de un entorno de gestión que permita tanto la colaboración entre los diseñadores a la hora de crear las encuestas, como la reutilización de encuestas pasadas para nuevos cuestionarios. Una vez diseñados los cuestionarios, éstos se publicarán quedando accesibles a través de Internet a todos los posibles encuestados. Éstos podrán rellenar los cuestionarios de forma cómoda y enviarlos, de manera que sus respuestas queden automáticamente registradas. De esta forma nos ahorramos el tiempo y los costos asociados al método de contacto con los destinatarios de las encuestas y la recolección de los datos. Otra fuente de motivación importante para centrar este proyecto en el desarrollo de una aplicación Web es el auge que está experimentando hoy en día este tipo de desarrollo frente a las aplicaciones de escritorio tradicionales. En la actualidad es cada vez más frecuente que la gente sustituya el software tradicional por aplicaciones Web. Son varios factores los que nos empujan a sustituirlas, como por ejemplo el precio, ya que en muchos casos estas herramientas son gratuitas o tienen precios mucho más accesibles. Esta tendencia ofrece además grandes ventajas a los desarrolladores sobre las aplicaciones tradicionales, ya que abaratan el costo de las comunicaciones, el de las implantaciones y, sobre todo, el mantenimiento posterior. 1.2 Metodología En este capítulo vamos a definir la metodología que se seguirá en el desarrollo del proyecto. Aplicación Web para Gestión de Encuestas 11 1.2.1 Modelo de ingeniería de software Una vez definidos los objetivos del proyecto es necesario establecer una metodología de análisis,diseño e implementación adecuada al desarrollo de la aplicación Web que se pretende llevar a cabo. Hay que tener en cuenta que el objetivo de este proyecto no es hacer un trabajo de ingeniería de software completo y detallado, siguiendo una metodología estrictamente, sino más bien dotar al desarrollo del mismo de un enfoque ordenado según alguno de los modelos de análisis más extendidos. Teniendo en cuenta lo anterior, se ha elegido entre los numerosos modelos teóricos englobados dentro de la ingeniería del software, el modelo incremental. La elección de este modelo se debe fundamentalmente a dos motivos: • Es un modelo flexible ideal para proyectos relativamente modulares y para equipos de trabajo reducidos. • Los requisitos del sistema a desarrollar no están absolutamente cerrados desde el principio, y es probable que evolucionen durante el tiempo de desarrollo del mismo. En cuanto a la notación de análisis y modelado, tanto de los requisitos del sistema como del diseño de la solución a adoptar, la elección ideal para este proyecto es sin duda UML, por varias razones: • Se pretende seguir un diseño orientado a objetos, y UML es el estándar para el mismo. • UML permite centrarse en el modelado de determinados aspectos sin estar obligado a seguir un guión de análisis rígido. Modelo de desarrollo incremental El modelo de desarrollo incremental en la ingeniería del software es una variación del ciclo de vida clásico en cascada. Este último es un enfoque metodológico que ordena rigurosamente las etapas del ciclo de vida del software, de forma tal que el inicio de cada etapa debe esperar a la finalización de la inmediata anterior. Un ejemplo de una metodología de desarrollo en cascada es: 1. Análisis de requerimientos 2. Diseño del sistema 3. Diseño del programa 4. Codificación 5. Pruebas 6. Implantación 7. Mantenimiento Aplicación Web para Gestión de Encuestas 12 En el modelo incremental, las etapas son las mismas que en el ciclo de vida clásico en cascada, y su realización sigue el mismo orden, pero corrige la problemática de la linealidad de dicho modelo. Fue desarrollado por Lehman (1984) como una forma de reducir la repetición del trabajo en el proceso de desarrollo y dar oportunidad de retrasar la toma de decisiones en los requerimientos hasta adquirir experiencia con el sistema. En cada paso sucesivo se agregan al sistema nuevas funcionalidades o requerimientos que permitan el refinado a partir de una versión previa. Durante el desarrollo de cada incremento se puede utilizar el modelo de cascada o evolutivo, adaptado al subsistema que representa la porción de requerimientos a implementar en dicho incremento. Figura 1.1 modelo incremental Ventajas: • Tiene en cuenta la naturaleza evolutiva del software. • Los primeros incrementos permiten descubrir nuevos requerimientos para sucesivos incrementos. • El cliente recibe pronto nuevas versiones operativas (aunque incompletas) del producto, y como consecuencia, se involucra más en el proceso. Además puede aclarar los requerimientos que no tenga claros conforme vea las entregas del sistema. • Se disminuye el riesgo de fracaso de todo el proyecto, ya que se puede distribuir en cada incremento. • Funciona bien cuando el equipo de programadores es escaso. Desventajas: • Problemas para determinar las funcionalidades a desarrollar en cada incremento. El primer incremento suele ser el núcleo del producto. • Puede ser difícil establecer la correspondencia requerimiento-incremento, al igual que detectar las unidades o servicios genéricos para todo el sistema. • Peligro de caer en el modelo “construir y corregir”. Definición inicial de requerimientos Asignar requerimientos a los incrementos Diseñar arquitectura del sistema Validación de los incrementos Integración de los incrementos Validación del sistema Desarrollar los incrementos del sistema Sistema final Aplicación Web para Gestión de Encuestas 13 1.2.2 UML Introducción a UML UML (Unified Modeling language, lenguaje de modelado unificado) es un lenguaje que permite modelar, construir y documentar los elementos que forman un sistema, software orientado a objetos. Se ha convertido en el estándar de facto de la industria, debido a que ha sido impulsado por los autores de los tres métodos más usados de orientación a objetos: Grady Booch, Ivar Jacobson y Jim Rumbaugh. Estos autores fueron contratados por la empresa Rational Software para crear una notación unificada en la cual basar la construcción de sus herramientas CASE. En el proceso de creación de UML han participado, no obstante, otras empresas de gran peso en la industria como Microsoft, Hewlett-Packard, Oracle o IBM, así como grupos de analistas y desarrolladores. Esta notación ha sido ampliamente aceptada debido al prestigio de sus creadores y debido a que incorpora las principales ventajas de cada uno de los métodos particulares en los que se basa. UML no pretende ser un método de desarrollo completo. No incluye un proceso de desarrollo paso a paso. UML incluye todos los conceptos que se consideran necesarios para utilizar un proceso moderno iterativo, basado en construir una sólida arquitectura para resolver requerimientos dirigidos por casos de uso. Los conceptos y modelos de UML pueden agruparse en las siguientes áreas conceptuales: Estructura estática Cualquier modelo preciso debe definir primero su universo, esto es, los conceptos clave de la aplicación, sus propiedades internas, y las relaciones entre cada una de ellas. Este conjunto de construcciones es la estructura estática. Los conceptos de la aplicación son modelados como clases, cada una de las cuales describe un conjunto de objetos que almacenan información y se comunican para implementar un comportamiento. El diagrama más importante para describir la estructura estática es el diagrama de clases y puede usarse para generar la mayoría de las declaraciones de estructuras de datos en un programa. Comportamiento dinámico Hay dos formas de modelar el comportamiento, una es el ciclo de vida de un objeto y la forma como interactúa con el resto del mundo (diagrama de estados), y la otra es por los patrones de comunicación de un conjunto de objetos conectados, es decir, la forma en que interactúan entre sí (diagramas de actividad, secuencia, colaboración, etc.). La visión de un objeto aislado es una máquina de estados, muestra la forma en que el objeto responde a los eventos en función de su estado actual. La visión de la interacción de los objetos se representa con los enlaces entre objetos junto con el flujo de mensajes y los enlaces entre ellos. En la siguiente tabla vemos cómo se agrupan los diferentes diagramas que componen la notación UML, según el tipo de comportamiento que modelan. Aplicación Web para Gestión de Encuestas 14 Area Diagrama Conceptos principales Diagramas de clases Clase, asociación, generalización, dependencia, realización, interfaz. Diagramas de casos de uso Casos de uso, Actor, asociación, extensión, generalización. Diagramas de componentes Componente, interfaz, dependencia, realización. Estática Diagramas de despliegue Nodo, componente, dependencia, localización. Diagramas de estados Estado, evento, transición, acción. Diagramas de actividad Estado, actividad, transición, determinación, división, unión. Diagramas de secuencia Interacción, objeto, mensaje, activación. Dinámica Diagramas de colaboración Colaboración, interacción, rol de colaboración, mensaje Diagramas UML utilizados Diagrama de casos de uso El modelado de casos de uso es la técnica más efectiva y, a la vez, la más simple para modelar los requerimientos del sistema desde la perspectiva del usuario. No pertenece estrictamente al enfoque orientado a objeto, sino que es más una técnica para captura de requerimientos.• Describen bajo la forma de acciones y reacciones el comportamiento de un sistema desde el punto de vista del usuario. • Permiten definir los límites del sistema y las relaciones entre el sistema y el entorno. • Son descripciones de la funcionalidad del sistema independientes de la implementación. • Se divide el conjunto de necesidades atendiendo a la categoría de usuarios que participan en el mismo. • Están basados en el lenguaje natural, es decir, es accesible por los usuarios. Diagrama de paquetes Un paquete es una parte de un modelo. Cada parte del modelo debe pertenecer a un paquete. UML no impone una regla para componer los paquetes, sin embargo para ser funcional la asignación debe seguir un cierto principio racional, tal como funcionalidad común, implementación relacionada o punto de vista común. Las dependencias que se presentan entre elementos individuales, pero en un sistema de cualquier tamaño, deben ser vistas en un nivel más alto. Las dependencias entre paquetes resumen dependencias entre los elementos internos a ellos, es decir, las dependencias del paquete son derivables a partir de las dependencias entre los elementos individuales que los componen. Aplicación Web para Gestión de Encuestas 15 En el diagrama, los paquetes se dibujan como rectángulos con pestañas (similar al icono de carpeta), y las dependencias se muestran como flechas con líneas discontinuas. El operador “::”, permite designar una clase definida en un contexto distinto del actual. Diagramas de clases El diagrama de clases es el diagrama principal para el análisis y diseño. Un diagrama de clases presenta las clases del sistema con sus relaciones estructurales y de herencia. La definición de clase incluye definiciones para atributos y operaciones. Una clase está representada por un rectángulo que dispone de tres apartados, el primero para indicar el nombre, el segundo para los atributos y el tercero para los métodos. Existen tres relaciones diferentes entre clases, dependencia, generalización, y asociación: Dependencias: es una relación de uso, es decir, una clase usa a otra que la necesita para su cometido. Se representa con una flecha discontinua desde la clase utilizadora a la clase utilizada. Generalización: representa el concepto de herencia. Asociación: especifica que los objetos de una clase están relacionados con los elementos de otra clase. Se representa mediante una línea continua que une las dos clases. Diagrama de secuencia Un diagrama de secuencia muestra la interacción de un conjunto de objetos en una aplicación a través del tiempo, y típicamente se modela para cada caso de uso. Mientras que el diagrama de caso de uso permite el modelado de una vista a alto nivel del escenario, el diagrama de secuencia contiene detalles de implementación del mismo, incluyendo los objetos y clases que se usan para implementarlo, y los mensajes pasados entre los objetos involucrados. • Línea de vida de un objeto: un objeto se representa como una línea vertical punteada con un rectángulo de encabezado y con rectángulos a través de la línea principal que denotan activación (ejecución de métodos). El tiempo de vida transcurre de arriba abajo. • Activación: muestra el periodo de tiempo en el cual el objeto se encuentra desarrollando alguna operación, bien sea por sí mismo o por medio de delegación a alguno de sus atributos. Se denota como un rectángulo delgado sobre la línea de vida del objeto. • Mensaje: el envío de mensajes entre los objetos se denota mediante una línea sólida dirigida, desde el objeto que emite el mensaje hacia el objeto que lo ejecuta. Aplicación Web para Gestión de Encuestas 16 1.2.3 Herramientas de documentación En los requisitos de la arquitectura del sistema se incluye la importancia de basar el desarrollo en soluciones de código libre, por lo que es de sentido común que para la documentación del aplicativo se siga esta misma filosofía. De esta manera, las herramientas empleadas para la redacción y documentación del presente proyecto serán: • OpenOffice para la redacción del documento. 1.3 Requisitos del sistema Tal y como vimos en la introducción, uno de los principales objetivos que pretende conseguir el sistema es el de acortar las etapas de una encuesta por muestreo. Más concretamente simplificar el proceso de diseño del cuestionario, y sobre todo simplificar el trabajo de campo, la verificación y codificación de la información registrada en los cuestionarios y la preparación de la misma para el análisis posterior. En esto último juega un papel importantísimo el entorno en el que se va a desarrollar el sistema. En este apartado veremos los principales requisitos que plantea el sistema a nivel de arquitectura. Accesibilidad Si queremos cumplir con los objetivos fijados, la aplicación debe ser accesible al máximo número de posibles destinatarios de las encuestas diseñadas, además de a los propios usuarios diseñadores. Esto, en cuanto a accesibilidad a la misma implica fundamentalmente las siguientes cuestiones: • La aplicación debe de ser accesible a través de Internet para asegurar la mayor difusión posible de las encuestas. • El formato y tecnologías implicadas en el desarrollo de la misma deben asegurar la compatibilidad con el máximo número de posibles configuraciones (navegadores, sistemas operativos, etc.) de los potenciales destinatarios de la encuesta. • Debe disponer de un entorno visual claro, sencillo e intuitivo. No todos los destinatarios de las encuestas están habituados al uso de aplicaciones Web. • Los tiempos de carga y respuesta de la aplicación deberían de ser tan reducidos como sea posible, tanto para facilitar la labor del diseñador, como para reducir el riesgo de que a los encuestados les provoque una molestia contribuir con las encuestas. Aplicación Web para Gestión de Encuestas 17 Multiplataforma En cuanto al entorno de ejecución del sistema, es importante que sea multiplataforma. Los sistemas de software que se necesitarán para la ejecución de la aplicación son básicamente: • Un servidor Web • Alguna tecnología de desarrollo del lado del servidor Web • Un sistema motor de base de datos relacionales • Y las aplicaciones de soporte que sean necesarias. Sería deseable que cada uno de los componentes estuviera disponible para varios sistemas operativos o configuraciones de hardware diferentes, tratando también que la interacción entre ellos y su configuración individual no varíen demasiado según la plataforma elegida. Software libre Como extensión a lo citado en el punto anterior, sería deseable que los componentes seleccionados sean aplicaciones libres con código fuente disponible. Esto, además de asegurar en gran medida su carácter multiplataforma, evita los costos asociados a licencias de productos comerciales. Esto se debe aplicar también a las herramientas de desarrollo de software, para garantizar que todo el conjunto siga con una filosofía homogénea. Escalabilidad Dado que se desconoce el nivel de servicio que debe ofrecer el sistema, en cuanto al número de usuarios y encuestas que debe ser capaz de soportar, como a la posibilidad de futuras ampliaciones de funcionalidad, es preciso tener muy en cuenta la escalabilidad que debe ser extendido a todo el sistema: • En cuanto a los sistemas de software que dan soporte a la aplicación. De su escalabilidad depende directamente la de la aplicación. Por ejemplo, de la escalabilidad tanto del servidor Web como del motor de base de datos elegidos dependerá que la aplicación crezca en cuanto a nivel de servicio. • En cuanto al código fuente de la aplicación, que el sistema pueda ser ampliado de forma natural depende no sólo del lenguaje elegido, sino de la organización del mismo. Debe ser lo más modular posible y preferiblemente siguiendo orientación a objetos. SeguridadEl sistema almacena datos confidenciales. En primer lugar datos de contacto sobre los usuarios diseñadores de encuestas. Y en segundo lugar los introducidos por los encuestados en cada una de las encuestas que se pongan a su disposición. Estos últimos una vez introducidos, no deben ser accesibles mas que a los usuarios designados específicamente para operar con ellos. Aplicación Web para Gestión de Encuestas 18 Distinguiendo entre los usuarios diseñadores o administradores y los destinatarios de la encuesta (o encuestados), el sistema tendrá dos partes claramente diferenciadas: • Parte privada o de administración. Esta parte de la aplicación permitirá el diseño y manipulación de las encuestas, y la administración de aspectos del sistema como la gestión de usuarios, la configuración, etc. • Parte pública. Ésta será la parte del sistema que vea el público, es decir, los destinatarios de las encuestas. La aplicación debe proveer de un mecanismo de autenticación para los usuarios encargados del diseño y el mantenimiento de las encuestas y los datos introducidos en ellas. Los usuarios tendrán diferentes perfiles, pudiendo haber usuarios dedicados sólo al diseño de las encuestas, otros al mantenimiento de las encuestas disponibles y al tratamiento de sus datos, y otro a la administración general del sistema (permisos de usuarios, accesos, etc.). Los usuarios se englobarán en grupos de usuarios, de forma que cada encuesta sólo podrá ser modificada por su diseñador o por el grupo al que pertenezca si éste lo decide. En cuanto a los destinatarios de las encuestas, es evidente que no pueden tener acceso a ninguna de las funciones que acaban de ser descritas. Sólo podrán acceder a las encuestas que se pongan disponibles en el sistema, y a ver los resultados o resúmenes de aquéllas que estén ya finalizadas, pero cuyas conclusiones se quieran poner a disposición del público. Opcionalmente, también se podría proteger a una encuesta activa mediante una contraseña, para que sólo un grupo de personas (a las que se facilita dicha contraseña) tengan acceso a ella. Uso de estándares Para favorecer la interacción con otros sistemas se debe procurar adecuar, tanto las salidas de la aplicación como los formatos de almacenamiento a formatos estandarizados. Por ejemplo, permitir impresiones en PDF, exportación de los datos recopilados en las encuestas a diferentes formatos. Para conseguir esto último es imprescindible almacenar los datos recopilados en algún formato estándar, que permita una fácil conversión a otros tipos de formatos. De este modo también aseguramos la escalabilidad del sistema, reduciendo la complejidad de modificar la aplicación para que produzca nuevos formatos de salida. Fácil instalación y mantenimiento En cuanto a la instalación y mantenimiento del sistema, de nuevo dependemos de los componentes elegidos para soportar la aplicación, esto es, sistemas multiplataforma, de código libre, estándares, etc.; se debe ser capaz de ofrecer una solución robusta, y con una instalación y un mantenimiento claros y bien documentados. Aplicación Web para Gestión de Encuestas 19 2. Antecedentes e Investigación 2.1 Investigación 2.1.1 Estándares de encuestas ADM Asociación Alemana de Institutos de Investigación de Mercado y Opinión http://www.adm-ev.de Estándares de calidad para la realización de encuestas por Internet http://www.solucionesnetquest.com/papers/Onlinestandards_ES.pdf Documento que presenta una concretización de los estándares generales en relación tanto al diseño como a las técnicas específicas de captación y análisis de datos mediante encuestas por Internet. Centro Centroamericano de Población, Universidad de Costa Rica http://ccp.ucr.ac.cr/eqsoftware/ http://ccp.ucr.ac.cr/eqsoftware/eqml.html El EQLM: una especificación que permite representar tanto cuestionarios simples como complejos de censos y encuestas en XML. Se basa en un modelo matemático llamado Algebra de Preguntas que se desarrolló analizando miles de preguntas en decenas de cuestionarios de censos, encuestas y otras investigaciones. El modelo conceptual del sistema (EQ-Software), es una arquitectura extensible, inicialmente compuesta de tres módulos: una aplicación para el diseño visual de cuestionarios que aísla al investigador de los detalles técnicos del EQML, una aplicación para recolección de datos en Palm y una aplicación que controla la distribución de áreas de enumeración entre los entrevistadores y los datos recolectados por ellos. La arquitectura puede extenderse para recolectar datos por otros medios como Web, papel Tablet PC, etc. Triple-S http://www.triple-s.org/ El estándar triple-s es un estándar abierto para compartir encuestas entre distintos sistemas independientemente de la plataforma hardware o software. La última revisión es la Triple-S XML versión 2.0 de mayo del 2006. Aplicación Web para Gestión de Encuestas 20 2.1.2 Generadores de encuestas disponibles Net Quest http://www.solucionesnetquest.com Survey manager es una solución de software desarrollada íntegramente por Netquest para la gestión de encuestas avanzadas a través de Internet. Questionmark http://www.questionmark.com/esp/home.htm Software para crear, distribuir y analizar test, encuestas y evaluaciones, con dos versiones: Perception para Web (distribución vía Internet o intranet) y Perception para Windows (vía redes sin servidor). Entryware http://www.trevenque.es/index.php/Entryware/44/0 El sistema Entryware es un conjunto de herramientas versátil y potente destinado a la recolección móvil de datos. Formado por el software Entryware de Techneos Systems, y por ordenadores de bolsillo con sistema operativo Palm OS, este sistema combina movilidad y facilidad de uso. Atnova Web Systems http://www.atnova.com/ Atnova Perception. Software para la investigación de mercados; encuestas por Internet. Es una plataforma Web para investigación de mercados con la que podría realizar encuestas a través de Internet y obtener resultados en tiempo real. Encuesta Fácil http://www.encuestafacil.com/ Es una herramienta Web que permite a los usuarios elaborar por sí mismos, de una forma rápida y sencilla, encuestas internas y externas que ayuden a la toma de decisiones. EncuestaFacil.com permite obtener información en tiempo récord utilizando muy pocos recursos. 2Ask http://www.2ask.net/ Servicio de Internet para encuestas online. Características principales: • Crea cuestionarios de forma rápida y sencilla • Realiza encuestas online a bajo precio • Analiza los resultados de las encuestas en cualquier momento • Intercambio directo de datos con Excel Aplicación Web para Gestión de Encuestas 21 CleverForm http://www.cleverform.com/ Servicio de Internet para encuestas online. SnapSurveys http://www.snapsurveys.com/ Es un sistema basado en Windows para el diseño, publicación, captación de datos y análisis de cuestionarios. Soporta diferentes formas de recolección, Web email, papel, teléfono, PDA. Además proporciona una robusta capacidad de análisis (tablas, gráficas,..). Web Survey Toolbox http://www.websurveytoolbox.org/ Herramienta open source para la creación de encuestas tanto simples como complejas. Desarrollado en entorno Java. PhpESP http://www.butterfat.net/wiki/Projects/phpESP Herramienta open source para crear, administrar recopilar resultados y ver estadísticas de encuestas. Desarrollado en php. 2.2 Estudio tecnológico preliminar 2.2.1 Aplicaciones Web Una aplicación Web es aquella en la que los usuarios acceden mediante un servidor Web, ya sea a través de Internet o de una intranet. Las aplicaciones Web son populares debido a la practicidad del navegador Web como cliente ligero, y a la posibilidad para actualizar y mantener aplicacionessin distribuir e instalar software en miles de potenciales clientes. Aplicaciones como los clientes de correo electrónico vía Web, el comercio electrónico o aplicaciones de banca online son ejemplos bien conocidos de aplicaciones Web. En el modelo de aplicaciones cliente-servidor puro, cada aplicación tenía su propio programa cliente y su interfaz de usuario, éstos tenían que ser instalados por separado en cada estación de trabajo de los usuarios. Una mejora o cambio en el software del servidor, como parte de la aplicación, requería típicamente una mejora de los clientes instalados en cada una de las estaciones de trabajo. En contraste, las aplicaciones Web generan dinámicamente una serie de páginas en un formato estándar, soportado por navegadores Web comunes como HTML o XHTML. Generalmente cada página Web individual es enviada al cliente como un documento estático, siendo la secuencia de páginas recibidas la que proporciona una experiencia interactiva. De esta forma el único costo de instalación por el lado del cliente es asegurase de que tiene un navegador compatible con las tecnologías utilizadas. Aplicación Web para Gestión de Encuestas 22 Una ventaja significante es la construcción de aplicaciones Web que soporten las características de los navegadores estándar y que deberían funcionar igual independientemente del navegador o la versión del sistema operativo instalado en el cliente. En vez de crear clientes para Windows, Mac, Linux, e incluso otro tipo de plataformas como PDA’s o navegadores para teléfonos móviles, la aplicación es escrita una única vez y es mostrada correctamente en casi cualquier medio compatible. Sin embargo, aplicaciones inconsistentes de HTML, CSS, DOM y otras especificaciones de navegadores pueden causar problemas en el desarrollo y soporte de aplicaciones Web. Sin embargo, las interfaces Web tienen ciertas limitaciones en la funcionalidad del cliente. Operaciones básicas comunes en las aplicaciones de escritorio como dibujar en la pantalla respondiendo a acciones de usuario o arrastrar y soltar no están soportadas por las tecnologías Web estándar. Por esta razón surgen una serie de tecnologías del lado del cliente que pretenden añadir funcionalidades que aumenten la interactividad de la interfaz del navegador. Este es el caso de tecnologías como Macromedia Flash, applets de Java, o más recientemente lo que se ha venido a denominar el modelo AJAX. Cabe distinguir por tanto dos entornos en los que se desarrollan las aplicaciones Web: • Aplicaciones en el lado del cliente: el cliente Web es el encargado de ejecutarlas en la máquina del usuario. Son aplicaciones tipo Java o Javascript en las que el servidor proporciona el código de las aplicaciones al navegador del cliente y éste, mediante el uso de plugins, las ejecuta. • Aplicaciones en el lado del servidor: el servidor Web ejecuta la aplicación, la cual una vez ejecutada genera cierto código HTML que el servidor ensambla con el resto de la página y la envía al cliente por medio del protocolo HTTP. Estructura Aunque existen infinidad de variaciones en cuanto a la estructura de una aplicación Web, están comúnmente estructuradas como aplicación de tres capas. • Una capa cliente, que en su forma más común serán navegadores Web en plataformas heterogéneas. • Una capa de aplicación, integrada por el servidor Web, un motor implementando alguna tecnología de script (PHP, JSP, ASP, etc.) y adicionalmente por otras aplicaciones de las que éste se sirve para componer sus respuestas. • Y una capa de datos, que típicamente será un sistema de gestión de base de datos, aunque podría ser cualquier tipo de tecnología de acceso y almacenamiento de datos, o incluso accesos a Web services externos u otras aplicaciones Web. Aplicación Web para Gestión de Encuestas 23 Figura 2.1 Estructura de una aplicación Web Este esquema básico puede verse alterado para adecuarse a los requerimientos de cada aplicación, siendo generalmente la capa de aplicación la que se subdivida dando lugar a esquemas más complejos. De esta forma podría añadirse una capa de Web services. 2.2.2 Tecnologías Web utilizadas Haremos en breve repaso de los lenguajes y tecnologías dirigidos a la programación de aplicaciones Web en los que se basará la implementación del sistema para la gestión de encuestas. HTML: Acrónimo de Hyper Text Markup Language. Es un lenguaje de marcas diseñado para estructurar textos. HTML es un lenguaje muy sencillo que permite describir hipertexto, es decir, texto presentado de forma estructurada y agradable, con enlaces que conducen a otros documentos o fuentes de información relacionadas, y con inserciones multimedia (gráficos, sonido…). Básicamente se trata de un conjunto de etiquetas que sirven para definir la forma en la que se presentara el texto y otros elementos de la página, creando una estructura estándar que será luego procesada por un programa especializado (típicamente un navegador) para su presentación final. XML: Acrónimo en inglés de eXtensible Markup Language (Lenguaje de marcas extensible), es un metalenguaje extensible de etiquetas desarrollado por el W3C (World Wide Web Consortium). Es una simplificación y adaptación de SGML y permite definir la gramática de lenguajes específicos (de la misma manera que HTML es a su vez un Aplicación Web para Gestión de Encuestas 24 lenguaje definido por SGML). Por lo tanto, XML no es realmente un lenguaje en particular, sino una manera de definir lenguajes para diferentes necesidades. XML es una tecnología sencilla que tiene a su alrededor otras que la complementan y la hacen mucho más potente. Actualmente se propone como un estándar para el intercambio de información estructurada entre diferentes plataformas, facilitando la compatibilidad entre sistemas para compartir la información de una manera segura, fiable y fácil. XHTML: Acrónimo en inglés de eXtensible Hyper Text Markup Language (Lenguaje extensible de marcado de hipertexto). Es la versión XML del HTML pensado para sustituir a éste último. Su objetivo es avanzar en lograr una Web más semántica donde la información y la forma de representarla estén claramente diferenciadas. CSS: Las hojas de estilo en cascada (Cascading Style Sheets) son un lenguaje formal usado para definir la presentación de un documento estructurado escrito en HTML o XML (y por extensión en XHTML). El W3C es el encargado de formular la especificación de las hojas de estilo que servirá de estándar para los navegadores. Existen actualmente dos versiones CSS1 y CSS2, con CSS3 en estado de desarrollo. Los navegadores modernos implementan CSS1 bastante bien, aunque existen pequeñas diferencias de implementación según marcas y versiones de los navegadores. CSS2, sin embargo esta solo parcialmente implementado en los más recientes. JavaScript: Es un lenguaje interpretado orientado a las páginas Web y diseñado para ser ejecutado en el navegador. Fue inventado por Breadan Eich en la empresa Netscape Comunications que fabricó los primeros navegadores de Internet comerciales. En 1997 fue adoptado como un estándar por la ECMA (European Computer Manufacturers Association) con el nombre de ECMAScript. Poco después también lo fue como estándar ISO. DOM: El Document Object Model (Modelo de Objetos de Documento) es un modelo para representar los objetos que componen los documentos HTML ó XML, con sus atributos y métodos asociados. Es un API independiente del lenguaje para acceder, añadir y cambiar dinámicamente contenido estructurado en páginas Web. Actualmente navegadores como Internet Explorer de Microsoft han añadido extensiones a este estándar, dificultando de esta manera la compatibilidad entre navegadores. La referencia y manipulación de los objetos que forman el árbol DOM es fundamental para la programación en lenguajes interpretados como el anterior citadoJavaScript. AJAX: Acrónimo de Asynchronous JavaScript And XML (JavaScript y XML asíncronos), es una técnica de desarrollo Web para crear aplicaciones interactivas. Estas se ejecutan en el cliente, es decir, en el navegador del usuario, y mantiene comunicación asíncrona con el servidor en segundo plano. De esta forma es posible realizar cambios sobre la misma página sin necesidad de recargarla. Esto significa aumentar la interactividad, velocidad y uso de la misma. Aplicación Web para Gestión de Encuestas 25 JAVA: JAVA es un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems. Las aplicaciones Java están típicamente compiladas en un bytecode, aunque la compilación en código maquina nativo también es posible. En el tiempo de ejecución, el bytecode es normalmente interpretado o compilado a código nativo para la ejecución. 2.2.3 Arquitectura MVC Uno de los modelos más usados en el diseño de arquitecturas de software para aplicaciones Web es la arquitectura MVC. La arquitectura MVC (Model View Controller, en castellano Modelo Vista Controlador) es un patrón de diseño de software que consiste en dividir el software en tres componentes principales: el modelo de datos de la aplicación, la interfaz con el usuario y la lógica de control. El patrón MVC se ve frecuentemente en aplicaciones Web, donde la vista es la página HTML, el control es el código que provee de datos dinámicos a la página y el modelo contiene clases representativas de la aplicación. • El modelo: Esta es la representación específica del dominio de la información sobre la cual funciona la aplicación. El modelo es otra forma de llamar a la capa de dominio o lógica de negocio. Esta lógica es la que añade significado a los datos que gestiona la aplicación, sin prestar atención a como será la visualización en interacción con los mismos. • La vista o interfaz de usuario la constituyen aquellos componentes encaminados a mostrar una representación concreta del modelo. • El controlador está compuesto por la parte del software que se encarga de relacionar las entradas externas al sistema con las acciones que es necesario ejecutar sobre el modelo. Este responde a eventos, usualmente acciones del usuario, e invoca cambios en el modelo y probablemente actualizaciones en la vista del mismo. Figura 2.2 Estructura de una aplicación Web Aplicación Web para Gestión de Encuestas 26 (1) El usuario interactúa con la interfaz y el controlador recibe la notificación de actuación del usuario (2) El controlador actúa sobre el modelo para cumplir con la petición del usuario. (3) El controlador delega en las vistas para que se genere una determinada representación. (4) La vista obtiene del modelo los datos que necesita para mostrarse. (5) Finalmente, el usuario ve actualizada su interfaz con el resultado de la operación. En casi cualquier programa que hagamos podemos encontrar estas tres partes bien diferenciadas, siendo la división aun más evidente en el desarrollo de aplicaciones Web. 2.2.4 AJAX Como ya se vio en la sección anterior, AJAX (Asynchronous Javascript And XML) es una técnica de desarrollo Web, cuyo principal objetivo es potenciar la interactividad de las aplicaciones Web acercándola a la experiencia de usuario típica de las aplicaciones de escritorio tradicionales. En realidad AJAX no es una tecnología en sí misma, sino la unión de varias tecnologías que se han convertido en estándares en el campo del desarrollo Web. De esta forma AJAX incorpora: • Presentación basada en estándares usando XHTML y CSS • Visualización e interacción dinámicas usando el Document Object Model • Intercambio y manipulación de datos mediante XML y XSLT • Recuperación de datos de forma asíncrona usando el objeto XMLHttpRequest • Javascript como hilo conductor de todas estas tecnologías Aplicación Web tradicional Para entender el cambio que propone AJAX, vamos a ver primero de qué forma funciona el modelo clásico de aplicaciones Web. Cuando se inicia la sesión, se carga una página HTML enviada por el servidor. Cuando se pulsa un enlace, se rellena un formulario, o se realiza una consulta, el navegador construye una petición HTTP que es enviada al servidor. Con esta información el servidor realiza la operación que se le ha pedido, quizá consulta una base de datos, recupera un gráfico o realiza un cálculo, y genera una nueva página HTML completa con el resultado de la operación, que será devuelta al navegador del cliente que a su vez la presenta, borrando la página anterior. En muchos casos la nueva página generada es muy similar a la precedente, a lo mejor con un gráfico más amplio o una información adicional. Aplicación Web para Gestión de Encuestas 27 Este es un modelo adaptado del uso original de Internet como un medio de visualización de información en forma de hipertexto, y que tiene mucho sentido a nivel técnico, pero no la tiene desde el punto de vista de la interactividad en la experiencia del usuario. El problema de este esquema, bien conocido por todos, es que mientras el servidor está ocupado procesando la petición (entre muchas otras) el usuario está esperando pacientemente a que le llegue la nueva página, lo que no siempre ocurre rápidamente. Todo sucede en el lado del servidor, mientras que en el lado del usuario el navegador tiene que esperar en cada una de sus acciones a que el servidor reciba la petición, la procese, y vuelva a generar toda la página HTML completa, incluso aunque lo que haya cambiado sea un simple dato. Aplicación AJAX Una aplicación AJAX modifica el ciclo petición-espera-respuesta de la interacción en la Web introduciendo un intermediario entre el usuario y el servidor: el motor AJAX. En vez de cargar una página Web, al inicio de la sesión, el navegador carga además el motor AJAX, escrito en Javascript. Este motor es el responsable de construir y modificar dinámicamente la interfaz que el usuario ve y de comunicarse con el servidor en nombre de éste, permitiendo que la interacción del usuario con la aplicación suceda de forma asíncrona (independiente de la comunicación con el servidor). Así, el usuario nunca estará mirando una ventana en blanco del navegador y un icono de reloj de arena esperando a que el servidor haga algo. El motor AJAX lo que hace es proporcionar un marco flexible e independiente del servidor que realiza toda la interacción con el usuario y que puede contener herramientas de cálculo, validación, sistemas sofisticados de producción e interacción con gráficos o cualquier cosa que se pueda programar en Javascript. Cada acción de un usuario que en el modelo tradicional generaría un requerimiento HTTP toma la forma de una llamada Javascript al motor AJAX. Cualquier respuesta a una acción del usuario que no requiera un viaje de vuelta al servidor (como una simple validación de datos, edición de datos en memoria, incluso algo de navegación) es manejada por su cuenta. Si el motor necesita algo del servidor para responder (sea enviando datos para procesar, cargar código adicional, o recuperando nuevos datos) hará las peticiones al mismo asincrónicamente en segundo plano. El servidor responderá a estas peticiones usualmente enviando datos en formato XML que el motor AJAX recibirá, procesara y presentara al usuario cuando estén listos, y sin interrumpir la interacción del usuario en la pagina HTML de la aplicación. Aplicación Web para Gestión de Encuestas 28 Figura 2.3 Aplicación AJAX De esta forma la interactividad del usuario con la aplicación se mejora sensiblemente, principalmente: • Se eliminan los periodos de espera en los que la aplicación pierde pro completo toda su funcionalidad hasta que se refresca por completo. El usuario esta en todo momento en contacto con la interfaz de la aplicación. • Además, se disminuyen los tiempos de carga de datos delservidor. Como ya no es necesario recargar toda la pagina HTML, la comunicación motor AJAX – Servidor se limita exclusivamente al trafico de datos (usualmente XML), y no a elementos propios de la presentación de los mismos, que ya no se envían repetidos una y otra vez. Aplicación Web para Gestión de Encuestas 29 El objeto XMLHttpRequest El objeto XMLHttpRequest es la clave del tratamiento de las comunicaciones en esta técnica de desarrollo Web. XMLHttpRequest es una API que puede invocarse desde Javascript, JScript, VBscript y otros lenguajes de script incluidos en un navegador Web, que se usa para transferir y manipular datos XML hacia y desde el navegador Web, estableciéndose un canal de conexión independiente entre el lado del cliente de la página Web y el servidor. Los datos devueltos por la llamada a XMLHttpRequest serán, por lo general, obtenidos desde bases de datos en el servidor. La llamada puede devolver datos en XML o, más generalmente, en cualquier otro formato textual como JSON, HTML o incluso texto plano. 2.2.5 XML XML es un estándar impulsado por W3C el cual hay en día nos ayuda a organizar y representar datos por lo cual esta siendo aplicado en multitud de campos y para diversos fines: archivo electrónico y gestión de contenidos, publicación Web, intercambio electrónico de documentos, comercio electrónico, educación y muchos otros campos que seria casi imposible mencionar aquí. Aunque como ya hemos mencionado, XML es un estándar del W3C el cual nació en el mundo Web y que se utiliza dentro y fuera de su ámbito. XML es una forma de representar datos que han de circular por la red y por ello no está ligado necesariamente a su presentación en un navegador. Su función principal es la de organizar contenidos haciendo que los documentos XML sean entendibles entre diferentes tipos de aplicaciones. Es por tanto un metalenguaje, que junto con un conjunto de reglas que rigen como añadir marcado a un texto, permite construir documentos en los que se hace explicita la estructura de los mismos. El los lenguajes definidos con XML, dicha estructura se concibe como un árbol de elementos, donde cada elemento puede tener asociado un conjunto de pares atributo- valor. XML permite definir dichas estructuras utilizando un formalismo gramatical (p. ej., (*)DTD, XML Schema) En XML las etiquetas se agregan al lenguaje según nuestras necesidades y su objetivo no es informar sobre cómo deben mostrarse los datos, sino describirlos, además de permitir definir nuevas etiquetas y ampliar las existentes. Es más, un documento XML no está destinado para ser visualizado en un navegador, sino para ser procesado por cualquier aplicación que sea capaz de extraer sus datos y manipularlos. Aplicación Web para Gestión de Encuestas 30 Un sencillo ejemplo de documento XML seria: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ficha sexo="masculino" tipo="operador"> <nombre>Pedro</nombre> <apellido>Campos</apellido> <dir>La Laguna</dir> </ficha> En este primer ejemplo se pueden apreciar las dos entidades básicas de XML: los elementos y los atributos. • Los elementos representan los distintos componentes lógicos del documento. En el ejemplo: nombre, apellido y dir. • Los atributos se corresponden con los calificadores asociados a los elementos. En este caso el elemento pregunta tiene dos atributos: sexo y tipo. Un documento XML es, por lo tanto, el conjunto de etiquetas con los respectivos datos asociados a cada una de ellas. Los documentos XML pueden incluir cualquier tipo de datos basados en texto, desde artículos de una publicación, a notas de prensa pasando por registros de una base de datos, o los recientes canales de noticias en formato RSS. Tipos de documento XML Hay dos tipos de documentos XML: válidos y bien formados. Éste es uno de los aspectos más importantes de este lenguaje, así que hace falta entender bien la diferencia: • Bien formados: son todos los que cumplen las especificaciones del lenguaje respecto a las reglas sintácticas y pueden, por lo tanto, ser analizados correctamente por cualquier procesador XML que cumpla con la norma. • Validos: además de estar bien formados, siguen una estructura y una semántica determinada por un documento de definición externo expresado como DTD o XSchema. Estructura de un documento XML Un documento XML está formado por una mezcla de datos e información de etiquetado sobre los mismos, que además pueden incluir un prólogo con la siguiente información: • La declaración XML que incluye la versión usada en el documento, el tipo de codificación utilizada y el carácter autónomo (Standalone) del mismo. Un documento standalone es aquel que no está basado en un documento de definición externo. Aplicación Web para Gestión de Encuestas 31 • Una declaración de tipo de documento (DTD), que se usará para validar que el documento XML se ajusta al lenguaje definido por el documento de definición especificado. En cuanto a las reglas de sintaxis que debe de cumplir el cuerpo de un documento XML para considerarse bien formado, de manera abreviada podemos nombrar las siguientes características: • Los documentos han de seguir una estructura completamente jerárquica con lo que respecta a las etiquetas que delimitan sus elementos. Una etiqueta debe estar correctamente incluida en otra, es decir, las etiquetas deben estar correctamente anidadas. Los elementos de contenido deben estar correctamente cerrados. • XML permite elementos sin contenido, pero la etiqueta debe ser: <elemento_sin_contenido /> • Los documentos XML solo permiten un elemento raíz del que todos los demas sean parte, es decir, solo pueden tener un elemento inicial. • Los valores de los atributos XML siempre deben de estar encerrados entre comillas simples o dobles. • El XML es sensible a mayúsculas y minúsculas. Existe un conjunto de caracteres llamados espacios en blanco (espacios, tabuladores, retornos de carro, saltos de línea) que los procesadores XML tratan de forma diferente en el marcado XML. • Los nombres que identifican los elementos, atributos, etc., deben cumplir una serie de reglas similares a las que definen los identificadores en la mayoría de lenguajes de programación. • Las etiquetas, referencias de entidad y declaraciones se denominan marcas; son partes del documento que el procesador XML espera entender. El resto del documento entre marcas son los datos entendibles por las personas. DTD: Definición de Tipos de Documento Como antes e comento, los documentos XML pueden ser validados o bien formados. En cuanto a los validos, ya sabemos que su gramática esta definida en los DTD. Los DTD no son mas que definiciones de los elementos que pude incluir un documento XML, de la forma en que deben hacerlo (qué elementos van dentro de otros) y los atributos que se les puede dar. Para especificar la definición DTD que se usara en un determinado documento XML se usara la etiqueta DOCTYPE, que puede ser usada de dos maneras: Aplicación Web para Gestión de Encuestas 32 Incluir dentro del documento una referencia al documento DTD en forma de URI (Universal Resource Identifier, ò identificador universal de recursos) y mediante la siguiente sintaxis: <!DOCTYPE ficha SYSTEM ”…/archivo.dtd” O bien incluir dentro del propio documento el DTD entre corchetes, de este modo: <?xml version="1.0"?> <!DOCTYPE ficha [ <!ELEMENT ficha (nombre+,apellido+,dir*,foto?,tlf|fax?)> <!ATTLIST ficha sexo (masculino|femenino) #IMPLIED> <!ATTLIST ficha tipo (operador|admin) #REQUIRED> <!ELEMENT nombre (#PCDATA)> <!ELEMENT apellido (#PCDATA)> <!ELEMENT dir (#PCDATA)> <!ELEMENT foto EMPTY> ]> <ficha sexo="masculino" tipo="operador"> <nombre>Pedro</nombre> <apellido>Campos</apellido> <dir>La Laguna</dir> </ficha> En cuanto a la definición de los elementos,es bastante intuitiva: después de la cláusula <!ELEMENT se incluye el nombre del elemento (el que luego se indicara en la etiqueta), y después diferentes datos en funcion del elemento: entre paréntesis, si el elemento es no vació, se indica el contenido que puede tener el elemento: la lista de elementos hijos o que descienden de él si los tiene, separados por comas; o el tipo de contenido, normalmente #PCDATA, que indica datos de tipo texto, que son los mas habituales. Si es un elemento vació, se indica con la palabra EMPTY. A la hora de indicar los elementos descendientes (los que están entre paréntesis) vemos que van seguidos de unos caracteres especiales: ‘+’,’*’,’?’ y ‘|’. Sirven para indicar que tipo de uso se permite hacer de estos elementos dentro del documento: • +: uso obligatorio y múltiple; permite uno o más elementos de este tipo dentro del elemento padre, pero como mínimo uno. • *: opcional y múltiple; puede no haber ninguna ocurrencia, una o varias. • ?: opcional pero singular; puede no haber ninguno o como mucho uno. • |: equivale a un OR, es decir, da la opción de usar un elemento de entre los que forman la expresión, y solo uno. De este modo, en la definición del elemento ficha del ejemplo anterior, se indica que el elemento ficha puede contener los siguientes elementos: un nombre y un apellido como mínimo, pero puede tener mas de uno de cada; opcionalmente puede incluirse una o varias direcciones, pero no es obligatorio; opcionalmente también se puede incluir una única foto; y por fin, puede incluirse, aunque no es obligatorio en ninguno de los dos casos, un teléfono o fax. Aplicación Web para Gestión de Encuestas 33 Para la definición de los atributos, se usa la declaración <!ATTLIST, seguida de el nombre del elemento del que estamos declarando los atributos; el nombre del atributo, los posibles valores del atributo, etc. También se pueden definir el tipo de dato y características como si es requerido, fijo (valor único para todos los elementos del mismo tipo), si es un valor único para todo el documento, etc. Es importante destacar un aspecto de cara a la optimización del diseño de nuestros DTD’s: muchas veces tendremos que decidir entre especificar atributos de nuestros elementos como elementos descendientes o como atributos en si mismos. ¿Qué diferencia habría entre ambos? Queda a discreción del diseñador el decidir entre ambas, pero hay que tener en cuenta que si se usa la primera forma, el proceso tiene que bajar al siguiente nivel del árbol de elementos mientras que en el segundo caso lo puede obtener referenciado directamente un atributo del elemento actual. Sin embargo se suele recomendar la segunda opción, por estar mas acorde con la filosofía XML de que las etiquetas reverencien siempre su contenido, sin necesidad de acudir a los atributos, que era lo que hasta ahora se hacia en HTML. XML Schema Un XML Schema es un documento de definición estructural al estilo de los DTD, que además cumple con el estándar XML. Los documentos Schema (usualmente con extensión XSD) se concibieron como un sustituto de los DTD teniendo en cuanta los puntos débiles de estos y la búsqueda de mayores y mejores capacidades a la hora de definir estructuras para los documentos XML, como la declaración de los tipos de datos. Esto significa que siendo posible hacer una transformada XSLT a un documento XML Schema, tenemos muchas mas opciones que un DTD. Por ejemplo, XML Schema ofrece muchas posibilidades necesarias en las aplicaciones de procesado de datos, como tipos de datos complejos como fechas, números, strings, además de tipos de datos complejos creados por el usuario. La programación en Schema XML se basa en namespaces. Podemos encontrar una analogía entre estos y los llamados “packages” en Java. Cada namespace contiene unos elementos y atributos que están estrechamente relacionados con el namespace. Así, a la hora de definir un elemento oun atributo de un namespace, siempre se creara una conexión entre los diferentes campos de este. Además, esta forma de trabajar, nos permite relacionar elementos que no están en el mismo namespace pero que si mantienen una relación. Después de escribir un Schema XML se puede confirmar la correcta realización mediante la validación de esquemas XML. Procesamiento de documentos XML En un entorno donde se esta trabajando con documentos XML es importante distinguir entre los siguientes elementos: • El documento XML propiamente dicho. El estándar describe como es un documento XML, pero no donde ni como se almacena. Aplicación Web para Gestión de Encuestas 34 • El procesador XML o parser. Se rata de un modulo software que lee el documento y proporciona acceso a su contenido y estructura • la aplicación propiamente dicha, que usa los servicio del procesador XML. El estándar no se ocupa de este elemento. Ya hemos hablado de las características de los documentos XML, y puesto que el estándar no se ocupa de la capa de aplicación, vamos ahora a ver brevemente las alternativas a la hora de procesar dichos documentos. El W3C ha especificado dos mecanismos para acceder a documentos XML, y trabajar con ellos. Se tratan simplemente de unas normas que indican a los desarrolladores la manera de acceder a los documentos. Estas normas incluyen una jerarquía de objetos que tienen unos métodos y atributos con los que tendremos que trabajar y que nos simplificaran las tareas relativas al recorrido y acceso a las partes del documento. Estos dos mecanismos se denominan SAX y DOM SAX se utiliza para hacer un recorrido secuencial de los elementos del documento XML, y se basa en un procesamiento orientado a eventos. Básicamente se programan las acciones que se necesitan ejecutar cada vez que se inicia o cierra un elemento mientras el parser va leyendo el documento. DOM implica la creación de un árbol en memoria que contiene el documento XML, y con el en memoria podemos hacer cualquier tipo de recorrido y acciones con los elementos que queramos. Por lo tanto, el documento XML debe ser leído por completo antes de poder generar al árbol, al contrario que SAX, que va disparando acciones a medida que se lee. Se puede programar con el lenguaje de programación que se desee para acceder a un documento XML. Los creadores del lenguaje son los responsables de crear unas API que cumplan las especificaciones de XML para que luego los desarrolladores de cada lenguaje las encuentren y puedan trabajar con ellas. Por su parte, los creadores de algunos lenguajes han implementado una tercer manera de programar con XML que se llama XSLT. Empresas como por ejemplo la organización Apache, SUN ó Microsoft, ya la están apoyando, aunque en el W3C no han dicho que sea un estándar. Es importante señalar que la W3C es un organismo relativamente lento y que mucho de lo que se hace en XML actualmente solo esta en la W3C contemplado como “notas”. El trabajo con bases de datos y XML se esta desarrollando con un lenguaje que se llama XQL (XML Query Language). XSLT XSL, siglas de Extensible StyleSheet Language (lenguaje extensible de hojas de estilo) es una familia de lenguajes basados en el estándar XML que permite describir como la información contenida en un documento XML cualquiera debe ser transformada o formateada para su presentación en un medio especifico. Esta familia esta formada por tres lenguajes: Aplicación Web para Gestión de Encuestas 35 • El XSLT propiamente dicho, que permite especificar reglas de conversión de documentos XML de una determinada sintaxis a otra (por ejemplo, de un XML a otro o a un documento HTML). • XSL-FO (Lenguaje de hojas extensibles de formateo de objetos), que permite especificar el formato visual con el cual se quiere presentar un documento XML, es usado principalmente para generar documentos PDF. • XPath, o XML Path Language, es una sintaxis (no basada en XML) para acceder o referirse
Compartir