TRABAJO FIN DE GRADO. Red social deportiva

TRABAJO FIN DE GRADO Título Red social deportiva Autor/es Javier Muro Robles Director/es César Domínguez Pérez Facultad Facultad de Ciencias, Est

4 downloads 168 Views 3MB Size

Story Transcript

TRABAJO FIN DE GRADO

Título

Red social deportiva Autor/es

Javier Muro Robles Director/es

César Domínguez Pérez Facultad

Facultad de Ciencias, Estudios Agroalimentarios e Informática Titulación

Grado en Ingeniería Informática Departamento

Curso Académico

2012-2013

Red social deportiva, trabajo fin de grado de Javier Muro Robles, dirigido por César Domínguez Pérez (publicado por la Universidad de La Rioja), se difunde bajo una Licencia Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported. Permisos que vayan más allá de lo cubierto por esta licencia pueden solicitarse a los titulares del copyright.

© ©

El autor Universidad de La Rioja, Servicio de Publicaciones, 2013 publicaciones.unirioja.es E-mail: [email protected]

UNIVERSIDAD DE LA RIOJA

Facultad de Ciencias, Estudios Agroalimentarios e Informática

TRABAJO FIN DE GRADO Grado en Ingeniería Informática

Red Social Deportiva

Alumno: Javier Muro Robles Director: César Domínguez Pérez Logroño, 03‐07‐2013.  

ÍNDICE  RESUMEN.                                                                                                                             3  1. DOCUMENTO DE OBJETIVOS DEL PROYECTO.                                                          4  1.1 Objetivo   

 

 

 

 

 

 

1.2 Alcance del proyecto                                                                   

 

 

  

   

 

 

 

2. GESTIÓN DEL PROYECTO.                                                                                             12  2.1 Diagrama de Gantt final   

 

 

 

 

 

 

 

 

14 

2.2 Errores de planificación     3. ANALISIS.                                                                                                      

3.1 Definición del sistema                                                                                    

 

3.2 Casos de uso                                                                             

 

 

 

3.3 Análisis de clases                                                                                  

 

 

4. DISEÑO.                                                                                                                            25  4.1 Estructura de la aplicación                                                                                                   4.2 Diseño de la base de datos                                                                                                           4.3 Diseño de interfaces                                                                                                      5. CONSRTUCCIÓN.                                                                                                            34  5.1 Preparación del entorno de construcción                                                          

 

5.2 Implantación de la base de datos                                              

 

 

 

 

5.3 Controladores                                5.4 Vistas 

 

 

 

 

 

 

 

 

 

 

5.5 Librerías externas utilizadas  5.6 Seguridad   

 

5.7 Problemas  

 

5.8 Posibles mejoras   

 

 

6. CONCLUSIÓN                                                                                                                   45 

 

8. BLIBIOGRAFÍA                                                                                                                  46  ANEXO I. MANUAL DE USUARIO                                                                                      48     

2   

RESUMEN  Español   El proyecto realizado es una aplicación web llamada “sports joinder”, en ella se podrán  realizar quedadas deportivas con gente que realice el mismo deporte.  La  aplicación  tiene  características  de  redes  sociales,  como  hacer  amigos  y  enviar  mensajes. También se podrá configurar para que el sistema envíe notificaciones a los  usuarios en los horarios que tenga libres, sobre eventos deportivos que otros usuarios  creen.  Para  que  los  enfrentamientos  sean  divertidos,  la  aplicación  cuenta  con  un  sistema de emparejamiento por nivel.  Los usuarios pueden introducir zonas deportivas para poder realizar el deporte donde  quieran.  Lo que se pretende con esta aplicación es que nadie se quede sin realizar su deporte  favorito.  Inglés   The  created  project  is  a  web  application  called  "sports  joinder".  In  this  web,  sport  meetups can be done with people who do the same sport.  The  application  has  social  networking  features,  such  as  making  friends  and  sending  messages. Sports joinder can also be configured to send notifications to system users  in her free times on sport events that other users create. Besides, the application has a  matching system per level.  Users can also enter sports areas to perform the sport where they want.  The purpose of this application is that nobody stays in home without doing her favorite  sport.          3   

1 DOCUMENTO DE OBJETIVOS DEL PROYECTO  1.1 Objetivo.  El  proyecto  consistirá  en  la  creación  de  una  aplicación  web  pública,  de  la  cual,  su  función  principal  será  gestionar  y  organizar  eventos  deportivos  entre  los  diferentes  usuarios del sistema, todo esto envuelto en un entorno de red social.   1.2 Alcance del proyecto.  La  carencia  de  un  cliente  que  solicite  esta  aplicación  conlleva  que  el  alcance  del  proyecto sea confeccionado entre el alumno y el profesor, con la intención de que el  producto  final  tenga  todas  las  funcionalidades  apropiadas  de  una  aplicación  de  este  tipo.  1.2.1 Requisitos mínimos alcanzables.   A continuación se enumeran con mayor nivel de concreción las funcionalidades que se  pretenden para la aplicación web.  Con la palabra gestión me refiero a la creación, consulta, actualización.  Aplicación web.   Gestión  de  Usuarios:  Los  usuarios  podrán  darse  de  alta  por  sí  mismos  en  la  aplicación  y  podrán  gestionar  sus  datos  personales  e  introducir  los  deportes  que  practica,  además  de  poder  acceder  a  la  misma  mediante  cuenta  de  Facebook o Twitter.    Gestión de Deportes: Tanto el administrador de la aplicación como los usuarios  (previa  validación  del  administrador)  podrán  introducir  nuevos  deportes  al  sistema.   Gestión  de  nivel  de  usuarios:  El  nivel  de  los  usuarios  en  cada  deporte  se  determinara mediante autoevaluación y evaluación de los contrincantes de los  eventos organizados por el sistema. 

