martes, 12 de febrero de 2013

Fallas en Sistemas de Software



***Fallas en Sistemas de Software***

Algunos ejemplos de desastres ocasionados de manera directa o indirecta por falla en el software: Estos ejemplos se describen en orden cronológico.

  • ·         Fracaso del Mariner 1 (1962). Podemos remontarnos bastante tiempo atrás para descubrir errores ya causados por computadoras. La primera misión del programa Mariner (con costo total de la misión Mariner 1 hasta Mariner 10 de 554 millones de dólares) fracasó por culpa de un caracter incorrecto ('? ') en la especificación del programa de control para el cohete de propulsión Atlas lo cual causó finalmente que el vehículo se saliera de curso. Ambos, el cohete y el vehículo espacial tuvieron que ser destruidos poco después del lanzamiento. Adicionalmente, se cree que un error de computadora también fue la causa del fracaso del Mariner 8 en 1971.
  • ·         Sobregiro del Banco de New York (1985). En Noviembre de 1985, el Banco de New York (BoNY) tuvo accidentalmente un sobregiro de $32 billones de dólares (¡una buena suma si consideramos que esto fue hace 15 años!) por culpa de un contador de 16 bits (la mayoría de los demás contadores eran de 32 bits) que se activó ocasionando un "overflow" del contador que nunca fue verificado. BoNY no pudo procesar nuevos créditos de transferencias de "securities", mientras que la Reserva Federal de New York automáticamente hizo un traspaso de $24 billones de dólares al BoNY para cubrir sus gastos por un día, por lo cual el banco tuvo que pagar $5 millones de dólares por los intereses diarios, hasta que el software fue arreglado.
  • ·         Accidente de un F-18 (1986). En Abril 1986 un avión de combate F-18 se estrelló por culpa de un giro descontrolado ("unrecoverable spin") atribuido a una expresión "IF-THEN" para la cual no había una instrucción "ELSE" porque se pensó que era innecesaria, resultando en una transferencia fuera de control del programa.
  • ·         Muertes por el Therac-25 (1985-1987). El acelerador lineal médico, Therac-25, producido por AECL (Atomic Energy of Canada Limited), fue diseñado para tratamiento a pacientes por medio de radiación de Rayos X de dos tipos: (i) tratamiento de rayo directo de bajo poder, y (ii) tratamiento de rayo indirecto reflejado de alto poder. Entre 1985 y 1987 este sistema ocasionó la muerte de varios pacientes en diferentes hospitales de USA y Canadá por culpa de radiaciones de alto poder aplicadas de manera incontrolada. La probable causa de los accidentes consistía en que para ciertas secuencias de comandos del operador de la máquina, los controles de la computadora llevaban la máquina a un estado interno erróneo y muy peligroso, generando una sobredosis masiva de radiación al paciente. Después de amplia publicidad de estos accidentes se descubrió que la FDA (Federal Drug Agency) no especificaba requisitos, y no hacía revisiones sobre prácticas de desarrollo de software o control de calidad de software en dispositivos médicos. El FDA informó en Septiembre de 1987 que comenzaría a requerir controles de software integrados a ciertas clases de dispositivos médicos.
  • ·         Avión derribado por el USS Vincennes (1988). En julio de 1988 la fragata USS Vincennes estaba asignada al golfo pérsico. Después de repetidos intentos de comunicación por radio, el USS Vincennes disparó un misil (por error) derribando un avión Airbus comercial Iraní matando a todos los 290 pasajeros y tripulantes. Esto ocurrió mientras el Airbus ganaba altura, bajo la suposición incorrecta de que era un avión de combate F-14 que descendería sobre el barco de manera hostil. Aunque la orden de disparo fue dada por el comandante del navío, se culpa como causa contribuyente del incidente al sistema de radar AEGIS, el cual con su sistema de interface de usuario mostraba únicamente un punto junto a un dato textual representando al avión, en lugar del eco real del radar sobre el avión. Posteriormente se supuso que en algún momento la aerolínea Iraní estuvo en la proximidad de un F-14, probablemente durante el despegue del aeropuerto, confundiendo al sistema AEGIS y asociando de manera incorrecta la información transmitida por los "transponders" aire-tierra del F-14 a la aerolínea. Cuando el avión despegó, éste quedó asociado con los datos del F-14 sobre la pantalla. Un despliegue inconveniente y posiblemente confuso de la información de altitud del avión posiblemente confundió aún más a los oficiales del barco, los cuales supusieron que el F-14 estaba descendiendo, aunque en realidad estaba ganando altura. La inclusión de un eco real del radar sobre la pantalla hubiera hecho posible determinar que el eco del radar del avión era del tamaño incorrecto para un avión de combate.
  • ·         Falla del software de AT&T (1990). El 15 de enero de 1990, AT&T (American Telegraph and Telephone) la compañía que controla las redes del mayor sistema de comunicación en el mundo, experimentó una falla masiva que dejó fuera de servicio su sistema de comunicaciones de larga distancia. La falla duró alrededor de nueve horas e interrumpió millones de llamadas de larga distancia. Un error en el software de manejo de excepciones de un tipo particular de sistema de switching telefónico resultó en una falla de switching, que a su vez causó otras fallas de switching en un efecto cascada. Según Neuman, se reportó que la última causa del problema tuvo origen en un programa en el lenguaje “C” que contenía una instrucción "BREAK" dentro de una cláusula "IF" dentro de una cláusula "SWITCH".
  • ·         Aberración esférica en el telescopio espacial Hubble (1990). El 25 de Abril de 1990 se puso en órbita el famoso telescopio espacial Hubble desde el vehículo espacial Discovery. Al poco tiempo, NASA descubrió que el componente más crítico del telescopio de $4 billones de dólares, su espejo principal, tenía una gran falla, imposibilitando producir imágenes altamente enfocadas. El problema en su lente es técnicamente conocido como una "aberración esférica". Una investigación de la NASA reveló que el espejo se había construido con la forma incorrecta siendo 2 micrones (1 micrón = 10-6 metros) más plano a los lados de lo estipulado en el diseño original, un error bastante grande según los estándares de precisión de la óptica moderna. Este fue el error principal encontrado en el telescopio, considerando que hubo otros problemas adicionales, como en sus paneles solares, sus giroscopios, y contactos eléctricos. El problema del lente radicó en que nunca fue realmente probado antes de ser enviado al espacio. En su lugar, una simulación de computadora se usó como método de menor costo para validar el rendimiento del espejo. Por desgracia, malos datos de entrada se utilizaron en la simulación, significando resultados despreciables. Para corregir el error final en el espacio, se agregó al telescopio óptica correctiva a un costo muchas veces mayor que una prueba en tierra del espejo, significando además que el espejo nunca funcionaría tan bien como se planeó. Por lo pronto, la NASA no planea otro telescopio de la magnitud del Hubble, por lo cual los astrónomos tendrán que limitarse a las restricciones actuales del Hubble, con el cual sólo se pueden ver objetos aproximadamente 20 veces más grandes de lo original.
  • ·         Duplicación de solicitudes de transferencias bancarias (1990). En 1990 un error de software ocasionó que un banco en el Reino Unido duplicara cada solicitud de transferencia de pago por un periodo de media hora, acumulando 2 billones de libras esterlinas adicionales. Aunque el banco expresó haber recuperado todos los fondos, se especuló que los posibles intereses perdidos pudieran haber llegado a medio millón de libras por día.
  • ·         Falla del software de los misiles Patriot (1991). En las primeras etapas de la guerra del golfo pérsico de 1991, el sistema Patriot fue descrito como altamente exitoso. En análisis posteriores, los estimados de su efectividad fueron disminuidos seriamente de 95% a 13% o incluso menos. El sistema fue diseñado para trabajar en un ambiente mucho más limitado y menos hostil que el que había en Arabia Saudita. Según reportó posteriormente el New York Times, una falla en la computadora de tierra del misil Patriot fue responsable de evitar la peor baja americana durante la guerra. Esto resultó en su inoperabilidad, permitiendo que un misil "scud" destruyera unas barracas militares americanas en Dhahran, Arabia Saudita, causando 29 muertos y 97 heridos. Aparentemente el sistema de radar del Patriot nunca vio al misil Scud. Según oficiales del ejército "una combinación imprevista de docenas de variables - incluyendo la velocidad, altura y trayectoria del Scud - causaron la falla del sistema del radar… [este caso fue] una anomalía que nunca apareció durante las horas de pruebas." El error se atribuye a una acumulación de inexactitudes en el manejo interno del tiempo de la computadora del sistema. Aunque el sistema ejecutaba según las especificaciones, éste debía ser apagado y prendido con la suficiente frecuencia para que el error acumulado nunca fuera peligroso. Como el sistema se usó de manera no planeada, una pequeña inexactitud significó un serio error. Después de 8 horas de uso se detectó el problema del reloj acumulado. La corrección sólo se logró al día siguiente de la catástrofe (Mellor, 1994; Schach 1997).
  • ·         Error en el procesador Pentium de Intel (1994). En 1994 un error de punto flotante en el procesador Pentium le costó US $475 millones a Intel. El error no fue reconocido públicamente por varios meses por Intel diciendo que el procesador era "suficientemente bueno" además de que sería muy difícil que el error ocurriera. Actualmente, Intel está sufriendo otros problemas similares con sus procesadores, como la unidad MTH (Memory Translator Hub) usado para transferir señales de la memoria a otra unidad de la computadora (Intel 820) que podría significarle un costo similar. Recientemente ha tenido problemas con la última generación del Pentium III de 1 Ghz, donde se ha visto obligada a retirarlo del mercado. ¡Al menos la compañía ya ha aprendido a reconocer sus errores!
  • ·         Error en sistema de autentificación de tarjeta de crédito (1995). Según un artículo del 4 de Noviembre 4 de 1995 del periódico Guardian en UK se relata que los dos sistemas más grandes en UK para la autorización de crédito (Barclay's PDQ y NatWest's Streamline) fallaron el sábado 28 de octubre de 1995 dejando a los negocios sin poder verificar las tarjetas de crédito de sus clientes. En el caso de Barclay, más del 40% de las transacciones fallaron por un "error en el sistema de software". Para NatWest, el problema fue una gran cola de llamadas, por razones desconocidas, las cuales retrasaron la autentificación de tarjetas. Aunque ambos tenían sistemas de contingencia permitiendo a los negocios telefonear para autenticar solicitudes, por el volumen de ventas las líneas se saturaron rápidamente.
  • ·         Explosión del cohete Ariane 5 (1996). El 6 de Junio de 1996 una computadora fue culpada por la explosión del primer vuelo, el 501, del cohete Ariane 5 con un costo de US$500 millones de dólares. El cohete, que parece que no estaba asegurado, llevaba cuatro satélites, ocasionando pérdidas totales de $1.8 billones de dólares. El Ariane-5 estaba funcionando perfectamente hasta los 40 segundos iniciales cuando de repente empezó a salirse de su curso y fue destruido remotamente por una explosión solo fracciones de segundo después, ocasionadas por una señal enviada por un controlador de tierra del Ariane. Según ESA (Agencia Espacial Eurpea), la desviación fuera de curso fue ocasionada por instrucciones de la computadora controlando los escapes de los dos poderosos impulsadores del cohete. Incluso se especuló que la instrucción fue generada por la computadora porque creyó que el cohete se estaba saliendo de su curso y de esta manera estaría corrigiendo el curso de vuelo. Según el reporte final, la causa de la falla fue una excepción de software ocurrida durante la conversión de un número flotante de 64-bits a un número entero de 16 bits. El número flotante siendo convertido tenía un valor mayor del que podía ser representado por un número entero de 16 bits (con signo). Esto resultó en un "error de operando". Las instrucciones de conversión de datos (código en Ada) no estaban protegidos de causar tal error de operando, aunque otras conversiones de variables similares en el mismo lugar, sí estaban protegidas. El origen del problema parece haber sido en que el Ariane 5 podía llevar un mayor número de satélites que el Arianne-4, incrementando así su peso. Sin embargo el Ariane-5 utilizaba una gran cantidad de software diseñado para el Ariane-4. Las conclusiones finales no oficiales fueron que ningún método formal hubiera detectado el problema, ya que la raíz de tal era a nivel de comunicación entre humanos, en relación a información física aparentemente no relacionada y no un problema de programación.
  • ·         Error del sistema de cobranza lleva a una compañía a la quiebra (1996). Un artículo en la edición de Abril de 1996 de "TVRO Dealer" (una publicación del área de televisión por satélite) describe cómo el intento de un servicio de programación de una gran compañía de televisión por satélite de cambiar a un nuevo sistema de software de cobranza el 28 de Marzo anterior finalmente causó la quiebra de la compañía.
  • ·         Error del sistema de cobranza en MCI (1996). En la edición del 29 de marzo de 1996 del Washington Post, MCI reportó que devolverían aproximadamente 40 millones de dólares a sus clientes por causa de un error de cómputo. El error de cobranza fue descubierto por un reportero investigador de una estación local de televisión en Richmond, VA. Los reporteros encontraron que fueron facturados por 4 minutos después de hacer una llamada de tan solo 2.5 minutos, dando lugar a una profunda investigación. Mayor falla de una computadora en la historia de bancos en USA (1996). El 18 de mayo de 1996 la revista US & World Report, y al siguiente día el diario The Boston Globe, reportaron que aproximadamente 800 clientes del First National Bank of Chicago fueron sorprendidos al ver que sus saldos eran $924 millones de dólares más de lo que tenían la semana pasada. La causa fue el tradicional "cambio en el programa de la computadora". De acuerdo a la Asociación de Banqueros Americanos, el total de $763.9 billones fue la cantidad más grande para tal error en la historia bancaria de los Estados Unidos, más de seis veces el total de fondos ("assets") del First Chicago NBD Corp. El problema fue atribuido a un "error de la computadora".
  • ·         Falla de la computadora del centro de control de tráfico aéreo de NY (1996). El 20 de Mayo 1996 falló la computadora del Centro de Control Aéreo de Nueva York (ARTCC - NY Air Route Traffic Control Center) que controla el tráfico aéreo sobre los estados de New York, Connecticut, New Jersey, Pennsylvania y parte del océano Atlántico. La computadora de 7 años de vigencia perdió capacidad de servicio efectivo ("falló") dos veces la tarde del lunes 20 de mayo; la primera vez por 23 minutos y la segunda por alrededor de una hora, una hora más tarde. Parece que 4 días antes se había instalado un nuevo software en el sistema. Se volvió al sistema anterior, con procedimientos de control de tráfico aéreo más ineficientes, ocasionando un límite más bajo de saturación de tráfico y retrasos en los despegues de alrededor de una hora en los aeropuertos principales en el área; junto con un incremento en la carga de trabajo de los controladores y menor seguridad, incluyendo la desactivación de la "alerta automática de conflictos".
  • ·         Mala planificación del nuevo sistema de una administradora de servicios de salud (1997). Según reportó el Wall Street Journal el 11 de diciembre de 1997, Oxford Health Plans Inc., administradora de servicios de salud en USA, de gran crecimiento en los últimos tiempos, anunció que registraría una pérdida de US$120 millones o más durante ese trimestre, además de una pérdida adicional de US$78,2 millones, su primera pérdida desde que salió a la bolsa en 1991. La razón principal fue la larga lista de problemas ocurridos con un sistema informático que se puso en línea en 1996; desde el diseño del sistema y su instalación hasta cómo fue administrado por los ejecutivos del grupo Oxford. Los problemas ocasionaron que Oxford no pudiera enviar facturas mensuales a miles de cuentas de clientes además de incapacitarla para rastrear los pagos a cientos de médicos y hospitales. En menos de un año, los pagos no cobrados de sus clientes se triplicaron a más de US$400 millones, mientras que el monto que Oxford debía a los proveedores de servicios médicos aumentó en más del 50%, a una suma superior a los US$650 millones. La administradora de servicios médicos comenzó a planear su nuevo sistema informático en 1993, cuando sólo tenía 217,000 miembros. El sistema, desarrollado por Oracle, no comenzó a utilizarse hasta Octubre de 1996, cuando el número de abonados a su seguro médico había llegado a 1,5 millones. En ese momento el sistema ya era obsoleto. En lugar de tomar 6 segundo inscribir a un nuevo miembro, tomaba 15 minutos. A pesar de esto y que la infraestructura administrativa de Oxford no daba abasto, los ejecutivos seguían inscribiendo nuevos clientes, en el último año se incorporó medio millón adicional. A finales de 1993, Oxford trató de ajustar el sistema, además de convertir de una sola vez la mayoría de su base de datos para facturación: unas 43,000 cuentas cubriendo a 1,9 millones de miembros. Esto significó la catástrofe final, ya que la transformación entre base de datos no funcionó, y mientras tanto se suspendió por unos meses la facturación ya que no se contaba con un sistema de seguridad, ni siquiera manual. A pesar de todo esto, Oxford siguió sus prácticas habituales de contabilidad, registrando aquellas facturas que no se habían cobrado como facturación trimestral. Los problemas finales surgieron cuando Oxford comenzó a poner al día las cuentas vencidas contactando a los clientes por primera vez en varios meses. Muchos se negaron a pagar y otros dijeron que hacía mucho que habían cancelado su cuenta. Por consiguiente, Oxford tuvo que registrar US$111 millones como deudas incobrables y reconoció que tenía 30,000 afiliados menos de lo que había calculado. El presidente reconoció que debía haber contratado un ejército de trabajadores temporales para que escribieran a máquina las facturas. Por otro lado, lo primero que perdieron fueron los clientes pequeños, pero como luego no resolvieron ningún problema comenzaron a perder a los clientes grandes.
  • ·         Error de un controlador de discos de Toshiba (1999). En noviembre de 1999 Toshiba llegó a un arreglo fuera de corte que le costaría a la compañía más de $2 billones de dólares para cubrir errores que pudiesen haber significado la pérdida de información por culpa de fallas en los controladores de discos "floppy" producidos en sus computadoras portátiles a partir de 1980. Aunque los controladores fueron diseñados originalmente por NEC, Toshiba producía sus propios componentes y nunca incluyó la modificación hecha por NEC en 1987 lo cual hubiese evitado el problema. Lo más interesante del caso es que realmente nunca se reportó falla alguna. Queda por ver qué consecuencias traerá este caso al resto de los fabricantes de computadoras para los cuales este precedente los tiene extremadamente preocupados.
  • ·         Actualización de software mal planificada paraliza Nasdaq (1999). El 17 de noviembre de 1999 los corredores de la bolsa de valores Nasdaq no pudieron comprar ni vender acciones durante 17 minutos cruciales, después de que oficiales de Nasdaq intentaran actualizar sobre la marcha un sistema de software durante la última media hora de la sesión. Algo funcionó mal y los inversionistas tuvieron que pagar el precio.
  • ·         Error del milenio (2000). Concluyo estos ejemplos con un pequeño pero nocivo error que se le conoce como el problema Y2K, “error del milenio”, o inclusive “el” problema de software del siglo 20. El problema se remonta a la década de los 60, y radica en que hace mucho tiempo los programadores adoptaron la convención de representar el año con dos dígitos en lugar de cuatro. Esta convención ocasionaría fallas en los sistemas al llegar al año 2000, ya que se alambraba el "19" (no se permitía utilizar un número que no fuera el “19”), para generar la fecha lo cual al llegar al año 2000 fallaría por saturar el registro de almacenamiento ("overflow"). Para empeorar las cosas a menudo los dígitos "99" o "00" eran valores reservados (“números mágicos”) significando "nunca borrar esto" o "esta es una cuenta de demostración". Además, esto resultaba en el uso de un algoritmo incorrecto para reconocer años bisiestos. No está claro si hay una razón única para haber hecho esto; porque la memoria de las computadoras en esa época era extremadamente cara, o porque no se esperaba que estos sistemas duraran tanto tiempo, o incluso quizás porque no reconocieron el problema. Aunque el problema se activó en este nuevo milenio, se tiene precedentes. Muy pocos se dieron cuenta que la IBM 360 no podía manejar fechas mayores al 31 de Diciembre de 1969, hasta que estas máquinas empezaron a fallar a la medianoche hora local. IBM recomendó a sus clientes en América y Asia mentirles a las computadoras cambiando a una fecha anterior, mientras IBM empezó a crear una solución al problema. El problema es muy extenso, afecta hardware (BIOS, relojes de tiempo real, "embedded firmware", etc.), lenguajes y compiladores, sistemas operativos, generadores de números aleatorios, servicios de seguridad, sistemas de manejo de bases de datos, sistemas de procesamiento de transacciones, sistemas financieros, hojas de cálculo, conmutadores telefónicos, sistemas telefónicos y más. No es solamente un problema de sistemas de información, todo aquel sistema que use fechas está expuesto: automóviles, elevadores, etc. (Por ejemplo, en cierto momento Visa y MasterCard pidieron a sus bancos asociados que dejen de dar tarjetas que expiren en el 2000 o después.) No solamente es un problema de aplicaciones antiguas: el año pasado el paquete Quicken para manejo de finanzas personales fue corregido para ir más allá de 1999. En enero se reportó que el Instituto Nacional de Salud (NIH) en USA recibió nuevas PCs con tres versiones diferentes de BIOS, dos de las cuales fallaron a la transición Y2K. Las soluciones fueron muchas, consistiendo de diferentes etapas para analizar el problema particular y decidiendo las medidas a tomar, incluyendo no hacer nada y dejar que el problema ocurriera para luego arreglarlo. Existe aún toda una industria alrededor de este problema, con 1,800 compañías asociadas a la organización "year200" (year2000.com, year2000.org) y proporcionando certificaciones. Se dice que llegó a ser tanta la demanda por programadores del lenguaje Cobol (donde el problema fue más significativo) y tan desesperada la situación, que según se reportó, se fue a buscar programadores de Cobol ya retirados en asilos para ancianos Actualmente se desconoce el costo final al problema de Y2K. Es difícil estimar cual fue el costo total del problema Y2K. Según la compañía TMR (Technology Management Reports) de San Diego, los costos podrían haber sido superior a $1 trillón de dólares. Esto incluye reescribir programas existentes, adquisición e instalación de sistemas que los reemplacen, y productividad perdida por culpa de la interrupción de los sistemas para pruebas y las propias fallas por no ser funcionales en el año 2000. Y esto no incluye demandas por daños ocasionados. Otras compañías predijeron rangos de costos similares, como el grupo Gartner, que predijo un costo de $600 billones de dólares a nivel mundial. Varias compañías asignaron presupuestos para este problema: Chase Manhattan dijo que gastaría $250 millones de dólares, American Airlines y Hughes Electronics dijeron que gastarían $100 millones de dólares cada una. La oficina de administración de presupuesto de la Casa Blanca (OMB - Office of Management and Budget) calculó sus costos de reparación en 2.8 billones. Esto incluía 4,500 computadoras para defensa nacional, tráfico aéreo, pagos de impuestos y seguridad social. El Grupo Gartner estimó que los costos para el Departamento de Defensa de USA podrían ser superior a los US$30 billones.

Bibliografía

 Weitzenfeld, Alfredo.
Ingeniería de Software Orientado a objetos con UML, Java e Internet.
ISBN- 13:978-970-686-190-0
ISBN-10:970-686190-4