Медицинский ускоритель, который обернулся трагедией
Therac-25 создавали как современный аппарат для лучевой терапии. Он должен был помогать врачам лечить опухоли, направляя на них точно рассчитанное излучение. В отличие от предшественников, устройство в значительной степени полагалось на программное управление, а некоторые механические средства защиты в нём отсутствовали.
Предполагалось, что контроль со стороны компьютера сделает лечение эффективнее и безопаснее.
Однако с 1985 по 1987 год при работе с Therac-25 произошло несколько аварий. Пациенты получили дозы радиации, многократно превышавшие назначенные. В результате шесть человек пострадали, некоторые из них умерли.
Расследование показало: причиной стало не одно случайное повреждение, а опасное сочетание ошибок в программном обеспечении, конструкции и организации проверки аппарата.
Как возникала опасная ошибка
Therac-25 мог работать в двух режимах. В одном он использовал электронный пучок для поверхностного воздействия, в другом - создавал высокоэнергетическое рентгеновское излучение для лечения глубоко расположенных опухолей.
Для рентгеновского режима требовались дополнительные элементы, которые формировали и ослабляли пучок. Если нужные детали не занимали правильное положение, пациент мог получить опасно высокую дозу.
Сбой возникал, когда оператор быстро менял параметры лечения на экране. Программа не всегда успевала корректно обработать изменения: в отдельных ситуациях аппарат запускал излучение, хотя система ещё не завершила подготовку к выбранному режиму. При этом компьютер сообщал об ошибке, но не обязательно полностью блокировал работу устройства.
### Почему защиты не остановили аппаратРазработчики рассчитывали, что программные проверки надёжно предотвратят опасную работу. Но одна и та же логика управления отвечала и за выполнение команд, и за контроль их безопасности.
Если в ней возникал сбой, аппарат мог не только неправильно выполнить настройку, но и не распознать собственную ошибку. Ситуацию усугубляли недостатки тестирования. Программное обеспечение проверяли не во всех возможных сценариях, а часть защитных механизмов, имевшихся у предыдущих моделей, в Therac-25 заменили программными.
В результате отказ одной системы мог лишить пациента сразу нескольких уровней защиты.
Предупреждения, которые не сразу услышали
После первых происшествий сообщения пациентов о резком жжении и боли не сразу связали с опасной дозой облучения. На экране появлялись сообщения об ошибках, но персонал не всегда понимал, что за ними может скрываться серьёзная неисправность.
Производитель поначалу предполагал, что причиной могли быть неполадки оборудования или действия операторов. Лишь после повторных аварий проблему начали расследовать глубже.
Специалисты изучали журналы аппарата, анализировали программную логику и воспроизводили условия сбоев. Выяснилось, что опасное поведение связано с особенностями программного управления и взаимодействием оператора с интерфейсом. Ошибки в коде могли проявляться редко, но последствия оказывались катастрофическими.
Уроки Therac-25 для разработки ПО
История Therac-25 стала одним из самых известных примеров того, как программный дефект способен напрямую угрожать жизни.
Она показала, что автоматизация сама по себе не гарантирует безопасность. Особенно опасно полагаться только на программные ограничения там, где отказ может привести к тяжёлым последствиям. Для критически важных систем необходимы независимые уровни защиты: аппаратные блокировки, тщательное тестирование, проверка нестандартных сценариев и понятные инструкции для операторов.
Важно также серьёзно относиться к сообщениям пользователей и разбирать каждый инцидент, даже если сбой трудно воспроизвести.
Therac-25 напомнил разработчикам и производителям: надёжность не только отсутствие ошибок в коде. Безопасность требует продуманной конструкции, независимой проверки, прозрачного расследования неисправностей и готовности быстро реагировать на предупреждения.