Prototipo de Aplicación Web para la Gestión de una ...

77
Escuela Politécnica Superior de Jaén UNIVERSIDAD DE JAÉN Escuela Politécnica Superior de Jaén Trabajo Fin de Grado Alumno: Juan Francisco Abán Fontecha Tutor: D. Ángel Luis García Fernández Dpto.: Departamento de Informática Junio, 2019 Prototipo de Aplicación Web para la Gestión de una Competición de Judo

Transcript of Prototipo de Aplicación Web para la Gestión de una ...

Escu

ela

Po

lité

cn

ica S

up

erio

r de

Ja

én

UNIVERSIDAD DE JAÉN Escuela Politécnica Superior de Jaén

Trabajo Fin de Grado

Alumno: Juan Francisco Abán Fontecha Tutor: D. Ángel Luis García Fernández Dpto.: Departamento de Informática

Junio, 2019

Prototipo de AplicaciónWeb para la Gestión de una Competición de Judo

Universidad de Jaén

Escuela Politécnica Superior de Jaén

Departamento de Informática

Don Ángel Luis García Fernández , tutor del Trabajo Fin de Grado titulado:

PROTOTIPO DE APLICACIÓN WEB PARA LA GESTIÓN DE UNA COMPETICIÓN

DE JUDO, que presenta Juan Francisco Abán Fontecha, autoriza su presentación

para defensa y evaluación en la Escuela Politécnica Superior de Jaén.

Jaén, Junio de 2019

El alumno: El tutor:

Juan Francisco Abán Fontecha Ángel Luis García Fernández

JUAN FRANCISCO ABÁN FONTECHA

2 Escuela Politécnica Superior de Jaén

AGRADECIMIENTOS

Mi visión del trabajo realizado es bastante optimista de cara al fin de una etapa

como son los cuatro años en la Universidad de Jaén formándome de cara a un

futuro-actual trabajo, donde se me ha permitido combinar mis esfuerzos personales

junto con los de grandes profesionales para alcanzar una meta fijada, que era

conseguir sacar este grado de ingeniería.

Respecto al esfuerzo último en este trabajo realizado salgo con más fuerza,

debido a que a pesar de tener tardes de no avanzar nada con el proyecto por un

bloqueo mental o a no entender de manera clara qué necesitaba nuestro cliente,

conseguí crear esta aplicación, que, a pesar de no ser una aplicación estrella que

me vaya a hacer ganar dinero, yo, al verla creada, la recibo como premio a todo un

tiempo de sudor y lágrimas empleados en un camino junto a muchas personas con

las que he podido convivir y de las cuales he podido y aún espero aprender mucho

más, ya sea en Jaén, Andalucía, España o cualquier parte del mundo.

Para terminar este trabajo, no podría hacerlo sin valorar el esfuerzo de las

personas que me han ayudado a guiar y a llevar por buen camino este trabajo.

Empezando por mi tutor de este trabajo, Ángel Luis García Fernández, considerado

por muchos uno de los mejores profesores del Grado de Ingeniería Informática.

Siguiendo con mi familia (Madre, Hermanas, Paco) por su apoyo y sus ayudas en

cuanto al diseño inicial nada claro y muy confuso. Mi cuñado Ángel como Judoka de

gran nivel y guía en términos como wazari, y kata-guruma, del cual es un gran

realizador. Y, cómo no, finalizando con mi compañera, novia, amante y amiga que

tantas tardes cuando estaba agobiado me animaba a continuar para terminar con la

aplicación.

A todas y cada una de las personas que han seguido mi camino, me han

acompañado y han visto crecer a esta criatura llamada TFG, y como valedora de un

esfuerzo de años para conseguir terminar parte de mi etapa como universitario y

entrar al mercado laboral, sabiendo que puedo dar día a día el 200% de mí para

conseguir todo aquello que me proponga.

Simplemente quiero decir: ¡Gracias!.

JUAN FRANCISCO ABÁN FONTECHA

3 Escuela Politécnica Superior de Jaén

Índice 1. Introducción. ....................................................................................................................5

1.1. Competiciones de Judo. ...........................................................................................5

1.2. Aplicaciones existentes. ...........................................................................................7

1.3. Objetivo del TFG ......................................................................................................9

1.4. Lógica de Negocio. ...................................................................................................9

2. Análisis. .........................................................................................................................12

2.1. Escenarios .............................................................................................................12

2.2. Requisitos ..............................................................................................................15

2.2.1. Requisitos Funcionales ..........................................................................................15

2.2.2. Requisitos No Funcionales .....................................................................................17

2.3. Casos de uso .........................................................................................................18

2.3.1. Diagramas de Secuencia .......................................................................................19

2.4. Planificación ...........................................................................................................33

2.4.1. Planificación y estructuración del equipo ................................................................33

2.4.2. Estimación de tareas. .............................................................................................34

2.4.3. Planificación y estructuración del material ..............................................................36

2.4.4. Reparto de tareas y recursos en el tiempo .............................................................37

2.4.5. Estimación de costos (Presupuesto) ......................................................................39

3. Diseño ...........................................................................................................................41

3.1. Arquitectura ............................................................................................................41

3.2. Diagrama de clases ................................................................................................42

3.3. Modelo Entidad Relación........................................................................................45

3.4. Interfaz ...................................................................................................................47

4. Implementación .............................................................................................................54

4.1. Framework de desarrollo web ................................................................................54

4.2. Tecnología de Base de datos .................................................................................55

4.3. Otras Tecnologías ..................................................................................................56

4.4. Cambios en el diseño durante la implementación...................................................57

5. Pruebas .........................................................................................................................58

5.1. Experiencia con cliente...........................................................................................59

6. Resultados ....................................................................................................................59

7. Conclusiones .................................................................................................................62

8. Bibliografía ....................................................................................................................63

8.1. Bibliografía Complementaria ..................................................................................63

ANEXO I. Manual de usuario. ...............................................................................................64

JUAN FRANCISCO ABÁN FONTECHA

4 Escuela Politécnica Superior de Jaén

JUAN FRANCISCO ABÁN FONTECHA

5 Escuela Politécnica Superior de Jaén

1. Introducción.

El Judo (Fig. 1) es un arte marcial y deporte de combate de origen japonés,

este término en japonés puede traducirse como «Camino hacia la flexibilidad», o

«Camino de la gentileza, cortesía», influyendo el desarrollo mental y emocional a

través de la práctica. Los practicantes de este arte marcial son denominados

judokas.

Fig. 1: Palabra Judo en japonés.

El Judo es uno de los cuatro estilos principales de lucha deportiva más

practicados hoy en día en todo el mundo. A partir del Judo kodokan se han derivado

las actuales formas de jiujitsu europeo, jiujitsu americano, jiujitsu brasileño, sambo

ruso, nihon tai jutsu y krav magá. Esto se debe principalmente a que judokas

formados en Japón y sus discípulos a lo largo del mundo se han encargado del

desarrollo de estas otras formas. Dado esto y su popularidad lo ha llevado a la

celebración de combates y cómo no campeonatos alrededor de todo el mundo, y con

diferentes categorías, divididos por sexo y pesos.

1.1. Competiciones de Judo.

Las competiciones del IJF World Judo Tour (WJT) normalmente consisten en

dos sesiones, las preliminares y el bloque final. Las fases de competencia que tienen

lugar en las sesiones dependen del tipo de evento. Cualquier cambio a esto será

acordado y aprobado por el IJF Head Sport Director. Dependiendo del número de

participantes, algunas rondas pueden no ser requeridas para cada categoría.

Solo hay un sistema de competición y uniforme para todos los eventos IJF

WJT, un sistema de eliminación con repesca que comienza en cuartos de final (los

últimos ocho participantes). Para otros eventos, se pueden usar diferentes tipos de

sistemas, como doble repesca, repesca completa o eliminación directa.

JUAN FRANCISCO ABÁN FONTECHA

6 Escuela Politécnica Superior de Jaén

Para cada categoría, los atletas se dividirán en dos tablas por medio de un

"sorteo", y se utilizará un sistema de eliminación para producir dos finalistas que

competirán por la medalla de oro.

Los atletas derrotados en los cuartos de final competirán en dos formas

diferentes de repesca:

• Los ganadores de cada uno de estos dos concursos de repesca competirán

por la medalla de bronce contra el perdedor del combate de semifinales de la mesa

opuesta respectiva.

• Los ganadores (2) de esos combates se colocan en tercer lugar.

• Los perdedores (2) se colocan en quinto lugar.

• Los perdedores (2) de los concursos de repesca se colocan en séptimo lugar.

En la hoja de sorteo (Fig. 2), el atleta en la parte superior usa un judogi blanco

y el que está abajo usa un judogi azul. Se otorgarán medallas de oro, plata y dos (2)

medallas de bronce.

Fig. 2: Ejemplo de hoja de sorteo de competición de Judo.

Como podemos observar la mecánica de las competiciones es bastante

problemática, ya que hay diferentes tipos de competición y unos sistemas de

repesca bastante complicados.

JUAN FRANCISCO ABÁN FONTECHA

7 Escuela Politécnica Superior de Jaén

No solo nos fijamos en eso, sino en la capacidad del público de seguir los

combates, dado que se realizan en un recinto como es el polideportivo de la

Salobreja, y suele haber unos 6 Tatamis o incluso 9, dependiendo del número de

participantes y del tipo de competición. Por lo que los asistentes a dicha competición

sólo pueden observar las técnicas que los competidores hacen pero no entender

quién va ganando en que momento determinado.

Con este proyecto se pretende construir una aplicación web que facilite la labor

de la persona encargada de la organización de este tipo de eventos, ya que esta

tarea es laboriosa debido a los problemas que hemos comentado en los párrafos

anteriores.

1.2. Aplicaciones existentes.

Hoy día, gracias al aporte de nuestro cliente y competidores de esta disciplina,

hemos podido descubrir diferentes aplicaciones que se usan a día de hoy para

realizar la labor de organización y reparto de los combates de dichas competiciones,

son las siguientes:

Aplicación propia implementada en una hoja de Excel: Hasta

ahora la organización de las competiciones y eventos se está

realizando con una aplicación implementada en una hoja de cálculo

especialmente para esta labor, ésta es muy exhaustiva y alberga la

infinidad de posibilidades de reparto que incluye la lógica de este tipo

de competiciones, pero dada la cantidad de datos que llegan a

manejar esto hace muy complicado su uso.

Todo esto ocasiona una labor casi perturbadora para nuestro cliente,

ya que no tiene memoria, el reparto de combates no siempre es

equitativo y de acuerdo a las normas. Por ejemplo, en cada

competición a pesar de que los participantes sean los mismos, los

datos deben ser insertados de nuevo, e incluso debe realizarse un par

de veces el sorteo para que no coincidan cabezas de serie, al no

haber introducido los datos de manera correcta.

JUAN FRANCISCO ABÁN FONTECHA

8 Escuela Politécnica Superior de Jaén

Para las competiciones infantiles, existe una problemática mayor al

existir habitualmente alrededor de 600 participantes, por ello, en la

hoja de cálculo es muy tedioso insertar dicha cantidad de datos, no

solo ello sino que además suelen tener problemas al tocar miembros

del mismo club en los diferentes tatamis.

Por otra parte, nos encontramos que este sistema no soluciona la

problemática del seguimiento del torneo, ya que no disponemos de un

mecanismo que permita visualizar la puntuación de cada tatami, es

decir, para la organización interna sí que vale, pero los árbitros o

jueces de cada tatami no tienen la oportunidad de poder incluir los

resultados que se van dando en este programa de inmediato, sino

que deben esperar a finalizar todos los combates para ello.

Ippon.org draw Judo Tournament Software (IJF ScoreBoard):

[IJFHB]Utilizada por la IJF (International Judo Federation, Fig. 3), para

mostrar resultados y organizar las competiciones. Aplicación muy

completa que nos ayuda a la organización de dichos eventos. Su

principal problemática reside en que no dispone de otros idiomas que

no sean el inglés.

Otras problemáticas que hemos detectado con el uso y con la

información dada por parte del cliente es que toda la interacción se

realiza con el teclado; por medio de teclas vamos introduciendo la

puntuación de cada participante. Y una vez configurado el combate es

muy difícil salir de la puntuación a pesar de haber finalizado el

combate.

Esta dificultad en la utilización puede causar un trastorno para la

organización de la competición. Además de no tener compatibilidad

con Windows 10, lo que puede suponer una alteración si se utilizan

sistemas actuales.

JUAN FRANCISCO ABÁN FONTECHA

9 Escuela Politécnica Superior de Jaén

Esta aplicación destaca por tener un manual de instrucciones en el

cual viene todo detallado, y que no se hace tedioso mientras nos

enseña las claves para su uso.

1.3. Objetivo del TFG

El TFG denominado “Prototipo de aplicación web para la

organización de una competición de Judo” tiene como objetivo

principal crear un prototipo que ayude a la organización de campeonatos

de judo de cualquier nivel. Esto implica:

o Automatizar competiciones, reparto automático de combates

basado en la lógica de negocio descrita en el apartado 1.4.

o Facilitar el seguimiento de los resultados al público asistente

a las competiciones.

o Crear estadísticas para cada competición, incluyendo

diferencias entre las competiciones realizadas.

Tras hablar con el cliente y tomar este proyecto desde un ámbito

provincial se piensa, si ésta da buen resultado a este nivel, su aplicación

a competiciones en ámbito regional, permitiéndonos así cruzar datos

entre federaciones, haciendo más sencillo el manejo de éstos para evitar

duplicidades.

1.4. Lógica de Negocio.

Ya hemos explicado cómo funcionan las competiciones de Judo a nivel

internacional de una manera genérica, así como algunas soluciones como la usada

