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

Lenses y slicing

Supongamos que en [*] realizamos algunas sustituciones: en lugar de una base de datos $D$ tenemos un programa $P$, en lugar de una vista $V$ tenemos un slice $S$, y en lugar de hablar de consulta $q$ nos referimos a un criterio de slicing $c$. Realizando estas sustituciones el diagrama se reescribe como sigue


\begin{displaymath}
\xymatrix{
S \ar[r]^u & S' \\
P \ar[u]^c \ar[r]_t & P' \ar[u]_c
}
\end{displaymath} (5)

Por lo tanto, hay una correspondencia exacta entre los elementos que intervienen en el problema de la actualizaci'on de vistas en el contexto de las bases de datos, con los elementos que intervienen en el contexto de las t'ecnicas de slicing [#!We81!#].
Las t'ecnicas de slicing permiten enfocar la atenci'on sobre aspectos espec'ificos de la sem'antica de un programa, eliminando aquellas partes que no afectan la sem'antica de inter'es. El conjunto de sentencias involucradas con la sem'antica de inter'es se denomina slice. Una de los formatos m'as usuales que se adopta para especificar un criterio de slicing es mediante un par: (n'umero de sentencia, variable). Es decir, informalmente, el slice responde la pregunta: cuales son las sentencias que potencialmente afectan a la variable $v$ en la sentencia $n$?
Originalmente, el prop'osito del c'alculo y extracci'on de slices, era facilitar la detecci'on y correcci'on de errores, haciendo que la atenci'on del programador se focalice solo en las sentencias relevantes. Sin embargo, m'ultiples han sido los usos posteriores que los slices han tenido, as'i como tambi'en, diversos han sido los m'etodos que se han desarrollado para calcularlos, y que han dado origen a distintos tipos de slices.
Si bien son muy diversas las tareas de manipulaci'on de slices, una posible forma de clasificar las mismas es, seg'un conserven o no la sem'antica original. As'i, por ejemplo, durante actividades de re-ingenier'ia, podemos usar slicing para reesctructurar partes de un componente de software para mejorar su entendimento. Es decir, la tarea requiere conservar la sem'antica de el/los slice/s manipulados, y del componente. O bien, por cambios en los requerimientos, podemos modificar la sem'antica de un componente mediante t'ecnicas de slicing que focalicen la atenci'on del programador en la funcionalidad relacionada con los requerimientos. Es decir, la tarea requiere alterar la sem'antica de el/los slice/s, y del componente. En cualquier caso, tanto la reestructuraci'on de slices manteniendo la sem'antica, como la modificaci'on de slices para cambiar la misma, constituyen ejemplos generales de transformaciones $u$ en [*].
Por otro lado, las actividades de modificaci'on sint'actica o sem'antica de los slices est'an dirigidas por restricciones que determinan si tales modificaciones se ajustan o no, a los objetivos perseguidos por el programador. Es decir, es necesario dise nar tales restricciones y luego probar que las mismas se cumplen. Esto se corresponde con las transformaciones $t$ en [*], ya que estas representan los ajustes sobre $P$, que reflejan las transformaciones $u$ realizadas sobre $S$.
El problema principal a resolver en el contexto de las lenses aplicadas a cualquier dominio, es reducir la tensi'on entre el poder expresivo de las transformaciones $u$, con la robustez suministrada por las transformaciones $t$. Esto se produce debido a que cuando m'as rico es el conjunto de transformaciones $u$, m'as complejo se vuelve el dise no de las transformaciones $t$. Para disminuir esta tensi'on, se debe dise nar un enfoque adecuado para el problema de actualizaci'on de vistas orientado hacia un dominio espec'ifico [#!Focal2005-long!#].
En particular, el dominio de la aplicaci'on de slices en re-ingenier'ia de software es muy amplio, y abarca todas las t'ecnicas de manipulaci'on de c'odigo fuente conocidas, ya sea que conserven o modifiquen la sem'antica. En consecuencia, el dise no de un lenguaje bidireccional con una sem'antica s'olida, capaz de describir transformaciones para la manipulaci'on de slices, parece no ser una tarea trivial.


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