Refactorización sobre programación genérica en lenguajes orientados a objetos

  1. Marticorena Sánchez, Raúl
Dirigida por:
  1. Yania Crespo Director/a

Universidad de defensa: Universidad de Valladolid

Fecha de defensa: 25 de octubre de 2013

Tribunal:
  1. José Ambrosio Toval Álvarez Presidente/a
  2. M. Esperanza Manso Martínez Secretario/a
  3. Juan Hernández Núñez Vocal
  4. Juan José Rodríguez Diez Vocal
  5. Javier Garzás Parra Vocal

Tipo: Tesis

Resumen

En el proceso de desarrollo del software, éste evoluciona y cambia de manera continua. Cuando la transición entre desarrollo y evolución no es continua y suave se denomina "mantenimiento del software''. Uno de los objetivos en dicho mantenimiento es reducir la progresiva degradación del software denominada entropía del software. Para reducir dicha entropía, una de las labores fundamentales en el mantenimiento perfectivo es la reestructuración del código fuente. El término utilizado cuando nos referimos a reestructuración en lenguajes orientados a objetos, se denomina refactorización, como traducción del término inglés Refactoring. Dentro de las líneas abiertas de investigación en refactorización, cobra importancia el lograr una cierta independencia del lenguaje de programación, tanto en la definición de refactorizaciones como en su posterior implementación. Por otro lado, hay ciertas características de los lenguajes de programación que no han sido abordadas en los trabajos realizados en refactorización. En concreto, los catálogos de refactorizaciones más utilizados en la actualidad, no abordan en particular la programación genérica y el uso de clases genéricas. La presente Tesis Doctoral aborda el problema de la definición e implementación de refactorizaciones sobre programación genérica en lenguajes orientados a objetos. Se trabaja con el objetivo de lograr una cierta independencia en la definición de refactorizaciones, y sobre refactorizaciones centradas en las clases genéricas y sus propiedades particulares. Como resultado, se propone un metamodelo que permite definir los conceptos básicos de los lenguajes de programación orientados a objetos, con especial hincapié sobre las características vinculadas a la programación genérica. A partir de la información disponible en este metamodelo, se propone una plantilla para la definición de refactorizaciones y el uso de un lenguaje de especificación. Se busca obtener el mayor grado de independencia del lenguaje en dichas definiciones, pero por otro lado, eliminar cierta subjetividad de la que adolecen otras definiciones. Con esta tesis, se describe un nuevo catálogo de refactorizaciones, centradas sobre programación genérica, validando la adecuación de la solución planteada. Para dar soporte a la implementación de la construcción y ejecución de las refactorizaciones se propone una arquitectura basada en frameworks, a partir de la cual se construye un prototipo. Esto permite un doble enfoque: general para los lenguajes de la familia de lenguajes de programación orientados a objetos, y particular para el lenguaje objetivo para el que se implementan los catálogos de refactorizaciones. Finalmente se valida la solución propuesta sobre un lenguaje concreto como Java. En resumen, se aporta un nuevo enfoque a la hora de abordar las refactorizaciones, que mejora algunas de las deficiencias encontradas en la actualidad.