61
Javier Ruiz Sáenz de Pipaón Juan José Olarte Larrea Facultad de Ciencia y Tecnología Grado en Ingeniería Informática 2015-2016 Título Director/es Facultad Titulación Departamento TRABAJO FIN DE GRADO Curso Académico Desarrollo de una aplicación web de recomendaciones siguiendo el patrón MVC Autor/es

TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

Javier Ruiz Sáenz de Pipaón

Juan José Olarte Larrea

Facultad de Ciencia y Tecnología

Grado en Ingeniería Informática

2015-2016

Título

Director/es

Facultad

Titulación

Departamento

TRABAJO FIN DE GRADO

Curso Académico

Desarrollo de una aplicación web de recomendacionessiguiendo el patrón MVC

Autor/es

Page 2: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

© El autor© Universidad de La Rioja, Servicio de Publicaciones, 2016

publicaciones.unirioja.esE-mail: [email protected]

Desarrollo de una aplicación web de recomendaciones siguiendo el patrónMVC, trabajo fin de grado

de Javier Ruiz Sáenz de Pipaón, dirigido por Juan José Olarte Larrea (publicado por la Universidad de La Rioja), se difunde bajo una Licencia

Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported. Permisos que vayan más allá de lo cubierto por esta licencia pueden solicitarse a los

titulares del copyright.

Page 3: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

Facultad de Ciencia y Tecnología

TRABAJO FIN DE GRADO

Grado en Ingeniería Informática

Desarrollo de una aplicación web de recomendaciones

siguiendo el patrón MVC

Alumno:

Javier Ruiz Sáenz de Pipaón

Tutores:

Juan José Olarte Larrea

Logroño, junio, 2016

Page 4: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

1

Resumen

A día de hoy existen diversos sitios web o aplicaciones, en las que puedes solicitar un trabajo.

FORMAVOLUCION quiere formar una red donde las grandes y medianas empresas estén

comunicadas con los usuarios y de esta forma poder recomendar a la persona más adecuada

para cada puesto de trabajo. Esta selección se realiza a través de determinados test que han

desarrollado para tal efecto.

Además, mediante esta aplicación, no sólo pueden dirigir sus equipos de trabajo sino que

también les permite la confección de los mismos de una forma sencilla, ya que la aplicación

recomienda a la persona más adecuada para desarrollar cada función dentro del equipo

teniendo en cuenta sus características, tanto humanas como profesionales.

Abstract

Now a days there are several websites, which you can ask for a job.

FORMAVOLUCION wants to make a network, where the big and medium sized enterprises are

connected with users, in order to recommend a position intelligently, doing the test that they

have for it.

In addition to the management of the company´s teams, which using this application they can

control the make of theirs multidisciplinary teams in an easy way, because the application

recommend the best person for the position, considering his field and human skills.

Page 5: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

2

Índice Objetivo del TFG ................................................................................................................................... 4

Contexto ............................................................................................................................................... 4

Desarrollo ............................................................................................................................................. 5

Alcance ................................................................................................................................................. 6

Planifiación ........................................................................................................................................... 7

Gestión del proyecto .......................................................................................................................... 11

Seguimiento ................................................................................................................................... 11

Análisis ............................................................................................................................................... 16

Identificación de roles .................................................................................................................... 16

Modelo de casos de uso ................................................................................................................. 20

Requisitos: .......................................................................................................................................... 23

Requisitos funcionales ................................................................................................................... 23

Requisitos no funcionales .............................................................................................................. 23

Diseño ................................................................................................................................................ 25

Base de datos ................................................................................................................................. 25

Páginas ........................................................................................................................................... 28

Diagrama de navegación ............................................................................................................ 36

Diseño Arquitectónico ................................................................................................................... 37

Implementación ................................................................................................................................. 38

Clases usadas para el desarrollo .................................................................................................... 38

phpmailer ................................................................................................................................... 38

imageresize ................................................................................................................................ 38

Clases creadas para el desarrollo ................................................................................................... 39

Gestión de las operaciones ............................................................................................................ 39

Creación de un paginador .............................................................................................................. 40

Creación de la jerarquía de la organización ................................................................................... 42

Page 6: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

3

Recomendación de trabajadores ................................................................................................... 44

Rediseños ....................................................................................................................................... 45

Problemas encontrados ................................................................................................................. 46

Calidad ................................................................................................................................................ 47

Rendimiento ................................................................................................................................... 47

Pruebas........................................................................................................................................... 47

Conclusiones ...................................................................................................................................... 48

Agradecimientos ................................................................................................................................ 49

Bibliografía ......................................................................................................................................... 50

Page 7: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

4

Objetivo del TFG

El objetivo de este Trabajo de Fin de Grado (TFG), es añadir un módulo a la aplicación Ítaca que será

desarrollada por los alumnos de la Universidad de La Rioja.

La aplicación Ítaca tiene como misión encargarse de la evaluación de usuarios, recomendaciones de

cursos, gestión de organizaciones, y recomendación de usuarios para un puesto.

Dicho módulo sirve para la gestión de organizaciones y equipos, así como para la recomendación de

usuarios para puestos, para ello se lleva a cabo una evaluación de las habilidades cognitivas y de las

capacidades de aprendizaje de los usuarios, haciendo uso de evaluaciones por medio de test.

Contexto

La aplicación Ítaca puede tener utilidad tanto en el ámbito institucional, por medio de la

recomendación de usuarios para los puestos, como en la formación de empleados, ya que en esta

aplicación web (Ítaca) se recomiendan cursos acorde a las capacidades de cada uno.

El conocimiento de las capacidades de los usuarios puede servir, en caso de ser usado en el entorno

laboral, para la formación de equipos multidisciplinares o la recomendación de puestos de trabajo

determinados, dentro de una misma organización. Esta aplicación está dirigida a los departamentos

de recursos humanos.

Dentro de la empresa ya existía una aplicación con el nombre de Ítaca (vieja Ítaca) que no podía

ofrecer la funcionalidad que se presenta en este proyecto, ya que se realizó de forma poco

extensible y con archivos muy grandes a los que era casi imposible hacerles cualquier modificación.

Esto hace imposible ir evolucionando la aplicación en un futuro y añadirle la funcionalidad deseada

por parte de la empresa. Por estos motivos se decidió rediseñar dicha aplicación para hacerla

modular y extensible (nueva Ítaca), así como añadirle funcionalidad que antes era inexistente e

imposible realizar con la antigua Ítaca.

Por ello:

Durante el primer cuatrimestre de este curso (durante Las prácticas de empresa), 2015-

2016, mi compañero Daniel Espinosa y yo (Javier Ruiz), planificamos y diseñamos el portal

sobre el que ahora se integrarán las distintas funcionalidades de que consta esta aplicación.

Por otro lado, además de proyectar y elaborar una primera parte de la base de datos,

también partimos de cero en la elaboración de Ítaca; añadiendo, quitando o modificando las

Page 8: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

5

funciones básicas tales como la autenticación, y rediseñamos la zona de usuarios en sus

diferentes aspectos: envío de correo para la activación de la cuenta y cambios en el perfil.

Los alumnos de la Universidad de La Rioja que realizaremos nuestro TFG en la empresa nos

dedicaremos a añadir nuevas funcionalidades a la aplicación básica desarrollada (la que se

hizo durante las prácticas).

o Daniel Espinosa: Gestión, creación y eliminación de test y las habilidades de los

usuarios.

o Marina Blanco: Gestión de curos.

o Yo (Javier Ruiz): Gestión de organizaciones, equipos, permisos y recomendación de

trabajadores.

Es de suponer que este desarrollo previo marcará cómo va a realizarse el desarrollo de los TFG en

esta empresa.

Desarrollo

La aplicación básica (la realizada en las prácticas), se desarrolló en PHP, sin hacer uso de frameworks,

ya que la realización previa del inicio de este portal se hizo en PHP y como éste, es un lenguaje

válido para la realización de programación web se seguirá usando en el desarrollo del TFG. La

información de la que hacía uso este portal se almacenó en una base de datos (BDD) en MySQL que

se ha administrado haciendo uso de la herramienta web phpMyAdmin. Para el diseño de la

aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

elementos prediseñados con su respectivo HTML y CSS, esta plantilla es la que usa la empresa

normalmente para el desarrollo web, por lo que se nos sugirió utilizarla para el desarrollo de la

nueva Ítaca. Para la modificación del código de HTML y programación en PHP se usará el programa

Notepad++, que mediante el plugin NppFTP permite conectarse con el servidor donde están

alojados los ficheros de la aplicación y guardarlos allí de forma automática, al principio fuimos a usar

aptana pero el repositorio no estaba disponible, por lo que decidimos trabajar con Notepad para no

demorar el desarrollo. En nuestro caso el servidor se simula mediante una máquina virtual, con el

sistema operativo Debian, que está formado por apache, MariaDB y phpMyadmin.

Page 9: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

6

Alcance

Se pretende añadir a la aplicación toda la funcionalidad necesaria para la ayuda de selección de

usuarios para puestos de trabajo en función de sus capacidades. Estos resultados para la selección

estarán disponibles en una tabla.

La aplicación comparará las habilidades de los candidatos para un puesto de trabajo dentro de un

grupo de selección. Esta operación sólo la podrá hacer un administrador. Un usuario con permisos

