TRABAJO FINAL DE GRADO

TRABAJO FINAL DE GRADO LearnMyLanguage Área: JEE Tutor: Albert Grau Autor: José Luis Mata Maturano Fecha: 13 de enero de 2015 UNIVERSITAT OBERTA DE

6 downloads 48 Views 3MB Size

Story Transcript

TRABAJO FINAL DE GRADO LearnMyLanguage

Área: JEE Tutor: Albert Grau Autor: José Luis Mata Maturano Fecha: 13 de enero de 2015

UNIVERSITAT OBERTA DE CATALUNYA

LearnMyLanguage 1

Introducción ........................................................................................................... 5

2

Justificación ........................................................................................................... 6

3

Objetivos................................................................................................................ 6

4

Planificación .......................................................................................................... 7

5

Productos obtenidos: ............................................................................................. 9

6

Análisis ................................................................................................................ 11 6.1

Requisitos funcionales .................................................................................. 11

6.1.1

Registrarse en el sistema: ..................................................................... 11

6.1.2

Autentificación en el sistema ................................................................. 11

6.1.3

Crear un evento tipo Skype ................................................................... 11

6.1.4

Crear un evento tipo cita presencial: ...................................................... 11

6.1.5

Consultar eventos tipo Skype: ............................................................... 12

6.1.6

Consultar eventos presenciales: ............................................................ 12

6.1.7

Unirse a un evento tipo Skype: .............................................................. 12

6.1.8

Unirse a un evento presencial: .............................................................. 12

6.1.9 Confirmar por parte del organizador del evento a un usuario inscrito al evento (presencial o Skype):................................................................................ 12 6.1.10

Solicitar amistad a un usuario: ............................................................... 12

6.1.11

Aceptar amistad de un usuario: ............................................................. 12

6.2

6.2.1

Rendimiento .......................................................................................... 12

6.2.2

Disponibilidad ........................................................................................ 12

6.2.3

Seguridad .............................................................................................. 12

6.2.4

Usabilidad .............................................................................................. 13

6.2.5

Portabilidad ........................................................................................... 13

6.3

7

Requisitos no funcionales ............................................................................. 12

Especificación............................................................................................... 13

6.3.1

Actores del sistema ............................................................................... 13

6.3.2

Diagrama de casos de uso .................................................................... 14

6.3.3

Especificación de casos de uso ............................................................. 14

6.4

Modelo conceptual de base de datos............................................................ 20

6.5

Modelo lógico de datos ................................................................................. 22

Diseño ................................................................................................................. 26 7.1

Diagrama de clases principal ........................................................................ 26

7.2

Diagramas de secuencia .............................................................................. 26

7.2.1

Alta usuario ........................................................................................... 27

LearnMyLanguage

Página 2

LearnMyLanguage 7.2.2

Autentificación en el sistema ................................................................. 28

7.2.3

Crear evento .......................................................................................... 29

7.2.4

Consultar evento ................................................................................... 29

7.2.5

Unirse a un evento ................................................................................ 30

7.2.6

Confirmar Evento ................................................................................... 31

7.2.7

Solicitar Amistad .................................................................................... 32

7.2.8

Confirmar Amistad ................................................................................. 33

7.3

8

Prototipos de pantalla ................................................................................... 34

7.3.1

Pantalla de inicio ................................................................................... 34

7.3.2

Registro en el sistema ........................................................................... 35

7.3.3

Alta evento tipo skype............................................................................ 36

7.3.4

Alta evento presencial ........................................................................... 37

7.3.5

Consulta y unirse evento tipo Skype ...................................................... 38

7.3.6

Consulta y unirse evento presencial ...................................................... 39

7.3.7

Confirmar evento tipo Skype .................................................................. 40

7.3.8

Confirmar evento presencial .................................................................. 41

7.3.9

Solicitar amistad .................................................................................... 42

7.3.10

Confirmar Amistad ................................................................................. 43

Implementación ................................................................................................... 44 8.1

Tecnologías .................................................................................................. 44

8.1.1

Modelo vista controlador ........................................................................ 44

8.1.2

Base de datos:....................................................................................... 44

8.1.3

Servidor de aplicaciones ........................................................................ 44

8.1.4

Entorno de desarrollo ............................................................................ 44

8.1.5

Framework MVC .................................................................................... 45

8.1.6

Componentes de la aplicación - Framework IoC.................................... 45

8.1.7

Mapeo Objeto - Relacional .................................................................... 45

8.1.8

CCS presentación:................................................................................. 45

8.2

Componentes de la aplicación: ..................................................................... 46

8.2.1

Pantalla de inicio: .................................................................................. 48

8.3

Pantalla Mi Perfil: .......................................................................................... 50

8.4

Pantalla Cambiar contraseña ........................................................................ 52

8.5

Pantalla Mi foto ............................................................................................. 52

8.6

Pantalla mis amigos...................................................................................... 53

8.7

Pantalla eventos Skype. ............................................................................... 54

LearnMyLanguage

Página 3

LearnMyLanguage 8.8

Pantalla crear evento Skype. ........................................................................ 54

8.9

Pantalla consultar evento.............................................................................. 55

8.10

Pantalla eventos presenciales. ..................................................................... 57

9

Contenido de la entrega de sw configuración y puesta en marcha ...................... 58 9.1

Contenido ..................................................................................................... 58

9.2

Instalación .................................................................................................... 59

9.2.1

Despliegue de la aplicación ................................................................... 59

9.2.2

Base de datos........................................................................................ 59

9.3

Configuración ............................................................................................... 59

9.4

Url de inicio ................................................................................................... 60

10

Evaluacion de costes ....................................................................................... 60

11

Trabajo futuro ................................................................................................... 61

12

Conclusiones.................................................................................................... 61

13

Bibliografía ....................................................................................................... 62

LearnMyLanguage

Página 4

LearnMyLanguage

1 Introducción El trabajo fin de grado ‘LearnMyLanguage’ es una web, estilo red social, para ayudar a los usuarios a aprender y enseñar idiomas. Consiste en una red social en la que personas con intereses comunes, puedan aprender un determinado idioma a la vez que puedan enseñar su idioma a otros usuarios. Los usuarios podrán quedar con otros usuarios bien presencialmente, bien mediante videoconferencia, o como ellos elijan: Mail, teléfono… Los requisitos principales de la aplicación son los siguientes: 







    

 

