14 minute read
Tabla 12. Sprint Backlog del Sprint 2
from APLICATIVO MÓVIL CON MACHINE LEARNING PARA EL FORTALECIMIENTO DE LA COMUNICACIÓN DE LENGUA DE SEÑAS
by Pontificia Universidad Católica del Ecuador sede Santo Domingo PUCE SD
4.3.3.4. Retrospectiva del Sprint 1
Como punto relevante del sprint, el equipo de desarrollo determinó una autoevaluación para crear un plan de acciones y poderlo ejecutar en el siguiente sprint. Se consideró la estimación asignada a cada tarea y se trató de asignar de manera uniforme la carga de trabajo. Se desarrollaron las tres primeras historias, la reestructura de la base de datos y toda la base que involucra el ingreso a la app. Además, se realizaron pruebas unitarias que permiten organizar, actuar y afirmar que se valide el código y avanzar, caso contrario se debe corregir los errores hasta que desaparezcan. Se recomienda la retroalimentación constante entre el equipo Scrum y todas las partes involucradas en el desarrollo de la aplicación, pues de esto depende que se logre un producto 100% funcional y operativo con todas las necesidades cubiertas de la comunidad con discapacidad auditiva.
Advertisement
4.3.4. Sprint 2
4.3.4.1. Planificación del sprint 2 – Sprint Planning
En relación al sprint 2, se consideraron las historias de usuario cuatro, cinco, ocho y nueve; donde se asignó la estimación que le corresponde a cada uno, obteniendo un puntaje de 39 puntos. Por otra parte, se realizó el sprint backlog, teniendo como objetivo desarrollar la funcionalidad correspondiente al chat para el envío y recepción de mensajes o pictogramas, los cuales pueden ser destacados y reenviados, como se observa en la tabla 12.
Tabla 12. Sprint Backlog del Sprint 2
Sprint Backlog Objetivo: Desarrollar la funcionalidad correspondiente al chat para el envío y recepción de mensajes o pictogramas, los cuales pueden ser destacados y reenviados
SPRINT HISTORIA EST CATEGORÍA TAREA EST
2 HU4-Chat 13 Desarrollo Creación del modelo Serializable. Chat.java y la clase chat con la interfaz Desarrollo Creación de la vista chat.xhtml para visualizar u obtener un listado de chat entre el usuario logueado y el contacto seleccionado
Desarrollo
Creación del estilo de tipo CSS para poder alinear los textos en los objetos datatable-header, definir el color del texto y fondo delimitado por el código RGB. Desarrollo Creación del método getLazyModel para la verificación de contacto con la aplicación para el inicio del chat.
Desarrollo Creación de los métodos públicos setGlobalMessage, getGlobalMessage y sendGlobal para modificar, obtener datos y enviar el mensaje creado respectivamente. 2
2
2
2
2
HU5-Categorías 13 Desarrollo Creación del controlador ChatController.java modelos Usuarios, Contactos y Chat. para enlazar con los Desarrollo Trigger TGCHATBEFORE y la secuencia SEQCHACODIGO Desarrollo Creación del modelo Categorias.java para definir las propiedades de la tabla categorías Desarrollo Creación del formulario en la vista Categorias.xhtml para crear, editar y listar los pictogramas pertenecientes a la categoría creada. Desarrollo Creación del objeto datalist para listar todas las categorías en la base de datos.
Desarrollo
Desarrollo
Creación del controlador CategoríaController.java junto con el método create para crear una nueva categoría y definirla para que se mantenga activa. Creación del método update en el controlador CategoríaController.java para la actualización de las categorías creadas. Desarrollo Creación del método List dentro del controlador para obtener un listado de las categorías creadas. Desarrollo Creación del método getTotalCategorias para obtener todos los registros almacenados en la BD. Desarrollo Trigger TGCATEGORIASBEFORE y la secuencia SEQCATCODIGO Desarrollo Creación del modelo Serializable. destacados.java junto con la interfaz
HU8-Destacar 8 Desarrollo Creación del objeto ViewChat dentro de la vista chat.xhtml crear el submenú de destacar o eliminar un mensaje. para Desarrollo Creación del objeto ViewDestacados para visualizar datos de tipo char del usuario logueado.
Desarrollo Creación del controlador destacadosController, junto con el ejbFacadedes para acceder a los mensajes destacados almacenados en la base de datos
Desarrollo
Creación del método List dentro del controlador para obtener un listado de mensajes destacados que recibe como parámetro el usuario logueado Desarrollo Creación del método removeDestacados que no retorna valores y se activa cuándo se quiere remover un mensaje destacado. Desarrollo Creación del modelo chat.java para el reenvío de mensajes
HU9-Reenviar 5
Desarrollo Creación de la vista chat.xhtml mensajes reenviados. y chat-movie.xhtml para mostrar los Desarrollo Creación del controlador destacadosController, junto con el método onRowSelect para reenviar el mensaje al usuario deseado. Desarrollo Creación del objeto base de datos. chat para almacenar el mensaje reenviado en la Nota: Elaboración propia. HU: Historia de usuario.
4.3.4.2. Reuniones diarias del Sprint 2 –Daily Scrum
2 1 2
2
1
2
2
2
1
1
1
1
2
2
1
1
1
2
1
1
Todos los días el equipo se reunió 15 minutos para realizar la planeación diaria en relación a las tareas de cada historia, dichas reuniones permitieron evaluar el proceso del sprint 2.
4.3.4.2.1. Historia de usuario 4: Chat
En el modelo chat.java se creó la clase chat con la interfaz Serializable, donde se encuentran los campos comunes de la tabla chat que se relacionan con la base de datos y su respectivo tamaño, además chacodigo se adiciona como foreign key en la tabla destacados, como se muestra en la figura 49.
La vista chat.xhtml permite visualizar u obtener un listado de chat entre el usuario logueado y el contacto seleccionado, en el value se obtiene del controlador una lista de chat como filtro, se envía el usuario y celular del contacto. Tiene una clase de CSS original para que el texto del usuario se alinea a la derecha y del receptor se alinee a la izquierda del chat. Además, se visualiza el chat con su fecha y hora, usuario y el mensaje como tal (Figura 50).
Figura 49. Clase Chat para el ingreso de campos Figura 50. Vista chat para obtener un listado del chat
Para que la pantalla sea responsive se creó un objeto de organización, haciendo que ocupe el 100% de ancho de la pantalla, para lo cual consta de una fila con 2 columnas, en la primera columna se tiene un ancho del 85% y es adaptativa con la clase ui-fluid y p-field para poder ingresar el texto a escribir. Además, posee un control en el límite de ingreso de palabras de 500 bytes. Para enviar el mensaje se tiene un botón que al ser presionado envía el mensaje al remitente y se actualiza la vista de datos, como se muestra en la figura 51.
A continuación, se creó un apartado de tipo CSS para poder alinear los textos en los objetos datatable-header, además en el CSS original se definió el color del texto y fondo delimitado por el código RGB. La funcionalidad del color es identificar en el chat la persona que origina el mensaje con un fondo turquesa, mientras que el receptor tendrá un color blanco, como se observa en la figura 52.
Figura 51. Creación de la clase ui-fuild y p-field para el ingreso de texto en el chat Figura 52. Estilo CSS del Chat
Se creó un método público para devolver una lista de objetos de tipo char, a través del método getLazyModel se recibe dos string el usuario original y de destino. El usuario destino se identifica mediante el número telefónico que está almacenado en usununcelular, luego se hace una búsqueda para verificar si dicho usuario posee una cuenta en la aplicación. Se selecciona los parámetros del usuario original y destino con el ejbFacadecha, si se encuentra una coincidencia devuelve la lista de datos, caso contrario devuelve un NULL (Figura 53).
Figura 53. Verificación de contacto con la aplicación para el inicio del chat
Para poder enviar un mensaje se usó la variable global GlobalMessage que permite almacenar el mensaje a enviar. Por medio de los métodos públicos setGlobalMessage y getGlobalMessage se puede modificar y obtener datos respectivamente, además para enviar el mensaje se creó el método público sendGlobal que recibe como parámetro el usuario logueado del contacto, y mediante el contacto se obtiene el número telefónico del usuario al que quiere enviar el mensaje. Adicional, se usó el ejbFacadecha.create para registrar en la BDD el mensaje, una vez enviado se libera la variable GlobalMessage para no llenar la memoria del servidor y se resetea el chat como se muestra en la figura 54.
Finalmente, se creó una secuencia SEQCHACODIGO para el incremento de valor en el código y adicional un trigger TGCHATBEFORE, se dispara antes de la inserción de datos en la tabla chat, en caso de que el código SEQCHACODIGO sea nulo se inserta la siguiente secuencia. La vista chat-img permite visualizar un listado de categorías, es decir recorrer todas las categorías que tenga la aplicación y crear paneles conformados por columnas parar mostrar los pictogramas que forman parte de una categoría. Adicionalmente se muestra la imagen subida a la librería de imágenes con un tamaño de 100 pixeles, dicho tamaño es adaptable (Figura 55).
Figura 54. Almacenar y enviar el mensaje Figura 55. Visualización de categorías
4.3.4.2.2. Historia de usuario 5: Categorías
En el modelo categorias.java, se declaró una clase publica que permite definir las propiedades de la tabla categorías cuyos campos son: código, nombre, descripción y estado. Por cada una de las categorías se obtuvo un listado de pictogramas, como se observa en la figura 56.
Se creó un formulario en la vista categorias.xhtml, por medio de botones se crea y edita las categorías. El botón pictogramas permite ver el listado de los GIF que pertenecen a una categoría seleccionada, el botón editar y pictogramas se activan cuando se ha seleccionado una categoría. Mientras que el objeto dataTable llamado datalist permite obtener un listado de todas las categorías que se encuentran creadas en la base de datos. El botón imágenes permite ver el listado de las imágenes que se suben como pictogramas de cada categoría, además redirecciona a la vista pictogramas-list-img, como se observa en la figura 57.
Figura 56. Modelo para definir los campos de la tabla categorías Figura 57. Creación de botones para crear, editar y listar pictogramas de categorías
La vista pictogramas-list-img permite visualizar una galería de imágenes en tipo slider, de manera secuencial se muestran las imágenes que pertenecen a una categoría seleccionada,
donde se muestra detalles como el nombre y la extensión. Además, se tiene el comando regresar para poder elegir otra categoría, como se muestra en la figura 58.
En el controlador categoríaController.java se encuentra el método create que permite crear una nueva categoría y definirla para que se mantenga activa, una vez creada la misma, se regresa al listado de categorías general. En el método update se actualiza la información de la categoría y si es satisfactoria la actualización se almacena en la base de datos, se observa el cambio por medio de la vista categorias.xhtml, como se muestra en la figura 59.
Figura 58. Visualización de las imágenes en tipo Slider Figura 59. Creación y actualización de categorías
En el mismo controlador se tiene el método public List para obtener todo el listado de las categorías, sino se encuentra una en el aplicativo va a devolver una excepción solicitándola. El método public Integer getTotalCategorias obtiene todos los registros almacenados en la base de datos a través de ejbFacadecat.finAll().size(), ver la figura 60.
Figura 60. Método para listar todas las categorías
Finalmente, se creó una secuencia SEQCATCODIGO para el incremento de valor en el código y adicional un trigger TGCATEGORIASBEFORE el cual se dispara antes de la inserción de datos en la tabla chat, en caso de que el código SEQCATCODIGO sea nulo se inserta la secuencia.
4.3.4.2.3. Historia de usuario 8: Destacar
Dentro del modelo destacados se tiene la interfaz Serializable, tiene como identificador primario @Id el descodigo. Este modelo tiene relación con la tabla chat y usuarios, esto se debe a que un usuario puede tener varios chats destacados y ese chat puede estar en dos usuarios. El campo CHACODIGO y USUUSUARIO se toma como modelo la tabla chat y usuario respectivamente (ver figura 61).
Para poder destacar o eliminar un mensaje enviado o recibido se debe presionar el mensaje en el dispositivo móvil o al dar clic derecho sobre el mismo, para lo cual se creó el objeto viewchat de tipo contextMenu dentro de la vista chat.xhtml, como se muestra en la figura 62.
Figura 61. Relación del modelo Destacados con la tabla Chat y Usuarios Figura 62. Creación del submenú destacar o eliminar mensaje
El objeto viewDestacados permite visualizar datos de tipo char del usuario logueado, es decir que el valor que recibe el dataTable es una lista de mensajes que haya destacado el usuario, además permite seleccionar un chat destacado para poderlo eliminar. Adicional se aplica un estilo de color de fondo diferente para la persona que envía y la que recibe el mensaje. Además, contiene una columna que alinea automáticamente la ubicación del mensaje a la izquierda o derecha, contiene los datos de la hora y fecha del mensaje, nombre de usuario y contenido, como se observa en la figura 63.
El controlador destacadosController es una clase pública de tipo @SessionSoped que permite mantener la sesión de los datos. Mediante el ejbFacadedes se puede acceder al Facade de destacados, es decir a los mensajes destacados almacenados en la base de datos como se puede observar en la figura 64.
Figura 63. Visualización de los datos del usuario logueado Figura 64. Controlador Destacados para mantener la sesión de los datos
En la figura 65, se tiene el método List dentro del controlador que permite obtener un listado de mensajes destacados, recibe como parámetro el usuario logueado, mediante el acceso a ejbFacadedes se puede hacer una búsqueda y en el caso de encontrar valores retornan, caso contrario es nulo.
El método removeDestacados no retorna valores y se activa cuándo se quiere remover un destacado. A través de ejbFacadedes y mediante el método remove del objeto seleccionado, remueve el mismo de la vista destacados.xhtml. Automáticamente de forma interna se accede a la base de datos, se elimina el objeto enviado y se actualiza (Figura 66).
Figura 65. Método List para obtener el listado de mensajes destacados Figura 66. Método para remover mensajes destacados
4.3.4.2.4. Historia de usuario 9: Reenviar
El modelo utilizado para reenviar mensajes es chat.java, el fin de la historia es poder reenviar un mensaje ya sea a la misma persona o a otra dentro de sus contactos. Para lo cual se debe dar click derecho al mensaje y seleccionar la opción reenviar. Dentro de la vista chat.xhtml al momento de completar el reenvío abre un cuadro de dialogo con el id selectedChat y se muestra mediante la propiedad show, como se muestra en la figura 67.
La vista chat-move.xhtml es de tipo dialogo la cual aparece como pop-up en una vista normal, contiene propiedades como el id que es necesario para que una vez desembocado pueda mostrarse u ocultarse. La variable widgetVar es de tipo global que puede ser invocada desde cualquier otra vista, permite la asignación de ventanas emergentes de PrimeFaces. La vista datalist es un contenedor de tipo dataTable donde se obtiene el listado de contactos del usuario logueado (Figura 68).
Figura 67. Método para reenviar mensajes Figura 68. Vista chat-move para el reenvio de mensaje
Dentro del controlador ChatController se creó el método onRowSelect que envía como parámetro el usuario logueado, el usuario destino y el mensaje que deseo reenviar. Luego se creó un objeto chat donde se coloca el nuevo mensaje, el usuario original y destino, finalmente se realizó un create (chat) para almacenar el mensaje enviado en la base de datos, como se observa en la figura 69.
Figura 69. Método para almacenar el mensaje enviado en la base de datos
4.3.4.2.5. Gráfico de trabajo pendiente del Sprint 2
En la figura 70, se muestra el trabajo pendiente durante el desarrollo de las tareas del sprint 2, para el presente avance no se presentaron dificultades en el cumplimiento de cada una de las actividades, se dio por finalizada cada una de las sub-tereas asignadas por parte de los desarrolladores.
Figura 70. Gráfico del Sprint 2
4.3.4.3. Revisión del Sprint 2
Para el sprint 2, el Product Owner hizo la verificación del avance de la app móvil, quien notó mejoras positivas en el progreso de la misma. La reunión en esta ocasión tuvo una duración de dos horas en las cuales se revisaron las historias de usuario pertenecientes a este sprint. Posteriormente se firmaron las pruebas de aceptación por parte de la intérprete de lengua de señas de la carrera de Gastronomía, quién las aprobó (Anexo IX).