Un insecto de software del (o apenas " bug") es un error, un defecto, un error, una falta, o una avería en un programa de computadora que evite que se comporte según lo previsto (e., produciendo un resultado incorrecto). La mayoría de los insectos se presentan de los errores y de los errores hechos por la gente en el código fuente de un programa o su diseño, y algunos son causados por los recopiladores produciendo código incorrecto. Un programa que contiene una gran cantidad de insectos, y/o los insectos que interfieren seriamente con su funcionalidad, reputa el cochecillo . Los informes que detallan insectos en un programa se conocen comúnmente como informes de insecto del, informes de la avería, informes del problema, informes de apuro, peticiones del cambio, y así sucesivamente.

Efectos

Los insectos pueden tener una gran variedad de efectos, con los niveles de variación de inconveniencia al usuario del programa. Algunos insectos tienen solamente un efecto sutil en la funcionalidad del programa, y pueden mentir así desapercibido durante mucho tiempo. Insectos más serios pueden causar el programa al desplome o el helada que lleva a una negación del servicio . Otros califican como los insectos de la seguridad y pudieron por ejemplo permitir a un usuario malévolo puentear los controles de acceso para obtener privilegios desautorizados.

Los resultados de insectos pueden ser extremadamente serios. Un insecto en el código que controlaba la máquina de la radioterapia Therac-25 era directo responsable de algunas muertes pacientes en los años 80. En 1996, el cohete de Ariane 5 del prototipo de s US$1 mil millones de la Agencia Espacial Europea el 'fue destruido menos que un minuto después del lanzamiento, debido a un insecto en el programa de computadora a bordo de la dirección. En junio de 1994, un chinuk de Royal Air Force se estrelló en el reflexionar sobre de Kintyre, matando 29. Esto fue despedida inicialmente como error experimental, pero una investigación por la computadora semanal destapó prueba suficiente para convencer una Cámara de los lores la investigación que pudo haber sido causada por un insecto de software en la computadora de control de motor del avión .

Etimología

El concepto que el software pudo contener errores data de 1842 en el Ada que las notas de Byron sobre el motor analítico en el cual ella habla de la dificultad de preparar programa “carda” para motor analítico de s de Babbage Charles el ':

… un proceso que analiza se debe haber realizado igualmente para suministrar el motor analítico con los datos operativos necesarios; y eso adjunto puede también mentir una fuente de error posible. Dado que el mecanismo real es infalible en sus procesos, las tarjetas pueden darle órdenes incorrectas.

Uso del " del término; bug" para describir defectos inexplicables ha sido una parte de jerga de la ingeniería por muchas décadas y precede los programas informáticos del computadora y; pudo haber sido utilizada original en la ingeniería del hardware para describir malfuncionamientos mecánicos. Por ejemplo, el Thomas Edison escribió las palabras siguientes en una letra a un asociado en el 1878 :

Ha estado apenas tan en todas mis invenciones. El primer paso es una intuición, y viene con una explosión, entonces arise&mdash de las dificultades; esta cosa da hacia fuera y el es entonces que " Bugs" — pues tales pequeñas averías y dificultades son called— la demostración ellos mismos y los meses de la observación, del estudio y del trabajo intensos son indispensables antes de que el éxito o la falta comercial se alcance ciertamente.

Los problemas con electrónica del radar durante la Segunda Guerra Mundial fueron referidos como el insecto s del (o interferencias), y hay evidencia adicional que data el uso mucho anterior.

La invención del término a menudo se atribuye erróneamente a la tolva de la tolerancia, que publicó la causa de un malfuncionamiento en una computadora electromecánica temprana. Una versión típica de la historia es dada por esta cotización:

En 1946, cuando la tolva fue lanzada de servicio activo, ella ensambló a facultad de Harvard en el laboratorio del cómputo en donde ella continuó su trabajo en la marca II y los operadores de la marca III. remontó un error en la marca II a una polilla atrapada en un relais, acuñando el insecto término. Este insecto fue quitado y grabado cuidadosamente diarios de operación al 1945 del 9 de septiembre ''. Proviniendo el primer insecto, llamamos hoy errores o de la interferencia '' en un programa un insecto del .

La tolva no era realmente la persona que encontró el insecto, pues ella reconoció fácilmente. Y la fecha era el 9 de septiembre, pero en el 1947, no 1945. Los operadores que la encontraron (" incluyendo de Guillermo; Bill" Burke, más adelante del laboratorio de las armas navales, Dahlgren Va. ), era familiar con el término de la ingeniería y, divertido, mantenido el insecto con el " de la notación; Primer caso real del insecto que es found." La tolva amó contar de nuevo la historia.