4   

 Gestión de Zonas deportivas: Tanto el administrador de la aplicación como los  usuarios  (previa  validación  del  administrador)  podrán  introducir  zonas  deportivas facilitándose un mapa interactivo para su creación.   Gestión  de  Grupos:  Los  usuarios  podrán  crear  grupos  por  cada  deporte  para  poder facilitar la organización de partidos.   Organización de eventos deportivos: El sistema organizará eventos deportivos  en función de los datos introducidos por los usuarios en el sistema (Localidad,  Deporte, Nivel del deporte, Horarios disponibles, Zona deportiva). Los eventos  organizados se enviarán a los usuarios, dejando a uno de ellos encargado para  la  reserva  de  la  zona  deportiva.  Se  necesitará  una  confirmación  por  parte  de  cada usuario para que se considere válido.   Búsqueda  manual  de  usuarios:  Los  usuarios  tendrán  la  opción  de  buscar  usuarios  mediante  diferentes  criterios  para  poder  organizar  entre  ellos  los  eventos deportivos.   Comunicación  de  usuarios:  Habilitar  sistemas  de  comunicación  entre  los  usuarios del sistema como envío de correo y chat.  1.2.2 Posibles ampliaciones de la aplicación.  ‐Integración con Facebook.  ‐Envío de SMS a los usuarios.  ‐Posibilidad de integración del sistema con una zona deportiva para que puedan llevar  la organización de sus eventos P.E: Club de pádel.  ‐Aplicación Android para el sistema.  1.2.3 Especificación de las tecnologías  En  este  apartado  se  exponen  las  diferentes  tecnologías  usadas  en  el  proyecto,  tratando de justificar el uso de cada una de ellas.  Ruby con el framework ruby on rails: En principio, parto de un conocimiento bastante  limitado  con  relación  a  los  lenguajes  que  permiten  programación  Web.  Después  de  investigar un tiempo, opto por Ruby on rails por el crecimiento y la extensa aceptación  que está obteniendo por parte de la comunidad de desarrolladores, aunque se podría  5   

haber optado por otros lenguajes de similar funcionalidad como pueden ser PHP, JSP,   o ASP.NET.  El entorno de programación que usaré para este lenguaje será Rubymine.  MySql: En un principio había contemplado usar SQL Server u Oracle, pero la gratuidad  de  MySql  (para  uso  privado,  no  comercial)  y  la  gran  aceptación  que  tiene  ha  hecho  decantarme por él.    También he de decir que existen entornos de creación de redes sociales, como Spree,  Isocial o Mahara, he decidido desecharlos puesto que ni en mi vida como estudiante ni  mi vida laboral he podido realizar una aplicación web de esta entidad, y entiendo que  este trabajo es necesario y muy aprovechable para mi formación profesional.    1.2.4 Antecedentes.  Existen gran cantidad de redes sociales de diversa índole, pero ninguna de ellas explota  el tema de la organización de eventos deportivos. La única que he podido observar que  realiza  gestiones  parecidas  es  una  aplicación  web  que  se  dedica  a  la  organización  de  partidos de futbol.    1.2.5 Riesgos Posibles  No se encuentran riesgos específicos a la hora de realizar esta aplicación, por lo tanto  contamos con los riesgos habituales del desarrollo de proyectos.    1.2.6 Seguimiento y Entregables.  Las  comunicaciones  y  revisiones  con  el  profesor  serán  semanales  vía  E‐Mail,  y  quincenales mediante reuniones.    Durante la realización del proyecto se realizarán los siguientes entregables.  ‐Memoria del proyecto.   Documento de Objetivos del proyecto.   Fase de análisis.   Fase de diseño.  ‐CD con todo el código del proyecto junto con su documentación, manuales etc.  6   

1.2.7 Planificación del proyecto  1.2.7.1 Estructura de descomposición de trabajo (EDT) 

  1.2.9.2 Descomposición de Tareas  T01 ‐ Gestión  Temporalmente,  esta  tarea  comprende  toda  la  vida  del  proyecto,  puesto  que  este  bloque contiene las tareas necesarias para la correcta gestión y dirección del mismo.  Abarca todos los procesos que implican un gasto temporal considerable y que sirven  tanto para la planificación del proyecto como para el seguimiento del mismo.    T011 ‐ Planificación de Tareas  Este  paquete  consta  de  la  localización  de  las  diferentes  tareas    del  proyecto  y  para  estimar su duración.  ‐> 3 horas.  T012 ‐ Reuniones  Puesto  que  no  hay  un  cliente  real  las  reuniones  se  realizarán  con  el  director  del  proyecto.  ‐> 10 horas.  T013‐ Seguimiento  El  seguimiento del avance del proyecto se sucederá durante toda la vida del proyecto  para comprobar el estado del mismo.  ‐> 6 horas.  T02‐ Inicio del proyecto  Este paquete agrupa todas las tareas necesarias para la puesta en marcha del proyecto  T021‐ Confección del DOP  Constará de las características más importantes del proyecto.  7   

‐>Estimación‐ 8 horas.  T022‐ Requisitos  El alumno recogerá en un documento de requisitos las necesidades del cliente (en este  caso ficticio).  ‐>Estimación‐ 3 horas.    T03‐ Formación  Tecnologías usadas en la aplicación.   T031‐ ROR (Ruby on Rails)  Poseo escasos conocimientos sobre este lenguaje de programación por lo tanto tendré  que dedicar bastante tiempo de estudio a esta tecnología y el paradigma modelo vista  controlador.  ‐>Estimación‐ 15 horas.  T032‐ SQL  Prácticamente  no  será  necesaria  formación  en  SQL,  ya  que  durante  la  carrera  y  mi  formación  profesional  he  obtenido  los  conocimientos  necesarios  para  poder  realizar  este proyecto.  ‐>Estimación‐ 1 horas.  T033‐ RubyMine  Puesta en marcha y pruebas con el IDE de rails.  ‐>Estimación‐ 1:30 horas.  T04‐ Análisis  Los  paquetes  de  trabajo  de  este  bloque  pretenden  analizar  las  capacidades  y  limitaciones de cada una de las tecnologías para evitar problemas futuros.  T041‐ Casos de Uso  En  este  paquete  de  trabajo  se  identificarán  actores,  se  crearán  los  casos  de  uso,  se  crearán  los  diagramas  de  actividad,  de  flujo  y  se  realizara  una  revisión  de  los  documentos generados del mismo.  ‐>Estimación‐ 8 horas.  T042‐ Análisis de clases  Se  Identificarán  las  clases  más  importantes  y  se  realizarán  diagramas  de  clases  para  cada una de las capas que se diseñen.  8   

