Generación de modelos abstractos de comportamiento basados en habilitación

Una API (del inglés, Application Programming Interface) es un conjunto de funciones y procedimientos que sirven para utilizar un componente de software o un tipo de dato.

En muchos casos, las APIs poseen restricciones no triviales respecto al orden en que los distintos procedimientos deben ejecutarse. Por ejemplo, para un tipo de dato conjunto, no es posible llamar a la función que inserta un elemento en un conjunto, si antes no se creo este último. Una buena implementación del tipo de dato debería verificar que el conjunto ha sido creado antes de querer insertar un elemento y en caso de no ser así tener bien definido cómo proceder (abortar la ejecución, arrojar una excepción, etc.). Si bien este ejemplo puede resultar sencillo, hay componentes de software que poseen comportamientos mucho más complejos, como puede ser la implementación de una capa en un protocolo de comunicación.

Validar el buen comportamiento de una API no es tarea sencilla: muchas veces las especificaciones son parciales y las mismas se encuentran descriptas en lenguaje informal. A pesar de esto, los desarrolladores de software tienen un modelo mental de como deberían funcionar las mismas.

En [1] se presentan las EPAs (del inglés, enabledness-preserving abstraction), las cuales son modelos sobre aproximado de comportamiento construidos a partir de especificaciones formales o implementaciones de funciones y procedimientos. El fin de estos modelos es ayudar a los desarrolladores a validar su implementación a través de la comparación del modelo mental de comportamiento que poseen con la EPA, es decir, el modelo construido a partir de la especificación o implementación. Para esto se construyo la herramienta Contractor (Validation Tool) [2], la cual genera una EPA a partir de la especificación de los métodos -- usando pre y poscondiciones [3]-- o la implementación de éstos en lenguaje C. Los primeros casos de estudios, ver [1], confirman la utilidad de este enfoque. Sin embargo, la técnica se encuentra en su fase inicial de desarrollo, por esta razón aún falta mucho por hacer. Principalmente en lo referido a la automatización de la generación de modelos y al lograr sobrestimaciones más precisas de los comportamientos.

Este proyecto busca profundizar el estudio sobre EPAS persiguiendo los siguientes objetivos:

  • Generar modelos más concretos.
  • Desarrollar técnicas para automatizar la tarea de construcciones de estos modelos.
  • Implementar herramientas que utilicen las técnicas desarrolladas, las cuales resulten fáciles de utilizar sin conocimientos teóricos y/o técnicos avanzados.

Referencias
[1] Guido de Caso. Modelos abstractos de comportamiento basados en habilitación. PhD thesis, Universidad de Buenos Aires, 2013.
[2] Guido de Caso, Victor Braberman, Diego Garbervetsky, and Sebastián Uchitel. Contractor Validation Tool. http://dependex.dc.uba.ar/contractor/Welcome.html - Último acceso 21-08-2014.
[3] Javier Blanco, Silvina Smith, and Damián Barsotti. Cálculo de Programas. Universidad Nacional de Córdoba, 2009.

Powered by Drupal