next up previous
Siguiente: Sobre este documento

Proyecto APU
(Automatic Program Understanding)

Facultad de Matemática Aplicada

Universidad Católica de Santiago del Estero

Resumen

Los sistemas de entendimiento de automático de programas pretenden extraer mecánicamente el conocimiento implementado en las líneas de código en los sistemas desarrollados en un dominio específico de problemas. Para ejecutar el proceso, tales ambientes requieren de una base de conocimiento (específicamente librerías de planes de programación) con la cual "mapear" el conocimiento oculto en el código fuente.
Esta estrategia si bien automatiza gran parte del proceso de entendimiento de programas, implica la resolución de problemas muy complejos en la construcción del soporte automático que realiza el proceso: En el contexto del Proyecto Neighbors estamos analizando una posible solución al primero de los problemas referidos. En el presenten proyecto trataremos el segundo de ellos. Efectivamente, los algoritmos de satisfacción de restricciones que son los que realizan el "mapping" entre las librerías de planes y el código fuente, tienen al menos problemas de performance al intentar detectar las instancias. Esto se debe a que múltiples instancias pueden ser detectadas para un mismo índice. De acuerdo con pruebas experimentales realizadas por otros grupos de investigación en el área, el análisis de restricciones para cada una de las instancias de índices conduciría a los algoritmos de satisfacción de restricciones a serios problemas de performance cuando son aplicados a sobre código legado. Para expresar el problema de un modo más pragmático los algoritmos de exploración realizan una "búsqueda a ciegas", es decir, buscan cualquier plan en cualquier parte del código.
Nuestra intención es estudiar mecanismos que les permitan a los algoritmos de satisfacción de restricciones ejecutar una exploración inteligente seleccionando los sectores del código fuente para buscar por planes de programación específicos. Para este intentaremos fragmentar el código fuente en sectores. Más específicamente estamos interesados en recuperar una representación arquitectural del sistema objeto de estudio. Un enfoque de esta naturaleza nos permitiría: Para capturar la estructura de un sistema pretendemos aplicar análisis de cluster y análisis de conceptos. Con la adopción de estas técnicas pretendemos migrar gradualmente a enfoques de ingeniería reversa basados en métodos formales.





Gustavo E. Villavicencio 2012-06-19