‐>Estimación‐ 8 horas.  T05‐ Diseño  En las tareas que se exponen a continuación se realizará el diseño de la aplicación de  acuerdo con los conocimientos obtenidos en la fase de análisis.  T051‐ Prototipo de aplicación  El  diseño  de  los  prototipos  servirá  para  indicar  a  grandes  rasgos  cuál  es  el  aspecto  y  funcionalidad que se desea obtener de la aplicación.  ‐> Estimación‐ 10 horas.   T052‐ Diseño de la base de datos.  Crear  la  base  de  datos  a  partir  del  análisis  realizado  anteriormente  y  crear  diagrama  entidad relación.  ‐>Estimación‐ 8 horas.  T053‐ Diseño interfaz gráfico.  ‐>Estimación‐ 2 horas.  T054‐ Diseño página web.  El diseño de páginas web es un tema que no termino de dominar, por lo tanto estimo  que tardaré bastante tiempo en realizarlo.  ‐>Estimación‐ 10 hora.  T06‐ Construcción  En la fase de construcción se realizan las tareas de implementación y codificación de  todas  las  herramientas  necesarias,  así  como  labores  complementarias  de  la  misma  como la documentación.  T061‐ Desarrollo de la aplicación  Este es el producto final del proyecto. Esta es la aplicación de la página web final que  se  debe  desarrollar,  por  lo  tanto,  el  tiempo  que  se  dedicara  a  esta  tarea  será  considerablemente largo.  Todas o casi todas las tareas de este proyecto guardan relación directa con esta fase.  ‐Estimación‐ 160 horas.  T062‐ Documentación del código  Para una mejor comprensión se comentarán los puntos más críticos del código.  ‐Estimación‐4 horas.  • T07‐ Pruebas  9   

Este  paquete  de  trabajo  agrupa  las  tareas  realizadas  para  comprobar  el  correcto  funcionamiento de la aplicación final.  T071‐ Pruebas durante la implementación  Durante la implementación del código se irán realizando pruebas en la aplicación  ‐>Estimación‐ 4 horas.  T072‐ Pruebas Finales  Última  fase  de  pruebas  en  la  cual  se  realizarán  pruebas  exhaustivas  una  vez  esté  finalizado el programa.  ‐>Estimación‐ 2 horas.  T08‐ Memoria  T081‐ Elaboración de la Memoria  Se  trata  de  la  creación  de  la  memoria  del  proyecto,  el  Documento  de  Objetivos  del  Proyecto no se recoge en este paquete debido a que se determina en PT02.  ‐>Estimación‐ 30 horas.  T09‐ Manuales  T091‐ Manual de usuario  En esta tarea se creará un manual de uso de la aplicación para usuarios potenciales del  sistema.  Mostrará  la  información  necesaria  para  facilitar  al  usuario  la  información  necesaria para una correcta interacción con el programa de gestión.  ‐>Estimación‐ 3 horas.  T10‐ Defensa  T101‐ Defensa del Proyecto  Esta tarea comprende el tiempo dedicado a la preparación de la defensa del proyecto  fin de carrera.   ‐>Estimación‐ 3 horas.  2.9.3 Diagrama de Gantt  El siguiente apartado trata de especificar gráficamente las previsiones realizadas en la  anterior sección.  El total de horas planificado para este proyecto es de 300 horas.  El  gráfico  llega  a  su  final  en  Junio,  fecha  límite  para  la  entrega  del  proyecto,  se  ha  elegido debido a que las nuevas normas de proyectos planifican la presentación en esa  fecha.  10   

 

                                 

11   

2  GESTIÓN DEL PROYECTO  En esta sección se analiza cómo ha ido el transcurso del proyecto realizando un estudio  comparativo entre el tiempo estimado para cada una de las tareas que lo componen y  el tiempo real que se ha dedicado a ellas.  Se realizará un estudio de comparativas de las previsiones totales, y posteriormente se  profundizará la comparación en cada una de las partes.  Normalmente, el trabajo de un día varía entre una hora y media a 3 horas.  Con esta tarea se podrán identificar los desajustes de estimación en el documento de  objetivos del proyecto. Además en cada caso, se analizará si ha existido alguna causa  que justifique el desajuste.  2.1 Diagrama de Gantt Final. 

   

2.2 Errores de planificación.  Por lo general, la planificación del trabajo ha sido correcta, quizás por la experiencia  previa del anterior proyecto realizado.  El problema principal ha sido un parón de un mes y diez días desde el 10 de abril hasta  el 23 de mayo, por lo tanto todas las estimaciones se aplazaron un mes.  El parón de trabajo fue debido a la falta de tiempo, el tener varias asignaturas del  tercer curso, y también un proyecto profesional, no pude dedicarle el tiempo que tenía  previsto al proyecto, y en ese punto preferí aplazar la entrega a la convocatoria de  12   

Julio, y a partir del 23 de mayo, fecha del último examen que tenía, poder dedicarle  jornada completa a la realización del proyecto.  Por supuesto, ha habido algunos desajustes del tiempo estimado al tiempo final, que  se especificarán en la siguiente tabla  Tabla de error de estimación de horas:  Tarea 

Tiempo Estimado 

Tiempo Real 

Error Estimación 

T01‐Dirección y gestión  

19 Horas 

18 Horas 

‐1 Horas 

T02‐Inicio 

11 Horas 

12 Horas 

1 Horas 

T03‐Formación 

18 Horas 

25 Horas 

7 Horas 

T04‐Analisis 

16 Horas 

15 Horas 

‐1 Horas 

T05‐Diseño 

30 Horas 

30 Horas 

0  Horas 

T06‐Construcción 

164 Horas 

158 Horas 

‐6 Horas 

T07‐Pruebas 

6 Horas 

7 Horas 

1 Hora 

T08‐Memoria 

30 Horas 

28 Horas 

‐2 Horas 

T09‐Manuales 

3 Horas 

3 Horas 

0 Horas 

T10‐Presentación 

3 Horas 

3 Horas 

0 Horas 

 

 

ERROR ESTIMACION 

‐2 Horas 

  El error de estimación es tan pequeño puesto que la necesidad de acabar el proyecto  en la fecha indicada hizo que las partes restantes se ajustaran al plazo y por una buena  previsión.               

13   

