UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA TECNOLOGÍA ESPECÍFICA DE INGENIERÍA DEL SOFTWARE

Tamaño: px
Comenzar la demostración a partir de la página:

Download "UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA TECNOLOGÍA ESPECÍFICA DE INGENIERÍA DEL SOFTWARE"

Transcripción

1 UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA TECNOLOGÍA ESPECÍFICA DE INGENIERÍA DEL SOFTWARE TRABAJO FIN DE GRADO Ciencéame Autor: Juan José Rivera Castaño Septiembre, 2014

2 .

3 . UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE INFORMÁTICA DEPARTAMENTO DE TECNOLOGÍAS Y SISTEMAS DE INFORMACIÓN TECNOLOGÍA ESPECÍFICA DE INGENIERÍA DEL SOFTWARE TRABAJO FIN DE GRADO Ciencéame Autor: Juan José Rivera Castaño Director: Dra. Marta Gil Barba Director: Dr. Ignacio García Rodríguez de Guzmán Septiembre, 2014

4 .

5 . TRIBUNAL: Presidente: Vocal: Secretario: FECHA DE DEFENSA: CALIFICACIÓN: PRESIDENTE VOCAL SECRETARIO Fdo.: Fdo.: Fdo.:

6 .

7 RESUMEN En la actualidad las redes sociales son el medio de comunicación más utilizado dentro del mundo que rodea a Internet, ya que aporta a la sociedad un canal de interacción amplio y fluido, el cual se construye a través de un intercambio de información entre grupos de personas, instituciones, entidades y organizaciones. La importancia de la comunicación en la red ha sido tal, que la industria del software ha realizado grandes esfuerzos para pasar de sitios webs como los blogs donde se ofrecía una comunicación mínima entre usuarios, al concepto de red social que se conoce hoy en día. Por otro lado, las empresas cada vez utilizan más este medio para la comunicación y estrategias de marketing, ampliando de forma cuantiosa sus posibilidades de crecer. Dicho medio proporciona una forma más sencilla de atraer a un público objetivo que puede estar interesado en los productos ofrecidos. Las redes sociales de índole científico se utilizan cada vez más como criterio de evaluación de los profesionales dedicados a la ciencia, no ofreciendo las mismas oportunidades de posicionamiento a todos los usuarios que las integran. En el presente Trabajo Fin de Grado se muestra el desarrollo de la aplicación Ciencéame, una red social enfocada a la difusión y discusión de temas científicos de forma multidisciplinar. Como objetivo principal, se permite a los usuarios votar y debatir sobre los distintos artículos científicos, creando una dinámica con la que se establece un ranking con los trabajos más interesantes en las diferentes áreas, empleando técnicas de ingeniería y métodos contrastados en la industria del software. Con esta nueva red social se persigue establecer un nuevo criterio a la hora de gestionar el posicionamiento de las publicaciones científicas existentes en Internet, ofreciendo la posibilidad a todos los usuarios de darse a conocer mediante sus conocimientos y estudios.

8 .

9 ABSTRACT Nowadays, social networks are the most useful media on the Internet because it supports a channel of wide and flow interaction. This one is built through an exchange of information among groups of people, institutions, entities and organisations. The importance of communication in the network has been so crucial that the software industry has made big efforts to change from websites such as blogs where they offered minimum communication among users to the social network concept that it is known nowadays. On the other hand, companies use this type of communication and marketing strategies more and more to highly increase their possibilities of expanding. This type provides an easier way to attract an objective audience that could be interested in offered products. Scientific social networks are used more and more as an evaluation criteria of professionals dedicated to science but they do not offer the same positioning opportunities to all members. This Trabajo Fin de Grado is about the development of the application Ciencéame, a social network that focuses on spreading and discussing scientific topics in a multidisciplinary way. The main aim is letting the users vote and discuss about different scientific articles. They create a dynamic to establish a ranking of the most interesting projects in different areas using engineering techniques and contrasting methods in the software industry. The goal of this new social network is establishing a new criteria to manage the positioning of scientific publication on the Internet. It also offers the possibility to all users of becoming known through their knowledge and researches.

10 .

11 DEDICATORIA A mis padres y hermanas, por su apoyo durante todos estos años. AGRADECIMIENTOS A Diego, por su paciencia y dedicación. A Nacho, por su ayuda incondicional.

12 .

13 Índice 1. Capítulo 1. INTRODUCCIÓN Introducción al tema Estructura del documento Capítulo 2. OBJETIVOS DEL TFG Objetivo principal Objetivos parciales Objetivos didácticos Medios empleados Capítulo 3. ANTECEDENTES, ESTADO DE LA CUESTIÓN Evolución de las redes sociales Redes sociales de ámbito científico Ruby on Rails Fundamentos y característias Arquitectura de una aplicación desarrollada en Ruby on Rails Capítulo 4. MÉTODO DE TRABAJO Proceso Unifiado de Desarrollo (PUD) Introducción Características del PUD I

14 Fases del PUD Artefactos involucrados Evolución del proyecto Iteración 0. Preparación del proyecto Iteración 1. Sistema de gestión de bases de datos Iteración 2. Gestión de usuarios Iteración 3. Gestión de publicaciones Iteración 4. Internalización de la aplicación Iteración 5. Gestión de categorías e intereses Iteración 6. Gestión de mensajes privados Iteración 7. Gestión de conversaciones y comentarios Iteración 8. Gestión del sistema de votación Iteración 9. Gestión del sistema de visitas Iteración 10. Administración de la aplicación Iteración 11. Creación del algoritmo de gestión de puntos Iteración 12. Gestión de la seguridad de la aplicación Iteración 13. Marketing online y posicionamiento SEO Iteración 14. Paginación de elementos Capítulo 5. RESULTADOS Iteración 0. Preparación del proyecto II

15 Entrevista con los clientes Captación de Requisitos Diagrama de Casos de Uso Plan de Proyecto Iteración 1. Sistema de gestión de bases de datos Iteración 2. Gestión de usuarios Sesiones y cookies Usuarios existentes en el sistema Interfaz gráfica sistema de registro Inicio de sesión Gestión de la foto de perfil de cada usuario Búsqueda de usuarios Diagrama de Clases Diagrama de Secuencia Iteración 3. Gestión de publicaciones Categorización de publicaciones Gestión de artículos Búsqueda de publicaciones Personalización de publicaciones Diagrama de Clases III

16 Diagrama de Secuencia Iteración 4. Internacionalización de la aplicación Diagrama de Secuencia Iteración 5. Gestión de categorías e intereses Actualización de categorías mediante rake Gema acts-as-taggable-on Interfaz para la selección de catagorías e intereses Diagrama de Clases Diagrama de Secuencia Iteración 6. Gestión de mensajes privados Diagrama de Clases Diagrama de Secuencia Iteración 7. Gestión de conversaciones y comentarios Diagrama de Clases Diagrama de Secuencia Iteración 8. Gestión del sistema de votación Diagrama de Clases Diagrama de Secuencia Iteración 9. Creación del sistema de visitas Diagrama de Secuencia IV

17 5.11. Iteración 10. Administración de la aplicación Diagrama de Clases Diagrama de Secuencia Iteración 11. Creación del algoritmo de gestión de puntos Diagrama de Clases Iteración 12. Gestión de la seguridad de la aplicación Confirmación de correo electrónico Rack-attack Cifrado de contraseñas Iteración 13. Marketing y posicionamiento SEO Meta tags Tasa de rebote Referral Traffic en Google Analytics Invitación a amigos Gestión de redes sociales Iteración 14. Paginación de elementos Paginación Paginación utilizando Javascript Estructura del directorio app Diagrama de Clases completo V

18 6. Capítulo 6. CONCLUSIONES Y PROPUESTAS Estadísticas Conclusiones Objetivo principal Objetivos parciales Objetivos didácticos Propuestas futuras Capítulo 7. BIBLIOGRAFÍA ANEXOS ANEXO I. Especificación de Requisitos ANEXO II. Diagrama de Casos de Uso ANEXO III. Priorización de Casos de Uso ANEXO IV. Manual de usuario Registro y acceso a la aplicación Página principal de la aplicación Perfil personalizado de cada usuario Mensajes privados Configuración del perfil Comentar publicaciones ANEXO V. Manual de Instalación en GNU/Linux VI

19 Instalación de PostgreSQL Instalación de Ruby on Rails Ejecución de rakes ANEXO VI. Gemas utilizadas en el desarrollo del TFG VII

20 . VIII

21 Índice de figuras 1. Diagrama de la principal idea que integra la creación de Ciencéame Inspector integrado en el navegador Firefox Herramienta para la gestión de la red integrada en el navegador Firefox Herramienta para la visualización en 3 dimensiones integrada en el navegador Firefox Herramienta para visualizaciones adaptables integrada en el navegador Firefox Consola integrada en la aplicación Rails Porcentaje de usuarios registrados en las redes sociales en 2013 [red14a] Porcentaje de usuarios que hacen uso activo de las redes sociales en 2013 [red14b] Icono oficial de Facebook[ico14c] Icono oficial de Twitter[ico14b] Eli, la mascota de Menéame e icono oficial[ico14a] Estructura de una aplicación desarrollada en Ruby on Rails Mapa conceptual del PUD[pud14b] Fases del PUD y ejemplo de carga de trabajo por fases y flujos de trabajo[pud14a] Estructura de la conexión con la base de datos Interfaz Remember me Interfaz enlace Has olvidado tu contraseña? Características del modelo User Interfaz registro de usuarios I

22 20. Interfaz inicio de sesión de usuarios Configuración paperclip Comprobación si existe avatar Interfaz modal para la selección de foto de perfil Árbol de directorios generado por paperclip Método search dentro de users_controller Vista search de user Diagrama de clases Iteración Diagrama de secuencia Iteración Diagrama de secuencia Iteración Proceso para la creación de una publicación Código Ruby con la condición para eliminar una publicación Interfaz para la eliminación de una publicación Filtros de las diferentes publicaciones Case encargado de filtrar las diferentes publicaciones Ejemplo de la interfaz de una publicación Interfaz del buscador de artículos Método search procedente de articles_controller Acción search del modelo Article Acción show procedente de articles_controller II

23 40. Interfaz personalizada para cada artículo Diagrama de clases Iteración Diagrama de secuencia Iteración Comparación entre los documentos en.yml y es.yml Interfaz para cambiar de idioma la aplicación acción set_locale_user procedente de users_controller acción set_locale procedente de application_controller Diagrama de secuencia Iteración categories.csv Código Ruby del rake para importar categorías acción categories_articles procedente del modelo User Código Ruby selector de categorías Interfaz del selector de categorías Diagrama de clases Iteración Diagrama de secuencia Iteración Interfaz gráfica para envío de mensajes privados Interfaz notificaciones de los mensajes privados Diagrama de clases Iteración Diagrama de secuencia Iteración Diagrama del diseño de las conversaciones y comentarios III

24 60. Distinción entre clases css para la identación de comentarios Código Ruby del algoritmo para mostrar los comentarios Estructura gráfica del diseño de conversaciones y comentarios Estructura gráfica del diseño de conversaciones y comentarios para usuarios externos Diagrama de clases Iteración Diagrama de secuencia Iteración Código Ruby de la condición para poder votar publicaciones Comparación gráfica entre una publicación votada y no votada Diagrama de clases Iteración Diagrama de secuencia Iteración Configuración en el modelo Article de la gema impressionist Código Ruby de la vista donde se captan las visitas Diagrama de secuencia Iteración Interfaz inicio de sesión administración Interfaz de los usuarios en la administración Interfaz de las publicaciones en la administración Acciones procedentes de algorithms_controller Interfaz para cambiar los valores del algoritmo general Estructura de directorios de la administración de la aplicación Diagrama de clases Iteración IV

25 80. Diagrama de secuencia Iteración Visualización de la puntuación de cada usuario Código Ruby de la acción points_visits! Código Ruby de la acción points_new_publication! Código Ruby de la acción points_article_up! Código Ruby de la acción points_article_down! Diagrama de clases Iteración Configuración de la gema Rack-attack Configuración longitud contraseña con Devise Title, description y keywords de la acción index procedente de articles_controller Configuración de comentarios como no index Configuración de conversaciones como no index Código Ruby ejemplo friendly URLs Interfaz formulario invitación de amigos Código de shared_mailer.rb Plantilla enviada con la acción send_ Interfaz para compartir Ciencéame de forma general Interfaz para compartir una publicación concreta de Ciencéame Uso de la gema social-share-button en una vista Configuración de la gema social-share-button V

26 100. Código e interfaz de un ejemplo de paginación de artefactos Algoritmo encargado de comprobar cuando se llega a fin de página Algoritmo encargado de pasar el número de página mediante URL Estructura del directorio app en Ciencéame Diagrama de clases completo Estadísticas del código fuente de Ciencéame Interfaz de Ciencéame antes de iniciar sesión Interfaz de Ciencéame antes de iniciar sesión Formulario registro Formulario inicio de sesión Interfaz para seleccionar intereses una vez se ha registrado en Ciencéame Interfaz de Ciencéame después de iniciar sesión Aspecto de las publicaciones después de iniciar sesión Interfaz para la publicación de artículos Interfaz de la vista Mi perfil Interfaz de la vista de búsquedas Interfaz para enviar mensajes privados Interfaz de la vista de notificaciones de mensajes privados Interfaz de mensajes recibidos Interfaz de mensajes enviados VI

27 120. Interfaz para la edición del perfil de usuario Interfaz de una publicación y formulario para crear temas Interfaz de una publicación y formulario para crear temas VII

28 . VIII

29 Índice de cuadros 1. Resumen de la Iteración Resumen de la iteración Resumen de la iteración Resumen de la Iteración Resumen de la Iteración Resumen de la Iteración Resumen de la Iteración Resumen de la Iteración Resumen de la Iteración Resumen de la Iteración Resumen de la Iteración Resumen de la Iteración Resumen de la Iteración Resumen de la Iteración Resumen de la Iteración Cumplimiento objetivos parciales Cumplimiento objetivos didácticos I

30 . II

31 1. Capítulo 1. INTRODUCCIÓN El Trabajo de Fin de Grado (TFG) explica y fundamenta las necesidades que han dado lugar a la realización del mismo, así como la problemática en la que se centra y el contexto en el que se engloba Introducción al tema Las formas de interacción entre los usuarios están evolucionando constantemente, siendo éstas cada vez más comunes en los medios digitales. Se ha pasado de sitios web como los blogs, donde se ofrecía una comunicación mínima entre usuarios, a redes sociales que permiten una interacción más amplia y fluida. La importancia de las redes sociales según la teoría basada en el libro Six degrees: The science of a connected age[wat03] del psicólogo Duncan Watts[dun14], radica en el concepto de que cada individuo conoce un promedio de al menos cien personas, que a su vez conocen a otras cien y que por lo tanto, un individuo puede compartir cierta información con aproximadamente diez mil personas, con sólo decir a sus amigos que reenvíen un mensaje. Existen redes sociales de ámbito general como pueden ser Facebook[fac14] o Twitter[twi14] y redes sociales que comprenden ámbitos más concretos como Linkedin[lin14] o Flickr[fli14]. Teniendo en cuenta el impacto que tienen las redes sociales y el potencial que ofrecen para discutir e intercambiar conocimientos entre usuarios surje la idea de Ciencéame, una red social enfocada a la difusión de temas científicos y la discusión de los mismos de forma multidisciplinar. Por otra parte, también ha sido notable la evolución que han sufrido las tecnologías para el desarrollo de aplicaciones web. En la actualidad, no es extraño encontrar aplicaciones móviles o web totalmente adaptadas a los nuevos dispositivos. Parte de esta evolución se refleja en la reciente aparición de lenguajes de programación como Ruby on Rails que, siendo un lenguaje orientado a objetos e interpretado con una comunidad activa que da soporte a toda su estructura, resulta imprescindible para el momento tecnológico que vivimos. 1

32 Teniendo en cuenta todo esto, el desarollo de Ciencéame se plantea como una red social que integra todas las nuevas tecnologías explicadas anteriormente con la publicación y discusión de documentos enfocados a la ciencia. En la figura 1 el lector puede apreciar la principal idea que integra la creación de Ciencéame. Figura 1: Diagrama de la principal idea que integra la creación de Ciencéame 1.2. Estructura del documento A continuación se describe de manera resumida la estructura de los contenidos de la memoria de este TFG. Dicha memoria consta de 7 capítulos y una serie de anexos: Capítulo 1. Introducción: En este primer capítulo se raliza una introducción a la problemática que ha dado lugar a la realización de este TFG, así como la contextualización del mismo. Capítulo 2. Objetivos: En esta sección se detallan los objetivos principales que se pretenden alcanzar con el presente TFG. Capítulo 3. Estado de la cuestión: En este capítulo se resumen los temas relevantes que conciernen a este TFG a través de la documentación consultada sobre dichos temas, haciendo mención a la bibliografía relevante. 2

33 Capítulo 4. Método de trabajo: En esta parte de la memoria se describe el método de trabajo seguido para la consecución de los objetivos descritos en el capítulo 2. Se describen tanto la metodología utilizada para el desarrollo (PUD) como las iteraciones que se plantean para la ejecución del proyecto. Capítulo 5. Resultados: En este capítulo se exponen los resultados obtenidos en el desarrollo de ese Trabajo Fin de Grado tras la aplicación de la metodología PUD, según las iteraciones descritas en el capítulo anterior. Capítulo 6. Conclusiones y propuestas: En esta sección se presentan las conclusiones obtenidas tras la realización del presente proyecto y se establecen posibles líneas de trabajo futuras. Capítulo 7. Referencias bibliográficas: En este último capítulo se proporciona una lista de referencias bibliográficas consultadas para la realización de este TFG. ANEXO I. Especificación de requisitos: En esta parte se desarrolla una breve descripción redactada de los requisitos del sistema. ANEXO II. Diagrama de Casos de Uso: En este anexo, se detalla a gran escala el diagrama de Casos de Uso extraído para el desarrollo de la aplicación. ANEXO III. Priorización de Casos de Uso: En esta parte se realiza una clasificación de los requisitos del sistema por orden de importancia. ANEXO IV. Manual de Usuario: En este anexo, se detallan las funcionalidades principales para navegar dentro de Ciencéame. ANEXO V. Manual de Instalación: En este anexo, se describen los pasos a seguir para la instación de todos los componentes necesarios con la finalidad de poder probar la aplicación de forma local. ANEXO VI. Gemas utilizadas en el desarrollo del TFG: En este anexo, se detallan todas las gemas integradas en la comunidad de Ruby on Rails que se han utilizado a lo largo del desarrollo del TFG. 3

34 . 4

35 2. Capítulo 2. OBJETIVOS DEL TFG En este capítulo se describen los objetivos, así como los medios técnicos y tecnológicos que emplean para llevar a cabo dichos objetivos Objetivo principal El objetivo principal es el desarrollo de una red social para compartir trabajos de índole científico, y permitir a los usuarios votar y establecer discusiones sobre los mismos. La dinámica de la red permitirá establecer rankings con los trabajos más interesantes en las distintas áreas, empleando para ello técnicas de ingeniería y métodos contrastados en la industria del software Objetivos parciales El objetivo principal descrito en el apartado 2.1 se desglosa en los siguientes objetivos parciales: Op1. Configuración de una base de datos potente para soportar la información de contenidos y usuarios. Op2. Desarrollo de los mecanismos para la gestión de usuarios. Op3. Desarrollo de mecanismos para la publicación, valoración y ranking de trabajos científicos. Op4. Desarrollo de mecanismos para la incorporación de un sistema de debate entre usuarios dentro de la aplicación con el fin de crear hilos de discusión. Op5. Desarrollo de mecanismos que garanticen unos niveles aceptables de seguridad. Op6. Desarrollo de mecanismos para la gestión del Marketing y el Posicionamiento SEO de una web Objetivos didácticos Se pretende alcanzar los siguientes objetivos didácticos: Od1. Poner en práctica las destrezas y conocimientos adquiridos durante la carrera para el desarrollo de proyectos informáticos. Od2. Aprendizaje de Sistemas de Gestión de Bases de Datos no estudiados durante la formación universitaria. Od3. Aprendizaje del lenguaje de programación Ruby, con todos sus componentes como ActiveRecord o REST. Od4. Aprendizaje de nuevos lenguajes de programación orientados al diseño web como Haml[ham14] y Scss[scs14]. 5

36 Od5. Aprendizaje del uso del framework Rails. Od6. Aprendizaje de las herramientas para desarrolladores incorporadas dentro de los navegadores, especialmente Firefox Medios empleados Los medios y recursos, tanto tecnológicos como materiales, utilizados para la realización de los objetivos definidos son los siguientes: Recursos Hardware - El proyecto se ha realizado en un ordenador personal ASUS S550C con el sistema operativo Debian 7 Wheezy[deb14]. Memoria RAM 4GB, Disco duro 750 GB y procesador Intel Core i7. Recursos Software de modelado y desarrollo Los distintos recursos software empleados son: - Para el modelado del sistema, se ha utilizado la herramienta CASE Visual Paradigm (v 10.0), con licencia académica proporcionada por la Escuela Superior de Informática. Esta herramienta soporta UML 2.0[vis14]. - Para la implementación se ha utlizado el lenguaje de programación Ruby[rub14a] en su versión integrado con el framework Rails[rai14] en su versión Para la gestión del proyecto y la edición de los archivos compilables, se ha utilizado la herramienta Sublime-text[sub14] en su versión 2 con licencia gratuita. - Para conseguir un diseño adaptable a diferentes tamaños de pantalla y a la vez una interfaz amigable para el usuario, se ha utilizado Bootstrap[boo14] en su versión Para probar la aplicación se ha utilizado el navegador Firefox[fir14] con todo su conjunto de herramientas de desarrolladores, dando mayor uso a las siguientes: Consola: Con el fin de controlar los javascript que afectan a cada vista del proyecto, se ha hecho uso de la consola de firefox pudiendo realizar una gestión de los mismos controlada y exhaustiva. Inspector: Con el propósito de realizar una buena gestión de los archivos de diseño css y html, se ha hecho uso de la herramienta que se expone en la figura 2, lo que proporciona una visión exacta de cada artefacto de diseño del proyecto. 6

37 Figura 2: Inspector integrado en el navegador Firefox Red: Con el fin de controlar qué está pasando con las peticiones que se realizan dentro de la aplicación, se ha hecho uso de esta herramienta que nos muestra todas las peticiones realizadas, su estado y sus errores (en caso de que los hubiese), como muestra la figura 3. Figura 3: Herramienta para la gestión de la red integrada en el navegador Firefox Vista 3D: Para conseguir una visión general de los artefactos de diseño de la aplicación, se ha utilizado Vista 3D, que mediante una visión en tres dimensiones, nos muestra todas las capas que tiene el proyecto como se aprecia en la figura 4. 7

38 Figura 4: Herramienta para la visualización en 3 dimensiones integrada en el navegador Firefox Vista de diseño adaptable: Esta herramienta ofrece la opción de adaptar nuestra pantalla a las dimensiones que necesitemos, por lo tanto es muy útil para comprobar cómo quedaría la aplicación en dispositivos con pantallas diferentes a la que se usa para desarrollar y así conseguir un diseño web adaptable (Responsive web design), como se puede observar en la figura 5. Figura 5: Herramienta para visualizaciones adaptables integrada en el navegador Firefox 8