Registrarse en el sistema: El usuario deberá registrarse en el sistema introduciendo una información personal mínima. Posteriormente podrá completar sus datos personales incluyendo foto, intereses … Autentificación en el sistema: El usuario deberá estar autenticado en el sistema, para autentificarse deberá realizar una identificación mediante correo electrónico y contraseña, esta contraseña podrá ser cambiada. Crear un evento tipo Skype: El usuario podrá crear un evento de tipo Skype o videoconferencia. Un evento Skype consiste en publicar que a una determinada hora está dispuesto a enseñar un determinado idioma y quiere hablar con una persona que le pueda enseñar otro idioma todo mediante videoconferencia. Crear un evento tipo cita presencial: El usuario podrá crear un evento de tipo presencial. Un evento presencial consiste en publicar que a una hora y en un lugar determinado, está dispuesto a quedar con una o varias personas para poder aprender un idioma y enseñar otro idioma. Consultar eventos tipo Skype: Se podrán consultar todos eventos de tipo Skype que otros usuarios hayan creado y que aún este vigentes. Consultar eventos presenciales: Se podrán consultar todos eventos de tipo presencial que otros usuarios hayan creado y que aún este vigentes. Unirse a un evento tipo Skype: Podremos unirnos a un evento tipo Skype. Unirse a un evento presencial: Podremos unirnos a un evento tipo presencial. Confirmar por parte del organizador del evento a un usuario inscrito al evento (presencial o Skype): El organizador del evento tendrá que confirmar al asistente para que pueda participar en el evento. Solicitar amistad a un usuario: Podremos solicitar amistad a un usuario. Aceptar amistad de un usuario: Podremos aceptar la amistad que un usuario nos haya solicitado.

El proyecto se ha llevado a cabo en varias etapas, coincidentes con las entregas requeridas por la evaluación continua de la asignatura. Estas entregas han sido las siguientes:   

PAC1 -> Detalle de requisitos, arquitectura y planificación del proyecto. PAC2 -> Análisis y diseño del proyecto. PAC3 -> Implementación del proyecto.

LearnMyLanguage

Página 5

LearnMyLanguage 

PAC4 -> Entrega Final (memoria y presentación)

El presente documento perteneciente a la entrega final recoge todas las entregas anteriores. Se entrega también el código fuente de la aplicación y un archivo que puede ser instalado en un servidor de aplicaciones web. El producto final se pondrá en producción una vez implementadas una serie de funcionalidades descritas en el apartado 11 del presente documento. El trabajo ha sido realizo por José Luis Mata Maturano y Tutelado por Albert Grau Perisé, consultor de la UOC.

2 Justificación El aumento de la globalización ha creado la creciente necesidad en las personas de poder comunicarse en diferentes idiomas. El uso de idiomas comunes es cada vez más importante en áreas como el turismo, el comercio, las relaciones internacionales, las ciencias y los medios de comunicación. En la actualidad aprender lenguas extranjeras es una necesidad ineludible para los seres humanos, ya que el nivel de desarrollo alcanzado por las sociedades del tercer milenio producto de su integración económica y cultural exige el dominio de ellas. Esta realidad lingüística impone grandes desafíos a los aprendices, ya que además del dominio de su lengua materna deben desarrollar su competencia comunicativa en determinada Lengua Extranjera y en distintos contextos comunicativos. Por otro lado el aumento las redes sociales se han convertido actualmente en una parte vital de las relaciones entre amigos, familiares y desconocidos, el uso de estas redes no para de crecer. Las redes sociales representan, entre otras cosas, la apertura a nuevos espacios de relación entre individuos. La motivación principal del proyecto, es el de proporcionar una nueva red social a los aprendices de idiomas, para facilitar que se puedan poner fácilmente en contacto unos con otros y así ayudarse mutuamente a aprender el idioma que deseen.

3 Objetivos El objetivo principal de este trabajo es el de realizar una red social para poner personas en contacto, y que estas se puedan ayudar mutuamente a aprender idiomas.

LearnMyLanguage

Página 6

LearnMyLanguage Por otro lado el trabajo también tiene unos objetivos didácticos, que son el aprender y familiarizarse con las siguientes tecnologías y herramientas:            

Profundizar en la tecnología JEE. Conocer el IDE Eclipse. Familiarizarse con el Framework MVC Struts 2. Familiarizarse con el Framework IoC Spring 3. Familiarizarse con el Framework de persistencia Hibernate. Familiarizarse con la herramienta EA Enterprise architect para realizar al análisis y diseño. Refrescar técnicas de análisis y diseño UML. Familiarizarse con la utilización de hojas de estilo CSS. Familiarizarse con JQuery. Familiarizarse con PureCss. Familiarizarse con el servidor web tomcat. Familiarizarse con la base de datos mysql.

4 Planificación La planificación inicial del proyecto fue la marcada por el calendario de evaluación continua de la asignatura, este calendario marcaba las fechas de entrega de las diferentes partes del proyecto. El resumen de la planificación inicial del proyecto es el siguiente:

Fecha

Entrega

Contenido

02/10/14

PAC1

07/11/14 16/12/14 14/01/15

PAC2 PAC3 PAC4

Detalle de requisitos, arquitectura y planificación del proyecto. Análisis y diseño del proyecto. Implementación del proyecto. Entrega Final (memoria y presentación)

La planificación de las entregas se cumplió, y se entregaron las diferentes partes en las fechas comprometidas. A continuación vemos el detalle de la planificación real del proyecto. 

Resumen:

LearnMyLanguage

Página 7

LearnMyLanguage



Planificación Pac 1: Duración 7 Días de trabajo



Planificación Pac 2: Duración 26 días de trabajo



Planificación Pac 3: 28 Días de trabajo

LearnMyLanguage

Página 8

LearnMyLanguage



Planificación Pac 4: 14 días de trabajo

En total se han dedicado 75 días de trabajo a una media de 3,5 horas día = 262 horas de trabajo.

5 Productos obtenidos: Los entregables que se han obtenido durante la realización del TFG son: PAC1 -> Plan de Trabajo: La primera entrega del proyecto contenía: La propuesta del proyecto, requisitos funcionales, requisitos no funcionales, descripción de la arquitectura y planificación inicial. PAC2 -> Plan de Trabajo: En la segunda entrega se entregaron los documentos de análisis y diseño de la aplicación. A destacar los siguientes documentos entregados en la PAC:       

Definición de actores del sistema. Diagrama de casos de uso. Especificación de casos de uso. Modelo conceptual de base de datos. Modelo lógico de base de datos. Diagrama de clases principal. Diagramas de secuencia.

LearnMyLanguage

Página 9

LearnMyLanguage

PAC3 -> Implementación: En la tercera entrega se entregaron los siguientes ficheros: (consultar Apartado 9 Contenido de la entrega de sw configuración y puesta en marcha)  



learnMylanguage.war -> War de la aplicación que puede ser deployado en un servidor de aplicaciones. learnMyLanguageProyecto.zip -> Código fuente del proyecto, se puede importar a eclipse como proyecto maven. File -> import -> Maven -> Existing maven projects. Si se quiere compilar el Proyecto se debe hacer con la herramienta maven, el pom del Proyecto esta incluido en el zip base_de_datos.sql-> Fichero con las querys de creación de tablas e inserts por defecto en la base de datos (MySql)

PAC4 -> Entrega Final (memoria y presentación): En la cuarta entrega, se entrega la Memoria del proyecto (presente documento), y un video con una presentación en power point y demostración de la aplicación.

LearnMyLanguage

Página 10

LearnMyLanguage

6 Análisis 6.1 Requisitos funcionales A continuación se describen los principales requisitos funcionales de la aplicación: 6.1.1 Registrarse en el sistema: El usuario deberá registrarse en el sistema, la aplicación pedirá los siguientes datos al usuario:    

Nombre Apellidos Correo electrónico Contraseña

Una vez registrado en el sistema, podrá completar su perfil, completándolo con los siguientes datos:       

