La depuración algorítmica (también llamada depuración declarativa ) es una técnica que compara los resultados de los subcálculos con la intención del programador . Esta técnica crea una representación interna de todos los cálculos y subcálculos realizados durante la ejecución de un programa con errores y, a continuación, consulta al programador sobre la corrección de dichos cálculos. Mediante preguntas al programador o el uso de una especificación formal , el sistema puede identificar con precisión la ubicación del error en el 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 práctica de la depuración de programas, realizada por todos los programadores, carecía de fundamento teórico. [ 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 se produce cuando un programador tiene una intención específica sobre lo que el programa debería hacer, pero el programa 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 contar con una herramienta que guíe al programador a lo largo del proceso de depuración de forma interactiva: lo hace preguntándole 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 es incorrecto. Algunos depuradores algorítmicos también aceptan la respuesta «No lo sé» cuando el programador no puede dar una respuesta (por ejemplo, porque la pregunta es demasiado compleja). De esta forma, las respuestas del programador guían la búsqueda del error hasta aislarlo, descartando las partes correctas del programa. El proceso de depuración algorítmica encuentra un error a la vez. Para encontrar diferentes errores, el proceso debe reiniciarse para cada uno.
Orígenes, direcciones actuales y futuras
La depuración algorítmica fue desarrollada por primera vez por Ehud Shapiro durante su investigación doctoral en la Universidad de Yale , como se presentó en su tesis doctoral, [ 3 ] seleccionada como una de las Disertaciones Distinguidas de la ACM en 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 enunciados simples verdaderos) y los errores se manifiestan como incompletitud del programa (incapacidad para demostrar un enunciado verdadero) o incorrección (capacidad para demostrar un enunciado falso). El algoritmo identificaría un enunciado falso en el programa y proporcionaría un contraejemplo o un enunciado verdadero faltante que este o su generalización deberían agregarse al programa. 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 han introducido mejoras importantes con respecto a los algoritmos originales para depurar Prolog y otros lenguajes, extendiendo las ideas a otros paradigmas lingüísticos 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 ]
Referencias
- ↑ Silva, Josep. "Un estudio sobre estrategias de depuración algorítmica." Advances in Engineering Software 42.11 (2011): 976-991/
- ↑ Zeller, Andreas . Por qué fallan los programas: una guía para la depuración sistemática . Elsevier, 2009./
- ↑ Shapiro, Ehud Y. (1983). Depuración algorítmica de programas . Cambridge, Mass: MIT Press. ISBN 0-262-19218-7
- ↑ Clocksin, William F., y Christopher S. Mellish. Programación en PROLOG . Vol. 4. Berlín, etc.: Springer, 1987.
- ↑ Naish, Lee. Un esquema de depuración declarativo . Departamento de Ciencias de la Computación, Universidad de Melbourne, 1995.
- ↑ Caballero, Rafael, Riesco, Adrián, Silva, Josep. Un estudio sobre la depuración algorítmica . ACM Computing Surveys, Volumen 50 Número 4, 2017.
- Depuración