Metodologías de programación: depuración

Identificar y eliminar errores de un programa o software se denomina debugging. La depuración es idealmente parte del proceso de prueba, pero en realidad se realiza en cada paso de la programación. Los codificadores deben depurar el más pequeño de sus módulos antes de continuar. Esto disminuye la cantidad de errores que se producen durante la fase de prueba y reduce significativamente el tiempo y el esfuerzo de prueba. Veamos los tipos de errores que pueden surgir en un programa.

Errores de sintaxis

Syntax errorsson los errores gramaticales en un programa. Cada idioma tiene su propio conjunto de reglas, como la creación de identificadores, la escritura de expresiones, etc. para programas de escritura. Cuando se violan estas reglas, los errores se denominansyntax errors. Muchos modernosintegrated development environmentspuede identificar los errores de sintaxis a medida que escribe su programa. De lo contrario, se mostrará cuando compile el programa. Tomemos un ejemplo:

En este programa, la variable prod no ha sido declarada, que es lanzada por el compilador.

Errores semánticos

Semantic errors también se llaman logical errors. La instrucción no tiene errores de sintaxis, por lo que se compilará y se ejecutará correctamente. Sin embargo, no dará la salida deseada ya que la lógica no es correcta. Tomemos un ejemplo.

Mire la línea 13. Aquí el programador quiere verificar si el divisor es 0, para evitar la división entre 0. Sin embargo, en lugar de usar el operador de comparación ==, se ha usado el operador de asignación =. Ahora, cada vez que la "expresión si" se evaluará como verdadera y el programa dará un resultado como "No se puede dividir por 0". ¡Definitivamente no es lo que se pretendía!

Ningún programa puede detectar errores lógicos; tienen que ser identificados por el propio programador cuando no se alcanza el resultado deseado.

Errores en tiempo de ejecución

Los errores de tiempo de ejecución son errores que ocurren durante la ejecución del programa. Esto implica que el programa no tiene errores de sintaxis. Algunos de los errores de tiempo de ejecución más comunes que puede encontrar su programa son:

  • Bucle infinito
  • División por '0'
  • Valor incorrecto ingresado por el usuario (digamos, cadena en lugar de entero)

Optimización de código

Cualquier método mediante el cual se modifica el código para mejorar su calidad y eficiencia se denomina code optimization. Code qualitydetermina la vida útil del código. Si el código se puede utilizar y mantener durante un período prolongado, transferido de un producto a otro, se considera que su calidad es alta y tiene una vida útil más larga. Por el contrario, si un fragmento de código se puede usar y mantener solo por períodos cortos, digamos hasta que una versión sea válida, se considera que es de baja calidad y tiene una vida corta.

La confiabilidad y velocidad de un código determina code efficiency. La eficiencia del código es un factor importante para garantizar un alto rendimiento de un software.

Hay dos enfoques para la optimización del código:

  • Intuition based optimization (IBO)- Aquí el programador intenta optimizar el programa basándose en su propia habilidad y experiencia. Esto podría funcionar para programas pequeños, pero falla estrepitosamente a medida que aumenta la complejidad del programa.

  • Evidence based optimization (EBO)- Aquí se utilizan herramientas automatizadas para descubrir los cuellos de botella en el rendimiento y luego las partes relevantes se optimizan en consecuencia. Cada lenguaje de programación tiene su propio conjunto de herramientas de optimización de código. Por ejemplo, PMD, FindBug y Clover se utilizan para optimizar el código Java.

El código está optimizado para el tiempo de ejecución y el consumo de memoria porque el tiempo es escaso y la memoria cara. Tiene que haber un equilibrio entre los dos. Sitime optimization aumenta la carga en la memoria o memory optimization hace que el código sea más lento, se perderá el propósito de la optimización.

Optimización del tiempo de ejecución

Es necesario optimizar el código para el tiempo de ejecución para proporcionar un servicio rápido a los usuarios. Aquí hay algunos consejos para optimizar el tiempo de ejecución:

  • Utilice comandos que tengan optimización del tiempo de ejecución incorporada

  • Use el interruptor en lugar de la condición if

  • Minimizar las llamadas a funciones dentro de las estructuras de bucle

  • Optimizar las estructuras de datos utilizadas en el programa.

Optimización de memoria

Como sabe, los datos y las instrucciones consumen memoria. Cuando decimos datos, también se refiere a datos provisionales que son el resultado de expresiones. También necesitamos hacer un seguimiento de cuántas instrucciones están componiendo el programa o el módulo que estamos tratando de optimizar. Aquí hay algunos consejos paramemory optimization -

  • Utilice comandos que tengan optimización de memoria incorporada

  • Mantenga el uso de variables que deben almacenarse en registros como mínimo

  • Evite declarar variables globales dentro de bucles que se ejecutan muchas veces

  • Evite el uso de funciones intensivas de CPU como sqrt ()