Idioma que puedo enseñar Idioma que quiero aprender Mis intereses País Ciudad Usuario skype Foto

6.1.2 Autentificación en el sistema El usuario deberá estar autenticado en el sistema, para autentificarse deberá realizar una identificación mediante correo electrónico y contraseña. 6.1.3 Crear un evento tipo Skype El usuario podrá crear un evento de tipo Skype o videoconferencia. Al crear el evento tipo Skype, la aplicación le pedirá los siguientes datos:      

Fecha y hora de inicio Fecha y hora de fin Idioma que puedo enseñar (de entre los que tengo grabados) Idioma que quiero aprender (de entre los que tengo grabados) Número máximo de participantes Información de interés

6.1.4 Crear un evento tipo cita presencial: El usuario podrá crear un evento de tipo presencial o videoconferencia. Al crear el evento, la aplicación le pedirá los siguientes datos:



Fecha y hora de inicio

LearnMyLanguage

Página 11

LearnMyLanguage        

Fecha y hora de fin Idioma que puedo enseñar (de entre los que tengo grabados) Idioma que quiero aprender (de entre los que tengo grabados) Número máximo de participantes País Ciudad Lugar Información de interés

6.1.5 Consultar eventos tipo Skype: Se podrán consultar todos eventos de tipo Skype que estén creados en la aplicación. Estos eventos deben estar aún vigentes. 6.1.6 Consultar eventos presenciales: Se podrán consultar todos eventos de tipo evento presencial que tengamos creados en la aplicación. Estos eventos deben estar aún vigentes. 6.1.7 Unirse a un evento tipo Skype: Podremos unirnos a un evento tipo Skype. 6.1.8 Unirse a un evento presencial: Podremos unirnos a un evento tipo presencial. 6.1.9

Confirmar por parte del organizador del evento a un usuario inscrito al evento (presencial o Skype): El organizador del evento tendrá que confirmar al asistente. 6.1.10 Solicitar amistad a un usuario: Podremos solicitar amistad a un usuario. 6.1.11 Aceptar amistad de un usuario: Podremos aceptar la amistad de un usuario.

6.2 Requisitos no funcionales 6.2.1

Rendimiento

El sistema debe poder soportar una carga elevada de usuarios, deberá desarrollarse de una manera óptima para no penalizar el rendimiento. 6.2.2

Disponibilidad

La aplicación debe estar siempre disponible (24horas) para el usuario, no debe tener ningún fallo que disminuya la confianza de los usuarios. 6.2.3

Seguridad

Los usuarios podrán tener accesos de lectura o escritura a algunas porciones de datos y tendrán la posibilidad de realizar sólo algunas operaciones determinadas. LearnMyLanguage

Página 12

LearnMyLanguage 6.2.4

Usabilidad

La aplicación debe ser fácil de usar y de entender por el usuario, no le debe hacer falta ninguna ayuda para entender perfectamente cómo funciona la aplicación 6.2.5 Portabilidad Debe poderse ejecutar en diferentes plataformas software y hardware

6.3 Especificación 6.3.1 Actores del sistema En esta primera fase, el único actor que existirá será el del usuario final de la aplicación. No se tiene pensado en la primera fase ningún otro usuario: Ni administrador, ni gestor. En un futuro cuando se implemente por ejemplo los mantenimientos de países, ciudades etc. etc. .. Se creará un perfil administrador. De momento estas tablas se rellenarán directamente desde la base de datos.

LearnMyLanguage

Página 13

LearnMyLanguage 6.3.2 Diagrama de casos de uso Se expone a continuación en diagrama de casos de uso de la aplicación, en el que se muestra el usuario y todos los casos de uso de la aplicación. El usuario debe estar autentificado en el sistema excepto para los casos de uso ‘Registrarse en el sistema’, ‘Consultar eventos tipo Skype’, y ‘Consultar eventos presenciales’.

6.3.3

Especificación de casos de uso

LearnMyLanguage

Página 14

LearnMyLanguage 6.3.3.1 Registrarse en el sistema:

FICHA DE CASO DE USO ID

RFUN01

NOMBRE CASO DE USO

Registrarse en el sistema

ACTOR PRINCIPAL

Usuario

PRECONDICIONES

-

GARANTIAS DE ÉXITO

Usuario queda registrado en el sistema, se le muestra un mensaje de confirmación.

ESCENARIO PRINCIPAL DE ÉXITO

1- El usuario ingresa los datos necesarios para registrarse en el sistema. 2- Se muestra una pantalla al usuario indicando registro correcto.

ESCENARIOS ALTERNATIVOS

2.1 Si el usuario ha informado algún dato incorrecto, o no ha informado algún dato obligatorio, se le mostrará un mensaje informado de los errores. Volvemos a punto 1.

6.3.3.2 Autentificación en el sistema

FICHA DE CASO DE USO ID

RFUN02

NOMBRE CASO DE USO

Autentificación en el sistema

ACTOR PRINCIPAL

Usuario

PRECONDICIONES

Usuario registrado en el sistema

GARANTIAS DE ÉXITO ESCENARIO PRINCIPAL DE ÉXITO

ESCENARIOS ALTERNATIVOS

Usuario queda autentificado en el sistema y con una sesión abierta. 1- El usuario indica su usuario (correo electrónico) 2- El usuario indica su password 3- El usuario queda autenticado en el sistema

3.1 No se ha podido validar el usuario-password, se muestra un error al usuario y se vuelve al paso 1

6.3.3.3 Crear un evento tipo Skype

FICHA DE CASO DE USO ID NOMBRE CASO DE

LearnMyLanguage

RFUN03 Crear evento de tipo Skype

Página 15

LearnMyLanguage USO ACTOR PRINCIPAL

Usuario

PRECONDICIONES

Usuario autentificado en el sistema

GARANTIAS DE ÉXITO

Evento de tipo Skype creado.

ESCENARIO PRINCIPAL DE ÉXITO

1- El usuario ingresa los datos necesarios para poder registrar un evento de tipo Skype. 2- Se muestra una pantalla al usuario indicando que el evento se ha creado de una manera correcta.

ESCENARIOS ALTERNATIVOS

2.1 Si el usuario ha informado algún dato incorrecto, o no ha informado algún dato obligatorio, se le mostrará un mensaje informado de los errores. Volvemos a punto 1.

6.3.3.4 Crear un evento tipo cita presencial

FICHA DE CASO DE USO ID

RFUN04

NOMBRE CASO DE USO

Crear evento de tipo presencial

ACTOR PRINCIPAL

Usuario

PRECONDICIONES

Usuario autentificado en el sistema.

GARANTIAS DE ÉXITO

Evento de tipo presencial creado.

ESCENARIO PRINCIPAL DE ÉXITO

1- El usuario ingresa los datos necesarios para poder registrar un evento de tipo presencial. 2- Se muestra una pantalla al usuario indicando que el evento se ha creado de una manera correcta.

ESCENARIOS ALTERNATIVOS

2.1 Si el usuario ha informado algún dato incorrecto, o no ha informado algún dato obligatorio, se le mostrará un mensaje informado de los errores. Volvemos a punto 1.

6.3.3.5 Consultar eventos tipo Skype

