Soluciones Avanzadas No.40, 15 de Diciembre 96

Apocalipsis Informático


Claudia Iturriaga Velázquez y Alejandro López-Ortiz
cciturri@barrow.uwaterloo.ca y alopez-o@daisy.uwaterloo.ca

La civilización occidental comprendió el período de 1450 hasta el 2005. La desaparición de potencias dominantes al fin del siglo XX resultó en un período de guerras en el lejano oriente entre las potencias económicas y militares (Japón, Taiwán, Singapur vs. China, Rusia).

En retrospectiva el fin de la pax americana fue relativamente abrupto. El comienzo fue un simple apagón durante la madrugada del año nuevo del 2000 que afectó a más de mil millones de personas. Aunque dicho apagón duró en promedio apenas unas tres horas los efectos fueron devastadores. En seis de los cuarenta y tres aeropuertos que perdieron el suministro eléctrico los generadores de emergencia no se activaron, causando tres colisiones. En varias ciudades los que festejaban el año nuevo, ya bajo el influjo del alcohol, comenzaron desmanes y saquearon un sinnúmero de tiendas y comercios. Para las seis de la mañana las pérdidas eran estimadas en 20 mil millones de dólares. Al mediodía del mismo día una fuga radioactiva en una planta nuclear en la parte central de los Estados Unidos causó la evacuación permanente de dos millones de personas. Durante los siguientes días los sistemas computacionales de todo tipo de compañías, bancos y aseguradoras emitieron pagos y cobros incorrectos por un total de 500 mil millones de dólares. De éstos, 50 mil millones no pudieron ser recuperados, gracias a la anonimidad de las transacciones electrónicas. Durante todo el mes de enero los esfuerzos de los trabajadores y ejecutivos fueron dedicados a rastrear pagos, a firmar cheques manualmente para sus empleados, a mantener sistemas de inventario manuales y otras tareas de este tipo. La automatización computacional se había aceptado exitosamente y el tener que volver a procedimientos manuales fue más difícil que un simple reemplazo de computadoras por humanos.Varios conglomerados industriales, bancos y compañías aseguradoras que no contaban con las reservas para dichas eventualidades se declararon en bancarrota, causando un efecto dominó de medianas proporciones. Para marzo de ese año las pérdidas totales eran estimadas en un millón de millones de dólares, equivalente al producto total de Japón en todo un año.

Fueron tales los daños económicos que el mundo entero se vió envuelto en una nueva edad media semejante a la originada por la caída del imperio romano en el año 700 de esta era. Sin los recursos económicos, la actividad científica en universidades y de investigación y desarrollo en compañías fue abandonada; por los siguientes 200 años las innovaciones se mantuvieron a un mínimo. Por ejemplo, en la segunda mitad del siglo XXI se lanzaron a órbita un total de cinco satélites, cantidad menor a la de los primeros seis meses de 1995.

¡Este escenario puede sonar a ciencia ficción, pero es una posibilidad real! El problema se debe a un pequeño truco de programación en apariencia inocente: la representación de fechas en formato corto (ej. 05/Nov/96).

Este simple truco puede causar la interrupción y mal comportamiento de programas que dependen de --y controlan-- procesos en el tiempo, tales como cobro, control de procesos industriales y generación de electricidad, entre otros. El impacto potencial es de magnitud tal que la cámara de diputados en los Estados Unidos tiene ya bajo consideración una ley que haría un crimen el escribir fechas en formato corto (esto último es verídico).

Aun los cálculos más optimistas estiman que si todos los programas afectados son corregidos antes del fin del siglo, el costo de esta medida preventiva será de un mínimo de 60 mil millones de dólares. En la práctica es de esperarse que el costo de corrección sea aun mayor, y que tan sólo un porcentaje de los sistemas afectados sea reescrito antes del año 2000. Las perdidas totales serán, por tanto, cinco o seis veces mayores que la cifra optimista de 60,000 millones de dólares. Hagamos unos simples cálculos para verificar dichas cifras: se estima que hay 100 mil millones de líneas de código tan sólo en COBOL siendo ejecutadas cotidianamente. Supongamos modestamente que el 3% de dichas líneas de código usan fechas de una forma u otra (expertos en el área dan estimaciones cercanas al 10%). Un buen programador cambia líneas a una razón de 10 líneas por hora y a un costo para la compañía de 60-100 dólares la hora. Posteriormente estos cambios deben ser verificados y debuggeados, a un ritmo p romedio de, nuevamente, 10 líneas por hora y al mismo precio. Esto da un total de 36 a 60 mil millones de dólares. Cabe destacar que los expertos en el área tienden a ser más pesimistas: suponen 10% de líneas de código a ser cambiadas y una razón de cambio de 5 líneas de código por hora.

Es una responsabilidad de los miembros del departamento de sistemas el alertar a los gerentes y personal de dirección sobre el alto riesgo presentado por el fin del milenio. Asimismo esto presenta una disyuntiva: parchar los programas escritos para sistemas de mainframe o reescribir la aplicación totalmente en una arquitectura cliente-servidor basada en PCs y usando mainframes sólo para el archivo de datos (data warehousing).

La respuesta depende de variables tales como si el código fuente está disponible, la edad del programa y(o) del mainframe en que se ejecuta, la facilidad o dificultad con la que se puede reemplazar dicho programa usando un paquete de cuarta generación o RAD y disponibilidad de recursos de programación. En cualquier caso la decisión debe ser tomada a la brevedad posible. Un primer paso es simular la condición del año 2000 durante un "puente" o fin de semana. De esta forma determinará si sus aplicaciones abortan, emiten transacciones erróneas o usan el formato largo de cuatro cifras. Una vez que esto haya sido determinado, puede usted proceder a evaluar sus opciones con aquellos componentes de su estrategia de sistemas que requieran ser reemplazados.

El año 2000 esta ya próximo y hay que tomar las medidas necesarias para asegurar una transición estable al siguiente milenio. Una simple verificación de sus sistemas con la fecha del año 2000 es una sencilla pero importante tarea para este fin. Programas que usted no sospecha pueden estar haciendo uso de intervalos de tiempo para el cálculo de pagos, tarifas, emisión de pagos y cobros. Puede parecer un cambio sencillo de hacer si usted cuenta con el código fuente, pero aun en este caso necesitaría usted portar los datos al nuevo formato. Más aun, tiene que hacer dichos cambios en toda su compañía para asegurarse que ninguno de sus sistemas falle.

¿Tendrá tiempo suficiente para realizar dichos cambios si espera hasta el fin del siglo? En un fin de semana podremos esperar tranquilamente el output de los sistemas sin que el resultado de ello sea una reacción en cadena difícil de rastrear. Hay que reaccionar antes de que el tiempo se venga encima. Asimismo, para todos aquellos sistemas que se encuentran en su etapa inicial es importante incorparar este cambio.

Nos interesa saber si nuestros lectores ya han considerado este problema, si es así qué acciones han tomado y cuáles son los distintos tipos de problemas que encontraron. También nos interesa oír de aquellos que escuchan de éste por primera vez, cuáles son los retos que enfrentarán para resolver este problema (envíen correo electrónico a alopez-o@daisy.uwaterloo.ca).