39 - Se ha utilizado la consola que proporciona Rails, mediante el comando rails console o rails c para obtener información o realizar pruebas mucho más rápido que a través del navegador. También es muy útil para detectar errores en el código fuente tal y como se aprecia en la figura 6. Figura 6: Consola integrada en la aplicación Rails - Se han utilizado diferentes gemas proporcionadas por la comunidad que envuelve Ruby on Rails y disponibles en Rubygems[rub14b] (Ver ANEXO IV). Recursos Software de gestión Se enumera el software empleado para la gestión del proyecto: - Para la realización del plan de proyecto del TFG, se ha utilizado la herramienta Project Libre[pro14]. - Se han utilizado Dropbox[dro14] para almacenar todo lo relativo al proyecto. - Se ha utilizado la herramienta Gimp[gim14] en su versión 2.8 para la gestión de imágenes. - Para la organización y comunicación del estado del proyecto y sus tareas, se ha utilizado la aplicación web Trello[tre14] en su versión gratuita. Lo que ha hecho posible una organización de las tareas entre los tutores y el autor del TFG. - Para el control de versiones se ha utilizado el software Git[git14], utilizando como servidor de almacenaje de versiones Bitbucket[bit14]. Recursos Software de documentación - Toda la documentación presentada sobre este TFG ha sido realizada con el procesador de textos L A TEX[lat14], apoyado por el framework Texmaker[tex14]. - Para compartir y almacenar documentos se ha utilizado la herramienta Google Drive[goo14a]. 9

40 . 10

41 3. Capítulo 3. ANTECEDENTES, ESTADO DE LA CUESTIÓN Exponiendo los conceptos que fundamentan y sirven como base teoríca, se detalla el estado del arte y la base de conocimiento relacionada con el TFG, abordando temas como la importancia de las redes sociales en la actualidad y los problemas que aparecen con las publicaciones científicas existentes en la red Evolución de las redes sociales En el blog Geovannilemus[geo14] se describe esta evolución de una forma interesante, Las redes sociales han llegado para quedarse y no solo quedarse, sino para formar parte de la vida diaria de las personas. El crecimiento en tan sólo unos años ha sido notable, más si consideramos que cada vez son más los que se agregan y muchos otros que las utilizan con más frecuencia. Son millones de personas las que ingresan día a día en las diferentes redes sociales existentes. Tal y como muestra en su web superame.com[red14b], Las redes sociales se han convertido en un sector ya consolidado y aún así, siguen sucediendo cambios notables dentro de los usos y tendencias del sector. En la figura 7 se muestra el porcentaje de usuarios de internet que están registrados en las redes sociales más importantes hasta finales de Figura 7: Porcentaje de usuarios registrados en las redes sociales en 2013 [red14a] 11

42 En la figura 8 se muestra el porcentaje de usuarios de internet que hacen un uso activo de las principales redes sociales hasta finales de 2013 Figura 8: Porcentaje de usuarios que hacen uso activo de las redes sociales en 2013 [red14b] En las gráficas anteriores se puede observar cuales son las redes sociales que cuentan con más usuarios: - Facebook 1 : es una red social creada por Mark Zuckerberg y fundado junto a Eduardo Saverin, Chris Hughes y Dustin Moskovitz. Originalmente era un sitio para estudiantes de la Universidad de Harvard, que se abrió a cualquier persona con una cuenta de correo electrónico. Facebook cuenta con más de 900 millones de miembros, y traducciones a 70 idiomas.en enero de 2013, Facebook llegó a los 1230 millones de usuarios, de los cuáles hay más de 600 millones de usuarios móviles. Brasil, India, Indonesia, México y Estados Unidos son los países con más usuarios, sin embargo ya hay usuarios que poseen más de una cuenta.[wik14c] Figura 9: Icono oficial de Facebook[ico14c] 1 12

43 - Twitter 2 : es un servicio de microblogging, con sede en San Francisco, California, con filiales en San Antonio (Texas) y Boston (Massachusetts) en Estados Unidos. Twitter, Inc. fue creado originalmente en California, pero está bajo la jurisdicción de Delaware desde Desde que Jack Dorsey[dor14] lo creó en marzo de 2006, y lo lanzó en Julio del mismo año, la red ha ganado popularidad mundialmente y se estima que tiene más de 500 millones de usuarios, generando 65 millones de tuits al día y maneja más de peticiones de búsqueda diarias. Ha sido apodado como el SMS de Internet [wik14a]. Figura 10: Icono oficial de Twitter[ico14b] - Menéame 3 : es un sitio web basado en la participación comunitaria en el que los usuarios registrados envían historias que los demás usuarios del sitio (registrados o no) pueden votar, promoviendo las más votadas a la página principal mediante la aplicación de un algoritmo que unifica varios parámetros en un único valor numérico que denomina internamente karma [men14b]. Figura 11: Eli, la mascota de Menéame e icono oficial[ico14a]

44 3.2. Redes sociales de ámbito científico Existen otras redes sociales con contenido científico al igual que Ciencéame. Exponiendo las que se han considerado más interesantes: - Research Gate 4 : es una red social en Internet y una herramienta de colaboración dirigida a personas que hacen ciencia de cualquier disciplina. Para Ciencéame es un reto conseguir el posicionamiento con el que cuenta esta web. Aún así se han detectado características que se pretenden mejorar con el presente TFG: Dentro de Research Gate cada usuario únicamente publica sus propios documentos científicos, dentro de Ciencéame se pretende que los usuarios puedan publicar cualquier referencia a un documento, de cualquier científico del mundo y agradecer de esta forma al autor su publicación. Ciencéame pretende que todos los investigadores que se esfuercen tengan la posibilidad de ganar posicionamiento frente a otros, ya que son los propios usuarios quien deciden qué artículos son los que tienen mejor posición en el ranking. - Divúlgame 5 : es una web realizada a partir del código de Menéame para promover la divulgación científica. Esta web permite enviar una noticia que pasará a cola de pendientes hasta que haya alcanzado los votos suficientes para salir en portada[div14]. Después del registro e inspección de esta web hay tres aspectos que Ciencéame mejora: Divúlgame hereda el código php de Menéame, por lo que tiene los mismos problemas de sobrecarga en el diseño y usabilidad de la aplicación. La opción de que los usuarios que no están registrados en la aplicación puedan votar las publicaciones, hace que la validez de esos votos (problema del autovoto) pierda fuerza frente al sistema de gestión que ofrece Ciencéame. El sistema de gestión de categorías es poco claro. Este aspecto se ha mejorado en Ciencéame, con un diseño claro y escalable de las mismas

45 3.3. Ruby on Rails Considerada como una de las tecnologías más potentes en la actualidad dentro del desarrollo de aplicaciones web, ya que, pese a su juventud son muchas las grandes plataformas que se han desarrollado aplicando esta técnica. Ruby on Rails es un framework orientado al desarrollo de aplicaciones web de código abierto y escrito en el lenguaje de programación Ruby; creado en 2003 por David Heinemeier Hansson y extendido por el Rails core team. Esta tecnología trata de combinar la simplicidad con la posibilidad de desarrollar aplicaciones del mundo real escribiendo menos código que con otros frameworks y con un mínimo de configuración[wik14d] Fundamentos y característias Los principios fundamentales de Ruby on Rails incluyen la no repetición, es decir, construir una única definición de cada elemento y convención sobre configuración. Dado que Ruby on Rails es un framework de pila completa 6, los componentes están integrados de manera que no hace falta establecer puentes entre ellos. Por otro lado, dar prioridad a la convención antes que a la configuración significa que el programador sólo necesita definir aquella configuración que no es convencional. Las características que hacen a Ruby on Rails un framework de programación robusto y usable son las siguientes: - Lenguaje Ruby: es un lenguaje de programación interpretado, reflexivo y orientado a objetos, creado por el programador japonés Yukihiro Matz Matsumoto[mat14], quien comenzó a trabajar en Ruby en 1993, y lo presentó públicamente en Combina una sintaxis inspirada en Python y Perl con características de programación orientada a objetos similares a Smalltalk.[wik14b] - Uso de buenas prácticas: En el desarrollo de aplicaciones con Ruby on Rails, se aplica el Don t repeat yourself mediante el uso de layouts, lambdas, blocks o helpers. 6 Los componentes están integrados de manera que no hace falta establecer puentes entre ellos 15

46 - Arquitectura MVC: La arquitectura Modelo Vista Controlador diferencia tres capas con funcionalidades diferentes dentro de un proyecto: El modelo consiste en las clases que representan a las tablas de la base de datos. Las clases del controlador responden a la interacción del usuario e invocan a la lógica de la aplicación La vista se encarga de la lógica de visualización, es decir, cómo se muestran los datos de las clases del controlador. - Gemas: Las gemas son plugins y/o códigos añadidos a nuestros proyectos Ruby on Rails, que permiten nuevas funcionalidades, nuevas funciones predefinidas o nuevas herramientas para el desarrollo. La gran ventaja del uso de gemas, es la cantidad de código que el desarrollador se ahorra a la hora de programar, ya que, instala código probado y sin riesgos. - Active Record: Active Record es una clase para la administración y funcionamiento de los modelos. Esta clase proporciona la capa objeto-relacional que sigue rigurosamente el estándar ORM (Tablas en Clases, Registros en Objetos, y Campos en Atributos), facilita el entendimiento del código asociado a base de datos y encapsula la lógica específica haciéndola más fácil de usar para los programadores[act14]. Por otro lado existen muchos antecedentes que han ayudado a la elección de esta tecnología dentro del abanico de posibilidades existente en la actualidad. A continuación se nombran algunas de las más conocidas[dev14]: - Scribd: Aplicación desarrollada en Ruby on Rails dedicada a ayudar al mundo a leer, descubrir y compartir. - Twitter: servicio de microblogging. Probablemente la aplicación con mayor número de usuarios desarrollada con esta tecnología (Ver página 11). - Github: Aplicación dedicada a alojar proyectos utilizando el sistema de control de versiones Git. - Slideshare: Comparte presentaciones de diapositivas con el mundo para educar, informar e incluso promocionar su empresa, productos o cualquier otra cosa. 16

47 Arquitectura de una aplicación desarrollada en Ruby on Rails La figura 12 muestra la estructura general de un proyecto básico en Ruby on Rails. Mostrando la funcionalidad de los directorios y ficheros más importantes: - app: Es el directorio donde se desarrolla la mayoría de las actividades dentro de un proyecto, en el cual se almacenan los controladores, los modelos, los helpers 7 y las vistas. - bin: En este directorio se almacenan los archivos ejecutables donde se podrán realizar diferentes acciones como ejecutar un rake 8, ejecutar la consola, o poner en marcha el servidor de rails. - config: Es el directorio en el cual se almacenan todos los ficheros de configuración de la aplicación. Entre otros, destacan el directorio initializers, donse se almacenan ficheros que se ejecutarán cuando arranque el servidor; el directorio locales, para la internalización de la aplicación; el fichero database.yml, para la configuración de la base de datos y el fichero routes.rb, donde se almacenan todas las rutas con las que va a contar la aplicación para cada acción de controlador. - log: Directorio donde se almacenan diferentes ficheros con extensión.log, en el cual se irán registrando todo lo sucecido mientras el servidor se encuentra activo. Muy útil para solucionar posibles errores. - public: Directorio público, como su nombre indica, donde se almacenará todos los ficheros públicos del servidor. En el caso de Ciencéame, es el lugar donde se almacenan las fotos de perfil de cada usuario. - Gemfile: Uno de los ficheros más importantes de toda aplicación desarrollada en Ruby on Rails, ya que es el lugar donde se declaran las gemas 9 que van a ser integradas en la aplicación. Cuando se instala una nueva gema, es necesario ejecutar en consola el comando bundle install encargado de realizar la petición de instalación. 7 Ficheros donde se almacenan los métodos que se utilizarán dentro de las vistas 8 Un rake es el equivalente al comando make en otros lenguajes de programación, utilizado para ejecutar una lista de tareas. 9 Las gemas son plugins y/o códigos añadidos a proyectos desarrollados en Ruby on Rails, que permiten nuevas funcionalidades. 17

48 Figura 12: Estructura de una aplicación desarrollada en Ruby on Rails 18

49 4. Capítulo 4. MÉTODO DE TRABAJO En este capítulo se detalla el método de trabajo que se ha utilizado para llevar a cabo el desarrollo de la aplicación Ciencéame, así como la planificación del proyecto que se ha seguido para su consecución Proceso Unifiado de Desarrollo (PUD) Introducción El PUD (Proceso Unificado de Desarrollo) (Jacaboson, 2000) es una metodología de desarrollo software extensible que puede ser adaptada a las necesidades particulares de organizaciones o proyectos específicos. El PUD define un conjunto de actividades necesarias para transformar los requisitos de usuario en un sistema software. El PUD surge como una evolución del Proceso Unificado de Rational (RUP), y está basado en componentes software conectados a través de interfaces y usa el lenguaje de modelado UML (Unified Modelling Language, Lenguaje Unificado de Modelado) para especificar un conjunto de diagramas y demás artefactos que definen el sistema junto con el código ejecutable. El principal objetivo del PUD es proporcionar un conjunto de métodos, técnicas y herramientas para facilitar el desarrollo de software de calidad que satisfaga las necesidades de los usuarios Características del PUD El PUD presenta las siguientes características: 1. Dirigido por casos de Uso El primer paso a la hora de desarrollar un sistema es identificar las funcionalidades que los usuarios necesitan del mismo. Estas funcionalidades se conocen como requisitos funcionales y de estos requisitos se extraen los denominados casos de uso (CdU) tras realizar un análisis de los requisitos. Cada uno de estos CdU representa un escenario de uso, que define la interacción del usuario con dicha funcionalidad. De este modo se pueden utilizar los CdU para guiar el proceso de desarrollo desde la especificación de requisitos hasta las etapas finales de pruebas. Al conjunto de todos los CdU que presenta un sistema 19

50 se le denomina modelo de casos de uso, y se representa a través del diagrama de casos de uso que especifica UML. Es necesario realizar una priorización de estos CdU para planificar el orden en que se van a desarrollar las distintas funcionalidades del sistema, ya que condiciona de manera notable su arquitectura y la propia evolución del desarrollo. 2. Iterativo e Incremental El PUD se compone de cuatro fases: Inicio, Elaboración, Construcción y Transición. Cada una de estas fases está a su vez dividida en una serie de iteraciones, que ofrecen como resultado un incremento del producto desarrollado que añade o mejora las funcionalidades del sistema en desarrollo. Cada iteración se centra en un conjunto de CdU elegidos convenientemente y sigue todos o algunos de los siguientes flujos de trabajo elementales: - Captura de Requisitos: Se recogen todos los requisitos del sistema mediante diferentes técnicas. - Análisis: Se identifican y especifican los CdU. - Diseño: Se crea un diseño utilizando la arquitectura seleccionada como guía para tratar de dotar al sistema de las funcionalidades representadas por los casos de uso identificados en la etapa anterior. - Implementación: Los artefactos creados en el diseño, se transforman en código fuente. - Pruebas: Se verifica que el sistema cumple los CdU. 3. Centrado en Arquitectura El PUD asume que no existe un modelo único que cubra todos los aspectos del sistema y es por ello por lo que existen múltiples modelos y vistas que definen la arquitectura de software de un sistema, incluyendo los aspectos estáticos y dinámicos más significativos y debe estar relacionada con los CdU para permitir el desarrollo paralelo de los mismos. 4. Enfocado en los riesgos El PUD requiere que el desarrollo del proyecto se centre en identificar los riesgos críticos en una etapa temprana del ciclo de vida. Los resultados de cada iteración, en especial los de la fase de Elaboración deben ser seleccionados en un orden que asegure que los riesgos principales son considerados primero. 20

51 Figura 13: Mapa conceptual del PUD[pud14b] Fases del PUD El PUD divide el proceso de desarrollo de un proyecto en cuatro fases. Como se ha comentado anteriormente, cada una de estas fases se divide a su vez en iteraciones, que termina con un hito, donde se deben cumplir una serie de objetivos. Las fases del PUD son: 1. Inicio: En la primera fase de obtiene el modelo de casos de uso simplificado, se identifican los riesgos potenciales y se realiza una estimación aproximada del proyecto. 2. Elaboración: Se mejora el modelo de casos de uso de la fase anterior y se diseña la arquitectura del sistema. Se desarrollan los casos de uso más críticos que se identificaron en la fase de inicio. 3. Construcción: Se desarrollan todos los casos de uso y se prueba el software 4. Transición: Se produce la entrega e instalación del software a los usuarios finales. 21

52 Figura 14: Fases del PUD y ejemplo de carga de trabajo por fases y flujos de trabajo[pud14a] Artefactos involucrados A lo largo del desarrollo software de acuerdo al PUD, se van construyendo diferentes artefactos o modelos software que representan al sistema desde distintos puntos de vista y a diferentes niveles de abstracción, para dar mayor facilidad de comprensión del propio sistema. Estos puntos de vista se definen a través de los siguientes modelos UML: - Modelo de Análisis: Define los CdU con mayor detalle y asigna cada una de las funcionalidades a sus posibles clases. - Modelo de Diseño: Constituye el diagrama de clases y de paquetes en la notación UML. - Modelo de Implementación: Incluye los componentes y la relación entre clases y componentes. - Modelo de Despliegue: realiza una representación a través de nodos y las relaciones entre éstos. - Modelo de Prueba: Se especifican los casos de prueba. 22

53 4.2. Evolución del proyecto El desarrollo de la herramienta que se propone en este TFG se divide en una serie de iteraciones. Esta sección describe la planificación de las iteraciones que se han realizado a lo largo de las distintas fases del desarrollo para obtener la aplicación propuesta, así como los distintos flujos de trabajo que se desarrollan en cada una de las iteraciones y los productos de salida de cada una de ellas, los cuales se muestran con mayor nivel de detalle en el siguiente capítulo Iteración 0. Preparación del proyecto En esta primera iteración se pretende tener una primera toma de contacto tanto con los clientes, como con el proyecto en sí. Para conseguir este objetivo que servirá de base para el resto de iteraciones del proyecto se realizará una captura de requisitos mediante una entrevista con los clientes. De la que se obtendrá información suficiente para empezar a realizar el desarrollo, una primera especificación de requisitos y la identificación premilinar de casos de uso. Para ello se realiza una primera aproximación del diagrama de casos de uso de la aplicación. La tabla 1 muestra de manera resumida el esquema de esta primera iteración. Iteración 0. Preparación del proyecto Objetivos Obj0.1. Realización de una entrevista con los clientes para la extracción de requisitos Obj0.2. Construcción de un documento con los requisitos del sistema Obj0.3. Construcción del diagrama de Casos de Uso del sistema Productos de salida Ps0.1. Documento con la especificación de requisitos (Ver Anexo I) Ps0.2. Diagrama de Casos de Uso del sistema (Ver Anexo II) Ps0.3. Documento explicativo con la priorización de los Casos de Uso (Ver Anexo III) Obj0.4. Priorización de los Casos de Uso establecidos Cuadro 1: Resumen de la Iteración 0 23

54 Iteración 1. Sistema de gestión de bases de datos En esta segunda iteración de proyecto, en la que nos encargaremos de la configuración de la base de datos en aplicaciones desarrolladas en ruby on rails, será necesario examinar el abanico de posibilidades que se ofrecen y elegir la opción que se considere adecuada para este sistema. Una vez elegida, será necesario implantarla, configurarla y probar que todo funcione correctamente. Como la configuración del sistema de gestión de la base de datos es transversal a todas las funcionalidades del proyecto, se le dedica una iteración completa del plan de proyecto. Iteración 1. Sistema de gestión de bases de datos Objetivos Obj1.1. Elección del sistema de gestión de bases de datos Obj1.2. Instalación del sistema de bases de datos selecionado Productos de salida Ps1.1. Resultados de las pruebas de conexión con la base de datos Ps1.2. Resultados al poblar la base de datos Cuadro 2: Resumen de la iteración Iteración 2. Gestión de usuarios En esta iteración del proyecto se pretende abordar todo lo que afecte a la gestión del usuario. Lo primero será distinguir los diferentes tipos de usuarios que van a habitar el sistema, sus características y diferencias. Después habrá que implementar la lógica de base de datos que será la encargada de gestionar los atributos de cada uno de los usuarios registrados en la aplicación para por último realizar las acciones que permitan registros e iniciar sesión a los usuarios. Cuando todo esto esté funcionando, habrá que construir la lógica de control que permita al usuario realizar diferentes acciones básicas, como editar su información o eliminarla. 24

55 En la presente iteración se abordarán los siguientes casos de uso: - Registro - Iniciar Sesión - Cerrar Sesión - Consultar Perfil - Actualizar foto de Perfil - Buscar Usuarios - Consultar Puntos - Editar Perfil Iteración 2. Gestión de usuarios Objetivos Obj2.1. Gestión de las cookies y sesiones de los usuarios Obj2.2. Creación de los modelos y controladores necesarios para esta funcionalidad Productos de salida Ps2.1. Diagrama de clases que describe el diseño de la gestión de usuarios Ps2.2. Diagrama de secuencia que describe el flujo de algunas acciones de la gestión de usuarios Obj2.3. Creación de los diferentes tipos de usuarios existentes en el sistema, sus características y permisos Obj2.4. Creación de una interfaz gráfica para el registro de usuarios Obj2.5. Creación de una interfaz gráfica para el inicio de sesión de los usuarios Obj2.6. Gestión de la funcionalidad foto de perfil Obj2.7. Construcción de un motor de búsqueda dentro de la base de datos de usuarios Cuadro 3: Resumen de la iteración 2 25

56 Iteración 3. Gestión de publicaciones Esta iteración abarca todo lo relacionado con las publicaciones, es decir, cómo y qué información se va a almacenar de cada una, la lógica de control para crear y eliminar publicaciones y la interfaz gráfica con la que va a contar. También se estudiará cómo se van a organizar dentro del sistema y se integrarán las acciones que cada usuario podrá realizar con cada una de ellas. En está iteración se resolverán los siguientes Casos de Uso: - Visualizar Artículo - Publicar Artículo - Eliminar Artículo - Buscar Publicaciones Iteración 3. Gestión de publicaciones Objetivos Obj3.1. Construcción de los modelos, controladores y vistas necesarios para esta funcionalidad Obj3.2. Categorización de publicaciones Productos de salida Ps3.1. Diagrama de clases que describe el diseño de la gestión de publicaciones Ps3.2. Diagrama de secuencia que describe el flujo de alguna de las acciones de la gestión de publicaciones Obj3.3. Gestión de artículos Obj3.4. Búsqueda de publicaciones Obj3.5. Personalización de publicaciones Obj3.6. Construcción de módulos donde se resuma la información de cada publicación Obj3.7. Construcción de una interfaz de usuario con la información necesaria para cada publicación Cuadro 4: Resumen de la Iteración 3 26

57 Iteración 4. Internalización de la aplicación Como requisito se expone que la aplicación debe poderse visualizar en dos indiomas, inglés y español. Por lo tanto será necesario el desarrollo de un sistema de internalización que ofrezca los textos del sistema en los dos idiomas. También se pide que esta funcionalidad sea escalable a otros idiomas, es decir, en el futuro deben poderse añadir otros idiomas con facilidad, por lo que la habrá que desarrollar el diseño necesario para cumplir esta funcionalidad. Durante el desarrollo de esta iteración se resolverán los siguientes Casos de Uso: - Cambiar idioma Iteración 4. Internalización de la aplicación Objetivos Obj4.1. Instalación y configuración de los sistemas necesarios para conseguir esta funcionalidad Productos de salida Ps4.1. Diagrama de secuencia que describe el flujo de alguna de las acciones de la gestión de la internacionalización Obj4.2. Creación de los ficheros de traducciones necesarios Obj4.3. Creación de los métodos y atributos necesarios para cambiar el idioma de un usuario Obj4.4. Construcción de la interfaz gráfica sobre la que el usuario marcará el idioma deseado Cuadro 5: Resumen de la Iteración 4 27

