El proyecto SoftScanner: ¿Cómo rastrear su front-end automáticamente?

Tras la cooperación de tres instituciones: el Universidad de Montpellier, el Centre National de Recherche Scientifique, y la empresa Berger-Levrault, el proyecto SoftScanner ya está en marcha. SoftScanner es un enfoque basado en modelos para la generación automática de configuraciones de anclaje óptimas para las operaciones de seguimiento de la ejecución de sistemas de software.

Contexto y problema

Los desarrolladores escriben "instrucciones de registro" en el código fuente para extraer información útil relacionada con el comportamiento del sistema en tiempo de ejecución. Una instrucción de registro como la alerta/advertencia suele consistir en un evento registrado mediante texto estático y variables relacionadas con el contexto del evento (por ejemplo, advertir ("No se puede acceder a la colmena" + ruta raíz)). En tiempo de ejecución, la invocación de estas instrucciones de registro genera registros que pueden utilizarse para diversas actividades de desarrollo/mantenimiento del software, como la corrección de errores, la detección de anomalías, los resultados del análisis de pruebas y la supervisión del sistema.

Además, el aumento del tamaño de las aplicaciones y la creciente necesidad de estos registros por su gran utilidad están llevando a los desarrolladores a integrar grandes cantidades de instrucciones de registro en su código fuente. Por ejemplo, el servidor OpenSSH contiene 3407 instrucciones de registro en su código base. Esta tendencia se ve favorecida además por la disponibilidad de infraestructuras de procesamiento de registros como Splunk y ELK stack, que facilitan el análisis sistemático de los archivos de registro recopilados.
Una cuestión importante que ha surgido en relación con esta necesidad de registro es la dificultad de identificar una correspondencia exacta entre la cobertura de las operaciones de rastreo y los objetivos de explotación forestal. Se produce una coincidencia inexacta en los siguientes casos :

  • Una manta sobredimensionada. Puede tratarse de un número excesivo de instrucciones de rastreo ejecutadas o de una cantidad excesiva de datos recogidos.
  • Cobertura parcial. La cobertura parcial devuelve sólo un subconjunto del conjunto de datos necesario para lograr el objetivo de registro. La cobertura parcial puede ser el resultado de un conjunto insuficiente de instrucciones de rastreo o de operaciones de rastreo que devuelven sólo un subconjunto del conjunto de datos necesario.
  • Cobertura incorrecta. Este tipo de cobertura no devuelve los datos correctos necesarios (adaptados) para cumplir el objetivo de registro establecido. Una cobertura puede estar mal adaptada con respecto a las instrucciones de rastreo elegidas (no son las instrucciones correctas) o con respecto a los datos recogidos (no son los datos correctos).

Un segundo problema importante del registro es la falta de flexibilidad en la cobertura. Por ejemplo, una cobertura establecida para satisfacer un objetivo es difícil de adaptar para satisfacer otro objetivo (por ejemplo, si los objetivos originales cambian o si los objetivos no son los mismos en diferentes períodos).
Estos problemas de registro pueden reducir considerablemente la utilidad de los diarios y/o hacer que su uso sea complejo y requiera costes considerables (experiencia humana, tiempo de configuración, tiempo de funcionamiento, etc.). Por ejemplo, una cobertura sobredimensionada conlleva un deterioro del rendimiento de la aplicación que se registra; la ausencia de instrucciones de registro en partes críticas del código fuente puede impedir que los desarrolladores tengan un conocimiento suficiente de cómo funciona el sistema; la descripción textual engañosa en las declaraciones de registro puede llevar a que los operadores del sistema tomen decisiones erróneas; y la gran cantidad de información en los registros impediría a los desarrolladores identificar información importante.

Propuesta

Nuestro objetivo para esta propuesta es definir un enfoque general y un marco para el control del proceso de registro de software. Esto incluye 5 ejes :

  • Definición exhaustiva de la configuración de rastreo
  • Generación estática de configuraciones óptimas de trazado de recorrido.
  • Generación dinámica de configuraciones óptimas de rastreo en tiempo de ejecución.
  • Generación de configuraciones de trazado basadas en modelos.
  • Interacción a través de la visualización para la adaptación de las configuraciones de trazado.

Para este proyecto, sólo nos centraremos en el Eje 1: Definición exhaustiva de la configuración de rastreo.
El objetivo de este eje es automatizar el proceso de generación de configuraciones de trazado en tiempo de ejecución según un objetivo determinado. Una configuración de trazado representa una lista de pares formada por un tipo de instrucción de trazado (ejemplos: warn, info, error, etc.) y una posición en el código fuente donde se debe anclar esta instrucción (add). Para ello, es necesario identificar los objetivos de rastreo de la ejecución y definir el conjunto exhaustivo de operaciones de rastreo necesarias para satisfacer uno o varios objetivos. El conjunto exhaustivo significa aquí todos los pares (instrucción de trazado, posición de trazado) que permiten satisfacer la necesidad y sin ninguna reducción del número de estos pares basada en heurísticas/técnicas para optimizar su número. Esto pasa por:

  • La propuesta de un modelo de refinamiento de los objetivos de rastreo. Este refinamiento se basará en los modelos de refinamiento de las características de calidad del software propuestos en la literatura, como el modelo ISO/IEC 9126, que propone refinar sucesivamente las características en subcaracterísticas, propiedades y métricas. Como ejemplo, entre los objetivos a refinar, podemos citar la detección de incidentes de seguridad, el análisis de anomalías o la elaboración de perfiles (para capturar el comportamiento de los usuarios).
  • La asociación objetivo-trazado. Se trata de proponer para cada sub-configuración de tracing que permita responder a la necesidad de evaluación (medición) para cada sub-objetivo interviniendo en el refinamiento de un objetivo global como la prueba o el análisis de anomalía. Una subconfiguración de rastreo es un conjunto de datos recogidos por un conjunto de operaciones de rastreo ancladas en determinadas posiciones del código fuente.

Cabe señalar que el modelo de refinamiento del objetivo de rastreo (inspirado en el modelo de características de la norma ISO/IEC 9126) refina sucesivamente cada objetivo en subobjetivos hasta un nivel en el que el objetivo puede ser satisfecho por un conjunto de datos que pueden ser extraídos por una subconfiguración de rastreo. El conjunto de subconfiguraciones de rastreo definidas por el refinamiento sucesivo de un objetivo de rastreo dado constituye la configuración exhaustiva que debe asociarse a ese objetivo.
En cuanto a los demás ejes, serán objeto de otro contrato (una tesis a priori).

Más ...

Ir arriba