El problema de la integración d ela programación lógica y funcional estaá considerado como uno de los más importantes en el área de investigación sobre programación declarativa. Para que los lenguajes declarativos sean útiles y puedan utilizarse en aplicaciones reales, es necesario que el grado de eficiencia de su ejecución se aproxime al de los lenguajes imperativos. Para ello, es imprescindible el desarrollo de herramientas potentes para el análisis y transformacón de los programas, capaces de optimizar las implementaciones existentes. Esta tesis se centra en el desarrollo de tales técnicas, adoptándose la aproximación conocida como "reglas + estrategias" para la optimización de programas en un tentexto lógico-funcional unificado. Las reglas básicas que se usan son el plegado y el desplegado que aquí se definen en términos del Narrowing y sus refinamientos. Gracias a la propagación bidireccional de parámetros realizadas por el mecanismo de unificación del narrowing, se obtienen optimizaciones apreciables y es posible explotar la sinergía existente entre la sintaxis funcional (anidamientos funcionales, evaluaciones perezosas, etc.) y el uso de variables lógicas. Esta fisión unificada de ejecución y transformación de programas nos permite explotar los resultados conocidos en ambos campos, funcional y lógico, y desarrollar un esquema simple y potente para mejorar un programa con respecto a su capacidad para computar tanto valores a funciones como respuestas a objetivos. Presentamos algunas aplicaciones de las reglas de plegado y desplegado (semánticas formales pr desplegado y relaciones con las técnicas de evalación parcial). Además, mostramos que su combinación con otras reglas para la introducción y eliminación de difiniciones y reglas de abstracción permite obtener programas eficicientes cuando son dirigidas por estrategias adecuadas como son la composición o la formación de Tuplas. El esquema presentado constituye la primera aproximación correcta y completa ....