Crónicas de la trazabilidad - Episodio 1: ¿Cómo pueden los registros ayudarle a entender lo que hacen sus usuarios?

Iniciamos aquí una serie de artículos que explican algunos de nuestros resultados más interesantes en relación con la trazabilidad de las aplicaciones. Abordaremos las cuestiones de la instrumentación automática del código para rastrear el sistema por sí mismo y las dificultades subyacentes. También discutiremos lo que constituye una traza de aplicación buena, útil y utilizable. También hablaremos de los posibles usos de las trazas de software, desde la depuración hasta la UX, y para automatizar las pruebas. Este primer artículo introductorio explica por qué es importante e interesante el uso de las trazas y las dificultades cuando se intenta hacer ingeniería inversa de una aplicación para reconstruir los gráficos de navegación de la interfaz gráfica a partir de los registros.

Por un momento, deje de pensar en su software cotidiano como una herramienta, sino como un laberinto de pantallas, botones, acciones, menús emergentes, cuadros combinados, procedimientos, tratamientos, flujos de trabajo, etc. La rutina diaria de tus usuarios acaba navegando en este laberinto de funcionalidades, probablemente a veces con dudas e incertidumbre y (con suerte) para los más experimentados con confianza y empoderamiento.

Ahora, como editor de software, es obvio para nosotros (propietario del producto, desarrolladores, gestores de proyectos, etc.) que todos queremos hacer el mejor producto, más fácil de aprender, de entender y de navegar en él. Esto se puede conseguir siguiendo a fondo el heurística de diseño de Jakob Nielsen o el famoso Criterios ergonómicos del software Bastien-Scapin. Aunque el seguimiento de estas reglas elementales de UX debe hacerse de forma sistemática (y sin ningún compromiso), sabemos que a la hora de la práctica es EXTREMADAMENTE difícil. Esto es especialmente cierto cuando se desarrolla un producto destinado a ser utilizado por un panel de usuarios muy heterogéneo, cada uno de los cuales viene con sus requisitos y su lista de características navideñas. Como resultado, la interfaz de usuario se convierte en un compromiso entre el cumplimiento de la normativa, las opiniones de usuarios heterogéneos y las posibilidades que ofrece el marco de trabajo del front-end y los widgets disponibles.

Esta imagen tiene un atributo alt vacío; su nombre de archivo es 1*MTpmiI05jspy3IJNSKiehQ.png
Los usuarios finales no siempre utilizan la vía prescriptiva...

Teniendo en cuenta que tenemos miles de usuarios, procedentes de diversas administraciones con sus propias prácticas y hábitos, es posible que tenga una idea muy limitada de lo que sus usuarios hacen con su software. Por lo tanto, ¿cómo obtener una mejor idea de lo que está sucediendo con su software en la naturaleza? Aquí es donde los registros de la aplicación se vuelven interesantes. 🧐

Si el código pudiera hablar con nosotros...

Empecemos de nuevo con otra metáfora antropomórfica. Imagina por un momento que tu software es una entidad viva, con capacidades cognitivas, y que puedes preguntarle sobre su vida y experiencia. El software probablemente te hablará de cosas que le importan, como los errores, sus características más famosas, la cantidad de clics, los tiempos de escritura en la base de datos, la latencia de la red, el tamaño de las pantallas de los usuarios, etc. (Temas interesantes para el software, pero probablemente un poco menos para un ser humano, eso sí).

Esta discusión con el software (ed. que es obviamente figurativa), se puede lograr en realidad mediante el análisis de los registros de la aplicación del software. En una aplicación clásica basada en la web, el registro de la actividad de los usuarios puede lograrse mediante :

  • Rastreo de eventos de la interfaz de usuario en la página web, como clics, arrastres, movimientos, desplazamientos, en botones, etiquetas, formularios, pestañas, etc.
  • Rastreo de llamadas remotas en el lado del servidor, como llamadas a Webservice, procedimientos para leer o escribir datos.