58 Iteración 5. Gestión de categorías e intereses En esta iteración se introducirán categorías de la forma más eficiente posible a cada publicación, así como intereses a los usuarios. Habrá que realizar un diseño en el que se encuentre la forma de comparar categorías con intereses para así mostrar a cada usuario sólo las publicaciones que realmente sean interesantes según su perfil. En esta iteración se resolverán los siguientes Casos de Uso: - Seleccionar intereses Iteración 5. Gestión de categorías e intereses Objetivos Obj5.1. Construcción de los modelos, controladores y vistas necesarios para esta funcionalidad Obj5.2. Seleccionar un método adecuado para la gestión de categorías e intereses Productos de salida Ps5.1. Diagrama de clases que describe el diseño de la gestión de categorías e intereses Ps5.2. Diagrama de secuencia que describe el flujo de alguna de las acciones de la gestión de categorías e intereses Obj5.3. Instalación y configuración de los recursos necesarios para poner en práctica esta funcionalidad Obj5.4. Relacionar las categorías con las expuestas en el código UNESCO tal y como expresan los requisitos Obj5.5. Desarrollo de una interfaz adecuada y escalable para la selección de categorías Cuadro 6: Resumen de la Iteración 5 28

59 Iteración 6. Gestión de mensajes privados En esta parte del proyecto se integrarán mensajes privados entre los diferentes usuarios. Habrá que construir el modelo necesario para esta acción, así como la lógica de control que permita enviar mensajes de un usuario a otro. Por último se creará un sistema de notificaciones que indicará a los usuarios que tienen mensajes privados sin leer. De acuerdo a los requisitos, un usuario no se podrá enviar mensajes privados a sí mismo. Los casos de uso abordados en esta iteración son los siguientes: - Enviar Mensaje - Leer Mensajes - Leer Mensajes Enviados - Leer Mensajes Recibios Iteración 6. Gestión de mensajes privados Objetivos Obj6.1. Construcción de los modelos, controladores y vistas necesarios para este fin. Obj6.2. Creación de un sistema de notificaciones para usuarios con mensajes privados pendientes. Productos de salida Ps6.1. Diagrama de clases que describe el diseño de la gestión de mensajes privados. Ps6.2. Diagrama de secuencia que describe el flujo de alguna acción de la gestión de mensajes privados. Obj6.3. Construcción de una interfaz gráfica intuitiva para el usuario tanto para enviar mensajes, como para recibirlos. Cuadro 7: Resumen de la Iteración 6 29

60 Iteración 7. Gestión de conversaciones y comentarios La gestión de publicaciones y artículos es uno de los más importantes dentro de la aplicación, ya que es por lo que se pretende destacar frente a otras redes sociales similares. En esta parte del proyecto se abordará la administración de los comentarios dentro de las conversaciones, obteniendo un diseño lo más escalable posible. Es un requisito del sistema que los comentarios vayan formando un árbol respecto a su padre y por lo tanto se vayan creando anidamientos que visualmente se convertirán en tabulaciones. En esta etapa del proyecto se abordarán los siguientes Casos de Uso: - Añadir Comentario - Eliminar Comentario - Responder Iteración 7. Gestión de conversaciones y comentarios Objetivos Obj7.1. Creación de los modelos, controladores y vistas necesarios para desarrollar esta iteración. Obj7.2. Elección de un diseño de anidamientos de comentarios en forma de árbol. Productos de salida Ps7.1. Diagrama de clases que describe el diseño de la gestión de conversaciones y comentarios. Ps7.2. Diagrama de secuencia que describe el flujo de alguna de las acciones correspondientes a la gestión de comentarios y conversaciones. Obj7.3. Construcción y configuración del diseño anterior. Cuadro 8: Resumen de la Iteración 7 30

61 Iteración 8. Gestión del sistema de votación En esta iteración del TFG se realizará la gestión de un sistema de votos, en el que se conseguirá que los usuarios puedan aumentar los puntos positivos o negativos de cada publicación. Como requisito, los clientes exponen que un usuario no debe poder votar más de una vez la misma publicación. En esta etapa se han gestionado los siguientes Casos de Uso: - Votar Artículo Iteración 8. Gestión del sistema de votación Objetivos Obj8.1. realización del diseño encargado de cumplir los requisitos de esta iteración. Obj8.2. Creación de los modelos, controladores y vistas necesarios para abordar la funcionalidad. Productos de salida Ps8.1. Diagrama de clases que describe el diseño de la gestión del sistema de votación. Ps8.2. Diagrama de secuencia que describe el flujo de alguna de las acciones correspondiente a la gestión del sistema de votación. Obj8.3. Construcción de una interfaz de usuario en la que el usuario pueda visualizar si ha votado o no la publicación. Cuadro 9: Resumen de la Iteración 8 31

62 Iteración 9. Gestión del sistema de visitas La construcción de un sistema encargado de controlar las visitas que se realizan a cada publicación, es algo muy importante para los clientes. Esto se debe a que las visitas conllevan una ponderación sobre los puntos de cada usuario. En la entrevista realizada se determinó que la forma más eficaz para la realización de esta funcionalidad era controlar las visitas a cada publicación mediante la dirección IP de los usuarios. Iteración 9. Gestión del sistema de visitas Objetivos Obj9.1. Elección del sistema más eficiente de control de visitas mediante dirección IP. Productos de salida Ps9.1. Diagrama de secuencia que describe el flujo de alguna de las acciones correspondiente a la gestión del sistema de visitas. Obj9.2. Construcción de los modelos, controladores y vistas necesarios para llevar a cabo esta iteración. Obj9.3. Comprobación del correcto funcionamiento de los métodos realizados. Cuadro 10: Resumen de la Iteración Iteración 10. Administración de la aplicación En esta iteración se abordará la necesidad de crear un usuario con la capacidad de administrar el sistema desde una interfaz de usuario diferente a la del resto de usuarios. Este usuario debe tener unos permisos especiales con los que pueda gestionar todos los artículos, todos los usuarios y cambiar los valores del algoritmo general de votaciones de Ciencéame. 32

63 En esta iteración se abordarán los siguientes Casos de Uso: - Visualizar Artículos Admin - Visualizar Usuarios Admin - Cambiar Valores Algoritmo - Eliminar Usuarios admin - Eliminar Publicaciones admin - Iniciar Sesión - Cerrar Sesión Iteración 10. Administración de la aplicación Objetivos Obj10.1. Encontrar manera más eficiente y segura de crear un administrador del sistema. Obj10.2. Creación de los modelos, controladores y vistas necesarios para esta funcionalidad. Productos de salida Ps10.1. Diagrama de clases que describe el diseño de la gestión de la administración. Ps10.2. Diagrama de secuencia que describe el flujo de alguna de las acciones de la gestión de la administración del sistema. Obj10.3. Crear las rutas necesarias para el administrador del sistema. Obj10.4. Contrucción de la funcionalidad para gestionar los usuarios del sistema. Obj10.5. Contrucción de la funcionalidad para gestionar las publicaciones del sistema. Obj10.6. Contrucción de la funcionalidad que permita al administrador cambiar los valores del algoritmo principal. Obj10.7. Contrucción de una interfaz gráfica simple para la administración de la aplicación. Cuadro 11: Resumen de la Iteración 10 33

64 Iteración 11. Creación del algoritmo de gestión de puntos Para gestionar los puntos que se le van asignando a cada usuario dependiendo de su actividad dentro de Ciencéame, en esta iteración se va a realizar la construcción de un algoritmo que sumará o restará puntos a cada usuario dependiendo de la acción que realice. Dado que hasta que en una aplicación que gestiona una gran cantidad de usuarios no puede tomar decisiones precipitadas a la hora de sumar o restar puntos, es decir, dependiendo de como vayan los acontecimientos, deberán poder actualizarse los valores que se asignan a los usuarios desde el panel de administración. En esta iteración se abordan los siguientes Casos de Uso: - Cambiar Valores Algoritmo Iteración 11. Creación del algoritmo de gestión de puntos Objetivos Obj11.1. Construcción del diseño que va a soportar esta funcionalidad. Productos de salida Ps11.1. Diagrama de secuencia que describe el flujo de alguna de las acciones correspondientes al desarrollo del algoritmo de gestión de puntos. Obj11.2. Decidir qué acciones van a proporcionar algún tipo de puntuación a los usuarios. Obj11.3. Construir los modelos, controladores y vistas necesarios para el desarrollo de esta funcionalidad. Cuadro 12: Resumen de la Iteración

65 Iteración 12. Gestión de la seguridad de la aplicación En la siguiente iteración se abordará un requisito no funcional como es la gestión de la seguridad del sistema, ya que no se compromete como una funcionalidad concreta, sino que, afecta a todo el sistema. Por lo tanto, no se abordará ningún Caso de Uso y se considerará una iteración de caracter no funcional. En la tabla 13 se muestran las actividades dentro de la iteración. Iteración 12. Gestión de la seguridad de la aplicación Objetivos Obj12.1. Creación de un sistema de confirmación de correo electrónico para poder registrar un usuario en la aplicación. Productos de salida Ps12.1 Informe de los resultados de las pruebas de seguridad de la aplicación. Obj12.2. Instalación y configuración de algún sistema que restrinja las peticiones al servidor en ciertas acciones. Obj12.3. Creación de un sistema que permita cifrar las contraseñas de los usuarios. Obj12.4. Construcción de un sistema para que la administración de la aplicación mantenga cierta seguridad. Cuadro 13: Resumen de la Iteración Iteración 13. Marketing online y posicionamiento SEO El Marketing y el posicionamiento SEO no comprometen ninguna funcionalidad concreta dentro del sistema en cuanto al usuario se refiere, sino que sirve como complemento del resto. Por lo tanto se considerará una iteración de caracter no funcional. Las características desarrolladas en esta iteración ayudarán a la aplicación a darse a conocer dentro del mundo de Internet. 35

66 Iteración 13. Marketing online y posicionamiento SEO Objetivos Obj13.1. Gestión de Meta Tags Obj13.2. Gestión de la tasa de rebote Productos de salida Ps13.1. Pruebas funcionamiendo Meta Tags Ps13.2. Pruebas funcionamiendo URLs Obj13.3. Gestión del Referral Traffic Obj13.4. Gestión de friendly URLs de las publicaciones Obj13.5. Gestión de las redes sociales desde el punto de vista del Marketing Cuadro 14: Resumen de la Iteración Iteración 14. Paginación de elementos La funcionalidad desarrollada en esta iteración, no se relaciona con ningún Caso de Uso concreto de los explicados anteriormente, sino que ayuda a que el resto de iteraciones sean más eficientes a la hora de mostrar información. Iteración 14. Paginación de elementos Objetivos Obj14.1. Elección del sistema que hará posible esta funcionalidad Obj14.2. Instalación de los medios necesarios para la paginación de elementos Productos de salida Ps14.1. Informe de las pruebas del buen funcionamiento de la paginación sin utilizar Javascript Ps14.2. Informe de las pruebas del buen funcionamiento de la paginación utilizando Javascript Obj14.3. Desarrollo de la lógica necesaria para la construcción de esta funcionalidad Cuadro 15: Resumen de la Iteración 14 36

67 5. Capítulo 5. RESULTADOS De acuerdo al método propuesto en el capítulo anterior se describe de manera detallada los entregables y resultados obtenidos en cada una de las iteraciones Iteración 0. Preparación del proyecto Una vez entendida la primera idea del proyecto Ciencéame, se realizan diversas etapas para empezar a desarrollar la aplicación de la forma más eficiente posible siguiendo el PUD Entrevista con los clientes El día 19 de Diciembre de 2013 se realiza la primera entrevista a los clientes interesados en el desarrollo de Ciencéame, la cual tuvo una duración de dos horas aproximadamente, donde se explica qué se pretende con la aplicación y el alcance que debía tener. Esta primera entrevista fue muy útil para comenzar con el desarrollo de la aplicación, aunque con posterioridad se fueron realizando cambios en los requisitos del sistema gracias a la disponibilidad de los clientes Captación de Requisitos Una vez resueltas las dudas sobre el desarrollo y el alcance de Ciencéame se raliza un documento explicativo con los requisitos del sistema hasta ese momento (Ver Anexo I). Este documento se basa en el Estándar IEEE 830 para mantener una estructura en el desarrollo de los requisitos del sistema. 37

68 Diagrama de Casos de Uso Llegado a este punto, y con la intención de comenzar con el desarrollo de la aplicación, se realiza un diagrama de Casos de Uso. La quinta y última versión del mismo se puede observar en el Anexo II. Una vez terminado el diagrama de Casos de Uso se realiza una priorización de los mismos para dividir el proyecto en iteraciones y seguir la metodología elegida (Ver Anexo III) Plan de Proyecto Teniendo claras todas las ideas, se divide el proyecto en iteraciones creando un Plan de Proyecto a seguir con el mayor detalle a lo largo del desarrollo. El plan de proyecto de Ciencéame cuenta con 78 tareas, divididas en 15 iteraciones tal y como se explicará en los capítulos 4 y 5. Para mejor entendimiento se ha construido un diagrama de Gantt (Ver PDF en el CD donde se almacena la información del TFG). El plan de proyecto se ha desarrollado con la herramienta Planio en su versión de prueba gratuita. Se adjuntará el fichero.ics en el CD para que el lector pueda observar las diferentes tareas organizadas según el calendario de desarrollo. 38

69 5.2. Iteración 1. Sistema de gestión de bases de datos Para poder almacenar los usuarios registrados es necesario establecer algún tipo de mecanismo que no sólo llegue al lugar donde se guarda la información, sino que también gestione la forma de almacenarla y sea compatible con el framework utilizado, en este caso Rails. Dado que Rails 4.1 por defecto tiene integrado SQLite, se toma la decisión de utilizar en principio MySql integrado en la plataforma Xampp. Para poder utilizarlo en Rails 4.1, es necesaria la instalación y uso de la gema mysql2 que consigue la integración de MySql con ActiveRecord y por lo tanto hace posible su uso en una aplicación desarrollada en Rails. Una vez realizada correctamente la instalación, es necesario crear modelos que consigan comunicar la aplicación con la base de datos. El siguiente paso es la creación de la migración, donde se establecen las tablas del modelo relacional y sus distintos atributos, mediante el comando rake db:migrate, encargado de esta acción desde la consola del sitema. Tras la previsión de crecimiento y el riesgo de falta de escalabilidad, se toma la decisión de migrar todo el sistema al Sistema de Gestión de bases de datos Postgresql, lo que ofrece más facilidades a la hora de gestionar las búsquedas. Para conseguir que Postgresql se integre con ActiveRecord, es necesaria la instalación de una nueva gema, al igual que pasa con Mysql, en este caso se trata de la gema es pg en su versión Una vez instalada la nueva gema y el nuevo gestor de bases de datos, se migra todos los modelos que ya están creados a la nueva base de datos. La única pérdida es la información que contenían, que de momento es sólo para pruebas en desarrollo. Los modelos dentro de una aplicación desarrollada en Ruby on Rails utilizando MVC son acciones encargadas de establecer una relación entre la lógica del sistema y la persistencia del mismo. 39

70 En la figura 15 se muestra gráficamente cómo funciona el sistema anterior integrado con Rails Figura 15: Estructura de la conexión con la base de datos. 40

71 5.3. Iteración 2. Gestión de usuarios Durante esta iteración, se realizan las siguientes tareas: Sesiones y cookies Cuando muchos usuarios van a registrarse y acceder a una aplicación al mismo tiempo, es necesario, por seguridad y escalabilidad mantener un control de los mismos. Esto se consigue guardando las sesiones y cookies de cada usuario, así como obligando al usuario a confirmar su correo electrónico cuando se registra en la aplicación. Este se lleva a cabo para conseguir incluir en la aplicación ciertos aspectos mínimos de seguridad. Todo esto se ha realizado creando controladores encargados de almacenar temporalmente la información de cada usuario que accede al sistema, lo que no hace muy eficiente la aplicación a la hora de mantener muchos usuarios conectados a la vez. Esto provocaba que el sistema no sea escalable. En la versión final se ha instalado y configurado una gema llamada devise (Ver ANEXO 6), que ayuda a que la gestión de usuarios sea mucho más eficiente y segura, controlando las sesiones y las cookies, ayudando con la comprobación de correos y contraseñas y proporcionando un sistema de envío de correos electrónicos que favorece a que los usuarios queden más satisfechos a la hora de utilizar la aplicación. Por otra parte, cuando un usuario se registra en la aplicación, se tienen que hacer varias comprobaciones: 1. Comprobar si el usuario existe previamente en el sistema se consigue marcando el correo electrónico de cada usuario como unique en nuestra base de datos, lo que ayuda a devise con la gestión de los usuarios. 2. Comprobar que las contraseña que introduce el usuario en el registro es igual a la contraseña de confirmación en la interfaz de registro para que los usuarios de la aplicación no tengan problemas a la hora de logearse y tengan que estar cambiando la contraseña si se equivocaron al introducirla. 41

72 Por lo tanto quedan cubiertas en esta etapa las siguientes funcionalidades: 1. Registro de usuarios con ayuda de devise, almacenándolos en la base de datos de la aplicación mediante llamadas a postgresql con ActiveRecord. 2. Gestión de las diferentes funcionalidades que hace que una aplicación web tenga un registro de usuarios seguro y eficiente: - Remember me: Consiste en un checkbox dentro de la interfaz cuya lógica guarda la sesión del usuario mientras el navegador siga activo (Ver figura 16). Figura 16: Interfaz Remember me. - Has olvidado tu contraseña? : Consiste en un enlace mediante el cual los usuarios que han olvidado su contraseña, deben introducir el correo con el que se registrarón en la aplicación. Automáticamente el sistema enviará un a ese correo con un enlace que contiene un token diferente para cada usuario con el cual acceden a una URL diferente dependiendo del usuario, pueden cambiar así, su contraseña con facilidad, de una forma cómoda y en pocos minutos (Ver figura 17). Figura 17: Interfaz enlace Has olvidado tu contraseña?. 42

73 Usuarios existentes en el sistema En Ciencéame se distinguen tres tipos de usuarios teniendo en cuenta las diferencias de permisos que existen entre cada uno de ellos: 1. Usuarios externos a la aplicación Los requisitos del sistema indican que debe existir un tipo de usuario totalmente externo a la aplicación con unos permisos mínimos que le permitan visualizar el contenido de las publicaciones de los usuarios registrados en la misma. Por lo tanto las únicas acciones de toda la aplicación de las que se puede hacer uso se encuentran dentro del controlador articles_controller. Una de las vistas es index, donde se muestran todos las publicaciones filtradas de la siguiente forma: - Las más votadas: Se muestran todas las publicaciones existentes ordenadas por puntuación. - Las más visitadas: Se muestran todas las publicaciones existentes ordenadas por visitas. - Top Usuarios Ciencéame: Se muestran los cincuenta usuarios con más puntuación dentro de la base de datos de Ciencéame. Estos usuarios también pueden acceder a la acción show del mismo controlador, en el cual se expone el artículo seleccionado de una forma más extensa, con opciones de visitar su enlace externo, compartir en redes sociales y visualizar publicaciones relacionadas con el artículo que se está visitando. Esto se consigue gracias al método que proporciona la gema devise: before_filter :authenticate_user!, :except =>[:index, :show] Lo que no permite a ningún usuario no registrado acceder a las acciones de ningún controlador que no sean show e index de articles_controller. Este método lo proporciona la propia gema devise, lo que permite el acceso a ciertas acciones dependiendo del tipo de usuario. 43

74 2. Usuarios registrados en la aplicación Como especifican los requisitos, los permisos de estos usuarios son mucho más amplios que los permisos de los usuarios que no se han registrado en la aplicación. Pueden acceder a todas las funcionalidades que proporciona la aplicación y que se van detallando en las siguientes iteraciones, incluidas las acciones de articles_controller a las que pueden acceder los usuarios no registrados. A todos estos usuarios se les han asignado una serie de características que les proporcionan ciertas ventajas sobre los usuarios no registrados, a parte de poder acceder a todas las acciones de los controladores. Estas cualidades se expresan en el modelo User: Figura 18: Características del modelo User. - :database_authenticatable: Encripta y almacena la contraseña en la base de datos para validar la autenticidad de un usuario cuando inicia sesión. - :registerable: Este tipo de usuarios pueden registrarse a través de un formulario, con lo que se les permite editar y eliminar su cuenta si lo desean. - :recoverable: Restablece la contraseña de este tipo de usuarios y envía por correo electrónico una notificación de los pasos a seguir para conseguir este objetivo. - :rememberable: Gestiona la creación y la eliminación de un token para recordar a un usuario a partir de una cookie almacenada. - :trackable: Se almacenan en la base de datos firmas de recuento, marcas de tiempo y direcciones IP. - :validatable: Ofrece validaciones de correo electrónico cuando un usuario se registra en la aplicación. 3. Usuario administrador Tal y como especifican los requisitos, existe un usuario de la aplicación denominado admin, que es el único que puede acceder a la parte de administración del sistema, separada totalmente en cuanto a acciones de controlador y vistas del resto de usuarios, ya que cuenta con permisos especiales para la gestión del sistema. 44

75 Por seguridad, estos usuarios no pueden tener las mismas características que los usuarios registrados de la aplicación, sólamente cuentan con: - :database_authenticatable: Encripta y almacena la contraseña en la base de datos para validar la autenticidad de un usuario cuando inicia sesión. - :trackable: Se almacenan en la base de datos firmas de recuento, marcas de tiempo y direcciones IP. Estos usuarios no pueden ser registrables, es decir, no pueden ser registrados mediante un formulario como los usuarios mencionados anteriormente, únicamente se pueden crear desde el servidor donde se encuentre alojada la aplicación y teniendo los permisos necesarios. En próximos capítulos se explicará el sistema de administración de forma más detallada Interfaz gráfica sistema de registro Para conseguir un diseño más atractivo, el formulario de registro de la aplicación está dentro de un modal con las clases que proporciona Bootstrap, cuyo enlace se encuentra en la navbar 10 de la ruta principal, es decir, donde se accede por defecto. Esta opción aparece sólo si el usuario no ha iniciado sesión en el sistema aún. Por lo tanto, mediante Javascript, cuando se haga click sobre el enlace, en vez de dirigir al usuario a la vista de registro sin más, la aplicación se redirige a la vista de registro colocando ésta sobre la vista en la que el usuario se encuentre en ese momento. En este formulario se solicitan diferentes datos que hacen posible el registro en la aplicación (Ver figura 19): - Nombre: El usuario debe introducir su nombre. - Apellido: El usuario debe introducir su apellido, o apellidos en el formulario. - Correo Electrónico: El usuario debe introducir su correo electrónico. Este dato es importante, ya que es único para cada usuario, es decir, no van a existir dos iguales en la base de datos. - Contraseña: El usuario debe introducir la contraseña con la que posteriormente accederá a la aplicación. 10 Barra o menú de la aplicación situado en la parte superior del diseño. 45

76 - Confirmación de contraseña: El usuario debe introducir la misma contraseña que en el campo anterior para obtener un registro válido Figura 19: Interfaz registro de usuarios Inicio de sesión Esta función consiste básicamente en un mecanismo que comprueba si el que se ha introducido en el formulario de login existe en la base de datos de la aplicación y a su vez, la contraseña que el usuario ha introducido cuando se registró es la misma que ha introducido al intentar iniciar sesión. Esta funcionalidad nos la proporciona la gema devise. En cuanto a la interfaz de usuario que hace posible el inicio de sesión al igual que la del formulario de registro, consiste en un modal 11 con los items y contraseña (Ver figura 20). Figura 20: Interfaz inicio de sesión de usuarios. 11 En el diseño de interfaz de usuario, una ventana modal es un control gráfico subordinado a la ventana principal de una aplicación que crea una interfaz donde no se puede utilizar la ventana principal[mod14]. 46

