Bug

Bug
Información sobre la plantilla
Concepto:Error o defecto en el software o hardware que hace que un programa funcione incorrectamente

Bug informático. Un bug es un error o un defecto en el software o hardware que hace que un programa funcione incorrectamente. Dicho fallo puede presentarse en cualquiera de las etapas del ciclo de vida del software aunque los más evidentes se dan en la etapa de desarrollo y programación. Los errores pueden suceder en cualquier etapa de la creación de software.

En 1947, los creadores de Mark II informaron del primer caso de error en un ordenador causado por un insecto. El Mark II, ordenador sucesor de ASCC Mark I, construido en 1944, sufrió un fallo en un relé electromagnético. Cuando se investigó ese relé, se encontró una polilla que provocó que el relé quedase abierto.
Grace Murray Hopper, licenciada en Física y destacada matemática que trabajó como programadora en el Mark II, pegó el insecto con cinta adhesiva en la bitácora y se refirió a ella como "bicho" para describir la causa del problema.

Este incidente es erróneamente conocido por algunos como el origen de la utilización del término inglés "bug" (bicho) para indicar un problema en un aparato o sistema. En realidad, Thomas Edison ya había utilizado "bug" en algunas anotaciones relacionadas con interferencias y mal funcionamiento. Grace lo asoció por primera vez a la informática, en este caso, relacionado a un insecto real.

Algunos errores comunes de programación

• División por cero
• Ciclo infinito
• Problemas aritméticos como desbordamientos (overflow) o subdesbordamientos (underflow).
• Exceder el tamaño del array
• Utilizar una variable no inicializada
• Acceder a memoria no permitida (access violation)
• Pérdida de memoria (memory leak)
• Desbordamiento o subdesbordamiento de la pila (estructura de datos)
• Desbordamiento de búfer (buffer overflow)
• Bloqueo mutuo (deadlock)
• Indizado inadecuado de tablas en bases de datos.

Defectos de instalación o programación

• Eliminación o sustitución de bibliotecas comunes a más de un programa o del sistema (DLL Hell).
• Reiniciar arbitrariamente la sesión de un usuario para que la instalación tenga efecto.
• Presuponer que el usuario tiene una conexión permanente a internet.

Errores de lenguajes de programación

La mayor parte de los lenguajes de programación presentan al menos dos tipos de errores que permiten a los programadores manejar las fallas de los programas de una manera eficiente y que no resulte agresiva con el usuario final. Dichos errores son de compilación y errores en tiempo de ejecución.
Los errores de compilación normalmente inhiben que el código fuente derive en un programa ejecutable, mientras que los errores en tiempo de ejecución son situaciones específicas en las que un evento externo al programa impide su ejecución. Regularmente un programador eficiente debe intentar imaginar como debe responder ante esos eventos de manera que sea el programa y no el usuario o el sistema operativo los que resuelvan el problema.


Los diferentes lenguajes de programación permiten diferentes construcciones lógicas a los programadores para atrapar y resolver errores en tiempo de ejecución, como pueden ser las sentencias assert, try y on error en diferentes lenguajes de programación.

Los bugs menores, por ejemplo un cursor que no se comporta como está previsto, pueden ser incómodos, pero no dañan la información. Los bugs más graves pueden provocar que un programa se bloquee o se cuelgue (deje de responder a los comandos), lo que obliga al usuario a reiniciar el programa, perdiendo todo el trabajo que no haya guardado con anterioridad. En uno u otro caso el programador deberá buscar y corregir el error empleando el proceso denominado depuración. Debido al potencial riesgo que representa para los datos importantes, los programas de aplicación comerciales son comprobados y depurados lo más posible antes de su lanzamiento. Los bugs menores detectados después del lanzamiento del programa son corregidos en la siguiente actualización. Los bugs más severos a veces pueden solucionarse con software especial, denominado parche, que evita el problema o alivia de algún modo sus efectos. En hardware, un bug es un problema físico recurrente que impide que un sistema o un grupo de componentes funcionen conjuntamente de modo correcto.

Referencias

http://www.masadelante.com/faqs/bug

http://tecnologia.glosario.net/terminos.../bug-9667.html

http://www.catb.org/jargon/html/B/bug.html