¿Problemas de visión? En Tecsify nos importa la inclusión de personas con discapacidad, por eso, ahora puedes esuchar los articulos narrados en tiempo real
En la era digital, los bugs pueden llegar a afectar nuestras vidas, la economía global e incluso el buen funcionamiento de la sociedad, en general, esto ya se ha visto en el pasado con bugs que cambiaron al mundo tal y como lo conocemos.
A medida que el internet de las cosas vaya invadiendo poco a poco todos los aspectos de nuestro entorno, la importancia de identificar y prevenir los bugs crecerá de forma exponencial.
¿Qué es un bug?
En software, un bug es un error no controlado en el sistema. generalmente los bugs ocasiona que el sistema funcione de forma inadecuada y genera un resultado indeseado, Ningún sistema de información está libre de errores.
Existen programas que ayudan a la detección y eliminación de errores de software, estos son denominados depuradores (en inglés, debuggers).
Breve historia del término ‘bug’:
El 9 de septiembre de 1947, la física y matemática Grace Murray Hopper y otros que trabajaban en la Universidad de Harvard en el Mark II informaron de que el ordenador sufrió un fallo en el relé electromagnético, cuando se investigó, el equipo encontró una polilla (bug) electrificada que provocó que el relé quedase abierto. Hopper pegó el insecto con cinta adhesiva en la bitácora con el comentario “First actual case of bug being found”.
Para muchos, Grace Hopper fue la persona que acuñó este término para referirse a errores en el código de un programa informático que provocan resultados no deseados; si bien, la palabra “bug” ya se usaba antes de 1947 en ingeniería.
También puede interesarte: ¿Qué es Docker y cómo funciona?
Bugs que marcaron la historia:
Therac-25: El bug de las sobredosis de radiación mortales
Uno de los fallos más grandes de software que se recuerdan fue el que afectó al acelerador lineal médico modelo Therac-25. Esta máquina -que costaba 1 millón de dólares- se usaba para tratar a pacientes de cáncer con radioterapia y, debido a un error de software, costó la vida de varios pacientes en entre los años 1985 y 1987.
Lo que ocurrió es que, debido a un fallo en el software de control, en ocasiones se exponía a los pacientes al haz de alta intensidad sin la protección intermedia de la placa metálica, causando una exposición a dosis letales de radiación (100 veces mayores de lo esperado) y acabando con la vida de estos meses más tarde. Los anteriores modelos tenían un control mecánico y por hardware que detectaba si estaba o no puesta la placa impidiendo activar el haz de alta intensidad si no era así. En el Therac-25 esto se dejó al criterio del software, que no detectaba bien esto debido a una condición de carrera en el programa.
Cabe destacar que en la actualidad los aceleradores lineales, son muy seguros, la humanidad ha ido aprendiendo de sus errores, y es muy importante destacar la importancia de realizar pruebas de software, ya que puede que de eso dependan muchas vidas, y por lo cual debemos de ser muy responsables como programadores.
Knight Capital: El bug que costó más de 440 millones de dólares:
Knight Capital es una compañía de inversión que se dedica a la compra-venta de acciones en la bolsa de Wall Street, con la idea de ganar celeridad en las operaciones y automatizar procesos, la compañía recurrió a una aplicación para realizar transacciones de manera automática y programó una serie de compras y ventas que se debían ejecutar durante varios días.
El 1 de agosto de 2012 Knight Capital provocó una disrupción del mercado de bolsa que le llevó a perder en dos días el 75% de su capitalización bursátil. ¿Qué terminó pasando? El sistema en vez de ejecutar las operaciones siguiendo la línea temporal que se había planificado, terminó realizando las transacciones una tras otra y, por tanto, realizando las compras y las ventas al precio del 1 de agosto. Millones de acciones fueron cambiando de manos a un ritmo frenético y sin control, provocando que la compañía perdiese el equivalente a 4 veces sus beneficios del año pasado. Además de las pérdidas, la reputación de la compañía cayó por los suelos y el valor de sus acciones pasó de 4 dólares a algo menos de 1 dólar, es decir, prácticamente nada.
Un bug con una duración de 45 minutos fue suficiente para llevar al borde del abismo a la compañía y su cartera de clientes además de provocar problemas al funcionamiento del propio Wall Street y unas 100 compañías cuyas acciones fueron vendidas sin control.
Y2K: El bug que iba a “Terminar con el mundo”:
Los desarrolladores de software del siglo pasado nunca habrían pensado que sus creaciones sobrevivirían hasta el nuevo milenio. Por esta razón, muchos asumieron que escribir “19” antes de las variables “año” era un gasto de memoria innecesario. La mayoría decidió omitir esto dos dígitos.
Todo bien hasta que nos acercamos al 31 de diciembre de 1999: nos dimos cuenta que, por esa decisión, los sistemas informáticos pasarían en año nuevo al 1 de enero de 1900 en lugar de 2000 y, a raíz de esto, se desatarían grandes catástrofes y sería el fin de la humanidad.
Sin embargo, seguimos aquí para contarlo: los misiles nucleares no se dispararon solos, no cayeron aviones del cielo y los bancos no perdieron toda la información de sus clientes.
Este bug fue real. Se gastaron miles de millones de dólares para actualizar sistemas informáticos en todo el planeta. Además, se registraron algunos incidentes, aunque no muy críticos: En España, fallaron unos parquímetros. El instituto francés de meteorología publicó en su web un parte del tiempo del 1 de enero de 19100 y en Australia, las máquinas validadoras de algunos autobuses dejaron de funcionar.
Bugs importantes para casos de estudios:
Mariner I (julio 1962). Un error en el software de la sonda Mariner I hace que el cohete se desvíe de su trayectoria cayendo sobre el Océano Atlántico.
Gasoducto soviético (1982). Una serie de acciones de espionaje por parte de la CIA para controlar el gaseoducto transiberiano acabo instalando un bug que provocó la mayor explosión no nuclear de la historia.
1988 – El gusano de Morris y el desbordamiento de búfer (1988). El primer gusano de Internet (el Gusano de Morris) infectó entre 2.000 y 6.000 ordenadores en menos de un día, aprovechando un desbordamiento de búfer.
AT & T caida de la red (1990). Bug que colapsó 114 ordenadores, que se reiniciaban cada seis segundos, dejando a 60.000 personas sin servicio durante 9 horas.
División en coma flotante del Intel Pentium (1993). Los procesadores fallaban en las divisiones en coma flotante. Intel tuvo que sustituir entre 3 y 5 millones de procesadores, 475 millones de dólares de pérdidas.
El generador de números aleatorios de Kerberos (1996). Los autores del sistema de seguridad de Kerberos cometieron un error en el generador de números aleatorios y durante ocho años fue posible entrar en cualquier ordenador que lo utilizara.
Ariane 5 Vuelo 501 (1996). En la reutilización del software del Ariane 4 para el Arian 5 se obvió que había hardware diferente, lo que provocó que el cohete estallara. Uno de los errores considerados más caros de la historia.
El ping de la muerte (1996). Hacía posible colgar ordenadores enviando un ping mal formado. El problema afecto a Macintosh y Unix, pero los peor parados fueron los Windows que al recibir el ping mostraban la “pantalla azul de la muerte”
National Cancer Institute, Ciudad de Panamá (2000). El software de Multidata Systems International, una empresa de EE.UU, no calculó la dosis correcta de radiación para los pacientes sometidos a radioterapia. Ocho personas murieron.
Clasificación de bugs:
Según la ITSBS (International Software Testing Qualifications Board) los bugs se pueden clasificar según su severidad en.
- Críticos: Afectan críticamente la funcionalidad o los datos del sistema
- Mayores: Un error mayor que puede ser solventado siguiendo otro camino.
- Menores: Un error no critico que tiene una solución fácil.
- Triviales: No impacta la productividad o eficacia del sistema. Generalmente errores cosméticos.
Lista de Bugs más comunes:
Esta es una lista de bugs más comunes.
- Divisiones entre cero.
- Excepciones no controladas,
- Error de lectura o escritura a base de datos.
- Error por conversiones de datos.
- Acceso a variables y/o objetos nulos o no inicializados.
- Desbordamiento de memoria.
- Desbordamiento de pila.
- Ciclo infinito.
- Desbordamiento de pila por recursión.
- Bloqueos mutuos (deadlock)
- Error de indexado a base de datos. Errores de llave primaria o llaves foráneas.
- Corrupción de datos en base de base de datos por no estar normalizada.
- Error de acceso a interfaces o API’s cuando estas no están en línea.
- Errores por un deficiente control de cambios.
¿Qué opinas? ¡Cuéntanos en los comentarios!
¡Danos tu opinión!