actualmente en un documento excel, e incluso los objetivos que nos planteamos en

este proyecto para albergarlos dentro de nuestro prototipo, con la ayuda del cliente.

En este apartado pretendemos explicar cómo vamos a tomar el funcionamiento

de aspectos clave en la competición, para que a la hora de usar nuestro prototipo se

conozca en qué torneos se puede utilizar y en cuáles no.

JUAN FRANCISCO ABÁN FONTECHA

10 Escuela Politécnica Superior de Jaén

Toda esta información está basada en cómo se realizan las competiciones a

nivel provincial en Jaén. Esto nos ayudará un poco más a entender nuestro

prototipo.

El desarrollo de las competiciones depende del número de participantes en

cada categoría, e incluso puede ser necesario crear una categoría intermedia que

nos ayude en el reparto de combates si no disponemos de suficientes participantes

en una categoría o si hubiese demasiados.

Las categorías oficiales según la Federación Española de Judo son las que

podemos ver a continuación en la figura 3.

MASCULINO FEMENINO

Superligero: - 60 Kgrs. - 48 Kgrs.

Semiligero: - 66 Kgrs. - 52 Kgrs.

Ligero: - 73 Kgrs. - 57 Kgrs.

Semimedio: - 81 Kgrs. - 63 Kgrs.

Medio: - 90 Kgrs. - 70 Kgrs.

Semipesado: - 100 Kgrs. - 78 Kgrs.

Pesado: + 100 Kgrs. + 78 Kgrs.

Fig.3: Tabla de pesaje oficial de la Federación Española de Judo.

Una vez tenemos los datos de las personas participantes en la competición

podremos hacer el reparto. En éste debemos tener en cuenta:

Los cabezas de serie deben estar en diferentes grupos si usamos el

formato de liga, pero incluso si son eliminatorias debemos favorecer

que haya mejores combates en las últimas fases.

No cruzar, salvo excepciones, a participantes del mismo club o la

misma región, dependiendo del tipo de competición.

Respetar el orden en el que pasan a las siguientes fases.

Hay distintos tipos de competición, liguillas, de 3 a 8 participantes, y

clasificatorias, de 9 en adelante, respetando siempre los cabezas de serie. Es

JUAN FRANCISCO ABÁN FONTECHA

11 Escuela Politécnica Superior de Jaén

decir, los marcados como cabezas de serie deben ser repartidos en grupos o en

clasificatorias diferentes para favorecer su pase a fases posteriores.

En ambos tipos existen repescas, para dar oportunidades a todos los

participantes a optar a medallas o a una mejor clasificación en la competición. Hay

dos tipos de repescas:

a. Repesca doble: Las personas que han perdido contra los semifinalistas

se enfrentarán al resto de rivales para optar a llevarse un bronce.

b. Repesca de cuartos de final: Las personas que han perdido contra los

semifinalistas, con el matiz de haber llegado al menos hasta cuartos de

final, se enfrentarán al resto de rivales para optar a llevarse un bronce.

Hemos seleccionado para este tipo de proyecto un modelo de desarrollo

clásico en cascada (Figura 4), éste se basa en diferentes fases o niveles que nos

permiten ir desarrollando poco a poco el producto software. El primer nivel o fase es

el análisis del proyecto, que nos permitirá conocer las necesidades básicas de

nuestro cliente.

Fig.4: Esquema de un modelo de desarrollo basado en cascada.

JUAN FRANCISCO ABÁN FONTECHA

12 Escuela Politécnica Superior de Jaén

2. Análisis.

En este apartado vamos a realizar el análisis del proyecto, que nos ayude a

entender de una manera mucho mejor cómo es el prototipo y las necesidades de

este prototipo apoyándonos en nuestro cliente.

2.1. Escenarios

Vamos a utilizar el método de los escenarios, ya que tenemos un cliente que

nos puede corroborar si realmente esta forma de actuar es acertada de acuerdo a su

pensamiento y a su facilidad de uso. Tras reunirnos varias veces con el cliente

hemos llegado a redactar los siguientes escenarios (1 principal y 2 alternativos).

ESCENARIO PRINCIPAL:

A Diego le envían los participantes en el próximo campeonato de Judo, en un

fichero con el formato siguiente: nombre, apellidos, peso, cinturón, centro o

gimnasio. Tras tener dicho fichero, él abre la aplicación web e ingresa su usuario y

contraseña como gestor de competiciones, se va a su perfil y aparecen dos

opciones:

1. Consultar las competiciones creadas.

2. Crear nueva competición: esta opción después nos ofrece las siguientes

operaciones:

a) Para mayores de edad: Nos pedirá introducir nombre de la competición y

categorías o pesos presentes, los datos de los participantes a través de un fichero,

lo seleccionamos donde se encuentra almacenado y nos dará a elegir el tipo de

competición que queremos celebrar, y de manera automática obtenemos el reparto

de los combates.

Una vez tengamos los combates la aplicación ofrecerá la opción de

modificarlos con el botón de editar.

JUAN FRANCISCO ABÁN FONTECHA

13 Escuela Politécnica Superior de Jaén

b) Para menores de edad: Este tipo de competiciones siempre se debe de

crear antes del campeonato y con tiempo suficiente, para permitir a los profesores

registrar a los participantes.

Introducimos el nombre de la competición y las categorías o pesos presentes,

modificable posteriormente.

** ESCENARIO ALTERNATIVO PROFESOR OTRO CENTRO.

Un profesor del centro deportivo Vandelvira ya conoce los alumnos de su

centro que van a participar en el campeonato que se celebrará la próxima semana.

Entra en nuestra aplicación web e introduce su usuario y contraseña, y aparecen dos

opciones:

1. Consultar las competiciones pasadas: donde podrá ver los resultados

obtenidos por sus alumnos y por otros en competiciones ya celebradas.

2. Añadir alumnos a una competición: Esta opción es la que nos permitirá

introducir los datos de los alumnos que vayan a participar en la próxima competición.

Los datos necesarios por alumno son: nombre, apellidos, DNI, fecha de nacimiento,

domicilio, localidad, provincia, código postal, teléfonos y correo electrónico. Si es la

primera vez que introduce a un alumno concreto, incluso podrá incluir fotografía,

fotocopia del DNI y del libro de familia, además del número de licencia del año

anterior. También dispondrá en esta opción de un listado de alumnos que

participaron en competiciones anteriores, facilitando así la introducción de datos, en

la parte superior deberá seleccionar la competición, que fue creada por el gestor de

competiciones.

Tras seleccionar datos de los alumnos o introducir datos nuevos, pulsará

aceptar y estos alumnos quedarán registrados de manera automática en la

competición.

** FIN ESCENARIO ALTERNATIVO PROFESOR OTRO CENTRO.

Una vez que se han registrado los participantes en cuestión, volvemos a abrir

la aplicación web con nuestro usuario y contraseña como gestor de competiciones e

JUAN FRANCISCO ABÁN FONTECHA

14 Escuela Politécnica Superior de Jaén

irnos a “Ver competiciones”, seleccionamos la competición en concreto de menores.

Se nos abrirá una pequeña ficha con sus datos, desde los participantes hasta el

nombre, pesos, etc.

Ahora tendremos que dar a seleccionar tipo de competición, nos dará a elegir

peso a peso, diciéndonos el número de participantes de cada una y sus categorías

(Cinturones), nos dará la opción de:

i. Liguillas: que podrán ser desde 3 a 8 participantes.

ii. Clasificatorias.

Elegimos el tipo de competición más adecuado para nuestro campeonato y

nos ofrecerá el reparto de los combates.

c) Introducir Resultados: Una vez esté creada la competición accederá a los

resultados ya sea el gestor de la competición o cualquier usuario con derechos de

árbitro lo que permitirá entrar en la competición existente y cambiar la puntuación de

cada combate.

d) Seguir Resultados: Cualquier usuario desde la página principal podrá entrar

en cada competición y ver a tiempo real cómo van los diferentes combates.

ESCENARIO ALTERNATIVO PROFESOR OTRO CENTRO:

José, profesor del centro deportivo Vandelvira, ya conoce los alumnos de su

centro que van a participar en el campeonato que se celebrará la próxima semana,

él entra en la aplicación web, introduce su usuario y contraseña, y le mostrará dos

opciones:

1. Observar competiciones pasadas: donde él podrá ver los resultados

obtenidos por sus alumnos y por otros en otras competiciones ya celebradas.

2. Añadir alumnos a competición: Esta opción es la que nos permitirá

introducir los datos de los alumnos que vayan a participar en la próxima competición,

él dispondrá en esta opción de un listado de alumnos que participaron en

JUAN FRANCISCO ABÁN FONTECHA

15 Escuela Politécnica Superior de Jaén

competiciones anteriores, facilitando la introducción de datos, en la parte superior

deberá seleccionar la competición, que fue creada por el gestor de competiciones.

Tras seleccionar datos de los alumnos o introducir datos nuevos, pulsará

aceptar y estos alumnos quedarán registrados de manera automática en la

competición.

ESCENARIO ALTERNATIVO USUARIO Y CONTRASEÑA INCORRECTA:

Marta, profesora del centro deportivo San José de Calasanz, introduce de

manera incorrecta el usuario y/o la contraseña. El sistema permite hasta 3 intentos

erróneos, al cuarto intento con el mismo usuario, de manera automática nos envía a

una página para recuperar la contraseña donde tendrá que poner su usuario o su

correo electrónico y se le enviará un código y un enlace para poder renovar su

contraseña.

2.2. Requisitos

En nuestra aplicación lo primero que nos damos cuenta es que se distinguen

varios roles claros; la persona encargada de la Organización de la Competición, los

Profesores o Entrenadores de las personas participantes en el evento, que son

también encargadas de apuntarlos, y los espectadores de dicha competición,

además del sistema.

Para cada rol disponemos de requisitos funcionales y no funcionales, gracias a

la técnica de los escenarios podemos extraerlos y los describimos en los siguientes

apartados.

2.2.1. Requisitos Funcionales

El público:

RF1: Necesita poder entrar a la aplicación para ver los resultados de los

combates y seguir la competición.

JUAN FRANCISCO ABÁN FONTECHA

16 Escuela Politécnica Superior de Jaén

RF2: Necesita entrar a la aplicación y ver el historial de competiciones

además de una clasificación de resultados por equipos.

RF3: Durante la competición podrá dejar sus comentarios sobre los

combates.

Entrenador/a:

RF4: Necesita registrarse en la aplicación para utilizarla con este rol.

RF5: Necesita iniciar sesión para modificar datos personales.

RF6: Necesita subir información sobre participantes de los que se

encarga para agregarlos a una competición, creada en la aplicación

previamente.

Persona Organizadora de competiciones:

RF7: Necesita crear eventos en la aplicación para que el resto de

usuarios puedan acceder a ellos.

RF8: Necesita configurar los eventos para poder adaptarlos a las

necesidades.

RF9: Podrá subir un fichero CSV con información de participantes para

añadirlo a una competición.

RF10: Podrá exportar datos a ficheros PDF con las estadísticas y

resultados de las competiciones para enviárselo posteriormente a quien

corresponda, almacenarlos, etcétera.

Como podemos ver entre público, entrenadores y organizadores hay una

relación directa, que hace que el organizador pueda ser entrenador y a su vez pueda

ser público, es decir los requisitos son incrementales.

Sistema:

JUAN FRANCISCO ABÁN FONTECHA

17 Escuela Politécnica Superior de Jaén

RF11: Dispondrá de un módulo de inicio de sesión para que los

diferentes usuarios puedan acceder a funciones especiales.

RF12: Mostrará resultados de una competición al hacer clic sobre ella en

la pantalla principal.

RF13: Será capaz, con los datos de las personas participantes y el tipo

de competición, de ofrecer el reparto de combates de manera

automática para la celebración de la misma.

RF14: Generará estadísticas de cada competidor/a para permitir evaluar

su rendimiento.

2.2.2. Requisitos No Funcionales

Dado que se trata de requisitos relacionados con el rendimiento, no es

necesario dividirlos por roles, hablaremos directamente del sistema:

a. RNF1: El sistema debe ser accesible para personas con problemas de

visión, desde simple daltonismo a pérdida total, incluyendo atributos para

ser leídos por lectores de pantalla y configuración de alto contraste.

b. RNF2: El sistema debe permitir iniciar sesión con respuesta inferior a 30

segundos.

c. RNF3: El sistema bloqueará temporalmente una cuenta si equivoca el inicio

de sesión 3 veces durante un minuto, y lo hará de manera definitiva tras 12

intentos fallidos, es decir 3 bloqueos temporales.

d. RNF4: El sistema debe ser accesible desde cualquier tipo de dispositivo,

desde un smartphone a un PC de sobremesa.

e. RNF5: El sistema debe ser capaz de operar adecuadamente con unas 300

personas conectadas de manera concurrente.

f. RNF6: Todas las comunicaciones externas entre servidores de datos,

aplicación y cliente del sistema deben estar cifradas.

g. RNF7: El tiempo de aprendizaje del sistema por un usuario deberá ser

inferior a 2 horas.

h. RNF8: El sistema debe contar con manuales de usuario estructurados

adecuadamente.

JUAN FRANCISCO ABÁN FONTECHA

18 Escuela Politécnica Superior de Jaén

i. RNF9: El sistema debe proporcionar mensajes de error que sean

informativos y orientados a usuario final.

j. RNF10: El sistema debe poseer interfaces gráficas bien formadas.

2.3. Casos de uso

Los casos de uso son una forma de representar los pasos o actividades que se

realizan para llevar a cabo un proceso. En nuestro caso particular los pasos

necesarios para la organización de la competición de Judo.

Al extraer los requisitos hemos podido ver que tenemos 3 actores que actúan