Mientras que es cierto que los operadores de la marca II no acuñaron el " del término; bug", se ha sugerido que acuñaron el término relacionado, " El elimina errores del " de ;. Incluso esto es inverosímil, desde la entrada del diccionario del inglés de Oxford para el " debug" contiene un uso del " debugging" en el contexto de los motores del aeroplano en 1945 (véase el artículo del depuración para más).

Prevención

Los insectos son una consecuencia de la naturaleza de los factores humanos en la tarea programada. Se presentan de los descuidos hechos por los informáticos durante diseño, la codificación y la entrada de datos. Por ejemplo: En crear un programa relativamente simple para clasificar una lista de palabras en orden alfabético, su diseño pudo no poder considerar qué debe suceder cuando una palabra contiene un guión . Quizás, al convertir el diseño abstracto en el lenguaje de programación elegido, uno pudo crear inadvertidamente un Apagado-por-uno el error y no poder clasificar la palabra pasada en la lista. Finalmente, al mecanografiar el programa resultante en la computadora, uno pudo mecanografiar accidentalmente “<” donde “>” fue pensado, quizás dando por resultado las palabras que son clasificadas en orden alfabético reverso. Insectos más complejos pueden presentarse de interacciones involuntarias entre diversas partes de un programa de computadora. Esto ocurre con frecuencia porque los programas de computadora pueden ser complejos - millones de líneas de largo en algunos casos - que son programados a menudo por mucha gente sobre una gran longitud del tiempo, de modo que los programadores no puedan seguir mentalmente cada manera posible de la cual las piezas puedan obrar recíprocamente. Otra categoría de insecto llamada una condición de raza viene sobre cualquiera cuando un proceso está funcionando en más de un hilo de rosca o dos o más procesos funcionados con simultáneamente, y la orden exacta de la ejecución de las secuencias críticas de código no se ha sincronizado correctamente.

La industria del software ha puesto mucho esfuerzo en encontrar los métodos para evitar que los programadores introduzcan inadvertidamente insectos mientras que escribe software. Éstos incluyen:

; Estilo programado: Mientras que los errores tipográficos en el código del programa son cogidos muy probablemente por el recopilador, un insecto aparece generalmente cuando el programador hace un error de lógica. Las varias innovaciones en el estilo programado y el programado defensivo se diseñan para hacer estos insectos menos probablemente, o más fácil manchar.

; Técnicas de programación: Los insectos crean a menudo inconsistencias en los datos internos de un programa corriente. Los programas se pueden escribir para comprobar la consistencia de sus propios datos internos mientras que funcionan. Si se encuentra una inconsistencia, el programa puede parar inmediatamente, para poder ser localizado y fijar el insecto. Alternativo, el programa puede informar simplemente al usuario, intentar corregir la inconsistencia, y continuar funcionando.

; Metodologías del desarrollo: Hay varios esquemas para la actividad de manejo del programador, para producir pocos insectos. Muchos de estos caída bajo disciplina de la ingeniería de programas informáticos (que aborda ediciones de diseño de software también.) Por ejemplo, las especificaciones de programa formales se utilizan para indicar el comportamiento exacto de programas, para poder eliminar insectos del diseño.

; Ayuda de programación del lenguaje: Los lenguajes de programación incluyen a menudo las características que ayudan a programadores a ocuparse de los insectos, tales como dirección de excepción . Además, muchas idiomas reciente-inventadas han excluido deliberadamente las características que pueden llevar fácilmente a los insectos. Por ejemplo, el lenguaje de programación de Java no apoya aritmética del indicador .

Depuración

considera también:

l depuración

El encontrar e insectos de fijación, o " debugging", han estado siempre las mayores partes de la programación de computadora . El Mauricio Wilkes, pionero computacional temprano, describió su realización en los últimos años 40 que mucho de los restos de la vida estaría pasado que encuentra errores en sus propios programas. Mientras que los programas de computadora crecen más complejos, los insectos llegan a ser mas comunes y difíciles de fijar. Los programadores pasan a menudo más tiempo y esfuerzo que encuentran y los insectos de fijación que nuevo código de la escritura.

Generalmente, la parte más difícil de depuración está estableciendo la parte errónea del código fuente . Una vez que se encuentra el error, la corrección de él es generalmente fácil. Los programas conocidos como depuraciones existen para ayudar a programadores a localizar insectos. Sin embargo, incluso con la ayuda de una depuración, la localización de insectos es algo de un arte. No es infrecuente que un insecto en una sección de un programa cause faltas en una sección totalmente diversa, así haciéndola especialmente difícil seguir (por ejemplo, un error en una rutina gráfica de la representación que causa una rutina de la entrada-salida del archivo al fall); esto es causada lo más comúnmente posible por los errores que llevan a la corrupción de las instrucciones o de las variables de programa en memoria.