FICHA DE CASO DE USO ID

RFUN05

NOMBRE CASO DE USO

Consultar evento tipo Skype.

ACTOR PRINCIPAL

Usuario

PRECONDICIONES

-

LearnMyLanguage

Página 16

LearnMyLanguage GARANTIAS DE ÉXITO

Al usuario se le muestra una pantalla con los datos de un determinado evento.

ESCENARIO PRINCIPAL DE ÉXITO

1- Se le muestra al usuario todos los eventos de tipo Skype filtrados por unos determinados parámetros. 2- El usuario podrá aplicar más filtros a la lista de eventos. 3- El usuario podrá seleccionar un determinado evento y se le mostrará el detalle del evento.

ESCENARIOS ALTERNATIVOS

6.3.3.6 Consultar eventos presenciales

FICHA DE CASO DE USO ID

RFUN06

NOMBRE CASO DE USO

Consultar evento tipo Presencial.

ACTOR PRINCIPAL

Usuario

PRECONDICIONES

-

GARANTIAS DE ÉXITO ESCENARIO PRINCIPAL DE ÉXITO

Al usuario se le muestra una pantalla con los datos de un determinado evento. 1- Se le muestra al usuario todos los eventos de tipo Skype filtrados por unos determinados parámetros. 2- El usuario podrá aplicar más filtros a la lista de eventos. 3- El usuario podrá seleccionar un determinado evento y se le mostrará el detalle del evento.

ESCENARIOS ALTERNATIVOS

6.3.3.7 Unirse a un evento tipo Skype

FICHA DE CASO DE USO ID

RFUN07

NOMBRE CASO DE USO

Unirse a un evento tipo Skype.

ACTOR PRINCIPAL

Usuario

PRECONDICIONES

Usuario autentificado, evento seleccionado

GARANTIAS DE ÉXITO ESCENARIO PRINCIPAL DE ÉXITO

LearnMyLanguage

Al usuario queda unido al evento. 1- Desde la consulta de un evento un usuario podrá unirse a un evento, junto con los datos del evento, tendrá un botón de Unirse

Página 17

LearnMyLanguage al evento. 2- El usuario pulsa el botón unirse al evento. 3- Se muestra una pantalla de confirmación indicando que se ha unido al evento de una manera correcta 4- Se le envía un mail al usuario que ha creado el evento indicándole que se ha unido un usuario. 3.1 Si el evento ya tiene los mismos participantes confirmados que el número máximo de participantes permitidos, se le muestra un mensaje al usuario indicando que ya no se aceptan más participantes.

ESCENARIOS ALTERNATIVOS

6.3.3.8 Unirse a un evento presencial

FICHA DE CASO DE USO ID

RFUN08

NOMBRE CASO DE USO

Unirse a un evento tipo Presencial.

ACTOR PRINCIPAL

Usuario

PRECONDICIONES

Usuario autentificado, evento seleccionado

GARANTIAS DE ÉXITO ESCENARIO PRINCIPAL DE ÉXITO

ESCENARIOS ALTERNATIVOS

Al usuario queda unido al evento. 1- Desde la consulta de un evento un usuario podrá unirse a un evento, junto con los datos del evento, tendrá un botón de Unirse al evento. 2- El usuario pulsa el botón unirse al evento. 3- Se muestra una pantalla de confirmación indicando que se ha unido al evento de una manera correcta 4- Se le envía un mail al usuario que ha creado el evento indicándole que se ha unido un usuario. 3.1 Si el evento ya tiene los mismos participantes confirmados que el número máximo de participantes permitidos, se le muestra un mensaje al usuario indicando que ya no se aceptan más participantes.

6.3.3.9 Confirmar por parte del organizador del evento a un usuario inscrito al evento Skype:

FICHA DE CASO DE USO ID

LearnMyLanguage

RFUN09

Página 18

LearnMyLanguage NOMBRE CASO DE USO

Confirmar evento skype

ACTOR PRINCIPAL

Usuario autentificado

PRECONDICIONES

-

GARANTIAS DE ÉXITO

El usuario que se ha unido al evento queda confirmado.

ESCENARIO PRINCIPAL DE ÉXITO

1- El usuario que ha creado el evento, confirma a un usuario que se ha unido al evento. 2- Al usuario que se ha unido al evento, le llega un mail de confirmación.

ESCENARIOS ALTERNATIVOS

1.1 El usuario que ha creado el evento ‘Rechaza’ al usuario que se ha unido. 1.2 Al usuario unido al evento, le llega un mail diciendo que ha sido rechazado del evento.

6.3.3.10 Confirmar por parte del organizador del evento a un usuario inscrito al evento presencial:

FICHA DE CASO DE USO ID

RFUN10

NOMBRE CASO DE USO

Confirmar evento presencial

ACTOR PRINCIPAL

Usuario autentificado

PRECONDICIONES

-

GARANTIAS DE ÉXITO ESCENARIO PRINCIPAL DE ÉXITO

ESCENARIOS ALTERNATIVOS

El usuario que se ha unido al evento queda confirmado. 1-

El usuario que ha creado el evento, confirma a un usuario que se ha unido al evento. 2- Al usuario que se ha unido al evento, le llega un mail de confirmación. 1.1 El usuario que ha creado el evento ‘Rechaza’ al usuario que se ha unido. 1.2 Al usuario unido al evento le llega un mail diciendo que ha sido rechazado del evento.

6.3.3.11 Solicitar amistad a un usuario

FICHA DE CASO DE USO ID NOMBRE CASO DE

LearnMyLanguage

RFUN11 Solicitar amistad a un usuario

Página 19

LearnMyLanguage USO ACTOR PRINCIPAL

Usuario

PRECONDICIONES

Usuario autentificado

GARANTIAS DE ÉXITO ESCENARIO PRINCIPAL DE ÉXITO

Al usuario le llega un mensaje indicado que otro usuario desea ser su amigo. 1- Se le muestra al usuario A, todos los usuarios B, seleccionado bajo unos criterios de búsqueda. 2- El usuario podrá seleccionar uno de los usuarios. 3- El usuario podrá realizar una petición de amistad. 4- Al usuario tipo B le llega un mail.

ESCENARIOS ALTERNATIVOS

6.3.3.12 Aceptar amistad de un usuario

FICHA DE CASO DE USO ID

RFUN12

NOMBRE CASO DE USO

Aceptar amistad de un usuario

ACTOR PRINCIPAL

Usuario

PRECONDICIONES

Usuario autentificado

GARANTIAS DE ÉXITO ESCENARIO PRINCIPAL DE ÉXITO

ESCENARIOS ALTERNATIVOS

Un usuario A y un Usuario B están relacionados en la aplicación, el usuario A podrá consultar datos del Usuario B y viceversa. 1- El usuario ‘B’ confirma al usuario ‘A’ 2- Al usuario ‘A’ le llega un mail de confirmación de amistad. 1.1 El usuario ‘B’ rechaza al usuario ‘A’. 1.2 Al usuario ‘A’ le llega un mail de confirmación de amistad.