sobre el sistema:

Personas Organizadoras: Gestionar Competición (Crear, Borrar, Actualizar e

Insertar Participantes).

Personas Entrenadoras: Insertar datos de participantes en competición.

Público: Ver competición, Comentar competición.

Insertar Participantes es una extensión de la gestión de la competición, y tanto

Organizadores como Entrenadores deben autentificarse para realizar dichas

acciones. Como podemos ver en la Figura 4 representamos el esquema a seguir.

Fig.4: Esquema de Caso de Uso de nuestra aplicación.

JUAN FRANCISCO ABÁN FONTECHA

19 Escuela Politécnica Superior de Jaén

Existen dos actores o figuras principales que van a usar nuestro sistema,

Usuarios/as y Público. El usuario puede ser Organizador, Entrenador y Árbitro a su

vez, esta figura posee su propio usuario y contraseña que le permitirá presentarse

ante el sistema con su propio rol. En el caso del Organizador, le permitirá gestionar

las competiciones, en el caso del Entrenador tan solo Insertar los participantes a una

competición y si desempeña el rol de Árbitro podrá actualizar la puntuación de los

combates para dar a tiempo real la visión de ésta.

Como Público definimos a cualquier persona que ingrese en nuestro sistema ya

sea para ver las competiciones o para comentarlas, siendo dichas competiciones a

tiempo real o una vez que ya hayan pasado.

2.3.1. Diagramas de Secuencia

Necesitamos conocer la funcionalidad de nuestros casos de uso. Para ello

vamos a desarrollar los diagramas de secuencia de cada uno de ellos para entender

mejor esto, lo haremos de una manera ordenada por su importancia dentro de la

aplicación. Dado que el proceso de Autentificación, es clave en nuestra aplicación

será el primero en desarrollarse (Fig. 5).

Fig.5: Diagrama de Secuencia del caso de uso Autentificación.

JUAN FRANCISCO ABÁN FONTECHA

20 Escuela Politécnica Superior de Jaén

Autentificación

Objetivo Diferenciar tipo de usuario que accede a la aplicación

Requisitos

Asociados

RF11, RNF2 y RNF3

Descripción En este diagrama podemos observar cómo existe una

comunicación directa entre el sistema, el usuario real y el resto de

clases como usuario, organizador y entrenador. En estas clases

verifica mediante comprobación de usuario y contraseña, por el

método Autentificación, que realmente es quien dice ser y ver

qué rol (Organizador, Entrenador o Árbitro) desempeña dentro de

nuestra aplicación, ya que depende de ello para ver qué tareas

poder realizar y cuáles no.

Precondición Acceso a nuestra aplicación normalmente a través de internet

Secuencia

normal

Paso Acción

1 Para comenzar tenemos entramos en un bucle donde

insertamos un usuario y una contraseña en el modulo

de autenticación.

2 Usuario y contraseña son comprobados por el sistema

3 Si la autentificación es correcta nos devuelve el rol que

desempeña dentro de nuestro sistema para permitir

unas u otras acciones y obtiene los permisos.

Postcondición Se anota en una tabla de auditoria el acceso de este usuario

Excepciones Paso Acción

2 Si no esta registrado en el sistema o se ha equivocado

al introducir las claves nos devuelve “Autentificación

incorrecta”.

Si hay 3 o más intentos incorrectos el usuario queda

bloqueado a espera de unos 20 minutos.

Fig.6: Tabla descriptiva de la acción Autentificación.

JUAN FRANCISCO ABÁN FONTECHA

21 Escuela Politécnica Superior de Jaén

Tras poder acceder al sistema y determinar que su rol es Organizador vemos

que debe gestionar las competiciones, es decir, su funcionalidad la podemos dividir

en Crear, Borrar y Actualizar las competiciones, por ello vamos a crear un

diagrama por cada una de ellas evitando así que tengamos un diagrama demasiado

extenso.

Fig.7: Diagrama de Secuencia de una parte del caso de uso Gestionar competiciones (Crear Competición).

JUAN FRANCISCO ABÁN FONTECHA

22 Escuela Politécnica Superior de Jaén

Crear competición

Objetivo Poder registrar un nuevo campeonato en la aplicación

Requisitos

Asociados

RF1 y RF7.

Descripción Esta acción solo es posible realizarla si somos administradores

del sistema, una vez que hemos accedido y que el tipo de usuario

es correcto nos permite introducir toda la información de la

competición a traves de un formulario.

Precondición Autentificarse en el sistema con rol Organizador

Secuencia

normal

Paso Acción

1 Autentificación del usuario y comprobación del tipo de

usuario.

2 Introducir todos los datos de la competición en el

formulario y pulsar el botón.

3 El sistema nos muestra un mensaje de creación

correcta de la competición

Postcondición Se anota en una tabla de auditoria el acceso de este usuario

Excepciones Paso Acción

1 Usuario no desempeña el rol de “Administrador” el

sistema nos mostrará un mensaje diciendo que no

tenemos permisos para esa acción.

2 Si algún dato no es correcto o no admitido por los

parametros fijados nos mostrara errores por cada

elemento del formulario no correcto.

Fig.8: Tabla descriptiva de la acción Crear participantes

Podemos ver en la figura 7, hay dos referencias, la primera a la

Autentificación del usuario y una vez que se comprueba el rol de éste y verificar

que es Organizador entonces pasamos a crear la competición. De otra manera nos

daría error por falta de permisos. La segunda referencia que nos encontramos es la

Introducción de participantes, es una opción que se le da debido a las

especificaciones requeridas por nuestro cliente, ya que existen competiciones donde

JUAN FRANCISCO ABÁN FONTECHA

23 Escuela Politécnica Superior de Jaén

solo ellos, a través de la federación, conocen los nombres de los participantes y

facilita la tarea antes de la organización de cualquier evento.

El segundo diagrama que vemos es el de Borrar competición (Fig. 7) que es

otra funcionalidad del rol de Organizador.

Fig.9: Diagrama de Secuencia de una parte del caso de uso Gestionar competiciones (Borrar Competición).

Borrar competición

Objetivo Poder eliminar del registro un campeonato de la aplicación

Requisitos

Asociados

Descripción Esta acción solo es posible realizarla si somos Organizadores,

una vez que hemos accedido y que el tipo de usuario es correcto

nos permite ver todas las competiciones que existen y borrar

alguna de ellas a traves de un botón del menú.

Precondición Autentificarse en el sistema con rol Organizador.

JUAN FRANCISCO ABÁN FONTECHA

24 Escuela Politécnica Superior de Jaén

Que la competición a borrar exista en el registro.

Secuencia

normal

Paso Acción

1 Autentificación del usuario y comprobación del tipo de

usuario.

2 El sistema nos muestra una lista con todas las

competiciones existentes y un botón lateral que

permita su borrado.

3 El usuario selecciona la competición a borrar y

confirma el borrado.

Postcondición Se eliminarán del sistema aquellos registros anotados que

correspondan al id de esta competición

Excepciones Paso Acción

1 Usuario no desempeña el rol de “Administrador” el

sistema nos mostrará un mensaje diciendo que no

tenemos permisos para esa acción.

3 De haber algún problema interno del sistema nos

mostrará un mensaje diciendo que es imposible borrar

los datos.

Fig.10: Tabla descriptiva de la acción Borrar competición.

En éste podemos observar como solo tenemos una referencia al caso de uso

de Autentificación, desarrollado anteriormente, en él podemos apreciar cómo se

necesitan ciertos permisos para borrar una competición, de poder hacerlo se le

ofrece al usuario el listado completo de las competiciones para que seleccione la

que desea eliminar.

Otra funcionalidad o caso de uso del rol de Organizador y Árbitro es

Actualizar competición, que podemos verlo en la figura 8.

JUAN FRANCISCO ABÁN FONTECHA

25 Escuela Politécnica Superior de Jaén

Fig.11: Diagrama de Secuencia de una parte del caso de uso Actualizar Competición.

Actualizar competición

Objetivo Poder configurar un campeonato de la aplicación ya creado

Requisitos

Asociados

RF6 y RF8

Descripción Esta acción solo es posible realizarla si somos Organizadores,

una vez que hemos accedido y que el tipo de usuario es correcto

nos permite ver todas las competiciones que existen y actualizar

alguna de ellas a traves de un botón del menú.

Precondición Autentificarse en el sistema con rol Organizador.

Que la competición exista en el registro.

Secuencia

normal

Paso Acción

1 Autentificación del usuario y comprobación del tipo de

usuario.

JUAN FRANCISCO ABÁN FONTECHA

26 Escuela Politécnica Superior de Jaén

2 El sistema nos muestra una lista con todas las

competiciones existentes y un botón lateral que

permita su borrado.

3 El usuario selecciona la competición a editar.

4 El usuario mediante un formulario edita aquellos

campos, no clave, de la competición.

Postcondición Se editan del sistema aquellos registros anotados que

correspondan al id de esta competición

Excepciones Paso Acción

1 Usuario no desempeña el rol de “Administrador” el

sistema nos mostrará un mensaje diciendo que no

tenemos permisos para esa acción.

4 Puede existir un problema de fechas inconsistentes o

acentos que el sistema notificará al usuario justo

debajo del campo del formulario.

Fig.12: Tabla de descripción del caso de uso Gestionar competiciones (Actualizar Competición).

En la creación de competiciones vimos una referencia a la extensión Insertar

Participantes del rol Organizador. La cual tiene mucha importancia para el control

de personas que competirán, debido a que sin participantes no tenemos

competición.

En la figura 13, nos encontramos con la extensión Insertar participantes, que

es parte fundamental en el desarrollo de nuestra aplicación, este modulo aparece en

muchos de los diagramas de secuencia vistos anteriormente, esto se debe a que

tiene un gran peso y una entidad propia.

Esto le permite aparecer de manera individual ya que no solo es utilizada por

otros casos sino que tiene existencia propia y utilidad debido a que es la unica

acción que pueden realizar los usuarios de nuestra aplicación con el rol de

profesorado y entrenador.

JUAN FRANCISCO ABÁN FONTECHA

27 Escuela Politécnica Superior de Jaén

Fig.13: Diagrama de Secuencia de la extensión de Gestionar competiciones (Insertar Participantes).

Insertar participantes

Objetivo Añadir la información de nuevas personas a las competiciones y

a nuestra aplicación para ser reutilizada.

Requisitos

Asociados

RF6 y RF9

Descripción Esta acción solo es posible realizarla si somos Organizadores o

Entrenadores (Profesores), una vez que hemos accedido y que el

tipo de usuario es correcto nos permite ver todas las

competiciones que existen y un listado con la información

existente en la aplicación sobre los participantes y nos permite

añadir estos o incluso subir información de algún participante.

Precondición Autentificarse en el sistema con rol Organizador o

Entrenador(Profesor).

JUAN FRANCISCO ABÁN FONTECHA

28 Escuela Politécnica Superior de Jaén

Que existan competiciones en el registro.

Secuencia

normal

Paso Acción

1 Autentificación del usuario y comprobación del tipo de

usuario.

2 El sistema nos muestra una lista con todas las

competiciones existentes.

3 El usuario selecciona la competición a la que añadir los

usuarios.

4 El sistema nos muestra una lista con los participantes

que ya existen en la aplicación.

5a. El usuario selecciona participantes que quiere añadir.

5b. El usuario añade nueva información de participantes.

5c. El usuario sube un archivo csv con información de

varios participantes para añadirlos.

6 El usuario confirma los participantes que va añadir a la

aplicación.

Postcondición Se añadiran los participantes a la competición actualizando y

añadiendo los registros necesarios en la Base de datos.

Excepciones Paso Acción

1 Usuario no desempeña el rol de “Administrador” el

sistema nos mostrará un mensaje diciendo que no

tenemos permisos para esa acción.

5a. Puede que la aplicación aún no tenga participantes

añadidos a la Base de datos. El sistema nos muestra

un mensaje de que no existen registros.

5b. El usuario puede introducir datos incorrectos en los

campos del formulario y el sistema informará sobre

estos errores.

5c. Si el usuario sube un fichero con una extensión o un

formato diferente al requerido el sistema dará un

mensaje de error al usuario informandole.

Fig.14: Tabla descriptiva de la extensión de Gestionar competiciones (Insertar Participantes).

JUAN FRANCISCO ABÁN FONTECHA

29 Escuela Politécnica Superior de Jaén

En los casos de uso desarrollados hasta ahora, hemos visto aquellas

funcionalidades que se relacionan con usuarios que disponen de contraseña, pero

hay otras que las puede realizar cualquier usuario que visite nuestra aplicación web,

que son Ver y Comentar la competición, esta segunda como extensión de

funcionalidad de la primera.

Fig.15: Diagrama de Secuencia del caso de uso Ver Competición.

Ver competición

Objetivo Permitir a cualquier usuario de la web ver información acerca de

una competición.

Requisitos

Asociados

RF1, RF2 y RF12

JUAN FRANCISCO ABÁN FONTECHA

30 Escuela Politécnica Superior de Jaén

Descripción Al entrar el usuario en la web debe ir al apartado competiciones,

que estará disponible en un pequeño menú superior, tras hacer

clic en éste nos aparecerá la lista de competiciones de las que

disponemos.

El usuario seleccionara una y mostrará los diferentes tatamis que

estén dispuestos en el recinto y poder así seguir la puntuación de

cualquiera de ellos.

Precondición Tener acceso a internet y a nuestra web.

Secuencia

normal

Paso Acción

1 Acceder a la web a traves de internet.

2 El sistema mostrará el menú inicial.

3 El usuario selecciona el menú Ver competición.

4 El sistema nos muestra una lista con las competiciones

existentes en la aplicación.

5. El usuario selecciona la competición.

6. El sistema le devuelve un cuadro de mando de la