En ambos lados (es decir, en el servidor y en el frente) rastrear la cantidad correcta de información puede ser extremadamente complicado. Siguiendo el trabajo y las conclusiones de investigaciones anteriores y, en particular, de la tesis doctoral de Florent Mouysset, dedicaremos otro post entero a BL.Research sobre cómo lograr un buen sistema de trazabilidad del software y evitar los escollos que pueden hacer que sus trazas sean totalmente inutilizables después.

Sin embargo, el rastreo de la actividad de los usuarios puede ser extremadamente revelador:

  • Estadísticas descriptivas básicas, como el número de clics o las páginas más navegadas. Esto podría lograrse fácilmente mediante el uso de pilas de análisis de trazas modernas como Elastic+LogStash+Kibana
  • Inversor gráficos de navegación en las interfaces de usuario basadas en los rastros de la parte delantera
  • Resalte los caminos más navegados en el gráfico de navegación y posibles atajos
  • Inversor flujos de trabajo analizando las llamadas a procedimientos del servidor
  • Resalte flujos de trabajo cuellos de botellay las vías no utilizadas

El fenómeno Spaghetti o La pesadilla de los acontecimientos entrelazados

Trabajamos sobre un conjunto de datos procedentes de eGRC, una de nuestras soluciones dedicadas a la gestión del estado civil, elecciones, cementerios, censos, biblioteca de formularios. Nuestro objetivo era extraer un modelo de navegación a partir de las trazas "primarias" presentes en los archivos de registro. Como se muestra en el siguiente extracto, el formato del registro es bastante sencillo y fácil de leer. Cada <ExportListe> se refiere a la apertura o al cierre de un panel o de una ventana. Sólo se registran dos tipos de eventos.

 fMetrología
        Exportación de datos de metrología
        USUARIO178
        2016-08-29T14:40:39
    
    
        FBuDG
        Informaciones Colectivas
        USUARIO178
        2016-08-29T14:40:37
    
    
        FBuDG
        Informaciones Colectivas
        USUARIO178
        2016-08-29T14:40:25
        2016-08-29T14:40:29
    
    
        FBuAccueil
        Oficina de recepción
        USUARIO178
        2016-08-29T14:40:19
{
    "agentName": "TraceAgent",
    "softwareName": "SeditEGrh",
    "softwareRelease": null,
    "softwareVersion": null,
    "userName": "$SYS$",
    "sessionId": "C866715C9591DE72D375108AC4D59254",
    "remoteAdress": "192.168.246.47",
    "type": "AFTER",
    "className": "fr.sedit.saas.main.dao.IDaoUtilisateur",
    "methodName": "findByCode",
    "data": {
        "param0": "java.lang.String",
        "returnType": "class fr.sedit.saas.main.model.UtilisateurSaas"
    },
    "timeStamp": "2020-05-04 02:52:17.430 PM"
},
{
    "agentName": "TraceAgent",
    "softwareName": "200504.1230",
    "softwareRelease": "N/A",
    "softwareVersion": "2020.3-SNAPSHOT",
    "userName": "ADMIN",
    "sessionId": "5E897D8432F2E599047911FE39C64120",
    "remoteAdress": "192.168.246.47",
    "traceType": null,
    "event": "ON_CLICK",
    "action": "SELECT",
    "actionTarget": "BUTTON",
    "actionTargetClass": "fr.bl.client.core.refui.base.components.BLImageButton",
    "actionDetail": "Clic sur un bouton (image)",
    "data": {
        "title": "Valider",
        "isEnable": "true",
        "counter": "0"
    },
    "timeStamp": "2020-05-04 02:52:32.501 PM"
}

Sin embargo, dado que las actividades humanas no son lineales y que los programas informáticos modernos se construyen con comportamientos asíncronos, la secuencia de apertura y cierre no es perfecta. Una gran mayoría de los eventos se entremezclan, algunos eventos de cierre faltan. También es casi imposible hacer suposiciones temporales basadas en las marcas de tiempo porque no tenemos idea de cómo se realiza la actividad en el lado del usuario.

Construcción de gráficos de navegación: un viaje algorítmico

El análisis de trazas se ha utilizado ampliamente en la industria para optimizar las líneas de producción de las empresas. Esto llevó a la ciencia de Minería de procesos que consiste en el análisis de la gestión de los procesos de negocio a partir del uso de los logs. Podemos hacer lo mismo con los registros proporcionados por el software. Durante el año pasado, trabajamos con el Equipo SIG en el laboratorio IRIT en Toulouse para encontrar la mejor manera de reconstruir el gráfico de navegación analizando únicamente los registros de eventos de los usuarios.

