Терак-25 - Therac-25

В Терак-25 был управляемый компьютером радиационная терапия машина произведена Атомная энергия Канады Лимитед (AECL) в 1982 году после блоков Therac-6 и Therac-20 (более ранние блоки производились в партнерстве с CGR из Франция ).

В период с 1985 по 1987 год с ним произошло по меньшей мере шесть несчастных случаев, в результате которых пациенты получили передозировка радиации.[1]:425 Потому что параллельные ошибки программирования (также известное как состояние гонки), он иногда давал своим пациентам дозы облучения, которые в сотни раз превышали нормальные, что приводило к смерти или серьезным травмам.[2] Эти инциденты подчеркнули опасность программного обеспечения. контроль систем, критически важных для безопасности, и они стали стандартным примером в информатика здоровья и программная инженерия. Вдобавок самоуверенность инженеров[1]:428 и отсутствие надлежащего Юридическая экспертиза разрешить сообщили программные ошибки отмечены как крайний случай, когда чрезмерная уверенность инженеров в своей первоначальной работе и неспособность поверить заявлениям конечных пользователей вызвали серьезные последствия.

Дизайн

Машина предлагала два режима работы радиационная терапия:[3]

  • Прямой электронно-лучевая терапия, в котором узкий слаботочный пучок высокой энергии (5 МэВ до 25 МэВ) электроны сканировались по зоне обработки магнитами;
  • Рентген мегавольт (или фотонной) терапии, которая доставляла пучок фиксированной ширины Рентгеновские лучи, создаваемый путем столкновения узкого пучка электронов с энергией 25 МэВ с мишенью, а затем прохождения испускаемых рентгеновских лучей через сглаживающий фильтр и коллиматор.

Он также включал режим «полевого освещения», который позволял правильно расположить пациента, освещая зону лечения видимым светом.

Описание проблемы

Имитация пользовательского интерфейса Therac-25

Шесть задокументированных несчастных случаев произошли, когда сильноточный электронный пучок, генерируемый в рентгеновском режиме, направлялся непосредственно к пациентам. Виноваты две программные ошибки.[3] Во-первых, когда оператор неправильно выбрал рентгеновский режим перед тем, как быстро переключиться на электронный режим, что позволило настроить электронный луч на рентгеновский режим без наличия рентгеновской мишени. Вторая неисправность позволила электронному лучу активироваться в режиме полевого света, в течение которого сканер луча не был активен или цель отсутствовала.

Предыдущие модели имели аппаратные блокировки для предотвращения таких сбоев, но Therac-25 удалил их, в зависимости от программных проверок безопасности.

Сильноточный электронный пучок поразил пациентов дозой облучения, примерно в 100 раз превышающей предполагаемую, и в более узкой области, доставив потенциально смертельную дозу бета-излучение. Пациент Рэй Кокс описал это ощущение как «сильный удар электрическим током», заставивший его закричать и выбежать из процедурного кабинета.[4] Несколько дней спустя лучевые ожоги появились, и у пациентов проявились симптомы радиационное отравление; в трех случаях раненые пациенты позже скончались в результате передозировки.[5]

Коренные причины

Комиссия отнесла основную причину к общей плохой практике проектирования и разработки программного обеспечения, а не к отдельным конкретным ошибкам кодирования. В частности, программное обеспечение было разработано таким образом, что было практически невозможно протестировать его в чистом виде. автоматизированный путь.[3]

Исследователи, расследовавшие происшествия, обнаружили несколько причин. К ним относятся следующие институциональные причины:

  • У AECL не было программного кода независимо рассмотрел и решил полагаться на внутренний код, включая операционную систему.
  • AECL не рассматривал дизайн программного обеспечения во время оценки того, как машина может давать желаемые результаты и какие существуют режимы отказа, сосредоточившись исключительно на аппаратном обеспечении и утверждая, что программное обеспечение не содержит ошибок.
  • Персонал AECL заверил операторов машин, что передозировки невозможны, что привело к тому, что они отвергли Therac-25 как потенциальную причину многих инцидентов.[1]:428
  • AECL никогда не тестировал Therac-25 с комбинацией программного и аппаратного обеспечения, пока он не был собран в больнице.

