scieee AI-readable full text Open interactive document viewer

Web orientada a dispositivos móviles que comunican con otro sistema a través de Web Services

García Martín, Ismael

Abstract

El proyecto consiste en establecer la comunicación entre dos portales web a través de servicios web Restful implementados en PHP. Ambos portales están relacionados con el mundo del cine. El segundo de estos es, a grandes rasgos, una interfaz simplificada del anterior. El primer portal web está construido sobre Drupal 7, en este instalamos una serie de módulos que nos permiten gestionar el contenido que se quiere mostrar a los usuarios. Un usuario que no se identifica podrá navegar por todas las páginas del portal, identificarse y registrarse. Los privilegios que se le conceden a un usuario cuando se identifica son los de participar en el sistema de votación de las películas e interactuar con otros usuarios identificados a través de un sistema de comentarios. El usuario administrador, además, puede gestionar el contenido y a los usuarios identificados. El segundo portal está orientado al disfrute de la página a través de dispositivos móviles. Un usuario que no se ha identificado puede navegar por todas las áreas de éste del mismo modo que un usuario identificado. En este portal, a diferencia del anterior, no es posible registrarse para este tipo de actores. La diferencia entre el usuario no identificado y el identificado, en este caso, es que este último al visualizar el catálogo observará un descuento sobre cada película. Los servicios web, a través de peticiones GET y POST, proporcionarán a los usuarios una rica experiencia de navegación. Gracias a estos, en el segundo portal, podrán identificarse, obtener el catálogo de películas (además de ordenarlo y establecer filtros de búsqueda por género), y visualizar la ficha de las películas y directores. Todo esto sin necesidad de crear otra base de datos, tan solo intercambiando datos con el servidor.

Full text

