Resumen del problema Existen varios proyectos y a cada uno de esos proyectos se les puede asignar entre 1 y N usuarios. El usuario al mismo tiempo puede estar matriculado en otro proyecto simultáneamente por lo que un usuario tiene entre 1 y N proyectos asignados. Aquí aparece la opción de matricular a un usuario en el sistema, matricular a un usuario en un proyecto y retirar un usuario de un proyecto. Los cuales se pueden reunir todos bajo un caso de uso Gestionar Usuarios que encapsula este CRUD. Similar a los usuarios también debe aparecer una gestión de proyectos donde se puede generar un proyecto nuevo, retirar un proyecto, activar o desactivar un proyecto (Puede ser basado en una fecha de vigencia para el proyecto), consultar un proyecto y actualizar un proyecto. En la activación, desactivación, consulta y actualización entra a jugar la seguridad para que solo tengan acceso a esta funcionalidad las personas que realmente están autorizadas a hacerlo. Esta gestión de proyectos puede ser un poco superior a un CRUD debido a que se debe incluir el tema de autenticación para poder que el caso de uso termine satisfactoriamente. Funcionalidad del sistema de seguimiento de errores según Wikipedia - Autenticación para que no cualquier usuario pueda dar de alta un error. - Base de datos es fundamental - Un fallo contiene lo siguiente: Descripción detallada, Nivel de severidad, como se reproduce (que debe suceder en el sistema para que el error aparezca), responsables, fecha estimada de solución, código que corrige el error, estado del error (abierto, resuelto, cerrado) - Ciclo de vida: Mas adelante se muestra el ciclo de vida adoptado. Niveles de severidad En el atributo nivel de severidad pueden ir los siguientes - Bloqueador: No deja continuar el desarrollo o las pruebas - Crítico: Hace a la aplicación colapsar, perder datos o permitir la fuga de memoria (Memory Leak) - Mayor: Perdida de funcionalidad que hace que el programa se comporte erráticamente. - Normal: Parte menor que no es funcional - Menor: Una perdida menor de funcionalidad. - Trivial: Problema cosmético como ortografía o texto desalineado. - Mejora: Propuesta de mejora o nueva característica. Ciclo de vida El ciclo de vida se resume en la siguiente gráfica. De aquí aparecen tres estados posibles para un problema: Abierto, resuelto y cerrado. Junto con los demás atributos de un error, es conveniente agregar una descripción para el estado a modo de observaciones que permitan entender mejor por qué el problema está en ese estado. De esta parte puede surgir un caso de uso por cada estado del ciclo de vida ya que cada etapa genera valor para el usuario y para el problema como tal. Caso de uso abrir caso, resolver caso y cerrar caso. Manejo de archivos adjuntos Un reporte puede tener cero, uno o varios archivos adjuntos. Esto genera un nuevo caso de uso que puede ser opcional al momento de entrar un nuevo reporte en el caso de uso abrir caso y que al mismo tiempo puede tener limitaciones como por ejemplo los tipos de archivo que se pueden agregar o el máximo de archivos que se pueden adjuntar. Todo esto entra como un sub flujo y posibles excepciones dentro del caso de uso abrir caso. Estadísticas Esta es una vista consolidada y por lo tanto le retorna algo útil al usuario por lo que aquí también surge un nuevo caso de uso Generar Estadísticas. La vista consolidada incluye por proyecto: - Número de hechos reportados en el proyecto. - Número de hechos por cada estado del ciclo de vida (para ver cuántos hechos están apenas reportados, cuantos se han resuelto pero esperan aprobación final y cuáles han sido cerrados). - Número de hechos por responsable asignado. Búsqueda mediante filtros Esta es una búsqueda paramétrica que se puede hacer por atributos del proyecto. Es decir, se muestra una lista de atributos disponibles para un reporte y esto acompañado de un String de búsqueda hace el filtrado en la tabla. Aquí se tiene interacción directa con el DAO y la base de datos que se usa para la capa de persistencia. Esto genera un nuevo caso de uso para la búsqueda. Exportar Datos Se exporta la tabla generada de la búsqueda con los resultados a Excel. Aquí se genera un caso de uso para Exportar Datos ya que se le entrega algo útil al usuario. Un formato común para exportar a Excel es el uso de CVS. Visualización de la historia de un error En esta parte se genera un nuevo caso de uso para que el usuario pueda obtener el historial de un error. Por cada cambio de estado que se haga se debe asociar ese nuevo evento al error de manera que cuando se consulte se pueda ver cómo ha evolucionado el error en el tiempo. Notificación por correo Este caso de uso es particular porque es el sistema quien inicia la acción al reportar mediante correo electrónico algún cambio que haya hecho en el error algún otro integrante del proyecto. Notificación por RSS Este es un caso de uso bastante similar al de notificación por correo. Por cada proyecto generado debe surgir un enlace RSS para permitir la suscripción al proyecto por parte de sus participantes. Es importante que el enlace RSS aparezca después de que el usuario se autentique en el sistema para controlar el acceso y la suscripción a personas realmente autorizadas. Este caso de uso también inicia por acción del sistema y no del usuario. Soporte a cualquier base de datos Este es un tema más a nivel de estructura del sistema y su arquitectura. En los casos de uso no aparecerá por ser un requisito no funcional. Se debe proporcionar los DAO necesarios para el acceso a las bases de datos y que las llamadas a las bases de datos se construyan de una manera estándar para reducir el impacto de estos cambios. LDAP El sistema para autenticación de usuarios aunque debe darse soporte a cualquier sistema de autenticación. Listado de casos de uso Gestionar usuarios: Precondicion exista un proyecto Gestionar proyectos: Abrir caso: validaciones datos: nombre, id, Resolver Caso Cerrar caso Adjuntar archivos (puede ser parte de abrir caso) Generar estadísticas: mio Realizar búsqueda: mio Exportar búsqueda a Excel: CU extendido Realizar búsqueda. mio Visualizar historia de un error: mio Notificar por correo: mio Notificar por RSS: mío Subscripcion a RSS Validar información de ingreso