Может ли пострадать человек из-за бага?

История: В 80-х появился Therac-25 - инновационный аппарат для лучевой терапии. Канадская госкорпорация обещала, что он будет лечить рак точнее и безопаснее. Но внутри машины прятался код, написанный одним программистом на основе старых моделей. И без аппаратных блокировок - всё управление полностью доверили софту. К чему это привело? Рассказываю.

Therac-25 успешно выполнял свою миссию по спасению онкобольных несколько лет. Однако затаившиеся в системе опасные ошибки ждали своего часа все это время и в 1985 году начали облучать людей дозами радиации в десятки и сотни раз превышающие смертельные. Эти обстоятельства привели к гибели 6 человек.

Расследование инцидентов:

Прокуратура штата Техас обратилась к профессору компьютерных наук Калифорнийского университета в Ирвайне, Нэнси Ливесон, как к эксперту для проведения расследования

Основной причиной возникновения ошибок в работе аппарата было так называемое "состояние гонки" (race condition). Состояние гонки происходит, когда две или более задачи (или процессы) обращаются к одному и тому же ресурсу (например, памяти) без правильной синхронизации, что приводит к непредсказуемым результатам. В случае Therac-25, состояние гонки возникло в коде, управляющем положением линзы и мощности луча, что приводило к неправильной настройке параметров облучения. Другим серьёзным багом, скрытым в Therac-25, было арифметическое переполнение значения переменной. Переменная имела небольшое фиксированное максимальное значение, которое при определённых условиях достигалось, и её значение сбрасывалось в нуль. В итоге это приводило к неправильным вычислениям и некорректным состояниям.

Выводы:

Критические факторы, способствующих возникновению неисправностей: 1. В Therac-25 не было достаточных аппаратных блокировок, которые могли бы предотвратить чрезмерную дозу радиации в случае сбоя программы. 2. Программное обеспечение Therac-25 не было тщательно протестировано на модульном уровне, особенно в сценариях, имитирующих реальные условия эксплуатации. 3.В качестве базы для создания кода было повторно использовано программное обеспечение предыдущих моделей без учёта важнейших изменений в аппаратной части новой установки

Печальная история Therac-25 продемонстрировала важность тщательной разработки медицинских устройств и программного обеспечения. Ошибки при создании этого аппарата привели к фатальным последствиям, но также стали ценным уроком для индустрии. Эти инциденты подчеркнули необходимость всестороннего тестирования, надёжных систем защиты от ошибок, качественной документации, обучения персонала и интеграции безопасности на всех этапах разработки. Современные стандарты медицинского оборудования значительно улучшились благодаря урокам Therac-25, что позволило предотвратить подобные происшествия в будущем.

Может ли пострадать человек из-за бага? | Сетка — социальная сеть от hh.ru Может ли пострадать человек из-за бага? | Сетка — социальная сеть от hh.ru