Típicamente, el primer paso en la localización de un insecto está encontrando una manera de reproducirla fácilmente. Una vez que se reproduce el insecto, el programador puede utilizar una depuración o un poco de otra herramienta para supervisar la ejecución del programa en la región culpable, y encuentra el punto en el cual el programa se perdió. A veces, un insecto no es una sola instrucción dañada, sino representa un error de pensamiento o de planificación de parte del programador. Tales errores de lógica 'requieren una sección del programa ser reacondicionados o ser reescritos.

No es siempre fácil reproducir insectos. Algunos insectos son accionados por las entradas al programa que puede ser difícil para que el programador reconstruya. Una causa de las muertes de la máquina de la radiación Therac-25 era un insecto que ocurrió solamente cuando el maquinista incorporó muy rápido un plan del tratamiento; tardó días de práctica de llegar a ser capaz de hacer esto, así que el insecto no manifestó en la prueba o cuando el fabricante intentó duplicarla. Otros insectos pueden desaparecer cuando el programa se funciona con con una depuración; éstos son Heisenbugs (nombrado chistoso después del principio de incertidumbre de Heisenberg .)

El depuración sigue siendo una tarea aburrida que requiere considerable mano de obra. Desde los años 90, particularmente siguientes el desastre del vuelo 501 de Ariane 5, ha habido un interés renovado en el desarrollo de ayudas automatizadas eficaces al depuración. Por ejemplo, los métodos del análisis estático del código por la interpretación del extracto han hecho ya logros significativos, mientras que todavía siguen siendo mucha de obras en fase de creación.

Insectos de manejo

Es práctica común para que el software sea lanzado con los insectos sabidos que se consideran no críticos. Mientras que los productos de software contienen un número desconocido de insectos desconocidos cuando están enviadas, de sigue habiendo las medidas durante la prueba pueden proporcionar una estimación estadístico confiable del número probable de los insectos. La mayoría de los proyectos de software grandes mantienen una lista de " bugs" sabido;. Esta lista informa a usuarios sobre los insectos que no se fijan en la versión actual, o no fijado en absoluto, y una solución alternativa se ofrece a menudo además.

Hay varias razones de tal lista:
Los reveladores no tienen a menudo tiempo para fijar todos los insectos no-severos.
El insecto podría ser fijado en nueva un remiendo de la versión o que todavía no se lanza.
Los cambios al código requerido para fijar el insecto serían grandes, y traerían con ellos la ocasión de introducir otros insectos en el sistema.

Dado el antedicho, a menudo se considera imposible escribir software totalmente sin faltas de cualquier complejidad verdadera. Los insectos son categorizados tan por la severidad, y los insectos no críticos de la bajo-severidad se toleran, pues no afectan la operación apropiada del sistema, para la mayoría de usuarios. El SATC de la NASA manejó reducir el número de errores menos a de 0.1 por 1000 líneas de código ( SLOC ) pero éste no era sentido para ser factible para ninguna proyectos del mundo real.

Una escuela de pensamiento, popularizada por el Eric S. Raymond como ley de Linus en su del ensayo la catedral y el bazar, sostiene que el software popular de la Abrir-fuente lleva a cabo una mejor ocasión del tener pocos o ningunos insectos que el otro software, porque " dado bastantes globos del ojo, todos los insectos son shallow". Se ha disputado esta aserción, al menos: la recaudación de Elias del especialista de la seguridad de computadora escribió ese " es fácil ocultar vulnerabilidades en el código fuente del complejo, poco entendida e indocumentada, " porque, " incluso si la gente está repasando el código, ése no significa que la califican hacer so."

Insectos famosos de la computadora

Exploración de espacio

El marino 1 de la NASA fue apagado-curso durante el lanzamiento, debido a desaparecidos overbar en las especificaciones para su software del FORTRAN ( el 22 de julio, el 1962 ). Observar que la información inicial de este insecto de software era incorrrect (otro insecto!).
Problema del aterrizaje de Apolo 11 de la NASA ( el 20 de julio, 1969 ).
Viajero 2 ( el 25 de enero de la NASA, 1986 ).
Phobos 1 perdido ( 10 de septiembre, 1988 ).
Autodestrucción del vuelo 501 de Ariane 5 del ESA 40 segundos después del despegue ( el 4 de junio, 1996 ).
La órbita del clima de Marte de la NASA destruyó debido a la entrada de los datos del ímpetu en las unidades imperiales en vez de la sistema métrico ( el 23 de septiembre, el 1999 ).
Marte Lander polar perdido ( 3 de diciembre, 1999 ).
Heladas de Marte Rover de la NASA debido a demasiados archivos abiertos en memoria Flash ( el 21 de enero, 2004 ).
La falta de la batería de Mars Global Surveyor de la NASA era el resultado de una serie de acontecimientos ligados a un error de la computadora hecho cinco meses antes ( el 2 de noviembre, el 2006 ).