Исследователи также обнаружили несколько инженерное дело вопросы:

  • В нескольких сообщениях об ошибках просто отображалось слово «НЕИСПРАВНОСТЬ», за которым следовало число от 1 до 64. В руководстве пользователя не объяснялись и даже не рассматривались коды ошибок, а также не далось никаких указаний на то, что эти ошибки могут представлять угрозу безопасности пациента.
  • Система различала ошибки, которые останавливали машину, требуя перезапуска, и ошибки, которые просто приостанавливали работу машины (что позволяло операторам продолжить с теми же настройками, используя нажатие клавиши). Однако некоторые ошибки, которые представляли опасность для пациента, просто приводили к остановке машины, а частое возникновение мелких ошибок заставляло операторов привыкать к тому, что машина обычно останавливалась.
    • Один сбой произошел при вводе определенной последовательности нажатий клавиш на ВТ-100 терминал, который контролировал PDP-11 компьютер: если оператор должен был нажать «X», чтобы (ошибочно) выбрать режим фотонов 25 МэВ, затем использовать «курсор вверх», чтобы изменить вход на «E», чтобы (правильно) выбрать режим электронов 25 МэВ, затем «Enter», все это в течение восьми секунд после первого нажатия клавиши, что в пределах возможностей опытного пользователя аппарата.[3]
  • В конструкции не было никакого оборудования блокировки для предотвращения работы электронного луча в его высокоэнергетическом режиме без установленной мишени.
  • Инженер имел повторно использованный программное обеспечение от Therac-6 и Therac-20, в котором использовались аппаратные блокировки, маскирующие дефекты программного обеспечения. У этих аппаратных средств защиты не было возможности сообщить о том, что они сработали, поэтому существующие ошибки не учитывались.
  • Аппаратное обеспечение не позволяло программному обеспечению проверить правильность работы датчиков. Система позиционирования стола была первой причиной неудач Therac-25; производитель изменил его, добавив резервные переключатели для перекрестной проверки их работы.
  • Программное обеспечение установило переменная флага увеличивая его, а не устанавливая фиксированное ненулевое значение. Иногда арифметическое переполнение произошел, в результате чего флаг вернулся к нулю и программное обеспечение обходило проверки безопасности.

Leveson отмечает, что урок, который следует извлечь из инцидента, состоит в том, чтобы не предполагать, что повторно используемое программное обеспечение безопасно: «Часто делается наивное предположение, что повторное использование программного обеспечения или использование коммерческого готового программного обеспечения повысит безопасность, поскольку программное обеспечение будет широко использоваться . Повторное использование программных модулей не гарантирует безопасность в новой системе, в которую они перенесены ... "[3] Эта слепая вера в плохо понятые парадигмы программного кодирования известна как карго культ программирование. В ответ на инциденты, подобные тем, которые связаны с Therac-25, IEC 62304 был создан стандарт, который вводит стандарты жизненного цикла разработки программного обеспечения для медицинских устройств и конкретное руководство по использованию программное обеспечение неизвестной родословной.[6]

Смотрите также

Примечания

  1. ^ а б c Баасе, Сара (2008). Дар огня. Пирсон Прентис Холл.
  2. ^ Leveson, Nancy G .; Тернер, Кларк С. (июль 1993 г.). "Расследование происшествий с Therac-25" (PDF). IEEE Computer. 26 (7): 18–41. Дои:10.1109 / MC.1993.274940. Архивировано из оригинал (PDF) 28 ноября 2004 г.
  3. ^ а б c d е Левесон, Нэнси (1995). «Программное обеспечение: безопасность системы и компьютеры. Приложение A: Медицинские устройства: Therac-25» (PDF). Эддисон-Уэсли.
  4. ^ Кейси, Стивен. Установить фазеры на оглушение - дизайн и человеческая ошибка. Издательская компания Aegean. С. 11–16.
  5. ^ Роза, Барбара Уэйд. «Смертельная доза - радиационные смерти, связанные с компьютерными ошибками AECL». www.ccnr.org. Получено 14 июн 2016.
  6. ^ Холл, Кен (1 июня 2010 г.). «Разработка программного обеспечения для медицинских устройств в соответствии с IEC 62304». MDDI - Медицинское оборудование и диагностическая промышленность. Получено 2016-12-12.

дальнейшее чтение