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.
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 .
… 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).
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 .
considera tambié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.
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."
.
| Random links: | Cabo norteño | Isosurface | Ronny Thompson | Roberto von Mohl | Schad cristiano |