3.  ANÁLISIS DEL SISTEMA  El objetivo de esta tarea es obtener las especificaciones del sistema necesarias  para  servir de apoyo y satisfacer las necesidades de información de la parte del diseño.  Para  realizar  el  análisis  del  sistema  nos  vamos  a  inspirar  en  las  tareas  referidas  por  métrica 3, profundizando solo en los puntos más importantes.  3.1  Definición del sistema  En esta parte se realizará el análisis del alcance, los usuarios del sistema, los requisitos  del mismo y el entorno tecnológico.  3.1.1  Determinación de los requisitos  Los requisitos son los que ya hemos mencionado en el DOP del proyecto, teniendo una  prioridad  alta  los  requisitos  mínimos  alcanzables  y  una  prioridad  baja  las  posibles  ampliaciones del sistema.  3.1.2 Determinación del entorno tecnológico  En  esta  parte  de  la  memoria  se  van  a  comentar  las  necesidades  tecnológicas  del  sistema de información y los posibles problemas que se supone que pueden conllevar.  Para un correcto funcionamiento de este sistema de información se necesitará el uso  de un servidor, el cual va a tener instalada la base de datos y la aplicación web. Puesto  que el servicio tiene que permanecer activo las 24 horas al día, se optará por el alquiler  de un servidor virtual con las siguientes características:   Sistema operativo Linux.   Framework  de  Ruby  on  Rails  instalado  con  el  correspondiente  intérprete  de  Ruby.   Servidor apache de enlace.    Servidor MySql para la base de datos.  Para  el  desarrollo  de  algunos  puntos  del  proyecto,  como  es  el  acceso  mediante  Facebook  o  Twitter,  añadiremos  determinados  Plugins  llamados  “Gemas”  al  Framework Ruby on Rails, que especificaremos en la parte de desarrollo.  14   

3.1.3 Identificación de los usuarios participantes y finales.  Los roles que van a considerarse en la aplicación Web son:  Usuario: Persona que usa los servicios de la aplicación.  Administrador: Persona encargada del correcto funcionamiento de la aplicación y de la  gestión de la misma.  3.2 CASOS DE USO  En esta sección se establecerán los casos de uso previstos. Para ello se realizarán los  correspondientes  diagramas  y  posteriormente  se  elaborará  la  especificación  de  cada  caso de uso.   Para no caer en la reiteración, solo mostraremos los casos de uso más significativos de  la aplicación, puesto que los casos de uso referidos a la gestión son los habituales en  esta clase de proyectos.   Los  casos  de  uso  que  mostraremos  se  dividirán  en  dos  partes,  la  primera  será  el  diagrama  general  de  casos  de  uso  y  la  segunda  la  explicación  del  mismo  mediante  explicación convencional o de otros diagramas más específicos.  3.2.1 Diagramas de Casos de Uso  ‐Aclaraciones de los diagramas de casos de uso.  Los  diagramas  presentan  alguna  variación  gráfica  con  respecto  a  los  diagramas  de  casos de uso UML, las flechas "extend" e "include" no serán discontinuas, y en vez de  tener  “extend”  se  usará  la  nomenclatura  “extends”,  estas  variaciones  son  debidas  a  que  la  herramienta  con  la  que  se  está  trabajando  (Visio)  para  los  casos  de  uso  UML  tiene definidos los tipos de flecha que voy a usar y no los correctos de UML.   3.2.2 Actores  La aplicación contiene dos tipos de roles Usuario y administrador, especificados en los  Usuarios participantes y finales.          15   

D1.‐APLICACIÓN WEB  Caso de uso de todo el sistema.   

  16   

A  continuación,  detallaremos  el  caso  de  uso  de  la  gestión  de  zonas  deportivas  para  ejemplificar los casos de uso de gestión.  D2‐GESTIÓN DE ZONAS DEPORTIVAS   

                       

17   

Como  caso  de  uso  significativo  del  sistema,  también  detallaremos  la  gestión  de  eventos.  D3‐GESTIÓN DE EVENTOS 

                      18   

3.2.3  Especificación de Casos de Uso  En este punto explicaremos los casos de uso más significativos.  3.2.3 .1 Registro  El  registro  será  accesible  a  todos  los  usuarios  de  la  aplicación  web  para  que  puedan  acceder al sistema. Solo se dará la capacidad de registrarse como usuario. Se creará un  sistema de verificación con el envío de E‐Mail a las cuentas registradas.  Actores:  ‐Usuario.  Propósito  Registrar usuarios en el sistema.    3.2.3 .2 Login  El caso de uso Login se trata de la acción para poder identificar el papel del usuario a la  hora de interactuar con el sistema.  En este caso de uso se introducirán tanto el E‐Mail de usuario como la contraseña, que  previamente  han  sido  introducidas  en  el  registro  del  sistema.  También  se  podrá  acceder al sistema mediante cuentas de Twitter o Facebook. (Mediante sus respectivas  APIs, podemos obtener todos los datos necesarios para realizar un registro correcto.)  Actores:  ‐Usuario, Administrador.  Propósito  Prohibir el acceso a la aplicación a personal no autorizado y distinguir entre usuarios y  administradores del sistema.    3.2.3.3 Gestión de Zonas deportivas  Agrupación lógica de casos de uso que representa todas las acciones necesarias para  gestionar las zonas deportivas en las que se podrán realizar eventos deportivos, tanto  administradores como usuarios podrán insertar, eliminar o modificar zonas deportivas  y el administrador será el encargado de validar las mismas.        19   

Casos de Uso:  3.2.3.3.1 Insertar Zona deportiva  Este caso de uso representa la capacidad, por parte del usuario y del administrador, de  insertar una nueva zona deportiva en la aplicación web introduciendo todos los datos  necesarios. A través de este caso de uso podremos añadir los posibles deportes de la  zona  deportiva,  y  también  gestionar  los  mismos.  (En  la  modificación  también  se  podrán realizar estas últimas acciones.)  Actores:  ‐Usuario, Administrador.  Propósito  Insertar una nueva zona deportiva en el sistema.  3.2.3.3.2 Modificar zona deportiva  Representa  la  acción  de  modificar  una  zona  deportiva  ya  existente  en  la  aplicación,  para  poder  realizar  esta  acción,    se  tendrá  la  capacidad  de realizar  una  búsqueda  de  zonas deportivas, para poder seleccionar la deseada.   Actores:  ‐Usuario, Administrador.  Propósito  Modificar una zona deportiva existente del sistema.                            20   

Diagrama de actividad 

  3.2.3.3.3 Eliminar Zona Deportiva  El caso de uso Eliminar Zona Deportiva otorga la capacidad de eliminar la seleccionada  de la base de datos. Para poder realizar esta acción se tendrá la capacidad de realizar  una búsqueda de zona deportiva, para eliminar la que se desee.   Actores:  ‐Usuario, Administrador.  Propósito  Eliminar una instalación existente del polideportivo.  3.2.3.3.4 Buscar zona deportiva  Representa  la  capacidad  de  buscar  una  zona  deportiva  deseada  entre  todas  las  que  existen en la base de datos, para ello se dispondrá de filtros para poder seleccionar la   que se desee. 

21   

