"ÉNFASIS: Programación Orientada a Aspectos de Grano Fino"

Ulises Juárez Martínez

            
Texto completo de la Tesis    



Resumen

La Programación Orientada a Aspectos es un nuevo paradigma de programación que permite modularizar atributos de un sistema como persistencia, desempeño, calidad, logging, concurrencia, entre otros. Estos atributos requieren de algunos miembros de instancia o de clase para llevar a cabo su función. Sin embargo, para modularizar atributos como prueba, tracing, visualización de programas, monitoreo y complejidad, se requieren elementos más finos de un programa, específicamente las variables locales. Los lenguajes de programación orientados a aspectos como AspectJ y similares no soportan la modularización de atributos a nivel de variables locales, por lo que encapsular y reutilizar un atributo como la verificación de variables no es posible. En este trabajo se presenta a ÉNFASIS, una plataforma en Java para definir aspectos de grano fino en donde la localización de variables locales se basa en un mecanismo de rutas que considera los árboles de sintaxis abstracta del código fuente. Mediante este mecanismo se establece un mapeo entre las variables locales disponibles en el código fuente y las correspondientes instrucciones de bytecode permitiendo mantener una descripción de alto nivel y al mismo tiempo definir un modelo computacional basado en teoría de conjuntos para este tipo de aspectos finos. Entre las aplicaciones de aspectos de grano fino se pueden mencionar el análisis de flujo de datos (información sobre posibles conjuntos de valores en varios puntos del programa), comprensión de programas, manejo de aseveraciones y la cobertura de código (prueba de software para funciones, sentencias, condiciones, rutas, etc.).

        Abstract
Aspect-Oriented Programming is a new programming paradigm that allows system attribute modularization such as persistence, performance, quality, logging, concurrency, among others. These attributes require some class or instance members to perform their function. However, modularizing attributes like testing, tracing, program visualization, monitoring and complexity, it requires finer elements of a program, specifically local variables. Aspect-oriented languages such as AspectJ and AspectJ-like languages do not support attribute modularization for local variables, thus the encapsulation and reuse of attributes such as verification for variables is not possible. This thesis introduces ÉNFASIS, a Java platform for defining fine-grained aspects where the local variable location is based on a path mechanism. Such mechanism uses the abstract syntax trees of source code. A mapping between local variables available in source code and related bytecode instructions allows a high level description and a computational model based on set theory. Applications of fine-grained aspects include data flow analysis (information on possible sets of values at various points of the program), program comprehension, assertions and code coverage (software testing for functions, sentences, conditions, paths, etc.).