competición donde puede ver la información sobre

esta.

Postcondición

Excepciones Paso Acción

4 No existan competiciones creadas aún por lo que el

sistema mostrará un mensaje para informar al usuario

sobre esta situación.

Fig.16: Tabla descriptiva del caso de uso Ver Competición.

Si queremos Comentar la competición (Fig. 17) los pasos son muy similares,

solo que esto solo podemos realizarlo durante la visualización de la misma, por ello

vemos una referencia al diagrama desarrollado en la figura 15 (Ver competición).

JUAN FRANCISCO ABÁN FONTECHA

31 Escuela Politécnica Superior de Jaén

Fig.17: Diagrama de Secuencia de la funcionalidad del caso de uso Ver Competición (Comentar Competición).

Comentar competición

Objetivo Permitir a cualquier usuario de la web comentar competiciones.

Requisitos

Asociados

RF3

Descripción El usuario mientras ve cualquier competición podrá dejar en un

modulo que aparece en la información general de la competición

sus propios comentarios.

Precondición Tener acceso a internet y a nuestra web.

Secuencia

normal

Paso Acción

1 Acceder a la web a traves de internet.

2 El sistema mostrará el menú inicial.

3 El usuario selecciona el menú Ver competición.

4 El sistema nos muestra una lista con las competiciones

existentes en la aplicación.

JUAN FRANCISCO ABÁN FONTECHA

32 Escuela Politécnica Superior de Jaén

5. El usuario selecciona la competición.

6. El sistema le devuelve un cuadro de mando de la

competición donde puede ver la información sobre

esta.

7. El usuario podrá poner sus propios comentarios junto

con un alias para ser facilmente reconocido.

Postcondición

Excepciones Paso Acción

4 No existan competiciones creadas aún por lo que el

sistema mostrará un mensaje para informar al usuario

sobre esta situación.

7 Si el comentario se considerá ofensivo se procederá

de manera automatica a borrarse para evitar herir

sensibilidades.

Fig.18: Tabla de descripción de la funcionalidad del caso de uso Ver Competición (Comentar Competición).

Una vez obtenemos estos diagramas podríamos crear un diagrama UML de

clases inicial (Fig. 19) con las relaciones que se dan en éste y las principales clases.

Más adelante veremos cómo se irá modificando pero este diagrama nos sirve para

hacernos una idea de cómo se estructurará nuestra aplicación.

JUAN FRANCISCO ABÁN FONTECHA

33 Escuela Politécnica Superior de Jaén

Fig.19: Diagrama de clases inicial que podemos extraer de los diagramas de secuencia.

2.4. Planificación

Una vez tenemos los diagramas de casos de uso para comenzar a dar más

pasos se necesita una planificación de todo aquello que necesitamos, no solo en

materia de hardware, software y material humano, sino que necesitamos repartir el

uso de dichos recursos en el tiempo y las tareas que se deben realizar por parte del

equipo formado en este proyecto.

Lo vamos hacer de forma ordenada para acabar relacionando las tareas y los

recursos con el tiempo de forma que nos ayude en el reparto del trabajo. Haremos

un diagrama PERT, donde indicaremos la preferencia de unas tareas sobre otras,

para hallar un camino crítico que nos permita estimar exactamente la duración del

proyecto.

2.4.1. Planificación y estructuración del equipo

Un equipo en la gestión clásica tiene diferentes perfiles, gerente, líder, analista

de sistemas, diseñador, ingeniero software, responsable de calidad, responsable de

pruebas y administrador de la configuración del proyecto, entre otros.

JUAN FRANCISCO ABÁN FONTECHA

34 Escuela Politécnica Superior de Jaén

Dado que en nuestro proyecto no podemos tener todos los perfiles habrá

personas que realizarán diferentes perfiles, dada la complejidad del sistema vamos a

necesitar aproximadamente 4 personas:

Gerente y líder del proyecto: Esta persona se ocupará de la gestión principal

del proyecto desde su planificación, estimación de costos hasta liderar y motivar al

equipo para que se trabaje de una manera fluida y se consigan los objetivos

planteados.

Ingeniero del software y diseñador: Primero hará el trabajo de diseñador,

haciendo los bocetos que expliquen lo que el sistema debe cumplir, y dando al resto

del equipo, de manera clara, cómo y qué se quiere diseñar. Posteriormente hará

labores de ingeniero del software revisando los códigos para que estos sean legibles

y faciles de entender. También realizará pruebas unitarias y de ensamblaje, que

permitan verificar que el trabajo del resto del equipo es acorde a lo que se espera de

la aplicación, como podemos ver éste, además, realizará funciones de responsable

de calidad.

Desarrollador: Este perfil será adoptado por la mayoría del equipo ya que

cada persona tendrá una especialidad como desarrollo de interfaces, esto nos

permitirá dar una mayor versatilidad al proyecto y poder complementar al equipo.

Responsable de Pruebas: A esta altura del proyecto también necesitaríamos

alguien encargado de unir y hacer las pruebas de integridad. Este perfil no puede ser

adoptado por la misma persona que desarrolle, puesto que necesitamos cierto grado

de imparcialidad.

A lo largo del proyecto estos perfiles van cambiando, ya que como hemos

explicado anteriormente en el perfil del desarrollador todo el equipo se va

encargando de una parte, todo esto se hará en el reparto de tareas.

2.4.2. Estimación de tareas.

Las tareas a realizar son las comunes en un proyecto software:

Investigación de soluciones existentes.

o Aplicación propia mediante hoja de cálculo excel.

JUAN FRANCISCO ABÁN FONTECHA

35 Escuela Politécnica Superior de Jaén

o IJF ScoreBoard.

Análisis de requisitos.

Planificación del proyecto.

Selección de personal.

Selección de tecnologías inicial.

Diseño de aplicación web.

o Desarrollo de la arquitectura a implementar.

o Diagrama de clases.

o Modelo entidad relación.

o Interfaz.

Implementación del prototipo, basado en sus funcionalidades.

o Gestión de usuarios.

Registro.

Inicio de sesión de usuarios.

Permisos.

o Gestor de competiciones.

Creación.

Configuración.

Borrado.

o Inserción y borrado de participantes.

o Diseño y evolución del algoritmo de reparto de combates: dada la

particularidad de estas competiciones de Judo necesitaremos un

algoritmo propio que nos ayude en el reparto de los participantes

en tatamis y los combates que van a realizar.

o Desarrollo e implementación de la interfaz.

Pruebas de integridad.

Elaboración de manual de usuario y desarrollo de documentación.

Entrega al cliente y posterior evaluación.

Las tareas, como podemos imaginar, son adaptadas a la dificultad de la

implementación propia del sistema a desarrollar. La mayoría de estas tareas se

realizan de manera paralela permitiendo así una evolución de nuestro proyecto.

JUAN FRANCISCO ABÁN FONTECHA

36 Escuela Politécnica Superior de Jaén

2.4.3. Planificación y estructuración del material

Dado que este proyecto no es de gran envergadura, se utilizará un ordenador

portátil como servidor principal desde donde se lanzará la aplicación web para

realizar las pruebas pertinentes. Cada persona del equipo descrito anteriormente

necesitaría su material propio para trabajar en este caso, cada cual pondría su

propio dispositivo para realizar sus tareas, calculándose su amortización

posteriormente e incluyendola en el presupuesto del proyecto.

Si pensamos en licencias necesarias del software que vamos a usar, el primero

es Netbeans, para el desarrollo del sistema, dada la comunidad activa que tiene y la

cantidad de lenguajes que nos permite desarrollar, además vamos a utilizar

EasyPert, que es libre y tiene gran funcionalidad para planificación. Usaremos

software privativo como es Visual Paradigm y Microsoft Office, por lo que el pago de

sus licencias también tiene un coste que entra dentro del proyecto.

Por último, necesitaremos usar material de oficina, desde folios para la

impresión de algunos esquemas y prototipos para enseñárselos al cliente tanto la

gestión y papeleo propio del proyecto como su documentación. Ahora vamos a

pasar a detallar el coste del material:

Licencias:

o Visual Paradigm: Dado que el proyecto no tiene mucha

dimensión podriamos hacer uso de una licencia única, y que las

personas del equipo que quieran usarlo no lo hagan a la vez, su

precio según la página oficial es de 349$ (285.36€), con un año

de mantenimiento en su versión Standard.

o Microsoft Office: Este software es muy importante para

documentar y planificar, ya que el uso de Excel y Word es muy

extenso y nos permite gran complicidad en diferentes

plataformas. Además, necesitamos comunicarnos de manera

oficial entre los miembros del equipo, todo esto lo conseguimos

con la versión 365 Empresa Premium, su precio es de 10,50€ por

usuario y mes con un compromiso anual. Dado que serían 4

JUAN FRANCISCO ABÁN FONTECHA

37 Escuela Politécnica Superior de Jaén

usuarios haciendo uso de éste, saldría alrededor de 42 €

mensuales por todos los usuarios necesarios.

o Axure RP8 Pro: Este software nos ayuda en el diseño y

prototipado de nuestra aplicación, y al menos necesitamos este el

primer mes para poder realizar una primera muestra que nos

permita enseñarla y validarla con nuestro cliente. Su precio es de

29€ al mes, dado que sería el primer mes de uso.

Material de oficina: Dado que su uso no será excesivo, y que queremos

un proyecto consecuente y comprometido con el medio ambiente,

hacemos un cálculo de una caja de folios, de papel reciclado, y una caja

de bolígrafos, que estén fabricados con material biodegradable.

2.4.4. Reparto de tareas y recursos en el tiempo

Una vez que ya tenemos las tareas y el resto de material aproximado que

tenemos nos queda verlo en el plano del tiempo, lo que nos va a permitir:

Determinar la duración total del proyecto

Ver el camino crítico, es decir, las actividades que no pueden retrasarse

ya que afectaría a la duración del proyecto y esto sería un gran

problema.

Estimamos el inicio desde el 5 de marzo de 2018, cuando empecé a desarrollar

el proyecto, a pesar de que este documento debe hacerse a posteriori, en nuestro

caso se desarrolla en paralelo por falta de tiempo. Éste puede estar sujeto a

cambios, pero no deben ser cambios muy grandes e incluso si es una buena

planificación, como mucho se deberia variar en las holguras, pero sin modificar la

fecha de finalización de éste. La tabla (Figura 13) muestra las tareas a desarrollar,

su duración y si depende de cualquier otra actividad que se deba realizar

previamente:

ID Tarea Duración Dependencia Responsable

A Análisis inicial del problema 80 horas - Gerente

B Investigación soluciones existentes 40 horas A Diseñador

JUAN FRANCISCO ABÁN FONTECHA

38 Escuela Politécnica Superior de Jaén

C Análisis de requisitos 56 horas B Gerente y

Diseñador

D Planificación del proyecto 48 horas B Gerente

E Selección de personal 24 horas D Gerente

F Selección de tecnologías 16 horas C Diseñador y

Desarrollador

G Diseño de aplicación web 40 horas C,D Diseñador

H Implementación del prototipo 120 horas E,F,G Desarrollador

I Pruebas de integración 16 horas H Responsable de

Pruebas

J Elaboración del manual de usuario 16 horas I Desarrollador y

Diseñador

K Entrega al cliente 8 horas J Equipo completo

Fig.20: Tabla de tareas, precedencia y duración del proyecto.

Haciendo uso del software EasyPert vamos a poder realizar nuestro diagrama

Pert (Figura 21) que nos permite calcular la duración total del proyecto, además de

seleccionar el camino crítico.

Fig.21: Diagrama PERT del proyecto.

Como ya hemos visto en la figura 20 la duración esta en horas, lo que nos va a

permitir hacer un cálculo más real a las horas de trabajo, teniendo en cuenta que

cada trabajador tiene una jornada laboral de unas 7 horas y que se trabajan 5 días a

la semana, unas 35 horas semanales aproximadamente.

JUAN FRANCISCO ABÁN FONTECHA

39 Escuela Politécnica Superior de Jaén

En el diagrama PERT (Figura 21) podemos ver que existen 2 caminos críticos,

pero en uno de ellos hay una actividad ficticia de duración 0, por lo que los caminos

criticos son: A-B-C-F-H-I-J-K y A-B-C-G-H-I-J-K. Ambos muy similares, solo cambia

una de las actividades, lo que quiere decir que la única tarea que tiene algo de

holgura es la planificación del proyecto, es decir, esta es la que podría sufrir un

pequeño retraso, de unas 19 horas aproximadamente.

La duración total del proyecto son 376 horas, que hablando de manera laboral

son alrededor de 11 semanas de trabajo, si dejamos una semana para imprevistos,

dada la fecha inicial la entrega del proyecto sería el 28 de mayo de 2018.

2.4.5. Estimación de costos (Presupuesto)

Debemos de contar que el presupuesto para este proyecto, dado que tenemos

un cliente real contando con él y con la federación jiennense de Judo, nos permitirá

ser mas realistas. Ya conocemos la duración del proyecto que son 12 semanas,

viendo que necesitamos 4 personas para realizarlo, contando que éstas tengan su

propio portátil y lo usen en el proyecto, nos evitamos el coste de ordenadores

nuevos, pero no su amortización, que entraría dentro del proyecto.

Coste del equipo: Dado que las 4 personas que necesitamos trabajando en

nuestra empresa son empleadas para un proyecto de desarrollo software, nos

permite fijar sus horarios a través del XVII Convenio colectivo estatal de empresas

de consultoría, y estudios de mercados y de la opinión pública, establecido en el

BOE del martes 6 de marzo de 2018, entrarían en el Area 3 con el lider del grupo

profesional A, mientras que el resto serían del grupo E.

El empleado del grupo A, cobraría 25000€ anuales repartidos en 14 pagas,