Este  caso  de  uso,  aparte  de  ser  usado  por  el  usuario  del  sistema  puede  ser  una  extensión de otros casos de uso, como por ejemplo el caso de uso modificar o eliminar  zona deportiva.   Además, este caso de uso permitirá acceder a la gestión de eventos.  Actores:  ‐Usuario, Administrador.  Propósito  Búsqueda de zonas deportivas mediante filtros.    3.2.3.4 Gestión de Eventos deportivos  Esta agrupación de casos de uso estará dedicada a gestionar los eventos del sistema.  3.2.3.4.1 Mostrar eventos  Representa la capacidad de buscar los eventos relativos a determinada zona deportiva  (Gestión  de  zonas  deportivas),  deporte  (Gestión  de  deportes)  o  usuario  (Gestión  social).  Actores:  ‐Usuario, Administrador.  Propósito  Búsqueda de eventos mediante filtros de los propios eventos o de otros casos de uso.  3.2.3.4.2 Notificación de eventos  Es un caso de uso que se efectúa cuando se inserta o se anula un evento por parte de  un  usuario  del  sistema,  si  un  usuario  se  apunta  a  determinado  evento  (insertar  evento), se enviarán tres tipos de notificaciones vía correo electrónico:   A los usuarios ya apuntados al evento, se les avisará de que otro usuario más ha  sido apuntado.   A los usuarios que coincidan en los horarios con el evento (Gestión de horarios)  se les enviará una notificación de que se pueden apuntar al evento.   Si se ha completado, se notificará a los participantes del evento y se asignará  aleatoriamente un encargado de reservar la zona deportiva.    Una  vez  el  encargado  confirme  la  reserva,  se  enviará  una  última  notificación  de  confirmación del evento.  22   

Actores:  ‐Ninguno.  Propósito  Notificación por parte del servidor a los usuarios del estado de los eventos.  3.2.3.4.3 Confirmar evento  Una  vez  que  se  ha  recibido  la  notificación  de  que  el  evento  se  ha  completado,  si  el  sistema te ha asignado como encargado de la reserva de la zona deportiva, se podrá  confirmar el evento una vez el usuario haya reservado la zona deportiva.  Actores:  ‐Usuario, Administrador.  Propósito  Confirmación completa del evento.                              23   

3.3  

Análisis de clases. 

Mediante  las  partes  realizadas  anteriormente  en  el  análisis  se  puede  realizar  un  diagrama de clases, identificando las relaciones entre ellas y sus atributos con un nivel  de abstracción elevado. 

            24   

4.  DISEÑO DEL SISTEMA  Una  vez  finalizado  el  análisis  del  sistema  pasaremos  al  diseño  del  mismo.  En  este  apartado realizaremos tareas para definir más detalladamente el modelo de datos, la  estructura de la aplicación y el diseño de la interfaz.  4.1 ‐  Estructura de la aplicación.  4.1.1 –Patrón MVC  El  patrón  o  modelo  de  abstracción  que  se  va  a  utilizar  se  basa  en  Modelo  Vista  Controlador, este tipo de patrón es de los más usados en aplicaciones Web.  1. La  vista  es  la  página HTML y  el  código  que  provee  de  datos  dinámicos  a  la  página.  2. Es la representación de la información con la cual el sistema opera.  3. El  controlador  es  el  responsable  de  recibir  los  eventos  de  entrada  desde  la  vista.  Desarrollar la aplicación web de esta manera otorga varias ventajas:  Dividiendo la lógica del diseño, obtenemos mayor escalabilidad, Facilita el uso de urls  amigables para un mejor posicionamiento SEO, Abstracción de datos.  Por último un ejemplo visual del MVC. 

  25   

4.1.2 –Diseño de MVC  4.1.2.1 Diseño de vista.  Debido a la gran cantidad de vistas solo mostraré las vistas de deportes, amigos, y de  zonas deportivas.  Deportes.   Show: mostrar los deportes.  Amigos.   Show: mostrar los amigos.  Zonas deportivas.   Show: mostrar todas las zonas deportivas.   New: Añadir zona deportiva.   Search: Buscar zona deportiva.   Select: Seleccionar una zona deportiva para la creación.  4.1.2.1 Diseño de controlador.  Deportes.   Show: mostrar los deportes.   Add: añadir deporte.  Amigos.   Show: mostrar los amigos.   Add: Añadir Amigo a la base de datos.   Validate: Validar un usuario que ha realizado una petición de amistad.   Denegate: Denegar petición de amistad.  26   

 Delete: Borrar a un amigo ya aceptado.  Zonas deportivas.   Show: mostrar todas las zonas deportivas.   New: crear zona deportiva.   Search: Buscar zona deportiva.   Select: Seleccionar una zona deportiva para la creación.   Add: Añadir la zona creada a la base de datos.  Cada  uno  de  los  métodos  serán  definidos  en  el  controlador,  y  tendrán  una  vista  asociada en lo que se mostrará la página html, en algunos casos como en amigos new,  no  tendrá  vista  asociada,  puesto  que  add  redirigirá  a  show,  por  lo  que  no  hará  falta  vista.    4.1.2.2 Diseño de modelo.  Una vez obtenido el diseño de las vistas y los controladores, con esta tarea trataremos  de obtener una colección de conceptos que sirven para realizar el diseño de la base de  datos.  4.2 Diseño de la base de datos  Realizaremos  un  diagrama  de  las  tablas  de  la  base  de  datos,  en  este  diagrama   podemos ver la misma al completo, desde todos los atributos con su tipo, a las claves  foráneas,  que  se  delimitan  por  el  campo  que  es  clave  foránea  con  un  triángulo  y  la  tabla a la que apunta esa clave con dos rayas paralelas.   

27   

  4.2.2 Nivel de aislamiento la base de datos.  Debido  a  que  la  base  de  datos  se  hallará  en  el  servidor  de  la  página  Web,  varios  usuarios serían capaces de atacar la base de datos a la vez, si a esto le unimos que la  propia  página  web  va  a  realizar  actualizaciones  a  la  misma  base  de  datos  cabe  la  posibilidad de que varias personas en el mismo momento ataquen a el mismo campo  de  una  tabla  de  la  base  de  datos,  esto  puede  acarrear  serios  problemas  para  la  consistencia de la misma.  Con lo comentado anteriormente se ha decidido que se usará el nivel de aislamiento  “serializable”:  Sentencia SQL: “set transaction isolation level serializable” 

28   