77 Gestión de la foto de perfil de cada usuario En el mundo de la investigación es muy importante cuidar la marca personal de cada profesional, cómo dice Marta Moral del Castillo en su blog[mar14] La percepción psicológica que se desprende de tu foto de perfil en redes sociales es determinante para tu marca personal. En muchos casos, es la primera imagen que una persona puede tener de ti. De ahí la importancia de escoger una imagen positiva que defina a tu persona. Por lo tanto, en Ciencéame se quiere dar la opción a los usuarios de mostrar su foto de perfil al resto de usuarios de forma opcional. Para la construcción de esta funcionalidad se ha utilizado la gema paperclip (Ver ANEXO 6) de rails, que gestiona y almacena todos los archivos que se suben o descargan de la aplicación. También resulta necesaria la creación de una migración nueva para el modelo User donde se le añade el campo avatar. En este campo, paperclip introduce un fichero, que en este caso es la foto de perfil del usuario. Lo positivo de utilizar esta gema es la gestión que hace con los ficheros en el directorio public de la aplicación. Para cada usuario paperclip crea un árbol de directorios donde se almacenan diferentes ficheros. Lo que conlleva a que cada usuario tenga su propio directorio es que se cubre con seguridad la condición de que si dos usuarios usan el mismo nombre para su foto de perfil, nunca se confundirá. Otra de las ventajas de esta gema, es que se le puede indicar el tamaño de imagen que se va a utilizar, es decir, por defecto guarda tres tamaños diferentes denominados medium, large y square además de la imagen original seleccionada por el usuario. La configuración de paperclip dentro del modelo User, se puede observar en la figura 21. Figura 21: Configuración paperclip 47

78 Como se observa en la figura 21, sólo se han tomado las imágenes con dimensiones 300x300 y 100x100, se ha configurado una imagen con valor por defecto llamada missing.png y no se permiten subir ficheros con dimensiones mayores a 10 Megabytes, para evitar la subida de ficheros demasiado pesados. Cuando se muestra la foto de perfil de un usuario tanto en la acción index, como en la acción show pertenecientes a articles_controller, también se recurre al campo avatar del modelo User como muestra la figura 22. Figura 22: Comprobación si existe avatar En cuanto a la interfaz gráfica, se ha creado un modal cuando se enlaza a cambiar la foto de perfil que contiene el formulario correspondiente a la subida de archivos, tal y como se muestra en la figura 23. Figura 23: Interfaz modal para la selección de foto de perfil. 48

79 En la figura 24 se expone un árbol de directorios tal y como paperclip organiza los ficheros que los usuarios suben a la aplicación, para que el lector aprecie de forma visual. Figura 24: Árbol de directorios generado por paperclip Existen muchos directorios casi sin contenido, ya que sólo se utilizan algunas funcionalidades de la gema, sin embargo, con el diagrama se pretende mostrar a los lectores como paperclip almacena las imágenes de dos usuarios diferentes. Cuando se añade una nueva foto de perfil, la anterior, es eliminada automáticamente para no saturar el servidor Búsqueda de usuarios La búsqueda de usuarios dentro de una red social es uno de los pilares fundamentales, ya que encontrar a usuarios conocidos para visitar su perfil o enviarles mensajes privados es uno de los requisitos establecidos por los clientes de la aplicación. De esta acción se encarga el método search dentro de users_controller, tal y como se aprecia en la figura 25. Este método recoge la keyword introducida por el usuario y la compara con el nombre y apellido de cada uno de los usuarios de la aplicación, dando como resultado las coincidencias obtenidas. 49

80 Figura 25: Método search dentro de users_controller El método anterior devuelve todas las coincidencias hasta un máximo de cincuenta, ordenando los resultados por orden de puntuación de los usuarios, es decir, cuando mayor puntuación tenga un usuario mayor es su posicionamiento dentro de la aplicación. Los resultados se muestran en la vista search dentro de las vistas de user tal y como se aprecia en la figura 26. Figura 26: Vista search de user 50

81 Diagrama de Clases El diagrama de clases procedente de esta iteración se puede apreciar en la figura 27. Figura 27: Diagrama de clases Iteración Diagrama de Secuencia El diagrama de secuencia representado en la figura 28, muestra la interacción de los objetos que influyen en el registro de un usuario en Ciencéame, siempre que el registro finaliza de forma correcta. Figura 28: Diagrama de secuencia Iteración 2 51

82 El diagrama de secuencia representado en la figura 29, muestra la interacción de los objetos que influyen en la búsqueda de un usuario concreto de la base de datos y el acceso a su perfil de forma satisfactoria. Figura 29: Diagrama de secuencia Iteración 2 52

83 5.4. Iteración 3. Gestión de publicaciones Los artículos o publicaciones en Ciencéame se consideran como todas aquellas divulgaciones que los usuarios registrados publiquen en la red social. Estas cuentan con un título, una breve descripción de la publicación real y un enlace al artículo original. Es importante destacar que los artículos no se suben a la base de datos de la aplicación, sino que, en Ciencéame se publican referencias a artículos externos al sistema Categorización de publicaciones Cada usuario registrado en Ciencéame tiene unas preferencias de caracter científico distintas, por lo que hay que tener en cuenta una categorización de sus intereses consiguiendo que cada uno de ellos visualice sólo las noticias sobre temas que le parezcan interesantes. Estas categorías se han basado en las que proporciona el código UNESCO[une14], escalables en un futuro, ya que por el momento se han introducido veinticuatro de todas las posibles. Mediante la gema acts-as-taggable-on, se consigue introducir diferentes categorías a cada publicación y a cada usuario dentro de un array de strings que posteriormente puedan ser comparadas para mostrar a cada usuario únicamente sus intereses con el método: current_user.categories_articles El método anterior significa que sólamente se devuelven las publicaciones cuya categoría coincida con los intereses del usuario actual (current_user), pudiendo editar éste en cualquier momento las categorías que quiera que se muestren en su sesión. 53

84 Gestión de artículos Cuando un usuario registrado accede a la página principal, a la izquierda de su pantalla (Ver Figura 30) puede encontrar un botón con el texto Haz una publicación. Al hacer click sobre él, la aplicación activará la acción new de articles_controller, lo que lleva al usuario a una nueva interfaz en la que tiene que introducir obligatoriamente el título de la publicación, una breve descripción sobre lo que trata y el enlace externo donde ha encontrado el artículo. Por otro lado, si el usuario que realiza la publicación quiere que sus publicaciones ganen posicionamiento dentro de Ciencéame opcionalmente podrá rellenar cuatro campos correspondientes a los atributos tag1, tag2, tag3, tag4, y asignar categorías que después se corresponden con los intereses de los usuarios de la aplicación como se ha mencionado anteriormente. Figura 30: Proceso para la creación de una publicación. Si en algún momento un usuario decide eliminar una de sus publicaciones, puede hacerlo gracias a un icono que sólo le aparece al autor de la publicación y con el cual la publicación es eliminada automáticamente. Esto se ha implementado mediante el método destroy de articles_controller. Figura 31: Código Ruby con la condición para eliminar una publicación. 54

85 Figura 32: Interfaz para la eliminación de una publicación. Para dar más posibilidades al usuario de elegir qué publicaciones quiere visualizar existen otros filtros además de las categorías: Figura 33: Filtros de las diferentes publicaciones. - Lo más votado: Dentro de las categorías que ha elegido el usuario, se le muestra aquellas publicaciones que han sido más votadas dentro de la aplicación. - Lo más visitado: Dentro de las categorías que el usuario eligió al registrarse, se le muestra aquellas publicaciones que han sido más visitadas por todos los usuarios de Ciencéame. - Top Ciencéame: Cogiendo todas las publicaciones almacenadas en la base de datos, el sistema las ordena según su puntuación para que el usuario pueda visualizar cuáles son las publicaciones más valoradas dentro de toda la aplicación. - Mis publicaciones: El usuario puede visualizar todas sus publicaciones ordenadas según su puntuación y así comparar cómo se posicionan respecto al resto de filtros establecidos. 55

86 Estos filtros se han conseguido realizando un case 12 de un parámetro que se le pasa a la acción del controlador mediante la URL. La acción del controlador recibe este parámetro y dependiendo del tipo, ordena los artículos que se van a mostrar de una forma u otra (Ver figura 34). Figura 34: Case encargado de filtrar las diferentes publicaciones. Gráficamente, cada publicación contará con los siguientes elementos: - Título: Título que el autor propuso para la publicación. - Breve descripción: Mediante la función truncate() con la que cuenta ruby, se extraen los 140 primeros caracteres que el autor propuso como descripción de la publicación. - Nombre y apellido del autor: El nombre y apellido almacenado en la base de datos del autor de la publicación. - Fecha y hora de publicación: Fecha en la que el autor propuso la publicación, visualizada con el formato: %d/ %m/ %Y %H: %M - Puntos positivos y negativos: Se muestran los puntos positivos y negativos que tiene cada publicación y se van actualizando a medida que los usuarios de la aplicación realizan sus votaciones. - Visualizaciones: Arriba a la derecha de cada módulo, se muestran las visitas que ha tenido cada publicación dentro del sistema, tal y como se aprecia en la figura Visualizar publicación: Existe un enlace disponible para todos los tipos de usuarios que redirige a los usuarios a la acción show del controlador articles, que es personalizada para cada publicación. 12 Case: Función similar al switch utilizado en Java. 56

87 - Subir y bajar puntos: En cada módulo existen dos enlaces, el primero en color azul, sube un punto positivo a la publicación, el segundo, en color rojo, resta un punto a la publicación. Estas acciones sólamente están disponibles para usuarios registrados en el sistema. - Eliminar publicación: Los autores de cada publicación pueden eliminar la misma pulsando en este enlace en cualquier momento. Figura 35: Ejemplo de la interfaz de una publicación Búsqueda de publicaciones La acción search de articles_controller es la encargada de realizar búsquedas a partir de una keyword sobre los artículos almacenados dentro de la aplicación. Para desarrollar esta acción se ha utilizado la gema pg_search (Ver ANEXO 6) que es la encargada de optimizar las búsquedas que se hacen dentro de la aplicación. Para poder realizar las búsquedas, se ofrece al usuario un buscador dentro de la navbar (Ver Figura 36) de la aplicación, donde el usuario escribe las palabras clave que le interesan. Figura 36: Interfaz del buscador de artículos. Para que los usuarios encuentren los artículos relacionados en sus búsquedas, se ha configurado el método search del modelo Article para que se compare palabra por palabra dentro del título, la descripción y las cuatro etiquetas que tienen las publicaciones como atributos de la base de datos para ganar posicionamiento dentro de la aplicación. De esta forma no es necesario que las cadenas de búsqueda coincidan de forma completa con los campos de búsqueda. 57

88 Figura 37: Método search procedente de articles_controller. Para mayor eficiencia en este método, se realizan dos operaciones: - lowercase(): Compara las keywords en minúsculas para encontrar mayor resultados. - :ignoring =>:accents: Elimina los acentos de las palabras cuando realiza búsquedas, para afinar mucho más en los resultados obtenidos. Figura 38: Acción search del modelo Article Personalización de publicaciones La acción show del controlador articles_controllers se ha construido con la intención de dar más funcionalidades a cada publicación, es decir, permitir al usuario introducirse de lleno en el artículo con debates, compartirlo en redes sociales y mostrar las publicaciones relacionadas. Esta acción muestra toda la información relativa a la publicación que recibe por parámetro de la acción index, hace una búsqueda de sus artículos relacionados y los almacena en la dentro del controlador articles_controller. En esta acción también se suman puntos a los usuarios cuyas publicaciones reciben visitas, aumentando así las visitas de cada artículo. Podemos observar todas estas funcionalidades en la figura 39. Figura 39: Acción show procedente de articles_controller. 58

89 En cuanto a la interfaz de usuario para cada publicación, se puede observar en la figura 40. Figura 40: Interfaz personalizada para cada artículo. De cada unas de las publicaciones se muestra al usuario su título, la descripción completa del enlace. Además se permite compartir en diferentes redes sociales y visitar el enlace externo donde se encuentra la publicación completa. A la derecha se muestran un máximo de seis artículos relacionados y debajo se observan las conversaciones y comentarios, cuyo contenido se desarrolla de forma más amplia en la iteración 7 (Ver página 72). 59

90 Diagrama de Clases El diagrama de clases procedente de esta iteración se puede apreciar en la figura 41. Figura 41: Diagrama de clases Iteración Diagrama de Secuencia El diagrama de secuencia expuesto en la figura 42, representa la interacción de los objetos que influyen cuando un usuario registrado realiza una publicación de forma correcta. Figura 42: Diagrama de secuencia Iteración 3 60

91 5.5. Iteración 4. Internacionalización de la aplicación Internet es un medio de comunicación ubicuo, es decir, accesible desde casi cualquier parte del planeta. Por la propia naturaleza de la red, sus productos y servicios pueden estar al alcance de cualquier persona del mundo con sólo unos clicks, por lo que es muy importante estar preparado para ofrecer servicios en distintos idiomas[lan14]. Tal y como especifican los requisitos de la aplicación, el proyecto debe estar disponible por el momento en dos idiomas, español e inglés y ser escalable a los que sean necesarios en el futuro. Para conseguir esta funcionalidad se ha requerido de la gema I18n (Ver ANEXO 6), la cual permite gestionar la internacionalización en las aplicaciones desarrolladas en Rails. Después de realizar su configuración se han tenido que crear dos archivos, es.yml para las traducciones en español y en.yml para las traducciones en inglés como se observa en la Figura 43. Figura 43: Comparación entre los documentos en.yml y es.yml. Como se puede apreciar, la lógica de estos ficheros es tener variables con el mismo nombre y distintas traducciones por lo que, dependiendo del locale 13 de ese momento, la aplicación recurre a un fichero u otro. Este sistema es muy fácil de escalar, ya que sería suficiente con añadir otro fichero más, por ejemplo, de.yml (para alemán) y hacer ese fichero accesible para los archivos de configuración locale. 13 Ficheros donde se configuran los idiomas de los que va a constar la aplicación. 61

92 Una vez completada esta acción se ha recurrido al fichero application.rb del directorio config y se ha establecido la siguiente configuración por defecto: config.i18n.default_locale = :en Este código implica que el inglés será el idioma natural para todos los usuarios que visiten ciencéame. Para conseguir que los usuarios registrados no tengan que cambiar de idioma cada vez que accedan a la aplicación, se ha creado un atributo denominado locale dentro del modelo User donde se va almacenando el idioma que elige el usuario en cada momento, y que cuando vuelva a acceder a la web siga teniendo el último idioma seleccionado. En cuanto a interfaz (Ver Figura 44), se han colocado dos iconos representando los idiomas disponibles y únicamente pulsando sobre cada una de ellas se va cambiando el idioma en el que se muestran los textos. Figura 44: Interfaz para cambiar de idioma la aplicación. Esto se ha conseguido gracias al método de users_controller llamado set_locale_user (Ver Figura 45) que se invoca cuando el usuario quiere cambiar el idioma, y que hace que automáticamente se modifique en la base de datos. El fichero application_controller cuenta con un before_filter (Ver Figura 46) donde se cambia el idioma de la aplicación por el idioma que tiene el usuario en cuestión, cada vez que que el sistema detecta algún cambio de idioma, cambia el idioma de las vistas. Figura 45: acción set_locale_user procedente de users_controller. 62

93 Figura 46: acción set_locale procedente de application_controller Diagrama de Secuencia El diagrama de secuencia representado en la figura 47, expresa la interacción de los objetos que influyen cuando un usuario pretende cambiar de idioma las acciones de la aplicación y lo realiza de forma satisfactoria. Figura 47: Diagrama de secuencia Iteración 4. 63

94 5.6. Iteración 5. Gestión de categorías e intereses Debido al gran número de publicaciones que se espera gestionar, los clientes consideran de gran importancia que cada usuario pueda seleccionar qué quiere visualizar en su sesión, es decir, dividir por categorías los artículos que componen la base de datos de Ciencéame. Para implementar esta funcionalidad se abordan los siguientes aspectos: Actualización de categorías mediante rake Se busca la opción que menos recursos consume al sistema a la hora de almacenar en la base de datos diferentes categorías, para que tanto los usuarios como las publicaciones accedan a ellas sin ningún problema relacionado con la escalabilidad. La elección tomada ha sido la creación de un rake de rails. El primer paso consiste en introducir todas las categorías (24) en un archivo con extensión csv, dentro del árbol de directorios /lib/assets/categories.csv, como se aprecia en la figura 48. Figura 48: categories.csv 64

95 Una vez cargadas las categorías en el documento, se realiza una tarea denominada rake que se ejecuta cada vez que se actualice la lista de categorías o se arranque el servidor por primera vez, es decir, solamente hay que introducir de nuevo en la base de datos las categorías cuando se agregue o quite alguna de ellas, o cuando se instale la aplicación en un servidor por primera vez. Cuando ocurra una de las dos opciones anteriores, en consola, dentro del directorio del proyecto se ejecuta el siguiente comando: rake categories:import Automáticamente se importan las categorías a la base de datos y se actualizan con respecto a las antiguas. El código del fichero que realiza esta tarea se muestra en la figura 49. Figura 49: Código Ruby del rake para importar categorías. La funcionalidad de esta tarea dispuesta en el árbol de directorios /lib/task/categories.rake consiste en leer el fichero categories.csv fila por fila, y crear categorías en la base de datos de la aplicación con el mismo nombre que con el que aparecen en la columna name. Esta forma de importar las catgorías al sistema es muy fácil de escalar, tal y como solicitan los clientes en los requisitos de la aplicación, ya que es suficiente con introducir en el fichero categories.csv las nuevas categorías y ejecutar el comando especificado anteriormente. 65

96 Gema acts-as-taggable-on Con el fin de conseguir la mejor gestión para almacenar muchas categorías dentro de la base de datos de la aplicación, se ha instalado la gema acts-as-taggable-on. Esta gema permite almacenar mediante categorías los atributos de modelos concretos indicando a la aplicación mediante la función acts_as_taggable, es decir, indicando a la gema cuales de los modelos van a tener algún atributo categorizables. Una vez introducido este código es imprescindible indicar qué campo del modelo va a tener diferentes categorías. En nuestro caso, dentro del modelo User hemos introducido acts_as_taggable_on :interests y en el modelo Article, acts_as_taggable_on :categories, lo que permite añadir categorías dentro de :interests y :categories. Aunque estos dos atributos se llaman diferente en cada modelo, en realidad van a almacenar la misma información, para posteriormente realizar una comprobación entre los dos arrays que nos genera el método tag_list propornionado por la gema. El siguiente paso consiste en realizar la comparación, para lo que se ha creado un método específico dentro del modelo User tal y como se puede apreciar en la figura 50. Figura 50: acción categories_articles procedente del modelo User. Este método devuelve un conjunto de atributos cuyas categorías coincidan al menos en una con los intereses del usuario, es decir, si al menos una categoría de un artículo coincida con los intereses del usuario, esa publicación se considera relevante para el mismo. Esta comparación se obtiene haciendo uso del método tagged_with que proporciona acts-as-taggable-on. 66

97 Interfaz para la selección de catagorías e intereses El campo interests de User y el campo categories de Article contienen la misma información explicada anteriormente (categorías), por lo tanto, el selector múltiple utilizado en la interfaz de usuario es el mismo en ambos casos. Para ofrecer la capacidad de seleccionar categorías e intereses de forma que no se rompa el diseño utilizado, es decir, debido al número de categorías, se utiliza un diseño de selección amigable. Para este caso concreto, se hace uso de un selector múltiple cuyo código fuente se muestra en la figura 51. Figura 51: Código Ruby selector de categorías. Se puede apreciar que existe un atributo selected, utilizado para mostrar los intereses que el usuario ya tiene almacenados en su tag_list a la hora de editar su información. El resultado final para la implantación de la selección de intereses se muestra en la figura 52. Figura 52: Interfaz del selector de categorías. 67

98 Diagrama de Clases El diagrama de clases procedente de esta iteración se puede apreciar en la figura 53. Figura 53: Diagrama de clases Iteración Diagrama de Secuencia El diagrama de secuencia representado en la figura 54, expresa la interacción de los objetos que influyen cuando un usuario desea elegir categorías para una publicación y lo realiza de forma satisfactoria. Figura 54: Diagrama de secuencia Iteración 5. 68

99 5.7. Iteración 6. Gestión de mensajes privados Según especifican los requisitos expuestos por los clientes, es necesario que los usuarios registrados dispongan de la opción de enviar mensajes privados entre ellos para así, avanzar en el concepto de red social facilitando la comunicación entre sí. Esto se ha conseguido creando un modelo Message, un controlador messages_controller y una vista index donde se muestran los resultados sobre todos los mensajes enviados y recibidos. En el modelo Message se especifican las relaciones que tiene con el modelo User y en el controlador las acciones que se van a realizar, es decir, index para mostrar los mensajes y create para crearlos. El enlace para enviar mensajes se encuentra en la acción show del controlador users_controller, donde al pulsar, enlaza a un partial 14 que en este caso es un modal en el que aparece un formulario. Este formulario se compone de un text_area y un submit para enviar el mensaje al usuario destinatario. Figura 55: Interfaz gráfica para envío de mensajes privados. 14 Código Ruby integrado en un fichero gracias a un render, prodecente de otro fichero. 69

100 El modelo Message cuenta con un atributo read que, por defecto, toma el valor false al crear un mensaje, es decir, indica que el mensaje aún no ha sido leído y por lo tanto se muestra una notificación al usuario receptor. En cuando este usuario accede a la acción index del controlador, automáticamente el atributo read para a ser true, por lo tanto, desaparece la notificación de la vista del usuario receptor. Figura 56: Interfaz notificaciones de los mensajes privados Diagrama de Clases El diagrama de clases procedente de esta iteración se puede apreciar en la figura 57. Figura 57: Diagrama de clases Iteración 6. 70

101 Diagrama de Secuencia El diagrama de secuencia representado en la figura 58, expresa la interacción de los objetos que influyen cuando un usuario envía un mensaje priado a otro usuario registrado en la aplicación y lo realiza de forma satisfactoria. Figura 58: Diagrama de secuencia Iteración 6. 71

102 5.8. Iteración 7. Gestión de conversaciones y comentarios Cuando se trata de artículos de investigación con opiniones subjetivas y dado que Ciencéame pretende encontrar el mayor número de opiniones sobre todas las categorías y temas, es muy importante la construcción de un sistema de conversaciones públicas entre usuarios. Estas conversaciones se muestran en la vista show de articles_controller, ya que se ha considerado apropiado que los comentarios de cada artículo aparezcan en la vista de la información de dicha publicación. El diseño que se ha tomado para la realización de esta tarea engloba a publicaciones, conversaciones y comentarios: - Artículos: Cada publicación puede tener asociadas de 0 a n conversaciones. - Conversaciones: Cada conservación puede tener asociados de 0 a n comentarios y pertenece a un artículo. - Comentarios: Cada comentario pertenece a una conversación o a otro comentario, es decir, si un comentario pertenece a una conversación, entonces se organiza en forma de árbol de comentarios a raíz de esa conversación. Si por otra parte un comentario depende de otro comentario, éste es el hijo del comentario del que depende, y se tabulan en función del comentario padre para facilitar la lectura del hilo de la conversación. En la figura 59 se observa gráficamente el diseño del árbol de comentarios que implementa las conversaciones de los árticulos. Figura 59: Diagrama del diseño de las conversaciones y comentarios Para ello se ha hecho uso de la gema ancestry (Ver ANEXO 6), que mediante la función has_ancestry en el modelo Comment, cada comentario puede hacer utilizar los métodos proporcionados por la gema, es decir, conseguir la estructura de comentarios planteada anteriormente. 72

103 Los métodos utilizados para la creación del árbol de comentarios son los siguientes: - Subtree: Genera un conjunto del árbol con todos los hijos del padre indicado, del modo comment.subtree. - Ancestors: Genera en un array todos los padres de un nodo dado. Esta función se ha utilizado para conseguir indentar cada nodo 40 px a la izquierda más que su padre directo y conseguir un efecto visual muy cómodo para que el usuario entienda qué comentarios son hijos de otros de la siguiente forma: Figura 60: Distinción entre clases css para la identación de comentarios Una vez realizado el diseño, y organizado todo el árbol de comentarios, se han tenido que ordenar para que cada uno de los comentarios se anide en el lugar correcto. Esta funcionalidad se ha conseguido gracias al método de ordenación arrange aplicado a cada conjunto del árbol. El algoritmo de la vista show de articles_controller se muestra en la figura 61, mientras que el resultado final de la interfaz gráfica de la gestión de conversaciones de debate y comentarios se expone en la figura 62. Figura 61: Código Ruby del algoritmo para mostrar los comentarios. 73

