Rebanamiento estático

El rebanamiento estático es una técnica en el área de programación de computadoras conocida como mantenimiento de software. Es usada para identificar todo el código de programa que puede afectar de algún modo el valor de una variable dada.

Una descripción breve de su cálculo es el siguiente: Basado en la definición original de Mark Weiser una rebanada estática de programa (S) consiste de todas las sentencias en un programa P que pueden afectar el valor de la variable v en algún punto p. La rebanada es definida por un criterio de rebanamiento C=(x,V), donde x es una sentencia en un programa P y V es un subconjunto de variables en P. Una rebanada estática incluye todas las sentencias que afectan la variable v para un conjunto de todos los posibles inputs en el punto de interés. Las rebanadas estáticas son computadas encontrando conjuntos consecutivos de sentencias indirectamente relevantes, de acuerdo a los datos y dependencias de control.

Ejemplo

int i;
int suma = 0;
int producto = 1;
for(i = 0; i < N; ++i) {
  suma = suma + i;
  producto = producto * i;
}
write(suma);
write(producto);

El siguiente programa es un rebanamiento válido del anterior, respecto al criterio (write(suma),{suma}):

int i;
int suma = 0;

for(i = 0; i < N; ++i) {
  suma = suma + i;

}
write(suma);

De hecho, la mayoría de técnicas de rebanamiento estático, incluida la propia técnica de Weiser, tampoco incluirían la sentencia write(suma), ya que en la sentencia write(suma), el valor de suma no es afectado por la sentencia en sí.

Other Languages
македонски: Статично сечење