de administrador podrá gestionar tanto la selección de candidatos como la creación de grupos de

trabajo nuevos. Los grupos o equipos de trabajo serán, en realidad, un conjunto de puestos. El

manejo de estos puestos permitirá la creación de equipos multidisciplinares o de equipos centrados

en un determinado perfil. Toda la información relativa a los puestos y grupos de trabajo, así como

de las solicitudes deberá ser almacenada.

La selección se llevará a cabo de la siguiente manera: en primer lugar, el administrador asignará

para cada puesto un maestro (persona o perfil mejor indicado para el puesto) que tendrá que

realizar un test para determinar sus características. En segundo lugar, el administrador creará un

grupo de selección, formados por los candidatos a dicho puesto. Estos realizarán la misma prueba

que el maestro. Posteriormente se compararán los resultados obtenidos con el maestro y se

recomendará al mejor para esa función. El administrador es libre de elegir al que él quiera, sin tener

en cuenta la recomendación de la aplicación. También se tendrá que tener en cuenta a las personas

que el administrador pueda elegir para el grupo de selección, limitando los niveles de acceso a la

aplicación, ya que se diferenciarán los casos en el que se quiera seleccionar a una persona

jerárquicamente superior a él, inferior o igual o menor y el caso en el que se quiera añadir a una

persona que no esté en la empresa.

Para que una persona pase a formar parte de un grupo de selección se le enviará una invitación, si

el usuario no contesta se le enviará u mensaje de recordatorio, si pasados un número concreto de

mensajes no contesta se tomarán las medidas pertinentes determinadas por la política de la

empresa.

Esto implicará la necesidad de implementar la creación, eliminación y modificación de un puesto.

Como el portal está pensado para que lo utilicen varias organizaciones, hay que hacer una correcta

separación de los recursos de las mismas, además para ello hay que hacer un exhaustivo análisis de

los roles que contendrá este módulo.

Page 10: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

7

Planifiación

Se utilizará una metodología Scrum (metodología ágil) para el desarrollo del trabajo, aunque no se

seguirá esta metodología de forma exhaustiva, ya que los roles como el Product Ower, Scrum master

y el equipo de desarrollo estarán formados por la misma persona.

Siguiendo esta metodología ágil se realizaran sprints de una duración estimada entre dos y tres

semanas.

Este proyecto se comienza durante el transcurso del segundo cuatrimestre (15-02-2016).

Para llevar a cabo la planificación, el proyecto se divide en tareas de un tamaño óptimo para realizar

un correcto seguimiento y control de las mismas.

En la figura 1 se muestran las tareas más significativas con una breve descripción de cada una de

ellas, así como el tiempo planificado que puede costar cada una de ellas, sumando en total 300

horas.

Page 11: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

8

Nombre de la tarea Descripción de la tarea Tiempo

estimado

(horas)

Planificación Planificar el grueso del proyecto 19 Análisis Lleva a cabo un análisis del módulo de la aplicación

de Ítaca 39

Identificar Identificar los roles y operaciones que hace cada rol 15

Diagramas Realización de diagramas para la explicación de las operaciones.

15

Pila del producto Crear por prioridades las necesidades de la fase de implementación.

5

Requisitos Definir los requisitos con el cliente 4

Diseño Diseño del módulo, además de la realización de diagramas para ver la interacción del módulo.

50

Diseño de interfaz Diseñar mediante plantillas de Bootstrap una interfaz intuitiva y útil, que cumpla toda la funcionalidad

35

Diagrama de navegación

Diseñar la navegación entre las ventanas de la aplicación 3

Diseño de pruebas Diseño de pruebas para comprobar que la aplicación no falle frente a datos críticos.

2

Diseño de base de datos

10

Implementación Realización del código para el desarrollo del módulo.

119

Separación del portal

Separar el portal para que cada organización tenga separada su zona.

3

Separación entre roles

Asegurarse de que cada rol solo puede hacer lo que el rol le permita, es decir, que no pueda hacer operaciones ilegitimas.

10

Base de datos Diseño e implementación de la base de datos para garantizar una correcta gestión de los roles, organizaciones y la elección inteligente del personal.

10

Recomendación de trabajadores

Creación de un grupo de selección dentro de un puesto, además de mandar la realización de tests a los diferentes participantes para su posterior evaluación.

30

Gestión de equipos Proporcionar una herramienta usable para la correcta gestión de los equipos de trabajo.

35

Gestión de puestos Proporcionar una herramienta usable para la correcta gestión de los puestos de trabajo.

28

Pruebas Realización de las pruebas diseñadas anteriormente. 3

Redacción de la memoria

Redacción de la memoria, que se llevará a cabo a lo largo del transcurso del trabajo.

58

Reuniones y seguimiento

Reuniones con el tutor del TFG y con los miembros de la empresa, además de realizar un seguimiento del proyecto

15

Total 300 Figura 1 - Planificación

Page 12: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

9

En la figura 2 se muestra el gráfico de Gantt que representa cómo se va a seguir la elaboración del proyecto a lo largo de este cuatrimestre.

Figura 2- Gantt

Page 13: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

10

Calendario

A continuación se muestra un calendario (figura 3) en el que están marcados los hitos más

importantes y los días festivos, según el horario y las horas dedicadas al proyecto, se prevé que se

realizarán las horas previstas.

Febrero Marzo Abril L M X J V S D L M X J V S D L M X J V S D

1 2 3 4 5 6 1 2 3

7 8 9 10 11 12 13 4 5 6 7 8 9 10

15 16 17 18 19 20 21 14 15 16 17 18 19 20 11 12 13 14 15 16 17

22 23 24 25 26 27 28 21 22 23 24 25 26 27 18 19 20 21 22 23 24

29 28 29 30 31 25 26 27 28 29 30

Mayo Junio L M X J V S D L M X J V S D

1 1 2 3 4 5

2 3 4 5 6 7 8 6 7 8 9 10 11 12

9 10 11 12 13 14 15 13 14 15 16 17 18 19

16 17 18 19 20 21 22 20 21 22 23 24 25 26

23 24 25 26 27 28 29 27 28 29 30

30 31 Figura 3- Calendario

Leyenda

Representa un hito (hecho importante en el proyecto)

Representa día festivo.

Los fines de semana están marcados en rojo Hitos

15-02-2016: Inicio de proyecto

25-02-2016: Fin de planificación

8-03-2016: Fin análisis

29-03-2016: Fin de diseño y creación de prototipos

21-04-2016: Primer prototipo funcional

5-05-2016: Segundo prototipo funcional

19-05-2016: Tercer prototipo funcional

2-06-2016: Fin de desarrollo

15-06-2016: Fin de pruebas

17-06-2016: Fin de TFG

22-06-2016: Depósito de TFG

Page 14: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

11

Gestión del proyecto

Seguimiento

A continuación se muestra el seguimiento individual, el cual contiene las tareas de forma más

desgranada, y las horas planificadas para cada tarea seguido de las horas reales empleadas.

Sprint de planificación (15/02/2016-29/02/2016)

Nombre Horas estimadas

Horas reales Desviación

Fecha inicio Fecha Fin

Planificación 13.5 13 -2 18/02/2016 25/02/2016 reuniones 4 4 0 15/02/2016 29/02/2016 Redacción de la memoria 5 5 0 15/02/2016 29/02/2016 Total 22.5 22

Sprint 1 (29/02/2016-13/02/2016)

Nombre Horas estimadas

Horas reales Desviación

Fecha inicio Fecha Fin

Requisitos 4 4 0 29/02/2016 29/02/2016 Análisis 35 29 -6 29/02/2016 03/03/2016

Pila del producto 5 6 1 01/03/2016 03/03/2016 Identificar 15 13 -2 29/02/2016 03/03/2016 Diagramas 15 10 -5 01/03/2016 02/03/2016

Redacción de la memoria 10 8 -2 29/02/2016 13/03/2016 Diseño 6 7 1 09/03/2016 12/03/2016

Diseño de interfaz 6 7 1 09/03/2016 13/03/2016 Total 55 48

Sprint 2 (14/03/2016-28/03/2016)

Nombre Horas estimadas

Horas reales Desviación

Fecha inicio Fecha Fin

Planificación 3 3 0 14/03/2016 14/03/2016 Diseño 42 46 4 14/03/2016 28/03/2016

Diseño de interfaz 29 35 6 14/03/2016 27/03/2016 Diseño Base de datos 10 10 0 14/03/2016 22/03/2016 Diagrama de navegación 3 1 -2 27/03/2016 18/03/2016

Reuniones 1 1 0 21/03/2016 21/03/2016 Redacción de la memoria 0 1 1 28/03/2016 28/03/2016 Total 46 51

Page 15: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

12

Sprint 3 (4/04/2016-21/04/2016)

Nombre Horas estimadas

Horas reales Desviación

Fecha inicio Fecha Fin

Planificación Sprint 1 1 0 04/04/2016 04/04/2016 Rellenar base de datos 4 5 1 05/04/2016 06/04/2016 Redacción de la memoria 5 6 04/04/2016 21/04/2016 Implementación 31 36 5 06/04/2016 21/04/2016