104 Figura 62: Estructura gráfica del diseño de conversaciones y comentarios. Uno de los privilegios que tienen los usuarios registrados es el de poder comentar las publicaciones que se realizan, por lo tanto, igual que en otras ocasiones, se ha utilizado el método user_signed_in? para que sólo los usuarios registrados puedan acceder, aunque todos aquellos usuarios que accedan a la red puedan visualizar los comentarios existentes. 74

105 En la imagen 63 se muestra la interfaz que tienen los usuarios externos a la aplicación: Figura 63: Estructura gráfica del diseño de conversaciones y comentarios para usuarios externos. Tal y como se aprecia, los usuarios no registrados pueden seguir discusiones aunque no pueden tomar parte en ellas Diagrama de Clases El diagrama de clases procedente de esta iteración se puede apreciar en la figura 64. Figura 64: Diagrama de clases Iteración 7. 75

106 Diagrama de Secuencia El diagrama de secuencia representado en la figura VVV, expresa la interacción de los objetos que influyen cuando un usuario publica un comentario dentro de la interfaz de un artículo concreto y lo realiza de forma satisfactoria. Figura 65: Diagrama de secuencia Iteración 7. 76

107 5.9. Iteración 8. Gestión del sistema de votación Cuando se expusieron los requisitos de la aplicación se fue muy estricto con la rigurosidad de que el sistema de votos debía ser seguro y no permitir a un usuario votar una publicación más de una vez. Hay que tener en cuenta que sólo los usuarios registrados puedan hacer uso de esta acción. Por lo tanto se ha creado un modelo llamado Rated.rb donde se almacenan los identificadores de cada publicación que ha sido votada, junto con el identificador del usuario que ha votado dicho artículo. Esto se ha conseguido comparando, a la hora de mostrar los artículos, si el usuario actual y el artículo en concreto coinciden a la vez en la tabla de votaciones (Ver Figura 66). Figura 66: Código Ruby de la condición para poder votar publicaciones. En cuanto a la interfaz, los enlaces de voto se presentan activos y coloreados (Ver primera imagen de la Figura 67), mientras que si el usuario ha votado un artículo los enlaces de voto se desactivan y las imágenes se presentan en color gris(ver segunda imagen de la Figura 67). Figura 67: Comparación gráfica entre una publicación votada y no votada. 77

108 Diagrama de Clases El diagrama de clases procedente de esta iteración se puede apreciar en la figura 68. Figura 68: Diagrama de clases Iteración Diagrama de Secuencia El diagrama de secuencia representado en la figura 69, expresa la interacción de los objetos que influyen cuando un usuario vota una publicación de forma satisfactoria. Figura 69: Diagrama de secuencia Iteración 8. 78

109 5.10. Iteración 9. Creación del sistema de visitas Los requisitos de los clientes establecen como necesario un sistema que controle que cada visita a la vista show del controlador articles_controller, únicamente se cuenta una vez por usuario. La forma más precisa para conseguir este objetivo es comprobar la dirección IP con la que se accede a cada publicación y sólamente contabilizar esa visita si no se ha accedido con anterioridad. Después de barajar diferentes alternativas con las que conseguir este fin, se utiliza la gema impressionist (Ver ANEXO 6). Esta gema nos permite establecer ciertas acciones del controlador como impressionables, es decir, recuperar estadísticas de lo que ocurre en ellas. En este caso, como indica la figura 70, ha sido necesario establecer como impressionable la acción show del controlador articles, ya que es donde vamos a necesitar conseguir estadísticas. Figura 70: Configuración en el modelo Article de la gema impressionist. A la hora de recuperar la información de las visitas que tiene cada una de las publicaciones, impressionist proporciona un método denominado impressionist_count, que muestra como resultado el número de visitas totales a la vista, en este caso filtrado por la dirección IP como se puede apreciar en la figura 71. Figura 71: Código Ruby de la vista donde se captan las visitas. 79

110 Diagrama de Secuencia El diagrama de secuencia representado en la figura 72, expresa la interacción de los objetos que influyen cuando un usuario visita una publicación de forma satisfactoria. Figura 72: Diagrama de secuencia Iteración 9. 80

111 5.11. Iteración 10. Administración de la aplicación Es muy importante contar con un sistema de administración de la red por diferentes razones: - Cualquier persona, que no esté muy relacionada con el mundo de la informática, puede realizar cambios básicos en la aplicación en un momento determinado. Por ejemplo, en el caso de Ciencéame, se pueden realizar cambios en el algoritmo de control de puntos de la aplicación. - Al contar con una administración, es muy sencillo establecer una moderación dentro de la red social, ya que no se sabe cómo pueden llegar a actuar los usuarios que la integren y en ocasiones es probable que sea necesario eliminar cierta publicación o usuario sin necesidad de acceder al servidor donde se encuentra alojada la plataforma. En el caso de Ciencéame se expecifica en los requisitos de los clientes como indispensable la creación de este tercer tipo de usuario. Para conseguir esta funcionalidad dentro del sistema se ha creado un modelo denominado Admin, incluyendo sus enlaces en el archivo de rutas routes.rb y configurando todos los archivos necesarios para poder acceder a la administración del sistema mediante la siguiente URL, por supuesto totalmente modificable en cualquier momento: Todas estas funcionalidades vienen integradas igual que las de User en la gema Devise, lo que ayuda a tener un mayor control sobre la gestión de los distintos usuarios. A continuación Ciencéame nos dirige a un login muy parecido al del resto de usuarios, pero al que sólo se puede acceder con las claves de administración. 81

112 Figura 73: Interfaz inicio de sesión administración. Cuando el administrador accede a la aplicación con las claves oportunas, se encuentra con un menú en el que puede realizar tres acciones: 1. Visualizar los usuarios: Se muestran todos los usuarios con su información ordenados por su fecha de creación y paginados de diez en diez para hacer más fluido el funcionamiento, ya que el sistema sólo tendrá que cargar los usuarios de cada página. Si mostrasen todos los usuarios, la aplicación tardaría demasiado en cargar esa vista. A parte de la información del usuario, el administrador se encuentra con un botón donde puede eliminar al usuario que considere oportuno si en algún momento es necesario. Figura 74: Interfaz de los usuarios en la administración. 82

113 2. Visualizar publicaciones: Se muestran todas las publicaciones de los usuarios con su información ordenadas por su fecha de creación y paginados de diez en diez por el mismo motivo que los usuarios. Las publicaciones también cuentan con un botón para ser eliminadas si el administrador lo considera oportuno. Figura 75: Interfaz de las publicaciones en la administración. 3. Cambios en el algoritmo de puntuación: Tal y cómo se presentó en la iteración XXX, los valores que componen el algoritmo sólo pueden ser modificados dentro de la parte de administración de la red. Para esto se crea el modelo Algorithm junto con el controlador algorithms_controller encargado de las acciones que se realicen sobre estos elementos. Los acciones encargadas de gestionar los elementos de este modelo son: index, encargado de mostrar todos los elementos que lo componen, y update_al, encargado de actualizar los valores del algoritmo, tal y como puede apreciarse en la figura 76. Figura 76: Acciones procedentes de algorithms_controller. 83

114 Este controlador, únicamente se encuentra dispuesto en la parte de administración de la aplicación, ya que ningún otro tipo de usuario debe ser capaz de acceder a las funcionalidades que lo componen. El resultado final de la interfaz para actualizar los valores del algoritmo de la administración se puede observar en la figura 77. Figura 77: Interfaz para cambiar los valores del algoritmo general. Como se puede apreciar, la parte importante de la interfaz que cuya funcionalidad consiste en cambiar el algoritmo general de puntuaciones, se basa en un formulario que envía mediante parámetros el identificador del campo a modificar y el nuevo value a la acción update_al, que modifica este valor. En la figura 78 se muestra la estructura que presenta la administración dentro de la aplicación. La administración utiliza sus propios controladores y vistas para que sea mucho más seguro a la hora de ejecutar el sistema. 84

115 Figura 78: Estructura de directorios de la administración de la aplicación. 85

116 Diagrama de Clases El diagrama de clases procedente de esta iteración se puede apreciar en la figura 79. Figura 79: Diagrama de clases Iteración Diagrama de Secuencia El diagrama de secuencia representado en la figura 80, expresa la interacción de los objetos que influyen cuando el administrador elimina un usuario de la aplicación de forma satisfactoria. Figura 80: Diagrama de secuencia Iteración

117 5.12. Iteración 11. Creación del algoritmo de gestión de puntos El rango de puntuaciones sobre el que se basa Ciencéame es de 0 a infinito, es decir, cuando un usuario se registra comienza con 0 puntos, y dependiendo de su actividad puede sumar puntos hasta un techo de infinitos puntos. Esta gestión debe ser controlada de alguna forma, por lo que se ha creado un algoritmo encargado de sumar o restar puntos a cada uno de los usuarios registrados dependiendo de su dinamismo dentro de la red social. En la figura 81 se aprecia cómo se visualiza la puntuación de cada usuario en su perfil, en la vista show de users_controller. Figura 81: Visualización de la puntuación de cada usuario. Este algoritmo, según los requisitos del sistema, debe actualizar los valores que se suman a cada usuario por cada actividad, ya que hasta que no se tenga un buen feedback, no se sabe con seguridad si los puntos acumulados por cada evento son los adecuados. 87

118 Se expusieron diferentes opciones a la hora de gestionar los puntos de los usuarios: - Crear una tarea en el servidor que todos los días, a una determinada hora, actualizase los puntos de todos los usuarios, o a distintas horas fuera actualizando pequeños grupos de usuarios para que no consumiese muchos recursos. Esta opción se descartó, ya que era muy interesante la opción de que los usuarios pudiesen comprobar en tiempo real su puntuación para mejorar su actividad. - La opción escogida es la realización de pequeños algoritmos dentro del modelo User a los que sólo se accede cuando el usuario realiza una determinada acción, es decir, si un usuario realiza una publicación, únicamente se comprueba si ha publicado un artículo y se le suman puntos por ello. Para conseguir que los valores del algoritmo se puedan actualizar, agregar o eliminar se ha contruido el modelo Algorithm, encargado de almacenar un valor name y un valor value para cada uno de los artículos. Las actividades que generan puntos para los usuarios que las realicen son las siguientes: 1. Visitas: Cada vez que un artículo publicado por un usuario reciba una visita, el autor de la publicación reciba en su puntuación un total de puntos. En la figura 82 se puede apreciar el método encargado de esta acción. Figura 82: Código Ruby de la acción points_visits!. 2. Publicaciones: Cuando un usuario realiza una publicación de una referencia, pueden ocurrir dos cosas en cuanto a su puntuación: - Si hace menos de tres días que realizó su última publicación, el usuario recibe un total de 0.1 puntos. 88

119 - Si hace más de tres días que un usuario realizó su última publicación, recibe 0.08 puntos. En la figura 83 se puede apreciar el método encargado de esta acción. Figura 83: Código Ruby de la acción points_new_publication!. Con esta gestión de puntos se quiere motivar a los usuarios a no dejar de participar dentro de la red para ganar puntos y poder posicionar su marca personal mucho mejor dentro del ranking de usuarios de Ciencéame. 3. Compartir Ciencéame en redes sociales: Cuando un usuario dentro de la acción index de articles_controller comparte el contenido de Ciencéame en su conjunto, recibe un total de 0.01 puntos. 4. Compartir una publicación en redes sociales: Cuando un usuario comparte el contenido de un artículo en alguna de las redes sociales que ofrece Ciencéame, es premiado con 0.01 puntos en su valoración. 5. Votación positiva sobre una publicación: Cuando un usuario realiza una votación positiva en la referencia a un artículo, el usuario que publica esa noticia recibe un total de 0.05 puntos. En la figura 84 se puede apreciar el método encargado de esta acción Figura 84: Código Ruby de la acción points_article_up!. 89

120 6. Votación negativa sobre una publicación: Cuando un usuario realiza una votación negativa sobre una publicación, el autor de la misma observa menguada su puntuación total en 0.02 puntos. En la figura 85 se puede apreciar el método encargado de esta acción Figura 85: Código Ruby de la acción points_article_down! Diagrama de Clases El diagrama de clases procedente de esta iteración se puede apreciar en la figura 86. Figura 86: Diagrama de clases Iteración

121 5.13. Iteración 12. Gestión de la seguridad de la aplicación Dada la cantidad de información que se intercambia entre diferentes dispositivos a través de internet, es importante tener en cuenta desde el punto de vista tecnológico cómo hay que abordar la seguridad de la información relativa a cada usuario.[seg14] Para el desarrollo de Ciencéame se tiene todo esto muy en cuenta, ya que los usuarios que accedan a esta red social deben sentirse seguros de poder navegar dentro de la aplicación sin que peligre la integridad de su información. Para conseguir todo esto, se han puesto diferentes medios Confirmación de correo electrónico La confirmación del correo electrónico es una de las reglas básicas en cualquier web que mantenga usuarios registrados, ya que para cualquier usuario con conocimientos informáticos es muy sencillo poblar la base de datos de la aplicación de falsos usuarios. En Ciencéame se resuelve este problema con la ayuda de la gema Devise (Ver Anexo 6), obligando a cada usuario a confirmar que verdaderamente el correo electrónico que ha utilizado es realmente suyo. Para ello se ha marcado la opción :validatable dentro del modelo User Rack-attack Rack-attack (Ver ANEXO 6) es una gema disponible para Rails que proporciona la oportunidad de banear direcciones IP de una forma rápida y cómoda. Este sistema es muy útil ya que si algún usuario de la red consigue saltarse la seguridad que proporciona la confirmación del correo electrónico, y desarrolla un bot para crear usuarios de forma masiva y causar problemas a la aplicación, se puede detectar y detener antes de que cause algún problemas. La configuración de la gema se muestra en la figura

122 Figura 87: Configuración de la gema Rack-attack. Como se observa, existen dos listas en las que se pueden almacenar direcciones IP, una lista blanca en la que introducimos nuestra IP (la IP de desarrollo local, es decir, ) local para no tener problemas durante el desarrollo del proyecto y una lista negra donde se añaden aquellas direcciones IP que intenten realizar actividades ilícitas en Ciencéame. Con un objetivo similar, se añade otro mecanismo de seguridad mediante el cual se observa que si una dirección IP pretende acceder diez veces en un minuto a la acción de registro, inmediatamente es baneada durante treinta minutos. Este mecanismo de seguridad, se puede configurar posteriormente según crea conveniente el administrador Cifrado de contraseñas El cifrado o la encriptación de datos significa conseguir su alteración, generalmente mediante el uso de una clave, de modo que no sean legibles para quienes no posean dicha clave, contribuyendo a la seguridad de la información, especialmente frente a casos de acceso indebido, fuga, extravío y robo de datos. En el caso de Ciencéame, Devise (Ver Anexo 6), al hacer el registro de usuarios, encripta la contraseña de forma que ni siquiera el administrador conoce la clave para desencriptarla. 92

123 Una contraseña básico como es asdfasdf, en un caso concreto y no repetido se transforma a ojos del administrador en la siguiente cadena de caracteres: $2a$10$bxQz6GyhUdzSaPPZzOe2gOkGz7SV9jFTy6UhuJZRLIx9wf.ixwnBm Por otra parte Devise, proporciona la opción en su configuración de elegir un número de caracteres mínimos a la hora de que un usuario introduzca la contraseña de registro. En este caso,resulta bien la configuración por defecto que indica que las contraseñas deben tener como mínimo 8 caracteres, tal y como se aprecia en la figura 88. Figura 88: Configuración longitud contraseña con Devise. 93

124 5.14. Iteración 13. Marketing y posicionamiento SEO Más del 80 % de los usuarios utilizan los buscadores para encontrar productos e información. El motor de búsqueda más conocido y utilizado es Google[goo14b], y está atendiendo a más de mil millones de consultas diarias. Según el último informe realizado por Nielsen[nie14], más del 74 % de usuarios utilizan los motores de búsqueda antes de hacer una compra, y el porcentaje de usuarios que utilizan los motores de búsqueda se incrementa cada día.[bus14] Como ocurre en otras redes sociales, para Ciencéame es muy importante disponer de herramientas y mecanismos que le permitan llegar al mayor número de usuarios potenciales. El marketing online y el posicionamiento SEO son las formas más utilizadas para conseguir registros hoy en día en internet. Se explican los procesos que se han realizado para conseguirlo Meta tags Las Meta Etiquetas o Meta Tags son etiquetas de información que se añaden en el código Html de cada página web para aportar información relevante sobre la categorización de la misma. Es una información a la que sólo se puede accederse a través del código fuente y que sólo resulta relevante para los buscadores, pero en el mundo SEO 15 siempre han jugado un papel de gran importancia y son esenciales a la hora de posicionar una web para determinadas palabras clave. Un usuario que navegue normalmente por una página web nunca las observa, a no ser que haga una búsqueda en Google, ya que los resultados que devuelve, cuando las meta etiquetas están colocadas adecuadamente y las ordenes que damos a los robots de búsqueda son correctas incluye como resultado nuestra web.[met14] En Ciencéame también se tiene en cuenta este aspecto, ya que es deseable que esta aplicación se encuentre bien posicionada dentro de los motores de búsqueda de internet. Para ello se ha recurrido a una gema que facilita la realización de posicionamiento SEO básico denominada meta-tags (Ver ANEXO 6). 15 Search Engine Optimization o posicionamiento web, es el proceso de mejorar la visibilidad de un sitio web en los resultados de diferentes buscadores. 94

125 Colocando meta tags en las acciones index y show del articles_controller.rb se consigue incentivar las búsquedas de las palabras clave que contienen los artículos. Figura 89: Title, description y keywords de la acción index procedente de articles_controller. Como puede apreciarse en la figura 89, en la acción index (es decir, la página principal de Ciencéame) se añaden tres tipos de meta tags para ganar posicionamiento en internet: - :titile: Título que tiene la vista en la que se encuentra el usuario. - :description: Descripción con la que cuenta la vista en la que se encuentre el usuario. - :keywords: Palabras clave por las que se posiciona la aplicación en los motores de búsqueda. Por otro lado, para que otros usuarios no ganen posicionamiento gracias a Ciencéame, se han marcado con meta tags no index 16 los campos de texto dentro de los debates que puedan tener los usuarios. Esto se hace para evitar que cualquier usuario pueda colocar enlaces a sus propias páginas y conseguir gracias a nuestro posicionamiento, más visitas en sus propias webs. Figura 90: Configuración de comentarios como no index. Figura 91: Configuración de conversaciones como no index. 16 Las URLs no index son aquellas que no se quiere que Google tenga en cuenta a la hora de indexar. 95

126 Tasa de rebote La tasa o porcentaje de rebote (bounce rate) es un término utilizado en los análisis de tráfico de visitantes de las web de Internet. Un rebote se produce cuando un navegante abandona el sitio después de haber visto una sola página web en unos pocos segundos. Muchos sistemas de estadística fijan el tiempo para que una visita se considere rebote en 30 segundos, es decir, un visitante se define como desinteresado si abandona la página antes de 30 segundos. El límite de 30 segundos es un valor de referencia que en algunas aplicaciones de software comercial se está bajando a 5 segundos para evitar counter terrorism (usuarios que recargan las páginas varias veces para falsificar las estadísticas de una web).[reb14] Un bajo porcentaje de abandono indica una buena organización de los contenidos y un aspecto gráfico correcto, que invita al visitante a continuar la exploración del sitio web. La definición analítica de la tasa de rebote de un sitio web es el número de visitantes que visitan una sola página del sitio (por sesión de navegación) dividido por el número total de visitantes. Por lo tanto en Ciencéame se quiere aprovechar este tipo de estadísticas no sólo añadiendo un diseño claro y conciso que ayuda al usuario a mantenerse en la web, sino también añadiendo una columna a cada acción show del articles_controler donde se muestran seis publicaciones relacionadas con el artículo que se está visitando. De este modo, cuando un usuario acceda directamente a un artículo, si su contenido no le parece interesante, dispone de la opción de visitar otras seis publicaciones diferentes dentro de la misma vista, lo que reduce las estadísticas de la tasa de rebote. Estos artículos relacionados se obtienen haciendo un búsqueda mediante la gema pg_search que compara el título, la descripción y las cuatro etiquetas de las que dispone cada artículo, ofreciendo al usuario las publicaciones relacionadas con más puntuación dentro del sistema. 96

127 Referral Traffic en Google Analytics De acuerdo a [tra14b], el tráfico de referencia se utiliza para describir a los visitantes de una aplicación web que provienen de enlaces directos a otros sitios web y no de motores de búsqueda, por ejemplo, cuando alguien hace referencia a una web y otro usuario accede a través de ese enlace y no desde un motor de búsqueda como Google. El tráfico de referencia aumenta el page rank 17 de una web, lo que aumenta los resultados de esa web en una búsqueda de Google. Es deseable tener un alto posicionamiento en Google, ya que figurar en la primera página de una búsqueda puede llevar a muchos más usuarios a una web que si un enlace aparece en la cuarta o quinta página de resultados de búsqueda. El tráfico de referencia es también importante, ya que proporciona una fuente constante de tráfico fuera de los accesos en los buscadores. El referral traffic conduce a visitantes a una aplicación web, lo que puede aumentar los ingresos, ya que son más propensos a comprar una suscripción o un producto, que una persona que lo encuentra al azar y puede darse cuenta que no tiene nada que ver con lo que estaba buscando.[tra14a] Es muy difícil conseguir tráfico de referencia para ganar posiciones en las búsquedas en Google, pero en Ciencéame se intenta facilitar este tráfico añadiendo URLs a las publicaciones que Google pueda indexar con facilidad. De este modo Google puede identificar contenido diferente por cada artículo, lo que hace ganar posicionamiento a Ciencéame y con ello, tráfico de usuarios. Para facilitar la indexación de contenido que realiza Google se hace uso de palabras clave (keywords), ya que cuando Google indexa las URLs, coge éstas para mostrar los resultados adecuados cuando el motor de búsqueda perciba que puede parecer interesante a algún usuario. Esto se ha implementado gracias a la gema friendly_id (Ver ANEXO 6), que se encarga de convertir las URLs de cada artículo a lo que se denomina friendly URLs que Google es capaz de indexar con facilidad. En la siguiente imagen se puede apreciar el código encargado de esta acción en la acción show de articles_controller. Figura 92: Código Ruby ejemplo friendly URLs. 17 Explicacion de lo que es page rank 97

128 Invitación a amigos Otra forma de conseguir referral traffic y a su vez de ganar afiliados es dar a los usuarios registrados la opción de invitar por correo electrónico a sus contactos. De este modo, los contactos reciben un mensaje personalizado de Ciencéame. La figura 93 muestra la interfaz de usuario que da acceso a dicha funcionalidad: Figura 93: Interfaz formulario invitación de amigos. Para conseguir esta acción se ha construido un mailer 18, llamado shared_mailer tal y como se aprecia en la figura 94. Figura 94: Código de shared_mailer.rb Esta acción es la encargada de enviar la plantilla (normalmente construida en HTML) por correo electrónico al que recibe por parámetro cuando se llama a send_ . La plantilla que se utiliza en este caso se puede apreciar en la figura 95. Figura 95: Plantilla enviada con la acción send_ 18 Acciones para el envío de correos electrónicos integradas en rails 98