6.4 Modelo conceptual de base de datos En el modelo conceptual, mostraremos las entidades que tendrán que ser gestionadas por la aplicación, para representar el modelo conceptual de datos utilizaremos un modelo entidad – relación. El modelo de datos entidad-relación está basado en una percepción del mundo real que consta de una colección de objetos básicos, llamados entidades, y de relaciones entre esos objetos. A continuación se muestra el modelo entidad relación de la aplicación.

LearnMyLanguage

Página 20

LearnMyLanguage class Modelo entidad - relacion

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA Es Amigo

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

1..* EA1..*11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 1..* 1

vive

1..* ciudad

persona

Pertenece

1

Pais EA 11.1 Unregistered Trial 1 Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 1

1..* 1 EA 11.1 Unregistered Trial 1..* Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 1..*

1..*

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EASe11.1 Unregistered Trial Version EA Organiza realiza

esta apuntada

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA organiza

esta

Quiere

1..*

Quiere

EA 11.1 Unregistered apuntada Trial aprender Version enseñar EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 1..*

1..*

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA evento presencial

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA Para 1..* 1..*

aprender 1..*

Para

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA enseñar 1 Para 1..*

1..*

aprender

evento skype Idioma EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 1..*

Para enseñar

1..

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

LearnMyLanguage

Página 21

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA 11.1 Unregistered Trial Version EA

LearnMyLanguage

6.5 Modelo lógico de datos A continuación, se muestra el modelo relacional de base de datos, en él, se muestran todas las tablas que tendrán la aplicación y las relaciones entre ellas.

También se muestran los ddl de creación de tablas generadas desde la aplicación Enterprise Arquitech (aplicación con la que se ha realizado el análisis y diseño de la aplicación)

Tabla de personas: Almacenará los datos de las personas/usuarios de la aplicación CREATE TABLE PERSONA ( id_persona INT NOT NULL,

LearnMyLanguage

Página 22

LearnMyLanguage correo_elect CHAR(100) NOT NULL, password CHAR(20) NOT NULL, nombre_apellidos CHAR(100) NOT NULL, cod_ciudad INT, Foto BLOB, usuario_skype CHAR(100), PRIMARY KEY (id_persona) ); Tabla ciudad: Tabla maestra con todas las ciudades del mundo CREATE TABLE CIUDAD ( cod_ciudad INT NOT NULL, cod_pais INT NOT NULL, nombre_ciudad CHAR(100) NOT NULL, PRIMARY KEY (cod_ciudad) ); Tabla país: Tabla maestra con todos los países del mundo CREATE TABLE pais ( cod_pais INT NOT NULL, nombre CHAR(100) NOT NULL, PRIMARY KEY (cod_pais) ); Tabla país: Tabla maestra con todos los posibles idiomas a enseñar/aprender CREATE TABLE idioma ( cod_idioma INT NOT NULL, nombre_idioma CHAR(100), PRIMARY KEY (cod_idioma) );

Tabla persona_idioma: Tabla con todos los posibles idiomas a enseñar/aprender de una persona CREATE TABLE persona_idioma ( id_persona INT NOT NULL, cod_idioma INT NOT NULL,

LearnMyLanguage

Página 23

LearnMyLanguage aprender_o_ensenar CHAR(1) NOT NULL, PRIMARY KEY (id_persona, cod_idioma, aprender_o_ensenar) ); Tabla evento_skype: Tabla donde se registran todos los eventos tipo Skype CREATE TABLE evento_skype ( id_evento INT NOT NULL, fecha_hora_inicio DATETIME(0) NOT NULL, fecha_hora_fin DATETIME(0) NOT NULL, cod_idioma_ensenar INT NOT NULL, cod_idioma_aprender BIGINT NOT NULL, numero_max_participantes INT NOT NULL, info_interes CHAR(255), PRIMARY KEY (id_evento) ); Tabla evento_presencial: Tabla donde se registran todos los eventos tipo presencial

CREATE TABLE evento_presencial ( id_evento INT NOT NULL, fecha_hora_inicio DATETIME(0) NOT NULL, fecha_hora_fin DATETIME(0) NOT NULL, cod_ciudad INT NOT NULL, lugar CHAR(255) NOT NULL, cod_idioma_ensenar INT NOT NULL, cod_idioma_aprender INT NOT NULL, numero_max_participantes INT NOT NULL, info_interes CHAR(255), PRIMARY KEY (id_evento) ); Tabla evento_skype_persona: Tabla donde se registran todos los eventos tipo Skype y las personas relacionadas con el evento

CREATE TABLE evento_skype_persona ( id_persona INT NOT NULL, id_evento INT NOT NULL,

LearnMyLanguage

Página 24

LearnMyLanguage ind_organizador CHAR(1) NOT NULL, ind_confirmado CHAR(1), PRIMARY KEY (id_persona, id_evento) ); Tabla evento_presencial_persona: Tabla donde se registran todos los eventos tipo presencial y las personas relacionadas con el evento

CREATE TABLE evento_presencial_persona ( id_persona INT NOT NULL, id_evento INT NOT NULL, ind_organizador CHAR(1) NOT NULL, ind_confirmado CHAR(1), PRIMARY KEY (id_persona, id_evento) );

LearnMyLanguage

Página 25

LearnMyLanguage

7 Diseño 7.1 Diagrama de clases principal Se muestra a continuación el diagrama de clases principal, con las clases más significativas de la aplicación.

7.2 Diagramas de secuencia LearnMyLanguage

Página 26

LearnMyLanguage 7.2.1 Alta usuario A continuación se muestra el diagrama de secuencia del alta de un usuario en la aplicación.

LearnMyLanguage

Página 27

LearnMyLanguage

7.2.2 Autentificación en el sistema A continuación se muestra el diagrama de secuencia de la autenticación de un usuario en la aplicación.

LearnMyLanguage

Página 28

LearnMyLanguage 7.2.3 Crear evento A continuación se muestra el diagrama de secuencia de la creación de un evento en la aplicación.

7.2.4 Consultar evento A continuación se muestra el diagrama de secuencia de la consulta de un evento en la aplicación.

LearnMyLanguage

Página 29

LearnMyLanguage

7.2.5 Unirse a un evento A continuación se muestra el diagrama de secuencia de la unión de una persona a un evento en la aplicación.

LearnMyLanguage

Página 30

LearnMyLanguage 7.2.6 Confirmar Evento A continuación se muestra el diagrama de secuencia de la unión de una persona a un evento en la aplicación.

LearnMyLanguage

Página 31

LearnMyLanguage 7.2.7 Solicitar Amistad A continuación se muestra el diagrama de secuencia de como un usuario solicita amistad a otro usuario.

LearnMyLanguage

Página 32

LearnMyLanguage

7.2.8 Confirmar Amistad A continuación se muestra el diagrama de secuencia de como un usuario confirma amistad a otro usuario.

LearnMyLanguage

Página 33

LearnMyLanguage

7.3 Prototipos de pantalla 7.3.1 Pantalla de inicio Se muestra a continuación la pantalla de inicio en la aplicación, se podrán ver dos listas: una de eventos tipo Skype y otra de eventos presenciales, estas listas, se podrán filtrar bajo unos parámetros de búsqueda, en la parte superior de la pantalla el usuario se podrá autentificar en el sistema.

LearnMyLanguage

