Skip to content

b. Planificación y Administración del Proyecto.

OscarAraya18 edited this page Apr 6, 2019 · 25 revisions

Historias de Usuario

Historia de usuario Descripción
Historia de usuario 1 Visualizar un tablero en el GUI que muestre una matriz de 15x15 espacios donde los jugadores podrán colocar sus fichas al formar palabras
Historia de usuario 2 Generar un deck de siete fichas por jugador, que se mantendrá constante aunque se formen palabras colocandolas en el tablero
Historia de usuario 3 Programar un algoritmo de drag and drop que permita arrastrar las fichas de juego sobre el tablero, y colocarlas en la posición deseada para la formación de palabras
Historia de usuario 4 Formar palabras con las fichas colocadas por los jugadores
Historia de usuario 5 Identificar si las palabras se están formando vertical u horizontalmente. No es permitida la creación de palabras colocadas en posición diagonal
Historia de usuario 6 Crear un diccionario de palabras en español que contenga todas las posibles palabras que pueden ser formadas por los jugadores
Historia de usuario 7 Diseñar un algoritmo que valide si la palabra formada por un jugador existe en el diccionario previamente creado
Historia de usuario 8 Crear un experto en palabras que permita validar si una palabra colocada por un jugador, que no esté contenida en el diccionario, existe o no
Historia de usuario 9 Permitir que el experto en palabras valide si las palabras existen, y en caso de existir, agregarlas al diccionario del juego
Historia de usuario 10 Diseñar el juego de forma que se permitan 2,3 o 4 jugadores por cada partida
Historia de usuario 11 Diseñar el juego con un funcionamiento de tipo Cliente-Servidor
Historia de usuario 12 Crear un botón que permita a los jugadores terminar su turno
Historia de usuario 13 Actualizar constantemente el tablero con cada turno, y reflejar estos cambios en la interfaz gráfica de los clientes
Historia de usuario 14 Programar un deck finito de 100 fichas de donde todos los jugadores reciben la cantidad que gastan al formar palabras
Historia de usuario 15 Asociar un puntaje específico a cada ficha
Historia de usuario 16 Generar espacios multiplicadores en el tablero y la matriz de juego, tanto a nivel de lógica del servidor como de representación en la interfaz gráfica
Historia de usuario 17 Mostrar una tabla de puntajes con la puntuación de todos los jugadores de la partida
Historia de usuario 18 Programar un botón que permita a los jugadores finalizar la partida
Historia de usuario 19 Generar un código de acceso que deberá ser especificado por cada usuario que quiera ingresar a la partida
Historia de usuario 20 Generar un property file para el IP y la información de la comunicación con el experto en palabras
Historia de usuario 21 Terminar la partida en caso de que se acaben las fichas del deck principal del juego
Historia de usuario 22 Valorar el puntaje de todos los jugadores y asignar un ganador en función del jugador con más puntos

Descomposición de cada historia de usuario en tareas:

Historia de usuario 1:

a. Crear la clase Board.
b. Posicionar LetterTiles en el board.
c. Establecer una matriz por reserva de memoria de 15x15 espacios, de tipo LetterTile.
d. Colocar multiplicadores en la matriz.
e. Recibir el valor de multiplicador dependiendo de la posición en la que se coloque la ficha.

Historia de usuario 2:

a. Crear la clase Player.
b. Generar un array donde se puedan almacenar las LetterTiles de cada jugador.
c. Recibir las LetterTiles de manera aleatoria desde el gameDeck, en función de la cantidad de letras utilizadas en el turno.
d. Validar que la cantidad de LetterTiles se mantenga constante en todos los jugadores.
e. Permitir al jugador solicitar LetterTiles al gameDeck cuando este finalice su turno.

Historia de usuario 3:

a. Crear una ventana de juego.
b. Crear una matriz de cuadrados que simule el tablero del juego original.
c. Crear frames en la interfaz gráfica que representen el deck de cada jugador.
d. Permitir a los jugadores el arrastrar las letras del deck al tablero de juego.
e. Asociar la colocación de palabras en la interfaz gráfica con la parte lógica del sistema.

Historia de usuario 4:

a. Crear una lista de datos de tipo LetterTile que almacene la palabra creada por los jugadores.
b. Almacenar, además de la letra correspondiente, la posición de las mismas dentro de la matriz de juego.
c. Habilitar la opción para que el jugador envíe su palabra formada al tablero principal del servidor.

Historia de usuario 5:

a. Habilitar al servidor para que reciba un JSON con la palabra formada por los jugadores.
b. Habilitar al servidor para que reciba la posición de inicio de la palabra formada por los jugadores.
c. Habilitar al servidor para que reciba si la palabra formada por los jugadores está ubicada de forma vertical u horizontal.
d. Posicionar las LetterTiles que conforman la palabra formada por los jugadores en el tablero principal del servidor.