129 Gestión de redes sociales Perfiles de empresa en Twitter, concursos en Instagram, publicaciones en las que se muestran nuevos productos y servicios en Pinterest, información sobre descuentos en Facebook... Poco a poco, las redes sociales se han convertido en una de las herramientas más utilizadas en la estrategia de marketing online de las empresas.[soc14] Ciencéame no quiere quedarse atrás con todas estas estrategias de marketing online, por lo tanto se permite la posibilidad de compartir enlaces internos de la web de Ciencéame como aplicación y por otro lado, cada publicación de forma más concreta en las siguientes redes sociales: - Twitter: Es un servicio de microblogging, que permite enviar mensajes en texto plano de corta longitud. - Facebook: Es una red social con una gran variedad de servicios para los usuarios. - Google+: Es un servicio de red social operado por Google Inc con una gran variedad de servicios. - Pinterest: Es una red social para compartir imágenes que permite a los usuarios crear y administrar, en tableros personales temáticos, colecciones de imágenes como eventos, intereses, hobbies y mucho más [pin14]. Figura 96: Interfaz para compartir Ciencéame de forma general. Figura 97: Interfaz para compartir una publicación concreta de Ciencéame. 99

130 En la figura 96 se aprecia cómo se comparte la aplicación Ciencéame de forma general en la vista index de articles_controller, es decir, desde la vista principal. En la figura 97 se muestra cómo los usuarios pueden compartir en sus redes sociales una publicación en concreto en la vista show del mismo controlador, es decir, desde la interfaz propia de cada publicación. Con todo esto se pretende convertir 19 el mayor número de usuarios que lean las actividades compartidas en las distintas redes sociales, es decir, dar la posibilidad a usuarios interesados en el mundo de la investigación y que no conocen Ciencéame a descubrirla a través de otros usuarios, aumentando de esta forma el número de registros en la aplicación. Esto es posible gracias a la gema social-share-button (Ver ANEXO 6), que proporciona la opción de compartir la URL en la que se encuentran los enlaces, con el mensaje que se especifique. El la figura 98 se aprecia cómo se ha hecho uso de la gema anterior, integrando únicamente las redes sociales que se consideran adecuadas. Figura 98: Uso de la gema social-share-button en una vista. En la figura 99 se aprecia la configuración realizada para que la gema realice las acciones acorde con lo deseado en Ciencéame. Figura 99: Configuración de la gema social-share-button. 19 Número de usuarios que se registran después del anuncio, respecto el total de usuarios que lo reciben 100

131 5.15. Iteración 14. Paginación de elementos La paginación de elementos es muy importante en cualquier aplicación para reducir el consumo de recursos a la hora de mostrar artefactos Paginación Ciencéame alberga potencialmente una gran cantidad de usuarios y publicaciones, por lo tanto, es importante hacer la aplicación escalable en la forma en la que éstos se gestionan y se muestran. Para ello, algo indispensable es la paginación del número de publicaciones que se realicen y usuarios que se registren al mostrarlos. Esto se lleva a cabo tanto en las acciones index, como cuando se realizan búsquedas concretas, ya que así no se satura el sistema si tiene que mostrar demasiados artefactos en una misma vista. Para gestionar la paginación, se ha utilizado la gema will_paginate de Rails (Ver ANEXO 6), que añadiendo el método.paginate(número de páginas) en el controlador y will_paginate + Artefacto Concreto, pagina el elemento concreto. La figura 100 muestra a la izquierda el código mediante el cual se paginan elementos concretos, y a la derecha el resultado visual que apreciará el usuario. 101

132 Figura 100: Código e interfaz de un ejemplo de paginación de artefactos Paginación utilizando Javascript Para el caso concreto de las publicaciones, se utiliza javascript para conseguir un diseño más limpio para el usuario. El algoritmo implementado comprueba cuándo el usuario ha llegado al final de la página y recarga automáticamente la siguiente dentro de la misma vista (Ver figura 101). Este principio ya lo utilizan muchas redes sociales como facebook o twitter. Con esto se consigue que los usuarios no pierdan tiempo cambiado y recargando la página y les anime a seguir visitando publicaciones un poco menos actuales o con menos puntuación. En la figura 101 se muestra el algoritmo en coffeescript que comprueba cuándo el usuario ha llegado al final de la página, y en la figura 102 se expone el algoritmo que pasa por parámetro de la URL la página que hay que recargar en la vista. 102

133 Figura 101: Algoritmo encargado de comprobar cuando se llega a fin de página. Figura 102: Algoritmo encargado de pasar el número de página mediante URL Estructura del directorio app Finalizado el desarrollo del proyecto, se muestra al lector la estructura(ver figura 103) final del directorio app de Ciencéame, donde se encuentra casi todo el código ejecutable de la aplicación. 103

134 Figura 103: Estructura del directorio app en Ciencéame. 104

135 Diagrama de Clases completo. Una vez terminada la última iteración del proyecto se expone en la figura 104 el diagrama de clases completo de la aplicación. Figura 104: Diagrama de clases completo 105

136 . 106

137 6. Capítulo 6. CONCLUSIONES Y PROPUESTAS En este capítulo se discuten las conclusiones obtenidas tras las realización del TFG y se presenta el posible trabajo futuro que se plantea a partir de la finalización de este proyecto Estadísticas Se han obtenido las estadísticas del código del proyecto mediante el comando rake stats proporcionado por Rails para que el lector se pueda hacer una idea de cómo se ha implementado el proyecto, tal y como se aprecia en la figura Conclusiones Figura 105: Estadísticas del código fuente de Ciencéame Se discutirán todos los objetivos del proyecto, explicando por qué se han superado durante la etapa de desarrollo. Recabada toda esta información se ha considerado el momento oportuno para la creación de una red social con ámbito científico, ya que no existe ninguna red con estas características. En Ciencéame, podrá cada usuario compartir los enlaces de las publicaciones que puedan resultar de interés, y posteriormente poder comentarlas y discutirlas con otros usuarios relacionados con la disciplina Objetivo principal Se ha conseguido desarrollar una red social llamada Ciencéame donde los usuarios van a ser capaces de votar y gestionar publicaciones científicas a la vez que discuten acerca de las valoraciones de cada una de ellas con otros usuarios de su ámbito. A continuación se muestra cómo se han cumplido los objetivos parciales y didácticos. 107

138 Objetivos parciales Objetivos Op1. Configuración de una base de datos potente para soportar la información de contenidos y usuarios Op2. Desarrollar los mecanismos para gestionar usuarios Op3. Desarrollar los mecanismos para la publicación, valoración y ranking de trabajos científicos Op4. Desarrollar los mecanismos para obtener como resultado una aplicación segura teniendo en cuenta los datos a manejar Op5. Desarrollar los mecanismos necesarios para la gestión del Marketing y el Posicionamiento SEO Op6. Desarrollar los mecanismos para incorporar un sistema de debate entre usuarios dentro de la aplicación con el fin de crear hilos de discusión OK OK OK OK OK OK Justificación Se ha instalado y configurado el sistema de gestión de base de datos PostgreSQL, tal y como se explica en la iteración 1 del capítulo 5 Se ha instalado y configurado la gema Devise encargada de la gestión de usuarios, tal y como se explica en la iteración 2 del capítulo 5 Se ha conseguido desarrollar mecanismo encargados de gestionar las publicaciones de la aplicación, los mecanismos para el sistema de votación y se ha realizado un ranking de publicaciones dentro de la aplicación Se han desarrollado e instalado mecanismos que hacen la aplicación más segura de cara al usuario, como se puede apreciar en la iteración NN del capítulo 5 Se han desarrollado y configurado mecanismos que ayudarán a Ciencéame a posicionarse dentro del mundo de Internet y las redes sociales. Se ha desarrollado un mecanismo en forma de árbol que proporciona a los usuarios de la aplicación un lugar donde mostrar sus opiniones y compartirlas con el resto de usuarios, como se puede apreciar en la iteración NN del capítulo 5 Cuadro 16: Cumplimiento objetivos parciales 108

139 Objetivos didácticos Objetivos Od1. Puesta en prácticas de las destrezas y conocimientos adquiridos durante la carrera para el desarrollo de proyectos informáticos. Od2. Aprendizaje de nuevos Sistemas de Gestión de Bases de Datos no estudiados durante la formación universitaria Od3. Aprendizaje del lenguaje de programación Ruby, con todos sus componentes como ActiveRecord o REST Od4. Aprendizaje de nuevos lenguajes de programación orientados al diseño web como Haml[ham14] y Scss[scs14] Od5. Aprendizaje del uso del framework Rails Od6. Aprendizaje de las herramientas para desarrolladores incorporadas dentro de los navegadores, especialmente Firefox OK OK OK OK OK OK Justificación Mediante la tecnología Ruby on Rails y la metodología PUD se ha conseguido desarrollar la aplicación Ciencéame Se han adquirido conocimientos sobre la instalación y configuración de los gestores de bases de datos MySQL y PostgreSQL Se ha conseguido desarrollar mecanismo encargados de gestionar las publicaciones de la aplicación, los mecanismos para el sistema de votación y se ha realizado un ranking de publicaciones dentro de la aplicación Se ha desarrollado una aplicación utilizando el lenguaje de programación Ruby, con lo que se ha obtenido gran destreza en todos sus componentes Ciencéame se ha desarrollado sobre el framework Rails, por lo que se han adquirido grandes conocimientos sobre su gestión Toda la aplicación se ha probado en Firefox con el uso de todas las herramientas que propone el navegador, por lo que se han adquirido grandes conocimientos sobre ellas Cuadro 17: Cumplimiento objetivos didácticos 109

140 6.3. Propuestas futuras Se muestran diferentes proyectos futuros que podrían ayudar a la mejora de la aplicación Ciencéame: - Herramienta para la gestión de estadísticas como Google Analytics, ya que en un futuro, cuando haya usuarios navegando en Ciencéame, será conveniente conocer el cómputo de acciones generadas. - Herramientas para la gestión del comportamiento de usuarios como MouseStats o Inspectlet para garantizar una mayor usabilidad de la aplicación. - Mejorar las capacidades de gestión del área de administración, ya que por el momento, no se conoce el alcance que va a conseguir Ciencéame. - Extender Ciencéame como soporte para la discusión y votación de artículos en conferencias, y dar de este modo un valor añadido a la aplicación. 110

141 7. Capítulo 7. BIBLIOGRAFÍA Referencias [act14] [bit14] Página oficial de wikipedia, Fecha de Consulta: 20 de Abril de wikipedia.org/wiki/active_record_pattern. Página oficial de bitbucket, Fecha de Consulta: 20 de Febrero de https: //bitbucket.org/. [boo14] Página oficial de bootstrap, Fecha de Consulta: 20 de Febrero de http: //getbootstrap.com/2.3.2/. [bus14] Blog de ignacio santiago, Fecha de Consulta: 16 de Marzo de la-importancia-de-un-buen-posicionamiento-seo-infografia/. [Dav14] [deb14] Wikipedia, Fecha de Consulta: 25 de Febrero de org/wiki/rubyonrails. Página oficial de debian, Fecha de Consulta: 6 de Mayo de https://www. debian.org/index.es.html. [dev14] Página oficial de codehero, Fecha de Consulta: 25 de Febrero de best-sites-built-with-ruby-on-rails/. [div14] Faq de divúlgame, Fecha de Consulta: 12 de Abril de divulgame.net/faq-es.php. [dor14] [dro14] [dun14] [fac14] Página oficial de wikipedia, Fecha de Consulta: 2 de Junio de wikipedia.org/wiki/jack_dorsey. Página oficial de dropbox, Fecha de Consulta: 20 de Febrero de https: //www.dropbox.com/. Página oficial de wikipedia, Fecha de Consulta: 2 de Mayo de wikipedia.org/wiki/duncan_j._watts. Página oficial de facebook, Fecha de Consulta: 6 de Mayo de facebook.com. [fir14] Página oficial de firefox, Fecha de Consulta: 20 de Febrero de www. mozilla.org/es-es/firefox/. [fli14] Página oficial de flickr, Fecha de Consulta: 21 de Febrero de https://www. flickr.com/. [gen14] Blog de genbeta, Fecha de Consulta: 27 de Abril de aplicaciones-hechas-con-ruby-on-rails. [geo14] Blog de geovanni lemus, Fecha de Consulta: 3 de Abril de el-crecimiento-de-las-redes-sociales-en-el-mundo/. 111

142 [gim14] Página oficial de gimp, Fecha de Consulta: 20 de Febrero de org.es. [git14] Página oficial de git, Fecha de Consulta: 20 de Febrero de git-scm.com. [goo14a] Página oficial de google drive, Fecha de Consulta: 14 de Marzo de https: //drive.google.com/. [goo14b] Buscador oficial de google, Fecha de Consulta: 20 de Mayo de [ham14] Página oficial de haml, Fecha de Consulta: 21 de Abril de info/. [ico14a] Imagen de google, Fecha de Consulta: 20 de Febrero de tribunaavila.com/images/images/meneame_favicon.png. [ico14b] Imagen de google, Fecha de Consulta: 26 de Enero de twitter-red-social-iconos-vectoriales_ jpg. [ico14c] Imagen de google, Fecha de Consulta: 7 de Junio de http: //www.k0braintheworld.com/wp-content/uploads/2011/02/ facebook2.jpg. [lan14] Página oficial de prisma internet marketing, Fecha de Consulta: 28 de Mayo de prismainternetmarketing.com/marketing-internet/ internacionalizacion-seo-de-sitios-web.html. [lat14] Wikipedia: Latex, Fecha de Consulta: 14 de Abril de wikipedia.org/wiki/latex. [lin14] Página oficial de linkedin, Fecha de Consulta: 8 de Marzo de linkedin.com. [mar14] Página oficial de project libre, Fecha de Consulta: 12 de Marzo de la-importancia-de-la-foto-de-perfil-en-redes-sociales/. [mat14] Página oficial de wikipedia, Fecha de Consulta: 2 de Marzo de wikipedia.org/wiki/yukihiro_matsumoto. [men14a] Web oficial de menéame, Fecha de Consulta: 20 de Febrero de [men14b] Página oficial de wikipedia, Fecha de Consulta: 20 de Marzo de en.wikipedia.org/wiki/meneame. [met14] [mod14] Página de quiwiq, Fecha de Consulta: 6 de Febrero de com/posicionamiento/importancia-meta-etiquetas-seo/952. Wikipedia: Modal window, Fecha de Consulta: 15 de Abril de wikipedia.org/wiki/modal_window. 112

143 [nie14] [pin14] Página oficial nielsen, Fecha de Consulta: 20 de Febrero de nielsen.com/us/en.html. Página oficial de wikipedia, Fecha de Consulta: 20 de Mayo de es.wikipedia.org/wiki/pinterest. [pro14] Página oficial de project libre, Fecha de Consulta: 12 de Mayo de www. projectlibre.org/. [pud14a] Página oficial de wikipedia, Fecha de Consulta: 20 de Febrero de http: //es.wikipedia.org/wiki/proceso_unificado_de_rational. [pud14b] Blog de espe-juasanchez, Fecha de Consulta: 6 de Marzo de espe-juasanchez.blogspot.com.es/. [rai14] [reb14] [red14a] [red14b] [rub14a] [rub14b] [rub14c] Página oficial de ruby on rails, Fecha de Consulta: 20 de Febrero de http: //www.rubyonrails.org. Wikipedia: Tasa de rebote, Fecha de Consulta: 2 de Febrero de wikipedia.org/wiki/tasa_de_rebote. Página oficial de superame.com, Fecha de Consulta: 20 de Julio de http: //www.superame.com/wp-content/uploads/2013/09/est1.jpg. Página oficial de superame.com, Fecha de Consulta: 20 de Julio de http: //www.superame.com/wp-content/uploads/2013/09/est2.jpg. Página oficial de ruby, Fecha de Consulta: 20 de Febrero de https://www. ruby-lang.org/es/. Página oficial de rubygems, Fecha de Consulta: 20 de Febrero de http: //rubygems.org/. Web oficial de ruby on rails, Fecha de Consulta: 25 de Febrero de http: //www.rubyonrails.org/. [scs14] Página oficial de scss, Fecha de Consulta: 6 de Marzo de sass-lang.com/. [seg14] Página oficial de we live security, Fecha de Consulta: 24 de Mayo de http: //www.welivesecurity.com/la-es/articulos/guias/. [soc14] Página oficial de societic, Fecha de Consulta: 25 de Mayo de sirven-las-redes-sociales-para-vender-como-convertir-la-comunica [sub14] Página oficial de sublime-text, Fecha de Consulta: 20 de Febrero de www. sublimetext.com/. [tex14] Página oficial de texmaker, Fecha de Consulta: 20 de Febrero de http: //www.xm1math.net/texmaker//. [tra14a] Página de ehownespanil, Fecha de Consulta: 25 de Febrero de [tra14b] Wikipedia: Referral traffic, Fecha de Consulta: 8 de Febrero de en.wikipedia.org/wiki/referral_marketing. 113

144 [tre14] [twi14] Página oficial de trello, Fecha de Consulta: 20 de Febrero de trello.com/. Página oficial de twitter, Fecha de Consulta: 27 de Abril de twitter.com. [une14] Códigos unesco, Fecha de Consulta: 20 de Junio de meneame.net/. [vis14] [Wat03] [wik14a] Página oficial de visual paradigm, Fecha de Consulta: 20 de Febrero de http: //www.visual-paradigm.com/. Duncan Watts. Six degrees: The science of a connected age, Published in/by Norton Press. Página oficial de wikipedia, Fecha de Consulta: 16 de Mayo de en.wikipedia.org/wiki/twitter. [wik14b] Página oficial de wikipedia, Fecha de Consulta: 23 de Febrero de http: //es.wikipedia.org/wiki/ruby. [wik14c] Página oficial de wikipedia, Fecha de Consulta: 27 de Febrero de http: //en.wikipedia.org/wiki/facebook. [wik14d] Página oficial de wikipedia, Fecha de Consulta: 6 de Abril de wikipedia.org/wiki/ruby_on_rails. [xam14] Página oficial de xampp, Fecha de Consulta: 20 de Febrero de

145 8. ANEXOS 8.1. ANEXO I. Especificación de Requisitos Ciencéame se basa en la creación de una Red Social con fines semenjantes para todos los usuarios que la integran. Esta comunidad se fundamenta en la filosofía que siguen otras webs como Menéame, pero con distinciones entre ambas. A grandes rasgos, el objeto general de dicho Sistema consiste en la creación de una web donde se integran las referencias a diferentes artículos de investigación, para que así, éstos se encuentren a disposición de todos los usuarios de la web. Dentro de cada publicación es posible iniciar debates sobre temas determinados entre los miembros que deseen participar, pudiéndose hacer referencias en ellos a otros artículos para aclarar ideas y conceptos, aportar opiniones y hacer comentarios. Dichas referencias se organizan mediante categorías, siendo éstas las enunciadas en el código UNESCO. Cada uno de los artículos podrá ser votado por los distintos usuarios del Sistema, para, así, mejorar el posicionamiento dentro de la web de las publicaciones, es decir, cuanto mayor sea el número de votos, mayor visibilidad tendrá. Con todo esto se pretende conseguir que los artículos más relevantes para la Comunidad obtengan mejor posicionamiento dentro de la web. 20 En principio, tal y como se ha mencionado con anterioridad, existen dos tipos de usuarios: - Miembros de la Comunidad: Profesionales dedicados a la ciencia registrados dentro del sistema mediante su información personal, los cuales podrán publicar sus propias entradas, en las que harán referencia un trabajo de investigación (pudiendo ser suyo, o no); votar otras publicaciones, participar en debates y disfrutar de un rol. - Usuarios No registrados: Cualquier usuario que navegue por la red y quiera acceder a la web de Ciencéame podrá visualizar las refencias a los artículos publicados. El concepto de karma se basa en la composición de puntos que harán destacar a un usuario registrado respecto de otros. Según la cantidad de puntos que obtenga cada usuario, irá adquiriendo diferentes roles dentro del sistema que indicarán su categoría dentro de la web. Un ejemplo de los ditintos roles, dependiendo de los puntos puede ser; Graduado, Master, Becario, Profesor Asociado, Profesor Titular, Doctor y Catedrático. Para ir adquiriendo puntos, los usuarios tendrán la opción de realizar distintas actividades tales como: - Publicar un artículo. - Tu artículo es votado. - Tu comentario es votado. - Publicar más de un artículo en un período determinado. - No publicar artículos dentro de un período de tiempo. - La diferencia de votos positivos y negativos de un artículo votado por un usuario supera cierto número de votos dentro de un período de tiempo concreto. 20 Con todo esto se quiere conseguir que los trabajos más relevantes para la Comunidad científica queden mejor posicionados dentro de las web. 115

146 Ciencéame contará con una funcionalidad personalizada para cada usuario denominada Ver Perfil, en la que se podrá consultar, por el momento, todas las entradas publicadas, los post más votados de cada usuario, los puntos acumulados en ese momento 21, la mejor puntuación conseguida por dicho usuario, su fecha de nacimiento en la Red Social y un historial de como se han ido actualizando sus puntos a lo largo de su vida en Ciencéame. Es importante tener en cuenta, que todos los datos de perfil de cada usuario son públicos, es decir, cuando otro miembro visite el perfil de un usuario, podrá ver la información explicada anteriormente. Cuando un usuario se registra en la web, debe proporcionar los códigos UNESCO que le interesan, en otras palabras, los códigos de los artículos que le interesa leer, ya que, esos artículos serán los que aparecerán en su pantalla principal al iniciar sesión en la web. En principio Ciencéame estará disponible en dos idiomas, inglés y español, dejando abierta la posibilidad de incluir alemán como tercer idioma. La Seguridad es un tema muy importante dentro de esta web, pues así lo requiere en general el mundo de las redes sociales, y más aún Ciencéame, donde se pueden votar trabajos de terceros y se quiere evitar el autovoto en la medida de lo posible. Para esto consideraremos ciertos aspectos imprescindibles: - Tal y como se explicó en el apartado anterior, los usuarios no registrados podrán acceder al sistema, pero su acceso será restringido, sólo podrán visualizar las referencias a artículos y leer aquellos que cuyo origen no sea privado Los profesionales dedicados a la ciencia que quieran pertenecer a la Comunidad Ciencéame deberán registrarse con su correo institucional para poder ser miembros de la misma. Con ello se pretenden evitar plagios de identidades y demás actos maliciosos para con los miembros de la comunidad. 21 Estos puntos se refieren a aquellos que se consiguen a través de las acciones especificadas en el karma 22 Los usuarios no registrados no podrán votar artículos, ya que sino, cualquier miembro podría cerrar su sesión y votar artículos de una forma ilícita 116

147 8.2. ANEXO II. Diagrama de Casos de Uso Figura 106: Interfaz de Ciencéame antes de iniciar sesión 117

148 8.3. ANEXO III. Priorización de Casos de Uso Se han priorizado los diferentes Casos de Uso integrados en la aplicación dividiéndolos en las diferentes etapas del proyecto. - Iteración 0: No se desarrolla ningún Caso de Uso del proyecto. - Iteración 1: No se desarrolla ningún Caso de Uso del proyecto. - Iteración 2: 2.1 Registro 2.2 Iniciar Sesión 2.3 Cerrar Sesión 2.4 Consultar Perfil 2.5 Actualizar Foto de Perfil 2.6 Buscar Usuarios 2.7 Consultar Puntos - Iteración 3: 3.1 Visualizar Artículo 3.2 Publicar Artículo 3.3 Eliminar Artículo - Iteración 4: 4.1 Cambiar Idioma - Iteración 5: 5.1 Seleccionar Intereses - Iteración 6: 6.1 Enviar Mensaje 6.2 Leer Mensaje 6.3 Leer Mensajes Enviados 6.4 Leer Mensajes Recibidos - Iteración 7: 7.1 Añadir Comentario 7.2 Eliminar Comentario 7.3 Responder - Iteración 8: 8.1 Votar Artículo - Iteración 9: No se desarrolla ningún Caso de Uso del proyecto. - Iteración 10: 10.1 Visualizar Artículos Admin 10.2 Visualizar Usuarios Admin 118

