Cuando los ingenieros de desarrollo necesitan diagnosticar un problema, en muchas ocasiones tienen acceso a un registro o log de eventos que han sucedido en un determinado sistema software o un dispositivo de hardware. En este log aparecen una serie de trazas que registran lo que ha ido sucediendo en el sistema. Estas trazas están (o deberían de estar) anotadas con un timestamp, esto es, una indicación de tiempo asociada a cada evento. Parte de su trabajo consiste en inspeccionar estos logs y poder saber qué ha pasado en el sistema o la máquina, así como las acciones realizadas por los usuarios de estos.
En este proyecto se quiere desarrollar un sistema que, dado un log estructurado (en el que las trazas siguen un formato específico, con información fija e información variable), genere una línea de tiempo para poder visualizar fácilmente lo que ha ido sucediendo en el sistema. Esto ayudará a los ingenieros a verificar la información del problema respecto a los eventos informados por quien lo reporta y además a conocer la historia del sistema hasta el final de las trazas.
El usuario podrá configurar qué significa cada una de las trazas, por ejemplo, si hay una traza que diga “[07/08/2023] Starting printing job plano1.pdf”, eso significa que se ha empezado a imprimir un trabajo llamado “plano1.pdf”. Para configurar esto se definirán plantillas de las trazas, opcionalmente utilizando expresiones regulares, indicando cuál es la parte común, qué partes son descartables, las variables que deben capturarse (en el ejemplo de arriba, el nombre “plano1.pdf”) y a qué evento está asociada cada traza (en el ejemplo, el inicio de una impresión).
Para el desarrollo el alumno o alumna podrá utilizar los logs que considere oportunos, o los tutores del proyecto proporcionarán un conjunto de logs de prueba similares a los logs finales para los que se quiere aplicar la herramienta, que son de carácter confidencial.
Respecto de la aplicación en sí misma, podrá ser una aplicación de línea de comandos (conjunto de scripts), una aplicación de escritorio o una aplicación web. Lo importante es que se pueda generar una imagen con la línea de tiempo (timeline) de los eventos que han ido sucediendo y estos se puedan consultar de forma cómoda.
Finalmente, se desea integrar también esta herramienta con Jira, un sistema de gestión de proyectos. Así, el usuario podrá indicar un número de “issue” y, utilizando la API de Jira (existen librerías para acceder en diferentes lenguajes), se descargarán los logs asociados, potencialmente en un formato comprimido (ZIP, tar.gz, etc), se analizarán, se generará la timeline y se añadirá ésta, como imagen, al “issue” original.