separación roles 10 10 0 06/04/2016 21/04/2016 Organizar panel de administración 4 4 0 13/04/2016 14/04/2016 Añadir Usuario a Organización 2 2 0 06/04/2016 07/04/2016 Crear Organización 3 2 -1 06/04/2016 07/04/2016 Crear y eliminar Equipo 3 7 4 09/04/2016 14/04/2016 ListarEquipos 3 5 2 15/04/2016 20/04/2016 Crear y eliminar puesto 3 2 -1 20/04/2016 21/04/2016 Crear la visualización de equipo

con sus puestos 3 4 1 21/04/2016 21/04/2016 Reuniones 2 2 0 21/04/2016 21/04/2016 Total 43 50

Sprint 4 (21/04/2016-06/05/2016)

Nombre Horas estimadas

Horas reales Desviación

Fecha inicio Fecha Fin

Planificación Sprint 0.5 0.5 0 21/04/2016 21/04/2016 Redacción de la memoria 8 10 2 21/04/2016 06/05/2016 Implementación 39 48 9 21/04/2016 06/05/2016

Mostrar puesto 3 5 2 21/04/2016 22/04/2016 Añadir y eliminar miembro a

equipo 6 8 2 25/04/2016 26/04/2016 Creación de un grupo de selección 6 5 -1 27/04/2016 27/04/2016 Añadir y eliminar miembro a

grupo de selección 7 8 1 28/04/2016 29/04/2016 Ver jerarquía 20 22 2 02/05/2016 06/05/2016

Reuniones 1 1 0 05/05/2016 05/05/2016 Total 48.5 59.5 11

Nombre Horas estimadas

Horas reales Desviación

Fecha inicio Fecha Fin

Planificación Sprint 0.5 0.5 0 09/05/2016 09/05/2016 Redacción de la memoria 10 10 0 09/05/2016 19/05/2016 Implementación 36 33 09/05/2016 19/05/2016

Añadir miembro especial a equipo y selección 6 6 0 09/05/2016 10/05/2016

Sistema de mensajes 20 20 0 11/05/2016 17/05/2016 envío de mensajes de invitación 3 2 -1 18/05/2016 18/05/2016 Aceptación del mensaje 3 2 -1 18/05/2016 18/05/2016 Rechazo del mensaje 1 1 0 18/05/2016 18/05/2016 Eliminación del mensaje 3 2 -1 19/05/2016 19/05/2016

Reuniones 1 1 0 19/05/2016 19/05/2016 Total 47.5 44.5

Page 16: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

13

Sprint 6 (23/05/2016-06/06/2016)

Nombre Horas estimadas

Horas reales Desviación

Fecha inicio Fecha Fin

Planificación Sprint 0.5 0.5 0 23/05/2016 23/05/2016 Redacción de la memoria 10 15 5 23/05/2016 06/06/2016 Implementación 9 8 23/05/2016 19/05/2016

Listar equipos a los que pertenece un usuario 3 1 -2 23/05/2016 23/05/2016

Listar puestos 2 2 0 23/05/2016 23/05/2016 Listar puestos a los que pertenece

un usuario 2 2 0 23/05/2016 23/05/2016 Recomendación de usuarios 2 3 1

Reuniones 2 1 -1 19/05/2016 19/05/2016 Total 21.5 24.5

Sprint 7 (6/06/2016-20/06/2016)

Nombre Horas estimadas

Horas reales Desviación

Fecha inicio Fecha Fin

Redacción de la memoria 10 10 0 06/06/2016 20/06/2016 Reuniones 4 4 06/06/2016 20/06/2016 Pruebas 2 2 06/06/2016 06/06/2016 Total 16 16

Figura 4- Seguimiento individual

Real Planificado

Planificación 18.5 19

Análisis 33 39

Diseño 55 50

reuniones y seguimiento 14 15

Redacción 65 58

Implementación 130 119

TOTAL 315.5 300 Figura 5- Tabla tiempo real vs planificado

Page 17: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

14

Figura 6- Tiempo real vs planificado

Figura 7- Tiempo real vs planificado

Como se observa en la figura 7 Durante el desarrollo del proyecto se han cumplido las fases y los

hitos adecuadamente.

Durante la realización del proyecto he tenido algunos problemas que en cierta forma han influido

en un aumento de horas de trabajo, estos problemas se describirán más adelante.

0

50

100

150

200

250

300

350

Planificación Análisis Diseño reuniones yseguimiento

Redacción Iplementacion TOTAL

Horas reales vs planificadas

Real Planificado

0

20

40

60

80

100

120

140

160

180

200

220

240

260

280

300

320

Sprint 0 Sprint 1 Sprint 2 Sprint 3 Sprint 4 Sprint 5 Sprint 6 Sprint 7

Horas planificadas y reales

PLANIFICADAS REALES

Page 18: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

15

En las figuras 8 y 9 se muestra a modo de ejemplo el progreso de realización del proyecto, gracias a

la herramienta proporcionada por la universidad. La figura 8 corresponde al 15 de mayo, mientras

que la figura 9 hace referencia al día 1 de Junio

Figura 8- progreso (15-05-2016)

Figura 9- progreso (01-06-2016)

Además de realizar un seguimiento individual (figura 4), se aprovechó la herramienta facilitada por

la Universidad de la Rioja para realizar un seguimiento comparativo con el resto de proyectos

(figura 6) que sirvió para comprobar que el desarrollo del proyecto se encontraba en todo

momento dentro de la media.

Page 19: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

16

Figura 10- progreso comparativo (15-05-2016)

Análisis

En este apartado se muestran los aspectos más importantes del análisis realizado para el desarrollo

del proyecto. A partir de este punto de la memoria, todo lo que se comenta se refiere al módulo

que estoy llevando a cabo en mi proyecto, enmarcado dentro de la aplicación Ítaca.

Identificación de roles

El número de roles identificados en la gestión de una organización es tan amplio, debido a que la

empresa quería hacer una distinción notoria en cuento a los permisos de añadir usuarios a grupos

o puestos. Por ello cada grupo de administración (excepto el administrador global de una

organización) se divide según las combinaciones de los permisos de añadir.

AdminFormavolucion

Administrador capaz de hacer cualquier operación y gestionar todo el portal web. A cargo de este

rol estará un empleado de Formavolucion, empresa dueña del portal.

Súper Admin

Será el administrador de una organización, encargado de la gestión de la aplicación en su empresa,

tendrá permisos para crear grupos, eliminarlos, añadir empleados y eliminarlos.

Puede cambiar roles a un nivel inferior del suyo, nunca igual o superior.

Admin

Administrador de un grupo o de varios, tiene la potestad de añadir y eliminar participantes de los

grupos, el administrador de un grupo no tiene por qué ser un participante del grupo.

Page 20: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

17

Existen diferentes niveles de este rol, los niveles de este rol se diferencian en los permisos que tiene

para poder añadir a los grupos de trabajo o de selección los tres tipos de personas mencionadas en

el punto dos del apartado de requisitos. Estos diferentes permisos vienen dados por un rol superior.

Admin A

Pueden añadir a los tres tipos de personas, es decir, a las personas que son jerárquicamente

superiores en la misma empresa, personas con su mismo o inferior nivel jerárquico y a las

personas que no forman parte de la empresa (ajenas a la empresa).

Admin B

Puede añadir personas que no formen parte de la empresa y a personas con su mismo o

inferior nivel jerárquico dentro de la misma empresa.

Admin C

Puede añadir a cualquier persona que pertenezca a su misma empresa, es decir, que puede

añadir a personas de la empresa impedientemente de su nivel jerárquico. Si no se especifica

nada será el admin por defecto.

Admin D

Solo puede añadir al personal de la misma empresa que está debajo o al mismo nivel

jerárquicamente.

Director

El rol de director de un grupo solo se le puede dar a un participante del mismo grupo, si dicha

persona está en más de un grupo puede ser director de varios. El director es el encargado de

gestionar los grupos una vez creados. El director se divide en subroles dependiendo de las personas

a las que puede añadir al igual que los distintos niveles del Admin, el que elige de qué tipo de director

se va a ser es un rol superior.

Director A

Pueden añadir a los tres tipos de personas, es decir, a las personas que son jerárquicamente

superiores en la misma empresa, personas con su mismo o inferior nivel jerárquico y a las

personas que no forman parte de la empresa (ajenas a la empresa).

Director B

Puede añadir personas que no formen parte de la empresa y a personas con su mismo o

inferior nivel jerárquico dentro de la misma empresa.

Page 21: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

18

Director C

Puede añadir a cualquier persona que pertenezca a su misma empresa, es decir, que puede

añadir a personas de la empresa impedientemente de su nivel jerárquico.

Director D

Solo puede añadir al personal de la misma empresa que está debajo o al mismo nivel

jerárquicamente. Si no se especifica nada será el director por defecto.

Usuario Medio

Usuario que está dentro de una empresa en la aplicación, puede hacer tests, solicitar que hagan un

test y formar parte de un grupo de trabajo.

Básico

Está registrado en la aplicación, operacionalmente en este módulo puede realizar prácticamente

todas las operaciones de un usuario medio, pero conceptualmente es distinto.

Foráneo

Usuario que no está autenticado dentro de la aplicación, pero tiene la capacidad de realizar test, ya

que para la evaluación de los usuarios, se envían test a diferente personal para que evalúen a dicho

usuario.

A continuación, viene una tabla que está dividida en dos partes, en la que se expone las funciones