149 10.3 Cambiar Valores Algoritmo 10.4 Eliminar Usuarios Admin 10.5 Eliminar Publicaciones Admin 10.6 Iniciar Sesión 10.7 Cerrar Sesión - Iteración 11: 11.1 Cambiar Valores Algoritmo - Iteración 12: No se desarrolla ningún Caso de Uso del proyecto. - Iteración 13: No se desarrolla ningún Caso de Uso del proyecto. - Iteración 14: No se desarrolla ningún Caso de Uso del proyecto. 119

150 8.4. ANEXO IV. Manual de usuario Ciencéame es una aplicación web desarrollada para usuarios, por lo que es muy importante que éstos sean capaces de realizar las diferentes acciones existentes de forma intuitiva. En las siguientes secciones se explicará las diferentes alternativas que encontrará un usuario que visite Ciencéame Registro y acceso a la aplicación Cuando un usuario accede a la página principal sin haber iniciado sesión en la aplicación, se encuentra con la navbar de la aplicación donde puede registrarse o iniciar sesión, además de las publicaciones que existan en la base de datos con los distintos filtros explicados anteriormente. Figura 107: Interfaz de Ciencéame antes de iniciar sesión En este punto, el usuario puede decidir registrarse, iniciar sesión o simplemente ser un usufructario externo que disfruta de la visualización de referencias a artículos de investigación. Figura 108: Formulario registro 120

151 Figura 109: Formulario inicio de sesión Si el usuario inicia sesión, entrará dentro de la aplicación y posteriormente se explicará que puede realizar a partir de este punto. Si el usuario decide registrarse en la aplicación, deberá rellenar el formulario con los campos que se le muestran y se le enviará un correo de confirmación con un enlace a su perfil. Una vez aquí, el usuario deberá seleccionar sus intereses para que se le empiezen a mostrar publicaciones apropiadas a sus gustos. Figura 110: Interfaz para seleccionar intereses una vez se ha registrado en Ciencéame Se debe tener en cuenta que el modal para seleccionar intereses que aparece cuando el usuario se registra, sólamente le aparecerá a aquellos usuarios que no tengan categorías cuando acceden a su perfil, por lo tanto, si en algún momento se quiere cambiar de intereses, habrá que acceder a Edición de perfil, como se explicará posteriormente. Es necesario explicar que cuando un usuario se registra en la aplicación por primera vez, comenzará con cero puntos que podrá ir aumentando haciendo méritos dentro de la aplicación. 121

152 Página principal de la aplicación La vista principal de la aplicación se divide en dos columnas claramente diferenciadas. Figura 111: Interfaz de Ciencéame después de iniciar sesión En la columna de la derecha se puede observar lo mismo que antes del registro o inicio de sesión en la aplicación, aunque con algunas diferencias: 1. Se puede apreciar que aparece un filtro más a la hora de gestionar las publicaciones llamado Mis publicaciones 2. Dentro de las publicaciones existen dos flechas una azul y una roja que sirven para subir o bajar un punto a la publicación en cuestión. 3. Dentro de cada módulo de publicación, si el usuario actual es el que ha realizado la publicación tendrá un enlace donde se eliminará la publicación. Figura 112: Aspecto de las publicaciones después de iniciar sesión 122

153 En cuanto a la columna de la izquierda se encontrarán diferentes acciones nuevas que se explicarán a continuación: 1. Hacer una publicación: Este botón nos llevará a un nuevo enlace donde podremos crear nuestras propias referencias a artículos de investigación. 2. Recomendación a amigo: Este pequeño formulario nos ofrece la opción de recomendar Ciencéame a un amigo mediante correo electrónico. 3. Compartir en redes sociales: Estos enlaces, nos dan la opción de compartir Ciencéame en las redes sociales indicadas. 4. Debajo de todo lo anterior se encuentran dos módulos, el primero muestra las tres publicaciones más votadas del usuario actual y el segundo las tres más visitadas. Cuando un usuario pulsa en Hacer una publicación será redirigido al formulario de la figura 113, donde rellenando la información necesaria creará una nueva referencia a un artículo de investigación. Figura 113: Interfaz para la publicación de artículos. La navbar de la aplicación también cambia, se explican sus nuevos contenidos de izquierda a derecha: 1. Inicio: Regresa al usuario a la vista principal de Ciencéame. 2. Mi perfil: Enlaza al usuario con su perfil personal. 3. Buscador: Permite al usuario realizar búsquedas entre todos las publicaciones que existen en la base de datos mediante keywords. 123

154 4. Configuración: Permite al usuario editar sus datos personales. 5. Mensajes: Enlaza al usuario a la interfaz donde se encuentran sus mensajes privados. 6. Salir: Cierra la sesión del usuario actual. 7. Banderas: Permite al usuario en cuestión cambiar el idioma en el que quiere que se le muestre la información de la aplicación Perfil personalizado de cada usuario Cuando accedemos a la vista Mi perfil, al igual que en la vista anterior, se encuentra dividida en dos columnas. Figura 114: Interfaz de la vista Mi perfil A la izquierda se pueden observar diferentes artefactos además de la foto de perfil del usuario. Inmediatamente debajo se encuenta un botón para actualizar la foto de perfil de un usuario, por lo tanto, cuando es pulsado saltará un modal donde se podrá llevar a cabo esta acción con facilidad. Debajo de la acción anterior se encuentra la puntuación que lleva acumulada cada usuario en ese mismo momento. En la columna de la derecha se encuentran diferentes módulos, tres de ellos muestran publicaciones del usuario, por un lado, las más votadas, por otro lado las más visitadas y por último se muestran las últimas publicaciones que ha realizado el usuario. 124

155 También encontramos un módulo en el que aparece un buscador. Este buscador es el encargado de encontrar usuarios, es decir, mediante keywords encuentra a los usuarios registrados en la aplicación que coincidan en nombre y apellido. Cuando se realiza una búsqueda, se enlaza a otra vista con los resultados tal y como se puede observar en la figura 115. Figura 115: Interfaz de la vista de búsquedas Mensajes privados Si un usuario pretende enviar un mensaje privado a otro usuario, lo primero que tiene que hacer es acceder al perfil de ese usuario, una vez lo ha conseguido, abajo a la izquierda le aparecerá un enlace para enviar un mensaje a ese usuario. Si lo pulsa, se activará un modal con un formulario donde podrá escribir texto y enviarlo. Figura 116: Interfaz para enviar mensajes privados. Lo explicado anteriormente es el sistema utilizado para enviar mensajes privados, en cambio, cuando se recibe uno, el sistema funciona de otra manera. Cuando recibimos un mensaje, automáticamente, cuando se recargue nuestro navegador, recibiremos una notificación del estilo de la figura 117 con el número de mensajes que no se han leído. 125

156 Figura 117: Interfaz de la vista de notificaciones de mensajes privados El usuario debe acceder al enlace y automáticamente se enlazará con la vista de los mensajes privados mostrada en las figuras 118 y 119. Figura 118: Interfaz de mensajes recibidos Figura 119: Interfaz de mensajes enviados Configuración del perfil Cuando un usuario requiera configurar la información de su perfil, es decir, editar los datos que introdujo cuando se registró en la aplicación podrá hacerlo en Configuración ->Editar perfil, allí se encontrará con la vista de edición que se muestra en la figura

157 Figura 120: Interfaz para la edición del perfil de usuario. Una vez introducidos la nueva información, de correo electrónico, contraseña o intereses deberá pulsar en actualizar y habrá finalizado la acción Comentar publicaciones En Ciencéame los usuarios no sólo expresan su opinión votando o visitando las aplicaciones, sino que, se ofrece a los usuarios la posibilidad de de exponer sus ideas de una forma más subjetiva y personalizada. Cuando un usuario visita una publicación, a parte de poder compartir esa URL en las redes sociales, puede comentar en la misma vista un comentario que haya realizado otro usuario e incluso abrir su propio tema de debate para que el resto de usuarios le puedan dar su opinión o resolver alguna duda, como se puede apreciar en la imagen

158 Figura 121: Interfaz de una publicación y formulario para crear temas Cuando una conversación ha sido creada por un usuario, cualquier usuario que se haya registrado en la aplicación podrá responder a todos y cada uno de los comentarios que existan en ese momento, como se puede apreciar en la figura 122. Figura 122: Interfaz de una publicación y formulario para crear temas 128

Implantación de Aplicaciones Web Fecha: 20-09-13

Implantación de Aplicaciones Web Fecha: 20-09-13 Página 1 de 24 RESUMEN DE LA PROGRAMACIÓN ADMINISTRACIÓN DE SISTEMAS INFORMÁTICOS EN RED CURSO AC. 2012 / 2013 ÁREA / MATERIA / MÓDULO PROFESIONAL Implantación de Aplicaciones Web (84 horas 4 horas semanales)

Más detalles

Ingeniería de Software

Ingeniería de Software Ingeniería de Software MSDN Ingeniería de Software...1 Ingeniería del Software_/_ Ingeniería y Programación...1 Análisis de Requerimientos...2 Especificación...3 Diseño...4 Desarrollo en Equipo...5 Mantenimiento...6

Más detalles

PLIEGO DE PRESCRIPCIONES TÉCNICAS PARA LA PRESTACIÓN DEL SERVICIO PYME.NET COMERCIO ELECTRÓNICO

PLIEGO DE PRESCRIPCIONES TÉCNICAS PARA LA PRESTACIÓN DEL SERVICIO PYME.NET COMERCIO ELECTRÓNICO PLIEGO DE PRESCRIPCIONES TÉCNICAS PARA LA PRESTACIÓN DEL SERVICIO PYME.NET COMERCIO ELECTRÓNICO DENOMINACIÓN: SERVICIO PYME.NET COMERCIO ELECTRÓNICO DE CÁMARA TERUEL 1. INTRODUCCIÓN Y OBJETIVOS 2. ALCANCE

Más detalles

Práctica de Integración de Sistemas Aplicación Web.NET: Sitio de Comentarios de Eventos Deportivos

Práctica de Integración de Sistemas Aplicación Web.NET: Sitio de Comentarios de Eventos Deportivos Práctica de Integración de Sistemas Aplicación Web.NET: Sitio de Comentarios de Eventos Deportivos 1. Introducción Curso académico 2009-2010 La práctica de Integración de Sistemas consiste en el diseño

Más detalles

Ingeniería de Software con UML Unified Modeling Language Lenguaje Unificado de Modelado

Ingeniería de Software con UML Unified Modeling Language Lenguaje Unificado de Modelado Ingeniería de Software con UML Unified Modeling Language Lenguaje Unificado de Modelado 1. Introducción Unified Modeling Languaje Fuente: Booch- Jacobson-Rumbauch y diversos sitios Internet, entre otros:

Más detalles

Especialista en Creación de Portales Web con Joomla 3.3

Especialista en Creación de Portales Web con Joomla 3.3 Especialista en Creación de Portales Web con Joomla 3.3 TITULACIÓN DE FORMACIÓN CONTINUA BONIFICADA EXPEDIDA POR EL INSTITUTO EUROPEO DE ESTUDIOS EMPRESARIALES Especialista en Creación de Portales Web

Más detalles

DESARROLLO DE APLICACIÓN MÓVIL PARA EMPRESA DE BIENES RAÍCES, VERSIÓN ANDROID

DESARROLLO DE APLICACIÓN MÓVIL PARA EMPRESA DE BIENES RAÍCES, VERSIÓN ANDROID DESARROLLO DE APLICACIÓN MÓVIL PARA EMPRESA DE BIENES RAÍCES, VERSIÓN ANDROID Vicente Moya Murillo (1) Ing. Patricia Chávez Burbano (2) Facultad de Ingeniería en Electricidad y Computación Escuela Superior

Más detalles

TFM Comunicación, Redes y Gestión de Contenidos

TFM Comunicación, Redes y Gestión de Contenidos TFM Comunicación, Redes y Gestión de Contenidos Aplicación móvil hibrida para control de asistencia y servicio técnico a domicilio y gestión de partes de trabajo Autor: Patricia Paguay Lara Tutorizado

Más detalles

Con la interacción de tus empleados mejorará la productividad de tu negocio

Con la interacción de tus empleados mejorará la productividad de tu negocio 1. Introducción Con la interacción de tus empleados mejorará la productividad de tu negocio Los empleados de cualquier compañía precisan numerosos accesos en su trabajo diario, además de interaccionar

Más detalles

Programación en Capas.

Programación en Capas. Programación en Capas. Ricardo J. Vargas Del Valle Universidad de Costa Rica, Ciencias de Computación e Informática, San José, Costa Rica, 506 ricvargas@gmail.com Juan P. Maltés Granados Universidad de

Más detalles

CAPÍTULO V. Propuesta

CAPÍTULO V. Propuesta CAPÍTULO V Propuesta 5.1 Propuesta Implantación de una aplicación WEB para optimizar el Enlace Laboral de la Cámara de Comercio e Industria de El Salvador, Filial San Miguel 5.2 Requerimientos de la Aplicación

Más detalles

Rational Unified Process (RUP)

Rational Unified Process (RUP) Rational Unified Process (RUP) Este documento presenta un resumen de Rational Unified Process (RUP). Se describe la historia de la metodología, características principales y estructura del proceso. RUP

Más detalles