según convenio, dado que el proyecto dura 3 meses, tendría como salario base

mensual 1786€ más 892,85€ correspondientes a la paga extraordinaria.

Los empleados del grupo E, cobrarían 14800,66€ anuales repartidos en 14

pagas, según convenio, dado que el proyecto dura 3 meses, tendría como salario

base mensual 1057,19€ más 528,60€ correspondientes a la paga extraordinaria.

JUAN FRANCISCO ABÁN FONTECHA

40 Escuela Politécnica Superior de Jaén

La inversión total por el equipo es de 19902,04€.

Amortización equipo informático: Dado que disponemos de 4 ordenadores

que necesitamos trabajando en nuestra empresa, éstos debido a que los usamos en

el desarrollo del software, deben ser de una calidad media-alta, todos son portátiles

HP con procesador i7-6500U a 2.50GHz y con 8Gb de RAM, su precio en mercado

es de 680€. Un ordenador con éstas características tiene una vida media de 2 años

y nuestro proyecto dura 3 meses, su amortización mensual es de 28,35€ por lo que

la amortización de los 3 equipos durante el tiempo del proyecto es de 255,15€.

Coste de Licencias: Dado que vamos a usar software privativo necesitamos el

pago de una licencia, en el caso de Visual Paradigm la licencia es por un año

285.36€, por lo que añadimos al proyecto el gasto de amortización por el uso

durante éste, dado que haciendo el cálculo de 4 semanas por mes nos da un gasto

de 6€ aproximadamente por semana, al multiplicarlo por 12 semanas de uso, nos

daría alrededor de 72€ totales en el proyecto.

Otro de los software que vamos a usar es Microsoft Office, que se usará

durante todo el proyecto. En total son 42€/mes dado que son alrededor de 3 meses

el coste de su uso sería de 126€.

Coste de material de oficina: El gasto de este material se considera de diario,

por lo que una caja de folios junto con una caja de bolígrafos, material indispensable,

es alrededor de unos 30€.

Coste total del proyecto: Dados todos los costos vistos anteriormente, el

precio total de dicho proyecto es de 20385,19€ por el desarrollo de la aplicación con

manual de usuario, instalación y cursos para aprender a utilizar la aplicación y

posteriores revisiones que permitan mejorar y adaptar algoritmos del reparto de

combates.

Podemos ver a continuación una tabla resumen [Fig. 22] con todos el

presupuesto detallado:

Tipo de coste Descripción Precio base

(mensual)

Cantidad Coste total

Personal Trabajador grupo 1786€ (892,85€ 2 por 3 meses 12501,7€

JUAN FRANCISCO ABÁN FONTECHA

41 Escuela Politécnica Superior de Jaén

A extra)

Trabajador grupo

E

1057,19€

(528,60€ extra) 2 por 3 meses 7400,34€

Amortización Equipo

informatico 28,35€

3 equipos por 3

meses 255,15€

Licencias Visual paradigm 24€ 1 licencia por 3

meses 72€

Microsoft Office 42€ 1 licencia por 3

meses 126€

Axure RP 8 29€ 1 licencia por 1

mes 29€

Material de

oficina Folios y bolis 30€ 30€

Total 20414,19€

Fig.22: Tabla resumen del presupuesto de la aplicación.

3. Diseño

3.1. Arquitectura

Nuestra aplicación dada su naturaleza, tendrá una arquitectura cliente-servidor,

que utiliza servidores web que ofrecen como interfaz distintas web, en nuestro caso

el servidor será un equipo portátil HP con un i7-6500U a 2.50GHz, con 8Gb de RAM.

Servidor: Alberga tanto la base de datos como los servicios que va a ofrecer a

través de una red local en un principio para las pruebas, pero una vez llevado a

producción estos se ofrecerán por medio de internet. Éste espera las conexiones de

los clientes para ofrecerles el servicio.

Cliente: Cada equipo externo que se conecte a la aplicación web, toda su

funcionalidad la realizará en los datos que alberga nuestro servidor, tan solo tendrá

que entrar a la URL de destino donde se publique la web para hacer uso de ésta. Su

conversación se representa en la figura 23.

JUAN FRANCISCO ABÁN FONTECHA

42 Escuela Politécnica Superior de Jaén

Fig.23: Funcionamiento entre servidor y cliente.

Es una arquitectura clásica cliente-servidor, en la cual existe un servidor que

ofrece servicios y varios clientes que se conectan a ella, en un principio pensando en

la cantidad de equipos que suele haber en una competición de Judo vemos que

puede ser alrededor de 200 personas, por lo que no necesitará un servidor que

realice balanceo de carga ni ningun servicio especial que evite la caída de éste. Pero

como extensión es bueno tenerlo en mente para evitar problemas con esto.

La haremos en dos niveles dado que el mismo servidor que utilizaremos para

albergar la aplicación web además albergará la base de datos que localizará en una

determinada ubicación. Está basada en tres capas, la capa cliente, capa de base de

datos y una capa intermedia que albergará la aplicación del servidor, es decir, el

servidor. Su funcionamiento es más complejo de lo que vemos en la figura 16, ya

que el cliente solicita la web a través del navegador a nuestro servidor, éste va a la

base de datos para recoger los datos necesarios para la web, los incrusta en nuestra

aplicación y ésta se envia al cliente para que pueda reproducirla en su navegador en

formato HTML.

El uso de este formato nos da las siguientes ventajas:

Evitamos una sobrecarga en el servidor de Base de datos, ya que es

nuestro servidor el que debe realizar las conexiones.

Dividimos la funcionalidad especializando con capa de presentación, capa

de lógica de negocio y capa de almacenamiento.

3.2. Diagrama de clases

Para la realización del diagrama de clases debemos fijarnos en la figura 19,

ésta representa un primer diagrama de clases sin refinar, es decir, extraído

directamente de nuestros diagramas de casos de uso.

JUAN FRANCISCO ABÁN FONTECHA

43 Escuela Politécnica Superior de Jaén

Algunos cambios respecto al diagrama anterior son por ejemplo, el número de

intentos que lo albergábamos en el sistema, cuando este atributo depende del

usuario y del sistema. Otra cosa que vemos es que se accede de manera directa al

sistema, cuando tenemos aplicaciones que están protegidas y tenemos diferentes

interfaces según los usuarios autentificados.

JUAN FRANCISCO ABÁN FONTECHA

44 Escuela Politécnica Superior de Jaén

Fig

.24: D

iag

ram

a d

e c

lase

s d

el p

roto

tipo

de la

ap

licac

ión

web

.

JUAN FRANCISCO ABÁN FONTECHA

45 Escuela Politécnica Superior de Jaén

Como vemos en la figura 24 tenemos el diagrama de clases final para nuestro

prototipo, vemos ligeros cambios aunque otro importantes como la adición de las

interfaces que nos permiten separar las 3 vistas que vamos a utilizar en la

aplicación. Tenemos una por el tipo genérico de usuarios, y otra por cada usuario

con rol definido como es el Organizador y el Entrenador, pero estas últimas

interfaces heredan de la general todas las funciones que pueden realizar, pudiendo

así una vez estemos registrados, realizar las operaciones propias del rol más las

genéricas. El resto es muy intuitivo ya que el sistema es la figura principal, pero el

usuario solo se comunica con éste a través de las interfaces, lo que permite liberar

un poco a la clase principal de carga de trabajo, el resto de clases son inaccesibles

de manera directa por el usuario, dando un toque de seguridad.

3.3. Modelo Entidad Relación

Nuestro modelo lo vamos a extraer de las entidades de nuestro diagrama de

clases que necesitan persistencia, es decir, que su información necesita ser

almacenada en nuestra base de datos. Si nos fijamos en la figura 24, dada la

simpleza de nuestro diagrama, es fácil entender cuáles necesitan esta función, pero

como ya sabemos no solo basta con ello sino que necesitamos indicar cuál será

nuestra primary key, e indicar qué atributos se pasan en las relaciones o si es

necesario crear una nueva tabla para la relación.

Fig.25: Modelo entidad-relación extraído del diagrama de clases, realizado con Smartdraw.

JUAN FRANCISCO ABÁN FONTECHA

46 Escuela Politécnica Superior de Jaén

Dado el modelo que vemos en la figura 25, podemos extraer las tablas que

necesitamos crear en nuestra base de datos, para ello seguiremos las reglas que

nos ayudarán en el proceso de identificación. Un cambio principal es el de los

permisos, vemos que existen dos relaciones entre Usuario y Competición. Una

indica quién creó esta competición (Organizador) y otra indica quién puede

modificarla (Entrenadores).

Las tablas que extraemos son:

COMPETICIÓN (Nombre, FechaCelebración, Disponibilidad, Usuario)

USUARIO (Usuario, Contraseña, Rol, Email)

COMPETICION_USUARIO_MOD(Nombre, Usuario)

PARTICIPANTE (DNI o COD. Licencia, Nombre, Equipo, Nacionalidad,

FechaNacimiento, peso)

COMPETICION_PARTICIPANTE(Nombre_Competición, DNI o COD.

Licencia)

COMENTARIO (Nombre_Competición, ID, Nombre, Comentario)

La tabla de COMPETICION_USUARIO_MOD podríamos denominarla

Permisos_Usuario, ya que esta tabla indica qué usuarios pueden modificar qué

competiciones, a pesar de que tan solo pueden gestionar participantes. Utilizamos

este modelo ya que la cantidad de datos que vamos a manejar es bastante grande,

tenemos alrededor de unos 1000 competidores a nivel autonómico, hablando en

términos de participantes, si hablamos de cantidad de competiciones se realizan

unas 14 a lo largo de todo el año, de las cuales en paralelo suele haber unas 6 ó 7.

Dado este modelo que es realmente la base para nuestro desarrollo, podemos

ver que abarcamos casi todos los aspectos necesarios, pero de cara a la

funcionalidad completa de nuestra aplicación me di cuenta de que nos faltaba una

figura realmente importante, que eran los combates, esta entidad nos permite

almacenar quién se enfrenta a quién y cómo va avanzando nuestra competición.

JUAN FRANCISCO ABÁN FONTECHA

47 Escuela Politécnica Superior de Jaén

En el momento del análisis no la tuvimos en cuenta, por lo que podemos

imaginar que esto puede llegar a ser un grave problema para nuestro desarrollo,

pero realmente podemos hacer una adición al final, permitiéndonos una

funcionalidad casi completa, exceptuando nuestro reparto de los participantes en

combates.

Nuestra nueva tabla tendría los siguientes atributos:

COMBATES (Nombre Participante, Nombre Competición, Nivel)

En el nivel pondríamos si se trata de un combate de grupos o un combate más

adelantado, como pueden ser octavos o cuartos de final, semifinales o final.

3.4. Interfaz

Para realizar el diseño de nuestra interfaz, lo primero que debemos es

responder a una serie de preguntas, que a lo largo de este documento ya podemos

hallar la mayoría de las respuestas:

1. ¿Qué desea el usuario que la aplicación haga?

2. ¿Cómo entra en la tarea diaria de los distintos actores?

3. ¿Qué nivel, computacionalmente hablando, tienen los usuarios?

4. ¿Qué estilos de aspecto y comportamiento son los deseados por los

usuarios?

Son solo 4 preguntas de las muchas que podemos realizarnos, pero con ellas

extraeremos una interfaz para nuestra aplicación, para ello contaremos, cómo no,

con la inestimable ayuda de nuestro cliente y algunos de los/as profesores/as

encargados de introducir datos en ella. Vamos a responder una a una a todas las

preguntas, consiguiendo con sus respuestas sacar diferentes partes o patrones de

nuestra aplicación.

a. ¿Qué desea el usuario que la aplicación haga? Esto nos dará la

funcionalidad, como ya hemos descrito en apartados anteriores, además de

representarlo con los casos de uso, vemos que puede realizar un usuario en

nuestra aplicación:

JUAN FRANCISCO ABÁN FONTECHA

48 Escuela Politécnica Superior de Jaén

i. Inicio de sesión: Un usuario con usuario y contraseña podrá

iniciar sesión, para acceder a un menú personal según su rol:

Menú Organizador: Éste podrá gestionar las

competiciones, es el encargado de crearlas,

modificarlas, eliminarlas e incluso programarlas para

que se muestren como visibles en la web.

Menú Profesor: Este tan solo podrá acceder a las

competiciones para añadir o quitar participantes.

ii. Ver competiciones: Todos los usuarios, con y sin login,

podrán ver las competiciones pasadas y aquellas que están en

ese momento.

iii. Comentar competiciones: Al igual que la anterior, esta tarea

es para todo tipo de usuarios, existirá un filtro que evitará las

palabras mal sonantes, así como los insultos en cualquier

idioma.

iv. Ver estadísticas: Esto estará disponible con fichas similares a

las de competición, permitiendo el acceso a participantes y a

equipos, ya sea por nacionales o por centros deportivos,

permitiendo extraer de los datos que mantiene nuestra web de

combates ganados, puntos conseguidos, media de puntos por

combate, derrotas consecutivas, etc.

b. ¿Cómo entra en la tarea diaria de los distintos actores? Conociendo la

actual labor de nuestro cliente y su realidad, al igual que la del conjunto de

entrenadores que dedicarían su tiempo a añadir participantes en las

competiciones, conocemos que es una labor tediosa, actualmente, para

ellos el hecho de tener cada cierto tiempo insertar todos los datos de los

participantes.

Desde nuestra aplicación debemos evitar convertir esta tarea en el mismo

tedio, consiguiendo que sea algo más bien casi automático, actualizando

datos cada poco tiempo. Para ello contamos con la memoria de

participantes que agrega cada usuario, al insertar nombre o ID de ficha de

