View
218
Download
0
Category
Preview:
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: pepe.mata@gmail.com
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/
Recommended