63
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

TRABAJO FINAL DE GRADO - openaccess.uoc.eduopenaccess.uoc.edu/webapps/o2/bitstream/10609/... · 8.1.1 Modelo vista controlador ... El trabajo ha sido realizo por José Luis Mata Maturano

Embed Size (px)

Citation preview

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

LearnMyLanguage Página 2

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 Requisitos no funcionales ............................................................................. 12

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 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

7 Diseño ................................................................................................................. 26

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

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

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

LearnMyLanguage

LearnMyLanguage Página 3

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 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

8 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

LearnMyLanguage Página 4

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

LearnMyLanguage Página 5

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

LearnMyLanguage Página 6

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

LearnMyLanguage Página 7

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 Detalle de requisitos, arquitectura y planificación del proyecto.

07/11/14 PAC2 Análisis y diseño del proyecto.

16/12/14 PAC3 Implementación del proyecto.

14/01/15 PAC4 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

LearnMyLanguage Página 8

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

LearnMyLanguage Página 9

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

LearnMyLanguage Página 10

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

LearnMyLanguage Página 11

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

LearnMyLanguage Página 12

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

LearnMyLanguage Página 13

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

LearnMyLanguage Página 14

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

LearnMyLanguage Página 15

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

Usuario queda autentificado en el sistema y con una sesión abierta.

ESCENARIO PRINCIPAL DE ÉXITO

1- El usuario indica su usuario (correo electrónico)

2- El usuario indica su password

3- El usuario queda autenticado en el sistema

ESCENARIOS ALTERNATIVOS

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 RFUN03

NOMBRE CASO DE Crear evento de tipo Skype

LearnMyLanguage

LearnMyLanguage Página 16

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

LearnMyLanguage Página 17

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

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.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

Al usuario queda unido al evento.

ESCENARIO PRINCIPAL DE ÉXITO

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

LearnMyLanguage

LearnMyLanguage Página 18

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.

ESCENARIOS ALTERNATIVOS

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.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

Al usuario queda unido al evento.

ESCENARIO PRINCIPAL DE ÉXITO

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.

ESCENARIOS ALTERNATIVOS

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 RFUN09

LearnMyLanguage

LearnMyLanguage Página 19

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

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.11 Solicitar amistad a un usuario

FICHA DE CASO DE USO

ID RFUN11

NOMBRE CASO DE Solicitar amistad a un usuario

LearnMyLanguage

LearnMyLanguage Página 20

USO

ACTOR PRINCIPAL Usuario

PRECONDICIONES Usuario autentificado

GARANTIAS DE ÉXITO

Al usuario le llega un mensaje indicado que otro usuario desea ser su amigo.

ESCENARIO PRINCIPAL DE ÉXITO

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

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.

ESCENARIO PRINCIPAL DE ÉXITO

1- El usuario ‘B’ confirma al usuario ‘A’

2- Al usuario ‘A’ le llega un mail de confirmación de amistad.

ESCENARIOS ALTERNATIVOS

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

LearnMyLanguage Página 21

class Modelo entidad - relacion

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ciudadpersona Pais

Idiomaevento skype

evento presencial

1..*

Es Amigo

1..*

1

Organiza

1..*

1..*

esta

apuntada

1..*

1..*

Para

enseñar1..

1

organiza

1..*

1..*

Se

realiza

1

1..* Para

aprender

1

1..*vive 1

1..*

Quiere

enseñar

1..*Para

enseñar

1Pertenece

1..*

1..*

Quiere

aprender

1..*

1..*

esta

apuntada

1..*

Para

aprender

LearnMyLanguage

LearnMyLanguage Página 22

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

LearnMyLanguage Página 23

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

LearnMyLanguage Página 24

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

LearnMyLanguage Página 25

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

LearnMyLanguage Página 26

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

LearnMyLanguage Página 27

7.2.1 Alta usuario

A continuación se muestra el diagrama de secuencia del alta de un usuario en la

aplicación.

LearnMyLanguage

LearnMyLanguage Página 28

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

LearnMyLanguage Página 29

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

LearnMyLanguage Página 30

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

LearnMyLanguage Página 31

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

LearnMyLanguage Página 32

7.2.7 Solicitar Amistad

A continuación se muestra el diagrama de secuencia de como un usuario solicita

amistad a otro usuario.

LearnMyLanguage

LearnMyLanguage Página 33

7.2.8 Confirmar Amistad

A continuación se muestra el diagrama de secuencia de como un usuario confirma

amistad a otro usuario.

LearnMyLanguage

LearnMyLanguage Página 34

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

LearnMyLanguage Página 35

7.3.2 Registro en el sistema

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

LearnMyLanguage

LearnMyLanguage Página 36

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

LearnMyLanguage Página 37

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

LearnMyLanguage Página 38

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

LearnMyLanguage Página 39

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

LearnMyLanguage Página 40

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

LearnMyLanguage Página 41

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

LearnMyLanguage Página 42

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

LearnMyLanguage Página 43

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

LearnMyLanguage Página 44

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

LearnMyLanguage Página 45

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

LearnMyLanguage Página 46

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

LearnMyLanguage Página 47

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

LearnMyLanguage Página 48

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

LearnMyLanguage Página 49

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

<action name="autentificacion" method="autentificacion" class="personaAction">

<result name="error">WEB-INF/content/user/inicio.jsp</result>

<result name="input">WEB-INF/content/user/inicio.jsp</result>

<result name="success" type="redirect">miPerfil.action</result>

</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

LearnMyLanguage Página 50

- 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

LearnMyLanguage Página 51

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

LearnMyLanguage Página 52

- 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

LearnMyLanguage Página 53

- 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

LearnMyLanguage Página 54

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 podremos acceder a la pantalla de

creación de un evento

Si pulsamos sobre podremos acceder al detalle del evento.

- Clase Action: personaAction,

- Métodos principales: solicitarAmistad(), misamigos(), confirmarAmigo()

8.9 Pantalla crear evento Skype.

LearnMyLanguage

LearnMyLanguage Página 55

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

LearnMyLanguage Página 56

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

LearnMyLanguage Página 57

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

LearnMyLanguage Página 58

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

LearnMyLanguage Página 59

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\WEB-

INF\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

LearnMyLanguage Página 60

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 Días Horas Tarifa Total perfil

JP 21 73,5 80 5880

AN 9 31,5 60 1890

DT 17 59,5 50 2975

PR 28 98 40 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

LearnMyLanguage Página 61

PREVISIÓN INICIAL

Perfil Días Horas Tarifa Total perfil

JP 10 35 80 2800

AN 10 35 60 2100

DT 20 70 50 3500

PR 35 122,5 40 4900

TOTAL 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

LearnMyLanguage Página 62

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-integration-

tutorial/ -> 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-custom-

authentication-interceptor-example# -> Autentificación con struts

http://www.javahispano.org/storage/contenidos/ManualHibernate.pdf -> Manual

de hibernate

LearnMyLanguage

LearnMyLanguage Página 63

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/