Analizando  el  entorno  de  las  aplicaciones  podemos  deducir  que  la  probabilidad  de  colisión es bastante baja, esto se sabe por los siguientes motivos:   ‐las transacciones en esta aplicación son cortas.  ‐las  actualizaciones  son  bastante  atómicas  (los  usuarios  que  son  el  principal  caso  de  conflicto solo modifican para ellos mismos).   Dicho esto, este nivel de aislamiento es el apropiado, puesto que aunque sea el nivel  de  aislamiento  más  restrictivo  no  se  perderá  demasiada  eficiencia  (bajo  número  de  colisiones), y nos aseguramos de que se mantenga la consistencia en la base de datos.  4.2.3 Usuarios de la base de datos.  Otro de los  puntos a tener en cuenta a la hora de utilizar una la base de datos es el  usuario con el que accedemos a ella en la aplicación.  Es posible que la introducción de código malicioso en la aplicación en la Web por parte  de los usuarios da la base de datos alojada en el servidor, por lo tanto, en la aplicación  web  se  creará  un  usuario  llamado  WebUser  con  los  privilegios  de  SELECT,  INSERT  y  DELETE.  4.3 Diseño de Interfaces  Basándonos en las especificaciones señaladas en el análisis de las interfaces pasamos a  realizar  los  prototipos  de  las  mismas,    se  realizarán  prototipos  generales  para  cada  apartado de la gestión: Inserción, Eliminación, modificación y búsqueda. Y prototipos  específicos para las partes más importantes de la interfaz Web.  Para diseñar las interfaces se ha comprado un template bastante completo realizado  con  HTML  y  Bootstrap,  que  tiene  todas  las  herramientas  necesarias  para  esta  aplicación. https://wrapbootstrap.com/theme/base‐admin‐WB00U99JJ  Las interfaces variarán con logo de la página pero seguirán esta estética      29   

4.3.1 Login y Registro 

   

        30   

4.3.2 Pantalla principal y menús. 

  4.3.3 Área de usuario. 

        31   

4.3.4.1 Eventos. 

  4.3.4.2 Creación de eventos. 

        32   

4.3.5 Pantalla de Errores. 

  4.3.6 Pie 

          33   

5  CONSTRUCCIÓN DEL SISTEMA DE INFORMACIÓN  En esta tarea se genera tanto la preparación del entorno de programación como todo  el  código  del  sistema  de  información,  y  también  se  especificarán  las  pruebas  que  se  realizarán durante la construcción.  5.1 Preparación del entorno de construcción  Aunque  el  despliegue  final  de  la  aplicación  se  realizará  en  Linux,  en  base  de  datos  MySql, el entorno de construcción se ha realizado en Windows, con una base de datos  Sqlite,  esto  se  ha  decidido  así  por  comodidad,  puesto  que  Windows  es  el  sistema  operativo  que  uso  habitualmente.  La  base  de  datos  Sqlite  se  usó  porque  se  encontraron  problemas  a  la  hora  de  desplegarlo  en  MySql  en  Windows,  y  también  porque  a  la  hora  de  hacer  pruebas  Sqlite  es  bastante  más  liviana  que  MySql,  lo  que  hace que nos ahorremos recursos del sistema.  Para  instalarlo,  he  usado  ‘RailsInstaller’  que  es  un  paquete  de  instalación  para  Windows que contiene, entre otros, los siguientes elementos:  ‐

Ruby 1.9.3‐p392 



Rails 3.2 



Sqlite 

Una  vez  instalado,  y  para  facilitar  la  programación  en  la  plataforma,  he  usado  el  entorno de desarrollo RubyMine, que es el definido por la comunidad como uno de los  mejores IDE para ruby.  http://stackoverflow.com/questions/5724637/pros‐and‐cons‐to‐rubymine‐and‐textmate. 

Después  de  esto,  generamos  una  nueva  aplicación  rails,  y  ya  podemos  empezar  a  desarrollar.  Lo primero que hay que tener en cuenta al ponerse a desarrollar es la complejidad de  utilizar  cualquier  framework,  puesto  que  prácticamente  todo  lo  que  conozco  como  programador está ‘redefinido’, con lo cual hay que aprender todos los métodos y todo  el funcionamiento del framework ‘ruby on rails’ prácticamente desde cero. 

34   

También comentar, que, una vez controlado, ayuda muchísimo el desarrollo y se gana  mucho tiempo a la hora de programar.   Ahora mostraré un ejemplo de la complejidad del framework Rails, nada más crear un  proyecto ‘Hello World’, nos encontramos con la siguiente distribución de ficheros.  Distribución de los directorios en rails 

  Esto nos da una idea de la dificultad de empezar con este tipo de frameworks.            35   

5.2  Implantación de la base de datos  En esta tarea se crean todas las tablas diseñadas en los puntos anteriores. Puesto que  la aplicación se va a desarrollar en el framework ruby on rails,  la base de datos no se  creará mediante el sistema de consultas sql.  En  ruby  on  rails  la  base  de  datos  es  representada  por  Modelos,  los  cuales  hay  que  generarlos mediante el comando   ‘rails generate new model  :, …  Este  comando  generará  varios  elementos,  entre  ellos  un  fichero  de  migración  y  un  fichero de modelos.  Debido a la importancia de estos ficheros, pasaremos a detallarlos a continuación.  5.2.1 Migraciones  Los  ficheros  de  migración  se  crean  en  el  directorio  /db/migrations/  En  la  figura  siguiente se mostrará el ejemplo de ‘deportes’ 

  En este fichero de migración, vemos que crea la tabla ‘sports’, con las columnas name  de  tipo  string,  ‘desctription’  de  tipo  text  y  ‘validated’  de  tipo  boolean.  Los  t.timestamps  son  columnas  en  las  que  se  almacena  el  momento  de  creación  y  de  actualización de la tabla.  Una  vez  creados  todos  los  modelos  con  todas  las  migraciones,  el  comando  ‘rake  db:migrate’,  creará  todas  las  tablas  en  el  sistema  gestor  de  base  de  datos  que  tengamos  configurada  en  el  fichero  ‘/app/config/database.yml’.  Esto  permite  una  36   