JUAN FRANCISCO ABÁN FONTECHA

49 Escuela Politécnica Superior de Jaén

participante de manera automática nos aparecerán los datos del

participante, teniendo que pulsar tan solo una tecla para añadirlo.

c. ¿Qué nivel, computacionalmente hablando, tienen los/as usuarios/as?

Entre quienes conocemos, sabemos que el nivel informatico dentro de los

futuros usuarios de nuestra aplicación es muy variado, por lo que es

recomendable que sea una aplicación fácil e intuitiva, permitiéndonos así

que todos aquellos usuarios/as que vayan a acceder a nuestra aplicación

puedan hacerlo sin ningun tipo de problema, debemos, cómo no, realizar un

pequeño manual que ayude a aquellas personas con mayor problema.

d. ¿Qué estilos de aspecto y comportamiento son los deseados por

los/as usuarios/as? Hasta ahora, como bien vimos en el apartado 1.2, el

aspecto del que disponemos es una tabla de excel, debemos crear un

formato atractivo y con colores no muy llamativos, ya que las competiciones

pueden durar horas en las cuales los propios usuarios, ya sea organizador o

público, deben estar atentos a sus pantallas por lo que debe evitar el

cansancio provocado por este tipo de colores.

A continuación elaboro un prototipo de la interfaz con la aplicación RP Axure

Team Edition, que nos ayudará no solo con el aspecto y la visualización sino con la

funcionalidad que tendrá nuestra aplicación web, éste será validado por el cliente

antes de finalizarlo y exponerlo en este documento, donde explicaremos los bocetos

realizados y su funcionalidad con esta aplicación.

JUAN FRANCISCO ABÁN FONTECHA

50 Escuela Politécnica Superior de Jaén

Fig.27: Pantallas principales de los prototipos de diseño de la interfaz validados por el cliente.

Como podemos ver, en la figura 27, aparece la interfaz principal de nuestra

aplicación, tanto en formato móvil como en formato ordenador. Éstas constan de

partes similares que son, Logo principal, Menú y, además, en la segunda forma

podemos ver un apartado de novedades donde podremos ver noticias importantes

sobre el Judo, y un apartado de contenido donde se irá modificando según vayamos

navegando por nuestra web.

El menú principal irá cambiando dependiendo de si hemos iniciado sesión con

el rol de entrenador u organizador [Fig. 28].

En el caso del árbitro, verá el mismo menú disponible para el entrenador, solo

que al entrar en la opción modificar competición tan solo le permitirá acceder al

tatami asignado para modificar dicha puntuación.

Fig.28: Menús con las funcionalidades diferenciadas según el rol con el que iniciemos sesión.

Menú principal

Novedades

Contenido

JUAN FRANCISCO ABÁN FONTECHA

51 Escuela Politécnica Superior de Jaén

Fig.29: Interfaz de la función de ver o listar competiciones.

La funcionalidad de ver o listar competiciones [Fig. 29] consta de las mismas

partes que ya hemos explicado en la interfaz principal de nuestra aplicación, solo

que si estamos registrados con rol de organizador, accederemos para ver dos iconos

diferentes al lado de cada competición, que nos permitirá editar y eliminar las

competiciones. Si estamos registrados como profesores tan solo veremos el icono

de edición, que nos permitirá añadir y quitar participantes de nuestro propio equipo.

Fig.30: Interfaz de inicio de sesion de la aplicación.

JUAN FRANCISCO ABÁN FONTECHA

52 Escuela Politécnica Superior de Jaén

El inicio de sesión [Fig. 30] se realiza a través de un formulario dónde debemos

introducir el usuario y la contraseña, con el cual no descartamos usar la verificación

captcha para aumentar la seguridad de nuestro sistema, pero en un principio sería

un inicio simple. También nos permite registrarnos, pero dicho registro debe ser

autorizado por un usuario con el rol organizador.

Fig.31: Formulario de creación de una nueva competición.

En el formulario de creación de una competición [Fig. 31], estará limitado al uso

con un ordenador por motivos de seguridad, disponemos de la introducción de los

parametros acordados, como nombre, será ID de la competición, su fecha de la

celebración que nos permite la elección a través de un calendario, la opción de estar

disponible o no en la web, la localización del evento y, por último, añadir los

participantes, éste consta de dos métodos diferentes:

1. Agregar participantes documento: Mediante un documento CSV

podremos insertar la información de estos participantes que estarán en

cada competición.

JUAN FRANCISCO ABÁN FONTECHA

53 Escuela Politécnica Superior de Jaén

2. Agregar participantes formulario: Éste nos permitirá introducir uno a uno

los datos de las personas que participarán en la competición que estamos

creando.

Ambos métodos estarán disponibles tanto para el organizador como para el

entrenador.

Las funcionalidades disponibles para todos los usuarios son Comentar

competiciones y Ver competiciones. Éstas están en el menú principal siempre

para permitir a cualquier tipo de usuario hacer uso de ésta.

Fig.32: Contenido de la vista de una competición.

En la figura 32, vemos el contenido de la ficha que nos aparecerá una vez

hagamos clic en una de las competiciones, como vemos. Cada competición se

divide en tatamis y en la fase final, en éstas podremos seguir el progreso de la

competición, mediante tablas donde encontramos los resultados de los combates,

las vistas del tatami y de la fase final se diferencian en el tipo de tabla que usan,

debido a que en los tatamis suele salir en formato liga, en cambio la fase final solo

en aquellas competiciones que comiencen a combatir a partir de octavos de final, es

decir 16 participantes.

JUAN FRANCISCO ABÁN FONTECHA

54 Escuela Politécnica Superior de Jaén

En este apartado de las competiciones podremos ver en la parte inferior, si

hablamos de la versión de ordenador, o un pequeño enlace a una página nueva en

el formato móvil, donde accederemos a los comentarios de la competición y aquí

podremos junto con un nick y con las normas básicas de respeto y cordialidad

establecidas, leer y escribir críticas sobre la competición que estamos observando.

Ádemas de poder acceder a las fichas personales de cada participante con sus

estadísticas que se generan de manera automática a partir de las competiciones en

las que participe que se encuentren en nuestra aplicación [Fig. 33].

Fig. 33: Contenido de las fichas de Tatami y participante Versión Móvil.

De las fichas tatami y participante tan solo enseñamos la versión movil dado

que el contenido es exactamente el mismo en ambas, para acceder a la versión

completa de nuestro prototipo de interfaz puede acceder a traves del enlace

siguiente: https://goo.gl/2UAvMk.

4. Implementación

4.1. Framework de desarrollo web

El framework seleccionado será symfony, con la versión 1.4.20 , la elección de

éste no es casual, sino que despues de investigar diferentes tipos de lenguajes y

diferentes framework para el desarrollo de nuestra aplicación, se decide utilizarlo por

las siguientes razones:

Proyecto con mucha lógica de negocio

JUAN FRANCISCO ABÁN FONTECHA

55 Escuela Politécnica Superior de Jaén

Código necesario ligero, legible y efectivo

Interacción con usuario mediante Ajax

Desarrollo rápido pero robusto

Conocimiento de lenguaje PHP avanzado

Gran comunidad de apoyo

Como podemos ver, todas estas razones son las que nos animan a desarrollar

la aplicación web con symfony, el hecho de tener un código ligero, legible y efectivo,

es dado que tenemos una lógica de negocio cambiante, es decir, que son normas

federativas las que hacen cambiar la forma de reparto de combates lo que nos

puede llevar a tener que cambiar éste en un par de años pudiendo gracias a nuestro

framework cambiar sólo lo necesario.

Como apoyo utilizaremos también las herramientas de bootstrap, lo que nos

permite un diseño más elegante y con mayor potencial a la hora del desarrollo de

nuestra aplicación web, es considerada el mayor conjunto de herramientas para la

edición y el desarrollo de sitios web.

Como servidor web dado que usamos NetBeans, como ya comentamos en

apartados anteriores, usaremos el servidor por defecto que éste trae, que es Apache

Tomcat en su versión 8, éste no es necesario cambiarlo cuando pasemos a

producción, pero sí recomendable utilizar otro Web Server como Glassfish.

4.2. Tecnología de Base de datos

La tecnología a utilizar en este aspecto será MySQL, con el driver que nos

permite NetBeans, para conectarlo con nuestro proyecto de symfony, lo que nos

permitirá hacerlo más accesible, además de permitir dar una mayor portabilidad

cuando decidamos hacer pruebas y pasarlo a producción. Al igual que el framework

usamos éste debido a que necesitamos una herramienta bastante potente y que

admita un número alto de conexiones y transacciones, en nuestro caso la mayor

parte consultas, con el sistema. Por ello debemos usar una tecnologia fiable y

robusta que nos lo permita.

JUAN FRANCISCO ABÁN FONTECHA

56 Escuela Politécnica Superior de Jaén

[DMJDBC] Para ello utilizaremos el driver de JDBC que tendremos que

descargar del siguiente enlace:

http://dev.mysql.com/downloads/connector/j/5.1.html

Una vez descargado tan solo tendremos que añadirlo a las bases de datos de

nuestro software, NetBeans, y configurarlo como lo pone en la referencia de nuestra

bibliografía.

4.3. Otras Tecnologías

Además de la tecnología del framework y de la tecnología utilizada en nuestra

base de datos, tenemos otras que acompañan y nos hacen más fácil el camino al

exito de nuestro proyecto, y a continuación detallamos algunas de ellas:

Twig: Es un motor de plantillas que es mucho más potente que las plantillas

base que podemos usar en PHP. Nos permite elaborar las partes comunes que se

irán replicando a lo largo de la aplicación, es decir, pie y cabecera de nuestra

aplicación que son comunes en todas las páginas y adición de todos los ficheros css

y js que necesitamos para el buen funcionamiento de ésta.

En symfony se usa como una extensión más y nos evita tener que crear un

controlador de excepciones en PHP. Twig también puede hacer cosas que PHP no

puede, como controlar el espacio en blanco, cuenta con un recinto de seguridad,

escape de salida automático y contextual e incluye funciones personalizadas y filtros

que sólo afectan a las plantillas.

Composer: Es un gestor de paquetes a nivel aplicación para PHP, es el que

nos ha ayudado en todo el proceso de creación de nuestro proyecto con symfony,

junto con Cygwin hemos podido instalar todo lo necesario dentro de nuestro

proyecto con línea de comandos simples [Figura 34].

Fig. 34: Línea de comandos de cygwin, junto con algunos comandos simples de composer.

JUAN FRANCISCO ABÁN FONTECHA

57 Escuela Politécnica Superior de Jaén

Bootstrap: Es un framework web que contiene plantillas de diseño con

tipografía, formularios, botones, cuadros, menús de navegación y otros elementos

de diseño basado en HTML, CSS e incluso algunas partes de JavaScript. Su

principal misión es facilitar el desarrollo del front-end a diferencia de muchos otros

framework web.

4.4. Cambios en el diseño durante la implementación

Como es habitual en todo proyecto de desarrollo de una aplicación web,

ocurren cambios, ya sean debidos a las sugerencias o necesidades del cliente o a la

naturaleza de la aplicación, así como a falta de planificación en lo que respecta a las

tareas que llevamos a cabo durante éste.

En mi caso, por la naturaleza sencilla de la aplicación, vimos necesarios

algunos datos más en cuanto a información almacenada se refiere, ya que en un

principio solo queríamos tener datos básicos de los/as usuarios/as, que van hacer

uso de nuestra aplicación. Pero tras pensar un momento en la seguridad, se me vino

a la cabeza el momento en que olvidamos la clave y/o usuario y necesitamos entrar

a la web. Gracias a esto, vi la necesidad de almacenar en la tabla usuarios junto a

nombre de usuario y contraseña, un correo electrónico.

Además, repasando la estructura para elaborar nuestro algoritmo, vimos que

no tomamos en cuenta si en ese campeonato concreto el participante es cabeza de

serie o no, para ello sería bueno contar con un atributo booleano (Verdadero o falso)

que nos indicará si realmente lo es para facilitar el trabajo a la hora de desarrollar

nuestro algoritmo.

Por último pero no menos importante dado uno de los requisitos que deseaba

el cliente desde un inicio y su falta de tiempo para poder actualizar la puntuación en

todos los combates que se realizan en un tatami, nos dimos cuenta que había una

figura como es el árbitro de mesa, que habitualmente cuenta con 2 personas por

tatami, que se podía tener en cuenta para realizar este trabajo y poder hacerlo en

tiempo real, por lo que nos surge un nuevo rol.

Como es habitual en el desarrollo tradicional de software, todos estos cambios

ya se ven en la documentación anterior, quedando actualizada ésta y dando la visión

JUAN FRANCISCO ABÁN FONTECHA

58 Escuela Politécnica Superior de Jaén

final o actual de nuestra aplicación. No solo tenemos cambios como éstos, sino que

en el propio análisis se pueden cometer errores dejando fuera de esta cosas

importantes, como puede ser alguna entidad de base de datos, como en nuestro

caso, que al implementar o querer hacerlo de una funcionalidad concreta nos damos

cuenta de que falta dicha figura.

5. Pruebas

Realizar pruebas reales ha sido imposible por falta de tiempo, debido al tiempo

necesario de desarrollo de la aplicación y a las fechas en las que se ha desarrollado

fue imposible terminar las funcionalidades previstas para hacer pruebas en un

entorno real.

Pese a todo se realizaron pruebas unitarias que nos ayudan a verificar la mayor

parte de casos posibles de uso en cuanto a las distintas funcionalidades se refieren

en él, y pruebas de integración que nos ha permitido ver todo esto en conjunto. Se

han realizado las pruebas a través tanto del ordenador utilizado como servidor como

desde un terminal móvil para ver la capacidad responsive del diseño. Esta capacidad

