Model Driven Architecture (MDA) define un proceso de construcción de software basado en la producción y transformación de modelos. En Ingeniería de Software, refactorización es la técnica que reestructura código de una aplicación, alterando su estructura interna sin modificar su comportamiento externo. Por otro lado, Java Modeling Language (JML) es un lenguaje para especificar programas Java, utiliza precondiciones, postcondiciones e invariantes de la lógica de Hoare.
Este trabajo plantea una técnica basada en MDA que posibilita la construcción de una herramienta automática que tomará como entrada código de una aplicación Java y realizará optimizaciones en su diseño basándose en reglas de refactoreo. La técnica requiere contar con los contratos JML de los métodos de las clases involucradas. El principal aporte de este trabajo es la utilización de contratos JML para asegurar que el comportamiento de un módulo se mantiene sin cambios, luego de la aplicación de reglas de refactoreo.