Idealmente, el modelo de navegación debería permitirnos entender la navegación en función de estas tres dimensiones:

  • La dimensión "Modelo": El objetivo es construir un modelo que permita representar de la manera más adecuada el modelo de navegación esperado. Este modelo de navegación podría incluir una dimensión de incertidumbre vinculada al hecho de que, en un principio, sólo se dispone de rastros de archivos de registro. Se espera que este modelo pueda generalizar al máximo los differentes archivos de registro que podrían extraerse en las diversas aplicaciones estudiadas de Berger-Levrault.
  • La dimensión "Volumetría": Este aspecto está ligado principalmente a la optimización y gestión del "Big-data" al que respondemos como equipo especialista en gestión de datos: paralelización del procesamiento en differentes plataformas, y si es necesario, implementación de enfoques de aprendizaje profundo según los objetivos. Adaptaremos y configuraremos los métodos de análisis o aprendizaje a la estructura y volumen de los archivos de registro proporcionados por Berger-Levrault.
  • La dimensión "Interpretabilidad": En este trabajo, un elemento importante es la restitución del modelo de navegación al usuario final. Proponemos asociar al modelo de interacción una visualización adaptada a las necesidades de decisión. Más allá de estos elementos tangibles, los resultados esperados se encuentran en la propuesta de una metodología de análisis de archivos de registro para extraer un modelo de navegación

Para lograr este objetivo, tenemos que identificar los métodos más adecuados para identificar los escenarios seguidos por los usuarios en ambas interfaces de software. Estamos tratando con registros del lado del cliente (base de datos EGRC y eventos de tipo 1 en SEDIT RH) y registros del lado del servidor (eventos de tipo 2 en SEDIT RH). Si consideramos nuestra problemática como una cuestión de minería de procesos, nos encontramos en el aspecto de descubrimiento de procesos (véase la figura 1.1). Como los registros no están etiquetados, métodos como los algoritmos genéticos o el LSTM (véase la figura 1.1) no son adecuados.

Si consideramos nuestro problema desde el punto de vista de la minería web, podemos referirnos a las técnicas de minería de uso de la web. En efecto, no disponemos de datos relacionados con la estructura o el contenido de las aplicaciones que hemos analizado (logs). Por lo tanto, hemos seguido el esquema clásico del proceso de minería de uso de la Web, es decir, las fases de (i) preprocesamiento, (ii) descubrimiento de patrones y (iii) análisis de patrones. Se puede considerar la cuestión como "Caracterización del uso" en lugar de "Mejora del sistema", "Personalización" o "Modificación". Tras investigar nuestro tema y comparar los distintos métodos identificados en la literatura en nuestros experimentos, acordamos identificar los siguientes métodos como relevantes para los registros disponibles:

  1. Minería de conjuntos de elementos frecuentes
  2. Incrustación de palabras
  3. Algoritmo de hormigas
  4. Redes de punteros

Además de estos métodos, hemos probado otras estrategias y heurísticas para generar el gráfico de navegación a partir de los registros. Por ejemplo, combinamos el gráfico generado por los distintos métodos aplicando las estrategias de unión e intersección. Esto nos permitiría reforzar nuestra confianza en los gráficos de navegación generados, teniendo en cuenta que si varias técnicas proporcionaran los mismos enlaces entre nodos, aumentaría la probabilidad de que estos enlaces existieran realmente.

Gráficos de navegación generados para eGRC/

Al final, como se muestra en la figura anterior, obtenemos unos gráficos de navegación muy interesantes, cuya forma y configuración tienen sentido. Nuestro siguiente paso es validar una cantidad estadísticamente significativa de enlaces para evaluar los distintos algoritmos y elegir el enfoque que proporcione los mejores resultados. Estas técnicas se aplicarán también en recién trazas generadas de las últimas campañas de prueba de SEDIT-RH.

Más en nuestro próximo episodio...

Más ...

Ir arriba