no es más que la rapidez de respuesta y la calidad de adaptarse a diferentes

pantallas de nuestra aplicación web.

Futuras pruebas a realizar posterior al desarrollo, y/o elaboración de la

documentación, que se desean realizar tanto por parte del desarrollador como por

parte del cliente son en un entorno real tanto pruebas de estrés, es decir someter a

la aplicación a un número ilimitado de conexiones de terminales para ver la

respuesta y el almacenamiento de datos de varias competiciones de ámbito real.

Estas pruebas nos ayudarán a verificar tanto el diseño de la propia aplicación

como del servidor que las contiene, evitando así fugas de información debido a que

contendrían, de hacer un uso real de ésta en competiciones oficiales, información

confidencial como pueden ser datos sobre las personas que participan en ella, así

como alguna información sobre los usuarios de la web, pudiendo poner en peligro la

integridad de estos datos e incurriendo en un delito según la LOPD1.

1 Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal (Enlace)

JUAN FRANCISCO ABÁN FONTECHA

59 Escuela Politécnica Superior de Jaén

5.1. Experiencia con cliente

Tras acordar varias reuniones con el cliente, pude comprobar personalmente

un trato directo y cercano, la experiencia es enriquecedora a la vez que confusa, ya

que por parte del cliente podemos ver cómo tiene una idea preconcebida de todo

aquello que desea para la aplicación. Desde nuestra posición como desarrolladores

y basándome en mi propia experiencia y capacidades debemos asentar estas ideas

en una base real y posible de todo aquello que se nos pide desarrollar.

Finalmente, y sin muchas incidencias, pudimos comprobar como un primer

diseño fue aceptado tanto visual cómo funcionalmente y que cuadraba tanto en la

idea del cliente como del propio desarrollador, tras contarle que necesitaba que

hiciera la aplicación. Se decidió por seguir con un diseño tradicional, presentar una

vez acabada la fase de diseño el prototipo realizado con Axure RP al propio cliente,

donde, con gran satisfacción, fue recibida la idea.

6. Resultados

Tras la fase de implementación hemos conseguido algunos de los requisitos

planteados, para ver realmente el alcance vamos a contar con 2 tablas que divida en

requisitos funcionales y no funcionales, y evaluar en conjunto si realmente se han

llegado a cumplir las expectativas y dar una valoración final de manera personal del

trabajo.

Requisito Grado de cumplimiento

RF1: Necesita poder entrar a la

aplicación para ver los resultados de los

combates y seguir la competición.

Se ha llegado a cumplir la primera parte que nos

permite el acceso a la aplicación para ver la

información de la competición

RF2: Necesita entrar a la aplicación y

ver el historial de competiciones además de

una clasificación de resultados por equipos.

Ocurre como la anterior en la que nos permite

acceder a la aplicación y ver el historial de las

competiciones pero no la clasificación por

equipos.

RF3: Durante la competición podrá

dejar sus comentarios sobre los combates.

Tiene la arquitectura preparada para hacerlo,

pero no terminar de hacer bien la inserción de

comentarios.

JUAN FRANCISCO ABÁN FONTECHA

60 Escuela Politécnica Superior de Jaén

RF4: Necesita registrarse en la

aplicación para utilizarla con este rol

(Entrenador).

Este lo cumple a la perfección permitiendonos el

registro y uso de la aplicación con este rol

RF5: Necesita iniciar sesión para

modificar datos personales.

Lo cumple permitiendo ver información personal

y modificarla si es necesario

RF6: Necesita subir información sobre

participantes de los que se encarga para

agregarlos a una competición, creada en la

aplicación previamente.

Puede acceder a dicha funcionalidad y permite

agregar información de participantes a las

competiciones.

RF7: Necesita crear eventos en la

aplicación para que el resto de usuarios

puedan acceder a ellos (como

Administrador).

Puede crear dichos eventos o competiciones con

información mediante un formulario y

previamente si ha accedido con usuario y

contraseña con rol Administrador.

RF8: Necesita configurar los eventos

para poder adaptarlos a las necesidades

(como Administrador).

Puede configurar estos eventos aunque

actualmente solo dispone de un método de

reparto de combates.

RF9: Podrá subir un fichero CSV con

información de participantes para añadirlo a

una competición (como Administrador).

Esta funcionalidad está implementada pero tan

solo probada con ficheros pequeños de

información.

RF10: Podrá exportar datos a ficheros

PDF con las estadísticas y resultados de las

competiciones para enviárselo

posteriormente a quien corresponda,

almacenarlos, etcétera.

No existen dichas estadísticas ni dicho método

de exportación, queda pendiente para

implementación futura.

RF11: Dispondrá de un módulo de

inicio de sesión para que los diferentes

usuarios puedan acceder a funciones

especiales.

Dispone de dicho módulo y el modo de elección

de rol es sencillo.

RF12: Mostrará resultados de una

competición al hacer clic sobre ella en la

pantalla principal.

Muestra la información sobre la competición en

la que hacemos clic y sus resultados.

RF13: Será capaz de, con los datos de

las personas participantes y el tipo de

competición, ofrecer el reparto de combates

de manera automática para la celebración de

la misma.

Actualmente cuenta con dicho reparto

automatico de combates, a pesar de que

necesita ser probado ante una cantidad de datos

mas elevada.

RF14: Generará estadísticas de cada

competidor para permitir evaluar su

rendimiento.

La aplicación no genera estadísticas.

JUAN FRANCISCO ABÁN FONTECHA

61 Escuela Politécnica Superior de Jaén

Fig. 35: Tabla de cumplimiento de requisitos funcionales.

Como podemos observar y haciendo un balance del cumplimiento de requisitos

funcionales que establecemos en la tabla, podemos decir que se ha realizado un

buen trabajo pero hay falta de tiempo a la hora de desarrollar e implementar las

distintas funcionalidades descritas.

Pasamos a los requisitos no funcionales y vemos el grado de cumplimiento de

éstos, para poder definir finalmente una valoración global del trabajo realizado en

este desarrollo:

Requisito Grado de cumplimiento

RNF1: El sistema debe ser accesible para

personas con problemas de visión, desde

simple daltonismo a pérdida total, incluyendo

atributos para ser leídos por lectores de

pantalla y configuración de alto contraste.

Nuestra aplicación cuenta con los atributos

necesarios para ser leído por lectores, así como

permitir un alto contraste.

RNF2: El sistema debe permitir iniciar sesión

con respuesta inferior a 30 segundos.

Pese a necesitar más pruebas con este módulo y

con más conexiones entrantes la respuesta del

login es inferior a 30 segundos.

RNF3: El sistema bloqueará temporalmente

una cuenta si equivoca el inicio de sesión 3

veces durante un minuto, y lo hará de manera

definitiva tras 12 intentos fallidos, es decir 3

bloqueos temporales.

Nuestra aplicación realiza un bloqueo estandar

propio del modulo de login de symfony.

RNF4: El sistema debe ser accesible desde

cualquier tipo de dispositivo, desde un

smartphone a un PC de sobremesa.

Como comentamos anteriormente la aplicación

cuenta con un diseño responsive por lo que

cumple con este requisito.

RNF5: El sistema debe ser capaz de operar

adecuadamente con unas 300 personas

conectadas de manera concurrente.

No se han realizado pruebas de este tipo por

carencia de dispositivos o posibilidad de realizar

las pruebas en entorno real.

RNF6: Todas las comunicaciones externas

entre servidores de datos, aplicación y cliente

del sistema deben estar cifradas.

El intercambio de información en dichas

comunicaciones se realiza encriptado evitando

problemas de seguridad.

RNF7: El tiempo de aprendizaje del sistema

por un usuario deberá ser inferior a 2 horas.

Con las funcionalidades con las que cuenta

nuestra aplicación actualmente el tiempo inferior

de aprendizaje es de dos horas, pero seria

necesario realizar más pruebas de este tipo.

RNF8: El sistema debe contar con manuales

de usuario estructurados adecuadamente

Actualmente el sistema cuenta con dichos

manuales que nos enseñan a utilizar la

JUAN FRANCISCO ABÁN FONTECHA

62 Escuela Politécnica Superior de Jaén

aplicación de manera adecuada, y con su diseño

totalmente actualizada.

RNF9: El sistema debe proporcionar

mensajes de error que sean informativos y

orientados a usuario final.

El sistema muestra mensajes de error

orientativos pero es necesario realizar pruebas

en un entorno de producción.

RNF10: El sistema debe poseer interfaces

gráficas bien formadas.

Las interfaces han sido diseñadas siguiendo

estandares del framework de desarrollo utilizado.

Fig. 36: Tabla de cumplimiento de requisitos no funcionales.

Viendo ambas tablas y contando con que la mayoría de requisitos no

funcionales cumple, nos damos cuenta de que hay grandes ausencias que permiten

agujeros de seguridad en nuestra aplicación y ralentizan el tiempo de aprendizaje de

la misma. En general podríamos decir que cumple con la mayor parte de los

requisitos fijados en un principio con nuestro cliente, pero que al contar con un

diseño rígido hay algunas funcionalidades necesarias que están inacabadas.

7. Conclusiones

En este trabajo se ha desarrollado una aplicación web con el framework symfony de

PHP, esta nos permite almacenar y organizar una competición de Judo de una

manera simple y con cierta rapidez.

Actualmente para esto se utilizaba un pequeño programa en una excel o una

aplicación bastante compleja, nuestra aplicación ofrece simpleza y bastante

potencial respecto a las anteriores, ya que nos da un sitio donde almacenar y

reutilizar información de una manera rapida, y la posibilidad de hacer un reparto de

combates rapido sin tener que preocuparnos de ciertos aspectos.

Ha quedado pendiente algunas funcionalidades como el streaming de los combates

a traves de la web y otras como poder editar tu propio metodo de reparto o incluir a

participantes que estan solos en su categoria poder incluirlos de manera temporal en

otra.

Este proyecto espero poder continuarlo de mano tanto de mi tutor de TFG como de

mi cliente para que este hijo nacido de un trabajo fin de grado siga creciendo y el día

de mañana pueda servir para un control de esas competiciones de Judo a las que

gracias a éste me he aficionado.

JUAN FRANCISCO ABÁN FONTECHA

63 Escuela Politécnica Superior de Jaén

8. Bibliografía

[STSE] Shu Taira. La esencia del judo. Satori Ediciones, 2010. ISBN 978-84-936198-8-6

[IJFSOR] IJF Sport and Organitation Rules, March 2017.

[IJFHB] Ippon.org draw - IJF Handbook Versión 1.00

[RFENC] Normativa Campeonato de España de Judo de Veteranos 2018.

[PPSGR] Planificación del proyecto de software. Gerardo Ramírez Hernández. Enlace

[TECPSUA] Diapositivas Técnicas de estimación de costos de proyectos software.

Universidad de la Amazonia.

[PFPTINW] Perfiles y sus funciones en proyectos de TI. Articulo web northware. Enlace

[SLOFRLW] Symfony2 El libro oficial. Fabien Potencier y Ryan Weaver. Libros Web. Enlace

[BOECCEC] BOE 6 de marzo de 2018. Incluye Convenio Colectivo de empresas de

consultoría. Documento oficial. Enlace

[WIKIDINU] Wikipedia. Diseño de Interfaz de Usuario. Enlace

[ECURDIU] Ecured Diseño de Interfaces de Usuario. Enlace.

[MCMAWP] Mauriciocandamil. Axure RP Diseño wireframes y prototipos. Enlace.

[WNBPLS] WikiNetBeans. Plugin Symfony. Enlace.

[DMJDBC] DevMedia. Instalar y configurar driver JDBC para MySQL. Enlace.

[GGSYBO] Gitnacho github. Symfony books. Enlace.

8.1. Bibliografía Complementaria

[LPLVP] Lista de Precios Licencias de Visual Paradigm. Enlace

[LPLMO] Lista de Precios Licencias de Microsoft Office. Enlace

[CMACS] CCM Arquitectura cliente servidor 3 niveles. Enlace

[LWCES] Libros web. Crear esqueleto de symfony. Enlace.

[DONBMS] Documentación oficial NetBeans. Configurando My SQL Server. Enlace.

[DOBSEA]. Documentación oficial Bootstrap. Dar estilos a mi aplicación web. Enlace.

JUAN FRANCISCO ABÁN FONTECHA

64 Escuela Politécnica Superior de Jaén

ANEXO I. Manual de usuario.

MANUAL DE USUARIO JudoKan Apps.

Fig. 1: Simulación de nuestra aplicación en dos dispositivos diversos.

Bienvenidos y bienvenidas al mundo de JudoKan Apps. Esta aplicación tiene un propósito

claro y es ser referente en el mundo del Judo como organizador de competiciones,

permitiendo así desde Organizadores y Organizadoras, como a Entrenadores y

Entrenadoras, pasando por todos y cada una de las personas que haga uso de esta

aplicación un uso fácil y sencillo haciéndolo extensible a otro tipo de competiciones

deportivas.

Como creador de la aplicación y desarrollador de esta te doy las gracias por hacer uso de

ella y acceder al manual de buen uso de esta misma. A continuación presentamos un

pequeño índice que permita guiarse a través de este manual de manera eficaz.

Autor: Juan Francisco Abán Fontecha.

Versión: 1.0

* Este manual esta sujeto a cambios para cualquier modificación ruego me escriban un email a

[email protected] para proceder a mejorar este manual. Muchas gracias.

JUAN FRANCISCO ABÁN FONTECHA

65 Escuela Politécnica Superior de Jaén

ÍNDICE MANUAL DE USUARIO

1. Descripción de la aplicación ......................................................... 65

2. Instalación de entorno web privado .............................................. 66

3. Registro de usuarios ..................................................................... 67

