Resum L'avaluació parcial dirigida per narrowing (NPE: Narrowing-driven Partial Evaluation) és una tècnica potent per a l'especialització de sistemes de reescriptura, i.e., per al component de primer ordre de molts llenguatges declaratius (lògic) funcionals com Haskell, Curry o Toy. Els avaluadors parcials es classifiquen en dos grans categories: online i offline, d'acord al moment temporal que es consideren els aspectes de terminació del procés d'especialització. Els avaluadors parcials online són usualment més precisos ja que tenen més informació disponible. En particular, l'esquema original NPE, el qual segueix l'aproximació online, considera una variant del teorema de Kruskal (Kruskal's Tree Theorem) anomenada "subsumpció homeomòrfica" [Leuschel 2002], per a assegurar la terminació del procés: si un terme subsumeix algun terme previ en la mateixa computació de narrowing, s'aplica alguna forma de generalització---usualment l'operador de generalització més específica---i l'avaluació parcial es reinicia amb els termes generalitzats. No obstant això, les proves per al test de subsumpció, juntament amb les generalitzacions associades, fan que l'esquema NPE online siga molt costós (en termes de temps i espai), pel que no s'adapta adequadament a problemes realistes com l'especialització d'intèrprets. Els avaluadors parcials offline procedeixen comunament en dues etapes; la primera etapa processa un programa (e.g., per a identificar aquelles crides a funció que es poden desplegar sense risc de no terminació) i inclou anotacions per a guiar les computacions parcials; llavors, una segona etapa, la d'avaluació parcial pròpiament dita, només ha d'obeir les anotacions i per tant el especialitzador és molt més ràpid que en l'aproximació online. En aquesta tesi es presenta un nou esquema d'avaluació parcial dirigit per narrowing, més eficient i que assegura la terminació seguint l'estil offline. Per a això, identifiquem una caracterització de programes quasi-terminants als quals anomenem "no creixents". En tals programes, les computacions per narrowing necessari presenten només un conjunt finit de termes diferents (mòdul reanomenament de variables). La propietat de la quasi-terminació és important atès que la seva presència és regularment una condició suficient per a la terminació del procés d'especialització. No obstant això, la classe de programes quasi-terminants és molt restrictiva, pel que introduïm un algorisme que accepta programes inductivament seqüencials---una classe molt més àmplia sobre la qual està definit el narrowing necessari---i anota aquelles parts que violen la caracterització de programes no creixents. Per a processar de manera adequada els nous termes anotats estenem la relació de narrowing, a la qual anomenem: narrowing necessari generalitzant. Una vegada definit l'esquema, desenvolupem un prototip per a l'avaluació parcial offline dirigida per narrowing. La validació experimental llança resultats que mostren una millora significativa en el temps d'especialització offline pel que fa a l'esquema online. Recentment, s'ha formulat un nou principi per a l'anàlisi de terminació dels programes basat en el canvi de grandària dels arguments de les crides a funció. Amb la finalitat de millorar la precisió de la fase d'anotació pròpia del nou esquema, hem adaptat els grafs de canvi de grandària (grafs size-change), introduïts originalment per als llenguatges funcionals, als llenguatges lògic funcionals. En particular els grafs ens són útils per a determinar una forma específica de quasi-terminació, que finalment utilitzem per a realitzar anotacions a l'estil de la nostra primera proposta offline. Els llenguatges encastats de domini específic (DSELs) generen codi ineficient a causa de la sobrecàrrega d'interpretació, pel que [Hudak 1998, Seefried et al. 2004, Christensen 2003] entre uns altres, plantegen l'ús de les tècniques d'avaluació parcial com un mitjà per a remeiar aquest inconvenient. En aquest punt, seleccionem el domini dels routers, en particular el model de routers software Click i desenvolupem un llenguatge d'especificació per a routers denominat Rose, encastat en el llenguatge Curry. Els DSELs aporten una via de prova interessant en dos aspectes: primer, han permès exercitar els conceptes de la programació lògic funcional en la generació de llenguatges de domini específic; i segon, ens han proporcionat exemples per a l'especialització de programes mitjançant les tècniques NPE offline desenvolupades.