que va a tener la aplicación y los roles que las puede llevar a cabo.

Page 22: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

19

Figura 11- operaciones de los roles

Tarea Admin

Formavolucion

Super

admin

admin A B C D Director A B C D Usuario

medio

Básico

Crear/Eliminar puesto x x x x x x x x x x x x

Añadir miembro a

organización

x x

Listar usuarios de la

organización

x x

Listar equipos de

organización

x x x x x x x

Listar puestos x x x x x x x

Listar mis equipos x x x x x x x x x x x x x

Listar mis puestos x x x x x x x x x x x x x

Aceptar invitación x x x x x x x x x x x x x x

Rechazar invitación x x x x x x x x x x x x x x

Asignar un maestro a un

puesto

x x x x x x x x x x x x

Crear un grupo de

selección

x x x x x x x x x x x x

Añadir persona igual o

inferior jerárquicamente

x x x x x x x x x x x x

Añadir persona

jerárquicamente

superior

x x x x x x x

Añadir persona ajena a

la empresa

x x x x x x

Eliminar persona de un

grupo de selección

x x x x x x x x x x x x

mandar test x x x x x x x x x x x x

comprobar si se ha

hecho test

x x x x x x x x x x x x

recomendar personas a

puesto

x x x x x x x x x x x x

Elegir persona para el

puesto

x x x x x x x x x x x x

Eliminar persona de un

puesto

X x x x x x x x x x x x

Modificar equipo x x x x x x x

Eliminar equipo x x x x x x x

Page 23: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

20

Modelo de casos de uso

En esta sección se incluyen los casos de uso más relevantes del sistema. No vienen los distintos tipos

de roles (Admin A, Admin B, Director A,…), ya que vienen explicados anteriormente. Los roles de

Admin y de Director tienen los permisos por defecto.

Figura 12- Diagrama cdu

Page 24: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

21

Descripción de casos de uso Cada caso de uso lo he descrito utilizando la plantilla como la que aparece a modo de ejemplo a continuación (figura 13), correspondiente al caso de uso añadir persona al grupo de selección. No se incluyen el resto en la memoria por razones de espacio.

Caso de uso Añadir persona al grupo de selección

Descripción Se añadirá una persona al grupo de selección.

Precondición Estar logueado y ser como mínimo director

Postcondición

Actor Director

Secuencia Paso Acción

1 Seleccionar el botón de añadir

2 El usuario selecciona de una lista previamente construida con las personas a las que pude añadir a la persona que quiere añadir

3 El usuario le da al botón de añadir

4 Se muestra el resultado de la operación.

Extensiones

3.1 Se añade el usuario y se da un mensaje de añadido satisfactoriamente

3.1.1 Se envía una invitación al usuario

Excepciones Figura 13- plantilla descripción cdu

Page 25: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

22

Para alguno de los casos de uso he realizado diagramas de actividad para describir mejor el proceso. Incluyo en la memoria el caso de uso añadir persona al grupo de selección para que sirva de ejemplo.

Figura 14- Diagrama de actividad de añadir persona al grupo de selección

Page 26: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

23

Requisitos:

Esta captura de requisitos cumple las directrices establecidas por el estandar IEEE Recommended

Practice for Software Requirements Specification ANSI/IEEE 830-1998.

Requisitos funcionales

El administrador de una organización podrá añadir usuarios (a su organización) y activarlos

una vez estén añadidos.

Se deberá realizar la recomendación de:

o Puestos que han sido ofertados para un usuario ajeno a la organización (puede que

la organización quiera realizar una subcontrata).

o Usuarios de la organización para un determinado puesto.

En la recomendación de personal para un puesto se distinguen tres casos; el caso en el que

quieres añadir a una persona jerárquicamente superior, el caso en el que quieres añadir a

una persona jerárquicamente igual o inferior y el caso en el que quieres añadir al grupo de

selección un candidato ajeno a la empresa.

Se podrá modificar los datos básicos de un puesto o de un equipo de trabajo una vez creados,

estos datos son: nombre, descripción e imagen.

Se podrán eliminar puestos de trabajo de un equipo una vez creados.

Se podrán eliminar los candidatos de un grupo de selección.

Una vez que un puesto tenga un trabajador, no se podrá crear un grupo de selección o

modificarlo si ya está creado.

Realizar un sistema de mensajería interna para la invitación a grupos de selección, y la

aceptación por parte del usuario invitado.

Usando el sistema de mensajería implantado en la plataforma, se enviarán mensajes de

notificación cuando un usuario sea añadido a un puesto de trabajo.

Requisitos no funcionales

Usabilidad:

o Realizar una interfaz para el usuario intuitiva y fácil de usar.

o Ágil en el tiempo de respuesta si la conexión a internet es óptima.

Seguridad:

Page 27: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

24

o Identificar los roles que pueda tener la aplicación para cumplir con la ley sobre

seguridad del mínimo privilegio.

o Las consultas a la base de datos no pueden quedar en un estado inconsistente, para

que no haya un impacto no deseado.

o Deberá ser compatible con el protocolo https.

Multiplataforma:

o Debe ser visible para los navegadores más utilizados (Google Chrome, Mozilla

Firefox, Opera y Safari).

Legales

o Se deberá satisfacer la Ley Orgánica de Protección de Datos (LOPD).

o Contar con licencias de uso y condiciones que el usuario deba aceptar para poder

hacer uso de la aplicación.

Page 28: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

25

Diseño

Base de datos

La antigua Ítaca contaba con una base de datos, con deficiencias, ya que no permitía introducir

nueva funcionalidad al estar muy poco estructurada, con tablas con muchos atributos y pocas

relaciones entre las tablas. La nueva base de datos soluciona este problema y permite añadir más

tablas en un futuro si fuera necesario. La figura 15 muestra el nuevo diseño de la base de datos.

Figura 15- Base de datos

Page 29: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

26

Recalcar que esta es mi parte de la base de datos. Al trabajar en colaboración con otros compañeros

de carrera, desarrollando partes distintas de la aplicación de Ítaca, las tablas de la base de datos

conjunta serán más. Todo esto requiere un trabajo coordinado y un especial cuidado para no

modificar esta base de datos hasta que todas las partes estén de acuerdo, ya que podríamos

estropear parte del trabajo realizado.

Tablas USER_Usuario

ID Nombre Apellidos Via Numero Puerta municipio CP Provincia pais tlfn

sexo contrasena email avatar ultimaConexion activado fechaActivacion

unique

ORG_Empleado

ID jefe

CE: Usuario ORG_Organización

ID Nombre IDAdmin IDOrganizacionPadre logo idJefe

CE: Usuario CE: Organización CE: Usuario

ORG_TRAB_Equipo

ID IDOrganizacion Nombre descripción IDAdmin IDEquipoPadre logo IDJefe

CE: Organización CE: Usuario CE: Equipo CE:usuario

ORG_TRAB_REL_UsuarioOrganizacionEquipo

ID IDUsuario IDOrganizacion IDEquipo

CE: Usuario CE: Organización CE: Equipo

ORG_UsuarioProfesional

ID descripcion curriculum Estudios fondo

ORG_REL_UsuarioUsuarioProfesionalOrganizacion

ID IDUsuario IDUsuarioProfesional IDOrganizacion

CE: Usuario CE: UsuarioProfesional CE: Organizacion ORG_TRAB_PuestoDeTrabajo

ID nombre descripcion IDTrabajador

CE: Usuario

ORG_TRAB_REL_OrganizacionEquipoPuesto

ID IDOrganizacion IDEquipo IDPuesto

CE: Organización CE: Equipo CE: Puesto

Page 30: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

27

ORG_TRAB_GrupoDeSeleccion

ID IDPuestoTrabajo NºpersonasMax IDMaestro IDElegido Nº personas

CE: PuestoTrabajo CE: Usuario CE: Usuario unique ORG_TRAB_REL_SeleccionUsuario

ID IDSeleccion IDUsuario aceptado

CE: Grupo de Selección CE: Usuario ORG_TRAB_Mensaje

ID titulo contenido IDGrupoSeleccion IDUsuario leido

CE: Grupo de Selección CE: Usuario PERM_ Rol

idRol Nombre descripcion

PERM_ UsuarioRol

ID idUsuario idRol IDOrganización

CE: Usuario CE: Rol CE: IDOrganizacion PERM_ Operaciones

idRol Autenticar crearTest … Hacer_test

CE: Rol

A la hora de especificar las relaciones he decidido quitar las etiquetas por motivo de espacio; las

etiquetas son:

Org: Significa que la tabla pertenece a la categoría de organizaciones.

TRAB: Sub-etiqueta de organización que indica que pertenece a la categoría de trabajo.

PERM: categoría de permisos

Normalización Las tablas ya están en forma normal de Boyce-Codd, es decir, que todos los atributos no primos

dependen de forma total de la clave y para toda xy, x es superclave.

Page 31: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

28

Páginas

Para realizar las páginas en html se ha usado una plantilla de Bootstrap llamada Artifcial Reason.

Como se ha dicho anteriormente, esta plantilla es la que se usa en la empresa, por lo que a petición

de Formavolucion se usa para el desarrollo del TFG.

Dicha plantilla contiene páginas ya prediseñadas, que se pueden cambiar, combinar con otras

páginas o añadir cualquier otro elemento de html.