a. Edición de información ............................................................ 68

4. Creación de competiciones .......................................................... 68

5. Añadir participantes ...................................................................... 70

a. Añadir un participante ............................................................. 70

b. Adición masiva de participantes .............................................. 70

c. Selección participantes existentes .......................................... 71

6. Reparto de combates ................................................................... 72

7. Introducción de resultados............................................................ 74

JUAN FRANCISCO ABÁN FONTECHA

66 Escuela Politécnica Superior de Jaén

1. Descripción de la Aplicación.

Está aplicación web actualmente solo es accesible desde la red interna del mismo

dispositivo donde la despleguemos, es fácilmente exportable a un entorno web, pero a

continuación vamos a explicar cómo instalar el entorno web privado, es decir en una red

interna de nuestro dispositivo adecuada para el buen uso de esta.

¿Pará que usamos nuestra aplicación?

JudoKan Apps. Sirve como organizador de competiciones de Judo, nos permite realizar

un reparto de los combates automatizado una vez que tenemos toda la información de

participantes y de la propia competición.

¿Desde dónde es accesible?

Para su desarrollo se ha utilizado un lenguaje que nos permite que el peso de la

aplicación recaiga en el servidor, que es el dispositivo que alberga el servidor web, por lo

que se podrá acceder desde cualquier dispositivo con una calidad media sin problemas

de rendimiento.

En cuanto a la estructura visual se refiere usamos el sistema grid de Bootstrap, que es

un framework HTML, CSS y JS, que permite a nuestra aplicación una rápida adaptación

a diferentes dispositivos tanto ordenadores como móviles.

¿Es Accesible, en cuanto a diferentes capacidades se refiere?

En la creación de dicha aplicación web se ha intentado respetar todas las normas para

que permita a personas con diferentes capacidades hacer uso de nuestra aplicación sin

tener ningún tipo de problemática. Se seguirá trabajando en ello y evolucionando en las

siguientes versiones para permitir un uso correcto por parte de cualquier tipo de usuario.

¿Permite reutilizar información de participantes?

No solo podemos usarla como organizador y para hacer un reparto automático, sino que

dispone de una base de datos que nos permite tanto el almacenaje de la información

como su posterior uso en diferentes competiciones.

¿Podemos visualizar la competición en streaming?

Dada que es la primera versión de nuestra aplicación y sobre todo se va a utilizar cerca

del entorno del dispositivo que la despliegue en el servidor web privado, no admite esa

posibilidad, pero en un futuro pretende albergar esta y muchas otras funcionalidades que

permitan hacerla crecer y alcanzar un nivel alto en cuanto a funcionalidades de esta

envergadura.

JUAN FRANCISCO ABÁN FONTECHA

67 Escuela Politécnica Superior de Jaén

2. Instalación de entorno web privado

A pesar de no ser este el lugar adecuado de explicar cómo utilizar una aplicación para

instalar en nuestro propio dispositivo un entorno web local vamos a explicarlo para hacer

uso de nuestra aplicación en esta versión, dado que aún no está desplegada en un

entorno web accesible desde cualquier red.

Podemos usar cualquier aplicación que conozcamos como WAMP, LAMP, BitNami,

MAMP, etc.

En nuestro caso nos hemos decantado por una aplicación sencilla de instalar y de

proceder a su uso, esta es XAMPP. Incorpora un servidor Apache, un sistema gestor de

bases de datos MySQL y lenguajes como PHP y Perl. Además, ofrece soporte para

gestionar cuentas FTP, acceso a bases de datos mediante PHPMyAdmin, bases de

datos SQLite y varias otras características.

De todas estas características nosotros tan solo haremos uso de su servidor Apache y

de su entorno de base de datos MySQL. Para proceder a su instalación tan solo

descargamos el ejecutable del siguiente enlace (apachefriends.org).

Fig. 2: Pantalla del proceso de instalación donde podemos elegir que deseamos instalar de XAMPP.

Las propiedades se dejan por defecto, durante el proceso de instalación, podremos no

instalar algunas de sus características como TomCat, Filezilla, Mercury e incluso

Webalizer, ya que no son necesarias para nuestra aplicación.

Una vez instalada necesitamos dar dos pasos:

1. Copiar la carpeta de nuestra Web: Nuestra carpeta se denomina TFG y debemos

copiarla en el entorno accesible por el servidor web local que acabamos de instalar

(XAMPP), si es Windows la ruta es: C:/xampp/htdocs.

2. Crear nuestra base de datos: Debemos crear la base de datos a partir de la

estructura junto con el fichero sql que disponemos junto a nuestro documento.

Debemos lanzarlo desde http://localhost/phpmyadmin/server_sql.php.

Una vez que tengamos esto accederemos a nuestra web desde http://localhost/TFG/web/.

JUAN FRANCISCO ABÁN FONTECHA

68 Escuela Politécnica Superior de Jaén

3. Registro de usuarios.

Nuestra aplicación no necesita que dispongamos de un usuario registrado para poder

visitarla, pero sí para hacer uso de todas sus funcionalidades, disponemos de 3 roles

diferentes de usuarios registrados pero solo dos son seleccionables al crear nuestro usuario.

Para poder crear nuestro usuario debemos irnos al menú superior y seleccionar la opción

Iniciar sesión.

Fig. 3: Menú principal que nos permite ver las 3 opciones de nuestra aplicación para un usuario sin registrar.

En esta nueva página dispondremos de un pequeño enlace que debemos seleccionar para

poder registrarnos, al seleccionarlo nos llevará a un pequeño formulario donde debemos

rellenar sus campos y seleccionar nuestro rol.

Fig. 4: Pantalla de inicio de sesión y el formulario de registro para usuarios nuevos.

Los dos Roles son Profesor (Entrenador) que permite ver las competiciones y agregar a los

participantes. Y el rol de Arbitro que solo permite modificar los resultados de las

competiciones**.

Una vez que aceptamos los terminos de uso y que damos al botón de registro ya

disponemos de nuestro usuario, en versiones posteriores esto solo podrá ser aceptado por

un usuario con el rol de Administrador, como podemos observar estos usuarios no se

permite ser creados desde el formulario para evitar así problemas de seguridad.

**El rol de administrador nos da acceso a todas las secciones de la web, así como a toda la

información almacenada, esté o no activa.

JUAN FRANCISCO ABÁN FONTECHA

69 Escuela Politécnica Superior de Jaén

a. Edición de usuarios.

Una vez creado nuestro usuario nos llevará al modulo de Inicio de Sesión, mediante el cual

podremos acceder a nuestra cuenta de usuario. Introduciendo el usuario y la contraseña.

Una vez hecho esto de manera correcta veremos en la esquina superior derecha de nuestra

aplicación un pequeño simbolo con un ojo que significa que hemos iniciado sesión y un

mensaje de bienvenida.

Fig. 5: Mensaje de bienvenida que nos muestra la aplicación.

Este mensaje no solo sirve como información para saber que hemos iniciado sesión en

nuestra aplicación sino para poder editar nuestros datos, una vez que hacemos clic sobre el.

Fig. 6: Formulario de edición de usuario.

Como podemos observar hay campos inactivos como son el nombre de usuario y el rol, ya

que estos se considerán inmutables en la edición del usuario. Para desconectarnos de

nuestra sesión podremos hacerlo mediante una nueva opción que aparece en el menú

superior tras iniciar sesión (Desconectar).

4. Creación de competiciones.

Esta acción solo es posible de hacer si hemos iniciado sesión con un usuario Administrador,

por defecto al crear nuestra base de datos disponemos de uno cuyo nombre de usuario y

contraseña son root. Esto nos permitirá hacer algunas pruebas con nuestra aplicación.

Una vez que iniciamos sesión con nuestro usuario Administrador, veremos un menú superior

ligeramente diferente.

JUAN FRANCISCO ABÁN FONTECHA

70 Escuela Politécnica Superior de Jaén

Fig. 7: Menú superior del usuario con rol Administrador.

Como podemos observar nos aparece la opción de crear competiciones, hacemos clic

sobre ella y nos aparece un pequeño formulario que nos permite crear a nuestro gusto la

competición.

Fig. 8: Formulario de registro de competiciones.

Este formulario nos provee del usuario que está creando la competición, nos permite

insertar tanto el nombre, fecha como la ubicación de nuestra competición, además de si

permite que esté disponible. De no estarlo solo es visible por usuarios Administradores y

al irnos a la visión de listar Competiciones la vemos en un color diferente y con una

advertencia para que sepamos que no es visible.

Fig. 9: Listado de competiciones con advertencia en la competición deshabilitada.

Una vez creada la competición podremos verla en el listado, junto con edición, borrado y

adición de participantes, el borrado solo se permite a usuarios con el rol de

Administrador.

JUAN FRANCISCO ABÁN FONTECHA

71 Escuela Politécnica Superior de Jaén

5. Añadir participantes.

Esta acción solo es posible realizarla con usuarios con el rol de Administrador o de

Profesor (Entrenador), cualquier otro tipo de usuario no vería dicha opción, Tenemos 3

tipos de opciones a la hora de añadir participantes a nuestra competición.

Fig. 10: Menú de adición de participantes.

a. Añadir un participante

Esta opción es la más común cuando queremos hacer pruebas o tenemos pocos

participantes, ya que con esta disponemos de un solo formulario donde podremos

insertar la información del participante a mano.

Fig. 11: Formulario de añadir un participante.

De manera automática el sistema nos clasifica en las diferentes categorías a los

participantes según el peso y el sexo.

b. Adición masiva de participantes

Para cuando necesitamos insertar mucha información de participantes y disponemos de

un fichero CSV o en su defecto una extensión de fichero que permita su conversión a

CSV, debemos tener en cuenta seguir un mismo esquema para la introducción correcta

de nuestro fichero.

JUAN FRANCISCO ABÁN FONTECHA

72 Escuela Politécnica Superior de Jaén

Fig. 12: Apartado de adición masiva de participantes.

Una vez que insertemos el fichero y le demos a enviar nos llevara a la información de la

competición donde podremos ver si todo ha ido bien, de nos ser así nos dará un error y

nos indicará que ha sucedido.

c. Selección participantes existentes.

Esta opción es la que nos permite la reutilización de participantes entre competiciones,

tenemos que tener en cuenta en este apartado en especial que existe la ley de protección

de datos por lo que el sistema controla a que organización pertenece el Entrenador para

no mostrar participantes que no sean de esta. El administrador puede ver todos los

participantes que existan dentro de la base de datos.

Fig. 13: Tabla con participantes, que permiten ver los seleccionados y los disponibles.

Como vemos en la figura 13 disponemos de un buscador además de poder observar los

participantes que ya existen en nuestra competición y los que son susceptibles de ser

seleccionables.

JUAN FRANCISCO ABÁN FONTECHA

73 Escuela Politécnica Superior de Jaén

6. Reparto de combates.

La última parte de este manual la vamos a dedicar al reparto de los combates adaptativo del

que disponemos, ¿Por qué decimos que es adaptativo? Nuestro sistema se encarga de

recorrer la información de los participantes que tenemos en nuestra competición y de crear

el organigrama para disputar los combates de una manera correcta y evitando repeticiones.

Para ello debemos acceder a nuestro menú Ver Competiciones, donde se nos mostrará la

lista de competiciones de las que disponemos, seleccionamos una de ellas para entrar a su

ficha, si disponemos de un usuario con un rol de Administrador podremos ver un botón

inferior de Reparto de Combates, como vemos en la figura 14.

Fig. 14: Ficha de una competición donde podemos ver los participantes y en la parte inferior el botón que nos

permite hacer el reparto de combates.

Tras hacer clic en este botón nos aparecerá un mensaje de advertencia para que sepamos

que se va a proceder a este reparto, tras aceptar vemos un pequeño formulario donde

veremos las categorías y los participantes, así como checkbox que nos permitirán

seleccionar a los cabezas de serie.

Fig. 15: Formulario de selección de cabezas de serie, junto con las categorías a las que pertenecen.

JUAN FRANCISCO ABÁN FONTECHA

74 Escuela Politécnica Superior de Jaén

Una vez que seleccionamos nuestras cabezas de serie tan solo tendremos que pulsar en

proceder al reparto y nos aparecerá un listado con nombres y Tatamis donde se deben

realizar los combates. En esta pantalla que nos indica el reparto de los participantes y en los

tatamis que se realizarán dichos combates, es tan solo informativa y desde esta podremos

acceder a introducir los resultados.

Fig. 16: Pantalla informativa de los combates al realizar el reparto, con el botón que nos permitirá acceder a la

pantalla con el organigrama que permite la edición de resultados.

7. Introducción de resultados.

El acceso a los resultados se puede hacer de dos formas, de manera directa al repartir los

combates con el botón de la figura 16 (Ver resultados), o desde la visión de la competición

donde veremos que el botón realizar reparto que vemos en la figura 14 ha pasado a ser Ver

resultados como vemos en la figura 17.

Fig. 17: Ficha de competición con el botón Ver resultados.

JUAN FRANCISCO ABÁN FONTECHA

75 Escuela Politécnica Superior de Jaén

Ambas posibilidades nos llevaran al organigrama de nuestra competición y nos permitirá ver

los combates que se van a realizar y en que tatami, de manera que será más simple para el

usuario reconocer a los combatientes.

Fig. 18: Organigrama de la competición que nos permitirá ver los resultados.

Si estamos registrados con un usuario con el rol árbitro o Administrador nos permitirá la

edición y el almacenamiento de los resultados con los dos botones que al modificar

cualquier input aparecerán de manera inmediata. No solo esto, sino que los pases al resto

de eliminatorias se irán refrescando conforme vayamos introduciendo los resultados, para

así facilitar la vida al administrador y gestor de la competición.