Página 34

LearnMyLanguage

7.3.2

Registro en el sistema

Se muestra a continuación la pantalla de registro de un usuario en el sistema

LearnMyLanguage

Página 35

LearnMyLanguage 7.3.3 Alta evento tipo skype Se muestra a continuación la pantalla mediante la cual un usuario podrá crear un evento de tipo Skype en la aplicación.

LearnMyLanguage

Página 36

LearnMyLanguage

7.3.4 Alta evento presencial Se muestra a continuación la pantalla mediante la cual un usuario podrá crear un evento de tipo presencial en la aplicación.

LearnMyLanguage

Página 37

LearnMyLanguage 7.3.5 Consulta y unirse evento tipo Skype Pantalla de consulta de un evento de tipo Skype, podremos unirnos al evento mediante el botón Unirse.

LearnMyLanguage

Página 38

LearnMyLanguage

7.3.6 Consulta y unirse evento presencial Pantalla de consulta de un evento de tipo presencial, podremos unirnos al evento mediante el botón Unirse.

LearnMyLanguage

Página 39

LearnMyLanguage 7.3.7 Confirmar evento tipo Skype Pantalla de confirmación de un usuario en un evento de tipo Skype, en la lista inferior podremos ver todas las peticiones de unión al evento y podremos confirmar o denegar la solicitud.

LearnMyLanguage

Página 40

LearnMyLanguage

7.3.8 Confirmar evento presencial Pantalla de confirmación de un usuario en un evento de tipo presencial. En la lista inferior podremos ver todas las peticiones de unión al evento y podremos confirmar o denegar la solicitud.

LearnMyLanguage

Página 41

LearnMyLanguage 7.3.9 Solicitar amistad Veremos una lista de usuarios filtrada por unos parámetros de búsqueda, podremos solicitar amistad al usuario que queramos.

LearnMyLanguage

Página 42

LearnMyLanguage

7.3.10 Confirmar Amistad En esta pantalla, podremos consultar los datos de los usuario que son nuestros amigos en el sistema, en la parte inferior veremos todas las solicitudes de amistad, estas solicitudes podremos confirmarlas o rechazarlas.

LearnMyLanguage

Página 43

LearnMyLanguage

8 Implementación 8.1 Tecnologías 8.1.1 Modelo vista controlador MVC es un patrón de arquitectura de software que separa los datos y la lógica de negocio de una aplicación de la interfaz de usuario y el módulo encargado de gestionar los eventos y las comunicaciones. Para ello MVC propone la construcción de tres componentes distintos que son el modelo, la vista y el controlador, es decir, por un lado define componentes para la representación de la información, y por otro lado para la interacción del usuario. Este patrón de arquitectura de software se basa en las ideas de reutilización de código y la separación de conceptos, características que buscan facilitar la tarea de desarrollo de aplicaciones y su posterior mantenimiento. 8.1.2 Base de datos: MySql: Para la base de datos hemos utilizado MySql, si bien se podría utilizar cualquier otra realizando alguna adaptación mínima en la definición de las tablas.

8.1.3 Servidor de aplicaciones Tomcat: Tomcat es un servidor web con soporte de servlets y JSPs.

8.1.4 Entorno de desarrollo Eclipse Luna: Como entorno de desarrollo se ha optado por Eclipse

LearnMyLanguage

Página 44

LearnMyLanguage 8.1.5 Framework MVC Struts 2: Struts 2 es un framework para el desarrollo de aplicaciones Web bajo el patrón MVC en la plataforma Java EE

8.1.6 Componentes de la aplicación - Framework IoC Spring 3: Para la configuración de los componentes de aplicación y la administración del ciclo de vida de los objetos Java, se lleva a cabo principalmente a través de la inyección de dependencias mediante Spring 3.

8.1.7 Mapeo Objeto - Relacional Hibernate: Herramienta de Mapeo objeto-relacional (ORM) para la plataforma Java que facilita el mapeo de atributos entre una base de datos relacional y el modelo de objetos de una aplicación, mediante archivos declarativos (XML) o anotaciones en los beans de las entidades que permiten establecer estas relaciones.

8.1.8

CCS presentación:

PureCss y normalize.css: Se ha optado por utilizar PureCss, esta hoja de estilo está basada en normalize.css. Se utiliza esta hoja de estilo tanto para los menús, como el de pantallas de la aplicación. PureCss es un estilo simple creado por yahoo. Más información en http://purecss.io/

LearnMyLanguage

Página 45

LearnMyLanguage Jquery: Se ha utilizado Jquery en la capa de presentación en casos puntuales (selección de fechas y filtros en las tablas de la aplicación).

8.2 Componentes de la aplicación: La aplicación está organizada en diferentes packages.

Cada package tiene:

Clase action: Clase a la que se llamará desde el navegador, todas las peticiones pasan por el fichero struts.xml que hace de frontcontroller y decide a que método y que clase action se llama por cada petición del navegador. Está clase preparará también la vista. Ficheros *validation.xml: En estos ficheros están definidas las validaciones de formularios que se tienen que hacer en cada llamada a un action. Por ejemplo personaAction-addPersona indica las validaciones que se deben realizar al llamar al metodo addPersona de la clase Persona Action. LearnMyLanguage

Página 46

LearnMyLanguage Fichero entity : Clases entidad, corresponden con tablas de la base de datos Ficheros Bo: Interface de los Bussiness Objects. Ficheros BoImpl: Bussiness Objects, contienen la lógica de negocio. Ficheros Dao: Interface de las clases de acceso a base de datos. Ficheros DaoImp: Clases de acceso a base de datos. Clases JSP: están en src\main\webapp\WEB-INF\content\user

La relación de los Objetos Entity con las tablas de la base de datos, se realiza en los ficheros hbm en src\main\resources\resources\hibernate

La inyección de dependencias se realiza en los ficheros Bean.xml LearnMyLanguage

Página 47

LearnMyLanguage

Veremos un ejemplo en la pantalla de autentificación.

8.3 Pantalla de inicio: URL de inicio: http://localhost:8080/learnMylanguage/inicio.action

Pantalla de autenticación, que también nos servirá para darnos de alta en el caso que no estemos dados de alta. En script de inicialización de la base de datos hay un usuario que se puede utilizar: Correo: [email protected] Pass: pexx52xx Desde esta pantalla podemos realizar 2 acciones:

LearnMyLanguage

Página 48

LearnMyLanguage Iniciar sesión: En este caso llamamos a la acción/método ‘autentificacion’ de la clase ‘PersonaAction’. Tal y como se indica en el fichero struts.xml WEB-INF/content/user/inicio.jsp WEB-INF/content/user/inicio.jsp miPerfil.action Aquí estamos indicando que si el resultado de la autentificación es correcto .. Llamaremos a la acción ‘miPerfil.action’ y si hay un error, o un error en la validación del formulario ‘input’ iremos a la jsp de inicio informando el error. Todas las validaciones de la aplicación las haremos mediante ficheros xml, tal y como se especifica en struts2. En este caso el fichero que contiene la validación es: PersonaAction-autentificacion-validation.xml donde ‘autentificacion’ es el nombre del método al que llamamos y PersonaAction es la clase. El método llamará a la lógica de negoció para realizar la validación del usuario, el objeto de la lógica al que llamaremos ya ha sido inicializado por spring, esta inicialización se realiza en los ficheros que están \src\main\resources\resources\spring\ en este caso se realiza en el fichero ‘PersonaBean.xm’ -> Aquí definiremos los objetos que le pasaremos al Action. En este caso el objeto encargado de la lógica de negocio es PersonaBO, este llama al dao que realizará la consulta en la base de datos. Esta consulta se realizará con Hibernate basándose se en los ficheros ‘hbm’ que están situados en ‘src\main\resources\resources\hibernate’ en estos ficheros es donde se realizan los mapeos Objeto-Relacional.