Esta plantilla contiene también elementos prediseñados como barras de progreso, tarjetas de perfil,

títulos, tablas, botones, iconos, listas, etc. Cualquiera de estos elementos se puede incluir en

cualquier página. En la siguiente imagen muestro el panel de los elementos que trae la plantilla de

Artificial Reason.

Figura 16- Menú de los elementos de Arificial Reason

Además de estos elementos contiene animaciones que se pueden añadir a cualquier elemento.

Bootstrap me ha parecido una herramienta bastante útil para la creación de páginas html, ya que

permite una gran flexibilidad, y una amplia gama de elementos y tutoriales sobre su uso en internet.

Como pega decir que sus css y javascript son demasiado extensos por lo que modificar alguna cosa

resulta bastante difícil, aunque sí que puedes crear tu propia hoja de estilos o tu propio javascript y

añadirlo.

Page 32: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

29

La cuadrícula de Boostrap se compone de doce columnas, como se muestra en esta imagen.

Figura 17- Grid de Bootstrap

Para estructurar estas doce columnas se dispone de clases definidas en el CSS de Bootstrap.

Container: se encarga de alinear y ajustar los márgenes adecuadamente.

Row: son grupos horizontales de columnas, esta clase se debe declarar siempre dentro de

un container.

Tipos de columnas: para dividir las columnas se usa un número detrás de cada tipo de

columna, este número hará de divisor de doc (Ej: 12/6) y el resultado será el número de

cuadriculas que ocupa.

o Col-xs-*: se utiliza para mostrar en dispositivos con una pantalla de resolución menor

a 768px (móviles).

o Col-sm-*: se utiliza para mostrar en dispositivos con una pantalla de resolución

mayor o igual a 768px (tablets).

o Col-md-*: se utiliza para mostrar en dispositivos con una pantalla de resolución

mayor o igual a 992px (ordenadores portátiles y de sobremesa).

Page 33: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

30

No he utilizado otras herramientas de diseño para maquetar las páginas web porque no he

necesitado su uso, ya que Bootstrap me proporcionó lo necesario. Primero decidí ver los elementos

que componen la plantilla y bootstrap en general. Una vez inspeccionado los elementos de

bootstrap, pasé a construir las páginas con los elementos que me parecieron útiles. De esta forma

consiguí un diseño en html adecuado para nuestras necesidades.

A continuación se van a mostrar los diseños de las páginas y sus elementos. En su versión html, estas

páginas pueden tener otro aspecto, ya que esto es un prototipo.

Cabecera:

Figura 18- Cabecera

En esta imagen se muestran los elementos que tendrá la cabecera.

Arriba a la izquierda se encuentra una imagen que un futuro será la imagen de la empresa, con el

nombre del proyecto de la aplicación y un eslogan. A la misma altura a la derecha se encuentran las

redes sociales más usadas y el panel de entrada (login), si el usuario ya se ha conectado a la

aplicación se mostrará en vez del login, el panel de su sesión.

En la parte media (color gris) se encuentra el menú de la aplicación, si el usuario está registrado con

permisos de admiración aparecerá un nuevo apartado llamado administración.

Por último en la zona de color verde Se indicará el nombre de la página y unas migas de pan para

saber en dónde te encuentras en todo momento.

Page 34: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

31

Página de mis equipos.

Se usará para mostrar los equipos de los que un usuario tiene permisos de administración dentro

de una misma empresa. Se podrá también usar para listar los equipos en los que está un

determinado usuario.

Figura 19- Listado de equipos

Está página contiene un elemento paginador para ir mostrando poco a poco los equipos, ya que si

un usuario llegará a tener muchos, no sería visualmente agradable mostrar toda la información en

una sola página, ya que se tendría que hacer demasiado scroll.

Page 35: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

32

Equipo

Esta página servirá para mostrar los datos de un determinado equipo: nombre, descripción y a los

integrantes del mismo.

Figura 20- Equipo

Page 36: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

33

Grupo de selección

El diseño de dicha página es similar al de un equipo, con las diferencias de que tiene un maestro, y

un submenú con las opciones de ver y esconder la realización del test, esta opción lo que hace es

mostrar una barra de progreso con el porcentaje de realización que tiene cada uno. Además de estas

opciones está la opción de recomendar, que muestra la comparación de los participantes.

Figura 21- Puesto y grupo de selección

Page 37: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

34

Mis mensajes

Página que sirve para mostrar los mensajes del usuario. La mayoría de dichos mensajes serán

invitaciones a grupos de trabajo.

Figura 22- Mensajes

Los mensajes leídos tendrán un fondo gris y sin letra en negrita, mientras que los mensajes leídos

estarán resaltados con un fondo blanco y letra en negrita.

Al clicar en la papelera para eliminar los mensajes aparecerá un mensaje para la confirmación de

borrado de dichos mensajes.

Se añadieron los siguientes elementos para la gestión de los mensajes y para mejorar la usabilidad

de usuario:

Recargar

Borrar un único mensaje o varios.

Mensaje

Se mostrará el mensaje entero con su título y el texto del mensaje, además de mostrar sus opciones

por defecto la de eliminación del mensaje, como antes se ha comentado la mayoría de los mensajes

serán de invitación a un grupo por lo que se podrá rechazar o aceptar la invitación.

Al elegir cualquiera de estas tres opciones aparecerá un mensaje de verificación.

Figura 23- Mensaje

Los elementos encontrados en la parte inferior derecha, el tic, la cruz y la papelera sirven para

aceptar, rechazar la invitación y elimar el mensaje respectivamente.

Page 38: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

35

Búsqueda

Esta página sirve para buscar personas y añadirlas a un puesto directamente o a un grupo de

selección.

Figura 24- Búsqueda para la selección de usuarios

Está página dispone de un paginador, filtros y opciones de visualización. Los filtros sirven para

mostrar un grupo de personas determinado y ordenarlos por nombre. En las opciones de

visualización se encuentran las opciones de cambiar el número de personas que se muestran por

filas y la visualización de la descripción de los usuarios mostrados.

Nota: los nombres mostrados en esta página son suficientemente públicos como para no comprometer la privacidad

de las personas.

Administración

Página para mostrar las opciones de administración. Esta página cambiará de aspecto según el tipo

de usuario que se conecte, es decir, cambiará acorde a los permisos que tenga cada usuario.

Figura 24- Administración

Page 39: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

36

El panel de administración está separado por grupos funcionales (equipos, puestos, usuarios,…), en

este diseño no están puestas todas las funcionalidades ni grupos funcionales, ya que es un prototipo

y el resto de grupos funcionales no son mi tarea.

Las páginas de creación de organización, equipo, puesto, grupo de selección he decidido no incluirlas

en la memoria porque son simples formularios.

Diagrama de navegación

Figura 25- Diagrama de navegación

Al panel de administración y a los mensajes se pueden acceder desde cualquier página, ya

que estas dos estarán disponibles en el menú de la cabecera.

El símbolo significa que es un formulario.

Page 40: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

37

Diseño Arquitectónico

En la aplicación he creado un diseño formado por las capas de persistencia, lógica de negocio y

presentación. Siguiendo el patrón modelo-vista-controlador (MVC).

Este patrón separa los datos y la lógica de negocio de la aplicación de la interfaz de usuario.

Vista: La que muestra los datos de forma que se puedan interactuar con ellos. Está

compuesta por las diferentes páginas php que son las encargadas de servir de interfaz al

usuario.

Controlador: Responde a las acciones del usuario y hace peticiones al modelo cuando se

tiene alguna solicitud sobre la información. También puede mandar información a la vista,

por lo que se pude decir que el controlador hace de intermediario entre la vista y el modelo.

Lógica de negocio, está formada por páginas de php que simulan a los servlets en java.

Modelo: Es la representación de la información con la que la aplicación opera, por lo que gestiona los accesos a la información. Persistencia esa capa la he dividido en varias clases: class.persistenciaGestion, class.persistenciaEquipos, class.persistenciaOrganizacion, class.persistenciaPuestos, class.persitenciaListar, class.persistenciaGrupoSeleccion y class.persistenciaGestion. La he dividido en diferentes clases para que el tamaño del archivo sea manejable, además de esta forma los métodos de acceso según su grupo funcional.

Figura 26- Diseño arquitectónico

Vista

Controlador

Persistencia

Modelo

Page 41: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

38

Implementación

Clases usadas para el desarrollo

phpmailer

Esta clase sirve para mandar correos, para la utilización del envío de emails hace falta configurar

algunos parámetros antes del envío del mismo, algunos de estos parámetros son:

Especificar el protocolo de envío (SMTP, POP3).

El host de correo que vas a usar, por ejemplo: smtp.gmail.com

Elegir conexión segura si se quiere.

El puerto del protocolo que vas a usar.

El nombre de usuario de la cuenta de correo y el envío.

Por último el tipo de codificación del correo, el contentype, el asunto del correo y el cuerpo.

imageresize

Esta clase la he utilizado para subir imágenes al servidor y modificar el tamaño, proporciona

métodos para cambiar el tamaño de la imagen, es decir, a la hora de subir la imagen puedes

redimensionarla según el alto y el ancho o ponerlos de forma proporcional. Esto te permite crear

diferentes medidas para una misma imagen, lo cual es bastante útil porque según donde quieras