Desarrollo de Aplicaciones con Tecnologías Web (Online) (Dirigida a la Acreditación de las Competencias Profesionales R.D.

Desarrollo de Aplicaciones con Tecnologías Web (Online) (Dirigida a la Acreditación de las Competencias Profesionales R.D. Desarrollo de Aplicaciones con Tecnologías Web (Online) (Dirigida a la Acreditación de las Competencias Profesionales R.D. 1224/2009) Titulación certificada por EUROINNOVA BUSINESS SCHOOL Desarrollo de

Más detalles

En el siguiente apartado se detallan ciertos conceptos que ayudan a comprender en mayor medida el Proyecto.

En el siguiente apartado se detallan ciertos conceptos que ayudan a comprender en mayor medida el Proyecto. APÉNDICES En el siguiente apartado se detallan ciertos conceptos que ayudan a comprender en mayor medida el Proyecto. APÉNDICE 1. Herramientas Las herramientas que se usaron en el análisis, desarrollo

Más detalles

MANUAL INICIAL PARA LA GESTIÓN DE CURSOS ONLINE

MANUAL INICIAL PARA LA GESTIÓN DE CURSOS ONLINE MANUAL INICIAL PARA LA GESTIÓN DE CURSOS ONLINE MEDIANTE LA PLATAFORMA WEB MOODLE INSTALADA EN LOS CENTROS EDUCATIVOS DE LA XUNTA DE GALICIA Moodle es un sistema de gestión de cursos de distribución libre

Más detalles

Ingeniería de Software I

Ingeniería de Software I Ingeniería de Software I Agenda Objetivo. Unidades de aprendizaje. Formas de evaluación. Bibliografía. 2 Datos del profesor Correo electrónico: egonzalez@upemor.edu.mx Asesorías Jueves de 11:00 a 13:00

Más detalles

Normas para realizar un Blog

Normas para realizar un Blog Normas para realizar un Blog Normas Ejercicio 1 - Crear nuestro Blog. Ejercicio 2 - Crear una entrada para publicar un mensaje en el blog. Ejercicio 3 - Diseñar y Configurar nuestro blog. EJERCICIO 1 Crear

Más detalles

Programación orientada a

Programación orientada a Programación orientada a objetos con Java Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Objetivos Presentar los conceptos de la programación

Más detalles

Desarrollo de Aplicaciones con Tecnologías Web

Desarrollo de Aplicaciones con Tecnologías Web Desarrollo de Aplicaciones con Tecnologías Web Código: Modalidad: Distancia Duración: 100 Horas. Objetivos: La presente formación se ajusta al itinerario formativo del Certificado de Profesionalidad IFCD0210

Más detalles

DESARROLLO DE APLICACIONES CON TECNOLOGÍAS WEB PROFESIONAL

DESARROLLO DE APLICACIONES CON TECNOLOGÍAS WEB PROFESIONAL Página 1 de 21 CUALIFICACIÓN DESARROLLO DE APLICACIONES CON TECNOLOGÍAS WEB PROFESIONAL Familia Profesional Informática y Comunicaciones Nivel 3 Código IFC154_3 Versión 5 Situación RD 1087/2005 Actualización

Más detalles

Preguntas Frecuentes - FAQ Redes Sociales

Preguntas Frecuentes - FAQ Redes Sociales Preguntas Frecuentes - FAQ Redes Sociales Facebook Un poco de historia... Facebook en cifras Qué diferencias hay entre un perfil y una página? Por qué usar páginas y no perfiles? Cómo atraer tráfico a

Más detalles

Especialista en Creación de Portales Web con Joomla 3.3

Especialista en Creación de Portales Web con Joomla 3.3 Especialista en Creación de Portales Web con Joomla 3.3 Titulación certificada por EUROINNOVA BUSINESS SCHOOL Especialista en Creación de Portales Web con Joomla 3.3 Especialista en Creación de Portales

Más detalles

Metodología de Ingeniería del Software para el desarrollo y mantenimiento de sistemas de información del Gobierno de Extremadura

Metodología de Ingeniería del Software para el desarrollo y mantenimiento de sistemas de información del Gobierno de Extremadura Metodología de Ingeniería del Software para el desarrollo y mantenimiento de sistemas de información del Gobierno de Extremadura Página 1 de 23 Índice del Documento 1.- Introducción... Página 4 2.- Propuesta

Más detalles

Propuesta de Sistema Web Personalizable para el Control de Reservaciones en Hoteles

Propuesta de Sistema Web Personalizable para el Control de Reservaciones en Hoteles Propuesta de Sistema Web Personalizable para el Control de Reservaciones en Hoteles Betzabet García-Mendoza, Carlos R. Jaimez-González Departamento de Tecnologías de la Información, Universidad Autónoma

Más detalles

Joomla! 3.3 Cree y administre sus sitios Web

Joomla! 3.3 Cree y administre sus sitios Web Capítulo 1: Descubrir Joomla! A. Razones para crear un sitio con Joomla! 9 B. Documentarse sobre Joomla! 9 C. La hoja de ruta de Joomla! 10 D. Qué es un CMS? 12 E. HTML y XHTML 12 F. Diferenciar el contenido

Más detalles

V. CAPÍTULO: CONTRIBUCIÓN

V. CAPÍTULO: CONTRIBUCIÓN V. CAPÍTULO: CONTRIBUCIÓN Requerimientos del Sistema Para llevar a cabo el desarrollo de nuestro sistema se establecieron tanto los actores como los requerimientos funcionales y no funcionales del sistema.

Más detalles

PFC- Aplicaciones Web para trabajo colaborativo:

PFC- Aplicaciones Web para trabajo colaborativo: PFC- Aplicaciones Web para trabajo colaborativo: Aplicación para Control de una Integración de S.I. 2º Ciclo Ingeniería Informática Curso 2011-2012 Consultor : Fatos Xhafa Autor : Miguel Angel Pineda Cruz

Más detalles

Desarrollo e integración de un Sistema de Aprendizaje Personal

Desarrollo e integración de un Sistema de Aprendizaje Personal Desarrollo e integración de un Sistema de Aprendizaje Personal por Francisco R. Fernández Reyes Anteproyecto Fin de Carrera, 2010/2011 1 Índice 1. Introducción 3 2. Objetivos 4 3. Metodología y Fases del

Más detalles

Capítulo I. Marco Teórico

Capítulo I. Marco Teórico 1 Capítulo I. Marco Teórico 1. Justificación Hoy en día existe una gran diversidad de aplicaciones que corren sobre la World Wide Web (WWW o Web), y cada una orientada a un fin en particular, el cuál depende

Más detalles

Diseño del Sistema de Información

Diseño del Sistema de Información Diseño del Sistema de Información ÍNDICE DESCRIPCIÓN Y OBJETIVOS... 2 ACTIVIDAD DSI 1: DEFINICIÓN DE LA ARQUITECTURA DEL SISTEMA... 7 Tarea DSI 1.1: Definición de Niveles de Arquitectura... 9 Tarea DSI

Más detalles

Curso Online de SEO-SEM + Redes Sociales (Doble Titulación + 4 Créditos

Curso Online de SEO-SEM + Redes Sociales (Doble Titulación + 4 Créditos Curso Online de SEO-SEM + Redes Sociales (Doble Titulación + 4 Créditos ECTS) Titulación certificada por EUROINNOVA BUSINESS SCHOOL Curso Online de SEO-SEM + Redes Sociales (Doble Titulación + 4 Créditos

Más detalles

Datos del Curso Título Diseño y Creación de Portales Web

Datos del Curso Título Diseño y Creación de Portales Web Datos del Curso Título Diseño y Creación de Portales Web Duración 40 horas (5,3 créditos ECTS) Responsables Dr. Julio Gómez López Dra. Consolación Gil Montoya Profesorado Eugenio Villar Fernández euflamante@gmail.com

Más detalles

Diseño del Sistema de Información

Diseño del Sistema de Información Diseño del Sistema de Información ÍNDICE DESCRIPCIÓN Y OBJETIVOS...2 ACTIVIDAD DSI 1: DEFINICIÓN DE LA ARQUITECTURA DEL SISTEMA...7 Tarea DSI 1.1: Definición de Niveles de Arquitectura...9 Tarea DSI 1.2:

Más detalles

Denominación de la materia. N créditos ECTS = 36 carácter = OBLIGATORIO SISTEMAS DE SOFTWARE. Ubicación dentro del plan de estudios y duración

Denominación de la materia. N créditos ECTS = 36 carácter = OBLIGATORIO SISTEMAS DE SOFTWARE. Ubicación dentro del plan de estudios y duración Denominación de la materia SISTEMAS DE SOFTWARE N créditos ECTS = 36 carácter = OBLIGATORIO Ubicación dentro del plan de estudios y duración La materia Sistemas de Software está formada por 6 asignaturas

Más detalles

IFCD0210 Desarrollo de Aplicaciones con Tecnologías Web (Dirigida a la Acreditación de las Comptencias Profesionales R.D.

IFCD0210 Desarrollo de Aplicaciones con Tecnologías Web (Dirigida a la Acreditación de las Comptencias Profesionales R.D. IFCD0210 Desarrollo de Aplicaciones con Tecnologías Web (Dirigida a la Acreditación de las Comptencias Profesionales R.D. 1224/2009) IFCD0210 Desarrollo de Aplicaciones con Tecnologías Web (Dirigida a

Más detalles

EXPERIENCIAS EDUCATIVAS. CREAR UN PORTAL EDUCATIVO CON JOOMLA

EXPERIENCIAS EDUCATIVAS. CREAR UN PORTAL EDUCATIVO CON JOOMLA EXPERIENCIAS EDUCATIVAS. CREAR UN PORTAL EDUCATIVO CON JOOMLA AUTORÍA PEDRO J. MORENO GARCÍA TEMÁTICA TIC ETAPA ESO, BACHILLERATO,FP Resumen Con Joomla podemos crear en pocas horas un completo portal para

Más detalles

Capítulo 1: Introducción

Capítulo 1: Introducción Capítulo 1: Introducción Moisés Muñoz Nieto -1- 1.1. Descripción del problema. La idea de Avicaz surgió en 2010 en Cazalla de la Sierra, provincia de Sevilla. Tras años de experiencia como criador de pequeñas

Más detalles

Framework para el desarrollo ágil de aplicaciones

Framework para el desarrollo ágil de aplicaciones Framework para el desarrollo ágil de aplicaciones 1 Índice INTRODUCCIÓN... 3 QUÉ ES UN FRAMEWORK?... 3 VENTAJAS DE UTILIZAR UN FRAMEWORK... 4 DESVENTAJAS DE UTILIZAR UN FRAMEWORK... 5 CARACTERÍSTICAS DE

Más detalles

CICLO SUPERIOR DESARROLLO DE APLICACIONES MULTIPLATAFORMA

CICLO SUPERIOR DESARROLLO DE APLICACIONES MULTIPLATAFORMA CICLO SUPERIOR DESARROLLO DE APLICACIONES MULTIPLATAFORMA PROGRAMACIÓN DIDACTICA ANUAL Parte específica del módulo: 0485. Programación Departamento de Familia Profesional de Informática Curso: 2014-15

Más detalles

CREIX AMB INTERNET. Desarrollo Aplicaciones para la plataforma Facebook

CREIX AMB INTERNET. Desarrollo Aplicaciones para la plataforma Facebook CREIX AMB INTERNET Desarrollo Aplicaciones para la plataforma Facebook 2 1. Introducción. 1.1. El propósito de la plataforma Facebook Facebook se creó como una versión en línea de los "Facebooks" de las

Más detalles

MS_10264 Developing Web Applications with Microsoft Visual Studio 2010

MS_10264 Developing Web Applications with Microsoft Visual Studio 2010 Developing Web Applications with Microsoft Visual Studio 2010 www.ked.com.mx Av. Revolución No. 374 Col. San Pedro de los Pinos, C.P. 03800, México, D.F. Tel/Fax: 52785560 Introducción En este curso, los

Más detalles

INTRODUCCIÓN A MOODLE

INTRODUCCIÓN A MOODLE INTRODUCCIÓN A MOODLE ÍNDICE 1. Conocer la plataforma Moodle 1.1 Características de Moodle 2. Acceder a Moodle 2.1 Acceder y modificar nuestro perfil 2.2 Editar perfil de usuario 3. Descripción de la interfaz

Más detalles

- MANUAL TÉCNICO - Implantación de software de Marketing Online

- MANUAL TÉCNICO - Implantación de software de Marketing Online - MANUAL TÉCNICO - Implantación de software de Marketing Online Rev. 01- MAYO 2013 Implantación de software de Marketing Online Teléfono Adeada: 945 253 388 Email Adeada: adeada@adeada.com REALIZADO POR:

Más detalles

MS_20488 Developing Microsoft SharePoint Server 2013 Core Solutions

MS_20488 Developing Microsoft SharePoint Server 2013 Core Solutions S MS_20488 Developing Microsoft SharePoint Server 2013 Core Solutions www.ked.com.mx Av. Revolución No. 374 Col. San Pedro de los Pinos, C.P. 03800, México, D.F. Tel/Fax: 52785560 Introducción En este

Más detalles

Ruby on Rails, una forma rápida de hacer aplicaciones web

Ruby on Rails, una forma rápida de hacer aplicaciones web Ruby on Rails, una forma rápida de hacer aplicaciones web Roberto Solano Murillo Universidad de Costa Rica, Escuela de Ciencias de la Computación e Informática, San José, Costa Rica rasm007@gmail.com Eduardo

Más detalles

Análisis de tu sitio web: posicionamiento y marketing online

Análisis de tu sitio web: posicionamiento y marketing online Análisis de tu sitio web: posicionamiento y marketing online El 90% del tráfico de Internet llega a través de los buscadores, donde Google es el rey. Para aparecer en los principales puestos de búsqueda

Más detalles

Analista Programador PL/SQL Oracle 11g

Analista Programador PL/SQL Oracle 11g Titulación certificada por EUROINNOVA BUSINESS SCHOOL Analista Programador PL/SQL Oracle 11g Analista Programador PL/SQL Oracle 11g Duración: 360 horas Precio: 300 * Modalidad: Online * Materiales didácticos,

Más detalles

TEMA 1.-Programación orientada a objetos (POO) Objetivo

TEMA 1.-Programación orientada a objetos (POO) Objetivo CURSO DE UML Dotar al alumno de los fundamentos de la programación orientada a objetos (POO, a partir de ahora), definir las características básicas del lenguaje de modelado unificado (Unified Modeling

Más detalles

Confección y publicación de páginas Web

Confección y publicación de páginas Web 2014 Confección y publicación de páginas Web Docente: Manuel Fernández Catalán 0 ÍNDICE 1 Presentación... 2 2 Objetivos... 2 3 Tecnología... 2 4 Metodología y evaluación... 3 5 Material didáctico... 3

Más detalles

Práctica Java POJO de Integración de Sistemas Sitio Web de Apuestas Deportivas

Práctica Java POJO de Integración de Sistemas Sitio Web de Apuestas Deportivas Práctica Java POJO de Integración de Sistemas Sitio Web de Apuestas Deportivas Curso académico 2009-2010 1 Introducción La práctica de Integración de Sistemas consistirá en el diseño e implementación de

Más detalles

Descubrir las mejores keywords para mi campaña de marketing online

Descubrir las mejores keywords para mi campaña de marketing online Descubrir las mejores keywords para mi campaña de marketing online Índice Descubrir las mejores keywords para mi campaña de marketing online... 3 Descubrimiento de keywords con metodología manual... 5

Más detalles

Módulo Profesional 01: Bases de datos (código: 0484).

Módulo Profesional 01: Bases de datos (código: 0484). Módulo Profesional 01: Bases de datos (código: 0484). Actividades de enseñanza-aprendizaje que permiten alcanzar los objetivos del módulo. Interpretar diseños lógicos de bases de datos. Realizar el diseño

Más detalles

CONSTRUCCIÓN DE PORTALES

CONSTRUCCIÓN DE PORTALES Curso «Los portales de internet». Fac. Documentación. Universidad de Murcia. 29 CONSTRUCCIÓN DE PORTALES Juan Antonio Pastor Sánchez 1. Introducción La Gestión de los contenidos informativos de los portales

Más detalles

Comic2EPUB: Aplicación para la generación de EPUB

Comic2EPUB: Aplicación para la generación de EPUB Comic2EPUB: Aplicación para la generación de EPUB Grado en Ingeniería Informática Comic2EPUB: Aplicación para la generación de EPUB Autor: Javier López Cordero Tutor/es: Marco Manuel Such Mayo 2015 2.1

Más detalles

#SoftwareLibre14. Páginas Web con Software Libre. WordPress

#SoftwareLibre14. Páginas Web con Software Libre. WordPress Páginas Web con Software Libre WordPress Qué es WordPress? WordPress es un popular sistema de gestión de contenidos (CMS), más orientado a lo que son los blogs, o bitácoras en línea, pero también usado

Más detalles

El Proceso Unificado de Desarrollo de Software

El Proceso Unificado de Desarrollo de Software El Proceso de Desarrollo de Software Ciclos de vida Métodos de desarrollo de software El Proceso Unificado de Desarrollo de Software 1 Fases principales del desarrollo de software Captura de requisitos:

Más detalles

INTRODUCCIÓN AL WEB. Pag. 1 de 10

INTRODUCCIÓN AL WEB. Pag. 1 de 10 INTRODUCCIÓN AL WEB La World Wide Web o simplemente WWW o Web es uno de los métodos más importantes de comunicación que existe en Internet. Consiste en un sistema de información basado en Hipertexto (texto

Más detalles

MF0491_3 Programación Web en el Entorno Cliente (Online)

MF0491_3 Programación Web en el Entorno Cliente (Online) MF0491_3 Programación Web en el Entorno Cliente (Online) Titulación acredidatada por la Comisión Internacional de Formación de la UNESCO MF0491_3 Programación Web en el Entorno Cliente (Online) MF0491_3

Más detalles

Desarrollo de una Aplicación Móvil para Revisar

Desarrollo de una Aplicación Móvil para Revisar Desarrollo de una Aplicación Móvil para Revisar Horarios de Atención de Tutores de la UNAD Development of a Movil Application for Check Over Office Hours of Tutors of the Unad Correa Rodríguez Arellys

Más detalles

Historia de revisiones

Historia de revisiones Binary Rain Glosario Versión 1.1 Historia de revisiones Fecha Versión Descripción Autor 17/08/2012 1.0 Creación del documento Carolina Trias 18/08/2012 1.1 Revisado y corregido por SQA Mercedes Marzoa

Más detalles

Ciclo Formativo de Grado Superior Desarrollo de Aplicaciones Web

Ciclo Formativo de Grado Superior Desarrollo de Aplicaciones Web Ciclo Formativo de Grado Superior Desarrollo de Aplicaciones Web Proyecto Propio de Ampliación con Programación de Dispositivos Móviles e Inteligentes Paseo de la Puerta del Ángel, s/n 28011 Madrid www.iesellago.net

Más detalles

IT CONSULTING, tiene a bien hacerle llegar la oferta de Capacitación de DISENO DE SITIOS WEB & BLOGS CON JOOMLA + WORDPRESS + MAGENTO

IT CONSULTING, tiene a bien hacerle llegar la oferta de Capacitación de DISENO DE SITIOS WEB & BLOGS CON JOOMLA + WORDPRESS + MAGENTO Señor(a): Cliente. Presente.- Santa Cruz, 23 de Octubre del 2012 REF.: COTIZACION CURSO DISENO DE SITIOS WEB & BLOGS CON JOOMLA + WORDPRESS + MAGENTO Distinguido Señores: IT CONSULTING, tiene a bien hacerle

Más detalles

TÉCNICO EN DISEÑO WEB

TÉCNICO EN DISEÑO WEB TÉCNICO EN DISEÑO WEB Descripción del curso: Curso dividido en tres módulos, donde el alumno aprenderá: Dreamweaver CS5: Dreamweaver es el programa líder en la edición profesional de páginas Web. Es el

Más detalles

TFC J2EE. Aplicación Web para la gestión de facturación de una empresa de cerrajería. Sara Gutiérrez Melero ITIG Junio de 2012

TFC J2EE. Aplicación Web para la gestión de facturación de una empresa de cerrajería. Sara Gutiérrez Melero ITIG Junio de 2012 TFC J2EE Aplicación Web para la gestión de facturación de una empresa de cerrajería Sara Gutiérrez Melero ITIG Junio de 2012 Consultor: Jose Juan Rodriguez Índice 1. Introducción Objetivos Planificación

Más detalles

Curso de Community Manager 2013

Curso de Community Manager 2013 Curso de Community Manager 2013 El Blog WordPress a fondo Alojamiento en wordpress.com Instalación de WordPress en servidor propio Diferencias. Ventajas e inconvenientes Interfaz de WordPress Acceder al

Más detalles

PROGRAMA FORMATIVO Programación Orientada a Objetos con Java

PROGRAMA FORMATIVO Programación Orientada a Objetos con Java PROGRAMA FORMATIVO Programación Orientada a Objetos con Java Julio 2014 DATOS GENERALES DE LA ESPECIALIDAD 1. Familia Profesional: INFORMÁTICA Y COMUNICACIONES Área Profesional: DESARROLLO 2. Denominación:

Más detalles

Proyecto de curso. Durante el curso de análisis y diseño 1, los estudiantes desarrollaron sus habilidades de abstracción y visión sistemática.

Proyecto de curso. Durante el curso de análisis y diseño 1, los estudiantes desarrollaron sus habilidades de abstracción y visión sistemática. Universidad de San Carlos Facultad de Ingeniería Ingeniería en Ciencias y Sistemas Análisis y Diseño de Sistemas 2 Proyecto de curso Durante el curso de análisis y diseño 1, los estudiantes desarrollaron

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.1 UML: Introducción

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.1 UML: Introducción PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación II MODELOS y HERRAMIENTAS UML 1 1 Técnica de modelado de objetos (I) El modelado orientado a objetos es una técnica de especificación semiformal para

Más detalles

Publicación en App Store y distribución Ad Hoc

Publicación en App Store y distribución Ad Hoc Publicación en App Store y distribución Ad Hoc Índice 1 La App Store... 2 1.1 Algunos datos interesantes...2 1.2 Requerimientos mínimos para distribuir en la App Store...3 1.3 Preparación de la aplicación

Más detalles

HERRAMIENTA WEB PARA LA ELABORACIÓN DE TEST BAJO LA ESPECIFICACIÓN IMS-QTI

HERRAMIENTA WEB PARA LA ELABORACIÓN DE TEST BAJO LA ESPECIFICACIÓN IMS-QTI HERRAMIENTA WEB PARA LA ELABORACIÓN DE TEST BAJO LA ESPECIFICACIÓN IMS-QTI Muñoz-Bouchard J.P., y Álvarez-González L.A. jp.knap@gmail.com@gmail.com, lalvarez@inf.uach.cl Grupo de Investigación en Tecnologías

Más detalles

Ficha de Producto. Características generales. Descripción de Producto. Disponible en formato licencia o Cloud (software as a service).

Ficha de Producto. Características generales. Descripción de Producto. Disponible en formato licencia o Cloud (software as a service). Descripción de Producto ServiceTonic es el software 100% web para la gestión de servicios que bajo las premisas de facilidad de uso y flexibilidad convierte su amplia funcionalidad en la plataforma ideal

Más detalles

Guía Rápida Programs & Portfolio

Guía Rápida Programs & Portfolio Guía Rápida Programs & Portfolio Tabla de contenidos Tabla de contenidos... 2 1. Mi perfil, tutoriales y ayuda contextual... 3 2. Crear proyectos... 6 3. Crear usuarios y asignar a proyectos y tareas...

Más detalles

Analista Programador PL/SQL Oracle 11g

Analista Programador PL/SQL Oracle 11g TITULACIÓN DE FORMACIÓN CONTINUA BONIFICADA EXPEDIDA POR EL INSTITUTO EUROPEO DE ESTUDIOS EMPRESARIALES Analista Programador PL/SQL Oracle 11g Duración: 360 horas Precio: 0 * Modalidad: Online * hasta

Más detalles

Proyecto Final de Carrera

Proyecto Final de Carrera Aplicación de gestión de proyectos informáticos Memoria del Proyecto Consultor: Jairo Sarrias Guzmán Ingeniería Técnica Informática de Gestión P á g i n a 2 CONTENIDO 1. Introducción... 6 1.1. Resumen...

Más detalles

Manual de uso básico de la aplicación

Manual de uso básico de la aplicación Manual de uso básico de la aplicación Autor del documento Centro de Apoyo Tecnológico a Emprendedores, Fundación Parque Científico y Tecnológico de Albacete Datos de contacto E-Mail: bilib@bilib.es Página

Más detalles

PLATAFORMA DE FORMACIÓN MANUAL DEL ALUMNO CONSEJO GENERAL DE FARMACÉUTICOS

PLATAFORMA DE FORMACIÓN MANUAL DEL ALUMNO CONSEJO GENERAL DE FARMACÉUTICOS PLATAFORMA DE FORMACIÓN MANUAL DEL ALUMNO CONSEJO GENERAL DE FARMACÉUTICOS 1. PRIMEROS PASOS...3 1.1. Idiomas...4 1.2. Sistema de ayuda...5 1.3. Perfil del alumno...5 2. LOS CURSOS DE LA PLATAFORMA...8

Más detalles

Títol: Intranet Diagonal Recobros. Volum: 1/1 Alumne: Miguel Meneses Nicolau

Títol: Intranet Diagonal Recobros. Volum: 1/1 Alumne: Miguel Meneses Nicolau Títol: Intranet Dianal Recobros Volum: 1/1 Alumne: Miguel Meneses Nicolau Director/Ponent: Carles Farré Tost Departament: Lenguajes y Sistemas Informaticos Data: 22/05/2010 DADES DEL PROJECTE Títol

Más detalles

CI Politécnico Estella

CI Politécnico Estella SÍNTESIS DE LA PROGRAMACIÓN DEL MÓDULO/ASIGNATURA DEPARTAMENTO: INFORMÁTICA GRUPO/CURSO: 2º ASIR 2015-2016 MÓDULO/ASIGNATURA: 9 IAWE (Implantación de Aplicaciones Web) PROFESOR: José Ignacio Calvo Pastor

Más detalles

Manual del usuario. www.blocdeblocs.net. Autor: Francesc Balagué Licencia Creative Commons 2.5

Manual del usuario. www.blocdeblocs.net. Autor: Francesc Balagué Licencia Creative Commons 2.5 Manual del usuario www.blocdeblocs.net Autor: Francesc Balagué Licencia Creative Commons 2.5 ÍNDICE 0. Introducción 2 1. Crear el blog 4 2. Administración 5 2.1 Cambio de contraseña e idioma (usuarios)

Más detalles

Plantilla para las VIII Jornadas de SIG libre.

Plantilla para las VIII Jornadas de SIG libre. VIII JORNADAS DE SIG LIBRE Plantilla para las VIII Jornadas de SIG libre. M. Arias de Reyna Domínguez (1) (1) Ingeniera Informática, GeoCat bv, Bennekom, Países Bajos, maria.arias@geocat.net RESUMEN GeoCat

Más detalles

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA Nombre del Módulo: DISEÑO DE PAGINAS WEB CON HTML Código: CSTI0085 total: 3 Horas Objetivo General: Construir páginas Web en base

Más detalles

COUNTSTAR: ADMINISTRACIÓN Y GESTIÓN DE EMPRESA

COUNTSTAR: ADMINISTRACIÓN Y GESTIÓN DE EMPRESA Trabajo fin de carrera INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS Facultad de Matemáticas Universidad de Barcelona COUNTSTAR: ADMINISTRACIÓN Y GESTIÓN DE EMPRESA Óscar Llorente Lucía Director/a: Dra.

Más detalles

CAPÍTULO 1. MARCO TEÓRICO

CAPÍTULO 1. MARCO TEÓRICO CAPÍTULO 1. MARCO TEÓRICO Capítulo 1. Marco teórico 1.1 Ingeniería Web (IWeb) Con el desarrollo de Internet, la mayoría de los proyectos y sistemas están enfocados para las aplicaciones basadas en la Web

Más detalles

Denominación de la materia. créditos ECTS = 36 carácter = OBLIGATORIA SISTEMAS OPERATIVOS, SISTEMAS DISTRIBUIDOS Y REDES

Denominación de la materia. créditos ECTS = 36 carácter = OBLIGATORIA SISTEMAS OPERATIVOS, SISTEMAS DISTRIBUIDOS Y REDES Denominación de la materia SISTEMAS OPERATIVOS, SISTEMAS DISTRIBUIDOS Y REDES créditos ECTS = 36 carácter = OBLIGATORIA Ubicación dentro del plan de estudios y duración La materia está formada por 6 asignaturas

Más detalles

Máster en Instalación, Gestión y Mantenimiento de CRM: Gestión de Relaciones con Clientes

Máster en Instalación, Gestión y Mantenimiento de CRM: Gestión de Relaciones con Clientes Máster en Instalación, Gestión y Mantenimiento de CRM: Gestión de Relaciones con Clientes Titulación certificada por EUROINNOVA BUSINESS SCHOOL Máster en Instalación, Gestión y Mantenimiento de CRM: Gestión

Más detalles

http://www.cem.itesm.mx/extension/ms

http://www.cem.itesm.mx/extension/ms Diplomado Programación orientada a objetos con Java y UML Las empresas necesitan contar con sistemas de información modernos, ágiles y de calidad para alcanzar sus objetivos y ser cada vez más competitivos

Más detalles

Son sitios web periódicamente actualizados que recopilan cronológicamente artículos (que pueden contener texto, vídeo, fotos y enlaces a otras

Son sitios web periódicamente actualizados que recopilan cronológicamente artículos (que pueden contener texto, vídeo, fotos y enlaces a otras Son sitios web periódicamente actualizados que recopilan cronológicamente artículos (que pueden contener texto, vídeo, fotos y enlaces a otras páginas) de uno o varios autores, apareciendo primero el más

Más detalles

CAPITULO I. MARCO TEORICO

CAPITULO I. MARCO TEORICO 1 CAPITULO I. MARCO TEORICO 1.1 DEFINICIÓN DEL PROYECTO. Para la definición del proyecto nos basaremos en una metodología de gestión de proyectos, para esto compararemos las características de tres de

Más detalles

Una arquitectura basada en CMS para la gestión de claustros de profesores usando dispositivos móviles.

Una arquitectura basada en CMS para la gestión de claustros de profesores usando dispositivos móviles. Una arquitectura basada en CMS para la gestión de claustros de profesores usando dispositivos móviles. José Eduardo Córcoles Universidad de Castilla-La Mancha - España corcoles@dsi.uclm.es Mª Nieves Carralero

Más detalles

ENTORNO DE UN CURSO. Antes de empezar sería conveniente conocer la estructura de Moodle y entender los siguientes conceptos básicos:

ENTORNO DE UN CURSO. Antes de empezar sería conveniente conocer la estructura de Moodle y entender los siguientes conceptos básicos: ENTORNO DE UN CURSO Antes de empezar sería conveniente conocer la estructura de Moodle y entender los siguientes conceptos básicos: Cursos Categorías Cuentas de usuario y roles Perfil de usuario En Moodle,

Más detalles

Técnico Profesional en Creación de Portales Web con Joomla + SEO Profesional (Online)

Técnico Profesional en Creación de Portales Web con Joomla + SEO Profesional (Online) Técnico Profesional en Creación de Portales Web con Joomla + SEO Profesional (Online) Titulación certificada por EUROINNOVA BUSINESS SCHOOL Técnico Profesional en Creación de Portales Web con Joomla +

Más detalles

Programación Orientada a Objetos (Online)

Programación Orientada a Objetos (Online) Titulación certificada por EUROINNOVA BUSINESS SCHOOL Programación Orientada a Objetos (Online) Programación Orientada a Objetos (Online) Duración: 250 horas Precio: 250 * Modalidad: Online * Materiales

Más detalles

Convocatoria para Desarrolladores

Convocatoria para Desarrolladores Convocatoria para Desarrolladores Sistema de plataformas digitales para el proyecto Juntxs Cierre de Convocatoria: 15 de Octubre, 2013 Publicación de propuesta elegida: 25 de Octubre, 2013 Objeto de la

Más detalles

Analítica web con Google Analytics

Analítica web con Google Analytics Analítica web con Google Analytics 1. Título Analítica web con Google Analytics 2. Descripción: La analítica web nos permite estudiar el comportamiento de los usuarios dentro de nuestro sitio web. De esta

Más detalles

CAPÍTULO 5. Hemos utilizado la técnica de programación orientado a objetos por su

CAPÍTULO 5. Hemos utilizado la técnica de programación orientado a objetos por su 88 CAPÍTULO 5 5. IMPLEMENTACIÓN 5.1 Modelo Utilizado en Programación. Hemos utilizado la técnica de programación orientado a objetos por su eficiencia y eficacia en el modelo mvc, ya que permite la reutilización

Más detalles

GUÍA DOCENTE PROGRAMACION DE APLICACIONES WEB

GUÍA DOCENTE PROGRAMACION DE APLICACIONES WEB GUÍA DOCENTE PROGRAMACION DE APLICACIONES WEB I.- DATOS INICIALES DE IDENTIFICACIÓN Nombre de la asignatura: Programación de aplicaciones web Carácter: Optativa Titulación: Master Sistemas y Servicios

Más detalles

Módulo 2: blogs y microblogs,

Módulo 2: blogs y microblogs, Módulo 2: blogs y microblogs, Curso Marketing Online Community Manager 1 Objetivos del módulo Aprender la diferencia entre un blog y una web. Comprender la importancia de un blog. Desarrollar los primeros

Más detalles

Sistemas de Información II. Introducción al Proceso Unificado de Desarrollo de Software. Autor: Ing. Silverio Bonilla 1

Sistemas de Información II. Introducción al Proceso Unificado de Desarrollo de Software. Autor: Ing. Silverio Bonilla 1 Introducción al Proceso Unificado de Desarrollo de Software Autor: Ing. Silverio Bonilla 1 James Rumbaugh et al. Concepto de Método Una metodología de ingeniería del software es un proceso para producir

Más detalles

Google Site Search Búsqueda de sitios web de Google para tu organización

Google Site Search Búsqueda de sitios web de Google para tu organización Google Site Search Hoja de datos Google Site Search Búsqueda de sitios web de Google para tu organización Google Site Search Para obtener más información, visita: http://www.google.com/enterprise/search/

Más detalles