stringtranslate.com

Depuración de programas algorítmicos

La depuración algorítmica (también llamada depuración declarativa ) es una técnica de depuración que compara los resultados de los subcálculos con lo que pretendía el programador . La técnica construye una representación interna de todos los cálculos y subcálculos realizados durante la ejecución de un programa con errores y luego pregunta al programador sobre la corrección de dichos cálculos. Al hacerle preguntas al programador o usar una especificación formal , el sistema puede identificar con precisión dónde se encuentra un error en un programa . Las técnicas de depuración pueden reducir drásticamente el tiempo y el esfuerzo dedicados a la depuración .

Descripción general

La depuración de programas es una parte extremadamente común del desarrollo de software. Hasta la década de 1980, la técnica de la depuración de programas, practicada por todos los programadores, no tenía ninguna base teórica. [1] A principios de la década de 1980, se desarrollaron enfoques sistemáticos y basados ​​en principios para la depuración de programas. En general, un error ocurre cuando un programador tiene una intención específica con respecto a lo que el programa debe hacer, pero el programa realmente escrito exhibe un comportamiento diferente al previsto en un caso particular. Una forma de organizar el proceso de depuración es automatizarlo (al menos parcialmente) mediante una técnica de depuración algorítmica. [2] La idea de la depuración algorítmica es tener una herramienta que guíe al programador a lo largo del proceso de depuración de manera interactiva: lo hace preguntando al programador sobre posibles fuentes de errores. La técnica de depuración algorítmica construye una representación interna de todos los cálculos y subcálculos realizados durante la ejecución de un programa con errores (un árbol de ejecución). Luego, pregunta al programador sobre la corrección de dichos cálculos. El programador responde "SÍ" cuando el resultado es correcto o "NO" cuando el resultado es incorrecto. Algunos depuradores algorítmicos también aceptan la respuesta "No sé" cuando el programador no puede dar una respuesta (por ejemplo, porque la pregunta es demasiado compleja). De este modo, las respuestas del programador guían la búsqueda del error hasta que se aísla descartando las partes correctas del programa. El proceso de depuración algorítmica encuentra un error a la vez. Para encontrar errores diferentes, el proceso debe reiniciarse de nuevo para cada error diferente.

Orígenes, rumbos actuales y futuros

La depuración algorítmica fue desarrollada por primera vez por Ehud Shapiro durante su investigación de doctorado en la Universidad de Yale, como se presentó en su tesis de doctorado, [3] seleccionada como Disertación Distinguida ACM 1982. Shapiro implementó el método de depuración algorítmica en Prolog [4] (un lenguaje de programación lógica de propósito general) para la depuración de programas lógicos . En el caso de los programas lógicos , el comportamiento previsto del programa es un modelo (un conjunto de declaraciones verdaderas simples) y los errores se manifiestan como incompletitud del programa (incapacidad para probar una declaración verdadera) o incorrección (capacidad para probar una declaración falsa). El algoritmo identificaría una declaración falsa en el programa y proporcionaría un contraejemplo o una declaración verdadera faltante que debería agregarse al programa o su generalización. También se desarrolló un método para manejar la no terminación . La investigación y el desarrollo en el campo de la depuración algorítmica ha logrado mejoras importantes con respecto a los algoritmos originales para depurar Prolog y otros, y ha extendido las ideas a otros paradigmas de lenguaje, como los lenguajes funcionales y los lenguajes orientados a objetos . [5] Tres décadas después de su introducción, la depuración algorítmica sigue siendo un campo activo de investigación en ciencias de la computación [6] y probablemente seguirá siéndolo durante décadas, ya que no hay una panacea a la vista.

Referencias

  1. ^ Silva, Josep. "Un estudio sobre estrategias de depuración algorítmica". Advances in Engineering Software 42.11 (2011): 976-991/
  2. ^ Zeller, Andreas. Por qué fallan los programas: una guía para la depuración sistemática . Elsevier, 2009.
  3. ^ Shapiro, Ehud Y. (1983). Depuración de programas algorítmicos . Cambridge, Mass.: MIT Press. ISBN  0-262-19218-7
  4. ^ Clocksin, William F. y Christopher S. Mellish. Programación en PROLOG . Vol. 4. Berlín, etc.: Springer, 1987.
  5. ^ Naish, Lee. Un esquema de depuración declarativa . Departamento de Ciencias de la Computación, Universidad de Melbourne, 1995.
  6. ^ Caballero, Rafael, Riesco, Adrián, Silva, Josep. Un estudio sobre depuración algorítmica . ACM Computing Surveys, Volumen 50, Número 4, 2017.