usar esa imagen es más apropiado un tamaño u otro. Por ejemplo para la foto de perfil del usuario

hemos redimensionado la imagen que sube el usuario a unos tamaños cuadrados de 50x50, 150x150

y 290x290.

Todas las imágenes que se suben con esta clase se convierten al formato png.

Para trabajar con esta clase hay que crearla con una ruta temporal de la imagen, con esta imagen

temporal es sobre la que trabaja y hace las redimensiones, posteriormente se guarda la imagen en

una ruta final.

Page 42: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

39

Clases creadas para el desarrollo

Además de las clases de persistencia, creé diferentes clases para la gestión y el control de la

aplicación, estas clases son:

comprobadora: esta clase contiene métodos para el control de los permisos de los usuarios,

accede a los diferentes permisos que pueda tener el usuario, según el equipo, puesto y

organización. De este modo se puede saber si un usuario tiene los permisos necesarios para

realizar una acción.

equipo y organización: estas clases contiene métodos para la gestión de dichos elementos,

tales como su creación eliminación y modificación.

usuario: contiene los datos más relevantes del usuario que ha hecho la operación de login,

además de métodos para acceder y cambiar dichos datos.

loginCom: gestiona el login de los usuarios y comprueba al acceder a cualquier página que

el usuario se ha logueado en la aplicación y que contiene los datos necesarios en sesión para

el su uso.

Gestión de las operaciones

Las operaciones que permite hacer la aplicación están guardadas en una tabla de la base de datos

junto a los roles que la pueden realizar, indicando mediante un booleano qué rol la puede hacer.

Figura 30- Tabla de operaciones

Contemplé dividir la tabla en grupos operacionales, para no tener todas las operaciones en la misma

tabla, pero se desechó esta idea porque no merecía la pena llevarla a cabo por el tiempo necesario

para su realización y además, de este modo no se podía encontrar a simple vista qué operaciones

podía hacer un determinado rol.

Este tipo de gestión de los permisos no se había llevado a cabo en ninguna asignatura impartida en

la universidad, por lo que supuso un reto llegar a la forma óptima para una gestión adecuada de los

permisos de cada rol.

Page 43: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

40

Creación de un paginador

Para la creación de un paginador lo primero que hay que definir son dos variables, el número de

elementos que va a tener cada página (en mi caso la variable la he llamado registros, por defecto 5)

y el número máximos de enlaces que se van a mostrar (a esta variable la he llamado enlazadas y

tiene como valor fijo 5).

Mi variable registros se puede cambiar, es decir, que por medio de la url o del menú proporcionado

en la página se puede cambiar el número de elementos mostrados por página, este número se coge

a través del parámetro reg que contiene la url. Código:

Figura 30- comprobación

Esta sencilla parte de código lo que hace es comprobar que exista por medio de get la variable reg,

si existe y es número se cambiará el número de elementos por página, si no el número será 5.

Además de estas variables hay que crear también una variable que contenga el número de

elementos que hay en total, posteriormente si el número total de elementos no está vacío o es igual

a 0 se pasará a calcular el número de páginas totales, se obtiene al hacer la división entre el número

de registros totales y el número de registros por página.

Para obtener el conjunto de elementos a mostrar en la página hay que hacer una consulta a la base

datos como mínimo con los siguientes parámetros:

Desde: este parámetro representa el número desde el cual hay que coger los elementos, se

calcula con el número de página menos uno y multiplicando el número de elementos por

página.

o Ejemplo: Si nuestro página es la dos dicha operación quedaría así: (2-1)* número de

registros por página, que es igual a número de registros por página, esto viene de

que en la página uno, empezaríamos por el elemento 0 hasta el número de

elementos por página, por lo que en la primera página ya cogeríamos los primeros n

elementos y en la página posterior habría que empezar desde ahí.

Hasta: el número de registros que vamos a mostrar en la página.

Page 44: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

41

Una vez hecho todo lo anterior, debemos mostrar los enlaces de las siguientes y/o anteriores

páginas. Para hacer esto necesitamos en mi caso de 6 variables:

Anterior: Representa el número de página anterior a la actual, si el número de página es

mayor que uno, se calculará y mostrará esta variable representada en un elemento html.

Intervalo: El intervalo es la diferencia de páginas que va haber entre la página actual y sus

anteriores y posteriores, la calculo con la siguiente operación:

$intervalo = ceil($enlazadas / 2) - 1; (ceil redondea al número más alto). Mi número de

páginas enlazadas es cinco por lo que el intervalo será de 2.

o Un ejemplo para comprenderlo mejor: Supongamos que estamos en la página

cuatro, nuestro intervalo es de dos, por lo que de páginas anteriores se mostrará

hasta la página dos, y de las páginas superiores suponiendo que hay más se mostrará

hasta la 6(si solo hay 5 páginas, solo se mostrará hasta la 5), siendo el resultado:

Desde: Calcula el primer número que debe aparecer en el paginador, se calcula restando a

nuestra página actual el intervalo, en nuestro ejemplo anterior dicho número es el dos. Si al

hacer la operación la variable desde quedaría en número negativo, pasaría a valer 1.

Hasta: Calcula el último número que debe aparecer en al paginador, se calcula sumando a la

página en la que nos encontramos el intervalo calculado anteriormente. Si la variable desde

