next up previous
Siguiente: Sobre este documento

Proyecto Neighbors

Facultad de Matemática Aplicada

Universidad Católica de Santiago del Estero

Resumen

El proyecto que aquí se presenta, es una continuación y profundización de otros realizados con anterioridad sobre análisis de dominio e ingeniería reversa.
Específicamente el área que ahora nos ocupa, juega un rol clave en actividades de mantenimiento y migración (recuperación de objetos), reuso, etc. Básicamente, el estado del arte indica que es mayor el nivel de automatización incorporado a los procesos de entendimiento de código. Nuestro objetivo también está orientado en la misma dirección.
Escencialmente, nuestro propósito básico consiste en capturar el conocimiento sobre el dominio de problemas, implementado en el código fuente, e integrar dicho conocimiento en modelos de dominio.
Para cumplir parte de este objetivo, pretendemos diseñar y desarrollar nuevas técnicas, representaciones abstractas del código, herramientas, etc.; que soporten procesos de entendimientos de programas. El conocimiento adquirido por estos medios, puede consistir en diseños o especificaciones, por lo que también es nuestro interés el análisis de los soportes lógicos que condensan tal conocimiento en estructuras altamente complejas como los modelos de dominio ya mencionados.
Más precisamente, por cuanto se trata del tópico central de un sub-proyecto del actual, pretendemos destacar nuestro interés en el slicing de programas. Además de la utilidad que queremos dar a los slices y que describimos más adelante, nos interesa determinar y profundizar el estudio de otras aplicaciones de los slices entre las que destacamos: Una estrategia para el entendimiento automático de programas, consiste en la detección de instancias de planes almacenados en la forma de bibliotecas jerárquicas. Los planes de programas son representaciones abstractas de las estructuras de diseño que los programadores recursivamente aplican cuando el problema en mano posee características similares a otros resueltos previamente. Complejos mecanismos de búsqueda exploran el código fuente en búsqueda de los patrones base para el diseño de los planes de programas.
Actualmente el análisis de código fuente orientado a la construcción de bibliotecas de planes de programas, se realiza manualmente. Nuestra intención es mecanizar y sistematizar este proceso. Por otro lado, alrededor de los datos se construyen las estructuras sintácticas necesarias para su manipulación. Si recuperamos un slice sobre un ítem o ítems de datos, también recuperamos aquellas estructuras. Si ahora comparamos los componentes generados, esperamos encontrar patrones repetitivos de diseños aplicados sobre los datos especificados, con lo cual lograríamos que la atención del profesional encargado del análisis del código, se dirija hacia los sectores indicados por los slices.
De ser verificada esta hipótesis, no sería la solución definitiva al problema pero significaría un aporte clave al estado actual del arte.





Gustavo E. Villavicencio 2012-06-19