abstracción absoluta de la base de datos en la que vayas a trabajar. Solo cambiando el  fichero de configuración podríamos cambiar por ejemplo de mysql a mariadb.  El  fichero  de  migraciones  es  una  pre‐configuración  para  que  la  base  de  datos  sea  posteriormente creada. Puesto que algunas de las tablas tienen que ser rellenadas en  la creación como por ejemplo la tabla ‘city’ o la tabla ‘sport’, para poder poblar la base  de datos en el momento de la creación contamos del fichero /db/db.seed , mediante  métodos Active Record que posteriormente comentaremos.  5.2.2 Modelos  Otro  fichero  que  se  generará  con  el  comando  ‘generate  model’  son  los  modelos,  afincados en /app/models/  La estructura de los mismos es la siguiente: 

  La generación anterior de migraciones crea tablas en la base de datos no relacionadas,  toda  la  consistencia  y  las  relaciones  de  la  base  de  datos  se  realizará  en  los  modelos,  siendo  el  propio  sistema  rails  el  encargado  de  la  consistencia  de  los  datos,  y  no  la  propia base de datos.  En  este  modelo  podemos  ver  ‘attr_accesible’  que  serían  los  atributos  de  la  tabla  anteriormente  generada  a  los  que  podemos  acceder  y  modificar  en  la  aplicación,  los  ‘has_many’  significa  que  hay  una  relación  1‐N  desde  esta  tabla  hacia  por  ejemplo  ‘user_sports’, que tendrá el siguiente modelo. 

  37   

Con este modelo podemos apreciar la definición 1 a N por las dos partes.  5.3 Controladores  Los  controladores  son  los  encargados  de  recibir  las  peticiones  de  los  usuarios  y  disparar las acciones para poder devolver la respuesta a los usuarios y en gran medida  de la lógica de la aplicación. Estos controladores se implementan mediante clases en la  carpeta ‘/app/controllers’.  Se generan mediante el comando ‘rail generate controller mycontroller new create …’ ,   Ejemplo de controlador: 

  Podemos  observar  varias  cosas  en  este  controlador,  primero  vemos  la  clase  ‘SportsController’ que define el controlador del modelo ‘sports’. 

38   

El método before_filter nos permite filtrar las llamadas a esta clase, por lo tanto, en  este caso, si un usuario no tiene una sesión en el sistema, se le redigirá a la pantalla de  login.  El  método  show  define  la  variable  @sports,  que  será  usada  por  la  vista  para  poder  mostrar todos los deportes.  Puesto que rails está basado en COC (Convention over configuration), el método show  hace  una  renderización  por  defecto  de  la  vista  /sport/show.html.erb,  si  quisiéramos  renderizar otra vista podríamos hacerlo con el método ‘render’.  El método add, después de realizar los chequeos oportunos, almacena un deporte en la  base de datos.  Podemos  observar  diversos  métodos  Active  Record.  Esta  es  una  de  las  principales  características  de  rails.  Permite  realizar  consultas,  modificaciones  y  creaciones  a  la  base de datos como si de clases de ruby se trataran.  Por ejemplo, antes veíamos que la tabla ‘user_sports’ tenía una referencia a la tabla  ‘sports’ . Cada una de las referencias de la fila se transforman en clases accesibles a los  elementos que contienen, por ejemplo:    Tabla sports  ID 

nombre 



fútbol 

  Tabla user_sports  ID 

User_id 

Sport_id 







    39   

siendo ‘Us’ una variable de tipo UserSport con ID 1.  Us.sport.name ‐> accederíamos al nombre del deporte asociado a la tabla (fútbol).  También en el ejemplo de arriba podemos ver la creación de un nuevo deporte y su  introducción  en  la  base  de  datos  de  una  forma  muy  amigable  y  abstraída  completamente del Gestor de base de datos que estemos usando.  Una  vez  realizada  la  creación  en  la  base  de  datos  vemos  que  hace  una  redirección  hacia la acción/método, show, de este mismo controlador.  5.4 Vistas  Última  capa  del  modelo  vista  controlador,  que  se  asemeja a  la  capa  de  presentación  del modelo de tres capas.  En  el  anterior  punto  hemos  visto  que  el  controlador  es  el  encargado  de  hacer  renderización de las vistas, seguimos con el ejemplo y ponemos la vista de deporte que  mostraremos en el gráfico 6.4.1.  También  comentar,  que  por  defecto,  a  la  hora  de  hacer  una  renderización,  se  llama  también  a  ‘/app/views/layout/application.html.erb’  esto  sirve  para  introducir  la  cabecera y el pie de la aplicación web, con el parámetro  que renderizará  la vista que muestre el controlador.  5.4.1 Vista de deportes   /app/views/sport/show.html.erb  Deportes


40   

false %> Añadir Deporte Nombre Descripcion Añadir alert('');

 

41   

Como  hemos  comentado  antes,  la  cabecera  y  el  pie  estarían  en  el  fichero  /app/views/layout/application.html.erb, además se pueden observar la variable que se  han declarado en el controlador, @sports para mostrarlos, y una llamada a /sport/add,  para la creación del deporte mediante el formulario.  Los tres puntos anteriores forman el paradigma MVC, modelo, vista, controlador.  5.5 Librerías externas utilizadas  Las  librerías  externas  que  se  han  utilizado  para  el  desarrollo  de  la  aplicación  son  las  siguientes:  ‐Gemas de rails: Librerías de funciones o plugins para rails que permiten realizar todo  tipo de funciones para las aplicaciones web.   Paginate:  Sirve  para  mostrar  la  paginación  de  los  elementos  rails  con  una  simple declaración.    Devise: Conjunto de herramientas para la gestión de usuarios de una aplicación  web.   Omniauth: librería para el acceso a twitter y facebook.  ‐Jquery: librerías de funciones que facilitan el desarrollo en javascript.  ‐Google  Maps  Api:  Api  de  desarrollo  de  google  maps,  se  ha  utilizado  para  señalar  y  crear la disposición geográfica de las zonas deportivas en la aplicación.  ‐Jquery  WeekCalendar:  Para  mostrar  y  crear  horarios  de  una  forma  intuitiva,  se  ha  usado  esta  librería,  que  crea  un  horario  semanal  en  javascript  con  el  que  el  usuario  puede interactuar.  ‐Jquery  Multiselect:  Elemento  javascript  que  mezcla  el  combo  y  con  las  checks,  para  realizar selecciones múltiples fácilmente.    5.6 Seguridad de la aplicación. 

42   