médico

Los accidentes Therac-25 (1985-1987), que causaron por lo menos cinco muertes.

que computa

El problema del año-2000, conocido popular como el " Bug" de Y2K;, miedos frezados del derrumbamiento económico mundial y una industria de los consultores que proporcionan arreglos de última hora.
El insecto del Pentium FDIV.

Transmisión de energía eléctrica

El apagón 2003 de Norteamérica fue accionado por una interrupción local que iba desapercibido debido a una condición de raza en software de la supervisión de XA/21 de la energía de General Electric.

Telecomunicaciones

Desplome de la red interurbana de AT&T ( el 15 de enero, 1990), documentado en de s de Bruce esterlina el 'la medida enérgica del pirata informático.

militar

El error de software MIM-104 de un patriota, que contribuyó en última instancia a las muertes de 28 americanos en el Dahran, la Arabia Saudita ( el 25 de febrero, 1991 ).
El desplome del chinuk encendido reflexiona sobre de Kintyre : la causa de este acontecimiento sigue siendo un misterio, pero se han levantado las suspicacias fuertes que los problemas de programación eran un factor contributario.
La nave elegante USS Yorktown fue dejada a muertos en el agua en 1998 por casi 3 horas después de que una divisoria por el error cero de .

Juegos video

El Missingno y la ciudad de la interferencia desinsecta, encontraron en la serie de Pokémon
El mundo menos en la versión de NES de los hermanos estupendos de Mario del
de Eve en línea “de s el despliegue del remiendo de la trinidad, que borró el archivo de boot.ini apagado de varios de mil usuarios” las computadoras (la codificación real era supone para borrar el archivo de boot.ini del directorio de /eve de la base).

Vulnerabilidades de seguridad

El software malévolo puede intentar explotar las vulnerabilidades sabidas en un sistema - que los mayo o mayo no ser insectos. Los virus son insectos del no en sí mismos - son típicamente los programas que están haciendo exacto qué los diseñaron para hacer. Sin embargo, los virus se refieren de vez en cuando como tal en la prensa popular.

Tipos comunes de insectos de la computadora

Divisoria por cero
Dereference del puntero NULO
Bucles infinitos * desbordamiento aritmético o desbordamiento de capacidad inferior
Exceder los límites del arsenal
Usar una variable Uninitialized
Memoria de acceso no poseída (violación de acceso )
Escape de memoria o escape de la manija
Desbordamiento o desbordamiento de capacidad inferior del apilado
Desbordamiento del almacenador intermediario
Callejón sin salida
apagado por un error
Condición de raza
Pérdida de precisión en el tipo conversión

Insectos en cultura popular

En el 2001 del de 1968 novelas: Una odisea (y la película correspondiente ), computadora a bordo de una nave espacial, HAL 9000 del espacio, se programa con dos objetivos en conflicto: para divulgar completamente toda su información, y guardar el propósito verdadero del secreto del vuelo del equipo. Este conflicto hace HAL intentar eventual matar a todos los miembros de equipo (puesto que, si no hubiera equipo, allí no sería contradicción).
En los globos rojos 1984 99 del de la canción (sin embargo no en la versión alemana original), " insectos en el software" llevar a una computadora que confunde un grupo de globos desde un misil nuclear y que comienza una guerra nuclear .
El nuevo 2004 el insecto, por el Ellen Ullman, está sobre la tentativa de un programador de encontrar un insecto evasivo en un uso de base de datos.

Ver también

Interferencia
ISO 9126, que clasifica un insecto como un defecto o inconformidad
Solución alternativa
Sistema de seguimiento del insecto
Putrefacción del pedacito
Anti-patrón
Insectos de software inusuales (schroedinbug, heisenbug, insecto de Bohr, y mandelbug)
Las pasas histéricas, o duro-a-explican las características que se guardan para la compatibilidad hacia atrás

.

  • Zenithic
  • Sergey Filimonov
    Random links:Cabo norteño | Isosurface | Ronny Thompson | Roberto von Mohl | Schad cristiano

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">