Registrarnos: En el caso que no estemos dados de alta en el sistema podremos registrarnos, la secuencia de pasos en todas las opciones de la aplicación es misma. El struts xml indica la clase y método al que vamos, este llama la métodos BO (Bussines Objets) que se definen en los ficheros xml de spring y cuando necesitan acceder a datos, llaman a los métodos Dao. A la hora de registrarnos, comprobamos que todos los datos que pedimos hayan sido introducidos, y que no existe un usuario registrado con el mismo correo electrónico.

Una vez autentificados o una vez nos hemos registrado, podremos acceder a la aplicación, allí tendremos disponible un conjunto de opciones definidas en el menú de la izquierda. LearnMyLanguage

Página 49

LearnMyLanguage

-

Clase action: PersonaAction Métodos principales llamados: autentificacion

8.4 Pantalla Mi Perfil: Aquí podremos completar los datos que pedimos a la hora de registrarnos.

LearnMyLanguage

Página 50

LearnMyLanguage

A la hora de grabar, Validamos simplemente que estén introducidos los datos obligatorios a la hora de registrarse. Se ha utilizado en toda la aplicación el layout ‘side menu’ definido en pure.css. http://purecss.io/layouts/

LearnMyLanguage

Página 51

LearnMyLanguage -

Clase Action: PerfilAction Métodos principales: miPerfil(), grabarPerfil()

8.5 Pantalla Cambiar contraseña Permitirá al usuario cambiar de contraseña

En este formulario validaremos que la contraseña no está en blanco y que las dos contraseñas coinciden. -

Clase Action: PerfilAction Métodos principales: cambiarContrasena(), grabarContrasena()

8.6 Pantalla Mi foto Esta pantalla nos permitirá subir o cambiar nuestra foto de perfil.

LearnMyLanguage

Página 52

LearnMyLanguage

-

Clase Action: PerfilAction Métodos principales: cambiarFoto(), CargaArchivoFoto(),grabarFoto() // la foto se graba en base de datos.

8.7 Pantalla mis amigos. Esta pantalla nos permitirá ‘de momento’ consultar todos los datos de las personas a las que hayamos solicitado una amistad y ellos hayan confirmado esa amistad, o bien las personas que nos hayan solicitado ser nuestros amigos. En el caso que no hayamos confirmado aún esa amistad, desde aquí tendremos la oportunidad de confirmarla.

LearnMyLanguage

Página 53

LearnMyLanguage Las cabeceras de las tablas nos permiten filtrar la información contenida en la tabla, bien mediante inputs o bien mediante combos. Se han elegido combos para lista de valores que pueden ser más pequeños (menos cantidad de diferentes valores). -

Clase Action: personaAction, Métodos principales: solicitarAmistad(), misamigos(), confirmarAmigo()

8.8 Pantalla eventos Skype. Esta pantalla permitirá consultar los eventos Skype que tengan lugar en los próximos 2 meses. La tabla puede filtrarse desde la cabecera de las columnas. Para hacer ordenable la tabla se ha hecho mediante Jquery con utilidades proporcionadas por http://tablefilter.free.fr/

Si pulsamos sobre creación de un evento

Si pulsamos sobre

-

podremos acceder a la pantalla de

podremos acceder al detalle del evento.

Clase Action: personaAction, Métodos principales: solicitarAmistad(), misamigos(), confirmarAmigo()

8.9 Pantalla crear evento Skype. LearnMyLanguage

Página 54

LearnMyLanguage Nos permite dar de alta eventos, para ello, entre otros campos se pide la fecha y hora (con una utilidad de calendario en Jquery), una vez creemos un eventos la aplicación volverá automáticamente a la pantalla de lista de eventos, con nuestro evento introducido. A la hora de introducir el evento validamos que todos los campos que se solicitan son introducidos por el usuario y con un formato correcto.

8.10 Pantalla consultar evento Desde la pantalla de inicio del Menú Eventos Skype, podremos consultar un determinado evento, la pantalla de consulta de eventos es la siguiente:

LearnMyLanguage

Página 55

LearnMyLanguage Desde esta pantalla podremos: -

-

Unirnos al evento siempre y cuando haya plazas libres (y no seamos el creador del evento), mediante el botón de únete al evento. Una vez unidos podremos desunirnos mediante el botón ‘Darse de baja’

Podremos consultar las personas que se han unido al evento y si han sido confirmadas

En el caso que seamos el creador del evento podremos o bien eliminar el evento o bien confirmar las personas que se han inscrito al evento, esto descontará una plaza del evento.

LearnMyLanguage

Página 56

LearnMyLanguage Una vez confirmada una persona en un evento, aparecerá marcada como ‘confirmada’

Los nombres de las personas, son links que nos abrirán la ficha de la persona, y nos permitirán solicitar amistad en el caso que no seamos amigos de esa persona, o no tengamos ninguna petición realizada.

-

Clase Action: eventoSkypeAction Metodos principales: execute() crearEventoSkype(),grabarEventoSkype(), eliminarEventoSkype(), unirseEventoSkype(), desunirseEventoSkype(), confirmarEventoSkype(), consultarEventoSkype()

8.11 Pantalla eventos presenciales. Los eventos presenciales tanto en presentación como en funcionalidad son igual que los eventos tipo Skype, la diferencia es que en los eventos presenciales se pide: El país, ciudad y lugar del evento. Pantalla de consulta de eventos presenciales:

LearnMyLanguage

Página 57

LearnMyLanguage

Y la pantalla de creación:

-

Clase Action: eventoPresencialAction Metodos principales: execute() crearEventoPresencial(),grabarEventoPresencial(), eliminarEventoPresencial(), unirseEventoPresencial(), desunirseEventoPresencial(), confirmarEventoPresencial(), consultarEventoPresencial().

9 Contenido de la entrega de sw configuración y puesta en marcha 9.1 Contenido Se entregan los siguientes ficheros: 

learnMylanguage.war -> War de la aplicación que puede ser deployado en un servidor de aplicaciones.

LearnMyLanguage

Página 58

LearnMyLanguage 

learnMyLanguageProyecto.zip -> Código fuente del proyecto, se puede importar a eclipse como proyecto maven. o File -> import -> Maven -> Existing maven projects Si se quiere compilar el Proyecto se debe hacer con la herramienta maven, el pom del Proyecto está incluido en el zip



base_de_datos.sql-> Fichero con las querys de creación de tablas e inserts por defecto en la base de datos (MySql)

