"É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.).