1 MEMORIA DEL TRABAJO DE FIN DE GRADO Web orientada a dispositivos móviles que comunica con otro sistema a través de web services. Autor: Ismael García Martín Tutor: Abraham Rodríguez Rodríguez Departamento de Informática de Sistemas Las Palmas de Gran Canaria, Noviembre 2013 2 ÍNDICE DE CONTENIDOS 1. Introducción. ………………………………………………………………………………… 5 1.1. Presentación y descripción general del trabajo. .….……………………………………………… 5 1.2. Objetivos principales. …………………………………………………………………………………………. 5 1.3. Planteamiento del problema. ……………………………………………………………………………… 6 1.4. Estructura del documento. ………………………………………………………………………………….. 6 2. Competencias. ………………………………………………………………………………. 8 3. Normativa y legislación. ……………………………………………………………… 10 3.1. Normativa y regulación de la informática en el ámbito internacional. ……………… 10 3.2. Normativa y regulación de la informática en el ámbito europeo. ……………………… 15 3.3. Normativa y regulación de la informática en el ámbito nacional. ……………………… 16 3.4. Normativa relacionada con este trabajo de fin de grado …………………………………… 19 4. Plan de trabajo …………………………………………………………………………….. 29 4.1. Tareas. ……………………………………………………………………………………………………………….. 29 4.2. Planificación temporal. ………………………………………………………………………………………. 30 5. Análisis. ……………………………………………………………………………………..… 31 5.1. Introducción. ………………………………………………………………………………………………….….. 31 5.2. Diagramas de casos de uso. ……………………………………………………………………………….. 31 5.2.1. Actores y privilegios. ……………………………………………………………………………….. 31 5.2.2. Casos de uso del usuario no identificado. ………………………………………………… 32 5.2.3. Casos de uso del usuario identificado. …………………………………………….……….. 33 3 5.2.4. Casos de uso del administrador. …………………………….………………………………… 34 5.3. Entidades. ……………………………………………………………………….…………………………………. 36 6. Diseño. …………………………………………………………………………………………. 37 6.1. Introducción. ……………………………………………………………………………………………………… 37 6.2. Capa de presentación. ……………………………………………………………………………………….. 37 6.3. Capa de negocio o lógica de la aplicación. ………………………………………………………… ..45 6.4. Capa de datos. ……………………………………………………………………………………………………. 46 7. Implementación. ………………………………………………………………………….. 47 7.1. Introducción. ……………………………………………………………………………………………………… 47 7.2. Sistema DRUPAL. ……………………………………………………………………………………………….. 47 7.2.1. ¿Qué es Drupal? ………………………………………………………………………………………. 47 7.2.2. Módulos utilizados. …………………………………………………………………………………. 48 7.2.3. Theme. ……………………………………………………………………………………………………. 50 7.2.4. Implementación del portal Drupal. ………………………………………………………….. 50 7.3. Web Services. …………………………………………………………………………………………………….. 51 7.3.1. ¿Qué son los web services? ……………………………………………………………………… 51 7.3.2. ¿SOAP o REST? …………………………………………………………………………………………. 52 7.3.3. REST en este trabajo. ……………………………………………………………………………….. 53 7.4. Portal móvil. ………………………………………………………………………………………………………. 55 7.4.1. Introducción. …………………………………………………………………………………………… 55 7.4.2. Acerca de jQuery Mobile. ………………………………………………………………………… 55 7.4.3. Ficheros de implementación. …………………………………………………………………… 55 7.4.4. Aspectos software más destacados. ………………………………………………………… 57 4 8. Pruebas. ……………………………………………………………………………………… 59 8.1. Validación de navegadores web. ……………………………………………………………………….. 59 8.2. Validación de la seguridad en el acceso a la zona de administración. …………………. 65 8.3. Validación de enlaces rotos. ………………………………………………………………………………. 66 9. Conclusión. …………………………………………………………………………………… 67 9.1. Conclusión del trabajo realizado. ……………………………………………………………………….. 67 9.2. Líneas futuras. ……………………………………………………………………………………………………. 67 10. Manual de usuario y software. …………………………………………………… 69 11. Referencias. ………………………………………………………………………………… 77 5 1. INTRODUCCIÓN 1.1 Presentación y descripción general del trabajo. Este documento describe el trabajo realizado en el proyecto de fin de grado de ingeniería informática en la mención de tecnologías de la información. Con el auge de las aplicaciones para dispositivos móviles, que nos permiten acceder a la información que deseamos en cualquier momento y desde cualquier sitio, aparecen dos alternativas a la hora de llevar a cabo su desarrollo. La primera propone que el propio portal tenga una versión móvil. Por otro lado, la segunda trata de que se desarrolle como una aplicación independiente, lo cual facilita el consumo de la información del portal fuera de línea (sin necesidad de una conexión permanente a internet). En este contexto, el proyecto consiste en plantear la arquitectura del sistema para la elaboración de una aplicación independiente y, así, diseñar e implementar un prototipo de portal web orientado a dispositivos móviles que mediante el uso de servicios RESTful obtenga y envíe los datos necesarios a un sistema nativo construido sobre el framework Drupal. Este planteamiento facilitaría la posterior transformación del portal web en aplicaciones nativas de plataformas móviles. El dominio sobre el que se trabajará es el de un portal dedicado al cine de autor y a los amantes de este género. Para el desarrollo realicé diversas reuniones de kick off con el tutor cómo si fuera un cliente. Estas reuniones me sirvieron para desarrollar primeramente la arquitectura y a posteriori el diseño de la web móvil. Una vez realizadas las reuniones y definida la situación, distribuí el trabajo en 4 partes: análisis, diseño, implementación y pruebas. 1.2 Objetivos principales. Conociendo nuestro objetivo de consumir información de un portal Drupal en dispositivos móviles, modularemos nuestro trabajo en las siguientes subtareas: 1. Diseñar la arquitectura del sistema que permita consumir, por parte del usuario, la información contenida en la página. 2. La implementación de un portal web funcional, sobre la temática anteriormente descrita, que será desarrollado con la plataforma Drupal 7. 6 a. Las operaciones básicas que permitirá este portal incluyen la de crear contenidos y usuarios, gestión de usuarios con privilegios, y algunas páginas de ejemplo. b. Esta parte incluye la instalación y configuración de los módulos necesarios para su funcionamiento, incluyendo Views, Services, Service Views, Devel, Entity Reference, Voting API, Libraries, Panels y CTools entre otros. 3. Trabajar e implementar peticiones con un servicio web Restful sobre PHP que atrape y devuelva los datos del sistema Drupal que queramos y los muestre en el dispositivo móvil. 4. Elaborar la arquitectura y el diseño del portal web orientado a móvil que será una interfaz reducida de la nativa, incluyendo la implementación de algunas páginas dinámicas. El prototipo también deberá incluir la validación de usuarios y el acceso a información restringida. 5. Comunicar ambos portales para que el usuario, gracias al servicio web REST pueda navegar por el portal móvil, que obtiene y envía datos al sistema nativo, como si se tratase de un sistema web independiente. 1.3 Planteamiento del problema. El problema que se nos ha planteado es la construcción de un portal Drupal, un portal móvil y un servicio web REST. La funcionalidad, a grandes rasgos, debería ser: - Mostrar un catálogo de películas con opciones de ordenación y de filtrado en Drupal que se cargue dinámicamente en el sistema móvil. - Permitir a los usuarios registrarse (registro solo desde Drupal), identificarse y realizar consultas sobre las películas ofertadas y los directores de las mismas. - Dar al usuario identificado privilegios sobre el usuario no identificado. - Permitir al administrador gestionar el contenido del portal (solo Drupal). 1.4 Estructura del documento. 7 Este documento se divide en nueve capítulos en los que se explica, detalladamente, cómo se han desarrollado y qué recursos se han utilizado para la correcta realización de cada una de las etapas de este trabajo de fin de grado. Competencias: se presentan las competencias que se deben cumplir con la elaboración de este trabajo y el modo en que han sido cubiertas. Normativa y legislación: se detallan los aspectos legales que envuelven a este proyecto y la normativa y regulación de la informática en el ámbito internacional, europeo y nacional. Plan de trabajo: presenta las tareas a desarrollar y el tiempo de realización empleado sobre cada una de ellas. Análisis: se realizó el modelado conceptual de la futura solución mediante el uso de diagramas de casos de uso. En esta etapa se especifica qué debe hacer la aplicación pero no cómo debe hacerlo. Diseño: a través de los elementos y modelos obtenidos del análisis se detalla la arquitectura del diseño, una arquitectura de tres capas donde se describe detalladamente la función de cada una de estas y el modo en que interactúan entre ellas. Tanto la etapa de análisis como la de diseño están desprovistas de código. Un buen análisis y un buen diseño son la mejor forma de llegar a producir software de calidad. Implementación: se utilizan los elementos obtenidos en el diseño para permitir la elaboración del producto o prototipo funcional, puede ser puesto en marcha y sometido a pruebas. Se consideran las diversas tecnologías que han intervenido en la elaboración de este producto. Lo desarrollado en las etapas de análisis y diseño es traducido a código. Pruebas: se especifican las pruebas realizadas para comprobar el correcto desarrollo del proyecto y los cambios necesarios aplicados para garantizar el correcto funcionamiento del mismo. Conclusión: en este capítulo se analiza todo el proceso y el resultado del trabajo, además se especifican algunas líneas de futuro. Manual de usuario y software: demostración y recomendaciones en la instalación del trabajo y utilización de los diferentes casos de uso. Referencias: se citan las referencias bibliográficas que han hecho posible la realización de este proyecto. 8 2. COMPETENCIAS A continuación, se muestra en este capítulo una serie de competencias que se deben cumplir en este trabajo. - CII01: capacidad para diseñar, desarrollar, seleccionar y evaluar aplicaciones y sistemas informáticos, asegurando su fiabilidad, seguridad y calidad, conforme a principios éticos y a la legislación y normativa vigente. El cumplimiento de esta competencia se ve reflejada en todo el trabajo, aunque principalmente en los capítulos Análisis, Diseño, Implementación y Pruebas. En estos se muestra como se ha desarrollado este proyecto con el fin de crear un producto que cumpla los requisitos previamente definidos, asegurando, así, la fiabilidad, seguridad y calidad del mismo. Además, queda demostrado el buen uso y la ampliación de los conocimientos adquiridos durante la realización de los estudios, aplicándolos de forma adecuada para el buen desarrollo de este proyecto. - CII02: capacidad para planificar, concebir, desplegar y dirigir trabajos, servicios y sistemas informáticos en todos los ámbitos, liderando su puesta en marcha y su mejora continua y valorando su impacto económico y social. Esta competencia queda cubierta en los siguientes capítulos:  Plan de trabajo: En este queda definida la planificación general de desarrollo del trabajo dividida en tareas. Cada una de estas tareas cuenta con una descripción de su función y el tiempo que tardará en realizarse medido en horas.  En cuanto al impacto económico y social, el proyecto pretende llegar a todo el público, especialmente a aquellos que aman los grandes clásicos de la industria cinematográfica. Para fomentar el uso de la aplicación existe, para aquellos que se hayan registrado previamente, un porcentaje de descuento en el precio aplicado a cada película. Una vez esté correctamente validado ante el sistema aparecerá el descuento. - CII04: capacidad para elaborar el pliego de condiciones técnicas de una instalación informática que cumpla los estándares y normativas vigentes. Para el desarrollo e instalación de este trabajo se han tenido en cuenta los requisitos hardware y software fundamentales, estos se encuentran documentados en el capítulo séptimo de la presente memoria (Implementación). En cuanto al hardware, tan solo es necesario un ordenador (portátil o de sobremesa), también queda indicado en el capítulo diez (Manual de usuario y software). 9 - CII18: conocimiento de la normativa y la regulación de la informática en los ámbitos nacional, europeo e internacional. Esta competencia queda cubierta en el capítulo “Normativa y legislación”, detallando la normativa y la regulación de la informática relacionada en los ámbitos nacional, europeo e internacional y en el ámbito del propio trabajo de fin de grado. - TFG01: Ejercicio original a realizar individualmente y presentar y defender ante un tribunal universitario, consistente en un proyecto en el ámbito de la Ingeniería Informática de naturaleza profesional en el que sinteticen e integren las competencias adquiridas en las enseñanzas. Esta competencia será cubierta en el momento en que se haya realizado la presentación de este TFG ante los miembros del tribunal asignados al mismo. 16 d. Delitos relacionados con infracciones de la propiedad intelectual y derechos afines. Conviene destacar que en el “Convenio sobre la Ciberdelincuencia” se encomienda a cada parte que tome las medidas necesarias para tipificar como delito en su derecho interno de cada uno de los apartados descritos en cada categoría. En la Disposición 1441 del BOE núm. 226 de 2010, encontramos el Instrumento de Ratificación del “Convenio sobre la Ciberdelincuencia”, hecho en Budapest el 23 de Noviembre de 2001. 3.3 Normativa y legislación de la informática en el ámbito nacional. Ley Orgánica de Protección de datos de carácter personal: régimen sancionador aplicable (BOE nº 298 de 14/XII/99 que publicó la Ley Org. 15/1999 de Dic). Objeto: proteger y garantizar las libertades públicas y derechos fundamentales de las personas, especialmente su HONOR e INTIMIDAD personal y familiar. Aspectos de interés: serán responsables “los responsables de los ficheros o de los tratamientos” y “los encargados de los tratamientos”. Tipo de infracciones: - Leves (art. 44.2): multas de 100.000 a 10 millones de las antiguas pesetas. Ej: rectificar datos o no comunicarlos a la Agencia de Protección de Datos. - Graves (art. 43): multas de 10 a 50 millones de las antiguas pesetas. Ej: no mantener sistemas de seguridad, obstrucción a inspección, uso en provecho propio. - Muy graves (art. 45): multas de 50 a 100 millones de las antiguas pesetas (“Conductas reprochables”). Ej: vulnerar a propósito el secretismo, etc. Ley 7/1998 de 13 de abril que regula las condiciones generales de contratación. R. D. 1906/1999 de 17/XII que regula la contratación telefónica. R.D. Ley 14/1999 de 17/XII sobre Firma Electrónica (BOE Nº 224 de 18/XII). Firma electrónica: dispositivo electrónico que permite la identificación del signatario de las operaciones realizadas por internet. Identifica: el firmante (autentificación) y evita el retracto (no repudio). Código Penal 17 Ley Orgánica 10/1995 de 23/XI: Tipifica delitos y faltas por el uso de la informática, concretamente contra la Intimidad, Patrimonio, Socioeconómicos y Propiedad Intelectual. Título X: “Delitos contra la intimidad, derecho a la propia imagen y la inviolabilidad del domicilio”. - Apoderarse de papeles, e-mails, mensajes, otros. - Cracks: delitos. - Obtener datos de terceros. Recomendaciones de la APD a. Información de la recogida de datos - Cuando suministre datos personales a cualquier organización (proveedores de acceso, proveedores de contenido, vendedores a través de comercio electrónico, etc.) sea consciente de a quién se los facilita y con qué finalidad. - Procure averiguar la política de sus proveedores y administradores de listas y directorios en los que se refiere a venta, intercambio o alquiler de los datos que les suministra. Solicite que sus datos personales no vayan unidos a su identificación de acceso a internet. b. Finalidad para la que se recogen los datos - Desconfíe si los datos que le solicitan son excesivos para la finalidad con la que se recogen o innecesarios para el servicio que se le presta. - Tenga en cuenta que cuando introduce su dirección de correo electrónico en un directorio, lista de distribución o grupo de noticias, dicha dirección puede ser recogida por terceros para ser utilizada con una finalidad diferente, como por ejemplo remitirle publicidad no deseada. - Cuando navegue por internet, sea consciente de que los servidores web que visita pueden registrar tanto las páginas a las que accede como la frecuencia y los temas o materias por las que busca, aunque no le informen de ellos. Asimismo, su pertenencia a determinados grupos de noticias y listas de distribución puede contribuir a la elaboración de perfiles más o menos detallados sobre su persona. c. Seguridad en el intercambio de los datos - Utilice, siempre que sea posible, las últimas versiones de los programas navegadores, ya que cada vez suelen incorporar mejores medidas de seguridad. 18 Considere la posibilidad de activar en dichos programas las opciones que alerten sobre los intercambios de datos no deseados y no rellene aquellos datos que no desee hacer públicos (por ejemplo, dirección de correo electrónico, nombre, apellidos, etc.). - No realice transacciones comerciales electrónicas a través de proveedores con sistemas inseguros o no fiables. Consulte el manual de su navegador para averiguar cómo informa de que se ha establecido una conexión con un servidor seguro. - Recuerde que existen sistemas de dinero electrónico que preservan el anonimato de sus compras en internet. - Utilice los mecanismos de seguridad que tenga a su alcance para proteger sus datos de accesos no deseados. El medio más fiable para conseguirlo es el cifrado de los mismos. - Salvo que se utilicen mecanismos de integridad, autenticación y certificación (firma digital, notarios electrónicos, etc.) no confíe ciegamente en que la persona u organización que le remite un mensaje es quien dice ser y en que el contenido del mismo no se ha modificado, aunque esto sea así en la inmensa mayoría de las ocasiones. - Siempre que se le soliciten datos personales que no está obligado legalmente a suministrar, sopese los beneficios que va a recibir de la organización que los recoge frente a los posibles riesgos de utilización irregular de los mismos. - Ante cualquier duda sobre la legalidad de la utilización de sus datos de carácter personal, póngase en contacto con la Agencia de Protección de Datos. La protección jurídica de programas de ordenador. Piratería informática - El Real Decreto Legislativo 1/1996, por el que se aprueba el Texto Refundido sobre Propiedad Intelectual, la protección jurídica de los programas, antes regulada por la Ley de Protección Jurídica de Programas de Ordenador y por la Ley de Propiedad Intelectual, crea un marco jurídico en contra de la piratería informática. - El Texto Refundido desarrolla una serie de medidas para combatir la piratería informática, como la posibilidad de que los fabricantes de programas de ordenador soliciten a la justicia española la realización de un registro sorpresa en empresas en la que existen sospechas fundadas o evidencias de delito. España es uno de los países en los que se puede acudir a esta medida cautelar. De esta manera se erradica la posibilidad de que los presuntos infractores puedan destruir las pruebas existentes, lo cual, indudablemente ocurrirá si se les notifica por adelantado la realización de un registro. ¿En qué casos se infringe la Ley? 19 - Al copiar o distribuir un programa de ordenador o la documentación que se le acompaña, incluidas aplicaciones, datos, códigos y manuales, sin permiso expreso o licencia del propietario o licencia del propietario de los derechos de explotación. - Al utilizar un programa sin la correspondiente licencia o autorización del fabricante, con independencia de que se utilice en un solo ordenador o en varios de forma simultánea. - Al utilizar programas de ordenador en un número de copias superior al autorizado por el fabricante en sus contactos o licencias de uso. - En empresas y demás organizaciones, al fomentar, consciente o inconscientemente, permitir, obligar o presionar a los empleados a realizar o distribuir copias no autorizadas del programa. - Al efectuar copias no autorizadas porque alguien lo requiere u obliga a ello. Al ceder o prestar el programa de forma que pueda ser copiado o copiarlo mientras está en su posesión en calidad de cedido o prestado. - Al crear, importar, poseer o negociar con artículos destinados a burlar o neutralizar cualquier medio técnico aplicado para proteger el programa de ordenador. Medidas judiciales Si finalmente existe evidencia de delito, las medidas judiciales que pueden adoptarse son: - Solicitar al juez un registro sorpresa de las instalaciones del presunto infractor, tanto por la vía civil como por la penal. - Solicitar al juez la adopción urgente de medidas cautelares de protección. - Exigir indemnizaciones acordes con los daños materiales y morales causados. - El cierre dentro de la actividad del infractor. - El secuestro de todos aquellos medios destinados a suprimir los dispositivos técnicos que protegen un programa desarrollado y comercializado por un fabricante de programas. 3.4 Normativa y legislación de la informática en el ámbito nacional. Ley Orgánica de Protección de Datos. Este proyecto está amparado por la Ley Orgánica 15/1999 del 13 de diciembre de Protección de Datos (LOPD) citada y descrita en el apartado 3.3 de este capítulo. Ley de Propiedad Intelectual. El TFG, también está protegido por la Ley de Propiedad Intelectual (LPI). La propiedad intelectual está integrada por una serie de derechos de carácter personal y/o patrimonial que atribuyen al autor y a otros titulares la disposición y explotación de sus obras y prestaciones. 20 La ley que regula la propiedad intelectual es el texto Refundido de la Ley de Propiedad Intelectual, aprobado por Real Decreto Legislativo 1/1996, de 12 de abril. La propiedad intelectual protege las creaciones originales literarias, artísticas o científicas expresadas en cualquier medio, tales como libros, escritos, composiciones musicales, obras dramáticas, coreografías, obras audiovisuales, esculturas, obras pictóricas, planos, maquetas, mapas, fotografías, programas de ordenador y bases de datos. También protege las interpretaciones artísticas, los fonogramas, las grabaciones audiovisuales y las emisiones de radiodifusión. De esta, quedan excluidas las ideas, los procedimientos, métodos de operación o conceptos matemáticos en sí, aunque no la expresión de los mismos. También se excluyen las disposiciones legales o reglamentarias, sus correspondientes proyectos, las resoluciones de los órganos jurisdiccionales y los actos de los organismos públicos, así como las traducciones de dichos textos. Los derechos de propiedad intelectual otorgan además del reconocimiento a los creadores, la retribución económica que les corresponde por la realización de sus obras y prestaciones. Es también un incentivo a la creación y a la inversión en obras y prestaciones de la que se beneficia la sociedad en su conjunto. Las obras o prestaciones se protegen desde el momento de su creación, recibiendo los titulares la plena protección de la ley desde ese momento y sin que se exija el cumplimiento de ningún requisito formal. Las medidas tecnológicas de protección se pueden definir como los instrumentos que están destinados a impedir o restringir al usuario de obras o prestaciones protegidas que no cuente con la pertinente autorización, la reproducción, comunicación pública, etc. de ellas. Lo que no pueden impedir las medidas tecnológicas a los usuarios de los derechos de explotación es disfrutar de algunos de los límites impuestos a los derechos de explotación. Estos límites impuestos por razones de tipo social, cultural, de seguridad nacional, etc. permiten a los usuarios-beneficiarios que puedan utilizar en determinados casos los derechos de reproducir, comunicar, distribuir, etc. sin requerir la pertinente autorización a sus respectivos titulares. Toda vez que la aplicación de las medidas tecnológicas puede en la práctica desvirtuar alguno de los límites impuestos a los derechos de explotación de los titulares de derechos de propiedad intelectual, ha sido necesario establecer que estos últimos faciliten los medios para que los beneficiarios de esos límites disfruten de los mismos. Cuando los titulares no faciliten estos medios voluntariamente, los beneficiarios de esos límites podrán acudir a órganos jurisdiccionales a los fines de hacer efectivos el cumplimiento de dicha obligación. Ley de Cookies. 21 Por último hablaremos de una ley que también envuelve este trabajo, la ley de cookies. Las cookies están reguladas en la Directiva Europea 2009/136/CE del Parlamento Europeo y del Consejo de 25 de noviembre del 2009 llamada “Directiva de las Cookies” y el Reglamento (CE) nº 2006/2004. En España la transposición de la Directiva fue realizada el 30 de marzo de 2012 a través del Real Decreto-ley 13/2012, este modifica el artículo 22 de la ley 34/2002 de 11 de julio de servicios de la sociedad de la información y de comercio electrónico, en adelante LSSICE. La Agencia de Protección de datos realizó una muy buena guía sobre Ley de Cookies, aunque matizó lo siguiente: “Dadas las múltiples complejidades que plantea el uso de las cookies, las orientaciones recogidas en el documento conjunto no pretenden ofrecer una solución general y uniforme para el cumplimiento de la Ley sino servir de guía para que las entidades afectadas reflexionen y adopten decisiones sobre la solución más adecuada a sus intereses y modelo de negocio. La AEPD recomienda a las entidades implicadas en la utilización de cookies llevar a cabo una revisión de las que se utilizan, bien internamente, bien con el asesoramiento de asociaciones o entidades especializadas. Las entidades podrán conocer así qué cookies se utilizan y para qué finalidad, descartando así las innecesarias.” Alcance de la norma. De obligatorio cumplimiento desde el 1 de abril de 2012, la ley de Cookies determina su ámbito de aplicación por el capítulo II -artículos 2, 3, 4 y 5 de la LSICE – y donde obligan a todos los “prestadores de servicios de la sociedad de la información”. Es decir persona física o jurídica, que realiza actividades económicas por Internet u otros medios telemáticos siempre que la dirección y gestión de su negocio esté centralizada en España o posea una sucursal, oficina o cualquier otro tipo de establecimiento permanente situado en España. Una plataforma ejerce actividades económicas si genera de forma directa o indirecta algún beneficio económico para el titular, concretando un poco más, si se encuentra en alguna de las siguientes situaciones: 1. Web corporativa de una empresa. 2. Tienda ecommerce. 3. Autónomo con una web corporativa independientemente de si es usada como página informativa sobre sus negocios o como tienda online. 4. Blog particular si incluye publicidad. El apartado 22 de la LSSI establece: 22 “Los prestadores de servicios podrán utilizar dispositivos de almacenamiento y recuperación de datos en equipos terminales de los destinatarios, a condición de que los mismos hayan dado su consentimiento después de que se les haya facilitados información clara y completa sobre su utilización, en particular, sobre los fines de tratamiento de los datos, con arreglo a lo dispuesto en la Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal”. Por si acaso procediera la aclaración, se entiende por equipo terminal: teléfono móvil, tablet, ordenador personal… Nos referimos a la instalación de cookies o tecnologías similares utilizadas, tales como shared objetcs o flash cookies, quedando únicamente excluidas del cumplimiento: 1. La comunicación entre el equipo del usuario y la red. 2. Estrictamente prestar un servicio expresamente solicitado por el usuario en la que sea necesario el uso de dichos dispositivos de almacenamiento. Estas dos excepciones hacen referencia a las siguientes cookies: 1. Cookies de «entrada del usuario». 2. Cookies de autenticación o identificación de usuario (únicamente de sesión). 3. Cookies de seguridad del usuario. 4. Cookies de sesión de reproductor multimedia. 5. Cookies de sesión para equilibrar la carga. 6. Cookies de personalización de la interfaz de usuario. 7. Cookies de complemento (plug-in) para intercambiar contenidos sociales. Por último hay que indicar que una mismo cookie puede tener más de una finalidad, por lo que puede que en parte quede exceptuada del ámbito de aplicación, pero para otras finalidades no, quedando sujeto por tanto a dicho precepto. Qué es una Cookie. El término cookies es utilizado como nombre genérico para describir cualquier tipo de archivo o dispositivo que se descarga en el equipo terminal de un usuario con la finalidad de almacenar datos que podrán ser actualizados por la entidad responsable de su instalación. Con otras palabras una cookie es una pequeña pieza de información -textoque envía un servidor web para que sea almacenada por el programa de navegación utilizado en la memoria del ordenador, de tal manera que pueda ser leída a posteriori por ese servidor, de forma que le sea útil para recordar cualquier información específica. Gracias a las cookies existe el marketing online. Según quien sea la entidad que gestiona el equipo y trate los datos podemos distinguir los siguientes tipos de Cookies: 23 1. Cookies propias: Son aquellas que se envían al equipo terminal del usuario desde un equipo o dominio gestionado por el propio editor y desde el que se presta el servicio solicitado por el usuario. 2. Cookies de tercero: Son aquellas que se envían al equipo terminal del usuario desde un equipo o dominio que no es gestionado por el editor, sino por otra entidad que trata los datos obtenidos través de las cookies. Según el plazo de tiempo que permanecen activas: 1. Cookies de sesión: Son un tipo de cookies diseñadas para recabar y almacenar datos mientras el usuario accede a una página web. 2. Cookies persistentes: Son un tipo de cookies en el que los datos siguen almacenados en el terminal y pueden ser accedidos y tratados durante un periodo definido por el responsable de la cookie, y que puede ir de unos minutos a varios años. Según su finalidad: 1. Cookies técnicas: Permiten al usuario la navegación a través de una página o plataforma web y la utilización de las diferentes opciones o servicios que en ella existen como por ejemplo, identificar la sesión o acceder a partes de acceso restringido de datos. 2. Cookies de personalización: Aquellas que permiten al usuario acceder al servicio con algunas características en función de una serie de criterios, como puede ser el idioma predefinido en función del origen de la visita. 3. Cookies de análisis: Permiten al responsable de la misma, el seguimiento y análisis del comportamiento de los usuarios de los sitios web. Este tipo de cookies aunque no están exentas del deber de obtener un consentimiento informado para su uso, es poco probable que representen un riesgo para la privacidad de los usuarios, siempre que los datos sean usados con una finalizada estrictamente estadística. 4. Cookies publicitarias: Aquellas que permiten una gestión de los espacios publicitarios. 5. Cookies de publicidad comportamental: Permiten la gestión de los espacios s publicitarios que, en su caso, el editor haya incluido en una página web, aplicación o plataforma desde la que presta el servicio solicitado. Estas cookies almacenan información del comportamiento de los usuarios obtenida a través de la observación continuada de sus hábitos de navegación, lo que permite desarrollar un perfil específico para mostrar publicidad en función del mismo. Partes intervinientes Usuarios 24 Destinatario, persona física, que accede al servicio prestado por un editor pudiendo diferenciarse entre usuario registrado y no registrado. Editor Entidad prestadora de servicios de la sociedad de la información titular de una página web a los que pueda acceder un usuario y para cuya prestación se utilizan cookies. Anunciante Es la entidad cuyos productos, servicios o imagen se publicitan a través de los espacios publicitarios de los que disponen, en su caso, los editores en sus páginas. Frecuentemente, el editor también suele actuar como anunciante. Agencias de publicidad y agencias de medios Entidades que se encargan del diseño y ejecución de publicidad, así como de la creación, preparación o programación de las campañas publicitarias de los anunciantes, actuando en nombre y por cuenta de estos. Redes publicitarias Conjunto de entidades que, actuando en nombre y representación directa o indirectamente de uno o varios editores, ofrecen, también directamente a los anunciantes o, indirectamente a través de otros demandantes, como las Agencias de publicidad, la posibilidad de obtener espacios publicitarios o algún tipo de resultado concreto como clics, ventas o registros, a través de la gestión y tratamiento de los datos obtenidos de la utilización de las cookies descargadas o almacenadas en los equipos terminales de los usuarios, cuando estos acceden a los servicios prestados por el editor. Empresas de análisis y medición Son entidades que miden y/o analizan el comportamiento de la navegación de los usuarios en la página web de un editor, actuando en su nombre y representación, a través del análisis de los datos obtenidos con la utilización de las cookies con la finalidad de mejorar el servicio que presta el editor. Obligaciones de las partes En primer lugar debemos analizar las cookies que se estamos utilizando en nuestro portal para identificar sus características y si están dentro del ámbito de aplicación del artículo 22 de la LSSI. En este sentido podría valorarse si es necesaria la instalación de cookies persistentes puesto que los riesgos para la privacidad podrían reducirse mediante la utilización 25 de cookies de sesión, en cualquier caso deberá reducirse al mínimo necesario su duración temporal atendiendo a la finalidad de uso. Las obligaciones impuestas por la normativa son dos: 1. Deber de información. Que información debe facilitarse. Información clara y completa sobre la utilización de los dispositivos de almacenamiento y recuperación de datos y, en particular, sobre los fines del tratamiento de los datos, con arreglo a lo dispuesto en la Ley Orgánica 15/1999, de 13 de diciembre, de protección de datos de carácter personal. Esta información debe estar accesible de forma permanente a través de la página web. El usuario debe prestar su consentimiento y deberá ser informado claramente de: 1. Su finalidad. 2. Cómo revocar el consentimiento. 3. Forma de eliminar las cookies. 4. Cómo debe mostrarse esa información. Hay que tener en cuenta: 1. Tipo de usuario medio al que se dirige esa página web y adecuar el lenguaje y el contenido de los mensajes a su nivel técnico. 2. Diseño y mecánica de la página web. Facilitar la accesibilidad, ya sea a través del formato o del posicionamiento del enlace, y en la medida de lo posible a los usuarios toda la información sobre las cookies. Explicado esto se recomienda suministrar la información entre alguno de los siguientes sistemas: 1. Barra de encabezamiento o en el pie de página. 2. Junto con la política de privacidad, o en los términos y condiciones de uso del servicio al solicitar el alta en un servicio o realizar una descarga, pero siempre esta deberá ser destacada y separada del resto de la información sobre términos y condiciones de uso o política de privacidad. 3. Información por capas. Este sistema recomendado por la AEPD consiste en mostrar la información esencial en una primera capa, cuando se accede a la página en la que se ofrezca información adicional sobre las cookies. 1. En la primera capa se muestra la siguiente información: advertencia del uso de cookies no exceptuadas que se instalan al navegar por dicha página, 32 previamente se han registrado y han iniciado su sesión. Los administradores son usuarios identificados con una serie de privilegios definidos ante el sistema. Privilegios. En el portal Drupal todos los actores pueden acceder a ver el contenido del portal, salvo los comentarios (estos serán invisibles para los usuarios no identificados). Los usuarios no identificados tampoco podrán realizar votaciones sobre las películas. Los usuarios identificados (incluyendo a los administradores) podrán editar sus datos personales, realizar votaciones e interactuar con otros usuarios identificados a través del sistema de comentarios. El administrador, además, podrá gestionar tanto el contenido del portal como el de los demás usuarios. Por otro lado, esto funcionará del siguiente modo en el portal móvil. Los usuarios no identificados podrán acceder a todo el contenido. Los usuarios identificados por su parte verán reducido el precio de las películas ya que obtendrán un descuento por el mero hecho de estar registrados y correctamente autentificados. El motivo por el cual no se tienen los mismos privilegios y casos de uso en ambos portales es el grado de dificultad a la hora de implementar elementos elaborados (como el sistema de votación y comentarios). Mientras que en Drupal lo implementamos de un modo muy sencillo a través de módulos, en el portal móvil se convierte en una tarea mucho más laboriosa en comparación con el anterior. Esto es algo simbólico, no nos importa, ya que lo que se pretende conseguir es demostrar el empleo de conocimientos a la hora de establecer privilegios entre los distintos actores y personalizar su experiencia al navegar por un portal web. 5.2.2 Casos de uso del usuario no identificado En el portal móvil. 33 En el sistema Drupal. 5.2.3 Casos de uso del usuario identificado En el portal móvil. 34 En el sistema Drupal. El caso de uso ‘Cambiar datos personales’ incluye cancelar la cuenta de usuario. 5.2.4 Casos de uso del administrador En el portal móvil. 35 En el sistema Drupal. 36 5.3 Entidades Catálogo El catálogo es un contenedor de películas y está representado como una lista de elementos del tipo Catalog_Element. De este tipo de contenido solo se muestran los campos carátula, título y precio. Película Una película es un contenedor de los siguientes campos: carátula, título, año de estreno, país, duración, género, precio, votación, reparto, argumento, comentarios y director. Forma parte del catálogo y señala a un nodo que aloja datos del tipo Ficha_Director, diferentes películas pueden señalar al mismo director pero nunca una película puede señalar a más de un director. Director Un director es un contenedor que almacena información en los siguientes campos: foto del director, nombre, año de nacimiento, país de nacimiento, sobre él/ella y filmografía. Un director puede ser referenciado por varias películas. 37 6. DISEÑO 6.1 Introducción Para el diseño se ha elegido una arquitectura de tres capas, se trata de un estilo de programación cuyo objetivo primordial es la separación de la capa de presentación, la capa de negocio o lógica de aplicación y la capa de datos. La siguiente imagen ha sido modificada a partir de la fuente: http://arquitecturaencapas.blogspot.com.es/2011/08/arquitectura-3capas-programacion-por.html 6.2 Capa de presentación Se trata del conjunto de componentes software que implementan la interacción con los usuarios a través de una representación visual de la aplicación, proporcionando a los usuarios una forma de acceder y controlar los datos y los servicios de los objetos. A partir de la interfaz gráfica el usuario navegará por las distintas páginas del portal obteniendo la información que desee, o por el contrario aportando dicha información al sistema. A continuación se muestran los mockups más representativos del diseño de la interfaz gráfica: Portal orientado a dispositivos móviles: Página de inicio: 38 Menú: Cómo funciona: 39 Login: Catálogo, Ordenación, Filtro por género: 40 Ficha de película: Ficha de director: 41 Portal construido sobre Drupal 7: Página de inicio: Regístrate: 48 El sitio principal de desarrollo y coordinación de Drupal es drupal.org, en el que participan activamente varios miles de usuarios de todo el mundo. 7.2.2 Módulos utilizados. A continuación voy a presentar los módulos que he utilizado en el desarrollo del portal y a explicar su uso común y su uso en este contexto. Admin Menu: nos muestra una barra horizontal en la parte superior de la página que nos permite realizar las mismas tareas de administración y mantenimiento que el menú por defecto, pero de una forma más accesible y rápida. Backup & Migrate: nos permite, de una manera muy fácil, respaldar y descargar nuestra base de datos de un sitio creado con Drupal. Y por si fuera poco, también nos permite volver a restaurar nuestra copia de seguridad. Permite programar los respaldos, comprimir las copias, etc. Los archivos creados por este módulo, pueden ser importados tanto en el mismo sitio, como en cualquier otro sitio creado con Drupal, utilizando el mismo módulo y/o también por medio de phpmyadmin. He utilizado periódicamente este módulo con el fin de mantener a salvo mi sistema mediante el uso de copias de seguridad las cuales he ido almacenando en diversos sistemas de almacenamiento portátil. Chaos Tool Suite (CTools): se trata de un conjunto de herramientas y APIs destinadas a mejorar la experiencia del desarrollador. Es necesario para la instalación y uso de otros módulos utilizados en este proyecto, como por ejemplo el módulo Panels que veremos posteriormente. Devel: este módulo proporciona un amplio abanico de herramientas que facilitan la labor de programación y también utilidades de administración, como generar contenido aleatorio o reinstalar módulos. Solo he utilizado la herramienta Devel Generate, para la rápida creación de contenido, en este caso de películas (tipo de contenido Catalogo_Element) cuyos campos fueron, al crearse, rellenados con datos aleatorios. Los campos de texto se generan con el popular texto simulado “Lorem Ipsum dolor sit amet”. Con este módulo se creó primeramente el contenido. Después se editó para que los datos fuesen los deseados, es por ello que aparecen como creadores de contenido los demás actores además del administrador, pero realmente estos no pueden realizar los casos de uso propios de un administrador. 49 Entity Reference: necesita del módulo Entity para su instalación. Proporciona un tipo de campo que puede referenciar a entidades arbitrarias. Lo he utilizado para poder referenciar a un director en una ficha de película, de este modo veremos a través del campo ‘Director’ mostrado en la ficha de la película un enlace directo a la ficha del propio director. Fivestar: necesita del módulo Voting API para su instalación. Establece un sistema de votaciones con el clásico formato de 5 estrellas. Se muestra en la ficha de cada película donde el usuario identificado puede, gracias a la correcta configuración del módulo, hacer una única votación sobre cada película del catálogo. También está configurado para que los usuarios no identificados no puedan votar. Localization Update: descarga y actualiza las traducciones automáticamente. Mail System: proporciona una interfaz de usuario Administrativo y una API de Desarrolladores para actualizar de forma segura la variable de configuración mail_system. Gracias a este podemos efectuar de forma satisfactoria el caso de uso que permite a un usuario no identificado registrarse. Panels: es un "Contributed Module" que depende de otro "Contributed Module" denominado "CTools". La principal funcionalidad de Panels es permitir modificar la estructura u organización con que Drupal muestra los contenidos, e implementar otras disposiciones que se adapten mejor a los requerimientos de diseño de nuestro sitio web. El módulo nos ofrece varias plantillas básicas predefinidas, las cuales podremos editar, y configurar, indicando qué contenido queremos insertar en cada sección. También podemos diseñar nuestras propias plantillas. A través de este módulo he creado dos diseños personalizados, ‘Ficha Película’ y ‘Fichas Directores’, con la finalidad de crear dos plantillas que me permitan mostrar los contenidos de ‘Catalogo_Element’ y ‘Directores’ de una forma atractiva y personalizada. Services: es una solución estandarizada para la integración de aplicaciones externas con Drupal. Los servicios de devolución de llamada pueden ser utilizados por múltiples interfaces como REST, XMLRPC, JSON, JSON-RPC, de SOAP, AMF, etc. Por tanto, permite a Drupal proporcionar servicios web a través de múltiples interfaces usando el mismo código de retrollamada. A través de mi aplicación móvil externa hago uso de un servicio web RESTful para obtener datos de nodos, usuarios y vistas alojados en el sistema Drupal. Services Views: permite manejar vistas a través de servicios web. 50 Necesario para obtener el catálogo por el que navegarán los usuarios. Views: es el query builder de Drupal, es decir un constructor de consultas que permite mostrar vistas de datos previamente informados en la aplicación Drupal. A través de la interfaz de usuario de Views podemos seleccionar el origen de los datos, los campos a mostrar, las condiciones por las que filtrar, ordenación, paginación, encabezado, pie de página y algunas opciones avanzadas. En resumen, es la alternativa a escribir consultas manualmente en SQL e incluirlas en código PHP. A través de este configuramos y mostramos a los usuarios el catálogo de películas de nuestro portal mostrando tan solo los campos de la carátula, título de la película y precio de la misma. Este catálogo está páginado cada 10 elementos, con posibilidad de filtrar por género y de ordenar alfabéticamente, por popularidad o por fecha de creación del contenido. Voting API: como hemos dicho antes, este módulo es necesario para la instalación y configuración del módulo Fivestar. 7.2.3 Theme Drupal trae por defecto instalado y activado el tema Bartik, este lo he desactivado debido a que no cumplía con los requisitos de diseño de este portal y en su lugar he instalado y activado el tema Marinelli. El tema ha sido configurado para que en el banner no aparezcan las imágenes que trae por defecto sino otras imágenes más acordes con el proyecto, también he omitido la aparición del logo de Drupal. Predominan los colores azul y blanco. Por un lado, el color azul transmite confianza y profesionalidad. El blanco transmite al usuario perfección, simplicidad y buenas intenciones. 7.2.4 Implementación del portal Drupal Una vez creada la base de datos e instalado este gestor de contenido, se ha procedido a la instalación de los módulos necesarios para el desarrollo. Con todas las herramientas instaladas y bien configuradas llega el momento de crear los tipos de contenido. En este proyecto destacan dos: Catalogo_Element: este representa a cada una de las películas del sistema. Está compuesto por los campos: “Carátula”, “Nombre Película”, “Precio”, “Género”, “País”, “Votación”, “Duración”, “Reparto”, “Argumento”, “Director” y “Año de estreno”. Cabe destacar que el campo “Votación” es del tipo Fivestar Rating, y ha sido configurado para una concreta utilización por parte de los usuarios a la hora de calificar el film. El campo “Género”, por otra parte, apunta a una taxonomía creada previamente, hablaremos 51 de ellas más adelante. Por último, el campo “Director” es de tipo Entity Reference, está configurado para que el nombre del director que nos muestra sea un enlace a contenido del tipo Ficha_Director que veremos a continuación. También lo utilizaremos para crear la vista “Catálogo”, el elemento más importante en lo referente a esta parte del proyecto de cara al usuario. Lo veremos más adelante. Ficha_Director: a través de este tipo de contenido podremos crear la ficha personal de cada uno de los directores registrados en el portal web. Está compuesto por los siguientes campos: “Ficha Director”, “Foto”, “País de nacimiento”, “Año de nacimiento”, “Sobre él/ella” y “Filmografía”. Los usuarios, no administradores, solo podrán acceder al contenido creado sobre este tipo a través de la ficha de alguna de las películas registradas asociadas a dicho director. Además, con el módulo Panels se han elaborado dos diseños personalizados, Ficha Película asociado al tipo de contenido Catalogo_Element y Fichas Directores asociado a Ficha_Director, con el objetivo de mejorar el estilo de la interfaz de cara a los actores y facilitar la labor del administrador a la hora de gestionar el contenido del portal. Se trata de plantillas personalizadas y de fácil manejo para la disposición de los campos de un tipo de contenido. La taxonomía se utiliza para la clasificación del contenido ingresado en el sistema, se ha creado un vocabulario llamado “género” para clasificar el contenido de tipo Catalogo_Element, es decir clasificar las películas según su género. A través del módulo Views se ha creado una vista llamada “Catálogo”. Una vista permite elegir el tipo de datos que queremos mostrar, los campos, filtros, orden, paginación, etc. y mostrarlos como páginas o como módulos. En esta vista se muestra un listado con el nombre de todas las películas registradas en el sistema, acompañadas por la imagen de su carátula y su precio. Se han establecido criterios de ordenación por creación de contenido, título del film y puntuación; filtros por género y paginación cada 10 elementos. 7.3 WEB SERVICES 7.3.1 ¿Qué son los web services? Uno de los puntos más fuertes de este trabajo son los servicios web. Cuando hablamos de estos nos referimos a una tecnología que hace uso de diversos protocolos y estándares que sirven para intercambiar datos entre aplicaciones, en este proyecto servirá para comunicar el portal construido en Drupal con su versión orientada a dispositivos móviles. Distintas aplicaciones de software desarrolladas en lenguajes de programación diferentes, y ejecutadas sobre cualquier plataforma, pueden utilizar los servicios web para intercambiar datos en redes de ordenadores como Internet. La interoperabilidad se consigue mediante la adopción de 52 estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la arquitectura y reglamentación de los servicios Web. Para mejorar la interoperabilidad entre distintas implementaciones de servicios Web se ha creado el organismo WS-I, encargado de desarrollar diversos perfiles para definir de manera más exhaustiva estos estándares. Es una máquina que atiende las peticiones de los clientes web y les envía los recursos solicitados. Veamos ahora algunas de las ventajas que obtenemos al trabajar con esta tecnología: - Aportan interoperabilidad entre aplicaciones de software independientemente de sus propiedades o de las plataformas sobre las que se instalen. - Los servicios Web fomentan los estándares y protocolos basados en texto, que hacen más fácil acceder a su contenido y entender su funcionamiento. - Permiten que servicios y software de diferentes compañías ubicadas en diferentes lugares geográficos puedan ser combinados fácilmente para proveer servicios integrados. Por otro lado, entre sus inconvenientes podemos encontrar los siguientes: - Para realizar transacciones no pueden compararse en su grado de desarrollo con los estándares abiertos de computación distribuida como CORBA (Common Object Request Broker Architecture). - Su rendimiento es bajo si se compara con otros modelos de computación distribuida, tales como RMI (Remote Method Invocation), CORBA o DCOM (Distributed Component Object Model). Es uno de los inconvenientes derivados de adoptar un formato basado en texto. Y es que entre los objetivos de XML no se encuentra la concisión ni la eficacia de procesamiento. - Al apoyarse en HTTP, pueden esquivar medidas de seguridad basadas en firewall cuyas reglas tratan de bloquear o auditar la comunicación entre programas a ambos lados de la barrera. 7.3.2 ¿SOAP o REST? En el momento de comenzar a desarrollar la comunicación surgió un conflicto sobre cuál sería la arquitectura más apropiada para trabajar sobre este sistema y que uso se le quería dar. Había llegado la hora de valorar cuál de ellas se adaptaría mejor al entorno de nuestra aplicación: SOAP o REST. SOAP (Simple Object Access Protocol) es un protocolo estándar que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambios de datos XML, el punto identificativo de SOAP es que las operaciones son definidas como puertos WSDL (Web Services Description Language). Es por esto que será aconsejable utilizar este protocolo en 53 entornos donde se establecerá un contrato formal y donde se describirán todas las funciones de la interfaz así como el tipo de datos utilizados tanto de entrada como de salida. El lenguaje WSDL nos permitirá definir claramente cualquier detalle de las funciones de nuestro WS. REST (Representational State Transfer) es un estilo de arquitectura de software para sistemas distribuidos tales como la web, a diferencia de SOAP, se centra en el uso de los estándares HTTP y XML para la transmisión de datos sin la necesidad de contar con una capa adicional. Las operaciones (o funciones) se solicitarán mediante GET, POST, PUT y DELETE, por lo que no requiere de implementaciones especiales para consumir estos servicios. Además se podrá utilizar JSON en vez de XML como contenedor de la información, por lo que será aconsejable utilizar este protocolo cuando busquemos mejorar el rendimiento, o cuando disponemos de escasos recursos, como sería el caso de los dispositivos móviles. En pocas palabras, cuando se quiere implementar una interfaz de programación de aplicaciones (API) compleja suele ser mucho más útil hacer uso de los servicios SOAP. Pero cuando se trata de algo con una menor curva de aprendizaje, del que rápidamente se obtienen resultados ligeros y transacciones sencillas (mediante operaciones CRUD), tal y como ocurre en este caso, es preferible utilizar servicios REST. 7.3.3 REST en este trabajo Mediante el uso de web services RESTful se establecerá la comunicación entre el portal Drupal y el portal orientado a dispositivos móviles, en este trabajo solo hemos precisado de peticiones GET y POST. Estas solicitudes las realizamos haciendo uso de cURL, se trata de una herramienta software para usar en un intérprete de comandos para transferir archivos con sintaxis URL Peticiones GET: las peticiones GET se utilizan para la lectura de registros. A través de ellas obtendremos la vista Catálogo de Drupal y la mostramos en el portal móvil. A través de solicitudes GET también ordenamos y filtramos dicha vista. También obtenemos los nodos que contienen las fichas de las películas y las fichas de directores. Configurando el módulo Services y la petición se reciben los datos en formato JSON, entonces se analizan y obtienen los campos requeridos para así poder reconstruir cada página. La estructura de las peticiones GET la vemos mediante el siguiente ejemplo: $url = 'http://localhost/drupal/rest/views/catalogo?genero=All&' . $ordenacion_valor; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $json = curl_exec($ch); curl_close($ch); $resultado=json_decode($json,true); 54 Peticiones POST: las peticiones POST se utilizan para la creación de recursos. Mediante estas tratamos los datos enviados desde el formulario de autenticación de usuarios del portal orientado a dispositivos móviles para poder realizar el login. La estructura de las peticiones POST la vemos mediante el siguiente ejemplo: $service_url = 'http://localhost/drupal/rest/user/login'; $post_data = array( 'username' => $_POST['username'], 'password' => $_POST['password'] ); $post_data = http_build_query($post_data, '', '&'); // configuramos la solicitud $curl = curl_init($service_url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); // hace la solicitud curl_setopt($curl, CURLOPT_VERBOSE, true); $response = curl_exec($curl); curl_close($curl); JSON: JSON es un formato de intercambio de datos que puede ser leído por cualquier lenguaje de programación. Las respuestas que obtenemos al realizar peticiones a Drupal las hemos configurado para que tengan este formato, la respuesta la convertimos en un array y de este modo trabajamos con los datos recuperados. Utilizando var_dump mostramos el resultado, con json_decode lo convertimos a json y con el atributo true a array asociativo: var_dump(json_decode($json,true)); 55 A continuación, se muestra la respuesta obtenida al realizar una petición GET para obtener los datos del catálogo: 7.4 PORTAL MÓVIL 7.4.1 Introducción En esta parte del capítulo se hará referencia a las tecnologías web utilizadas para el desarrollo del portal orientado a dispositivos móviles y se resaltarán los aspectos más interesantes de la implementación. Antes de continuar, quiero nombrar las tecnologías web que, junto al framework jQuery Mobile, se han utilizado para poder implementar esta parte de un modo eficiente, son las siguientes: HTML5, CSS3, PHP, JavaScript, jQuery y AJAX. 7.4.2 Acerca de jQuery Mobile jQuery Mobile es un framework desarrollado por jQuery que combina HTML5 y jQuery para la creación de portales web móviles. Nos permite generar aplicaciones cuya apariencia será siempre la misma, independientemente del dispositivo desde el que acceda un usuario siempre que este usuario acceda desde un dispositivo que acepte HTML5. Este framework nos provee de ciertas herramientas que nos hacen la tarea de crear una página mucho más sencilla. Con unas pocas asignaciones de atributos HTML es posible generar atractivas interfaces de fácil uso y acceso. 7.4.3 Ficheros de implementación. 56 index.php: es el primer archivo, nos muestra la primera interfaz que permitirá al usuario una cómoda navegación por el portal web. home.php: archivo al que se redirigirá al usuario cuando quiera situarse en el inicio, es de fácil acceso a través de la barra de navegación superior, para que el usuario no se sienta perdido ni desorientado. catalogo.php: seguramente el archivo más interesante del portal de cara al usuario. A través de una petición GET muestra al usuario una vista que contiene la lista de las películas disponibles en nuestro sistema y el precio correspondiente a cada una de ellas. catalogo_id.php: cumple la misma función que el fichero anterior, la diferencia está en que este se muestra a los usuarios identificados mostrando un descuento del 25% en el precio de cada película. como_funciona.php: muestra una sencilla lista con los cuatro pasos básicos que permitirán al usuario conocer fácilmente como navegar y utilizar el portal móvil. login_movil.php: desde este área el usuario rellena un sencillo formulario para autentificarse (nombre de usuario y contraseña). Este formulario se envía al fichero login.php. login.php: se recogen los datos del formulario alojado en login_movil.php y se hace una petición POST a Drupal, con lo obtenido de esta se crea una cookie de sesión. authenticated_request.php: a través de la url y la cookie de sesión hace una petición para mantener la sesión sin tener que volver a hacer el login. No ha sido finalmente utilizado en este prototipo funcional, pues manejamos la demostración de log in y la diferente experiencia de navegación de los usuarios por el portal de diferente manera, se dejará para ser utilizado en líneas futuras de este trabajo. logout.php: realiza una petición POST a través del servicio web para cerrar la sesión del usuario identificado. recibe-pelicula.php, recibe-directores.php, recibe-parametros.php: son archivos con sentencias condicionales para identificar y mostrar el contenido deseado, la función que desempeñan es la de no ensuciar los ficheros en los que están incluidos, los cuáles serán llamados por funciones que hacen uso de jQuery y AJAX. menu_desplegable.php: en este se encuentra implementado el menú desplegable, accesible desde cualquier pantalla del portal móvil a través del botón izquierdo del encabezamiento. menu_desplegable_id.php: cumple la misma función que el anterior, la diferencia es que esté aparece cuando el usuario se ha identificado y se mantiene hasta que cierra su 57 sesión. En vez de aparecer en la zona de acceso del menú desplegable el enlace Iniciar sesión aparecerá Cerrar_sesión. ordenación.php: una vez obtenido del menú el tipo de ordenación del catálogo deseado, hace una petición GET para obtener la vista adecuada. genero.php: una vez obtenido del menú el filtro por género deseado, hace una petición GET para obtener la vista deseada. ficha_pelicula.php: elegida una película del catálogo, a través de una petición GET obtiene la ficha de la película indicada. ficha_director.php: al acceder a una ficha de película, el campo director contiene un enlace que al clicar en él ejecutará este archivo realizando una petición GET y obteniendo la información sobre el director de cine de la misma. 7.4.4 Aspectos software destacados. La barra de navegación inferior que se mantiene en todas las pantallas de este portal, compuesto por tres botones (Home, Catálogo, Cómo funciona) que dan acceso rápido a los usuarios a las áreas más destacadas del mismo. El atributo <div data-role=”navbar”> de jQuery Mobile nos permite implementar esta atractiva barra de navegación de forma sencilla, igual que si implementásemos una lista. Un encabezado, también constante en las diferentes pantallas del portal, con el nombre de la página y dos botones (Menú y Buscar). De estos botones solo se ha implementado para este trabajo el correspondiente al menú desplegable, de este hablaremos a continuación. El atributo <div data-role=”header”> de jQuery Mobile nos proporciona este atractivo recurso software. El menú desplegable, tercer y último elemento que permanece en cada una de las pantallas de esta parte, se despliega cuando se pulsa sobre el botón situado a la izquierda del encabezado. Mediante este, los usuarios pueden autentificarse, ordenar, obteniendo un listado ordenado del catálogo en tres formas: alfabética, más populares, más recientes. También permite realizar acciones de filtrado a través del género. 64 Opera Mobile 65 8.2 Validación de la seguridad en el acceso a la zona de administración Para acceder a la zona de administración de la aplicación web el usuario deberá identificarse como tal, veremos el caso de ambos portales: Drupal: el usuario deberá identificarse rellenando el formulario de autenticación situado en un bloque al lado derecho del portal. Entonces accederá al portal con todos los permisos asignados a este rol privilegiado. Para cerrar la sesión tan solo deberá acceder al enlace Log out. Móvil: el usuario, desde cualquier parte del portal, deberá abrir el menú desplegable, situado en la esquina superior izquierda de la página, y dirigirse al área de acceso Iniciar sesión. Aquí deberá rellenar los campos de un sencillo formulario, si son correctos tendrá acceso privilegiado al portal (siendo estos privilegios para este caso los mismos que los de cualquier otro usuario identificado). Los datos son enviados y tratados en el archivo login.php, siempre que sean correctos redireccionará al usuario a la página home.php (en caso contrario saldrá un aviso de error en alguno de los campos). Para cerrar la sesión deberá desplegar nuevamente el menú, entonces verá que en vez de Iniciar sesión pone Cerrar sesión, al acceder a este el usuario volverá a adoptar una experiencia de usuario no identificado, en lo que a la navegación del sitio web se refiere. 66 8.3 Validación de enlaces rotos. Por suerte no son muchos los ficheros que están interrelacionados en este proyecto, es por ello que ha sido fácil comprobar manualmente que no existen enlaces rotos en este TFG. Esto se ha realizado limpiando el código y accediendo desde cada uno de los ficheros a todos sus posibles enlaces y comprobando el correcto acceso a cada uno de ellos. Ha hecho falta utilizar la propiedad de jQuery Mobile data-ajax=false en los enlaces para poder realizar de forma adecuada transiciones entre las páginas. También anular a través de javascript algunos enlaces para que, sin perder el estilo, al clicar sobre ellos no ejecutarán ese enlace y si la función jQuery – AJAX asociada a una de sus clases. 67 9. CONCLUSIÓN 9.1 Conclusión del trabajo realizado. La realización de este trabajo de fin de grado me ha permitido comprobar la gran utilidad que suponen los conocimientos adquiridos durante la carrera en asignaturas como Multimedia, Diseño de Interfaces Humanas, Diseño de Aplicaciones Web I y Diseño de Aplicaciones Web 2. Este trabajo me ha hecho aprender y mejorar en la utilización de tecnologías y del entorno web. Además, considero haber adquirido una visión profesional del programador web, en un principio he tenido que interactuar con el cliente que sugirió desarrollar el producto y he trabajado bajo presión para poder cumplir ciertos plazos de entrega. En el siguiente punto de este capítulo trataré algunas líneas de desarrollo futuro sobre la aplicación. Al tratarse de un prototipo, la funcionalidad de la aplicación no es del todo completa, se ha desarrollado en función de las exigencias que se deben cumplir en un trabajo de fin de grado. El trabajo se ha realizado satisfactoriamente bajo mi punto de vista ya que las funciones descritas en la especificación de requisitos han sido implementadas. 9.2 Líneas futuras. Este trabajo desarrolla un prototipo funcional centrándonos en cumplir y aplicar satisfactoriamente una serie de condiciones y conocimientos. Pero la cosa no acaba aquí, se seguirá trabajando para hacer de él un producto completo, ágil y ligero. Algunas de las ideas a desarrollar próximamente son las siguientes: - Se implementará el conocido como scroll-infinito, como paginación para cargar dinámicamente a través de AJAX contenido en el portal sin tener que cargar otra página. El usuario navegará por el catálogo y al llegar al final de este se recogerá el evento que estará asociado a una función que se encargará de traer el siguiente paquete de datos y concatenarlo al final de la lista. Esto se repetirá hasta acabar de traer datos o se reiniciará al cambiar de página. - Se mejorará el estilo del portal móvil. - Se unificarán los privilegios de los actores en ambos portales. - El usuario registrado podrá comprar las películas a través de cuenta bancaria o Paypal pudiendo reproducir las mismas en dispositivos móviles via streaming, previa contratación de este servicio. - Se implementará un sistema monedero para que el usuario, si lo desease, pudiese tener un saldo en el sistema sin tener que estar utilizando sus datos bancarios en la compra de cada película. 68 - Implementación del botón de búsqueda situado a la derecha de la barra de navegación superior para así poder buscar películas por palabras clave. 69 10. MANUAL DE USUARIO Y SOFTWARE. A continuación, se mostrará un sencillo manual que a través de capturas de pantalla irá mostrando al usuario la funcionalidad de ambos sistemas y la comunicación a través del web service. 10.1 INSTALACIÓN Y CONFIGURACIÓN Para aprovechar toda la funcionalidad que proporciona este trabajo debemos configurar correctamente los elementos software sobre el único hardware realmente necesario para el desarrollo de este prototipo, un ordenador portátil (pudiendo servirse el usuario del mismo modo de un PC de escritorio). XAMPP: lo primero que debemos hacer es instalar el servidor local XAMPP, para ello se debe acceder a la web ‘http://www.apachefriends.org/es/xampp.html’ y descargar el archivo compatible con nuestro sistema operativo que lo contenga. Una vez descargado, se debe ejecutar el instalador y seguir las instrucciones de instalación, de este modo tendremos XAMPP listo para usar. Una vez instalado XAMPP, debemos abrir el panel de control de dicho software y activar los dos únicos servicios que necesitaremos utilizar en este proyecto, Apache y MySQL. Para ello debemos hacer click sobre el botón ‘Start’ de la columna ‘Actions’ en la fila correspondiente a ambos servicios. Si se han iniciado correctamente aparecerá el nombre de estos sobre un fondo verde y los puertos, e identificadores de los mismos, en los que se ejecutan. En la siguiente imagen veremos cómo queda el panel de control. 70 Tras ejecutar estos pasos, colocaremos el director ‘proyecto’, el cual contiene todos los ficheros de implementación del portal móvil, en el directorio ‘htdocs’ de la carpeta xampp, este es el directorio donde se deben alojar las diferentes aplicaciones webs. En este punto ya tenemos instalado XAMPP y el portal móvil listo para utilizar. Las pautas de uso de este portal las veremos más adelantes tras instalar Drupal 7 en nuestro PC. DRUPAL 7 Primera parte – Importar la base de datos (archivo .sql) Para que el usuario pueda instalar el portal Drupal que hemos diseñado e implementado en su portal, debe importar el archivo .sql que contendrá la base de datos con todas las tablas del mismo. Para realizar este paso correctamente deberá acceder a la herramienta phpmyadmin, esto se puede hacer escribiendo en la barra de direcciones del navegador localhost/phpmyamdin, una vez dentro darle a importar y seleccionar dicho archivo. Por defecto, phpmyadmin, admite realizar importaciones de archivos ligeros, que pesen muy poco. Por ello, es probable que el usuario deba acceder al archivo php.ini situado en xampp/php y editar los siguientes parámetros dándoles una mayor capacidad: upload_max_filesize (por defecto soporta solo 2M), memory_limit (por defecto soporta 16M) y post_max_size (por defecto soporta 8M). 71 Segunda parte – Carpeta contenedora de todos los archivos de implementación del portal Drupal. La carpeta contenedora de todos estos archivos debe ser también alojada en el directorio dedicado htdocs del servidor XAMPP. Una vez importada la base de datos y bien situada la carpeta de drupal el usuario puede acceder y navegar por el portal. Sin necesidad de identificarse, el usuario puede navegar por el portal pero no podrá votar y contribuir al sistema de puntuación de cada película, ni tendrá permisos de escritura o respuesta de comentarios. Veremos una imagen de una ficha de película desde la visión que el portal ofrece a cada uno de los actores para hacernos una idea de las diferencias, en el caso del usuario no identificado: 72 El usuario que se identifica y accede al portal, sin ser administrador, navega del mismo modo que el usuario no identificado. La diferencia es que este puede cerrar su sesión, cambiar sus datos personales, votar e interactuar con otros usuarios a través de comentarios en las fichas de las películas. Para que el usuario pueda experimentarlo a través de este proyecto se podrá identificar del siguiente modo: nombre de usuario: user1 o user2 y clave de acceso: user1 o user2. A continuación, vemos la imagen correspondiente al usuario identificado, en ella se ve que user1 ha comentado y respondido a un comentario del administrador: 73 En caso de querer navegar como usuario administrador deberá autentificarse con nombre de usuario: admin y clave de acceso: admin. De esta manera podrá, además de navegar del mismo modo que un usuario identificado, gestionar a los usuarios y el contenido del portal a través de un menú inexistente para el resto de roles en este proyecto. Lo vemos en la siguiente imagen: