Sunteți pe pagina 1din 4

13/9/2019 Error de software - Wikipedia, la enciclopedia libre

Error de software
Un error de software, error o simplemente fallo (también conocido
por el inglés bug) es un problema en un programa de computador o
sistema de software que desencadena un resultado indeseado. Los
programas que ayudan a la detección y eliminación de cache de
programación de software son denominados depuradores (debuggers).

Entre las numerosas incidencias notables causadas por este tipo de error se
incluyen la destrucción, en 1962, de la sonda espacial Mariner 1,1 en 1996,
del Ariane 5 5012 y, en 2015, el Airbus A400M.3

Foto del origen de la leyenda acerca


del primer bug informático conocido.

Índice
Orígenes del término
Defectos de diseño de programas
Errores de programación comunes
Defectos de instalación o programación
Códigos de errores de lenguajes de programación
Véase también
Referencias
Enlaces externos

Orígenes del término


En 1947, ingenieros que trabajaban en el Mark II informaron que el ordenador sufrió un fallo en un relé
electromagnético. Cuando se investigó ese relé, se encontró una polilla (bug) que provocó que el relé quedase abierto.
Los ingenieros pegaron el insecto con cinta adhesiva en la bitácora con el comentario «First actual case of bug being
found», en español «Primer caso real de bug encontrado».4

Este incidente es erróneamente referido como el origen de la utilización del término inglés bug («bicho») para indicar
un problema en un aparato o sistema.5 6 En realidad, el término bug ya formaba parte del idioma inglés, al menos
desde que Thomas Alva Edison lo utilizó en 1889 refiriéndose a interferencias y mal funcionamiento en un
fonógrafo.7 Es posible que Hopper lo haya asociado por primera vez a la informática, en este caso, relacionado con un
insecto real. Por otra parte, aunque durante los años 50 del siglo XX, Hopper también empleó en inglés el término
debug al hablar de la depuración de errores en los códigos de programación, el primer uso registrado del término se
encuentra en la Journal of the Royal Aeronautical Society de 1945.8

Defectos de diseño de programas


Diseños con colores inapropiados para las personas que padecen daltonismo
Diseños que usan textos con tipografías de difícil lectura por su tamaño o diseño
Diseños que fuerzan el uso del ratón sin dejar alternativas de teclado para personas con disfunciones motrices
Diseños con implicaciones culturales, por ejemplo usando partes del cuerpo que en una determinada cultura
sean objeto de vergüenza o burla o símbolos con características de identidad cultural o religiosa

https://es.wikipedia.org/wiki/Error_de_software 1/4
13/9/2019 Error de software - Wikipedia, la enciclopedia libre

Estimar que el equipo donde se instalará tiene determinadas características (como la resolución de la pantalla, la
velocidad del procesador, la cantidad de memoria o conectividad a Internet) propias de un equipo de gama alta,
en vez de diseñar el software para su ejecución en equipos normales

Errores de programación comunes


Punto y coma ( ; )
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
Errores tipográficos varios, por ejemplo confundir el dígito "0" con la vocal "0", confundir el dígito "1" con la letras
"I" o "l", o escribir "," en lugar de "." como parte de nombres de variables en lenguajes donde no es necesario
delcarar las variables antes de usarlas. Por ejemplo, en Fortran IV los espacios no cuentan, por lo que cambiar
una coma por un punto en un bucle DO 100 I=1. 10 equivale a la asignación DO100I = 1.10 que por ser una
instrucción válida no la reporta el compilador.
Usar constantes mágicas, es decir que en lugar de definir una variable o macro para definir un parámetro que
puede cambiar, poner el valor en el código. Por ejemplo, declarar un arreglo float X[10] y usarla en bucles for
i=0 to 10 en varias partes del programa en lugar de definir una constate XSize=10; float X[XSize]; y usar
for i=0 to XSize, con lo que se evitan omisiones cuando se cambie la dimensión de X, ya que basta con con
cambiar XSize=20 en lugar de buscar en todo el código las constantes mágicas 10 para cambiarlas por 20.
Acceder a memoria no permitida (Violación de acceso)
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.
Corrupción de las bases de datos relacionales por no estar normalizadas.
Desbordamiento de la pila de recursión, cuando se dejan demasiadas llamadas en espera.
Programar por ensayo y error, en lugar de desarrollar los programas sistemáticamente.
No atender los mensajes de advertencia al momento de compilar un programa.
Errores que resultan del uso indiscriminado de variables de alcance global.
Errores por no declarar el tipo de las variables.
Errores que emergen porque el programador no toma en cuenta la semántica del lenguaje de programación. Por
ejemplo, desconocer si el alcance es léxico o dinámico.
No documentar correctamente el programa, provoca el no entender qué hace, lo que acarrea errores por no tener
claro lo que hace.

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.
Suponer que el usuario tiene una conexión permanente a internet.
Utilizar como fuente enlaces simbólicos a ficheros que pueden
cambiar de ubicación.

Pantalla de ordenador con error de


Códigos de errores de lenguajes de software en la Puerta 11 del
Aeropuerto de Santiago-Pudahel
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.

