Therac-25

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

La Therac-25 fue una máquina de radioterapia producida por AECL, sucesora de los modelos Therac-6 y Therac-20 (las unidades anteriores fueron producidas en asociación con CGR). El aparato estuvo comprometido en al menos seis accidentes entre 1985 y 1987, en los que varios pacientes recibieron sobredosis de radiación. Tres de los pacientes murieron como consecuencia directa. Estos accidentes pusieron en duda la fiabilidad del control por software de sistemas de seguridad crítica, convirtiéndose en caso de estudio en la informática médica y en la ingeniería de software.

Diseño[editar]

La máquina ofrecía dos modos de radioterapia:

  • Terapia de haz de electrones directo, que entregaba pequeñas dosis de electrones de alta potencia (de 5 a 25 MeV) por cortos períodos de tiempo.
  • Terapia por rayos X de muy alto voltaje, que entregaba rayos X creados mediante colisión de electrones de alta potencia (25 MeV) en un objetivo.

Cuando se operaba en el modo de haz de electrones de baja potencia, ese haz era emitido directamente desde la máquina, propagado hasta obtener una concentración segura mediante escáneres magnéticos. En el modo de rayos X, la máquina estaba diseñada para interponer cuatro componentes en la ruta del rayo de electrones:

  • Blanco, que convertía el haz de electrones en rayos X.
  • Filtro difusor, que repartía el haz por un área más amplia.
  • Juego de bloques movibles (colimador), que daba forma al haz de rayos X.
  • Cámara de iones de rayos X, que medía la potencia del haz.

Problema[editar]

Los accidentes ocurrían cuando el haz de electrones de alta potencia era activado en lugar del haz de baja potencia, sin la placa difusora colocada en su sitio. El programa de la máquina detectaba un error, pero no prevenía que el paciente recibiera la dosis de radiación, algo potencialmente letal. La radiación beta que el usuario recibía era aproximadamente cien veces mayor que la dosis esperada de radiación. Un paciente, Raymond Cox, describe una sensación similar a «una intensa descarga eléctrica», lo que provocó que gritara y huyera de la sala de radioterapia. Varios días después de la exposición los pacientes empezaron a mostrar graves quemaduras. En tres casos, los afectados fallecieron por envenenamiento por radiación.

Se determinó que el mal funcionamiento del programa era ocasionado por una condición de carrera, relacionada con el desbordamiento de una variable contadora. Cuando el técnico suministraba ciertas instrucciones en el momento en el que ocurría el desbordamiento del contador, los mecanismos de seguridad no se ejecutaban.

Causas[editar]

La comisión investigadora concluyó que las causas primarias de los accidentes fueron malas prácticas de desarrollo, análisis de requerimientos y un mal diseño de software, y no por errores aislados en el código fuente. En particular, el programa de la Therac-25 fue diseñado de tal manera que era casi imposible encontrar y subsanar fallos automáticamente.

Los investigadores encontraron otras causas secundarias:

  • AECL no mandó revisar el código fuente a una entidad independiente.
  • AECL no consideró el diseño del software durante su evaluación de posibles fallos y de gestión de riesgos.
  • El sistema notificaba un error y detenía los rayos X, pero solamente mostraba el mensaje «MALFUNCTION» (error de funcionamiento) seguida de un número del 1 al 64. El manual de la máquina no explicaba el problema ni mostraba los códigos de error, y por lo tanto el operario acababa por cerrar la advertencia y proceder con el tratamiento.
  • El personal de AECL, así como los operarios de las máquinas, inicialmente no creían en las quejas de los pacientes; esto podría explicarse por la alta confianza que tenían en la máquina.
  • AECL no había probado juntos el software y el hardware de la Therac-25 antes de su uso en hospitales.

También se encontraron problemas de ingeniería:

  • El fallo sólo ocurría cuando se introducía una secuencia particular de teclas en la terminal VT100, que controlaba la computadora PDP-11 de la Therac-25. En un plazo de ocho segundos, se debía de pulsar la tecla «X», (que erróneamente seleccionaba el modo de fotones de 25 MeV), seguido de «cursor arriba», seguido de «E» (que seleccionaba el modo de electrones de 25 MeV) y «Enter». Esto ocurría muy raramente y se desconocía que existiera tal error.
  • El diseño no contaba con un sistema de seguridad mecánico que previniese que el haz de electrones operase en el modo de alta energía sin el objetivo en su posición.
  • La ingeniería había reutilizado código de modelos más antiguos, que sí que contaban con sistemas de seguridad mecánicos. Esos dispositivos de seguridad no podían avisar cuando se activaban, por lo que no había sospecha de fallos en el software.
  • El software no podría chequear que los sensores estuvieran funcionando correctamente (bucle abierto). El fabricante añadió más tarde conmutadores redundantes.
  • El proceso del equipamiento de control no se sincronizaba de manera adecuada con el proceso de la interfaz de operario, y por ello ocurrían condiciones de carrera si el técnico cambiaba la configuración rápidamente. Ya que los operarios no tenían la suficiente experiencia, hacer ajustes velozmente era algo improbable durante las pruebas iniciales.
  • El programa cambiaba una variable bandera incrementándola, en vez de asignarle un valor fijo. Ocasionalmente ocurría un desbordamiento de variable, haciendo que se ignoraran chequeos de seguridad.
  • El programa estaba escrito en lenguaje ensamblador, un lenguaje de bajo nivel que requiere más trabajo de diseño, programación y pruebas. Además, se programó sobre un sistema operativo propio.

Véase también[editar]

Referencias[editar]

  • Baase, S (2008). "A Gift of Fire", Pearson Prentice Hall.

Enlaces externos[editar]