9.2 Instalación 9.2.1 Despliegue de la aplicación La aplicación ha sido probada con tomcat 8, para la instalación hay que dejar el fichero war en el directorio de tomcat \webapps\ al arrancar tomcat, se instalará automáticamente la aplicación, sino mediante la consola de administración de tomcat: En el apartado de desplegar -> Archivo WAR a desplegar -> Seleccionar Archivo. 9.2.2 Base de datos Hay que crear una base de datos mySql y sobre la base de datos lanzar el script ‘base_de_datos.sql’ esto creará las tablas y hará los inserts por defecto

9.3 Configuración Se debe configurar el acceso a la base de datos, para ello, una vez instalada la aplicación en el directorio de instalación de tomcat ‘\webapps\learnMylanguage\WEBINF\classes\resources\database’ se debe configurar el contenido del fichero ‘database.properties’. Se deben configurar los siguientes parámetros:

jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/learnmylanguage jdbc.username=root jdbc.password=pepe5259

Donde learnmylanguage es el nombre de la base de datos creada ‘127.0.0.1’ es la máquina donde está instalada la base de datos y 3306 el puerto. Se deberá configurar también la ubicación del fichero de log en la variable: ‘log4j.appender.file.File = C:/ LearMyLanguage.log’ (por ejemplo) del fichero

LearnMyLanguage

Página 59

LearnMyLanguage log4j.properties ubicado en el directorio de instalación de la aplicación ‘C:\tomcat\webapps\learnMylanguage\WEB-INF\classes\resources\logs’

9.4 Url de inicio La URL de inicio es: http://localhost:8080/learnMylanguage/inicio.action donde localhost es la máquina en la que tenemos instalada la aplicación y 8080 el puerto.

10 Evaluacion de costes El número total de horas por fase, como puede comprobarse en la planificación del proyecto es el siguiente: -

Propuesta y estudio(Perfil JP): 7 Días Análisis(Perfil AN): 9 Días Diseño(Perfil DT): 17 Días Implementación(Perfil PR): 28 Días Memoria y presentación(Perfil JP): 14 Días

Asumimos una dedicación diaria de 3,5 horas de media. Asimismo también asumimos las siguientes tarifas (euro/hora) por perfil: -

Jefe de proyectos (JP): 80 Euros/hora Analista (AN): 60 Euros/hora Diseñador técnico (DT): 50 Euros/hora Programador (PR): 40 Euros/hora

El coste total del proyecto sería el siguiente: REAL: Perfil JP AN DT PR

Días 21 9 17 28

Horas 73,5 31,5 59,5 98

Tarifa 80 60 50 40

Total perfil 5880 1890 2975 3920

TOTAL 14665 eur La evaluación inicial de costes fue algo inferior sobre todo en horas de Jefe de proyectos, se muestra a continuación: LearnMyLanguage

Página 60

LearnMyLanguage PREVISIÓN INICIAL Perfil

Días

Horas

Tarifa

JP

10

35

80

2800

AN

10

35

60

2100

DT

20

70

50

3500

PR

35

122,5

40 TOTAL

Total perfil

4900 13300 eur

11 Trabajo futuro Una vez presentado el proyecto, queda aún trabajo por realizar, entre el que se puede destacar el siguiente:  



  

  

Multiidioma: Actualmente la aplicación sólo está en castellano, se debería hacer en multidioma e ir incorporando idiomas. Gestión de la zona horaria: Actualmente se pueden publicar eventos y se indica la fecha y hora del evento, no todos los eventos se realizan entre personas de la misma zona horaria, por lo que la aplicación debería mostrar la fecha y hora en función de la zona horaria de la persona. Posibilidad de chats entre contactos: Las personas que son amigas en la aplicación, deberían poder tener un servicio de chat, para quedar, aprender idiomas chateando … Foro apuntes: Se podría crear un foro con apuntes y recursos para aprender idiomas. Implementar el envío de mails: Falta por implementar el envió de mails al unirse a un evento, confirmar un evento … Posibilidad de definir perfil indicando que se desean aprender o enseñar varios idiomas: Actualmente en el perfil de la persona, sólo se permite indicar que quiere enseñar un idioma y que quiere aprender un idioma, una misma persona podría querer aprender o enseñar más de un idioma. Aplicación para Android: Aplicación para Android con la misma funcionalidad Aplicación para IOS: Aplicación para IOS con la misma funcionalidad Pruebas de rendimiento: Pruebas de rendimiento para ver cuál es la carga de usuarios que puede soportar la aplicación.

12 Conclusiones La realización de este TFG me ha permitido conocer tecnologías y frameworks que hasta ahora desconocía, y que son utilizados actualmente en los desarrollos que se llevan a cabo en un gran número de empresas. A destacar el framework de trabajo MVC Struts 2, este framework que no conocía, me permitido hacer de una manera sencilla y rápida una aplicación JEE robusta. LearnMyLanguage

Página 61

LearnMyLanguage También otro Framework interesante que he aprendido, ha sido Spring IoC, me ha servido para configuración de los componentes de aplicación y la administración del ciclo de vida de los objetos Java mediante la inyección de dependencias. Otro framework interesante ha sido Hibernate, que me ha servido para realizar el Mapeo de Objetos Java con la Base de datos, facilitándome también gestionar todo el acceso a base de datos. Destaco aquí, el reto que supuso para mí, montar el entorno de trabajo con eclipse e integrando las 3 tecnologías citadas anteriormente, para lo cual tuve que leer decenas de documentos encontrados por internet.

13 Bibliografía Libros:    

Bauer Christian and Gavin King (2004). Hibernate in Action. Manning David Gallardo, Ed Burnette and Robert McGovern (2003). Eclipse in Action. Manning Donald Brown, Chad Michael Davis, and Scott Stanlick (2008). Struts 2 in Action. Manning Craig Walls (2011). Spring In Action. Manning

Cursos On-line: 

Curso de miriada X: Desarrollo en HTML5, CSS y Javascript de WebApps. Universidad Politécnica de Madrid.

Artículos electrónicos: De entre todos los manuales y artículos electrónicos consultados, destaco los siguientes:      

http://jmuras.com/blog/2010/spring-hibernate-maven-struts2-integrationtutorial/ -> Montar entorno de trabajo con spring + struts + hibernate + Maven http://www.javatutoriales.com/2011/06/struts-2-parte-1-configuracion.html -> Manual de programación struts 2 http://tablefilter.free.fr -> Filtros de las tablas en Ajax http://www.mkyong.com/hibernate/hibernate-save-image-into-database/ -> Salvar imágenes en base de datos http://www.journaldev.com/2210/struts-2-interceptor-tutorial-with-customauthentication-interceptor-example# -> Autentificación con struts http://www.javahispano.org/storage/contenidos/ManualHibernate.pdf -> Manual de hibernate

LearnMyLanguage

Página 62

LearnMyLanguage

Webs consultadas: Se han consultado un gran número de webs, entre las que cabe destacar:        

http://stackoverflow.com/ http://purecss.io/ https://struts.apache.org/ http://jquery.com/ http://hibernate.org/ https://spring.io/ http://www.mysql.com/ https://eclipse.org/

LearnMyLanguage

Página 63

Get in touch

Social

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