https://es.wikipedia.org/wiki/Error_de_software 2/4
13/9/2019 Error de software - Wikipedia, la enciclopedia libre

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. Por ejemplo, un
bloque de error no manejado podría hacer lo siguiente:

Abre el archivo "miarchivo" para escritura


comienza a escribir datos en mi archivo
cierra el archivo

Si "miarchivo" no existe (o el programa o el usuario no tienen privilegios suficientes para abrirlo), el sistema operativo
regresará un error que el programa no atrapará y tendremos un mensaje como "El archivo "miarchivo" no puede ser
abierto para escritura" y botones para reintentar, cancelar y abortar (en el sistema operativo Windows), que no
tendrán otra acción que repetirse indefinidamente sin posibilidad de salir de ese ciclo como no sea dando por
terminado violentamente el programa. Un código que permitiese atrapar el error en tiempo de ejecución sería:

Abre el archivo "miarchivo" para escritura


Si el sistema operativo lo permite
comienza a escribir datos en "miarchivo"
si no lo permitió
informa al usuario de lo que sucede
regresa al usuario a un punto donde no haya conflicto (el menú principal, por ejemplo)
Continúa operando normalmente

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.

Véase también
Last Error Depuración de programas
Agujero de seguridad Ingeniería de software
Bugtraq Exploit
Bugzilla Seguridad informática
Hotfix Common Vulnerabilities and Exposures (CVE)
Depurador Packet Storm

Referencias
5. bug (http://www.catb.org/jargon/html/B/bug.html)
1. (en inglés) «History's Worst Software Bugs.» Pág. 1.
(https://archive.is/20130902010756/www.wired.com/s 6. La polilla que voló dentro de un ordenador y el origen
oftware/coolapps/news/2005/11/69355?currentPage= de «bug informático» | Microsiervos (Leyendas
1) Wired. Consultado el 20 de marzo de 2014. Urbanas) (http://www.microsiervos.com/archivo/leyen
das-urbanas/polilla-volo-en-ordenador-y-origen-leyen
2. (en inglés) «History's Worst Software Bugs.» Pág. 2. da-bug.html)
(https://archive.is/20120918003503/www.wired.com/s
oftware/coolapps/news/2005/11/69355?currentPage= 7. «Was the first computer ‘bug’ a real insect?» (https://
2) Wired. Consultado el 20 de marzo de 2014. web.archive.org/web/20170402120340/https://en.oxfo
rddictionaries.com/explore/was-the-first-computer-bu
3. (en inglés) «Airbus Cites Assembly Problem in g-a-real-insect) (html). Oxford Living Dictionaries (en
A400M Crash.» (http://www.defensenews.com/story/d en-uk). Archivado desde el original (https://en.oxfordd
efense/2015/05/29/france-spain-aerospace-defence-a ictionaries.com/explore/was-the-first-computer-bug-a-
ccident-airbus/28142421/) Consultado el 22 de junio real-insect) el 2 de abril de 2017. Consultado el 15 de
de 2015. julio de 2018. «The term in fact originates not with
4. (en inglés) «Rear Admiral Grace Murray Hopper, computer pioneers, but with engineers of a much
USNR, (1906-1992)»: imagen: Photo #: NH 96566- earlier generation. The first example cited in the 20-
KN. (https://web.archive.org/web/20050709234230/ht volume historical Oxford English Dictionary is from
tp://www.history.navy.mil/photos/pers-us/uspers-h/g-h the Pall Mall Gazette of 11 March 1889: "Mr. Edison, I
oppr.htm) Naval History and Heritage Command. was informed, had been up the two previous nights
Consultado el 20 de marzo de 2014. discovering 'a bug' in his phonograph - an expression
https://es.wikipedia.org/wiki/Error_de_software 3/4
13/9/2019 Error de software - Wikipedia, la enciclopedia libre

for solving a difficulty, and implying that some 8. (en inglés) «bug». (http://www.worldwidewords.org/q
imaginary insect has secreted itself inside and is a/qa-bug1.htm) World Wide Words. Consultado el 20
causing all the trouble." It seems clear from this that de marzo de 2014.
the original ‘bug’, though it was indeed an insect, was
in fact imaginary.»

Enlaces externos
Wikimedia Commons alberga una categoría multimedia sobre Error de software.
Buscador de Vulnerabilidades por productos de INTECO-CERT (https://web.archive.org/web/20100514035150/htt
p://cert.inteco.es/vulnSearch/Actualidad/Actualidad_Vulnerabilidades/buscador_vulnerabilidades/)

Obtenido de «https://es.wikipedia.org/w/index.php?title=Error_de_software&oldid=117993258»

Esta página se editó por última vez el 4 ago 2019 a las 17:41.

El texto está disponible bajo la Licencia Creative Commons Atribución Compartir Igual 3.0; pueden aplicarse
cláusulas adicionales. Al usar este sitio, usted acepta nuestros términos de uso y nuestra política de privacidad.
Wikipedia® es una marca registrada de la Fundación Wikimedia, Inc., una organización sin ánimo de lucro.

https://es.wikipedia.org/wiki/Error_de_software 4/4

S-ar putea să vă placă și