Historia de usuario 6:

a. Crear la clase Dictionary.
b. Crear un archivo de texto que contenga el diccionario de todas las partidas permitidas dentro del juego.

Historia de usuario 7:

a. Acceder al archivo de texto que contiene todas las palabras permitidas.
b. Validar si la palabra formada por los jugadores existe entre las palabras permitidas del diccionario.

Historia de usuario 8:

a. Crear la clase Expert.
b. Habilitar la conexión del servidor con el experto en palabras.
c. Establecer una comunicación con el experto en palabras, por medio de correo electrónico, para validar la existencia de la palabra colocada por el jugador.
d. Permitir que el experto en palabras pueda responder a la solicitud de validación de una nueva palabra colocada por el jugador.
e. Configurar al servidor para que maneje la respuesta del experto en palabras (decidir si la palabra se agrega o no al diccionario).

Historia de usuario 9:

a. Diseñar una función que conecte con la clase Dictionary en caso de que el experto haya validado la palabra y se quiere añadir al mismo.

Historia de usuario 10:

a. Habilitar que el juego permita salas de dos, tres o cuatro jugadores por partida.

Historia de usuario 11:

a. Crear la clase Server.
b. Crear la clase Client.
c. Crear una simulación de comunicación entre el cliente y el servidor.
d. Implementar un algoritmo que cifre y descifre JSON en ambas clases cliente y servidor.
e. Establecer una comunicación entre los clientes y el servidor por medio de sockets.
f. Enviar mensajes al servidor una vez se haya finalizado el turno de los jugadores.
g. Recibir una respuesta desde el servidor a los clientes una vez se haya analizado la información recibida.

Historia de usuario 12:

a. Generar un botón en la ventana de juego que permita a los jugadores terminar su turno y enviar la información al servidor.

Historia de usuario 13:

a. Generar una actualización constante sobre los tableros de todos los jugadores cada vez que un jugador finalice su turno y su información enviada sea analizada por el servidor.

Historia de usuario 14:

a. Generar un archivo csv que contenga la letra, la puntuación y la cantidad de fichas de cada uno de los jugadores.
b. Crear la clase LetterTile.
c. Leer el archivo csv e instanciar las letterTiles en función de la información contenida en dicho archivo.

Historia de usuario 15:

a. Programar un atributo puntuación a los objetos de la clase LetterTile.

Historia de usuario 16:

a. Generar un archivo csv que contenga la configuración de la matriz de juego y sus multiplicadores de puntaje.
b. Crear un atributo de la clase Board que sea una matriz de enteros.
c. Leer el csv con la configuración de la matriz de juego y llenar esta matriz de enteros del Board con esta información.

Historia de usuario 17:

a. Establecer una estructura dentro del jugador que contenga las puntuaciones de los otros jugadores.
b. Representar en el GUI el puntaje de cada jugador.

Historia de usuario 18:

a. Crear una ventana para el menú de inicio.
b. Programar que esta ventana permita crear una nueva partida o unirse a una ya existente.
c. Al seleccionar la opción de crear partida, desplegar una ventana donde se especifique el número de jugadores que podrán unirse al usuario.
d. Al seleccionar la opción de unirse a partida, desplegar una ventana donde se solicite el código de la partida a la que el jugador quiere unirse.

Historia de usuario 19:

a. Generar un archivo que contenga las configuraciones de IP y de comunicación con el experto en palabras.
b. Establecer una función que lea y cargue la información de este archivo al programa.

Historia de usuario 20:

a. Verificar constantemente que el gameDeck, parte del sistema que contiene todas las letterTiles que son repartidas a los jugadores con la formación de cada palabra, no se encuentre vacío.
b. Establecer que si el gameDeck 

Historia de usuario 21:

a. Solicitar a cada jugador su puntaje al finalizar la partida.
b. Verificar cual es el jugador ganador en función de sus puntajes.
c. Indicar a todos los jugadores cual de ellos ha sido el ganador, por medio de un mensaje proveniente del servidor.

Historia de usuario 22:

a. Manejar la excepción que se genera cuando un jugador solicita entrar a una partida que ya esté llena.
b. Notificar a este usuario que intentó ingresar a una partida llena que el juego ya se encuentra completo, por medio de una ventana.

Mapa de Historias de Usuario

En este diagrama de usuario se puede observar el plan de iteraciones del proyecto, a su vez se puede ver asignada la distribución de historias de usuario por criticalidad , de manera que el proyecto se fuera desarrollando de manera incremental realizando lanzamientos de un producto funcional. En este mismo diagrama se aprecia la asignación de tareas entre los integrantes del equipo, mediante post-it del color correspondiente, así como un número que indica el peso que tendría el desarrollador en dicha iteración. [En amarillo se encuentran las tareas conjuntas] User_Story_Map_Scrabble

¡Para ver esta imagen en grande, click aquí!