es menor que uno, hay que hacer la siguiente operación: $hasta -= ($desde - 1) (el menos es

porque es negativo y lo que queremos es sumar - -+. Con esto nos aseguramos que se

mantiene el número de enlaces a mostrar.

Siguiente: Representa el número de la siguiente página a la actual, si el número de esta

página es mayor que el número de páginas totales no se mostrará este elemento.

Page 45: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

42

Creación de la jerarquía de la organización

Para la creación de la jerarquía de una organización he creado dos clases:

class.jerarquia.php: Es la que verdaderamente construye la jerarquía, la construye mediante

dos métodos. El primer método llamado construir recorre los equipos que no tienen padre,

estos equipos se entiende que son los que están en el nivel superior de la jerarquía, ya que

no dependen de ningún otro equipo que esté por encima. Por cada uno de esos equipos crea

un nodo del director del equipo y debajo de este va creando de forma recursiva, con el

segundo método otros nodos que corresponden a personas que están por debajo del equipo

del director (equipos hijo). Por cada nodo director, se añade una segunda lista con los

miembros pertenecientes al equipo al que dirige el nodo principal (nodo director).

Esta clase contiene el identificador de la organización a la que pertenece la jerarquía y el

nodo principal que es el jefe de la organización, y dentro de este nodo se encuentran

contenidos los demás nodos por medio de listas de listas, creando una estructura en árbol.

Además de los métodos mencionados anteriormente, contiene métodos para mostrar la

jerarquía con un formato de lista en html y otro método para encontrar la posición más alta

de un miembro perteneciente a la organización, como la creación de la estructura se ha

realizado por medio de un árbol es fácil sacar esta información.

class.nodo.php: Es la clase sobre la cual se construye la jerarquía. Cada nodo representa a

un miembro de la jerarquía.

Esta clase contiene:

o El identificador del miembro.

o El identificador del equipo al que pertenece dentro de la organización.

o Miembros: Una lista con los nodos miembros del equipo, en el caso de que el nodo

actual sea un director, estos nodos miembro tendrán su lista miembros y siguientes

vacía.

o Siguientes: Una lista con los nodos directores que están directamente debajo de él,

es decir a una altura más baja, estos nodos a su vez contienen los mismos

elementos que el nodo superior, ya que son el mismo tipo de clase (nodo). De esta

forma se crea una lista de listas.

o Altura a la que se encuentra dentro de la organización.

Page 46: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

43

Estructura del árbol para la jerarquía:

Figura 31- árbol

Con este diagrama (figura 30) lo que quiero mostrar es un posible ejemplo de cómo quedaría la

estructura jerárquica de una organización según mi función.

En primer lugar tendríamos el nodo principal (jefe de la organización), que colgarían de él dos listas

de nodos, la primera lista contiene la lista de miembros que pertenecen al equipo, en este caso

vacía, la siguiente lista contiene los nodos que están directamente por debajo, es decir, los nodos

que representan a los directores de los equipo que son padres del equipo padre de la organización,

estos nodos a su vez contienen las mismas listas y así recursivamente.

Los principales problemas encontrados

En un primer momento al crear la jerarquía, lo hice creando una lista que contuviera más

listas, sin la clase nodo (descrita anteriormente), pero de esta forma al separar entre un

miembro y un director de un equipo inferior jerárquicamente no se hacía correctamente, ya

que estaban en el mismo nivel de la lista y al recorrerla no se obtenía con garantías el nivel

jerárquico más alto de un usuario. Por esto se pensó de otra forma, teniendo una clase nodo

que tuviera una lista de miembros y otra lista para los directores de un nivel jerárquico

inferior.

A la hora de mostrar la jerarquía en html, tuve varios problemas porque se quedaban divs

sin abrir o sin cerrar, conseguí arreglar el problema identificando los divs que se mostraban

mediante comentarios en ellos y descargando el código fuente de la página. De esta forma

se podía identificar bien las etiquetas que daban el error.

Nodo Principal

Miembros

Siguientes

Nodo

MiembrosNodo

Nodo

Siguientes Nodo

Nodo

Miembros

Siguientes

Nodo

Miembros

Siguientes

Page 47: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

44

Recomendación de trabajadores

La recomendación de trabajadores para un puesto se hace comparando de forma visual las

capacidades que se obtienen del candidato al puesto y el maestro del puesto por medio de la

realización de un test.

De esta forma se puede comparar sencillamente las capacidades de una y otro, superponiendo los

valores en un gráfico de araña. Este tipo de gráfico sirve para mostrar diferentes conjuntos de datos

en dos dimensiones. Es una técnica iconográfica que se apoya en la aptitud natural del cerebro

humano para clasificar objetos parecidos.

Figura 32- comparación de habilidades

Para la realización de este gráfico se han usado el script D3.js

D3.js s una librería de JavaScript para producir, a partir de datos, infogramas (representaciones

visuales) dinámicos e interactivos en navegadores web. Hace uso de tecnologías bien sustentadas

como SVG, HTML5, y CSS. Esta librería es sucesora de la librería Protovis.1 En contraste con muchas

otras librerías, D3.js permite tener control completo sobre el resultado visual final.

D3 permite hacer infinidades de gráficos, tales como gráficos de araña, de barras, cartogramas,

mapas, etc.

Page 48: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

45

Rediseños

A la hora de hacer el desarrollo me di cuenta de que faltaban campos en la base datos, para ser más

concretos en la tabla ORG_Empleado faltan el ID de la organización y el equipo, además la clave

principal ya no sería el identificador del usuario, sino que habría que añadir un identificador por

cada relación. Dicha tabla quedaría de la siguiente forma:

Figura 27- Empleado

ORG_Empleado

ID IDUsuario IDOrganizacion IDEquipo jefe

CE: Usuario CE: Organización CE: Equipo A la hora de controlar los roles que tienen los usuarios, decidí separar también por equipos, ya que un usuario puede tener por ejemplo un rol de director B en un equipo y en otro de director D.

Figura 28- usuario_rol

Entrando más en profundidad en la realización del sistema de mensajería, decidí crear más campos

en la tabla. Estos campos son id del emisor del mensaje, un identificador del equipo desde que se

envía el mensaje (en caso de que se envíe de un equipo) con este campo se abre la posibilidad de

tener que aceptar la inserción a un puesto de trabajo o mandar una notificación, el puesto al cuál

se ha añadido, la organización a la cual pertenece el mensaje y un tipo de mensaje para diferenciar

entre notificaciones e invitaciones de unión.

Page 49: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

46

Finalmente dicha tabla quedaría así.

Figura 29- Mensaje

De esta tabla pueden ser nulos los campos: IDEquipo, IDGrupoSeleccion, IDPuesto y asunto.

Problemas encontrados

Durante la implementación me he encontrado con algunos problemas. La mayor parte de ellos

tienen que ver con la creación de la jerarquía, los cuales se explican en dicho apartado, los demás

por el cerrado de las etiquetas html, en concreto tuve problemas con el envío de datos por este

motivo, primero pensé que la recogida o el envío de datos no era la correcta, después miré si se

debía a algún conflicto con alguna variable, por último consulté los datos en la sesión por si pudiera

haber algún dato que interfiriera. Al final resultó ser que los formularios no se cerraban de forma

adecuada.

Page 50: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

47

Calidad

Rendimiento

La web carga de forma fluida si la conexión a internet es de una calidad media. En cuanto a la

creación de la jerarquía, cuyo algoritmo es más complejo y puede provocar algún retardo en la carga,

este retardo solo se produciría la primera vez, puesto que una vez creado se guarda en la sesión, ya

que si se ha consultado una vez es bastante probable que se vuelva a consultar. Por otra parte las

pruebas realizadas con una organización de ejemplo no han aparecido problemas de rendimiento.

Pruebas

Se han realizado pruebas unitarias de las siguientes operaciones:

Crear, eliminar y modificar:

o Organización.

o Equipo.

o Puesto.

o Eliminar usuario de puesto y grupo de selección.

Modificar permisos.

Añadir usuario a:

o Organización.

o Puesto.

o Grupo de selección.

Comprobar el estado de realización de test.

Listado de los puestos y equipos de cada usuario.

Para cada prueba se ha seguido la plantilla de la figura 33, incluyo solo la prueba de creación de

organización a modo de ejemplo, ya que por motivos de espacio no incluyo el resto.

Además de estas pruebas se han realizado pruebas de la comprobación de permisos y control de las

funciones realizadas por cada uno, todas ellas de forma satisfactoria.

También se han realizado pruebas de integración con la parte de gestión te test, de mi compañero

Daniel Espinosa, puesto que esa parte era necesaria para mi proyecto, debido a que necesito el

estado de los test y las mediciones de cada uno para poder hacer la parte de comparación de

usuarios. Las pruebas realizadas en la integración han sido satisfactorias.

Page 51: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

48

Nombre Creación de organización

Entrada Nombre, organización padre, administrador de la organización

Descripción Se crea una organización, introduciendo los datos de la nueva

organización y se pulsa crear.

Resultado esperado Se crea la nueva organización con el administrador correspondiente. Y

se crea una relación entre ellos dos.

Resultado real Correcto.

Comentario

Figura 33- Plantilla para pruebas

Conclusiones

Desarrollar un proyecto por mí mismo me ha supuesto un reto, ya que la dificultad es mayor que

cualquier otro proyecto realizado durante la carrera. El proyecto me ha servido para darme cuenta

que la realización de aplicaciones web es un ámbito que me gusta y en el que quisiera seguir

profundizando. Por otro lado, haber estado dentro de una empresa me ha permitido conocer otro

ámbito del cual no se enseña en la carrera, de esta forma he podido ver cómo es el mundo laboral

desde dentro.

Además he tenido que estar coordinado con mis compañeros, porque cada TFG era una parte de la

aplicación Ítaca, esto ha supuesto un trabajo extra, ya que teníamos que estar en constante

comunicación para no pisar el trabajo realizado por los demás, puesto que un cambio en la base de

datos o llamar igual a una variable podía causar problemas.

En general me siento satisfecho con el trabajo realizado y con el ambiente que hemos tenido tanto

con los integrantes de la empresa como con los compañeros de la carrera.

En cuanto a la elaboración del proyecto se ha completado a la totalidad la funcionalidad acordada

y deseada por la empresa de forma satisfactoria.

Existen algunas posibles mejoras o ampliaciones que se podrían incluir en la aplicación, pero por

razones de tiempo y de que no se acordaron en un principio en el alcance del proyecto, no se han

incluido en esta versión. Las posibles mejoras son las siguientes:

Incluir puestos estándar con sus correspondientes habilidades para no tener que depender

de la realización de un test por parte de un maestro de un puesto. De esta forma se

agilizarían los procesos de selección al tener ya perfiles fijos para puestos.

Poder crear perfiles para puestos de trabajos específicos, es decir, que una organización

tenga la potestad de crear un perfil con las habilidades y datos que crea adecuados para un

determinado puesto.

Page 52: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

49

Que las diferentes organizaciones puedan ofertar puestos para que los usuarios se puedan

inscribir a él, sin la necesidad de que un administrador les añada. Dependiendo del tipo de

oferta que haga la organización podrán apuntarse personal de la empresa, ajeno a la

empresa o ambos.

Durante el transcurso del segundo cuatrimestre y tras la aceptación del tema del trabajo de fin de

grado por parte de la universidad, la empresa decidió cambiar el tema que en un principio era:

Generalización en el acceso, uso y gestión de un dispositivo weareable del mercado para registrar

actividades en bases de datos, finalmente y tras un acuerdo entre la universidad y la empresa el TFG

pasó a ser el actual: Desarrollo de una aplicación web de recomendaciones utilizando el patrón MVC.

Esto me supuso un ligero contratiempo ya que había empezado a buscar información para

desarrollar el proyecto inicialmente concertado.

Agradecimientos

El presente trabajo fue tutelado por Juan José Olarte a quién me gustaría expresar mi

agradecimiento por su paciencia, tiempo y dedicación.

Agradecer también a la empresa Formavolucion junto a todos sus participantes, ya que este trabajo

no podría haberse realizado sin su participación y por el trato recibido durante mis prácticas y

desarrollo del proyecto.

Por otro lado me gustaría agradecer a mis compañeros Daniel Espinosa y Marina Blanco por su

colaboración y el trabajo en equipo desarrollado.

Page 53: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

50

Bibliografía

Apuntes de la asignatura programación de aplicaciones web por Francisco García Izquierdo.

Apuntes de consultas SQL por de la asignatura: Bases de Datos.

Apuntes de la asignatura de diseño de bases de datos por César Domínguez Pérez y Arturo

Jaime Elizondo.

Apuntes sobre sobre EVS y Requisitos, Análisis, Diseño y Pruebas por Juan José Olarte

Larrea de la asignatura Ingeniería del Software.

Tutorial sobre el grid de bootstrap: https://openwebinars.net/tutorial-bootstrap-3-

sistema-grid/

Tutorial sobre el grid de bootstrap: http://v4-alpha.getbootstrap.com/layout/grid/#how-

it-works

Tutorial sobre el uso de bootstrap: http://www.w3schools.com/bootstrap/

Consulta de los métodos de PHP: http://php.net/

Consulta de dudas sobre programación: http://stackoverflow.com

http://gcoch.github.io/D3-tutorial/

https://graves.cl/radar-chart-d3/

https://github.com/alangrafu/radar-chart-d3

Page 54: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

51

Anexos

Anexo 1. Actas de reunión

Acta de reunión 2/2/2016

Datos generales:

Lugar: Logroño

Fecha: 2-2-2016

Hora de inicio: 9:30

Hora de fin: 11:00

Asistentes

Javier Ruiz Sáenz de Pipaón.

Juan José Olarte.

Jesús García Caro.

Orden del día

Concretar la forma de hacer el TFG y tener una toma de contacto antes del mismo.

Acuerdos

Consultar el correo frecuentemente.

Mantener al tutor informado del desarrollo del proyecto.

Darse de alta en la página de Facebook y en la aplicación de yaiza.

Concretar la forma de trabajo del tfg y la regularidad con la que hay que informar al tutor

sobre los avances en el proyecto.

Acordar la información que tiene que presentar la memoria del proyecto

Javier Ruiz Sáenz de Pipaón.

Page 55: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

52

Acta de reunión 29/2/2016

Datos generales:

Lugar: Fomavolucion, Logroño

Fecha: 29-2-2016

Hora de inicio: 10:00

Hora de fin: 11:00

Asistentes

Javier Ruiz (Director de mi proyecto).

Daniel Espinosa.

Marina Blanco.

Álvaro Saenz (Director de los proyectos de formavolucion).

Orden del día

Concretar el alcance del proyecto y poner ideas en común entre los tres participantes de desarrollo

de Ítaca (Daniel, Javier y Marina) los cuales desarrollamos módulos independientes de la aplicación.

Acuerdos

A continuación, expongo los acuerdos que me afectan a mí.

Realizar un análisis exhaustivo de los roles de la aplicación, y las diferentes operaciones (de

la aplicación total) que estarían autorizados a realizar.

Realizar y diseñar un panel de usuario usable para la gestión del perfil y uso de la aplicación.

Se deberá realizar la recomendación de:

o Puestos que han sido ofertados para un usuario ajeno a la organización.

o Usuarios para un puesto.

En la recomendación de personal para un puesto se distinguen tres casos; el caso en el que

quieres añadir a una persona jerárquicamente superior, por debajo o tu nivel y el caso en el

que quieres añadir al grupo de selección.

Cuando se quiera añadir a un usuario a un puesto de trabajo el usuario debe dar el okey, por

lo que se mandará una invitación al usuario. Si el usuario no responde a las invitaciones se

le enviarán mensajes en forma de recordatorio. Si no responde en x mensajes se tomarán

medidas.

Para ordenar y seleccionar al personal más adecuado dentro del grupo de selección, se

requerirá que un trabajador “maestro” (el mejor en su puesto) haga un test para comparar

los resultados con el personal dentro del grupo de selección.

Modificar la base de datos para que se pueda ver la jerarquía de una organización de forma

sencilla.

Guardar un historial de grupos de selección.

En el caso de que un usuario sea borrado, en el historial de grupos de selección deberá

aparecer un mensaje o un usuario de nombre usuario eliminado, para que se vea el número

de participantes hubo en el grupo de selección y los datos de los participantes que todavía

están en la aplicación.

Page 56: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

53

A continuación, se tratan los temas que involucran al equipo en conjunto, ya que al realizar módulos

de la misma aplicación hay casos en los que tenemos que ponernos de acuerdo en la forma de

realizar el trabajo.

Ponernos de acuerdo a la hora de realizar la estructura de la aplicación para la funcionalidad

del multilenguaje.

Comunicarnos los cambios que podamos realizar en la base de datos que puedan afectarnos

a cualquiera de nosotros (Daniel, Javier y Marina).

Javier Ruiz Sáenz de Pipaón.

Page 57: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

54

Acta de reunión 21/3/2016

Datos generales:

Lugar: Logroño

Fecha: 21-3-2016

Hora de inicio: 10:00

Hora de fin: 11:00

Asistentes

Javier Ruiz (Director de mi proyecto).

Daniel Espinosa.

Marina Blanco.

Álvaro Sáenz (Director de los proyectos de formavolucion).

Fernando Berruezo (Empleado de formavolucion).

Orden del día

Explicar cómo vamos a nombrar tablas y campos a partir de ahora en la BBDD, para que las

vayáis construyendo a conforme a un modelo

Poner en común las tablas que va a necesitar cada uno, y darlas a conocer por si otra persona

del equipo necesita hacer uso de ella en el futuro

Acuerdos

Normas para archivos:

o Nombre de los archivos siempre en minúsculas.

o Nombre de los archivos de clases ha de ser class.nombrearchivo.php

o La codificación del archivo ha de ser UTF-8 sin BOM. En caso que el servidor tenga

otra configuración ésta será ANSI.

Normas para Bases de Datos:

o Nombre para las tablas <NOMBRESECCION_NombreDeTabla>

"TEST_HabilidadesUsuario".

o Nombre para los campos las tablas <NombreDelCampo> "CodigoPostal"

"FechaNacimiento".

o El Campo ID de las tablas, si lo tiene estará siempre en mayúsculas "ID".

o Nunca se usarán tildes o ñ's en ningún caso para evitar cualquier tipo de problema

con las codificaciones.

Javier Ruiz Sáenz de Pipaón.

Page 58: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

55

Acta de reunión 22/3/2016

Datos generales:

Lugar: Logroño

Fecha: 22-3-2016

Hora de inicio: 11:30

Hora de fin: 12:20

Asistentes

Javier Ruiz.

Juan José Olarte (Tutor del TFG)

Orden del día

Tratar la redacción de los documentos entregados.

Acuerdos

Se dieron pautas para la redacción de los documentos.

Realizar las explicaciones de los documentos más claras y explicar términos que un primer

lector pueda no entender, aunque al redactor le parezcan obvias.

Integrar todos los documentos enviados en uno mismo.

Javier Ruiz Sáenz de Pipaón.

Page 59: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

56

Acta de reunión 4/5/2016

Datos generales:

Lugar: Logroño

Fecha: 4-5-2016

Hora de inicio: 12:30

Hora de fin: 13:30

Asistentes

Javier Ruiz Sáenz de Pipaón.

Juan José Olarte.

Orden del día

Mostrar una primera versión de la aplicación y revisar la memoria.

Acuerdos

Mejorar en la redacción de la memoria.

Dejar claro en la memoria que el proyecto se hace en colaboración con otros alumnos de

informática y que a la finalización del proyecto hay que unificar cada parte.

Page 60: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

57

Acta de reunión 12/5/2016

Datos generales:

Lugar: Logroño

Fecha: 12-5-2016

Hora de inicio: 10:30

Hora de fin: 13:30

Asistentes

Javier Ruiz.

Daniel Espinosa.

Marina Blanco.

Álvaro Sáenz (Director de los proyectos de formavolucion).

Xavier Capellades (Jefe de formavolucion).

Eva Vidañez (Encargada de ventas y pedagoga).

Orden del día

Mostrar cada uno su aplicación y explicar su funcionamiento.

Acuerdos

Añadir la funcionalidad de crear perfiles de puestos y de ofertar puestos, si diera tiempo.

Page 61: TRABAJO FIN DE GRADO Desarrollo de una aplicación web de ... · Para el diseño de la aplicación web se hará uso de una plantilla de Bootstrap comprada por la empresa, que contiene

58

Anexo 2. Glosario

Glosario

Grupo de trabajo: conjunto de personas asignadas o auto asignadas, de acuerdo a sus habilidades,

conocimientos y competencias específicas (profesionales o expertos), para cumplir una

determinada meta bajo la conducción de un coordinador (director del grupo). Está formado por

puestos de trabajo.

Grupo de selección: grupo que pertenece a un puesto, está formado por un maestro, que será el

referente para la comparación del test y un conjunto de usuarios, que serán los candidatos al puesto

los que se tendrán en cuenta para realizar la recomendación de ese puesto.

Organización: sistema diseñado para alcanzar ciertas metas y objetivos (Empresas, instituciones,

colegios, etc.). Estos sistemas pueden, a su vez, estar conformados por otros subsistemas

relacionados que cumplen funciones específicas como grupos de trabajo.

Puesto de trabajo: espacio que uno ocupa en una empresa, institución o entidad desarrollando

algún tipo de actividad.

Usuario ajeno a la organización: usuario de la aplicación que no pertenece a la organización activa

(de la que se está accediendo. Ejemplo: Un usuario A pertenece a la organización AA, otro usuario

B pertenece a la organización BB, para el usuario A que accede desde la organización AA, el usuario

B es ajeno a la organización AA, aunque pertenece a otra.).

Usuario jerárquicamente superior: usuario de la misma empresa activa, que tiene un orden

jerárquico superior al usuario que está utilizando la aplicación.

Estructura en árbol: es una estructura de datos que imita la forma de un árbol (un conjunto de

nodos conectados). Un nodo es la unidad sobre la que se construye el árbol y puede tener cero o

más nodos hijos conectados a él. Se dice que un nodo α es padre de un nodo β si existe un enlace

desde α hasta β (en ese caso, también decimos que β es hijo de α). Sólo puede haber un único nodo

sin padres, que llamaremos raíz. Un nodo que no tiene hijos se conoce como hoja. Los demás nodos

(tienen padre y uno o varios hijos) se les conoce como rama.