Otra de las ventajas de utilizar un framework como ruby on rails, es la seguridad por  defecto que otorga, todo lo que se desarrolla está delimitado por la estructura de la  propia plataforma, lo que te obliga a utilizar buenas prácticas de seguridad, a parte de  las propias características de seguridad del sistema como por ejemplo.   Sistema de sesiones.   Manejo de bases de datos mediante Active Record (Evita SQL Injection).   Filtros  de  acceso  en  los  controladores,  se  tienen  que  implementar,  pero  facilitan mucho el trabajo para la seguridad.  Por  supuesto,  el  framework  no  evita  todos  los  posibles  ataques,  por  lo  que  se  ha  procurado  realizar  controles  en  todas  las  peticiones  post  y  get  de  los  parámetros  enviados para evitar problemas.   5.7 Problemas encontrados durante el desarrollo de la aplicación.  Uso del entorno ruby on rails.  El principal problema a la hora de desarrollar la aplicación ha sido el uso del framework  Ruby on Rails.   Sus  principales  puntos  más  complicados  son  la  distribución  de  los  directorios  en  el  entorno, son muchísimos elementos, a primera vista desperdigados, conectados entre  sí  por  convenciones  de  nombres,  esto  hace  que  entres  en  el  desarrollo  un  poco  perdido.  Otro  de  los  elementos  que  me  han  dado  problemas  ha  sido  la  utilización  de  active  record,  es  una  herramienta  potentísima  pero  que  implica  el  estudio  de  todos  sus  métodos para un correcto uso.  Los  demás  elementos  son  los  típicos  de  aplicaciones  web,  y  no  he  tenido  prácticamente problemas.  Despliegue de la aplicación en bluehost 

43   

En  el  despliegue  de  la  aplicación  en  internet  se  han  encontrado  varios  problemas,  sobre  todo  a  la  hora  de  configurar  el  servidor  apache  con  ruby  on  rails,  para  el  desarrollo, Rails usa el servidor Webrick, que es bastante rápido y liviano, pero que no  da los mismos resultados que apache a la hora de utilizarse en un entorno real. Para  poder usarlo se ha usado Passenger, es un tema que se desconocía y que ha ocupado  bastante tiempo solucionarlo.  Tiempo   Uno de los principales problemas y el cual ha hecho que retrase la presentación a Julio  es la falta de tiempo, el tener asignaturas de 3º y el desarrollo de un proyecto personal  me  ha  quitado  gran  parte  del  tiempo  que  en  un  principio  tenía  previsto  para  la  realización del PFG.  5.8 Posibles Mejoras  Aplicación para Móvil.‐ Creo que una aplicación móvil vendría muy bien a esta página  web, puesto que el poder acceder directamente a los eventos sería muy interesante.   Mejora de sistema social.‐  Al final la aplicación ha quedado algo coja con el sistema  social,  quizás  la  creación  de  un  chat  o  de  algún  sistema  de  amistades  mejoraría  bastante la aplicación.                 

44   

    6   CONCLUSIONES  Uno de los motivos de la realización de una aplicación web de esta envergadura es que  laboralmente no he desarrollado prácticamente nada del paradigma web, y veía el PFG  como una gran oportunidad de aprendizaje y crecimiento personal.  También opté por desarrollarla en un framework porque en la asignatura de desarrollo  de aplicaciones web conocimos el método tradicional de desarrollo.  Al  final  creo  que  el  resultado  ha  sido  bastante  bueno,  ha  quedado  una  página  Web  muy  vistosa  y  sencilla  de  utilizar,  con  una  integración  con  las  Apis  de  google  y  elementos javascript muy interesante.  También quería destacar que veo como buena medida el nuevo sistema de desarrollo  de PFG, puesto que con el límite de 50 páginas hace que nos centremos en los puntos  más importantes del desarrollo y que no se haga demasiado pesada la elaboración del  mismo.                   

45   

    8  BIBLIOGRAFÍA  ‐Métodos, documentación y ejemplos del framework ruby on rails  http://rubyonrails.org/documentation  ‐Bases de ruby on rails con ejemplos prácticos.   http://railsforzombies.org/  ‐Explicación del modelo vista controlador detallada  http://es.wikipedia.org/wiki/Modelo_Vista_Controlador  ‐Api de google maps para integración con la aplicación.   

https://developers.google.com/maps/ 

‐Apuntes de la asignatura Programación de aplicaciones web de la Universidad de La  Rioja. Impartida por Francisco José García Izquierdo.                   

46   

    ANEXO I. MANUAL DE USUARIO  Registro  Para registrarse en la aplicación hay que acceder a http://127.0.0.1:3000/users/sign_up o  hacer click en “registrarse” en la parte superior derecha de la página de inicio. 

  Introducimos nuestros datos y creamos la cuenta.  Configurar cuenta de usuario  Una vez hemos accedido a la aplicación, hay que introducir los datos de usuario, así  como una foto de avatar. Para hacerlo clikamos en: 

    47   

    Una vez accedemos a la cuenta introducimos nuestros datos y una foto de avatar 

  Configurar deportes  Para configurar los deportes que vamos a practicar accedemos a 

48   

  Ahí nos aparecerá la siguiente página 

  En la parte izquierda haciendo click en el botón + podremos añadir deportes y a la  derecha podremos introducir nuevos deportes que no estén en el sistema.  Configurar calendario de horas libres  Accedemos al calendario en la siguiente opción de menú 

 

49   

En la siguiente pantalla, podremos seleccionar las horas libres haciendo click en las  horas que queramos y arrastrando, también podemos copiar el horario semanal a las  semanas posteriores con la opción del panel derecho.  Para que el sistema nos notifique de eventos en nuestra localidad en las horas libres  tendremos que marcar la opción, recibir notificaciones de eventos. 

  Eventos  Una vez realizada la configuración ya podremos usar plenamente la aplicación, como  por ejemplo ver eventos disponibles en el menú Eventos 

  Podremos ver los eventos a los que estamos apuntados en la parte superior, con los  usuarios  apuntados  al  evento,  ver  los  eventos  a  los  que  podemos  apuntarnos  con  el  buscador de la tabla inferior, y crear nuevos eventos en el botón “crear evento” de la  tabla derecha. 

50   

  Crear Evento 

  Zonas deportivas  Si  quieres  practicar  deportes  en  zonas  deportivas  particulares  o  no  registradas  en  el  programa, podemos ver e introducir nuevas zonas en  Menú configuración ‐> Zonas Deportivas 

51   

  Pichando en los marcadores del mapa podremos ver las zonas deportivas, y en crear  zona deportiva accederemos a la siguiente pantalla.  Crear zona deportiva 

  Amigos  Accedemos en menú ‐> Social ‐> Amigos 

52   

  Podremos añadir amigos en la parte superior derecha, en la parte superior izquierda  veremos  a  los  amigos  ya  agregados,  con  la  posibilidad  de  enviar  mensajes,  y  en  la  inferior derecha veremos las solicitudes de amistad, con la posibilidad de descartar o  aceptar.     

53   

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.