next up previous
Siguiente: Lenses Subir: Transformaciones bidireccionales en slicing Anterior: Transformaciones bidireccionales en slicing

Introducci'on

La transformaci'on emparejada de software [#!RLammel04!#] consiste en la modificaci'on de m'ultiples artefactos de software de modo que permanezcan consistentes entre ellos. La transformaci'on bidireccional es un caso particular de transformaci'on emparejada de software, destinado a definir transformaciones coherentes de reconciliaci'on entre dos artefactos de software destinadas a restablecer, en cualquier momento, la consistencia entre ellos [#!HP08!#].
Las transformaciones bidireccionales se aplican en 'areas diversas: Desarrollo de software dirigido por el modelo [#!PStevens07!#,#!HHIKMN10!#], editores de estructuras, bases de datos relacionales, transformaci'on de datos [#!Ol08!#], etc. Las formas en que las transformaciones bidireccionales funcionan en cada 'area var'ian, pero en general, hay coincidencia en que una transformaci'on bidireccional entre dos fuentes de informaci'on $A$ y $B$, est'a compuesta por dos transformaciones unidireccionales, una desde $A$ hacia $B$ y otra desde $B$ hacia $A$. Cuando el flujo de datos desde $A$ hacia $B$, prevalece sobre el flujo de datos desde $B$ hacia $A$, se dice que $A$ es la entrada o fuente, en tanto $B$ la salida o destino. Por lo tanto, la transformaci'on de $A$ hacia $B$ se denomina forward transformation, mientras que la de $B$ hacia $A$ backward transformation [#!bxReport!#].
Una forma poco eficiente de dise nar transformaciones bidireccionales, es construir transformaciones separadas, cada una operando en sentidos opuestos, desde un modelo a otro. Obtenidas las mismas, luego es necesarios probar que son consistentes. La dificultad detr'as de este enfoque, es que una modificaci'on en una transformaci'on obliga a redefinir la otra y nuevamente probar que contin'uan siendo consistentes.
Una estrategia m'as efectiva, es dise nar un lenguaje dotado con la sem'antica necesaria para que una expresi'on que defina una transformaci'on de un modelo a otro, lo haga al mismo tiempo en el sentido contrario. Este enfoque ya ha sido aplicado en varios dominios [#!PStevens07!#], y la ventaja de disponer del mismo, es que la compatibilidad de las transformaciones est'a garantizada por construcci'on (correcto por construcci'on). El est'ardard QVT de OMG permite definir lenguajes en los cuales tales transformaciones pueden ser escritas.
Espec'ificamente, en [#!HHKN09!#] se establece una distinci'on en cuanto a los tipos de lenguajes para realizar transformaciones de modelos bidireccionales. Estos pueden estar basados en reglas (relacional), o bien, ser un lenguaje funcional como UnQL$^+$. La ventaja de aplicar un lenguaje funcional se debe a que la sem'antica bidireccional puede suministrarse de un modo compacto y formal.
Sin embargo, [#!HP08!#] indica que a'un no es claro c'omo el mecanismo funcional del n'ucleo de 2lt puede ser mejorado mediante el c'alculo relacional. En la misma direcci'on, [#!HHKN09!#] plantea que es necesario indagar m'as sobre la relaci'on entre el enfoque funcional adoptado por UnQL$^+$ con el enfoque basado en reglas con el fin de desarrollar un ambiente m'as poderoso para la transformaci'on bidireccional de modelos.
De acuerdo con lo anterior, resulta evidente que hay aspectos de la sem'antica de los lenguajes para modelar transformaciones bidireccionales, que son mejor resueltos desde un enfoque funcional y otros desde un enfoque relacional. La bibliograf'ia existente no muestra una postura definitiva sobre cuales son tales aspectos, por lo que la tem'atica permanece a'un abierta.


next up previous
Siguiente: Lenses Subir: Transformaciones bidireccionales en slicing Anterior: Transformaciones bidireccionales en slicing
Gustavo E. Villavicencio 2012-06-19